STS (протокол)

Протокол STS или Протокол Station-To-Station (англ. Station-to-Station protocol, STS) — криптографический протокол, позволяющий двум сторонам получить общий секретный ключ, используя незащищённый от прослушивания канал связи. Полученный ключ используется для дальнейшего обмена с помощью симметричного шифрования. В основе протокола лежит алгоритм Диффи-Хеллмана.

Отличительной чертой STS протокола является отсутствие временных меток и поддержка свойства perfect forward secrecy[источник не указан 1820 дней]. Также в протоколе проводится двухстороннее подтверждение ключа[1], что позволяет отнести протокол к классу «authenticated key agreement with key confirmation» (AKC).

История

править

Изначально STS был представлен в 1987 году в контексте безопасности для телефонной сети ISDN (O’Higgins et al. 1987)[2], дополнен в 1989 и окончательно представлен Уитфилдом Диффи, Полом Ван Ооршортом (Paul C. van Oorschot) и Михаилом Вейнером (Michael J. Wiener) в 1992 году. На основе протокола STS был создан протокол IKE, ставший промышленным стандартом[источник не указан 3605 дней].

Описание обыкновенного алгоритма STS

править

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

  1. Сгенерировать случайным образом асимметричную пару подписей для дальнейшей аутентификации пользователей.
  2. Определить параметры создания сообщений: модуль p по которому создается циклическая группа, и её генератор g.

Протокол состоит из следующих раундов обмена информацией между Алисой и Бобом[источник не указан 3605 дней]:

1. Алиса выбирает случайное число x такое, что 2 ≤ x ≤ p-1 и отправляет Бобу сообщение mA = gx mod p

(1) Алиса → Боб : mA = gx mod p,

2. Боб выбирает случайное число y такое, что 2 ≤ y ≤ p-1, вычисляет mB = gy mod p и, с помощью полученного сообщения от Алисы, вычисляет общий секретный ключ K = mAy mod p = gxy mod p. Затем отсылает Алисе mB и зашифрованное сообщение EK(SigB(mB,mA)), подписанное своей электронной цифровой подписью.

(2) Алиса ← Боб : mB = gy mod p, EK(SigB(mB,mA)),

3. Алиса аналогичным образом вычисляет секретный ключ и расшифровывает сообщение Боба. Затем аутенцифицирует Боба, верифицируя его электронную подпись, и отсылает ему своё сообщение Ek(SigA(mA,mB)), подписанное своей подписью.

(3) Алиса → Боб : Ek(SigA(mA,mB)),

4. Боб получает сообщение от Алисы, расшифровывает его и осуществляет проверку подписи от Алисы.

Здесь SigA и SigB — цифровые подписи пользователей Алисы и Боба соответственно, K = gxy mod p — искомый общий ключ.

Использование цифровых подписей при передаче сообщений между Алисой и Бобом гарантирует[5] достоверность получения сообщения именно от того пользователя, от которого оно должно было прийти. Шифрование значений подписей пользователей с помощью симметричного алгоритма E введено для того, чтобы обеспечить взаимное подтверждение правильности вычисления ключа, так как при неверно вычисленном ключе невозможно получить верные значения цифровых подписей[источник не указан 3605 дней].

Атака на обыкновенный STS

править

В 1994 году профессором Оксфордского университета Кевином Лоу (Geawin Lowe) была реализована атака на протокол STS[6] .На приведенном примере с Бобом и Алисой рассмотрим попытку атаки с неизвестным сеансовым ключом[англ.] (UKS attack)[4]. В данном случае Ева пытается узнать переписку[7].

(1) Алиса → Ева(Боб) : mA = gx mod p,
(2) Ева → Боб : mA,
(3) Ева ← Боб : mB = gy mod p, EK(SigB(mB,mA)),
(4) Алиса ← Ева(Боб) : mB, EK(SigB(mB,mA)),
(5) Алиса → Ева(Боб) : EK(SigA(mA,mB)).

