Ранее мы уже рассматривали аспекты сетевого взаимодействия между двумя компьютерами (клиентом и сервером) с помощью общего симметричного ключа, применяемого для шифрования данных. В данном случае нас интересует метод распространения общего ключа.
Здесь на сцене возникает центр распространения ключей (KDC — Key Distribution Center). Этот центр включает в себя службу, которая выполняется на всех контроллерах домена Windows, генерирует общие ключи для клиента/сервера и передает их клиентам в зашифрованной форме.
Центр KDC отвечает на запрос клиента к серверу, отправляя обоим копии сеансового ключа (один для клиента, а второй для сервера — это один и тот же ключ, однако передается в пакетах различных типов). Копия сеансового ключа клиента шифруется с помощью общего ключа, передаваемого клиенту центром KDC. Копия сеансового ключа сервера встраивается вместе с данными авторизации клиента в модуль данных, который называется билетом сеанса (session ticket). Вся структура данных затем шифруется с помощью общего ключа, передаваемого серверу центром KDC. Билет сеанса (в котором хранится защищенный ключ сеанса сервера) передается в управление клиенту до тех пор, пока не будет организовано соединение с сервером.
Клиент извлекает сеансовый ключ с помощью общего ключа, переданного центром KDC. При этом извлекается билет сеанса сервера (клиент не может расшифровать билет, поскольку не знает ключа, известного серверу и KDC). Эта информация хранится в защищенном клиентском кэше (содержимое которого никогда не записывается на жесткий диск). Когда клиент должен связаться с сервером, он отправляет серверу свое имя и локальное время, зашифрованные с помощью общего ключа (который извлекался ранее). Кроме того, серверу передается билет сеанса. Затем сервер проводит дешифрацию билета сеанса с помощью общего ключа, переданного центром KDC, извлекает сеансовый ключ сеанса и дешифрует данные аутентификации клиента. Получив всю информацию, сервер передает клиенту сведения о локальном времени рабочей станции, зашифрованные вместе с сеансовым ключом.
Все это означает, что сервер не должен хранить сеансовые ключи для клиентов; обязанность клиента заключается в отправке билета сеанса сервера непосредственно самому серверу при сетевом взаимодействии систем.
Билеты сеанса остаются действительными в течении определенного периода времени, который устанавливается политикой Kerberos. Этот период времени обычно равен восьми часам (время регистрации в системе, принятое по умолчанию), поэтому связь с центром KDC не организовывается каждый раз, когда клиенту необходимо подключиться к серверу; клиент лишь кэширует билет сеанса, который остается действительным в течение одного дня.
А как же распространяются ключи длительного хранения сервер–KDC и клиент–KDC? Ответ на этот вопрос приводится в следующем разделе.