Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП_ИБ РВ редакция.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

5.5 Схема Kerberos

Решение задачи аутентификации в современных информационных системах, представляющих собой совокупность реализованных на различных аппаратно-программных платформах территориально разнесенных компонентов, в соответствии с технологией клиент-сервер заключается в использовании специального сервера аутентификации. В настоящее время роль фактического стандарта сервера аутентификации выполняет Kerberos - продукт, разработанный в Массачусетсом технологическом институте (MIT) в середине 1980 годов и претерпевший с тех пор ряд принципиальных изменений. Широкому распространению Kerberos способствовало то, его версия, реализованная в MIT, является свободно распространяемым продуктом. Программные средства, выполняющие аутентификацию по схеме Kerberos, разработаны для всех популярных ОС. Поддержка службы Kerberos предусмотрена в некоторых современных сетевых ОС. Схема Kerberos является типичным примером реализации симметричных методов аутентификации.

Система (см. рисунок 15) предусматривает взаимодействие между тремя программными компонентами - клиентом С, сервером Kerberos и прикладным сервером S. ПО сервера Kerberos разделено по своим функциям на две части: сервер аутентификации AS (Authentication Server) и сервер выдачи разрешений (билетов) TGS (Ticket Granting Sever). Клиент С - это компьютер, на котором установлено клиентское ПО, способное участвовать во взаимодействии по протоколу Kerberos, и на котором зарегистрирован какой-либо пользователь. В некоторых случаях прикладной сервер может являться клиентом некоторого другого сервера, например, сервер печати может пользоваться услугами файлового сервера. Сервер S - субъект, предоставляющий ресурсы сетевым клиентам.

Клиент С, который хочет обратиться к прикладному серверу для получения его услуг, должен получить разрешение от AS. Разрешение - это зашифрованная информация, которую клиент передает серверу S или серверу TGS. Разрешение позволяет серверу убедиться в подлинности клиента. Все разрешения, кроме первого, клиент получает от сервера TGS. Первое разрешение, разрешение на доступ к самому TGS, клиент получает от сервера AS. Разрешение - это шифровка, полученная на секретном ключе, известном только серверу S и серверу Kerberos, поэтому первый, получив разрешение, может быть уверен, что оно поступило именно от сервера Kerberos. Разрешения являются многоразовыми, имеющими определенный срок жизни (несколько часов). Когда этот срок истекает, клиент должен вновь пройти процедуру аутентификации. При установлении каждого соединения используется временная метка, поэтому в сети должна действовать служба единого времени. Необходимость в сервере TGS объясняется стремлением сократить число сообщений, зашифрованных с использованием секретного ключа клиента, которому требуются услуги нескольких серверов. Именно поэтому сервер Kerberos «раздваивается» на сервер AS, с которым клиент взаимодействует при помощи секретного ключа kС,AS, и сервер TGS, с которым клиент осуществляет дальнейшее взаимодействие при помощи только сеансовых ключей kC,TGS. Компрометация сеансового ключа, имеющего очень короткое время жизни, вещь значительно менее опасная, чем раскрытие секретного ключа.

Рисунок 15 - Схема Kerberos

Процесс аутентификации состоит из пяти (односторонняя аутентификация) или шести (взаимная аутентификация) шагов:

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

2) Сервер аутентификации осуществляет поиск в базе данных Kerberos по идентификатору клиента и идентификатору услуги, находит соответствующие ключи kС,AS и kC,TGS, формирует сеансовый ключ kC,TGS для взаимодействия клиента и сервера выдачи разрешений. После этого сервер AS посылает ответ клиенту. Этот ответ содержит две шифровки. Первая, полученная на секретном ключе клиента kС,AS, содержит сеансовый ключ kC,TGS для работы с сервером выдачи разрешений, идентификатор последнего и срок жизни разрешения клиенту на работу с сервером TGS. Вторая шифровка, полученная на ключе kC,TGS, - это разрешение (ticket-granting ticket) клиенту на взаимодействие с сервером TGS. В состав второй шифровки, которую клиент прочесть не может, так как не знает ключа kC,TGS , входят идентификаторы клиента и TGS, сеансовый ключ kC,TGS и срок жизни этого разрешения.

3) Получив сообщение, клиент расшифровывает первую его половину на ключе kС,AS, проверяет идентификатор запроса, узнает сеансовый ключ kC,TGS и срок жизни разрешения на работу с сервером TGS. Таким образом, в результате обмена сообщениями с сервером AS клиент получает разрешение на работу с сервером TGS. Затем клиент посылает запрос серверу выдачи разрешений. Сообщение для сервера TGS включает в себя две шифровки. Первая, полученная на сеансовом ключе kC,TGS, включает в себя идентификаторы клиента и сервера, идентификатор запроса и временную метку. Вторая - это «запечатанное» ключом kAS TGS разрешение на работу с сервером TGS.

4) Сервер выдачи разрешений расшифровывает разрешение, узнает сеансовый ключ kC,TGS, с помощью которого читает первую часть пришедшего сообщения и проверяет идентификатор запроса и временную метку. Удостоверившись в подлинности клиента, сервер TGS вырабатывает сеансовый ключ kC S для взаимодействия клиента С и сервера S. На знании этого ключа и будет основываться в будущем взаимная аутентификация С и S. После этого отправляет сообщение клиенту, содержащее зашифрованные на ключе kC,TGS сеансовый ключ и срок жизни разрешения клиенту на работу с сервером, а также само это разрешение, зашифрованное на секретном ключе kS TGS.

5) Клиент, получив сообщение, расшифровывает первую его часть, из которой извлекает сеансовый ключ kC S для работы с сервером S и срок жизни разрешения на взаимодействие с сервером S. Само «запечатанное» ключом kS TGS разрешение клиент прочесть не может. Таким образом, в результате обмена с сервером выдачи разрешений клиент получает разрешение на дальнейшее взаимодействие уже с прикладным сервером. Наконец, клиент посылает серверу S сообщение, содержащее зашифрованные на сеансовом ключе kCS свой идентификатор, идентификатор запроса и временную метку, а также разрешение, полученное от сервера TGS.

6) Приняв сообщение от клиента и «распечатав» разрешение, целевой сервер узнает сеансовый ключ kCS и с его помощью проводит аутентификацию клиента, проверяя идентификатор запроса и временную метку. Ответ сервера клиенту посылается в том случае, когда требуется взаимная аутентификация. Ответ прикладного сервера в этом случае содержит зашифрованный на ключе kCS результат хеширования метки времени.

Сервер Kerberos имеет доступ к базе данных, содержащей идентификаторы и секретные ключи субъектов. Запись каждого пользователя и каждого прикладного сервера в базе данных Kerberos содержит следующие компоненты:

- идентификатор субъекта;

- cекретный ключ субъекта;

- дату истечения срока действия секретного ключа;

- максимальной срок жизни разрешений, выдаваемых субъекту;

- номер версии секретного ключа субъекта;

- дату последней модификации записи;

- другую служебную информацию.

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

Помимо серверов AS и TGS, в системе имеется объект, отвечающий за управление базой данных, называемый диспетчером базы данных Kerberos DBM (Database Manager), а также сервер распространения ключей Kerberos KDS (Key Distribution Server).