Криптоаналитик Ева, находясь посередине между Алисой и Бобом, использует свой законный обмен с Бобом для убеждения Алисы в том, что она выступает от имени Боба. Сеанс с Бобом остается незавершенным, так как Ева, не зная общего секретного ключа, не сможет подобрать правильный ответ для Боба. Поэтому любое сообщение Евы на третьем шаге будет отвергнуто. Данная атака не представляет реальной опасности[4],так как при этом секретный ключ K так и остается неизвестным для Евы. Однако в этом случае Алиса будет принимать Еву за Боба. Боб будет думать, что сформировал общий ключ с Евой, а на самом деле — с Алисой. Таким образом, протокол будет работать некорректно. Последствия такой атаки сравнимы с ситуацией, когда Ева пассивна до тех пор, пока Алиса не отправляет Бобу последнее сообщение. Боб не может его получить, поскольку Ева блокирует последнее сообщение. Боб уведомляет Алису, что последнее сообщение не получено. Хоть единичная атака и не представляет опасности, однако группа злоумышленников, совершив такую атаку, может резко снизить мощность центрального сервера, поскольку сервер зарезервирует ресурсы для пользователей, уведомления от которых не будут приходить. Также стоит заметить, что в ходе такой атаки Ева со своими союзниками не нуждаются в сертификатах. Значит, эта атака требует небольшого количества ресурсов[источник не указан 3605 дней].

В 1995 году Мартином Абади (Martin Abadi) и Робертом Нидхемом (Robert Needham) был предложен способ, который позволяет предотвратить такую атаку на сервер. Для этого достаточно передавать имя пользователя открыто[8].

Модифицированный протокол STS

править

В 2004 году Колин Бойд (Colin Boyd) и Венбо Мао (Wenbo Mao) предложили следующую спецификацию протокола STS[9]:

(1) Алиса → Боб : mA = gx mod p
(2) Алиса ← Боб : mB = gy mod p, SigB(mB,mA), hK0(mB,mA)
(3) Алиса → Боб : SigA(mA,mB), hK0(mA,mB)

где K0 = f(k) — ключевой параметр хеш-функции hK0(mA,mB), вычисляемый как значение некоторой функции от результирующего сеансового ключа K = gxy mod p. Модуль p и генератор g по-прежнему открыты.

Атака на модифицированный STS

править

Существует возможность «двусторонней атаки с неизвестным общим ключом» (англ. Bilateral unknown key-share attack, BUKS attack)[4] В данном случае криптоаналитики Ева и Мэллори пытаются узнать переписку.

(1) Алиса → Ева : mA = gx mod p
(2) Ева → Мэллори : mA
(3) Мэллори → Боб : mA
(4) Мэллори ← Боб : mB = gy mod p, SigB(mB,mA), hK0(mB,mA)
(5) Ева ← Мэллори : mB, hK0(mB,mA)
(6) Алиса ← Ева : mB, SigE(mB,mA), hK0(mB,mA)
(7) Алиса → Ева : SigA(mA,mB), hK0(mA,mB)
(8) Ева → Мэллори : hK0(mA,mB)
(9) Мэллори → Боб : SigM(mA,mB), hK0(mA,mB)

В результате Ева и Мэллори, вступившие в сговор, вводят в заблуждение Алису и Боба, сформировавших общий ключ. При этом Алиса уверена, что она сформировала общий ключ с Евой, а Боб уверен, что он сформировал общий ключ с Мэллори[источник не указан 3605 дней].

Упрощённый STS

править

Упрощенный алгоритм используется для исключительно взаимной аутентификации без создания общего секретного ключа. Реализация выглядит следующим образом[10]:

(1) Алиса → Боб : mA = gx mod p
(2) Алиса ← Боб : mB  = gy mod p, SigB(mB,mA)
(3) Алиса → Боб : SigA(mA,mB)

Атака на упрощённый STS

править

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

(1) Алиса → Ева : mA = gx mod p
(2) Ева → Боб : mA 
(3) Ева ← Боб : mB  = gy mod p, SigB(mB,mA)
(4) Алиса ← Ева : mB  = gy mod p, SigE(mB,mA)
(5) Алиса → Ева : SigA(mA,mB)
(6) Ева → Боб : SigA(mA,mB)

В результате Алиса думает, что разговаривает с Евой, а Боб думает что разговаривает с Алисой. Эта атака безупречна, поскольку ни Алиса, ни Боб ничего не подозревают. Следует заметить, что Ева играет в этой атаке весьма активную роль: она подписывает сообщение, сгенерированное Бобом, и убеждает Алису также подписать его, чтобы полностью ввести Боба в заблуждение. Если бы Ева играла роль обычного пассивного наблюдателя, то Алиса никогда бы не подписала сообщение Боба и не позволила бы себя обмануть[7].

В случаях, когда невозможно определить пользователя, от которого было получено сообщение, K = gxy может быть использован для создания имитовставки[11]:

(1) Алиса → Боб : mA = gx mod p
(2) Алиса ← Боб : mB = gy mod , SigB(mB, mA), MACK(SigB(gy, gx))
(3) Алиса → Боб : SA(gx, gy), MACK(SigA(gx, gy))

