А :
Рис.2
Атака 2. Еа, Еb - противник Е, играющий роли пользователей А и В, перехватывает сообщения от А и В, формирует ключи Kae и Keb парной связи с А и В путем ведения двух параллельных протоколов. В результате пользователи А и В считают, что они имеют конфиденциальную связь на ключе Kab; в действительности они установили шифрованную связь с перешифрованием у противника Е. (Рис.3).
А : ДСЧ (А) Xa; ; [A ║ B ║ Ya] Eb
Eb : ДСЧ (E) Xе; КЗУ(E); ;
[B║A║Ye] A
Ea : [A║B║Ye] B ,
А :
В : ДСЧ (В) Xb; КЗУ(В); ; [B║A║Yb] Ea,
Ea :
После получения системных констант от сервера S пользователи А,В,С,... генерируют от ДСЧ секретные ключи Ха, Хb, Xc,... , вычисляют открытые ключи ; ; ; ... и помещают их в защищенный от модификаций общедоступный справочник {Ya, Yb, Yc, ...}. (Рис.4).
Рис.4
Формальная запись протокола:
В : ДСЧ (В) tb ; ; [B║A║Z] A
A : ДСЧ (A) ta ; ;
; ;
[A║B║U║V] канал [║ ║║] B
В: =A(?); =B(?);;
Здесь знак “~” означает возможность искажения каналом или модификации противником, знак “ ” означает возведение в степень , - обратный к tbпо mod (p-1), знак (?) после равенства означает, что проверяется выполнение равенства: при невыполнении протокол разрывается, при выполнении осуществляется переход к следующей операции.
В результате ключ при U отличается от Kab , если выполняется проверка аутентичности . Отсюда следует:
Атака 1. Противник Еа, играющий роль пользователя А, подменяет в канале сообщение [A║B║U║V] на [A║B║║] с условием . В результате пользователь В формирует ложный ключ Kab.
Атака 2. Противник Еb, играющий роль В, посылает А число , на что тот по протоколу отвечает числами (U, V), где В результате противник Е устанавливает с А ключ парной связи Kae, переданный по открытому каналу связи, причем А считает, что это ключ для связи с В.
Предварительно все пользователи А, В, С, ... сети связи генерируют личные модули na, nb, nc, ..., каждый из которых имеет структуру: n=pq произведения двух простых чисел p и q (na=paqa; nb=pbqb; nc=pcqc; ... ), выбранных надлежащим образом [ 2 ]. Затем каждый пользователь соответствующим образом выбирает пару чисел (e, d), удовлетворяющих условию , где Далее числа (n, e) в качестве открытого ключа отправляются по достоверному каналу в общедоступный справочник. Числа (p, q, , d) пользователи сохраняют в секрете.
Данный протокол рекомендован МККТТ, рекомендация Х.509. Дефект протокола состоит в неправильном порядке операции шифрования и подписывания: правильно сначала подписать, затем шифровать. В формальной записи протокола применяются следующие обозначения:
М - передаваемое сообщение от А к В;
Сb- шифрованное А сообщение М на ключе eb получателя В;
Сba - сообщение Сb, подписанное А на ключе da отправителя А.
Предполагается, что nb<na. Обоснование последних двух равенств состоит в следующих преобразованиях:
Атака1. Некоторый пользователь Х (нарушитель) перехватывает сообщение (Рис.5), снимает ЭЦП пользователя А, пользуясь открытым ключом (na, ea).
Полученное шифрованное сообщение Сb он подписывает на своем секретном ключе dx, тем самым присваивая себе авторство на сообщение М. Получив сообщение , пользователь В снимает подпись Х с помощью открытого ключа (nx, ex), расшифровывает на своем секретном ключе db и выделяет сообщение М, которое считает сообщением от Х, но не от А, если само сообщение М не содержит признаков А.
Замечание: если na=nb, то операции шифрования и подписывания становятся перестановочными, так что снятие ЭЦП становится возможным при любом порядке этих операций.
Пусть сообщение М шифруется по криптосистеме RSA с общим модулем “n”. Пользователи А и В получают шифрованные сообщения ,
Атака1. Противник Е перехватывает шифрованные сообщения Са и Сb. Зная открытые ключи ea и eb, противник по алгоритму Эвклида находит числа x, y так, что xea + yeb = 1 (с большой вероятностью числа ea и eb взаимно просты). Тогда . В результате противник вычисляет сообщение М, зная только открытые ключи ea, eb и модуль n, но не зная модуля , что равносильно знанию факторизации n=pq.
Алгоритм шифрования называется коммутативным, если результат последовательного шифрования сообщения М на ключах К1и К2 не зависит от порядка используемых ключей: К2{К1{M}}= =K1{K2{M}}, где K{M} - результат шифрования M на ключе К. Примерами коммутативного алгоритма шифрования являются алгоритм DH, алгоритм RSA при общем модуле, алгоритм гаммирования (сложения по модулю). Коммутативность алгоритма шифрования является здесь следствием коммутативности операций модульного умножения и сложения.
Коммутативный алгоритм шифрования привлекателен тем, что пользователям не нужно устанавливать общий ключ парной связи, а достаточно генерировать личные секретные ключи. Идея конфиденциальной связи без предварительной договоренности о ключе шифрования наиболее ярко демонстрируется примером Шамира (Рис.6).
Рис.6
Формальная запись протокола:
A: ДСЧ (А) х; М х В
В: ДСЧ (В) y; (М х) y A
A: (М х y) x = M y B
B: (M y) y = M
Атака 1. Противник Е перехватывает все три сообщения в канале связи и складывает их по mod2. В результате получается М в открытом виде.
Атака 2. Пользуясь отсутствием идентификации корреспондентов А и В, противник Е может сыграть роль В, разрушая конфиденциальность М, или сыграть роль А, навязывая ложное сообщение пользователю В.
В общем случае трехшаговый протокол шифрования Шамира имеет следующую формальную запись (Рис.7):
А: Ka { M }B
B:
A:
B:
Ведущий А протокола применяет сначала операцию шифрования на ключе Ка, затем операцию расшифрования с ключом ;
Ведомый B применяет сначала операцию расшифрования с ключом К, затем операцию шифрования с ключом Кb. Предполагается, что для всякого М и К имеет место: К-1{K{M}}=K{K-1{M}}.
Атака 1. Рефлексия
Противник Еb, играющий роль В, возвращает А его первое сообщение. Действуя по протоколу, А применяет к нему операцию , и в канале оказывается открытое сообщение М.
А:
Атака 2. (Параллельный протокол)
Противник Еb возвращает А его первое сообщение не в качестве ответа, а как начало параллельного протокола с ведущим Еb и ведомым А. Предполагается, что при работе в сети такое возможно (Рис.8).
I протокол ( А Еb ) | II протокол ( Еb А ) |
1. А: Ка{M}Еb | |
1’. Еb: Ka{M}A | |
2’. A: {Ka{M}}=MЕb | |
2. Еb: A | |
3. A: {}Еb | |
3’. Еb : {}A | |
4. A: Ка{{}}= | |
4’. ___________________ |
В результате противник Е получает сообщение М, предназначенное для В, а пользователь А получает ложное сообщение , якобы от В.
Атака рефлексии и с параллельным протоколом являются сильным оружием противника, против которого трудно предложить простую защиту. Возможны также атаки с несколькими параллельными протоколами, в которых противник Е может играть одновременно несколько ролей: например, Ea, Eb и Es - роль сервера S.
Рассматриваемые в этом разделе протоколы имеют трех участников: пользователи А, В и сервер S. Цель протоколов - генерация и безопасная передача сервером S ключа парной связи Kab пользователям А и В. Безопасность включает свойства конфиденциальности, целостности, аутентичности и “свежести”. Это означает, что в результате протокола подлинный ключ Kab должен оказаться именно у А и В, и только у них. Свойство “свежести” означает, что участники протокола имеют возможность убедиться, что принимаемые сообщения сформированы в данном запуске протокола, а не взяты из параллельного или более раннего протокола. С этой целью используются “нонсы” Na и Nb - случайные числа одноразового использования.
Протоколы данного раздела отличаются от предыдущих более детальной спецификацией: указывается структура сообщения, адреса и их проверки... Однако, как показывают примеры, и на этом более высоком уровне спецификации в протоколах имеются серьезные дефекты.