Билеты Ticket-Granting
Как протокол Kerberos изначально был разработан, главный ключ для пользователя выводился из пароля, предоставленного пользователем. Когда пользователь вошел в систему, клиент Kerberos на рабочей станции пользователя принял пароль от пользователя и преобразовал его в ключ шифрования, передав текст через одностороннюю хэш- функцию. Полученный хэш был главным ключом пользователя. Клиент использовал этот главный ключ для расшифровки ключей сеансов , полученных от KDC.
Проблема с исходной конструкцией Kerberos заключается в том, что клиенту требуется главный ключ пользователя каждый раз, когда он расшифровывает ключ сеанса из KDC. Это означает, что клиент должен запрашивать пароль в начале каждого обмена клиентом или сервером, или клиент должен хранить ключ пользователя на рабочей станции. Частые прерывания пользователя слишком навязчивы. Хранение ключа на рабочей станции рискует компрометации ключа, полученного от пароля пользователя, который является долгосрочным ключом.
Решение протокола Kerberos к этой проблеме предназначено для того, чтобы клиент получил временный ключ из KDC. Этот временный ключ действителен только для этого сеанса входа в систему. Когда пользователь входит в систему, клиент запрашивает билет для KDC так же, как он запрашивает билет для любой другой службы. KDC отвечает, создавая ключ сеанса входа и тикет для специального сервера, полного сервиса KDC по предоставлению тикетов. Одна копия ключа сеанса входа внедрена в билет, и билет шифруется с помощью главного ключа KDC. Другая копия ключа сеанса входа шифруется главным ключом пользователя, производным от пароля входа пользователя. Запрос и зашифрованный ключ сеанса отправляются клиенту.
Когда клиент получает ответ KDC, он расшифровывает ключ сеанса входа с главным ключом пользователя, производным от пароля пользователя. Клиенту больше не нужен ключ, производный от пароля пользователя, так как клиент теперь будет использовать ключ сеанса входа для расшифровки копии любого ключа сеанса сервера, полученного из KDC. Клиент хранит ключ сеанса входа в систему в кэше тикетов вместе с тикетом для полной службы выдачи тикетов KDC.
Билет для полноценной службы выдачи билетов называется билетом на предоставление билетов (TGT). Когда клиент запрашивает у KDC билет на сервер, он предоставляет учетные данные в виде сообщения проверки подлинности и билета (в данном случае TGT), так же, как и в любой другой службе. Служба предоставления билетов открывает TGT с помощью своего главного ключа, извлекает ключ сеанса входа для этого клиента и использует его для шифрования клиентской копии ключа сеанса для сервера.