См. также

править
  • MITM — ситуация, когда криптоаналитик (атакующий) способен читать и видоизменять сообщения, которыми обмениваются корреспонденты, причём ни один из последних не может догадаться о его присутствии в канале.

Примечания

править
  1. Station-to-Station Protocol. Sterling Connect:Direct Secure Plus for z/OS Overview. IBM. — «Station-to-Station (STS) protocol is a three-pass variation of the basic Diffie-Hellman protocol. It enables you to establish a shared secret key between two nodes with mutual entity authentication». Дата обращения: 18 ноября 2013.
  2. Delfs, Hans, Knebl, Helmut. Introduction to Cryptography: Principles and Applications. — 2. — Springer Publishing Company, Incorporated, 2010. — С. 88-89. — 368 с. — ISBN 978-3642080401.
  3. Брюс Шнайер. Прикладная криптография. — 2-е изд.. — Триумф, 2002. — С. 378-379. — 816 с. — ISBN 5-89392-055-4.
  4. 1 2 3 4 А. В. Черемушкин. Криптографические протоколы: основные свойства и уязвимости // Прикладная дискретная математика : журнал. — 2009. — № 2. — С. 115-150.
  5. А. В. Черемушкин «Криптографические протоколы: основные свойства и уязвимости», журнал «Прикладная дискретная математика» УДК 003.26(075.8)
  6. G. Lowe. Some new attacks upon security protocols // IEEE Computer Society : Proceeding. — 1996. — С. 162. — ISBN 0-8186-7522-5.
  7. 1 2 Мао, 2005, с. 415-416.
  8. Martin Abadi, Roger Needham. Prudent Engineering Practice for Cryptographic Protocols // IEEE Computer Society : Proceeding. — 1994. — С. 122.
  9. Colin Boyd , Wenbo Mao , Kenneth G. Paterson. Key Agreement using Statically Keyed Authenticators // Applied Cryptography and Network Security : Lecture Notes in Computer Science. — 2004.
  10. Douglas R. Stinson. Review of Cryptography: theory and practice // ACM SIGACT News : Newsletter. — 2003. — № 34. — С. 22-25. — ISSN 0163-5700. — doi:10.1145/954092.954097.
  11. Simon Blake-Wilson, Alfred Menezes. PKC '99 Proceedings of the Second International Workshop on Practice and Theory in Public Key Cryptography // Proceedings of the Second International Workshop on Practice and Theory in Public Key Cryptography : Proceeding. — 1999. — С. 154-170. — ISBN 3-540-65644-8.

Литература

править
  • Blake-Wilson, S.; Menezes, A. (1999), "Unknown Key-Share Attacks on the Station-to-Station (STS) Protocol", Public Key Cryptography, Lecture Notes in Computer Science, vol. 1560, Springer, pp. 154—170
  • Diffie, W. (1988), "The first ten years of public-key cryptography", Proceedings of the IEEE, 76 (5), IEEE: 560—577, doi:10.1109/5.4442
  • Diffie, W.; van Oorschot, P. C.; Wiener, M. J. (1992), "Authentication and Authenticated Key Exchanges", Designs, Codes and Cryptography, 2 (2), Kluwer Academic Publishers: 107—125, doi:10.1007/BF00124891
  • Menezes, A.; van Oorschot, P. C.; Vanstone, S. (1997), Handbook of Applied Cryptography, CRC Press, pp. 519—520
  • O'Higgins, B.; Diffie, W.; Strawczynski, L.; do Hoog, R. (1987), "Encryption and ISDN - A Natural Fit", 1987 International Switching Symposium (ISS87)
  • Брюс Шнайер. Прикладная криптография. — Триумф, 2002. — 610 с.
  • А.В. Черемушкин. Криптографические протоколы:основные свойства и уязвимости // Прикладная дискретная математика. — Издательство научно-технической литературы, 2009. — № 2. — P. 14—16.
  • Douglas Stinson. Cryptograhy: theory and practice. — CRC Press LLC, 1995. — 573 с.
  • Мао В. Современная криптография: Теория и практика / пер. Д. А. КлюшинаМ.: Вильямс, 2005. — 768 с. — ISBN 978-5-8459-0847-6
  • Jim Alves-Foss. Station-to-Station Protocol. A Weakest Precondition Calculus for Analysis of Cryptographic Protocols (1 августа 1997). Дата обращения: 13 ноября 2014.