Yahalom

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Криптографические обозначения, используемые в протоколах проверки подлинности и обмена ключами
A Идентифкаторы Алисы (Alice), инициатора сессии
B Идентифкатор Боба (Bob), стороны, с которой устанавливается сессия
T Идентифкатор Трента (Trent), доверенной промежуточной стороны
K_A, K_B, K_T Открытые ключи Алисы, Боба и Трента
K_A^{-1}, K_B^{-1}, K_T^{-1} Секретные ключи Алисы, Боба и Трента
E_A, \left\{...\right\}_{K_A} Шифрование данных ключом Алисы, либо совместным ключом Алисы и Трента
E_B, \left\{...\right\}_{K_B} Шифрование данных ключом Боба, либо совместным ключом Боба и Трента
\left\{...\right\}_{K_B^{-1}}, \left\{...\right\}_{K_A^{-1}} Шифрование данных секретными ключами Алисы, Боба (цифровая подпись)
I Порядковый номер сессии (для предотвращения атаки с повтором)
K Случайный сеансовый ключ, который будет использоваться для симетричного шифрования данных
E_K, \left\{...\right\}_{K} Шифрование данных временным сеансовым ключом
T_A, T_B Метки времени, добавляемые в сообщения Алисой и Бобом соответственно
R_A, R_B Случайные числа (nonce), которые были выбраны Алисой и Бобом соответственно

Yahalom — симметричный протокол распределения ключей с доверенным сервером:

  1. Alice \to \left\{ A, R_A \right\} \to Bob
  2. Bob \to \left\{ B, E_B \left( A, R_A, R_B \right) \right\} \to Trent
  3. Trent \to \left\{ E_A \left( B, K, R_A, R_B \right) \right\} \to Alice
  4. Trent \to \left\{ E_B \left( A, K \right) \right\} \to Alice
  5. Alice \to \left\{ E_B \left( A, K \right) \right\} \to Bob
  6. Alice \to \left\{ E_K \left( R_B \right) \right\} \to Bob

Для начала сеанса Алиса пересылает Бобу свой идентификатор A и некоторое случайное число R_A:

Alice \to \left\{ A, R_A \right\} \to Bob

Боб дополняет принятое сообщение своим случайным числом R_B, шифрует это общим ключом с Трентом (доверенная сторона) и, добавив свой идентификатор B, отправляет Тренту:

Bob \to \left\{ B, E_B \left( A, R_A, R_B \right) \right\} \to Trent

Промежуточная сторона Трент генерирует два сообщения. Первое состоит из идентификатора Боба B, случайного сеансового ключа K (генерируется Трентом) и случайных чисел Алисы и Боба R_A, R_B, при этом все данные зашифрованы общим ключом Алисы и Трента. Второе сообщение состоит из идентификатора Алисы A и сеансового ключа K, само сообщение зашифровано общим ключом Боба и Трента. Оба сообщения посылаются Алисе:

Trent \to \left\{ E_A \left( B, K, R_A, R_B \right) \right\} \to Alice
Trent \to \left\{ E_B \left( A, K \right) \right\} \to Alice

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

Alice \to \left\{ E_B \left( A, K \right) \right\} \to Bob
Alice \to \left\{ E_K \left( R_B \right) \right\} \to Bob

Из первого сообщения Боб извлекает K, а из второго - R_B и сравнивает его с переданным ранее.

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

Литература[править | править вики-текст]

  • Шнайер Б. Протокол Yahalom // Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — С. 78—79. — 816 с. — 3000 экз. — ISBN 5-89392-055-4.
  • M. Burrows, M. Abadi, R. Needham A Logic of Authentication // Research Report 39, Digital Equipment Corp. Systems Research Center — Feb. 1989
  • M. Burrows, M. Abadi, R. Needham A Logic of Authentication // ACM Transactions on Computer Systems, — v. 8 — n. 1 — Feb. 1990 — pp. 18–36