Протокол Ву — Лама

Материал из 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) или открытого ключа из случайной пары соответственно

Протокол Ву — Лама — протокол аутентификации и обмена ключами. Как и в случае протокола DASS промежуточная сторона — Трент — поддерживает базу данных всех ключей.

Симметричный вариант протокола

Протокол был описан Томасом Ву и Шаблон:Не переведено в 1992 годуШаблон:SfnШаблон:Sfn.

Алиса отправляет Бобу свой идентификатор:

(1) Alice{A}Bob

Боб отправляет Алисе случайное число:

(2) Bob{RB}Alice

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

(3) Alice{EKA(RB)}Bob

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

(4) Bob{EKB(A,EKA(RB))}Trent

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

(5) Trent{EKB(RB)}Bob

Асимметричный вариант протокола

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

Alice{A,B}Trent

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

Trent{ST(KB)}Alice

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

Alice{EKB(A,RA)}Bob

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

Bob{A,B,EKT(RA)}Trent

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

Trent{ST(KA),EKB(ST(RA,K,A,B))}Bob

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

Bob{EKA(ST(RA,K,A,B),RB)}Alice

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

Alice{EK(RB)}Bob

Боб расшифровывает число и убеждается, что оно не изменилосьШаблон:Sfn.

Протокол взаимной аутентификации и распределения ключей

Этот протокол, основанный на симметричной криптографии, был описан Ву и Ламом в 1994 годуШаблон:Sfn.

Алиса генерирует случайное число RA и отправляет Бобу свой идентификатор и это число:

(1) Alice{A,RA}Bob

Боб тоже генерирует случайное число RB и отправляет Алисе свой идентификатор и это число:

(2) Bob{B,RB}Alice

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

(3) Alice{EKA(A,B,RA,RB)}Bob

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

(4) Bob{EKA(A,B,RA,RB),EKB(A,B,RA,RB)}Trent

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

(5) Trent{EKA(B,RA,RB,K),EKB(A,RA,RB,K)}Bob

Боб отправляет Алисе два сообщения. Первое — это первое сообщение, полученное на предыдущем проходе от Трента. Второе — оба случайных числа (RA и RB), зашифрованные на сессионном ключе:

(6) Bob{EKA(B,RA,RB,K),EK(RA,RB)}Alice

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

(7) Alice{EK(RB)}Bob

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

Атака на симметричный вариант протокола

На симметричный вариант протокола Ву-Лама существует атака с помощью параллельного сеанса, описанная Абади и НидхемомШаблон:SfnШаблон:Sfn.

Мэллори является пользователем системы и имеет общий ключ с Трентом. Также ей требуется блокировать все сообщения, посланные Алисе, то есть Мэллори должна быть активным криптоаналитиком.

Мэллори начинает два сеанса — один от имени Алисы и один от своего имени — и отправляет Бобу два сообщения:

(1) Mallory (Alice){A}Bob
(1) Mallory{M}Bob

Боб думает, что с ним хотят связаться Алиса и Мэллори, и отправляет каждой своё случайное число:

(2) Bob{RB}Mallory (Alice)
(2) Bob{RB}Mallory

Мэллори игнорирует своё случайное число и в обоих сеансах отправляет Бобу одно и то же сообщение — случайное число RB, предназначенное Алисе, зашифрованное на общем ключе Мэллори и Трента KM:

(3) Mallory (Alice){EKM(RB)}Bob
(3) Mallory{EKM(RB)}Bob

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

(4) Bob{EKB(A,EKM(RB)}Trent
(4) Bob{EKB(M,EKM(RB)}Trent

Трент в каждом сеансе расшифровывает сообщение с помощью ключа того участника, идентификатор которого он получил. Так как в первом сеансе он получил идентификатор Алисы, а число RB было зашифровано на ключе Мэллори KM, при расшифровке получится другое число («мусор»).

(5) Trent{''Мусор''}Bob
(5) Trent{EKB(RB)}Bob

Боб видит в одном из последних сообщений случайное число RB, которое он посылал Алисе (как он думает), а в другом — мусор. Из-за этого Боб считает, что он установил связь с Алисой, хотя Алиса вообще не участвовала в обмене сообщениями.

Последовательность сеансов в данном случае не важна — атака будет развиваться точно также.

Абади и Нидхем предложили защиту от этой атаки: в сообщение 5-го прохода Трент должен включить идентификатор Алисы. В этом случае Боб при получении идентификатора Мэллори и случайного числа RB (которое он отправлял Алисе) отбросит такое сообщение, и атака сорвётся.

Атака на протокол взаимной аутентификации

На этот вариант протокола также существует атака с помощью параллельного сеансаШаблон:Sfn.

Пусть Алиса инициировала запрос на установление связи с Мэллори. Тогда Мэллори может инициировать параллельный сеанс связи с Алисой, установить связь в первом сеансе, а второй отложить. После этого через некоторое время (даже после завершения первого сеанса) продолжить установление связи во втором сеансе и заставить Алису принять старый сессионный ключ (тот, что использовался в первом сеансе). Также ей требуется блокировать сообщение, посланные Трентом Алисе, то есть Мэллори должна быть активным криптоаналитиком.

Алиса начинает сеанс связи с Мэллори. Мэллори в ответ начинает сеанс связи с Алисой, отправляя ей то же случайное число, которое она получила:

(1) Alice{A,RA}Mallory
(1) Mallory{M,RA}Alice

После этого Мэллори дожидается, пока Алиса ответит на её сообщение из второго сеанса, достаёт из него случайное число и вставляет его в сообщение Алисе в первом сеансе.

(2) Alice{A,RA}Mallory
(2) Mallory{M,RA}Alice

После этого Алиса и Мэллори нормально завершают первый сеанс протокола:

(3) Alice{EKA(A,M,RA,RA)}Mallory
(4) Mallory{EKA(A,M,RA,RA),EKM(A,M,RA,RA)}Trent
(5) Trent{EKA(M,RA,RA,K),EKM(A,RA,RA,K)}Mallory
(6) Mallory{EKA(M,RA,RA,K),EK(RA,RA)}Alice
(7) Alice{EKRA}Mallory

Через некоторое время Мэллори продолжает установление второго сеанса связи:

(3) Mallory{EKM(M,A,RA,RA)}Alice

Алиса отправляет серверу сообщение, которое Мэллори перехватывает и блокирует.

(4) Alice{EKM(M,A,RA,RA),EKA(M,A,RA,RA)}Mallory (Trent)

Мэллори от имени сервера посылает Алисе сообщение со старым сессионным ключом, просто поменяв местами части сообщения из 5-го прохода первого сеанса.

(5) Mallory (Trent){EKM(A,RA,RA,K),EKA(M,RA,RA,K)}Alice

После этого Алиса с Мэллори завершают установление соединения.

(6) Alice{EKM(A,RA,RA,K),EK(RA,RA)}Mallory
(7) Mallory{EK(RA)}Alice

Примечания

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

Литература

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