Открыть сервис

Kerberos

Kerberos — это протокол аутентификации, основанный на криптографии с симметричными ключами, разработанный для обеспечения безопасного доступа к сетевым сервисам в условиях незащищённой среды. Протокол позволяет двум сторонам (клиенту и серверу) взаимно подтвердить свою подлинность без передачи паролей в открытом виде, используя для этого доверенный центр выдачи билетов — сервер аутентификации. Kerberos широко применяется в корпоративных информационных системах, в частности, в операционных системах Microsoft Windows (как часть Active Directory) и в Unix-подобных системах (например, в реализации Heimdal или MIT Kerberos).

История

Разработка Kerberos началась в середине 1980-х годов в Массачусетском технологическом институте (MIT) в рамках проекта Athena, целью которого было создание распределённой вычислительной среды для учебных и исследовательских целей. Основной задачей было обеспечение безопасной аутентификации пользователей в сети, состоящей из множества рабочих станций и серверов, где пароли могли быть перехвачены. Первая версия протокола (Kerberos I) была выпущена в 1986 году, но вскоре была признана небезопасной из-за уязвимостей в криптографических алгоритмах. В 1987 году появилась версия 2 (Kerberos II), которая также содержала критические недостатки.

Значительным улучшением стала версия 4 (Kerberos IV), выпущенная в 1988 году. Она была реализована на языке C и получила распространение в академической среде. Однако Kerberos IV не была полностью стандартизирована и имела ограничения, такие как использование устаревших методов шифрования и ограниченная поддержка межсетевых взаимодействий. В 1993 году вышла версия 5 (Kerberos V), которая стала последней и наиболее распространённой. Она была задокументирована в рекомендациях IETF RFC 1510, а затем в обновлённой версии RFC 4120 (2005 год). Kerberos V исправила проблемы предшественницы: ввела современные криптографические алгоритмы (DES, 3DES, AES), поддержку межсетевого взаимодействия (cross-realm authentication) и возможность расширения протокола.

Архитектура и принцип работы

Kerberos построен на модели с тремя основными компонентами:

Процесс аутентификации в Kerberos состоит из нескольких фаз и не требует передачи паролей по сети. Вместо этого используется система одноразовых «билетов» (tickets) и сеансовых ключей.

Фаза 1: Запрос и получение билета на получение билетов (TGT)

  1. Клиент отправляет запрос на сервер аутентификации (AS). В запросе указывается идентификатор пользователя (не пароль).
  2. AS проверяет, что пользователь существует в базе данных KDC. Затем AS генерирует сеансовый ключ (криптографический ключ для шифрования последующей коммуникации) и создаёт два объекта:
  1. Клиент расшифровывает сообщение с помощью своего пароля, извлекая сеансовый ключ. TGT сохраняется в памяти клиента. Расшифровать TGT клиент не может, так как он зашифрован ключом TGS.

Фаза 2: Получение билета для конкретного сервиса

  1. Когда клиент хочет обратиться к определённому серверу приложений (например, к почтовому серверу), он отправляет на сервер выдачи билетов (TGS) запрос, который включает три элемента:
  1. TGS расшифровывает TGT своим ключом, извлекает сеансовый ключ клиента и с его помощью расшифровывает аутентификатор. TGS проверяет, что аутентификатор не истёк и не является повторной передачей (для этого используется временная метка и протокол защиты от replay-атак).
  2. Если проверка успешна, TGS генерирует новый сеансовый ключ (его будет использовать клиент для связи с сервером приложений) и создаёт:
  1. Клиент расшифровывает сообщение, извлекая новый сеансовый ключ. Service Ticket сохраняется в памяти клиента.

Фаза 3: Аутентификация на сервере приложений

  1. Клиент отправляет на сервер приложений Service Ticket и новый аутентификатор, зашифрованный с помощью нового сеансового ключа.
  2. Сервер приложений расшифровывает Service Ticket своим ключом, извлекает имя пользователя и новый сеансовый ключ. Затем он расшифровывает аутентификатор сервера и проверяет его подлинность.
  3. Для взаимной аутентификации сервер может отправить клиенту ответное сообщение, содержащее временную метку из аутентификатора, зашифрованную сеансовым ключом. Клиент расшифровывает его и убеждается, что сервер знает правильный ключ.
  4. После этого клиент и сервер могут обмениваться данными, используя сеансовый ключ для шифрования (опционально) или только для аутентификации пакетов.

Ключи в Kerberos

В протоколе используются несколько типов криптографических ключей:

Версии протокола

ВерсияГод выпускаОсновные характеристики
Kerberos I1986Первая экспериментальная версия, использовала протоколы Needham-Schroeder.
Kerberos II1987Исправила некоторые уязвимости первой версии, но проблемы безопасности остались.
Kerberos IIIНе выпущенаПромежуточная разработка, не получившая статуса отдельной версии.
Kerberos IV1988Широко использовалась в академических кругах. Поддержка DES, ограниченная совместимость с другими системами.
Kerberos V1993, RFC 1510 (2005, RFC 4120)Стандартизованная версия. Поддержка нескольких криптографических алгоритмов, межсетевое взаимодействие, гибкость.

Применение

Kerberos является стандартом де-факто для аутентификации в корпоративных сетях. Основные области применения:

Безопасность и критика

Протокол Kerberos обладает рядом сильных сторон:

Однако протокол не лишён уязвимостей и ограничений:

Альтернативы

С развитием технологий появились протоколы и системы, которые могут использоваться как альтернативы или дополнения к Kerberos:

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →