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

Криптографические обозначения, используемые в протоколах проверки подлинности и обмена ключами
Идентификаторы Алисы (Alice), инициатора сессии
Идентификатор Боба (Bob), стороны, с которой устанавливается сессия
Идентификатор Трента (Trent), доверенной промежуточной стороны
Открытые ключи Алисы, Боба и Трента
Секретные ключи Алисы, Боба и Трента
Шифрование данных ключом Алисы, либо совместным ключом Алисы и Трента
Шифрование данных ключом Боба, либо совместным ключом Боба и Трента
Шифрование данных секретными ключами Алисы, Боба (цифровая подпись)
Порядковый номер сессии (для предотвращения атаки с повтором)
Случайный сеансовый ключ, который будет использоваться для симметричного шифрования данных
Шифрование данных временным сеансовым ключом
Метки времени, добавляемые в сообщения Алисой и Бобом соответственно
Случайные числа (nonce), которые были выбраны Алисой и Бобом соответственно

Описание править

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

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

 
 
 
 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

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

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

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

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

  • В рамках протокола Боб никак не продемонстрировал, что он успешно получил новый сессионный ключ   и может им пользоваться. Сообщение от Алисы на четвёртом этапе   могло быть перехвачено или изменено злоумышленниками. Но никакого ответа Алиса от Боба уже не ожидает и уверена, что протокол завершился успешно.
  • На третьем этапе   Трент не включает случайное число   в сообщение  , что позволяет Алисе заставить Боба принять старый сессионный ключ[3]. При этом протокол будет выглядеть следующем образом:
 
 

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

 

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

  из старого сеанса протокола 

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

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

 
 
 
 

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

Примечания править

Литература править

  • Владимиров С.М. и др. Учебное пособие по защите информации кафедры радиотехники и систем управления МФТИ (6 сентября 2013).
  • Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — Триумф, 2002. — 816 с. — ISBN 5-89392-055-4.
  • Lawrence. Relations Between Secrets: Two Formal Analyses of the Yahalom Protocol (англ.) // Journal of Computer Security. — Computer Laboratory, University of Cambridge, Pembroke Street, Cambridge CB2 3QG, UK., 2001. — Vol. 9, iss. 1 July 2001, no. 3. — P. 197—216. — doi:10.3233/JCS-2001-9302.
  • M. Burrows, M. Abadi, R. Needham. A Logic of Authentication (англ.). — Digital Equipment Corp. Systems Research Center, 1989.