Kerberos V5
Kerberos V5 — это сетевая аутентификационная система, использующая криптографию с симметричными ключами и протокол с доверенной третьей стороной. Она предназначена для обеспечения безопасного доступа к сервисам в небезопасной среде, такой как открытая сеть, без передачи пароля в открытом виде. Kerberos V5 является пятой версией протокола, разработанной в Массачусетском технологическом институте (MIT) в рамках проекта Athena, и определена в стандартах RFC 1510 (1993 год) и обновлённом RFC 4120 (2005 год). Название протокол получил в честь Цербера (Кербера) — трёхглавого пса из древнегреческой мифологии, охраняющего вход в подземное царство Аида.
История
Протокол Kerberos был разработан в 1980-х годах в MIT как часть проекта «Athena», который ставил целью создание распределённой вычислительной среды для университетского кампуса. Первая версия (Kerberos V1) была реализована в 1987 году, но не вышла за пределы MIT. Вторая версия (V2) также осталась экспериментальной. Kerberos V3 и V4 были опубликованы в 1989 году; версия V4 получила некоторое распространение, но содержала ряд уязвимостей, включая зависимость от сетевого адреса клиента и недостаточную защиту от атак повторного воспроизведения (replay attacks).
В 1993 году была опубликована спецификация Kerberos V5 (RFC 1510), которая исправила недостатки предыдущих версий. В 2005 году вышла обновлённая спецификация RFC 4120, которая уточнила формат сообщений, добавила поддержку новых типов шифрования и улучшила интероперабельность. Kerberos V5 стал стандартом де-факто для аутентификации во многих операционных системах, включая Microsoft Windows (начиная с Windows 2000, где он используется в Active Directory), Unix-подобные системы (через реализацию Heimdal или MIT Kerberos) и в средах с единым входом (Single Sign-On, SSO).
Принцип работы
Kerberos V5 основан на модели доверенной третьей стороны (Trusted Third Party, TTP), роль которой выполняет сервер аутентификации (Authentication Server, AS) и сервер выдачи билетов (Ticket Granting Server, TGS). Вместе они образуют центр распределения ключей (Key Distribution Center, KDC). Протокол использует симметричное шифрование (например, AES) и временные метки для предотвращения повторного воспроизведения.
Основные компоненты
- KDC (Key Distribution Center) — центральный сервер, хранящий пароли (или их хеши) всех пользователей и сервисов. Состоит из двух логических частей:
- AS (Authentication Server) — проверяет подлинность пользователя и выдаёт билет на получение билетов (Ticket Granting Ticket, TGT).
- TGS (Ticket Granting Server) — выдаёт билеты для доступа к конкретным сервисам на основе предъявленного TGT.
- Клиент — пользователь или процесс, запрашивающий доступ к сервису.
- Сервер приложений — служба, к которой клиент хочет получить доступ (например, файловый сервер, почтовый сервер).
Процесс аутентификации
Процесс состоит из трёх основных этапов:
- Получение TGT (Authentication Service Exchange):
- Клиент отправляет запрос на AS, содержащий идентификатор пользователя (без пароля).
- AS генерирует сессионный ключ и шифрует его паролем пользователя (хеш от пароля). Также AS создаёт TGT, который содержит идентификатор пользователя, сетевой адрес (если требуется), время жизни и сессионный ключ. TGT шифруется долговременным ключом TGS (который известен только KDC).
- Клиент получает ответ, расшифровывает сессионный ключ своим паролем (вводимым пользователем) и сохраняет TGT в кеше.
- Получение билета для сервиса (Ticket Granting Service Exchange):
- Клиент отправляет на TGS запрос, содержащий TGT (зашифрованный ключом TGS) и аутентификатор (Authenticator), зашифрованный сессионным ключом из TGT. Аутентификатор содержит имя клиента и текущую временную метку.
- TGS расшифровывает TGT своим ключом, извлекает сессионный ключ, расшифровывает аутентификатор и проверяет временную метку (допускается отклонение в несколько минут, обычно 5). Затем TGS генерирует новый сессионный ключ для взаимодействия клиента с сервером приложений и создаёт билет для сервиса (Service Ticket), который шифруется долговременным ключом сервера приложений.
- Клиент получает ответ, содержащий новый сессионный ключ (зашифрованный старым сессионным ключом) и билет для сервиса.
- Доступ к сервису (Client/Server Authentication Exchange):
- Клиент отправляет серверу приложений билет для сервиса (зашифрованный ключом сервера) и новый аутентификатор (зашифрованный новым сессионным ключом).
- Сервер расшифровывает билет своим долговременным ключом, извлекает сессионный ключ, расшифровывает аутентификатор и проверяет временную метку. Если всё корректно, сервер может опционально отправить клиенту подтверждение, зашифрованное сессионным ключом, для взаимной аутентификации.
Криптографические алгоритмы
Kerberos V5 поддерживает различные алгоритмы шифрования и контрольных сумм. В RFC 4120 определены следующие типы:
- des-cbc-crc (DES с CBC и CRC) — устарел, не рекомендуется.
- des3-cbc-sha1 (Triple DES с CBC и SHA-1) — устарел.
- aes128-cts-hmac-sha1-96 (AES-128 в режиме CTS с HMAC-SHA1) — современный.
- aes256-cts-hmac-sha1-96 (AES-256) — современный.
- rc4-hmac (ARCFOUR с HMAC-MD5) — используется в средах Windows.
Форматы сообщений
Сообщения Kerberos V5 кодируются с использованием ASN.1 (Abstract Syntax Notation One) и DER (Distinguished Encoding Rules). Основные типы сообщений:
- KRB_AS_REQ — запрос к AS.
- KRB_AS_REP — ответ от AS (содержит TGT).
- KRB_TGS_REQ — запрос к TGS.
- KRB_TGS_REP — ответ от TGS (содержит билет для сервиса).
- KRB_AP_REQ — запрос к серверу приложений.
- KRB_AP_REP — ответ от сервера приложений (опционально).
- KRB_ERROR — сообщение об ошибке.
Каждый билет содержит поля: имя клиента, имя сервиса, сетевой адрес (опционально), время выдачи, время истечения, флаги (например, FORWARDABLE, PROXIABLE, RENEWABLE) и ключ.
Реализации
MIT Kerberos
Оригинальная реализация от MIT, распространяемая под лицензией MIT. Включает клиентские утилиты (kinit, klist, kdestroy), сервер KDC (krb5kdc) и библиотеки для разработчиков. Активно поддерживается, последняя стабильная версия — 1.21 (2023 год).
Heimdal
Свободная реализация, изначально разработанная в Швеции. Распространяется под лицензией BSD. Используется в некоторых дистрибутивах Linux (например, Debian) и в macOS (до версии 10.13). Отличается более простой настройкой.
Microsoft Windows
В Windows Kerberos V5 является основным протоколом аутентификации в доменах Active Directory начиная с Windows 2000. Реализация Microsoft включает расширения, такие как поддержка PKINIT (аутентификация по сертификатам) и S4U2Self/S4U2Proxy (для делегирования полномочий). В Windows используется собственная криптографическая библиотека (CryptoAPI/CNG).
Shishi
Реализация Kerberos V5 для GNU, распространяемая под лицензией GPL. Входит в состав проекта GNU. Поддерживает большинство функций RFC 4120.
Применение
Kerberos V5 широко используется в корпоративных и академических сетях для обеспечения единого входа (SSO). Основные области применения:
- Active Directory — аутентификация пользователей и компьютеров в доменах Windows.
- Unix/Linux — аутентификация через PAM (Pluggable Authentication Modules) и NSS (Name Service Switch).
- Hadoop — аутентификация в экосистеме Apache Hadoop (через Kerberos).
- Сетевые файловые системы — NFSv4 с поддержкой RPCSEC_GSS.
- Веб-серверы — Apache HTTP Server с модулем mod_auth_kerb.
- Базы данных — Oracle, PostgreSQL (через GSSAPI).
Угрозы и ограничения
Несмотря на криптографическую стойкость, Kerberos V5 имеет ряд уязвимостей и ограничений:
- Единая точка отказа — если KDC недоступен, аутентификация невозможна. Решается использованием резервных KDC.
- Зависимость от синхронизации времени — протокол требует, чтобы часы клиента и сервера были синхронизированы (обычно допускается отклонение до 5 минут). Используется протокол NTP.
- Атаки на пароль — если злоумышленник получает TGT, он может попытаться подобрать пароль пользователя офлайн. Защита — использование сложных паролей и многофакторной аутентификации.
- Атаки Golden Ticket — если скомпрометирован ключ KDC (krbtgt), злоумышленник может создать неограниченное количество TGT для любых пользователей. Это серьёзная угроза для Active Directory.
- Атаки Silver Ticket — если скомпрометирован ключ сервера приложений, злоумышленник может подделать билеты для доступа к этому серверу.
Расширения
- PKINIT (Public Key Cryptography for Initial Authentication) — позволяет аутентифицироваться с помощью сертификатов X.509 вместо пароля.
- S4U2Self и S4U2Proxy — расширения Microsoft для делегирования полномочий, используемые в службах, работающих от имени пользователя.
- KDC Proxy — протокол для передачи Kerberos-трафика через HTTP (RFC 3244), используется в сценариях с NAT.
- FAST (Flexible Authentication via Secure Tunneling) — защита начального обмена с AS от атак перехвата (RFC 6113).
Сравнение с другими протоколами
Kerberos V5 часто сравнивают с NTLM (NT LAN Manager) и LDAP (Lightweight Directory Access Protocol). В отличие от NTLM, Kerberos не передаёт пароль в открытом виде и не требует множественных обменов «вызов-ответ». По сравнению с LDAP (используемым для аутентификации через bind), Kerberos обеспечивает более высокую производительность при частых запросах, так как после получения TGT дальнейшая аутентификация не требует обращения к серверу каталогов.
Интересные факты
- Название протокола пишется через «K» (Kerberos), а не через «C» (Cerberus), что является данью оригинальному греческому написанию (Κέρβερος).
- В Kerberos V4 использовался только алгоритм DES, что делало его уязвимым к атакам перебором.
- MIT Kerberos является одной из первых систем, реализовавших концепцию единого входа (SSO) в распределённых сетях.
- В 2014 году была обнаружена уязвимость MS14-068 (так называемая «Kerberos Elevation of Privilege»), позволявшая обычному пользователю получить права администратора в домене Windows.
Источники
- RFC 4120 — The Kerberos Network Authentication Service (V5). IETF, 2005.
- RFC 1510 — The Kerberos Network Authentication Service (V5). IETF, 1993.
- Neuman, B. C., & Ts'o, T. (1994). Kerberos: An Authentication Service for Computer Networks. IEEE Communications Magazine, 32(9), 33–38.
- MIT Kerberos Consortium. (2023). MIT Kerberos Documentation. Massachusetts Institute of Technology.
- Microsoft Corporation. (2023). Kerberos Authentication Overview. Windows Server Documentation.
- Steiner, J. G., Neuman, B. C., & Schiller, J. I. (1988). Kerberos: An Authentication Service for Open Network Systems. USENIX Conference Proceedings.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →