Yahalom

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Значения

Криптографические обозначения, используемые в протоколах проверки подлинности и обмена ключами
AИдентификаторы Алисы (Alice), инициатора сессии
BИдентификатор Боба (Bob), стороны, с которой устанавливается сессия
TИдентификатор Трента (Trent), доверенной промежуточной стороны
KA,KB,KTОткрытые ключи Алисы, Боба и Трента
KA1,KB1,KT1Секретные ключи Алисы, Боба и Трента
EA,{...}KAШифрование данных ключом Алисы, либо совместным ключом Алисы и Трента
EB,{...}KBШифрование данных ключом Боба, либо совместным ключом Боба и Трента
{...}KB1,{...}KA1Шифрование данных секретными ключами Алисы, Боба (цифровая подпись)
IПорядковый номер сессии (для предотвращения атаки с повтором)
KСлучайный сеансовый ключ, который будет использоваться для симметричного шифрования данных
EK,{...}KШифрование данных временным сеансовым ключом
TA,TBМетки времени, добавляемые в сообщения Алисой и Бобом соответственно
RA,RBСлучайные числа (nonce), которые были выбраны Алисой и Бобом соответственно

Yahalom — симметричный протокол распределения ключей с доверенным сервером. Протокол Yahalom можно рассматривать как улучшенную версию протокола Wide-Mouth Frog. Данный протокол «перекладывает» генерацию нового сессионного ключа на сторону доверенного центра, а также использует случайные числа для защиты от атак повторомШаблон:Sfn.

Описание

Взаимодействие участников протокола Yahalom

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

(1)Alice{A,RA}Bob
(2)Bob{B,EB(A,RA,RB)}Trent
(3)Trent{EA(B,K,RA,RB),EB(A,K)}Alice
(4)Alice{EB(A,K),EK(RB)}Bob

Первым сообщение Алиса инициирует сеанс, пересылая Бобу свой идентификатор A и некоторое случайное число RA:

(1)Alice{A,RA}Bob

Получив сообщение от Алисы, Боб объединяет идентификатор Алисы A, случайное число Алисы RA и своё случайное число RB и шифрует созданное сообщение общим с Трентом ключом. После добавления к этому сообщению своего идентификатора B Боб отправляет полученное сообщение Тренту:

(2)Bob{B,EB(A,RA,RB)}Trent

Трент расшифровывает сообщение сообщение Боба и создаёт два сообщения. Первое сообщение включает в себя идентификатор Боба B, сгенерированный Трентом сессионный ключ K, случайное число Алисы RA и случайное число Боба RB. Данное сообщение шифруется общим с Алисой ключом. Первое сообщение имеет вид:

{EA(B,K,RA,RB)}

Второе сообщение шифруется общим ключом для Трента и Боба и включает в себя идентификатор Алисы A и сгенерированный Трентом сессионный ключ K. Второе сообщение имеет вид:

{EB(A,K)}

Трент пересылает Алисе оба созданные сообщения:

(3)Trent{EA(B,K,RA,RB),EB(A,K)}Alice

Алиса получает два сообщения от Трента и расшифровывает первое из них. Расшифровав сообщение, Алиса извлекает сессионный ключ K и убеждается, что случайное число переданное Трентом RA совпадает со случайном числом переданным Бобу на первом этапе . После этого Алиса отправляет два сообщения Бобу. Первое сообщение является полученное от Трента сообщением, зашифрованным общим ключом для Трента и Боба. Данное сообщение состоит из идентификатора Алисы A и сессионного ключа K:

{EB(A,K)}

Второе сообщение является зашифрованным с помощью сгенерированного Трентом сессионного ключа случайное число Боба RB:

{EK(RB)}

Оба сообщения Алиса отправляет Бобу:

(4)Alice{EB(A,K),EK(RB)}Bob

Боб расшифровывает первое сообщение и извлекает сессионный ключ K. С помощью извлечённого сессионного ключа Боб расшифровывает второе сообщение и получает случайное число RB. Боб сверяет полученное от Алисы число со случайным числом отправленным на втором этапе. После описанных действий стороны могут использовать новый сессионный ключ KШаблон:Sfn}.

Протокол Yahalom помимо генерации сессионного ключа обеспечивает аутентификацию сторон:

  • Аутентификация Алисы перед Бобом происходит на четвёртом этапе (4), когда Боб может проверить возможность Алисы зашифровать известные только ей и Тренту случайное число RA на ключе K.
  • Аутентификация Боба перед Алисой происходи на третьем этапе (3), когда Трент показывает Алисе, что он получил случайное число RA именно от Боба (поскольку в сообщении присутствует идентификатор Боба B)Шаблон:Sfn.

В результате протокола Yahalom Алиса и Боб убеждены, что общаются друг с другом, а не с неизвестной третьей стороной. В отличие от протокола Wide-Mouth Frog стороны имеют возможность убедиться, что промежуточный сервер генерирует общий секретный ключ именно для них двоих, а не для какой-то третьей стороны (хотя от полной компрометации доверенной стороны этот протокол не защищает)Шаблон:Sfn.

Уязвимости протокола

Протокол Yahalom имеет ряд уязвимостей, которыми могут воспользоваться злоумышленники.

  • В рамках протокола Боб никак не продемонстрировал, что он успешно получил новый сессионный ключ K и может им пользоваться. Сообщение от Алисы на четвёртом этапе (4) могло быть перехвачено или изменено злоумышленниками. Но никакого ответа Алиса от Боба уже не ожидает и уверена, что протокол завершился успешно.
  • На третьем этапе (3) Трент не включает случайное число RB в сообщение {EB(A,K)}, что позволяет Алисе заставить Боба принять старый сессионный ключШаблон:Sfn. При этом протокол будет выглядеть следующем образом:
(1)Alice{A,RA}Bob
(2)Bob{B,EB(A,RA,RB)}Trent

Трент генерирует новый сессионный ключ K

(3)Trent{EA(B,K,RA,RB),EB(A,K)}Alice

Алиса использует старый сессионный ключ K* и отправляет сообщение

EB(A,K*) из старого сеанса протокола(4)Alice{EB(A,K*),EK(RB)}Bob

Модификация протокола

В статье 1989 году Берроуз (англ. Michael Burrows), Абади (англ. Martin Abadi), Нидхэм (англ. Roger Needham) предложили свой вариант протокола Yahalom:

(1)Alice{A,RA}Bob
(2)Bob{B,RB,EB(A,RA)}Trent
(3)Trent{RB,EA(B,K,RA),EB(A,K,RB)}Alice
(4)Alice{EB(A,K,RB),EK(RB)}Bob

В данном варианте протокола нет необходимости использовать несертифицированный ключ, поскольку своевременность последнего сообщения гарантируется случайным числом RB. Исчезает необходимость шифрования случайного числа Боба RB на втором этапе (2) и в первом сообщении третьего этапа (3). В результате получается тот же результат, но с меньшим количеством шифрованияШаблон:Sfn.

Примечания

Шаблон:Примечания

Литература

Шаблон:Протоколы аутентификации и обмена ключами