Принципы аутентификации по протоколу Kerberos

Kerberos и PKINIT Часть 1.

Обеспечивая безопасность нельзя забывать о вопросах безопасной аутентификации. В нескольких предыдущих статьях я уже останавливался на некоторых аспектах этой проблемы, и разбирались с двухфакторной аутентификацией. В этой статье мы рассмотрим механизмы работы протокола Kerberos при аутентификации с помощью имени пользователя и пароля и при использовании технологий асимметричной криптографии.

Общие сведения

Протокол Kerberos был специально разработан для того, чтобы обеспечить надежную аутентификацию пользователей.

Предусматривается, что начальный обмен информацией между клиентом и сервером происходит в незащищённой среде, а передаваемые пакеты могут быть перехвачены и модифицированы,

Протокол Kerberos может использовать централизованное хранение аутентификационных данных и является основой для построения механизмов Single Sign-On (возможность использования единой учетной записи пользователя для доступа к любым ресурсам области).

Протокол основан на понятии Ticket (билет).

Ticket (билет) является зашифрованным пакетом данных, который выдается доверенным центром аутентификации, в терминах протокола Kerberos — Key Distribution Center (KDC, центр распределения ключей).

Когда пользователь выполняет первичную аутентификацию, после успешного подтверждения его подлинности KDC выдает первичное удостоверение пользователя для доступа к сетевым ресурсам — Ticket Granting Ticket (TGT). В дальнейшем, при обращении к отдельным ресурсам сети, пользователь, предъявляя TGT, получает от KDC удостоверение для доступа к конкретному сетевому ресурсу — Service Ticket (TGS).

Одним из преимуществ протокола Kerberos, обеспечивающим высокий уровень безопасности, является то, что при любых взаимодействиях не передаются ни пароли, ни значения хеша паролей в открытом виде.

Работая с протоколом Kerberos, необходимо, чтобы системные часы всех участвующих во взаимодействии узлов были синхронизированы.

В качестве примера реализации протокола Kerberos имеет смысл отметить доменную аутентификацию пользователей в операционных системах Microsoft, начиная с Windows 2000.

Как работает аутентификация Kerberos?

Рассмотрим, как осуществляется аутентификация посредством протокола Kerberos.

В процессе аутентификации задействованы следующие основные компоненты:

  • Клиент, запрашивающий доступ к службе или пытающийся осуществить аутентификацию.
  • Сервер, на котором работают службы, доступ к которому требуется клиенту.
  • Компьютер, которому доверяет клиент (В данном случае речь идет о контроллере домена, на котором выполняется служба KDC).
  • KDC представляет собой службу, работающую на физически защищенном сервере.

Она ведет базу ученых данных с информацией обо всех участниках безопасности (security principal) своей области. Если речь идет о сетях Windows 2000/2003/2008, понятию «область Kerberos» соответствует понятие «домен».

Вместе с информацией о каждом security principal в базе данных KDC сохраняется криптографический ключ, известный только этому объекту и службе KDC. Указанный ключ, который называют долговременным, используется для связи пользователя системы безопасности с центром распределения ключей.

Примечание: В большинстве практических реализаций протокола Kerberos долговременные ключи создаются на основе пароля пользователя.

Итак, рассмотрим процесс аутентификации пользователя.

1. Получив приглашение на ввод имени пользователя, пароля и домена, пользователь указывает эти данные.

2. Затем компьютер пользователя обращается к службе KDC[1] и передает ей имя пользователя, имя домена, а также текущее время на рабочей станции пользователя, при этом имя пользователя передается в открытом виде, текущее время на рабочей станции пользователя передается в зашифрованном виде и является аутентификатором. Ключ шифрования формируется из пароля пользователя в результате хеширования. См. рис. 1.

Рисунок 1

3. Служба KDC ищет пользователя в AD, выявляет мастер ключ пользователя, который основан на пароле пользователя и расшифровывает аутентификатор, т. е. получает время отправки запроса. Разница во времени отправки запроса и текущего времени на контроллере домена не должно превышать определенного значения, установленного политикой протокола Kerberos[2].

4. Затем KDC создает два объекта:

a. ключ сессии, посредством которого будет обеспечиваться зашифрование данных при обмене между клиентом и службой KDC,

