Yahalom

У этого термина существуют и другие значения, см. Яхалом (значения).
Криптографические обозначения, используемые в протоколах проверки подлинности и обмена ключами
A {\displaystyle A} Идентификаторы Алисы (Alice), инициатора сессии
B {\displaystyle B} Идентификатор Боба (Bob), стороны, с которой устанавливается сессия
T {\displaystyle T} Идентификатор Трента (Trent), доверенной промежуточной стороны
K A , K B , K T {\displaystyle K_{A},K_{B},K_{T}} Открытые ключи Алисы, Боба и Трента
K A 1 , K B 1 , K T 1 {\displaystyle K_{A}^{-1},K_{B}^{-1},K_{T}^{-1}} Секретные ключи Алисы, Боба и Трента
E A , { . . . } K A {\displaystyle E_{A},\left\{...\right\}_{K_{A}}} Шифрование данных ключом Алисы, либо совместным ключом Алисы и Трента
E B , { . . . } K B {\displaystyle E_{B},\left\{...\right\}_{K_{B}}} Шифрование данных ключом Боба, либо совместным ключом Боба и Трента
{ . . . } K B 1 , { . . . } K A 1 {\displaystyle \left\{...\right\}_{K_{B}^{-1}},\left\{...\right\}_{K_{A}^{-1}}} Шифрование данных секретными ключами Алисы, Боба (цифровая подпись)
I {\displaystyle I} Порядковый номер сессии (для предотвращения атаки с повтором)
K {\displaystyle K} Случайный сеансовый ключ, который будет использоваться для симметричного шифрования данных
E K , { . . . } K {\displaystyle E_{K},\left\{...\right\}_{K}} Шифрование данных временным сеансовым ключом
T A , T B {\displaystyle T_{A},T_{B}} Метки времени, добавляемые в сообщения Алисой и Бобом соответственно
R A , R B {\displaystyle R_{A},R_{B}} Случайные числа (nonce), которые были выбраны Алисой и Бобом соответственно

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

Описание

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

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

( 1 ) A l i c e { A , R A } B o b {\textstyle (1)Alice\to \left\{A,R_{A}\right\}\to Bob}
( 2 ) B o b { B , E B ( A , R A , R B ) } T r e n t {\textstyle (2)Bob\to \left\{B,E_{B}(A,R_{A},R_{B})\right\}\to Trent}
( 3 ) T r e n t { E A ( B , K , R A , R B ) , E B ( A , K ) } A l i c e {\textstyle (3)Trent\to \left\{E_{A}(B,K,R_{A},R_{B}),E_{B}\left(A,K\right)\right\}\to Alice}
( 4 ) A l i c e { E B ( A , K ) , E K ( R B ) } B o b {\textstyle (4)Alice\to \left\{E_{B}(A,K),E_{K}(R_{B})\right\}\to Bob}

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

( 1 ) A l i c e { A , R A } B o b {\displaystyle (1)Alice\to \left\{A,R_{A}\right\}\to Bob}

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

( 2 ) B o b { B , E B ( A , R A , R B ) } T r e n t {\displaystyle (2)Bob\to \left\{B,E_{B}(A,R_{A},R_{B})\right\}\to Trent}

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

{ E A ( B , K , R A , R B ) } {\displaystyle \left\{E_{A}(B,K,R_{A},R_{B})\right\}}

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

{ E B ( A , K ) } {\displaystyle \left\{E_{B}(A,K)\right\}}

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

( 3 ) T r e n t { E A ( B , K , R A , R B ) , E B ( A , K ) } A l i c e {\displaystyle (3)Trent\to \left\{E_{A}(B,K,R_{A},R_{B}),E_{B}\left(A,K\right)\right\}\to Alice}

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

{ E B ( A , K ) } {\displaystyle \left\{E_{B}(A,K)\right\}}

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

{ E K ( R B ) } {\displaystyle \left\{E_{K}(R_{B})\right\}}

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

