Поддержи Openmeetings

среда, 5 марта 2014 г.

Kerberos — оптимальный и безопасный сетевой протокол аутентификации

Протокол Kerberos был создан в Массачусетском технологическом институте, как вспомогательный для проекта Athena. Распространяться под свободной лицензией реализация этого протокола стала после выхода 4-й версии. В связи с нахождением уязвимости, авторы внесли поправки и представили следующий релиз — Kerberos 5, который и был принят как стандарт IETF. Протокол идеально подходит для использования в интернете и локальных сетях. О Kerberos 5 далее и пойдет речь.

Основные понятия

Авторизация — процесс определения правомочности использования клиентом определенной услуги, перечня доступных объектов, а также разрешенных видов доступа.

Аутентификатор — запись, содержащая информацию, про которую можно доказать, что она была недавно сгенерирована с использованием сеансового ключа, известного только субъектам — участникам защищенного соединения.

Аутентификационный заголовок — запись, содержащая билет и удостоверение. Эта запись будет представлена серверу в процессе проверки подлинности.

Аутентификация, проверка подлинности — проверка того, что субъект является тем, за кого он себя выдает.

Билет — запись, помогающая клиенту доказать серверу свою подлинность. Билет содержит сведения о клиенте, сеансовый ключ, временной штамп и другую информацию. На билете ставится печать с помощью секретного ключа сервера. Билет действителен только вместе со свежим аутентификатором.

Билет на билеты (Ticket-Granting Ticket, TGT) — билет к серверу выдачи билетов (Ticket-Granting Server, TGS), позволяющий получать билеты к другим серверам.

Доверенность — документ, дающий предъявителю право на доступ к определенным объектам или услугам. В системе Kerberos это может быть билет, использование которого ограничено содержимым поля авторизации. К билету должен прилагаться сеансовый ключ.

Идентификатор субъекта — имя, используемое для уникальной идентификации субъекта.

Клиент — процесс, использующий сетевые сервисы от имени пользователя. Отметим, что в некоторых случаях сервер сам может являться клиентом некоторого другого сервера, например, сервер печати может пользоваться услугами файлового сервера.

Печать — средство, позволяющее так зашифровать запись, содержащую несколько полей, что замена отдельных полей станет невозможна без знания ключа шифрования — иначе подмена будет обнаружена.

Сеансовый ключ — временный ключ шифрования, используемый двумя субъектами. Время жизни такого ключа ограничено одним сеансом работы в системе.

Секретный ключ — ключ шифрования, разделяемый субъектом и KDC и используемый длительное время. В случае, когда субъектом является пользователь, секретный ключ вычисляется по паролю.

Сервер — субъект, предоставляющий ресурсы сетевым клиентам.

Сервис — ресурс, предоставляемый сетевым клиентам. Зачастую может поддерживаться несколькими серверами, например, сервис удаленных файлов.

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

Субъект доступа (Kerberos principal, корреспондент, абонент безопасности) — пользователь, клиент или сервер, имеющий уникальное имя и участвующий в сетевом общении. В описании алгоритма два субъекта, участвующие в сетевом общении, называются Алиса и Борн.

Удостоверение — совокупность билета и секретного сеансового ключа, необходимого для успешного использования билета в процессе проверки подлинности.

Центр распределения билетов (Key Distribution Center, KDC) — сетевой сервис, предоставляющий билеты и временные сеансовые ключи, или конкретный сервер, оказывающий данную услугу, или хост — компьютер, на котором функционирует этот сервер.

Когда корреспондентов много, нужно безопасно хранить их уникальные аутентификаторы. Центр распределения ключей исполняет роль такого хранилища. Эта служба управляет базой данных с информацией об учетных записях всех субъектов безопасности. Вместе с данными о каждом субъекте в базе данных KDC хранится уникальный криптографический ключ. Это долговременный ключ, который используется для связи пользователя системы безопасности с центром распределения ключей и аутентификации пользователя.

KDC обслуживает запросы на начальный билет, а соответствующий компонент иногда называют сервером начальной аутентификации — Authentication Server, AS, и на билеты к конкретным серверам — этот компонент именуют сервером выдачи билетов — TGS.

Цербер (Kerberos) — не только мифологический трехголовый пес, охранявший подземное царство, но и название сервиса проверки подлинности для проекта Афина (Массачусетский технологический институт), протокол, используемый этим сервисом, а также программная реализация сервиса аутентификации. Трём головам этого пса в протоколе соответствуют три участника безопасного сетевого соединения: клиент (Алиса), сервер (Борн) и доверенный посредник между ними (KDC).

Теоретическая основа

Алгоритм работы протокола основывается на простой идее общего секрета двух участников общения. Если есть секрет, известный только двоим, любой из них может легко удостовериться, что имеет дело именно со своим напарником. Для этого ему достаточно каким-либо способом проверить, знает ли собеседник их общий секрет.

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

Таким образом, задача аутентификации сводится к задаче получения общего ключа для Алисы и Борна. Эту задачу решает алгоритм Нидхема-Шредера.

Алгоритм Нидхема-Шредера

Однако долговременный общий ключ необходимо как-то получить в незащищенной среде, где передаваемые пакеты могут быть перехвачены и изменены. Эта проблема решается в протоколе Kerberos с помощью третьей стороны, которой доверяют оба участника.

Алиса инициирует обмен, отправляя доверенной стороне запрос на получение ключа для общения с Борном. Третья сторона сначала проверяет подлинность Алисы путем обмена несколькими сообщениями, зашифрованными одноразовым ключом, и после отправляет Алисе сообщение из двух частей: одна часть зашифрована ключом Алисы, другая — ключом Борна (Алиса не может её расшифровать). Обе части содержат долговременный ключ, но во второй части ещё есть метка времени от третьей стороны.

Алиса получает это сообщение, и формирует сообщение для Борна. Первая часть содержит данные об Алисе и ее временную метку, а вторая часть берётся из полученного ответа от третьей стороны. Первая часть зашифрована общим долговременным ключом.

Борн получает запрос и расшифровывает вторую часть. Таким образом, он получает долговременный ключ. После этого, используя полученный ключ, Борн расшифровывает первую часть. Сравнивая временные метки из первой и второй части, Борн решает, можно ли доверять Алисе. После этого он отправляет Алисе данные о себе и временную метку Алисы плюс один.

Алиса расшифровывает ответ от Борна и проверяет временную метку. Таким образом, Алиса и Борн надежно аутентифицируют друг друга и получают долговременный ключ. Анализатор пакетов может перехватить одноразовый ключ, но воспользоваться им уже никто не сможет из-за короткого срока его действия.

Практика

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

Если контроллер домена настроен на аутентификацию с помощью Kerberos, первый шаг алгоритма выглядит следующим образом. Пользователь включает компьютер, вводит логин и пароль. Клиентский ПК преобразует хэш пароля в секретный ключ и посылает его третьей стороне. Таким образом, процедуре аутентификации подвергается не компьютер, а его пользователь. Замечательной чертой протокола является то, что пароль пользователя не передается по сети.

Заключение

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

3 комментария :

Alexei комментирует...

влияет ли открытость кода протокола на его безопасность?

Alexei комментирует...

Большей чуши в жизни не читал

Alexei комментирует...

Конструктивненько пишем, Руслан

Отправить комментарий