Аутентификация происходит тогда, когда пользователь А и сервер доказывают знание своего секретного ключа. Пользователь шифрует метку времени и отправляет ее на сервер В. Сервер расшифровывает метку, увеличивает ее значение на единицу, вновь зашифровывает и отправляет шифртекст пользователю А. Пользователь А расшифровывает ответ, и если в нем содержится значение метки времени с приращением, то аутентификация завершается успешно, в противном случае - неудачно. После взаимной аутентификации сеансовый ключ может использоваться для шифрования сообщений, которыми обмениваются пользователь А и сервер В. Очевидно, что стороны должны доверять ЦРК, поскольку он хранит копии всех секретных ключей.
Рассмотрим более подробно аутентификацию в системе Kerberos (рис. 2.4), которая выполняется за четыре шага:
1 получение пользователем билета TGT на билеты;
2 получение пользователем билета на доступ к серверу ;
3 аутентификация пользователя сервером;
4 аутентификация сервера пользователем.
Получение пользователем билета TGT на билеты
В начале сеанса регистрации пользователь обращается к сервису аутентификации (Authentication Service - AS) Kerberos за получением билета TGT для ЦРК. Обмен сообщениями с сервисом AS не требует от пользователя А подтверждения своей идентичности. Обмен состоит из двух сообщений: запроса от А и ответа сервиса AS. Запрос содержит просто имя пользователя А, а ответ сервиса AS - сеансовый ключ регистрации SA и билет TGT, зашифрованные секретным ключом КA пользователя А.
Обычно ключ КA извлекается из пароля пользователя А, что позволяет пользователю не запоминать двоичный симметричный ключ и обращаться к Kerberos с любой рабочей станции. Билет TGT содержит сеансовый ключ SA, имя пользователя А и срок действия билета, зашифрованные вместе секретным ключом ЦРК - КК. В дальнейшем при шифровании сообщений для пользователя А вместо секретного ключа КA ЦРК использует сеансовый ключ SA.
Получение пользователем билета на доступ к серверу
Когда пользователь А желает получить доступ к серверу, в своем сообщении он отправляет в ЦРК билет TGT, запрос на билет для доступа к серверу и аутентификатор. Это сообщение имеет следующий формат: "имя А", "имя B", TGT: КК ["имя А", SA, срок действия], SA [время] и называется запросом пользователя на доступ к серверу. Аутентификатор доказывает ЦРК, что пользователь А знает сеансовый ключ SA. Аутентификатор состоит из текущего значения даты и времени, зашифрованного сеансовым ключом. Шифрование защищает от возможного перехвата сторонним пользователем С билета TGT из ответа ЦРК пользователю А. Указание текущих значений даты и времени в аутентификаторе требует синхронизации компьютерных часов пользователя А и ЦРК. ЦРК может допускать некоторый разброс времени (обычно 5 мин.). На практике для поддержки синхронизации часов используется протокол синхронизации времени типа Simple Network Time Protocol (SNTP).
ЦРК получает запрос пользователя А на доступ к серверу В и готовит ответ. При помощи ключа КК ЦРК расшифровывает билет TGT из запроса, восстанавливает сеансовый ключ SA и проверяет срок действия билета TGT. Если билет TGT - действующий, то ЦРК генерирует ключ для пользователя А и сервера В - KAB и формирует билет. Билет шифруется секретным ключом сервера В - KB и содержит ключ KAB, имя пользователя А
и срок действия. В ответе ЦРК указываются имя сервера В и ключ KAB, зашифрованные сеансовым ключом SA, ответ имеет следующий формат: SA ["имя В", KAB, TICKET: KB ["имя А", KAB, срок действия]]. Получив ответ от ЦРК, пользователь А расшифровывает его при помощи сеансового ключа SA.
Аутентификация пользователя сервером
Пользователь А отправляет на сервер В запрос, состоящий из билета, который был прислан в ответе ЦРК, и аутентификатора, который содержит текущее значение даты и времени, зашифрованное ключом KAB ( KAB - сеансовый ключ для пользователя А и сервера В, здесь опять необходима синхронизация компьютерных часов пользователя А и сервера В ).