Распределение ключей
Метод проверки подлинности секретного ключа не объясняет, как клиент и сервер получают секретный ключ сеанса использовать в сеансах друг с другом. Если они люди, они могут встретиться в секрете и согласиться с ключом. Но если клиент является программой, работающей на рабочей станции, и сервер является службой, работающей на сетевом сервере, этот метод не будет работать.
Клиент хочет взаимодействовать с многими серверами и будет нуждаться в разных ключах для каждого из них. Сервер взаимодействует со многими клиентами и нуждается в разных ключах для каждого из них. Если каждому клиенту нужен другой ключ для каждого сервера, и каждому серверу нужен другой ключ для каждого клиента, распределение ключей становится проблемой. Кроме того, необходимость хранить и защищать многие ключи на многих компьютерах создает огромный риск безопасности.
Имя протокола kerberos предлагает решение проблемы распределения ключей. Керберос (или Серберус) был фигурой в классической греческой мифологии - ожесточенной, трехглавой собакой, которая продолжала жить злоумышленниками от входа в подземную жизнь. Как и мифическая гвардия, протокол Kerberos имеет три головы: клиент, сервер и доверенное стороне для посредника между ними. Доверенный посредник в этом протоколе является центром распространения ключей (KDC).
KDC — это служба, запущенная на физическо защищенном сервере. Она поддерживает базу данных с сведениями об учетной записи для всех субъектов безопасности в своей области. Область — это эквивалент Kerberos домена в Windows.
Наряду с другими сведениями о каждом субъекте безопасности KDC сохраняет криптографический ключ, известный только субъекту и KDC. Это главный ключ, используемый в обмене между каждым субъектом безопасности и KDC. В большинстве реализаций протокола Kerberos этот главный ключ является производным с помощью функции хэша хэша из пароля субъекта безопасности.
Когда клиент хочет создать безопасное соединение с сервером, клиент начинается с отправки запроса в KDC, а не на сервер, который он хочет достичь. KDC создает и отправляет клиенту уникальный ключ сеанса для клиента и сервера для проверки подлинности друг друга. KDC имеет доступ как к главному ключу клиента, так и к главному ключу сервера. KDC шифрует копию ключа сеанса сервера с помощью главного ключа сервера и копирования клиента с помощью главного ключа клиента.
KDC может выполнять свою роль в качестве доверенного посредника, отправив ключ сеанса непосредственно каждому из участвующих субъектов безопасности, но на практике эта процедура не будет работать по ряду причин. Вместо этого KDC отправляет оба зашифрованных ключа сеанса клиенту. Ключ сеанса для сервера включен в билет сеанса.