Инфраструктуры открытых ключей - страница 14

стр.

получает зашифрованный сеансовый ключ S>A и билет на доступ к серверуВ. Сеансовый ключ зашифрован секретным ключом, известным только пользователю А и ЦРК. Билет на доступ к серверуВ содержит тот же самый сеансовый ключ, однако он шифруется секретным ключом, известным только серверу В и ЦРК.

Аутентификация происходит тогда, когда пользователь А и сервер доказывают знание своего секретного ключа. Пользователь шифрует метку времени и отправляет ее на сервер В. Сервер расшифровывает метку, увеличивает ее значение на единицу, вновь зашифровывает и отправляет шифртекст пользователю А. Пользователь А расшифровывает ответ, и если в нем содержится значение метки времени с приращением, то аутентификация завершается успешно, в противном случае - неудачно. После взаимной аутентификации сеансовый ключ может использоваться для шифрования сообщений, которыми обмениваются пользователь А и сервер В. Очевидно, что стороны должны доверять ЦРК, поскольку он хранит копии всех секретных ключей.

Рассмотрим более подробно аутентификацию в системе Kerberos (рис. 2.4), которая выполняется за четыре шага:

1 получение пользователем билета TGT на билеты;

2 получение пользователем билета на доступ к серверу ;

3 аутентификация пользователя сервером;

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

Получение пользователем билета TGT на билеты

В начале сеанса регистрации пользователь обращается к сервису аутентификации (Authentication Service - AS) Kerberos за получением билета TGT для ЦРК. Обмен сообщениями с сервисом AS не требует от пользователя А подтверждения своей идентичности. Обмен состоит из двух сообщений: запроса от А и ответа сервиса AS. Запрос содержит просто имя пользователя А, а ответ сервиса AS - сеансовый ключ регистрации S>A и билет TGT, зашифрованные секретным ключом К>A пользователя А. Обычно ключ К>A извлекается из пароля пользователя А, что позволяет пользователю не запоминать двоичный симметричный ключ и обращаться к Kerberos с любой рабочей станции. Билет TGT содержит сеансовый ключ S>A, имя пользователя А и срок действия билета, зашифрованные вместе секретным ключом ЦРК - К. В дальнейшем при шифровании сообщений для пользователя А вместо секретного ключа К>AЦРК использует сеансовый ключ S>A.

Получение пользователем билета на доступ к серверу

Когда пользователь А желает получить доступ к серверу, в своем сообщении он отправляет в ЦРК билет TGT, запрос на билет для доступа к серверу и аутентификатор. Это сообщение имеет следующий формат: "имя А", "имя B", TGT: К ["имя А", S>A, срок действия], S>A [время] и называется запросом пользователя на доступ к серверу. Аутентификатор доказывает ЦРК, что пользователь А знает сеансовый ключ S>A. Аутентификатор состоит из текущего значения даты и времени, зашифрованного сеансовым ключом. Шифрование защищает от возможного перехвата сторонним пользователем С билета TGT из ответа ЦРК пользователю А. Указание текущих значений даты и времени в аутентификаторе требует синхронизации компьютерных часов пользователя А и ЦРК. ЦРК может допускать некоторый разброс времени (обычно 5 мин.). На практике для поддержки синхронизации часов используется протокол синхронизации времени типа Simple Network Time Protocol (SNTP).

ЦРК получает запрос пользователя А на доступ к серверу В и готовит ответ. При помощи ключа КЦРК расшифровывает билет TGT из запроса, восстанавливает сеансовый ключ S>A и проверяет срок действия билета TGT. Если билет TGT - действующий, то ЦРК генерирует ключ для пользователя А и сервера В - K>AB и формирует билет. Билет шифруется секретным ключом сервера В - K>B и содержит ключ K>AB, имя пользователя А и срок действия. В ответе ЦРК указываются имя сервера В и ключ K>AB, зашифрованные сеансовым ключом S>A, ответ имеет следующий формат: S>A ["имя В", K>AB, TICKET: K>B ["имя А", K>AB, срок действия]]. Получив ответ от ЦРК, пользователь А расшифровывает его при помощи сеансового ключа S>A.

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

Пользователь А отправляет на сервер В запрос, состоящий из билета, который был прислан в ответе