stringtranslate.com

Kerberos (протокол)

Kerberos ( / ˈ k ɜːr b ər ɒ s / ) — это протокол аутентификации компьютерной сети , который работает на основе билетов , позволяя узлам, взаимодействующим по незащищенной сети, доказывать свою идентичность друг другу безопасным способом. Его разработчики в первую очередь ориентировали его на модель клиент-сервер , и он обеспечивает взаимную аутентификацию — как пользователь, так и сервер проверяют идентичность друг друга. Сообщения протокола Kerberos защищены от подслушивания и атак повторного воспроизведения .

Kerberos построен на симметричной криптографии и требует доверенной третьей стороны , а также может опционально использовать криптографию с открытым ключом на определенных этапах аутентификации. [2] Kerberos по умолчанию использует UDP-порт 88.

Протокол был назван в честь персонажа Кербера (или Цербера ) из греческой мифологии , свирепого трехглавого сторожевого пса Аида . [3]

История и развитие

Массачусетский технологический институт (MIT) разработал Kerberos в 1988 году для защиты сетевых сервисов, предоставляемых проектом Athena . [4] [5] Его первая версия была изначально разработана Стивом Миллером и Клиффордом Ньюманом на основе более раннего протокола симметричного ключа Нидхэма-Шредера . [6] [7] Версии Kerberos с 1 по 3 были экспериментальными и не выпускались за пределами MIT. [8]

Kerberos версии 4, первая публичная версия, была выпущена 24 января 1989 года. Поскольку Kerberos 4 был разработан в Соединенных Штатах и ​​использовал алгоритм шифрования Data Encryption Standard (DES) , ограничения экспортного контроля США не позволяли экспортировать его в другие страны. MIT создал экспортируемую версию Kerberos 4 с удаленным кодом шифрования [8] , названную «Bones». [9] Эрик Янг из австралийского Университета Бонда повторно реализовал DES в Bones в версии под названием «eBones», которую можно было свободно использовать в любой стране. Королевский технологический институт Швеции выпустил еще одну повторную реализацию под названием KTH-KRB. [10]

Ньюман и Джон Коль опубликовали версию 5 в 1993 году с намерением преодолеть существующие ограничения и проблемы безопасности. Версия 5 появилась как RFC 1510, которая затем была признана устаревшей RFC 4120 в 2005 году.

В 2005 году рабочая группа Kerberos из Internet Engineering Task Force (IETF) обновила спецификации. Обновления включали:

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

Подробное описание протокола приведено ниже.

Вход пользователя на клиентскую систему без Kerberos

  1. Пользователь вводит имя пользователя и пароль на клиентской машине(ах) . Другие механизмы учетных данных, такие как pkinit (RFC 4556), позволяют использовать открытые ключи вместо пароля. Клиент преобразует пароль в ключ симметричного шифра. Это либо использует встроенное планирование ключей , либо односторонний хэш , в зависимости от используемого набора шифров .
  2. Сервер получает имя пользователя и симметричный шифр и сравнивает его с данными из базы данных. Вход был успешным, если шифр совпадает с шифром, который хранится для пользователя.

Аутентификация клиента

  1. Клиент отправляет текстовое сообщение с идентификатором пользователя на AS (сервер аутентификации), запрашивая услуги от имени пользователя. (Примечание: ни секретный ключ, ни пароль не отправляются на AS.)
  2. AS проверяет, есть ли клиент в его базе данных. Если есть, AS генерирует секретный ключ, хешируя пароль пользователя, найденного в базе данных (например, Active Directory в Windows Server), и отправляет обратно клиенту следующие два сообщения:
    • Сообщение A: сеансовый ключ клиента/TGS , зашифрованный с использованием секретного ключа клиента/пользователя.
    • Сообщение B: Билет на выдачу билета (TGT, включающий идентификатор клиента, сетевой адрес клиента , срок действия билета и ключ сеанса клиента/TGS ), зашифрованный с использованием секретного ключа TGS.
  3. Получив сообщения A и B, клиент пытается расшифровать сообщение A с помощью секретного ключа, сгенерированного из пароля, введенного пользователем. Если введенный пользователем пароль не совпадает с паролем в базе данных AS, секретный ключ клиента будет другим и, таким образом, не сможет расшифровать сообщение A. С действительным паролем и секретным ключом клиент расшифровывает сообщение A, чтобы получить ключ сеанса клиента/TGS . Этот ключ сеанса используется для дальнейшей связи с TGS. (Примечание: клиент не может расшифровать сообщение B, так как оно зашифровано с помощью секретного ключа TGS.) На этом этапе у клиента достаточно информации для аутентификации на TGS.

