Skip navigation

Речник на мрежовите термини

Значение на мрежовия термин "Kerberos"

Kerberos

Kerberos (protocol) - мрежов протокол, чрез който комуникиращи в незащитена мрежа възли се идентифицират помежду си по безопасен начин. Kerberos се отнася и до едноименния свободен софтуер, разработен от Технологичния институт в Масачузетс и имплементиращ протокола. Kerberos се ползва основно в модела клиент-сървър за взаимно удостоверяване между комуникиращите страни. Протокола се базира на криптиране със симетричен ключ и използване на надеждна трета страна, а различни негови разширения могат да предложат и криптиране с публичен ключ в различни етапи от идентификацията. Това предпазва комуникацията от подслушване и replay атаки.

Принцип на работа
В основата на Kerberos лежи симетричния протокол на Needham-Schroeder, който ползва надеждна трета страна, известна като център за разпределение на ключове (Key Distribution Center). KDC се състои от две отделни логически части - автентифициращ сървър (Authentication Server, AS) и сървър за разпределение на етикети (Ticket Granting Server, TGS). Етикетите се използват при доказване самоличността на потребителите.
Целта на KDC е да поддържа база с тайни ключове, всеки от които е известен само на KDC и на мрежовото устройство, към което е разпределен. Така всеки възел в мрежата може да се удостовери по еднозначен и уникален начин. За комуникация между два възела KDC генерира ключ-сесия, който защитава връзката между тях.
Когато потребителя (клиента) инициира сесия той първо се идентифицира пред AS, който му подава етикет, обозначен с времето на изпращане. След това клиента се обръща към TGS и предоставя получения етикет, с който демонстрира идентичността си и заявява дадена услуга. TGS проверява дали клиента има право да ползва желаната услуга и ако да му връчва нов етикет, който служи като доказателство за сървъра на услуги, че клиента действително е одобрен да позлва съответната услуга.
В детайли процеса може да се разгледа на няколко етапа:
  • client-logon: потребителя въвежда потребителско име и парола в клиентската машина, която използва еднопосочна функция (обикновенно hash) върху паролата, за да генерира тайния ключ
  • client-authentication: клиентската машина (за кратко клиент) изпраща към AS идентификатора на потребителя (User ID) в явен текст. Важно е да се уточни, че нито паролата, нито тайния ключ се изпращат към AS. Чрез получения идентификатор AS намира в базата си паролата на потребителя и я хешира за да получи тайния ключ.

    AS проверява дали клиента се намира в базата и ако да изпраща обратно: Съобщение А (съдържащо Client/TGS ключ-сесия, криптиран чрез тайния ключ на клиента) и Съобщение В (съдържащо Ticket-Granting Ticket, етикет за предоставяне на етикети,  криптиран с тайния ключ на TGS сървъра. TGT включва мрежовия адрес и идентификатора на клиента, периода на валидност на етикета и ключа-сесия).

    Когато клиента получи двете съобщения декриптира А за да получи ключа-сесия, който се използва за следващите комуникации с TGS (Клиента не може да декриптира второто съобщение, тъй като то е било криптирано с тайния ключ на TGS, който клиента не знае). На този етап клиента вече има необходимата информация за да се удостовери успешно пред TGS.
  • client-server authorization: клиента изпраща към TGS следните две съобщения за да заяви услуга: Съобщение С (образувано от Съобщение В и идентификатора на зявената услуга) и Съобщение D (съдържащо криптиран с ключа-сесия автентификатор, образуван от клиентското ID и удостоверение за верме (т.нар. timestamp))

    След като TGS получи двете съобщения, той извлича Съобщение В от Съобщение С и го декриптира с тайния си ключ. Резултата е ключа-сесия, с който декриптира Съобщение D (автентификатора) и изпраща обратно към клиента: Съобщение Е (съдържащо криптиран с тайния ключ на сървъра client-to-server етикет. CTS етикета включва клиентските ID и мрежов адрес, периода на валидност и ключа-сесия) и Съобщение F (съдържащ client-server ключ-сесия, криптиран с client/TGS сесията)
  • client service request: след като е получил съобщения E и F клиента вече разполага с достатъчно информация за да се удостовери успешно пред сървъра на услуги (Service Server). Това става като му изпраща: Съобщение Е (или съобщението от предишната стъпка) и Съобщение G (нов автентификатор, включващ клиентското ID и timestamp-a и криптиран чрез client/server ключа-сесия)

    SS получава двете съобщения и декриптира етикета (от съобщение E) със собствения си таен ключ. Така получава client/server сесията, с която нея декриптира новия автентификатор и изпраща към клиента Съобщение Н за потвърждение на самоличността, като същевременно декларира готовност да предостави желаната услуга. Съобщението съдържа резултата от timestamp + 1, криптиран с client/server сесията.

    Клиента декриптира полученото съобщение, използвайки сесията client/server и проверява дали timestamp е актуализиран коректно. Ако това е така, клиента може да се довери на сървъра и да започне да изпраща към него заявки за дадени услуги, които сървъра от своя страна му предоставя.
Недостатъци
Главния недостатък на Kerberos e, че при отказ на централния сървър никой не може да се удостовери и съответно да ползва желаните услуги (т.нар. single point of failure). Това може да се избегне донякъде чрез използване на множество Kerberos сървъри и резервен механизъм за удостоверяване.
Друг недостатък е изискването за синхронизация на часовниците във всички устройства, участващи в комуникацията. Това се налага заради периода на валидност, който поддържат етикетите - ако часовника на клиента не е синхронизиран с този на сървъра вероятността удостоверяването да се провали е голяма.
Центъра за разпределение на ключове (KDC) носи голяма отговорност, тъй като целия процес на автентифициране се контролира от него. Ето защо той трябва да има много високо ниво на защита, за да не може да се компрометира по никакъв начин.
Грешно значение?
© Ай Си Ти Медиа ЕООД 1997 - 2012 съгласно общи условия за ползване