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

Kerberos — сетевая система аутентификации

Kerberos — это сетевой протокол аутентификации, разработанный в Массачусетском технологическом институте (MIT) в рамках проекта Athena и названный в честь трёхголового пса-стража из древнегреческой мифологии. Протокол обеспечивает взаимную аутентификацию клиентов и серверов в небезопасной сети перед началом предоставления сервисов, используя симметричное шифрование и доверенного третьего посредника — сервер ключей (Key Distribution Center, KDC).

История

Проект Athena был запущен в MIT в 1983 году для поддержки учебного процесса. Первая версия протокола Kerberos (V4) была разработана в 1980-х годах и основывалась на идеях, предложенных Джеромом Сальцером и Стивеном Миллером. В 1993 году вышла версия Kerberos V5, описанная в стандарте RFC 1510 (впоследствии обновлён до RFC 4120 в 2005 году). Именно V5 стала основой для дальнейшего развития и промышленного внедрения протокола.

В 1990-х годах Microsoft интегрировала Kerberos в Windows 2000 в качестве основного механизма аутентификации в доменах, что обеспечило протоколу массовое распространение в корпоративных сетях. В Linux и UNIX-подобных системах поддержка Kerberos реализована в пакетах MIT Kerberos и Heimdal (свободная реализация, лицензированная по BSD).

Принцип работы

Архитектура Kerberos включает три роли: клиент, сервис (сервер приложений) и сервер ключей (KDC). KDC, в свою очередь, состоит из двух компонентов:

  • AS (Authentication Server) — сервер аутентификации, выдающий билеты доступа (Ticket Granting Tickets, TGT);
  • TGS (Ticket Granting Server) — сервер выдачи билетов, выдающий билеты на конкретные сервисы.

Обмен сообщениями между клиентом и сервером ключей защищён симметричным шифрованием (традиционно используется AES-128-CTS или AES-256-CTS в современных реализациях). Общие ключи хранятся в защищённой базе данных KDC.

Процесс аутентификации

Классический обмен сообщениями Kerberos V5 состоит из шести шагов:

  1. Клиент отправляет AS запрос в виде открытого сообщения с указанием имени пользователя и имени TGS.
  2. AS генерирует ключ сессии клиента (session key) и формирует TGT, зашифрованный ключом TGS. TGT содержит идентификатор клиента, адрес, срок действия и копию ключа сессии. TGT возвращается клиенту.
  3. Клиент расшифровывает ответ ключом пользователя (полученным из пароля) и извлекает ключ сессии и TGT.
  4. Для доступа к нужному сервису клиент формирует запрос к TGS, прикладывая TGT и аутентификатор (зашифрованный ключом сессии).
  5. TGS проверяет билет, генерирует ключ сессии для клиента и сервиса и формирует билет на сервис (service ticket), зашифрованный ключом сервиса.
  6. Клиент передаёт сервису билет и аутентификатор; сервис проверяет их и предоставляет доступ.

После завершения первоначального обмена клиент может многократно использовать TGT для получения билетов на разные сервисы без повторного ввода пароля в течение срока действия билета.

Реализации

Основные реализации протокола:

РеализацияРазработчикПримечание
MIT KerberosMITЭталонная реализация, лицензия MIT
HeimdalKTH Royal Institute of TechnologyСвободная альтернатива, BSD-лицензия
Windows Active DirectoryMicrosoftИнтеграция Kerberos с доменами Windows
Java GSS-APIOracle/SunПоддержка в Java через JGSS

Применение

Kerberos применяется в корпоративных сетях для централизованной аутентификации пользователей и сервисов. Протокол является обязательным компонентом Active Directory и широко используется в средах с гибридными ОС (Windows/Linux). Kerberos также лежит в основе механизма аутентификации в Hadoop-экосистеме (Kerberos-интеграция в HDFS, YARN, HBase) и в системах промышленной автоматизации.

В протоколах GSS-API и SASL Kerberos используется как механизм аутентификации для почтовых серверов (SMTP, IMAP), баз данных (PostgreSQL, MySQL) и других сервисов.

Ограничения

  • Kerberos предполагает наличие надёжного центрального сервера (KDC); его отказ блокирует аутентификацию в сети.
  • Протокол не защищает от атак типа «человек посередине» при компрометации клиента (например, при кейлоггинге).
  • Синхронизация часов критична: допустимое расхождение обычно не превышает 5 минут, иначе билеты отклоняются.
  • Kerberos не шифрует данные после аутентификации — для защиты трафика требуется дополнительное использование TLS или IPsec.

См. также

  • Аутентификация
  • Active Directory
  • GSS-API
  • Single sign-on

Источники

  • Neuman C., Yu T., Hartman S., Leach K. The Kerberos Network Authentication Service (V5) // RFC 4120, 2005.
  • Kohl J., Neuman C. The Kerberos Network Authentication Service (V5) // RFC 1510, 1993.
  • Jumbo Koala. Kerberos: The Definitive Guide // O'Reilly Media, 2005.
  • Documentation MIT Kerberos (web.mit.edu/kerberos).
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru