Принципы работы сервера безопасности
В целях обеспечения защиты данных Secret Net следует следующим принципам:
1. Пользователь должен идентифицировать себя только раз в начале сессии. Это включает ввод имени и пароля клиента.
2. Пароль никогда не посылается по сети в открытом виде. Он всегда зашифрован. Дополнительно пароль никогда не хранится на рабочей станции или сервере в открытом виде.
3. Каждый пользователь имеет пароль, и каждая служба имеет пароль.
4. Единственным устройством, которое знает все пароли, является сервер безопасности. Этот сервер работает под серьезной охраной.
Рассмотрим схему работы сервера безопасности (рис.5.4.):
1. Пользователь вводит имя.
2. Перед вводом пароля выдается через сеть сообщение на сервер аутентификации. Это сообщение содержит имя пользователя вместе с именем Ticket-Granting Server (TGS). Это сообщение не нуждается в шифровании, так как знание имен в сети необходимо всем для электронной почты.
Рис.5.4. Система распределения ключей Secret Net
3. Сервер аутентификации по имени пользователя и имени TGS сервера извлекает из базы данных ключи для каждого из них.
4. Сервер аутентификации формирует ответ, который содержит Ticket (билет), который гарантирует доступ к запрашиваемому серверу. Ticket всегда посылается в закрытом виде. Ticket содержит временную марку и дату создания. Сервер аутентификации шифрует этот ticket , используя ключ TGS сервера (полученного на шаге 3). Это дает sealed ticket (запечатанный билет), который передается на рабочую станцию в зашифрованном виде (на ключе пользователя).
5. Рабочая станция, получив зашифрованное сообщение, выдает запрос на ввод пароля. Пароль пользователя используется внутренним дешифратором для расшифровывания сообщения. Затем ключ пользователя удаляется из памяти. На этот момент на рабочей станции имеется sealed ticket.
Рассмотрим сценарий, когда пользователь хочет воспользоваться некоторой службой сети, например, запросить некий сервер (end server). Каждый запрос этой формы требует, прежде всего, получения ticket для данного сервера.
6. Рабочая станция создает сообщение, состоящее из sealed-ticket, sealed-authenticator и имени сервера, которое посылается TGS. Authenticator состоит из login-name, WS-net-address и текущего времени. Закрытый аутентификатор (sealed-authenticator) получается шифрованием.
7. TGS, получив сообщение, прежде всего, расшифровывает sealed-ticket и sealed-authenticator, используя ключ TGS. Таким образом, TGS получает все параметры для проверки достоверности:
- Login-name,
- TGS-name,
- Сетевой адрес рабочей станции.
Наконец, сравнивается текущее время в authenticator, чтобы определить, что сообщение сформировано недавно. Это требует, чтобы все рабочие станции и сервера держали время в пределах допустимого интервала. TGS по имени сервера из сообщения определяет ключ шифрования сервера.
8. TGS формирует новый ticket, который базируется на имени сервера. Этот ticket шифруется на ключе сервера и посылается на рабочую станцию.
9. Рабочая станция получает сообщение, содержащее sealed-ticket, который она расшифровать не может.
10. Рабочая станция посылает сообщение, содержащее sealed-ticket, sealed-authenticator и имя сервера (сообщение не шифруется).
11. Сервер принимает это сообщение и прежде всего дешифрует sealed-ticket, используя ключ, который только этот сервер и Secret Net знают.
Сервер далее расшифровывает authenticator и делает проверку также как в пункте 7.
Ticket и аутентификаторы являются ключевыми моментами для понимания применения сервера безопасности. Для того, чтобы рабочая станция использовала сервер, требуется билет (ticket). Все билеты, кроме первого, получаются из TGS. Первый билет является специальным: это билет для TGS и он получается из сервера аутентификации.
Билеты, получаемые рабочей станцией, не являются исчерпывающей информацией для нее. Они зашифрованы на ключе сервера, для которого они будут использованы. Каждый билет имеет время жизни. Когда билет уничтожается, пользователь должен идентифицировать себя снова, введя свое имя и пароль. Чтобы выполнить это уничтожение, каждый билет содержит время его создания (выпуска) и количество времени, в течении которого он действителен.
В отличие от билета, который может повторно использоваться, новый аутентификатор требуется каждый раз, когда клиент инициирует новое соединение с сервером. Аутентификатор несет временной штамп (метку), и уничтожается в течение нескольких минут после создания. Вот почему мы предполагаем, что все рабочие станции и серверы должны поддерживать синхронизацию часов. Точность этой синхронизации и размер сети определяют максимум рационального времени жизни аутентификатора.
Сервер должен поддерживать историю предыдущих запросов клиента, для которых временная метка аутентификатора еще действительна (т.е. историю всех запросов внутри последних нескольких минут). Таким образом, сервер может отсечь дубликаты запросов, которые могут возникнуть в результате украденных билетов и аутентификаторов.
Поскольку, как билет, так и аутентификатор содержат сетевой адрес клиента, другая рабочая станция не может использовать украденные копии без изменения их сущности, связанной с сетевым адресом владельца. Далее, поскольку аутентификатор имеет короткое время жизни и действителен только один раз, то взломщик должен проделать это до смерти аутентификатора, обеспечив также уверенность, что оригинальная копия билета и аутентификатора не достигнет нужного конечного сервера, и модифицировать их сетевой адрес, чтобы выглядеть как истинный клиент.
Поскольку сервер подтверждает запрос клиента на обслуживание, то клиент и сервер разделяют одинаковый ключ шифрования. При желании клиент и сервер могут шифровать все данные их сессии, используя этот ключ, или они могут выбрать не шифровать данные вообще.
Поскольку сервер удостоверил клиента, остальные шаги служат для удостоверения сервера. Это решает проблему неперсонифицированного вторжения в качестве сервера (т.е. подмены сервера). Клиент в этом случае требует, чтобы сервер послал назад сообщение, состоящее из временного штампа и аутентификатора клиента вместе со значением временной марки. Это сообщение зашифровано. Если сервер поддельный, он не знает действительного ключа шифрования сервера.
Таким образом, вторгнуться в систему можно только тогда, когда взломщик может узнать имя и пароль клиента.