( 4 ) A l i c e { E B ( A , K ) , E K ( R B ) } B o b {\displaystyle (4)Alice\to \left\{E_{B}(A,K),E_{K}(R_{B})\right\}\to Bob}

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

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

  • Аутентификация Алисы перед Бобом происходит на четвёртом этапе ( 4 ) {\displaystyle (4)} , когда Боб может проверить возможность Алисы зашифровать известные только ей и Тренту случайное число R A {\displaystyle R_{A}} на ключе K {\displaystyle K} .
  • Аутентификация Боба перед Алисой происходи на третьем этапе ( 3 ) {\displaystyle (3)} , когда Трент показывает Алисе, что он получил случайное число R A {\displaystyle R_{A}} именно от Боба (поскольку в сообщении присутствует идентификатор Боба B {\displaystyle B} )[1].

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

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

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

  • В рамках протокола Боб никак не продемонстрировал, что он успешно получил новый сессионный ключ K {\displaystyle K} и может им пользоваться. Сообщение от Алисы на четвёртом этапе ( 4 ) {\displaystyle (4)} могло быть перехвачено или изменено злоумышленниками. Но никакого ответа Алиса от Боба уже не ожидает и уверена, что протокол завершился успешно.
  • На третьем этапе ( 3 ) {\displaystyle (3)} Трент не включает случайное число R B {\displaystyle R_{B}} в сообщение { E B ( A , K ) } {\displaystyle \left\{E_{B}(A,K)\right\}} , что позволяет Алисе заставить Боба принять старый сессионный ключ[3]. При этом протокол будет выглядеть следующем образом:
( 1 ) A l i c e { A , R A } B o b {\displaystyle (1)Alice\to \left\{A,R_{A}\right\}\to Bob}
( 2 ) B o b { B , E B ( A , R A , R B ) } T r e n t {\displaystyle (2)Bob\to \left\{B,E_{B}(A,R_{A},R_{B})\right\}\to Trent}

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

( 3 ) T r e n t { E A ( B , K , R A , R B ) , E B ( A , K ) } A l i c e {\displaystyle (3)Trent\to \left\{E_{A}(B,K,R_{A},R_{B}),E_{B}(A,K)\right\}\to Alice}

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

E B ( A , K ) {\displaystyle E_{B}(A,K^{*})} из старого сеанса протокола ( 4 ) A l i c e { E B ( A , K ) , E K ( R B ) } B o b {\displaystyle (4)Alice\to \left\{E_{B}(A,K^{*}),E_{K}(R_{B})\right\}\to Bob}

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

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

( 1 ) A l i c e { A , R A } B o b {\displaystyle (1)Alice\to \left\{A,R_{A}\right\}\to Bob}
( 2 ) B o b { B , R B , E B ( A , R A ) } T r e n t {\displaystyle (2)Bob\to \left\{B,R_{B},E_{B}(A,R_{A})\right\}\to Trent}
( 3 ) T r e n t { R B , E A ( B , K , R A ) , E B ( A , K , R B ) } A l i c e {\displaystyle (3)Trent\to \left\{R_{B},E_{A}(B,K,R_{A}),E_{B}\left(A,K,R_{B}\right)\right\}\to Alice}
( 4 ) A l i c e { E B ( A , K , R B ) , E K ( R B ) } B o b {\displaystyle (4)Alice\to \left\{E_{B}(A,K,R_{B}),E_{K}(R_{B})\right\}\to Bob}

В данном варианте протокола нет необходимости использовать несертифицированный ключ, поскольку своевременность последнего сообщения гарантируется случайным числом R B {\displaystyle R_{B}} . Исчезает необходимость шифрования случайного числа Боба R B {\displaystyle R_{B}} на втором этапе ( 2 ) {\displaystyle (2)} и в первом сообщении третьего этапа ( 3 ) {\displaystyle (3)} . В результате получается тот же результат, но с меньшим количеством шифрования[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.
Перейти к шаблону «Протоколы аутентификации и обмена ключами»
С симметричными алгоритмами
С симметричными и
асимметричными алгоритмами
Протоколы и сервисы, используемые в интернете