Авторизация обслуживания клиентов

  1. При запросе услуг клиент отправляет в TGS следующие сообщения:
    • Сообщение C: состоит из сообщения B (зашифрованный TGT с использованием сеансового ключа TGS) и идентификатора запрошенной услуги.
    • Сообщение D: Аутентификатор (состоящий из идентификатора клиента и временной метки), зашифрованный с использованием ключа сеанса клиента/TGS (найденного клиентом в сообщении A).
  2. Получив сообщения C и D, TGS извлекает сообщение B из сообщения C. Он расшифровывает сообщение B, используя секретный ключ TGS. Это дает ему ключ сеанса клиента/TGS и идентификатор клиента (оба находятся в TGT). Используя этот ключ сеанса клиента/TGS , TGS расшифровывает сообщение D (аутентификатор) и сравнивает идентификаторы клиентов из сообщений B и D; если они совпадают, сервер отправляет клиенту следующие два сообщения:
    • Сообщение E: Билет клиент-сервер (который включает идентификатор клиента, сетевой адрес клиента, срок действия и ключ сеанса клиент/сервер ), зашифрованный с использованием секретного ключа сервиса.
    • Сообщение F: Ключ сеанса клиент/сервер , зашифрованный с помощью ключа сеанса клиент/TGS .

Запрос на обслуживание клиентов

  1. Получив сообщения E и F от TGS, клиент имеет достаточно информации для аутентификации себя на сервере услуг (SS). Клиент подключается к SS и отправляет следующие два сообщения:
    • Сообщение E: Из предыдущего шага ( тикет клиент-сервер , зашифрованный TGS с использованием секретного ключа сервиса).
    • Сообщение G: новый аутентификатор, который включает идентификатор клиента, временную метку и зашифрован с использованием ключа сеанса клиент/сервер .
  2. SS расшифровывает билет (сообщение E), используя свой собственный секретный ключ, чтобы получить ключ сеанса клиент/сервер . Используя ключ сеанса, SS расшифровывает аутентификатор и сравнивает идентификатор клиента из сообщений E и G, если они совпадают, сервер отправляет следующее сообщение клиенту, чтобы подтвердить свою истинную личность и готовность обслуживать клиента:
    • Сообщение H: временная метка, найденная в аутентификаторе клиента (плюс 1 в версии 4, но не обязательно в версии 5 [11] [12] ), зашифрованная с использованием ключа сеанса клиент/сервер .
  3. Клиент расшифровывает подтверждение (сообщение H) с помощью сеансового ключа клиент/сервер и проверяет правильность временной метки. Если это так, то клиент может доверять серверу и может начать отправлять запросы на обслуживание на сервер.
  4. Сервер предоставляет запрошенные услуги клиенту.

Поддержка операционных систем

Майкрософт Виндоус

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? ] .

Недостатки и ограничения

Безопасность

Шифр стандарта шифрования данных (DES) может использоваться в сочетании с Kerberos, но больше не является стандартом Интернета, поскольку он слаб. [16] Уязвимости безопасности существуют в продуктах, реализующих устаревшие версии Kerberos, в которых отсутствует поддержка новых шифров шифрования, таких как AES.

Смотрите также

Ссылки

  1. ^ «Kerberos 5, выпуск 1.21».
  2. ^ RFC 4556, аннотация.
  3. ^ "Аутентификация Kerberos". IONOS Digitalguide . Получено 2022-08-25 .
  4. ^ Гарман 2003, стр. 5.
  5. ^ Штайнер, Дженнифер Г.; Гир, Дэниел Э. (21 июля 1988 г.). Сетевые службы в среде Athena . Труды зимней конференции Usenix 1988 г. CiteSeerX 10.1.1.31.8727 . 
  6. ^ Штайнер, Дженнифер Г.; Нойман, Клиффорд; Шиллер, Джеффри И. (февраль 1988 г.).Kerberos : Служба аутентификации для открытых сетевых систем . Труды зимней конференции USENIX 1988 года. CiteSeerX  10.1.1.112.9002 . S2CID  222257682.
  7. ^ Элизабет Д. Цвики; Саймон Купер; Д. Брент (26 июня 2000 г.). Создание межсетевых экранов Интернета: Интернет и веб-безопасность . O'Reilly. ISBN 9781565928718.
  8. ^ ab Garman 2003, стр. 7.
  9. ^ Pröhl & Kobras 2022, стр. 7.
  10. Гарман 2003, стр. 7–8.
  11. ^ C., Neuman; J., Kohl (1993). "Служба сетевой аутентификации Kerberos (V5)". doi : 10.17487/RFC1510 . Архивировано из оригинала 21-08-2016. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  12. ^ Клиффорд, Ньюман; Сэм, Хартман; Том, Ю; Кеннет, Рэйберн (2005). «Служба сетевой аутентификации Kerberos (V5)». doi :10.17487/RFC4120. Архивировано из оригинала 21-08-2016. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  13. ^ abc "Что такое аутентификация Kerberos?". Microsoft TechNet. 8 октября 2009 г. Архивировано из оригинала 2016-12-20.
  14. ^ Setspn - Windows CMD - SS64.com
  15. ^ Setspn | Документы Microsoft
  16. ^ Том, Ю; Лав, Астранд (2012). «Устаревание DES, RC4-HMAC-EXP и других слабых криптографических алгоритмов в Kerberos». doi :10.17487/RFC6649. Архивировано из оригинала 27.10.2015. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
Общий
RFC

Дальнейшее чтение

Внешние ссылки