b. билет на получение билета Ticket-Granting Ticket (TGT). TGT включает: вторую копию ключа сессии, имя пользователя, время окончания жизни билета. Билет на получение билета шифруется с использованием собственного мастер ключа службы KDC, который известен только KDC, т. е. TGT может быть расшифрован только самой службой KDC.

5. Служба KDC зашифровывает аутентификатор пользователя (time stamp) и ключ сессии с помощью ключа клиента. После этого эти данные отправляются клиенту. См. Рис. 2.

Рисунок 2

6. Компьютер клиента получает информацию от службы KDC, проверяет аутентификатор, расшифровывает ключ сессии.

7. Теперь клиент обладает ключом сессии и TGT, что предоставляет возможность безопасного взаимодействия со службой KDC. Клиент аутентифицирован в домене и получает возможность осуществлять доступ к ресурсам домена, используя протокол Kerberos.

Итак, клиенту, прошедшему аутентификацию посредством Kerberos, требуется получить доступ к ресурсам на других серверах в том же домене.

1. Клиент обращается к службе KDC. Клиент представляет KDC свой TGT и маркер времени, которые зашифрованы с помощью ключа сессии, известного службе KDC.

2. KDC расшифровывает TGT, используя свой собственный ключ. Маркер времени расшифровывается с помощью сессионного ключа. Теперь KDC может подтвердить, что запрос пришел от «правильного» пользователя, т. к. этот пользователь может использовать этот сессионный ключ. См. рис. 3

Рисунок 3

3. Затем KDC создает пару билетов, один для клиента, один для сервера, к ресурсам которого клиент должен будет получать доступ. Каждый билет содержит имя пользователя, запрашивающего доступ, получателя запроса, маркер времени, показывающий, когда был создан билет, а также срок жизни билета. Оба билета будут также содержать новый ключ, K_cs который, таким образом известен и клиенту и серверу. Этот ключ будет обеспечивать возможность безопасного взаимодействия между ними. KDC шифрует билет сервера, используя мастер – ключ сервера, затем вкладывает билет сервера внутрь билета клиента, который также содержит ключ K_cs

4. Вся эта структура зашифровывается с помощью сессионного ключа, который стал доступен пользователю при аутентификации. После чего эта информация отправляется клиенту. См. Рис. 4

Рисунок 4

5. Получив билет, клиент расшифровывает его с помощью сессионного ключа, т. е. K_cs становится доступным клиенту, K_cs доступен также и серверу. Клиент не может прочитать билет сервера, т. к. он зашифрован на ключе сервера. См. Рисунок 5

 

Рисунок 5

6. Клиент зашифровывает маркер времени с помощью ключа, K_cs затем отправляет маркер времени и билет сервера самому серверу, к ресурсам которого пытается получить доступ клиент. См. Рис. 6

Рисунок 6

7. Получив эту информацию, на первом этапе сервер расшифровывает свой билет, используя свой долговременный ключ. Это предоставляет возможность получить доступ к K_cs , с помощью которого будет на втором этапе расшифрован маркер времени, полученный от клиента.

8. Теперь и клиент, и сервер обладают ключом K_cs. Следовательно, сервер может быть уверен в том, что клиент правильно идентифицирован, т. к. для шифрования маркера времени был использован K_cs . В случае необходимости ответа сервера клиенту, сервер воспользуется ключом K_cs . Клиент будет знать, что сервер правильно идентифицирован, поскольку сервер должен использовать, чтобы получить K_cs .

Разумеется, представленное в статье описание процедур аутентификации на основе Kerberos является упрощенным, тем не менее, мне представляется, что в значительной степени упростит понимание базовых принципов работы протокола. Если же читателя заинтересует более глубокое понимание работы Kerberos, то могу предложить ознакомиться с материалами, представленными в списке литературы.

В следующей статье мы рассмотрим возможности протокола Kerberos в сочетание с использованием технологий асимметричной криптографии. Именно этот вариант аутентификации является наиболее выгодным с точки зрения безопасности, поскольку позволяет избежать ввода пароля пользователя, что в свою очередь предотвращает его перехват программными и аппаратными средствами, например клавиатурными шпионами. Кроме того, минимизирует риски, связанные с человеческим фактором (подсматривание пароля, социотехника, и т. п.).

Продолжение следует…

Автор статьи: Леонид Шапиро