Wide-Mouth Frog

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Криптографические обозначения, используемые в протоколах проверки подлинности и обмена ключами
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), которые были выбраны Алисой и Бобом соответственно

Wide-Mouth Frog (досл. с англ. «лягушка с широкой глоткой») — возможно самый простой протокол для симметричного обмена ключами, с использование доверенного сервера. A(Алиса) B(Боб) разделяют секретный ключ с T (Трентом). В данном протоколе ключи используются только для их распределения, а не для шифрования сообщений.[1]


История[править | править исходный текст]

Автором считается Майкл Бэрроуз (англ. Michael Burrows) и впервые был опубликован в "Michael Burrows, Martin Abadi, and Roger Needham. A logic of authentication." [2] в 1989 году. Позже в 1997 Гэвин Лоу (англ. Gavin Lowe) в своей работе "A Family of Attacks upon Authentication Protocols" [3] предложил модифицированный Wide-Mouthed Frog протокол (англ. Lowe modified Wide-Mouthed frog protocol), исправляющий некоторые уязвимости.

Протокол Wide-Mouthed Frog[править | править исходный текст]

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

Alice \to \left\{ A, E_A \left( T_A, B, K \right) \right\} \to Trent

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

Trent \to \left\{ E_B \left( T_T, A, K \right) \right\} \to Bob

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

Атаки на протокол Wide-Mouthed Frog[править | править исходный текст]

Атака 1995 года[править | править исходный текст]

В 1995 году Рос Андерсон (англ. Ross Anderson) и Роджер Нидхэм (англ. Roger Needham) предложили следующий алгоритм атаки на протокол:

  1. Alice \to \left\{ A, E_A \left( T_A, B, K \right) \right\} \to Trent
  2. Trent \to \left\{ E_B \left( T_T, A, K \right) \right\} \to Bob
  3. I(Bob) \to \left\{ B, E_B \left( T_T, A, K \right) \right\} \to Trent
  4. Trent \to \left\{ E_A \left( T'_T, B, K \right) \right\} \to Alice
  5. I(Alice) \to \left\{ A, E_A \left( T'_T, B, K \right) \right\} \to Trent
  6. Trent \to \left\{ E_B \left( T''_T, A, K \right) \right\} \to Bob,

где I(Alice) и I(Bob) - злоумышленник имитирующий Алису и Боба соответственно.

Изъян протокола заключается в том, что Трент обновляет свою временную метку T_T, от временной метки Алисы T_A. То есть пока Трент не держит список всех рабочих ключей и меток, злоумышленник может поддерживать ключи рабочими, используя Трента в качестве предсказателя.

Практический результат данного недостатка будет зависеть от приложения. Например, если пользователи используют смарт-карту с данным протоколом, который в открытом виде отправляет сессионный ключ в программный модуль шифрования (англ. software bulk encryption routine), то ключи могут быть открыты для данной атаки. Злоумышленник может наблюдать как Алиса и Боб проводят сессии и поддерживать ключи рабочими, пока не появится возможность выкрасть смарт-карту.[4]

Атака 1997 года[править | править исходный текст]

В 1997 году Гэвин Лоу (англ. Gavin Lowe) предложил еще один вариант атаки на данный протокол, основанный на том, что злоумышленник заставляет думать Боба, что Алиса установила два сеанса обмена, в то время как Алиса устанавливает один сеанс. Атака включает два чередующихся прохода протокола, которые мы назовем \alpha и \beta, обозначим, например, второе сообщение сеанса \alpha как \alpha .2. Тогда атака выглядит следующим образом:

  1. Message \alpha .1. Alice \to \left\{ A, E_A \left( T_A, B, K \right) \right\} \to Trent
  2. Message \alpha .2. Trent \to \left\{ B, E_B \left( T_T, A, K \right) \right\} \to Bob
  3. Message \beta .2. I(Trent) \to \left\{ B, E_B \left( T_T, A, K \right) \right\} \to Bob,

где I(Trent) злоумышленник имитирующий Трента.

Сеанс \alpha представляет нормальный ход обмена ключами, когда Алиса устанавливает сеанс с Бобом, используя ключ K. Тогда в сообщении \beta .2, злоумышленник имитирует Трента,и повторяет сообщение \alpha .2; после чего Боб считает, что Алиса пытается начать второй сеанс.

Кроме того, злоумышленник может воспроизвести для Трента сообщение \alpha .1, как сообщение следующего сеанса. Это приведет к получению Бобом второго сообщение, с таким же результатом как и ранее.

Данную уязвимость исправляет модифицированный Wide-Mouthed Frog протокол (англ. Lowe modified Wide-Mouthed frog protocol) [5]

Модифицированный Wide-Mouthed Frog протокол[править | править исходный текст]

Данная модификация была предложена Гэвином Лоу (англ. Gavin Lowe), для устранения уязвимости для атаки 1997 года. Выглядит она следующим образом:

  1. Alice \to \left\{ A, E_A \left( T_A, B, K \right) \right\} \to Trent
  2. Trent \to \left\{ E_B \left( T_T, A, K \right) \right\} \to Bob
  3. Bob \to \left\{ R_B \right\}_K \to Alice
  4. Alice \to \left\{ R_B +1\right\}_K \to Bob

Эти изменения позволят избежать атак 1997 года: Боб будет генерировать два разных одноразовых номера, по одному для каждого сеанса, и ожидать в качестве ответа сообщение 4. В то же время Алиса будет возвращать только одно такое сообщение, и злоумышленник не сможет сгенерировать другого.

К сожалению, данная модификация убирает самую привлекательную черту протокола Wide-Mouthed Frog - простоту.[5]

Особенности[править | править исходный текст]

  • Требуется глобальный счетчик.
  • Трент имеет доступ ко всем ключам.
  • Значение сессионного ключа K полностью определяется Алисой, то есть она должна быть достаточно компетентной для генерации хороших ключей.
  • Может дублировать сообщения, во время действия временной метки.
  • Алиса не знает существует ли Боб.
  • Протокол динамичный, что обычно нежелательно, так как это требует большей функциональности от Трента. Например, Трент должен справляется с ситуацией, когда Боб недоступен

Примечания[править | править исходный текст]

Литература[править | править исходный текст]