Протокол был назван в честь персонажа Кербера (или Цербера ) из греческой мифологии , свирепого трехглавого сторожевого пса Аида . [3]
История и развитие
Массачусетский технологический институт (MIT) разработал Kerberos в 1988 году для защиты сетевых сервисов, предоставляемых проектом Athena . [4] [5] Его первая версия была изначально разработана Стивом Миллером и Клиффордом Ньюманом на основе более раннего протокола симметричного ключа Нидхэма-Шредера . [6] [7] Версии Kerberos с 1 по 3 были экспериментальными и не выпускались за пределами MIT. [8]
Ньюман и Джон Коль опубликовали версию 5 в 1993 году с намерением преодолеть существующие ограничения и проблемы безопасности. Версия 5 появилась как RFC 1510, которая затем была признана устаревшей RFC 4120 в 2005 году.
Новая редакция спецификации Kerberos V5 "Служба сетевой аутентификации Kerberos (V5)" (RFC 4120). Эта версия отменяет RFC 1510, разъясняет аспекты протокола и предполагаемое использование в более подробном и ясном объяснении.
MIT делает реализацию Kerberos свободно доступной, с разрешениями авторских прав, аналогичными тем, которые используются для BSD . В 2007 году MIT сформировал Kerberos Consortium для содействия непрерывной разработке. Среди спонсоров-основателей такие поставщики, как Oracle , Apple Inc. , Google , Microsoft , Centrify Corporation и TeamF1 Inc., а также академические учреждения, такие как Королевский технологический институт в Швеции, Стэнфордский университет, MIT и поставщики, такие как CyberSafe, предлагающие коммерчески поддерживаемые версии.
Протокол
Описание
Клиент аутентифицируется на сервере аутентификации (AS) , который является частью центра распределения ключей (KDC) . KDC выпускает билет на выдачу билетов (TGT) , который имеет временную метку и шифрует его с помощью секретного ключа службы выдачи билетов (TGS) и возвращает зашифрованный результат на рабочую станцию пользователя. Это делается нечасто, обычно при входе пользователя в систему; TGT истекает в какой-то момент, хотя он может быть прозрачно продлен менеджером сеанса пользователя, пока он находится в системе.
Когда клиенту необходимо связаться со службой на другом узле («принципал» на языке Kerberos), клиент отправляет TGT на TGS, который является другим компонентом KDC и обычно использует тот же хост, что и сервер аутентификации. Служба должна быть уже зарегистрирована на TGS с именем принципала службы (SPN) . Клиент использует SPN для запроса доступа к этой службе. После проверки того, что TGT действителен и что пользователю разрешен доступ к запрошенной службе, TGS выдает клиенту билет службы (ST) и ключи сеанса. Затем клиент отправляет билет на сервер службы (SS) вместе со своим запросом на обслуживание.
Подробное описание протокола приведено ниже.
Вход пользователя на клиентскую систему без Kerberos
Пользователь вводит имя пользователя и пароль на клиентской машине(ах) . Другие механизмы учетных данных, такие как pkinit (RFC 4556), позволяют использовать открытые ключи вместо пароля. Клиент преобразует пароль в ключ симметричного шифра. Это либо использует встроенное планирование ключей , либо односторонний хэш , в зависимости от используемого набора шифров .
Сервер получает имя пользователя и симметричный шифр и сравнивает его с данными из базы данных. Вход был успешным, если шифр совпадает с шифром, который хранится для пользователя.
Аутентификация клиента
Клиент отправляет текстовое сообщение с идентификатором пользователя на AS (сервер аутентификации), запрашивая услуги от имени пользователя. (Примечание: ни секретный ключ, ни пароль не отправляются на AS.)
AS проверяет, есть ли клиент в его базе данных. Если есть, AS генерирует секретный ключ, хешируя пароль пользователя, найденного в базе данных (например, Active Directory в Windows Server), и отправляет обратно клиенту следующие два сообщения:
Сообщение A: сеансовый ключ клиента/TGS , зашифрованный с использованием секретного ключа клиента/пользователя.
Сообщение B: Билет на выдачу билета (TGT, включающий идентификатор клиента, сетевой адрес клиента , срок действия билета и ключ сеанса клиента/TGS ), зашифрованный с использованием секретного ключа TGS.
Получив сообщения A и B, клиент пытается расшифровать сообщение A с помощью секретного ключа, сгенерированного из пароля, введенного пользователем. Если введенный пользователем пароль не совпадает с паролем в базе данных AS, секретный ключ клиента будет другим и, таким образом, не сможет расшифровать сообщение A. С действительным паролем и секретным ключом клиент расшифровывает сообщение A, чтобы получить ключ сеанса клиента/TGS . Этот ключ сеанса используется для дальнейшей связи с TGS. (Примечание: клиент не может расшифровать сообщение B, так как оно зашифровано с помощью секретного ключа TGS.) На этом этапе у клиента достаточно информации для аутентификации на TGS.
Авторизация обслуживания клиентов
При запросе услуг клиент отправляет в TGS следующие сообщения:
Сообщение C: состоит из сообщения B (зашифрованный TGT с использованием сеансового ключа TGS) и идентификатора запрошенной услуги.
Сообщение D: Аутентификатор (состоящий из идентификатора клиента и временной метки), зашифрованный с использованием ключа сеанса клиента/TGS (найденного клиентом в сообщении A).
Получив сообщения C и D, TGS извлекает сообщение B из сообщения C. Он расшифровывает сообщение B с помощью секретного ключа TGS. Это дает ему ключ сеанса клиента/TGS и идентификатор клиента (оба находятся в TGT). Используя этот ключ сеанса клиента/TGS , TGS расшифровывает сообщение D (аутентификатор) и сравнивает идентификаторы клиентов из сообщений B и D; если они совпадают, сервер отправляет клиенту следующие два сообщения:
Сообщение E: Билет клиент-сервер (который включает идентификатор клиента, сетевой адрес клиента, срок действия и ключ сеанса клиент/сервер ), зашифрованный с использованием секретного ключа сервиса.
Сообщение F: Ключ сеанса клиент/сервер , зашифрованный с помощью ключа сеанса клиент/TGS .
Запрос на обслуживание клиентов
Получив сообщения E и F от TGS, клиент имеет достаточно информации для аутентификации себя на сервере услуг (SS). Клиент подключается к SS и отправляет следующие два сообщения:
Сообщение E: Из предыдущего шага ( тикет клиент-сервер , зашифрованный TGS с использованием секретного ключа сервиса).
Сообщение G: новый аутентификатор, который включает идентификатор клиента, временную метку и зашифрован с использованием ключа сеанса клиент/сервер .
SS расшифровывает билет (сообщение E), используя свой собственный секретный ключ, чтобы получить ключ сеанса клиент/сервер . Используя ключ сеанса, SS расшифровывает аутентификатор и сравнивает идентификатор клиента из сообщений E и G, если они совпадают, сервер отправляет следующее сообщение клиенту, чтобы подтвердить свою истинную личность и готовность обслуживать клиента:
Сообщение H: временная метка, найденная в аутентификаторе клиента (плюс 1 в версии 4, но не обязательно в версии 5 [11] [12] ), зашифрованная с использованием ключа сеанса клиент/сервер .
Клиент расшифровывает подтверждение (сообщение H) с помощью сеансового ключа клиент/сервер и проверяет правильность временной метки. Если это так, то клиент может доверять серверу и может начать отправлять запросы на обслуживание на сервер.
Сервер предоставляет запрошенные услуги клиенту.
Поддержка операционных систем
Майкрософт Виндоус
Windows 2000 и более поздние версии используют Kerberos в качестве метода аутентификации по умолчанию. [13] Некоторые дополнения Microsoft к набору протоколов Kerberos задокументированы в RFC 3244 "Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols". RFC 4757 документирует использование Microsoft шифра RC4 . Хотя Microsoft использует и расширяет протокол Kerberos, она не использует программное обеспечение MIT.
Kerberos используется в качестве предпочтительного метода аутентификации: в общем случае присоединение клиента к домену Windows означает включение Kerberos в качестве протокола по умолчанию для аутентификации этого клиента для служб в домене Windows и всех доменов с доверительными отношениями с этим доменом. [13]
Напротив, когда клиент или сервер, или оба не присоединены к домену (или не являются частью одной и той же доверенной доменной среды), Windows вместо этого будет использовать NTLM для аутентификации между клиентом и сервером. [13]
Интернет-приложения могут применять Kerberos в качестве метода аутентификации для клиентов, подключенных к домену, с помощью API, предоставляемых в рамках SSPI .
Microsoft Windows и Windows Server включают setspn — утилиту командной строки , которую можно использовать для чтения, изменения или удаления имен участников службы (SPN) для учетной записи службы Active Directory . [14] [15]
Unix и другие операционные системы
Многие Unix-подобные операционные системы, включая FreeBSD , macOS от Apple , Red Hat Enterprise Linux , Solaris от Oracle , AIX от IBM , HP-UX и другие, включают программное обеспечение для аутентификации пользователей или служб Kerberos. Различные не-Unix-подобные операционные системы, такие как z/OS , IBM i и OpenVMS, также поддерживают Kerberos. Встроенная реализация протокола аутентификации Kerberos V для клиентских агентов и сетевых служб, работающих на встроенных платформах, также доступна у компаний [ which? ] .
Недостатки и ограничения
Kerberos имеет строгие временные требования, что означает, что часы задействованных хостов должны быть синхронизированы в пределах настроенных ограничений. Билеты имеют период доступности времени, и если часы хоста не синхронизированы с часами сервера Kerberos, аутентификация не будет пройдена. Конфигурация по умолчанию для MIT требует, чтобы время часов не отличалось более чем на пять минут. На практике демоны протокола сетевого времени обычно используются для синхронизации часов хоста. Обратите внимание, что некоторые серверы (реализация Microsoft является одним из них) могут возвращать результат KRB_AP_ERR_SKEW, содержащий зашифрованное время сервера, если оба часа имеют смещение больше настроенного максимального значения. В этом случае клиент может повторить попытку, вычислив время с использованием предоставленного времени сервера, чтобы найти смещение. Такое поведение задокументировано в RFC 4430.
Протокол администрирования не стандартизирован и отличается в зависимости от реализации сервера. Изменение пароля описано в RFC 3244.
В случае принятия симметричной криптографии (Kerberos может работать с использованием симметричной или асимметричной (с открытым ключом) криптографии), поскольку все аутентификации контролируются централизованным центром распределения ключей (KDC), компрометация этой инфраструктуры аутентификации позволит злоумышленнику выдать себя за любого пользователя.
Каждая сетевая служба, требующая другого имени хоста, будет нуждаться в своем собственном наборе ключей Kerberos. Это усложняет виртуальный хостинг и кластеры.
Kerberos требует, чтобы учетные записи пользователей и службы имели доверенные отношения с сервером токенов Kerberos.
Необходимое доверие клиентов затрудняет создание поэтапных сред (например, отдельных доменов для тестовой среды, предпроизводственной среды и производственной среды): необходимо либо создать доверительные отношения доменов, которые предотвращают строгое разделение доменов среды, либо предоставить дополнительных пользовательских клиентов для каждой среды.
Безопасность
Шифр стандарта шифрования данных (DES) может использоваться в сочетании с Kerberos, но больше не является стандартом Интернета, поскольку он слаб. [16] Уязвимости безопасности существуют в продуктах, реализующих устаревшие версии Kerberos, которые не поддерживают новые шифры шифрования, такие как AES.
^ Штайнер, Дженнифер Г.; Гир, Дэниел Э. (21 июля 1988 г.). Сетевые службы в среде Athena . Труды зимней конференции Usenix 1988 г. CiteSeerX 10.1.1.31.8727 .
^ Штайнер, Дженнифер Г.; Нойман, Клиффорд; Шиллер, Джеффри И. (февраль 1988 г.).Kerberos : Служба аутентификации для открытых сетевых систем . Труды зимней конференции USENIX 1988 года. CiteSeerX 10.1.1.112.9002 . S2CID 222257682.
^ Элизабет Д. Цвики; Саймон Купер; Д. Брент (26 июня 2000 г.). Создание межсетевых экранов Интернета: Интернет и веб-безопасность . O'Reilly. ISBN9781565928718.
^ ab Garman 2003, стр. 7.
^ Pröhl & Kobras 2022, стр. 7.
↑ Гарман 2003, стр. 7–8.
^ Ньюман, К.; Коль, Дж. (1993). "Служба сетевой аутентификации Kerberos (V5)". doi : 10.17487/RFC1510 . Архивировано из оригинала 21-08-2016.
^ abc "Что такое аутентификация Kerberos?". Microsoft TechNet. 8 октября 2009 г. Архивировано из оригинала 2016-12-20.
^ Setspn - Windows CMD - SS64.com
^ Setspn | Документы Microsoft
^ Том, Ю; Лав, Астранд (2012). «Устаревание DES, RC4-HMAC-EXP и других слабых криптографических алгоритмов в Kerberos». doi :10.17487/RFC6649. Архивировано из оригинала 27.10.2015.
Прёль, Марк; Кобрас, Дэниел (14 апреля 2022 г.). Kerberos: единый вход в Linux/Windows-Umgebungen (на немецком языке). dpunkt.verlag. п. 7. ISBN 9783960888512.
Линн Рут (30 мая 2013 г.) (2 апреля 2013 г.). «Объясняй, как будто мне 5: Kerberos». Блог Линн Рут .{{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
Microsoft TechNet (18 июля 2012 г.). «Основные концепции протокола Kerberos». Библиотека MSDN .
Команда Resource Kit (7 января 2021 г.). "Microsoft Kerberos (Windows)". Библиотека MSDN .
Б. Клиффорд Ньюман; Теодор Цо (сентябрь 1994 г.). «Kerberos: служба аутентификации для компьютерных сетей». IEEE Communications . 32 (9): 33–8. doi :10.1109/35.312841. S2CID 45031265.
Kohl, John T.; Neuman, B. Clifford; Ts'o, Theodore Y. (1994). "Эволюция системы аутентификации Kerberos". В Brazier, FMT ; Johansen, D (ред.). Распределенные открытые системы . IEEE Computer Society Press. стр. 78–94. CiteSeerX 10.1.1.120.944 . ISBN 978-0-8186-4292-0. OCLC 1191406172.
«Обзор Kerberos: служба аутентификации для открытых сетевых систем». Cisco Systems. 19 января 2006 г. Получено 15 августа 2012 г.
«Как работает аутентификация Kerberos». learn-networking.com. 28 января 2008 г. Архивировано из оригинала 2 апреля 2015 г. Получено 15 августа 2012 г.
«Что такое аутентификация Kerberos?: Вход в систему и аутентификация». Microsoft TechNet. 8 октября 2009 г. Получено 7 декабря 2016 г.
RFC
RFC 1510 Служба сетевой аутентификации Kerberos (V5) [Устарело]
RFC 1964 Механизм GSS-API Kerberos версии 5
Спецификации шифрования и контрольной суммы RFC 3961 для Kerberos 5
RFC 3962 Расширенный стандарт шифрования (AES) Шифрование для Kerberos 5
RFC 4120 Служба сетевой аутентификации Kerberos (V5) [Текущий]
RFC 4121 Механизм прикладного программного интерфейса службы безопасности Kerberos версии 5 (GSS-API): версия 2
RFC 4537 Расширение согласования криптосистемы Kerberos
RFC 4556 Криптография с открытым ключом для первоначальной аутентификации в Kerberos (PKINIT)
RFC 4557 Протокол статуса сертификата в сети (OCSP) Поддержка криптографии с открытым ключом для первоначальной аутентификации в Kerberos (PKINIT)
RFC 4757 Типы шифрования Kerberos RC4-HMAC, используемые Microsoft Windows [устарело]
RFC 5021 Расширенный Kerberos версии 5 Центр распределения ключей (KDC) Обмен по TCP
RFC 5349 Эллиптическая кривая криптографии (ECC) Поддержка открытого ключа криптографии для начальной аутентификации в Kerberos (PKINIT)
RFC 5868. Постановка проблемы при работе Kerberos в разных областях
RFC 5896 Общий программный интерфейс приложения службы безопасности (GSS-API): делегирование, если одобрено политикой
RFC 6111 Дополнительные ограничения именования Kerberos
Поддержка анонимности RFC 6112 для Kerberos
RFC 6113 Обобщенная структура предварительной аутентификации Kerberos
RFC 6251 Использование Kerberos версии 5 по протоколу Transport Layer Security (TLS)
RFC 6448 Незашифрованная форма сообщения Kerberos 5 KRB-CRED
RFC 6542 Kerberos версии 5. Интерфейс прикладных программ служб общей безопасности (GSS-API). Гибкость хэширования привязки каналов.
RFC 6560 Предварительная аутентификация с помощью одноразового пароля (OTP)
RFC 6649 Отменяет поддержку DES, RC4-HMAC-EXP и других слабых криптографических алгоритмов в Kerberos
RFC 6784 Параметры Kerberos для DHCPv6
RFC 6803 Шифрование Camellia для Kerberos 5
RFC 6806 Канонизация имени принципала Kerberos и межобластные ссылки
RFC 6880 Информационная модель для Kerberos версии 5
RFC 8009 Шифрование AES с HMAC-SHA2 для Kerberos 5
Дальнейшее чтение
«Комментарий Novell Inc. к предлагаемому урегулированию между Microsoft и Министерством юстиции в соответствии с Законом Танни». Гражданский иск № 98-1232 (CKK): Соединенные Штаты Америки против Microsoft Corporation . Министерство юстиции. 29 января 2002 г. Получено 15 августа 2012 г.
Брайант, Билл (февраль 1988 г.). «Проектирование системы аутентификации: диалог в четырех сценах». Юмористическая пьеса о том, как развивался дизайн Kerberos . Массачусетский технологический институт .
Хорнштейн, Кен (18 августа 2000 г.). "Kerberos FAQ, v2.0". Секретарь ВМС . Архивировано из оригинала 3 декабря 2002 г. Получено 15 августа 2012 г.
Белловин, SM; Мерритт, M. (1 октября 1990 г.). «Ограничения системы аутентификации Kerberos». ACM SIGCOMM Computer Communication Review . 20 (5): 119–132. doi : 10.1145/381906.381946 . S2CID 8014806.
Ньюман, BC; Цо, Т. (сентябрь 1994 г.). «Kerberos: служба аутентификации для компьютерных сетей». Журнал IEEE Communications . 32 (9): 33–38. doi :10.1109/35.312841. S2CID 45031265.
Белла, Джампаоло; Полсон, Лоуренс К. (1998). "Kerberos Version IV: Inductive analysis of the secrecy goals". Computer Security — ESORICS 98. Lecture Notes in Computer Science. Vol. 1485. pp. 361–375. doi :10.1007/BFb0055875. ISBN 978-3-540-65004-1.
Абдельмаджид, NT; Хоссейн, MA; Шепард, S.; Махмуд, K. (2010). «Улучшенная оценка протокола безопасности Kerberos с использованием модифицированной логики BAN». 2010 10-я Международная конференция IEEE по компьютерам и информационным технологиям . стр. 1610–1615. doi :10.1109/CIT.2010.285. ISBN 978-1-4244-7547-6. S2CID 6246388.
Внешние ссылки
На Викискладе есть медиафайлы по теме Kerberos .
Консорциум Kerberos
Страница Kerberos на сайте MIT
Рабочая группа Kerberos на сайте IETF
Диаграмма последовательности Kerberos Архивировано 26.03.2015 на Wayback Machine