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 состоит из шести шагов:
- Клиент отправляет AS запрос в виде открытого сообщения с указанием имени пользователя и имени TGS.
- AS генерирует ключ сессии клиента (session key) и формирует TGT, зашифрованный ключом TGS. TGT содержит идентификатор клиента, адрес, срок действия и копию ключа сессии. TGT возвращается клиенту.
- Клиент расшифровывает ответ ключом пользователя (полученным из пароля) и извлекает ключ сессии и TGT.
- Для доступа к нужному сервису клиент формирует запрос к TGS, прикладывая TGT и аутентификатор (зашифрованный ключом сессии).
- TGS проверяет билет, генерирует ключ сессии для клиента и сервиса и формирует билет на сервис (service ticket), зашифрованный ключом сервиса.
- Клиент передаёт сервису билет и аутентификатор; сервис проверяет их и предоставляет доступ.
После завершения первоначального обмена клиент может многократно использовать TGT для получения билетов на разные сервисы без повторного ввода пароля в течение срока действия билета.
¶Реализации
Основные реализации протокола:
| Реализация | Разработчик | Примечание |
|---|---|---|
| MIT Kerberos | MIT | Эталонная реализация, лицензия MIT |
| Heimdal | KTH Royal Institute of Technology | Свободная альтернатива, BSD-лицензия |
| Windows Active Directory | Microsoft | Интеграция Kerberos с доменами Windows |
| Java GSS-API | Oracle/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).
