Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 5 октября 2020 года; проверки требуют 3 правки.
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 5 октября 2020 года; проверки требуют 3 правки.
STS (протокол)
У этого термина существуют и другие значения, см. STS.
Отличительной чертой STS протокола является отсутствие временных меток и поддержка свойства perfect forward secrecy[источник не указан 1782 дня]. Также в протоколе проводится двухстороннее подтверждение ключа[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, ставший промышленным стандартом[источник не указан 3567 дней].
Для подробного описания принципа работы рассмотрим процесс обмена информацией между некоторыми пользователями — Алисой и Бобом. Предположим, что у Алисы есть сертифицированный открытый ключ Боба, а у Боба есть сертифицированный открытый ключ Алисы. При этом оба ключа были ранее сертифицированы доверенным центром сертификации, непосредственно не участвующем в процессе. Перед началом работы протокола необходимо выполнить следующие действия[3][4]:
Сгенерировать случайным образом асимметричную пару подписей для дальнейшей аутентификации пользователей.
Определить параметры создания сообщений: модуль p по которому создается циклическая группа, и её генераторg.
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 введено для того, чтобы обеспечить взаимное подтверждение правильности вычисления ключа, так как при неверно вычисленном ключе невозможно получить верные значения цифровых подписей[источник не указан 3567 дней].
Криптоаналитик Ева, находясь посередине между Алисой и Бобом, использует свой законный обмен с Бобом для убеждения Алисы в том, что она выступает от имени Боба. Сеанс с Бобом остается незавершенным, так как Ева, не зная общего секретного ключа, не сможет подобрать правильный ответ для Боба. Поэтому любое сообщение Евы на третьем шаге будет отвергнуто. Данная атака не представляет реальной опасности[4],так как при этом секретный ключ K так и остается неизвестным для Евы. Однако в этом случае Алиса будет принимать Еву за Боба. Боб будет думать, что сформировал общий ключ с Евой, а на самом деле — с Алисой. Таким образом, протокол будет работать некорректно. Последствия такой атаки сравнимы с ситуацией, когда Ева пассивна до тех пор, пока Алиса не отправляет Бобу последнее сообщение. Боб не может его получить, поскольку Ева блокирует последнее сообщение. Боб уведомляет Алису, что последнее сообщение не получено. Хоть единичная атака и не представляет опасности, однако группа злоумышленников, совершив такую атаку, может резко снизить мощность центрального сервера, поскольку сервер зарезервирует ресурсы для пользователей, уведомления от которых не будут приходить. Также стоит заметить, что в ходе такой атаки Ева со своими союзниками не нуждаются в сертификатах. Значит, эта атака требует небольшого количества ресурсов[источник не указан 3567 дней].
В 1995 году Мартином Абади (Martin Abadi) и Робертом Нидхемом (Robert Needham) был предложен способ, который позволяет предотвратить такую атаку на сервер. Для этого достаточно передавать имя пользователя открыто[8].
В 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 по-прежнему открыты.
Существует возможность «двусторонней атаки с неизвестным общим ключом» (англ.Bilateral unknown key-share attack, BUKS attack)[4]
В данном случае криптоаналитики Ева и Мэллори пытаются узнать переписку.
В результате Ева и Мэллори, вступившие в сговор, вводят в заблуждение Алису и Боба, сформировавших общий ключ. При этом Алиса уверена, что она сформировала общий ключ с Евой, а Боб уверен, что он сформировал общий ключ с Мэллори[источник не указан 3567 дней].
Упрощенный алгоритм используется для исключительно взаимной аутентификации без создания общего секретного ключа. Реализация выглядит следующим образом[10]:
(1) Алиса → Боб : mA = gx mod p
(2) Алиса ← Боб : mB = gy mod p, SigB(mB,mA)
(3) Алиса → Боб : SigA(mA,mB)
В ходе атаки Ева, являющаяся законным пользователем системы и владеющая сертификатом открытого ключа, просит Алису инициализировать протокол. После этого она вступает в разговор с Бобом, представляясь Алисой и используя её одноразовое случайное число. Получив ответ от Боба, Ева заменяет его сертификат и подпись своими копиями. Это побуждает Алису подписать сообщение Боба, что, в свою очередь, позволяет Еве обмануть Боба[источник не указан 3567 дней].
(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 — ситуация, когда криптоаналитик (атакующий) способен читать и видоизменять сообщения, которыми обмениваются корреспонденты, причём ни один из последних не может догадаться о его присутствии в канале.
↑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.
↑Delfs, Hans, Knebl, Helmut. Introduction to Cryptography: Principles and Applications. — 2. — Springer Publishing Company, Incorporated, 2010. — С. 88-89. — 368 с. — ISBN 978-3642080401.
↑Брюс Шнайер. Прикладная криптография. — 2-е изд.. — Триумф, 2002. — С. 378-379. — 816 с. — ISBN 5-89392-055-4.
↑ 1234А. В. Черемушкин. Криптографические протоколы: основные свойства и уязвимости // Прикладная дискретная математика : журнал. — 2009. — № 2. — С. 115-150.
↑А. В. Черемушкин «Криптографические протоколы: основные свойства и уязвимости», журнал «Прикладная дискретная математика» УДК 003.26(075.8)
↑G. Lowe. Some new attacks upon security protocols // IEEE Computer Society : Proceeding. — 1996. — С. 162. — ISBN 0-8186-7522-5.
↑Martin Abadi, Roger Needham. Prudent Engineering Practice for Cryptographic Protocols // IEEE Computer Society : Proceeding. — 1994. — С. 122.
↑Colin Boyd , Wenbo Mao , Kenneth G. Paterson. Key Agreement using Statically Keyed Authenticators // Applied Cryptography and Network Security : Lecture Notes in Computer Science. — 2004.
↑Douglas R. Stinson. Review of Cryptography: theory and practice // ACM SIGACT News : Newsletter. — 2003. — № 34. — С. 22-25. — ISSN0163-5700. — doi:10.1145/954092.954097.
↑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, vol. 1560, Lecture Notes in Computer Science, Springer, с. 154–170
Diffie, W.; van Oorschot, P. C. & Wiener, M. J. (1992), Authentication and Authenticated Key Exchanges, Designs, Codes and Cryptography (Kluwer Academic Publishers) . — Т. 2 (2): 107–125, DOI 10.1007/BF00124891
Menezes, A.; van Oorschot, P. C. & Vanstone, S. (1997), Handbook of Applied Cryptography, CRC Press, с. 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 с.
Jim Alves-Foss.Station-to-Station Protocol (неопр.). A Weakest Precondition Calculus for Analysis of Cryptographic Protocols (1 августа 1997). Дата обращения: 13 ноября 2014.