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

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) и временные метки для предотвращения повторного воспроизведения.

Основные компоненты

  1. KDC (Key Distribution Center) — центральный сервер, хранящий пароли (или их хеши) всех пользователей и сервисов. Состоит из двух логических частей:
  • AS (Authentication Server) — проверяет подлинность пользователя и выдаёт билет на получение билетов (Ticket Granting Ticket, TGT).
  • TGS (Ticket Granting Server) — выдаёт билеты для доступа к конкретным сервисам на основе предъявленного TGT.
  1. Клиент — пользователь или процесс, запрашивающий доступ к сервису.
  1. Сервер приложений — служба, к которой клиент хочет получить доступ (например, файловый сервер, почтовый сервер).

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

Процесс состоит из трёх основных этапов:

  1. Получение TGT (Authentication Service Exchange):
  • Клиент отправляет запрос на AS, содержащий идентификатор пользователя (без пароля).
  • AS генерирует сессионный ключ и шифрует его паролем пользователя (хеш от пароля). Также AS создаёт TGT, который содержит идентификатор пользователя, сетевой адрес (если требуется), время жизни и сессионный ключ. TGT шифруется долговременным ключом TGS (который известен только KDC).
  • Клиент получает ответ, расшифровывает сессионный ключ своим паролем (вводимым пользователем) и сохраняет TGT в кеше.
  1. Получение билета для сервиса (Ticket Granting Service Exchange):
  • Клиент отправляет на TGS запрос, содержащий TGT (зашифрованный ключом TGS) и аутентификатор (Authenticator), зашифрованный сессионным ключом из TGT. Аутентификатор содержит имя клиента и текущую временную метку.
  • TGS расшифровывает TGT своим ключом, извлекает сессионный ключ, расшифровывает аутентификатор и проверяет временную метку (допускается отклонение в несколько минут, обычно 5). Затем TGS генерирует новый сессионный ключ для взаимодействия клиента с сервером приложений и создаёт билет для сервиса (Service Ticket), который шифруется долговременным ключом сервера приложений.
  • Клиент получает ответ, содержащий новый сессионный ключ (зашифрованный старым сессионным ключом) и билет для сервиса.
  1. Доступ к сервису (Client/Server Authentication Exchange):
  • Клиент отправляет серверу приложений билет для сервиса (зашифрованный ключом сервера) и новый аутентификатор (зашифрованный новым сессионным ключом).
  • Сервер расшифровывает билет своим долговременным ключом, извлекает сессионный ключ, расшифровывает аутентификатор и проверяет временную метку. Если всё корректно, сервер может опционально отправить клиенту подтверждение, зашифрованное сессионным ключом, для взаимной аутентификации.

Криптографические алгоритмы

Kerberos V5 поддерживает различные алгоритмы шифрования и контрольных сумм. В RFC 4120 определены следующие типы:

Форматы сообщений

Сообщения 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 имеет ряд уязвимостей и ограничений:

  1. Единая точка отказа — если KDC недоступен, аутентификация невозможна. Решается использованием резервных KDC.
  2. Зависимость от синхронизации времени — протокол требует, чтобы часы клиента и сервера были синхронизированы (обычно допускается отклонение до 5 минут). Используется протокол NTP.
  3. Атаки на пароль — если злоумышленник получает TGT, он может попытаться подобрать пароль пользователя офлайн. Защита — использование сложных паролей и многофакторной аутентификации.
  4. Атаки Golden Ticket — если скомпрометирован ключ KDC (krbtgt), злоумышленник может создать неограниченное количество TGT для любых пользователей. Это серьёзная угроза для Active Directory.
  5. Атаки 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.

Источники

  1. RFC 4120 — The Kerberos Network Authentication Service (V5). IETF, 2005.
  2. RFC 1510 — The Kerberos Network Authentication Service (V5). IETF, 1993.
  3. Neuman, B. C., & Ts'o, T. (1994). Kerberos: An Authentication Service for Computer Networks. IEEE Communications Magazine, 32(9), 33–38.
  4. MIT Kerberos Consortium. (2023). MIT Kerberos Documentation. Massachusetts Institute of Technology.
  5. Microsoft Corporation. (2023). Kerberos Authentication Overview. Windows Server Documentation.
  6. Steiner, J. G., Neuman, B. C., & Schiller, J. I. (1988). Kerberos: An Authentication Service for Open Network Systems. USENIX Conference Proceedings.

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

На главную BFOmetr →