Wide-Mouth Frog
[math]\displaystyle{ A }[/math] | Идентификаторы Алисы (Alice), инициатора сессии |
[math]\displaystyle{ B }[/math] | Идентификатор Боба (Bob), стороны, с которой устанавливается сессия |
[math]\displaystyle{ T }[/math] | Идентификатор Трента (Trent), доверенной промежуточной стороны |
[math]\displaystyle{ K_A, K_B, K_T }[/math] | Открытые ключи Алисы, Боба и Трента |
[math]\displaystyle{ K_A^{-1}, K_B^{-1}, K_T^{-1} }[/math] | Секретные ключи Алисы, Боба и Трента |
[math]\displaystyle{ E_A, \left\{...\right\}_{K_A} }[/math] | Шифрование данных ключом Алисы, либо совместным ключом Алисы и Трента |
[math]\displaystyle{ E_B, \left\{...\right\}_{K_B} }[/math] | Шифрование данных ключом Боба, либо совместным ключом Боба и Трента |
[math]\displaystyle{ \left\{...\right\}_{K_B^{-1}}, \left\{...\right\}_{K_A^{-1}} }[/math] | Шифрование данных секретными ключами Алисы, Боба (цифровая подпись) |
[math]\displaystyle{ I }[/math] | Порядковый номер сессии (для предотвращения атаки с повтором) |
[math]\displaystyle{ K }[/math] | Случайный сеансовый ключ, который будет использоваться для симметричного шифрования данных |
[math]\displaystyle{ E_K, \left\{...\right\}_{K} }[/math] | Шифрование данных временным сеансовым ключом |
[math]\displaystyle{ T_A, T_B }[/math] | Метки времени, добавляемые в сообщения Алисой и Бобом соответственно |
[math]\displaystyle{ R_A, R_B }[/math] | Случайные числа (nonce), которые были выбраны Алисой и Бобом соответственно |
Wide-Mouth Frog (досл. с англ. «лягушка с широкой глоткой») — возможно, самый простой протокол для симметричного обмена ключами с использованием доверенного сервера. [math]\displaystyle{ A }[/math] (Алиса) и [math]\displaystyle{ B }[/math] (Боб) разделяют секретный ключ с [math]\displaystyle{ T }[/math] (Трентом). В данном протоколе ключи используются только для их распределения, а не для шифрования сообщений[1].
История
Автором протокола считается Майкл Бэрроуз (англ. Michael Burrows), впервые он был опубликован в «Michael Burrows, Martin Abadi, and Roger Needham. A logic of authentication»[2] в 1989 году. В 1997 Гэвин Лоу (англ. Gavin Lowe (computer scientist)) в своей работе «A Family of Attacks upon Authentication Protocols»[3] предложил модифицированный Wide-Mouthed Frog протокол (англ. Lowe modified Wide-Mouthed frog protocol), исправляющий некоторые уязвимости.
Протокол Wide-Mouthed Frog[4]
Для начала сеанса передачи сообщений Алиса шифрует конкатенацию метки времени, идентификатора Боба и сгенерированного случайного сеансового ключа. В качестве ключа шифрования используется ключ, который известен Алисе и Тренту — промежуточному доверенному серверу. После этого Алиса передаёт своё имя (в открытом виде) и зашифрованные данные Тренту.
- [math]\displaystyle{ Alice \to \left\{ A, E_A \left( T_A, B, K \right) \right\} \to Trent }[/math]
Трент расшифровывает совместным с Алисой ключом пакет, выбирает оттуда сгенерированный Алисой случайный сеансовый ключ и составляет конкатенацию из новой метки времени, идентификатора Алисы и сеансового ключа, после чего шифрует её общим с Бобом ключом и передаёт ему.
- [math]\displaystyle{ Trent \to \left\{ E_B \left( T_T, A, K \right) \right\} \to Bob }[/math]
После этого Боб расшифровывает пакет данных общим с Трентом ключом и может использовать сгенерированный Алисой случайный сеансовый ключ для передачи данных.
Атаки на протокол Wide-Mouthed Frog
Атака 1995 года
В 1995 году Росс Андерсон и Роджер Нидхем предложили следующий алгоритм атаки на протокол:
- [math]\displaystyle{ Alice \to \left\{ A, E_A \left( T_A, B, K \right) \right\} \to Trent }[/math]
- [math]\displaystyle{ Trent \to \left\{ E_B \left( T_T, A, K \right) \right\} \to Bob }[/math]
- [math]\displaystyle{ I(Bob) \to \left\{ B, E_B \left( T_T, A, K \right) \right\} \to Trent }[/math]
- [math]\displaystyle{ Trent \to \left\{ E_A \left( T'_T, B, K \right) \right\} \to Alice }[/math]
- [math]\displaystyle{ I(Alice) \to \left\{ A, E_A \left( T'_T, B, K \right) \right\} \to Trent }[/math]
- [math]\displaystyle{ Trent \to \left\{ E_B \left( T''_T, A, K \right) \right\} \to Bob }[/math],
где I(Alice) и I(Bob) — злоумышленник имитирующий Алису и Боба соответственно.
Изъян протокола заключается в том, что Трент обновляет свою временную метку [math]\displaystyle{ T_T }[/math], от временной метки Алисы [math]\displaystyle{ T_A }[/math]. То есть пока Трент не держит список всех рабочих ключей и меток, злоумышленник может поддерживать ключи рабочими, используя Трента в качестве предсказателя.
Практический результат данного недостатка будет зависеть от приложения. Например, если пользователи используют смарт-карту с данным протоколом, который в открытом виде отправляет сеансовый ключ в программный модуль шифрования (англ. software bulk encryption routine), то ключи могут быть открыты для данной атаки. Злоумышленник может наблюдать как Алиса и Боб проводят сеансы и поддерживать ключи рабочими, пока не появится возможность выкрасть смарт-карту[5].
Атака 1997 года
В 1997 году Гэвин Лоу предложил ещё один вариант атаки на данный протокол, основанный на том, что злоумышленник заставляет думать Боба, что Алиса установила два сеанса обмена, в то время как Алиса устанавливает один сеанс. Атака включает два чередующихся прохода протокола, которые мы назовём [math]\displaystyle{ \alpha }[/math] и [math]\displaystyle{ \beta }[/math], обозначим, например, второе сообщение сеанса \alpha как [math]\displaystyle{ \alpha .2. }[/math] Тогда атака выглядит следующим образом:
- [math]\displaystyle{ Message }[/math] [math]\displaystyle{ \alpha .1. }[/math] [math]\displaystyle{ Alice \to \left\{ A, E_A \left( T_A, B, K \right) \right\} \to Trent }[/math]
- [math]\displaystyle{ Message }[/math] [math]\displaystyle{ \alpha .2. }[/math] [math]\displaystyle{ Trent \to \left\{ B, E_B \left( T_T, A, K \right) \right\} \to Bob }[/math]
- [math]\displaystyle{ Message }[/math] [math]\displaystyle{ \beta .2. }[/math] [math]\displaystyle{ I(Trent) \to \left\{ B, E_B \left( T_T, A, K \right) \right\} \to Bob }[/math],
где I(Trent) злоумышленник имитирующий Трента.
Сеанс [math]\displaystyle{ \alpha }[/math] представляет нормальный ход обмена ключами, когда Алиса устанавливает сеанс с Бобом, используя ключ [math]\displaystyle{ K }[/math]. Тогда в сообщении [math]\displaystyle{ \beta .2 }[/math], злоумышленник имитирует Трента, и повторяет сообщение [math]\displaystyle{ \alpha .2 }[/math]; после чего Боб считает, что Алиса пытается начать второй сеанс.
Кроме того, злоумышленник может воспроизвести для Трента сообщение [math]\displaystyle{ \alpha .1 }[/math], как сообщение следующего сеанса. Это приведёт к получению Бобом второго сообщение, с таким же результатом как и ранее.
Данную уязвимость исправляет модифицированный Wide-Mouthed Frog протокол (англ. Lowe modified Wide-Mouthed frog protocol)[3].
Модифицированный Wide-Mouthed Frog протокол
Данная модификация была предложена Гэвином Лоу, для устранения уязвимости для атаки 1997 года. Выглядит она следующим образом:
-
- [math]\displaystyle{ Alice \to \left\{ A, E_A \left( T_A, B, K \right) \right\} \to Trent }[/math]
- [math]\displaystyle{ Trent \to \left\{ E_B \left( T_T, A, K \right) \right\} \to Bob }[/math]
- [math]\displaystyle{ Bob \to \left\{ R_B \right\}_K \to Alice }[/math]
- [math]\displaystyle{ Alice \to \left\{ R_B +1\right\}_K \to Bob }[/math]
Эти изменения позволят избежать атак 1997 года: Боб будет генерировать два разных одноразовых номера, по одному для каждого сеанса, и ожидать в качестве ответа сообщение 4. В то же время Алиса будет возвращать только одно такое сообщение, и злоумышленник не сможет сгенерировать другого.
К сожалению, данная модификация убирает самую привлекательную черту протокола Wide-Mouthed Frog — простоту[3].
Особенности
- Требуется глобальный счётчик.
- Трент имеет доступ ко всем ключам.
- Значение сеансового ключа [math]\displaystyle{ K }[/math] полностью определяется Алисой, то есть она должна быть достаточно компетентной для генерации хороших ключей.
- Может дублировать сообщения, во время действия временной метки.
- Алиса не знает существует ли Боб.
- Протокол динамичный, что обычно нежелательно, так как это требует большей функциональности от Трента. Например, Трент должен справляться с ситуацией, когда Боб недоступен.
Примечания
Литература
- Брюс Шнайер. Протокол Wide-Mouth Frog // / Прикладная криптография. — 2002. — 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
- Gavin Lowe A Family of Attacks upon Authentication Protocols // Department of Mathematics and Computer Science, Technical Report 1997/5, University of Leicester Jan. 1997
- Ji Ma, Mehmet A. Orgun and Abdul Sattar Analysis of Authentication Protocols in Agent-Based Systems Using Labeled Tableaux // IEEE TRANSACTIONS ON SYSTEMS, MAN, AND CYBERNETICS—PART B: CYBERNETICS, VOL. 39, NO. 4, AUGUST 2009
- Security Protocol Open Repository
- Ross Anderson and Roger Needham Programming Satan’s Computer // Cambridge University Computer Laboratory Pembroke Street, Cambridge, England CB2 3QG