Протоколы аутентифицированного распределения ключей

Рассматриваемые в этом разделе протоколы имеют трех участников: пользователи А, В и сервер S. Цель протоколов – генерация и безопасная передача сервером S ключа парной связи Kab пользователям А и В. Безопасность включает свойства конфиденциальности, целостности, аутентичности и “свежести”. Это означает, что в результате протокола подлинный ключ Kab должен оказаться именно у А и В, и только у них. Свойство “свежести” означает, что участники протокола имеют возможность убедиться, что принимаемые сообщения сформированы в данном запуске протокола, а не взяты из параллельного или более раннего протокола. С этой целью используются “нонсы” Na и Nb – случайные числа одноразового использования.

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

6.1. Протокол передачи ключа с квитированием

В данном протоколе используется криптосистема RSA (типа RSA) для передачи по каналу ключей парной связи с ЭЦП, шифрованием и квитированием. Алгоритмы шифрования / расшифрования пользователей А, В, С обозначаются через (Еа, Da), (Eb, Db), (Ec, Dc), причем все алгоритмы шифрования считаются открытыми, а каждый алгоритм расшифрования является секретом пользователя. Подписывание осуществляется применением алгоритма D, а проверка подписи – применением алгоритма Е. Авторизованный пользователь С играет роль противника. Для упрощения обозначений будем писать EDK вместо E(D(K)).

Формальная запись протокола:

A: ДСЧ(А) clip_image002 Kab; EbDaKab=Х; [A║B║X] clip_image004каналclip_image004[1][clip_image006clip_image008clip_image010]clip_image004[2]B

B: clip_image008[1]=B(?); EaDbclip_image012=clip_image014clip_image002[1]КЗУ(В); EaDbclip_image016=Y; [Bclip_image006[1]Y]clip_image004[3]

Þ канал clip_image004[4][ clip_image018clip_image020 clip_image022]clip_image004[5]A

A: clip_image018[1]=B(?); clip_image020[1]=A(?); EbDaclip_image022[1]=clip_image026;clip_image027= Kab (?); Kab clip_image002[2] КЗУ(A)

Знаки “~” и “__” означают возможность модификации сообщений канальными ошибками или противником в направлениях Аclip_image002[3]В и Вclip_image002[4]А. Предположим, что протокол Аclip_image002[5]В проходит в отсутствии модификаций так, что Y= EaDbKab , но нарушитель С перехватывает квитанцию Y и начинает свой протокол Сclip_image002[6]А.

С: AY] clip_image004[6] A

A: A= A(?); Ec Da Y= Ec Db Kabºclip_image029clip_image002[7]КЗУ); Ec Daclip_image030=Z;

[ACZ] clip_image004[7]C

C: Ea Dc Z=clip_image031clip_image002[8]КЗУ (C); Eb Dcclip_image031[1]= EbDcEcDbKab=Kabclip_image002[9]КЗУ(C)

В результате С узнает ключ Kab и формирует с А ключ clip_image032 с отклонением от протокола, чего пользователь А не замечает.

6.2. Протокол Отвэй-Рис [5,6].

Идея протокола в словах описывается следующим образом (Рис. 9):

– Пользователь А, инициатор протокола, передает В шифрованный нонс Na для сервера S; пользователь В пересылает его S, добавив свой шифрованный нонс Nb.

– Cервер S генерирует ключ Kab и передает его В на ключе Kbs для В и на ключе Kas для А.

– Пользователь В расшифровывает Kab, проверяет нонс Nb и пересылает А его часть сообщения.

– Пользователь А расшифровывает ключ Kab и проверяет нонс Nа.

[AIIBIIKas{NaIIAIIB}] [AIIBIIKas{NaIIAIIB}IIKbs{NbIIAIIB}]

clip_image034

Kas{NaIIKab} Kbs{Kas{NaIIKab}IINbIIKab}

Рис.9

Атака. Предполагается, что модификации в канале отсутствуют, так что в формальном описании Знаки ”~” и “__” можно опустить. Противник Eb вмешивается в протокол только на последнем этапе, где вместо Kas{Na÷çKab} подставляет Kas{Na÷çA÷çB}, выделенное из первого сообщения. В результате А идентифицирует Eb как В и принимает комбинацию [A÷çB] в качестве ключа Kab, поскольку по протоколу не предусматривается, например, сравнение разрядностей чисел или анализа ключа Kab на случайность.

6.3. Протокол Нейман – Стаблбайн [6]

Словесное описание протокола:

– Пользователь А передает В свой нонс Na в открытом виде.

– Пользователь В шифрует на ключе Kbs нонс Na, свою отметку времени Тb и посылает серверу S вместе со своим нонсом Nb, который вернется к В от А в шифрованном виде на ключе Kab и будет проверен.

– Сервер S генерирует ключ Kab, шифрует его для А и В, но оба шифрованных сообщения отправляются к А с открытым нонсом Nb.

– Пользователь А выделяет соответствующую часть для В и посылает В вместе с Kab{Nb}, для проверки “свежести” полученного ключа Kab (Рис.10).

clip_image036Рис.10

Атака. Противник Еа запускает протокол, выбрав число Na по своему усмотрению, из сообщения Вclip_image002[10]S выделяет Nb и Kbs{ANaТb}, игнорирует сообщение Sclip_image002[11]Еа, составляет и посылает В последнее сообщение протокола: [Kbs{ANaТb}Na{Nb}], где вторая часть есть нонс Nb, шифрованный на Na, как на ключе. В этом сообщении роль Kab играет Na. Протокол не предусматривает проверок признаков ключа, а потому Na будет принято В как ключ парной связи Kab (заданный противником Еа).

Из литературы известны также другие аналогичные протоколы аутентифицированного распределения ключей, каждый со своими дефектами. Эти протоколы имеют названия:

– Протокол BANY (Барроу, Абади, Нидхэм, Яглом) [7].

– Протокол Нидхэм – Шрёдер [6].

– Протокол “Керберос” (“Цербер”) [5], и т.д.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100