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

Материал из testwiki
Перейти к навигации Перейти к поиску
Криптографические обозначения, используемые в протоколах проверки подлинности и обмена ключами
AИдентификаторы Алисы (Alice), инициатора сессии
BИдентификатор Боба (Bob), стороны, с которой устанавливается сессия
TИдентификатор Трента (Trent), доверенной промежуточной стороны
KA,KB,KTОткрытые ключи Алисы, Боба и Трента
KA1,KB1,KT1Секретные ключи Алисы, Боба и Трента
EA,{...}KAШифрование данных ключом Алисы, либо совместным ключом Алисы и Трента
EB,{...}KBШифрование данных ключом Боба, либо совместным ключом Боба и Трента
{...}KB1,{...}KA1Шифрование данных секретными ключами Алисы, Боба (цифровая подпись)
IПорядковый номер сессии (для предотвращения атаки с повтором)
KСлучайный сеансовый ключ, который будет использоваться для симметричного шифрования данных
EK,{...}KШифрование данных временным сеансовым ключом
TA,TBМетки времени, добавляемые в сообщения Алисой и Бобом соответственно
RA,RBСлучайные числа (nonce), которые были выбраны Алисой и Бобом соответственно
KA,KB,KTЗаранее созданные пары открытых и закрытых ключей Алисы, Боба и Трента соответственно
KpСлучайная сеансовая пара открытого и закрытого ключей, которая будет использоваться для асимметричного шифрования
SA,SB,ST,SKpПодписывание данных с использованием закрытого ключа Алисы, Боба, промежуточной стороны (Trent) или закрытого ключа из случайной пары соответственно
EKA,EKB,EKT,EKpАсимметричное шифрование данных с использованием открытого ключа Алисы, Боба, промежуточной стороны (Trent) или открытого ключа из случайной пары соответственно

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

История

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

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

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

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

  1. Alice{A,B}Trent
  2. Trent{B,K,TT,{A,K,TT}KB}KAAlice
  3. Alice{A,K,TT}KBBob

Описание

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

Alice{A,B}Trent

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

Trent{B,K,TT,{A,K,TT}KB}KAAlice

Затем Алиса расшифровывает сообщение Трента и отправляет Бобу свой сертификат {A,K,TT}KB:

Alice{A,K,TT}KBBob

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

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

Атака на протокол

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

  • Алиса и Боб завершают сеанс протокола, в результате чего у сторон вырабатывается сессионный ключ K:
1. Alice{A,B}Trent
2. Trent{B,K,TT,{A,K,TT}KB}KAAlice
3. Alice{A,K,TT}KBBob
  • Далее злоумышленник повторяет последнее сообщение Алисы:
4. Attacker{A,K,TT}KBBob

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

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

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

  • Сначала Алиса и Боб полностью повторяют сеанс протокола:
1. Alice{A,B}Trent
2. Trent{B,K,TT,{A,K,TT}KB}KAAlice
3. Alice{A,K,TT}KBBob
  • Затем Боб генерирует случайное число, шифрует его на сессионном ключе K и отправляет Алисе:
4. Bob{RB}KAlice
  • Алиса расшифровывает сообщение Боба, прибавляет к RB единицу, шифрует полученный результат на сессионном ключе K и отправляет Бобу:
5. Alice{RB+1}KBob
После того как Боб расшифрует сообщение Алисы, он сможет проверить факт владения Алисы сессионным ключом K.

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

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

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

Асимметричный вариант протокола Деннинг — Сакко. Сервер аутентификации владеет открытыми ключами всех клиентов. Рассмотрим реализацию протокола Деннинг — Сакко с открытым ключомШаблон:Sfn:

  1. Alice{A,B}Trent
  2. Trent{ST(A,KA,TT),ST(B,KB,TT)}Alice
  3. Alice{EB(SA(K,TA)),ST(A,KA,TT),ST(B,KB,TT)}Bob

Описание

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

Alice{A,B}Trent

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

Trent{ST(A,KA,TT),ST(B,KB,TT)}Alice

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

Alice{EB(SA(K,TA)),ST(A,KA,TT),ST(B,KB,TT)}Bob

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

Атака на протокол

Абади и Нидхем описали атаку на протоколШаблон:Sfn, в ходе которой Боб, получив сообщение от Алисы, может выдать себя за неё в сеансе с другим пользователем. Отсутствие в сообщении от Алисы EKB(SA(K,TA)) идентификатора Боба приводит к тому, что Боб может использовать принятые от Алисы данные для того, чтобы выдать себя за Алису в новом сеансе с третьей стороной (Кларой).

  • Сначала Алиса и Боб проводят стандартный сеанс протокола, выработав новый сессионный ключ K:
1. Alice{A,B}Trent
2. Trent{ST(A,KA,TT),ST(B,KB,TT)}Alice
3. Alice{EB(SA(K,TA)),ST(A,KA,TT),ST(B,KB,TT)}Bob
  • После этого Боб инициирует новый сеанс с Кларой и действует в рамках протокола:
4. Bob{B,C}Trent
5. Trent{ST(B,KB,TT),ST(C,KC,TT)}Bob
  • На последнем шаге протокола Боб воспроизводит в сеансе с Кларой сообщения SA(K,TA) и ST(A,KA,TT), полученные от Алисы:
6. Bob{EC(SA(K,TA)),ST(A,KA,TT),ST(C,KC,TT)}Clara

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

Примечания

Шаблон:Примечания

Литература

Шаблон:Протоколы аутентификации и обмена ключами