Протокол Деннинга — Сакко

Протокол Деннинга — Сакко — общее название для симметричного и асимметричного протоколов распространения ключей с использованием доверенной стороны.

Криптографические обозначения, используемые в протоколах проверки подлинности и обмена ключами
Идентификаторы Алисы (Alice), инициатора сессии
Идентификатор Боба (Bob), стороны, с которой устанавливается сессия
Идентификатор Трента (Trent), доверенной промежуточной стороны
Открытые ключи Алисы, Боба и Трента
Секретные ключи Алисы, Боба и Трента
Шифрование данных ключом Алисы, либо совместным ключом Алисы и Трента
Шифрование данных ключом Боба, либо совместным ключом Боба и Трента
Шифрование данных секретными ключами Алисы, Боба (цифровая подпись)
Порядковый номер сессии (для предотвращения атаки с повтором)
Случайный сеансовый ключ, который будет использоваться для симметричного шифрования данных
Шифрование данных временным сеансовым ключом
Метки времени, добавляемые в сообщения Алисой и Бобом соответственно
Случайные числа (nonce), которые были выбраны Алисой и Бобом соответственно
Заранее созданные пары открытых и закрытых ключей Алисы, Боба и Трента соответственно
Случайная сеансовая пара открытого и закрытого ключей, которая будет использоваться для асимметричного шифрования
Подписывание данных с использованием закрытого ключа Алисы, Боба, промежуточной стороны (Trent) или закрытого ключа из случайной пары соответственно
Асимметричное шифрование данных с использованием открытого ключа Алисы, Боба, промежуточной стороны (Trent) или открытого ключа из случайной пары соответственно

ИсторияПравить

В 1981 году сотрудники университета Пердью (англ. Purdue University) Дороти Деннинг (англ. Dorothy E. Denning) и Джованни Мария Сакко (англ. Giovanni Maria Sacco) представили атаку на протокол Нидхема – Шрёдера и предложили свою модификацию протокола, основанную на использовании временных меток[1].

Протокол Деннинга — Сакко с симметричным ключомПравить

 
Взаимодействие участников в протоколе Деннинга – Сакко с симметричным ключом

При симметричном шифровании, предполагается, что секретный ключ принадлежащий клиенту, известен только ему и некоторой третьей доверенной стороне – серверу аутентификации. В ходе выполнения протокола клиенты (Алиса, Боб) получают от сервера аутентификации (Трент) новый секретный сессионный ключ для шифрования взаимных сообщений в текущем сеансе связи. Рассмотрим реализацию протокола Деннинга – Сакко с симметричным ключом[2]:

  1.  
  2.  
  3.  

ОписаниеПравить

Первое сообщение от Алисы к Тренту содержит в себе идентификаторы участников предстоящего обмена – Алисы и Боба. Данное сообщение посылается открытым текстом:

 

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

 

Затем Алиса расшифровывает сообщение Трента и отправляет Бобу свой сертификат  :

 

По окончании протокола у Алисы и Боба есть общий сеансовый ключ  .

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

Атака на протоколПравить

В 1997 году Гэвин Лоу (англ. Gavin Lowe) представил атаку на протокол[3]:

  • Алиса и Боб завершают сеанс протокола, в результате чего у сторон вырабатывается сессионный ключ  :
1.  
2.  
3.  
  • Далее злоумышленник повторяет последнее сообщение Алисы:
4.  

Действия злоумышленника приводят к тому, что Боб решает, будто Алиса хочет установить с ним новое соединение.

Модификация протоколаПравить

В той же работе Лоу предложил модификацию протокола, в которой обеспечивается аутентификация Алисы перед Бобом[3]:

  • Сначала Алиса и Боб полностью повторяют сеанс протокола:
1.  
2.  
3.  
  • Затем Боб генерирует случайное число, шифрует его на сессионном ключе   и отправляет Алисе:
4.  
  • Алиса расшифровывает сообщение Боба, прибавляет к   единицу, шифрует полученный результат на сессионном ключе   и отправляет Бобу:
5.  
После того как Боб расшифрует сообщение Алисы, он сможет проверить факт владения Алисы сессионным ключом  .

В рамках протокола Боб никак не подтверждает получение нового сессионного ключа   и возможность им оперировать. Сообщение от Алисы на 5-м проходе могло быть перехвачено или изменено злоумышленником. Но никакого ответа Алиса от Боба уже не ожидает и уверена, что протокол завершился успешно.

Протокол Деннинга — Сакко с открытым ключомПравить

 
Взаимодействие участников в протоколе Деннинга – Сакко с открытым ключом

Асимметричный вариант протокола Деннинга – Сакко. Сервер аутентификации владеет открытыми ключами всех клиентов. Рассмотрим реализацию протокола Деннинга – Сакко с открытым ключом[4]:

  1.  
  2.  
  3.  

ОписаниеПравить

Первое сообщение от Алисы к Тренту содержит в себе идентификаторы участников предстоящего обмена – Алисы и Боба. Данное сообщение посылается открытым текстом:

 

В ответ Трент отправляет Алисе подписанные сертификаты открытых ключей Алисы и Боба. Дополнительно в каждый сертификат добавляются временные метки:

 

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

 

Боб проверяет подпись доверенного центра на сертификате  , расшифровывает сессионный ключ   и проверяет подпись Алисы.

Атака на протоколПравить

Абади и Нидхем описали атаку на протокол[5], в ходе которой Боб, получив сообщение от Алисы, может выдать себя за нее в сеансе с другим пользователем. Отсутствие в сообщении от Алисы   идентификатора Боба приводит к тому, что Боб может использовать принятые от Алисы данные для того, чтобы выдать себя за Алису в новом сеансе с третьей стороной (Кларой).

  • Сначала Алиса и Боб проводят стандартный сеанс протокола, выработав новый сессионный ключ  :
1.  
2.  
3.  
  • После этого Боб инициирует новый сеанс с Кларой и действует в рамках протокола:
4.  
5.  
  • На последнем шаге протокола Боб воспроизводит в сеансе с Кларой сообщения   и  , полученные от Алисы:
6.  

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

ПримечанияПравить

  1. Denning, Sacco, 1981.
  2. Мао, 2005, p. 79.
  3. 1 2 Lowe, 1997, The Denning-Sacco shared key protocol, pp. 4-5.
  4. Мао, 2005, p. 429.
  5. Abadi, Needham, 1996.

ЛитератураПравить

  • Dorothy E. Denning, Giovanni Maria Sacco. Timestamps in key distribution protocols (англ.) // Commun. ACM. — New York, NY, USA: ACM, 1981. — Vol. 24, iss. Aug, 1981, no. 8. — P. 533—536. — ISSN 0001-0782. — doi:10.1145/358722.358740.
  • Gavin Lowe. A family of attacks upon authentication protocols (англ.). — Department of Mathematics and Computer Science, 1997.
  • M. Abadi, R. Needham. Prudent Engineering Practice for Cryptographic Protocols (англ.) // IEEE Transactions on software engineering. — 1996. — January (vol. 22, no. 1).
  • Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — 816 с. — 3000 экз. — ISBN 5-89392-055-4.
  • Венбо Мао. Современная криптография: теория и практика = Modern Cryptography: Theory and Practice. — Издательский дом "Вильямс", 2005. — ISBN 5-8459-0847-7.