Реферат: ТИПИЧНЫЕ ДЕФЕКТЫ В КРИПТОГРАФИЧЕСКИХ ПРОТОКОЛАХ
Мовсковский Институт Радиотехники, Электроники и АвтоМатики
(ТЕХНИчЕСКИЙ УНИВЕРСИТЕТ).
Курсовая работа
На тему:
“ТИПИЧНЫЕ ДЕФЕКТЫ В КРИПТОГРАФИЧЕСКИХ ПРОТОКОЛАХ”.
Группа: ВИ-1-96
Студент: Матюшенков А.В.
Руководитель: Зязин В. П.
Москва 2000 год.
Введение.
В настоящий момент известно более тридцати криптографических протоколов, которые предположительно считались безопасными. Часть из них носит имена своих авторов, другая часть рекомендована международными стандартами МККТТ и ISO, третья — входит в национальные стандарты различных стран. Однако стандарты быстро устаревают, а в протоколах обнаруживаются дефекты разной степени тяжести, начиная от недостатков типа необоснованной сложности протокола и до катастрофических недостатков, делающих протокол крайне опасным. Здесь рассматриваются лишь несколько наиболее ярких примеров криптографических протоколов с дефектами и атаками, использующими эти дефекты.
Каждый протокол сначала кратко описывается словами с помощью рисунка для наглядности идеи протокола, затем представляется формальный текст протокола, уточняющий спецификацию протокола. Формальный текст протокола пишется на языке высокого уровня, получившем довольно широкое распространение в литературе по безопасности протоколов. Наконец, на этом же языке указываются одна — две атаки противника (нарушителя), использующие некоторые дефекты протокола. Следует заметить, что эти атаки часто оказываются возможными только благодаря недостаточно полной спецификации протокола; точнее, благодаря тому, что из множества возможных спецификаций протокола реализуется наиболее естественная, но неудачная. Это означает, что при более внимательном выборе спецификации протокола, с учетом знания отрицательных прецедентов, указанные атаки, возможно, окажутся нереализуемыми или неэффективными.
В настоящее время, видимо, нет надежной, систематической методологии для построения безопасных коммуникационных протоколов, а очень большое число коммерческих протоколов, которые считались предположительно безопасными, в действительности оказались уязвимыми со стороны широкого спектра эффективных атак. От прикладных программистов нельзя требовать построения безопасных протоколов. Это дело профессиональных криптографов.
Однако, полная спецификация протокола, видимо, должна разрабатываться совместно криптографом и программистом, а лучше, если это будет один и тот же человек.
Классификация криптографических протоколов
Протоколы шифрования / расшифрования: в основе протокола этого класса содержится некоторый симметричный или асимметричный алгоритм шифрования / расшифрования. Алгоритм шифрования выполняется на передаче отправителем сообщения, в результате чего сообщение преобразуется из открытой формы в шифрованную. Алгоритм расшифрования выполняется на приеме получателем, в результате чего сообщение преобразуется из шифрованной формы в открытую.
Так обеспечивается свойство конфиденциальности.
Для обеспечения свойства целостности передаваемых сообщений симметричные алгоритмы шифрования / расшифрования, обычно, совмещаются с алгоритмами вычисления имитозащитной вставки (ИЗВ) на передаче и проверки
ИЗВ на приеме, для чего используется ключ шифрования. При использовании асимметричных алгоритмов шифрования / расшифрования свойство целостности обеспечивается отдельно путем вычисления электронной цифровой подписи (ЭЦП) на передаче и проверки ЭЦП на приеме, чем обеспечиваются также свойства безотказности и аутентичности принятого сообщения.
Протоколы электронной цифровой подписи (ЭЦП): в основе протокола этого класса содержится некоторый алгоритм вычисления ЭЦП на передаче с помощью секретного ключа отправителя и проверки ЭЦП на приеме с помощью соответствующего открытого ключа, извлекаемого из открытого справочника, но защищенного от модификаций. В случае положительного результата проверки протокол, обычно, завершается операцией архивирования принятого сообщения, его ЭЦП и соответствующего открытого ключа. Операция архивирования может не выполняться, если ЭЦП используется только для обеспечения свойств целостности и аутентичности принятого сообщения, но не безотказности. В этом случае, после проверки, ЭЦП может быть уничтожена сразу или по прошествии ограниченного промежутка времени ожидания.
Протоколы идентификации / аутентификации: в основе протокола идентификации содержится некоторый алгоритм проверки того факта, что идентифицируемый объект (пользователь, устройство, процесс, … ), предъявивший некоторое имя (идентификатор), знает секретную информацию, известную только заявленному объекту, причем метод проверки является, конечно, косвенным, т.е. без предъявления этой секретной информации.
Обычно с каждым именем (идентификатором) объекта связывается перечень его прав и полномочий в системе, записанный в защищенной базе данных. В этом случае протокол идентификации может быть расширен до протокола аутентификации, в котором идентифицированный объект проверяется на правомочность заказываемой услуги.
Если в протоколе идентификации используется ЭЦП, то роль секретной информации играет секретный ключ ЭЦП, а проверка ЭЦП осуществляется с помощью открытого ключа ЭЦП, знание которого не позволяет определить соответствующий секретный ключ, но позволяет убедиться в том, что он известен автору ЭЦП.
Протоколы аутентифицированного распределения ключей: протоколы этого класса совмещают аутентификацию пользователей с протоколом генерации и распределения ключей по каналу связи. Протокол имеет двух или трех участников; третьим участником является центр генерации и распределения ключей (ЦГРК), называемый для краткости сервером S.
Протокол состоит из трех этапов, имеющих названия: генерация, регистрация и коммуникация.
На этапе генерации сервер S генерирует числовые значения параметров системы, в том числе, свой секретный и открытый ключ.
На этапе регистрации сервер S идентифицирует пользователей по документам (при личной явке или через уполномоченных лиц), для каждого объекта генерирует ключевую и/или идентификационную информацию и формирует маркер безопасности, содержащий необходимые системные константы и открытый ключ сервера S (при необходимости).
На этапе коммуникации реализуется собственно протокол аутентифицированного ключевого обмена, который завершается формированием общего сеансового ключа.
Дефекты в криптографических протоколах
В последующих разделах рассматриваются протоколы с типичными дефектами. Примеры протоколов разбиты на группы по типу используемой криптосистемы:
— протоколы с криптосистемой DH (Диффи, Хэллман);
— протоколы с криптосистемой RSA (Райвест, Шамир, Адлеман);
— протоколы с коммутативным шифрованием (Шамир);
— протоколы аутентифицированного распределения ключей;
— протоколы, основанные на тождествах.
Протоколы с криптосистемой DH (Диффи, Хэллман)
Исторически криптосистема DH является первой криптосистемой с открытыми ключами (КСОК), основанной на экспоненциальной однонаправленной функции. Сначала эта криптосистема использовалась как схема распределения ключей для классической симметричной криптосистемы с секретными общими ключами. Предварительно все пользователи сети связи получают от сервера S по достоверному каналу системные константы (Р, [pic]), где простое число Р и основание степени [pic] выбираются надлежащим образом.
Протокол ключевого обмена DH
Пользователи А и В формируют секретный ключ парной связи Kab с помощью следующего протокола (Рис.1)
— Пользователь А от датчика случайных чисел (ДСЧ) генерирует случайное число Xa, вычисляет [pic]и посылает его В.
— Пользователь В от своего датчика генерирует случайное число Xb, вычисляет[pic] и посылает его А.
— Пользователь А, получив число Yb от В, вычисляет[pic].
— Пользователь В, получив число Ya от А, вычисляет[pic].
[pic]
Рис.1
Числа Xa, Xb стираются. Поскольку [pic] , то Kab = Kba .
Для краткости вместо словесного описания обычно применяется формальная запись, в которой двоеточие означает перечисление совершаемых пользователем действий, стрелка означает генерацию, извлечение или запись информации по внутренним цепям (каналам) пользователя, двойная стрелка означает передачу по внешнему открытому каналу, тройная стрелка — передачу по внешнему защищенному каналу связи, например, передачу по шифрованному каналу секретных данных для пользователя от сервера S. В данном случае формальная запись протокола выглядит следующим образом:
А : ДСЧ (А) [pic] Xa; [pic]; [A | B | Ya] [pic] B
В : ДСЧ (В) [pic] Xb; [pic][pic]КЗУ(В); [pic];
[B|A|Yb] [pic] A,
А : [pic]
Здесь: | — знак присоединения, [ … ] — сформированное сообщение, КЗУ
— ключевое запоминающее устройство.
Предполагается, что канал без ошибок и без воздействий противника (Е).
Атака 1. Еb — противник Е, играющий роль пользователя В, перехватывает сообщение от А к В и формирует ключ парной связи Kea=Kae, причем А считает, что это ключ связи с В (Рис.2):
А : ДСЧ (А) [pic] Xa; [pic]; [A | B | Ya] [pic]Eb[pic]B
Eb : ДСЧ (E) [pic] Xе; [pic][pic]КЗУ(E); [pic];
[B|A|Ye] [pic] A
А : [pic]
[pic]
Рис.2
Атака 2. Еа, Еb — противник Е, играющий роли пользователей А и В, перехватывает сообщения от А и В, формирует ключи Kae и Keb парной связи с
А и В путем ведения двух параллельных протоколов. В результате пользователи
А и В считают, что они имеют конфиденциальную связь на ключе Kab; в действительности они установили шифрованную связь с перешифрованием у противника Е. (Рис.3).
[pic]
Рис.3
А : ДСЧ (А) [pic] Xa; [pic]; [A | B | Ya] [pic]Eb
Eb : ДСЧ (E) [pic] Xе; [pic][pic]КЗУ(E); [pic];
[B|A|Ye] [pic] A
Ea : [A|B|Ye] [pic] B ,
А : [pic]
В : ДСЧ (В) [pic] Xb; [pic][pic]КЗУ(В); [pic]; [B|A|Yb] [pic] Ea,
Ea : [pic]
Протокол аутентифицированного ключевого обмена DH
После получения системных констант [pic] от сервера S пользователи
А,В,С,… генерируют от ДСЧ секретные ключи Ха, Хb, Xc,… , вычисляют открытые ключи [pic]; [pic]; [pic]; … и помещают их в защищенный от модификаций общедоступный справочник {Ya, Yb, Yc, …}. (Рис.4).
[pic]
Рис.4
Формальная запись протокола:
В : ДСЧ (В) [pic] tb ; [pic]; [B|A|Z] [pic] A
A : ДСЧ (A) [pic] ta ; [pic];
[pic]; [pic];
[A|B|U|V] [pic]канал [[pic]|[pic] |[pic]|[pic]] [pic]B
В: [pic]=A(?); [pic]=B(?);[pic]; [pic]
Здесь знак “~” означает возможность искажения каналом или модификации противником, знак “ ( ” означает возведение в степень , [pic] — обратный к tb по mod (p-1), знак (?) после равенства означает, что проверяется выполнение равенства: при невыполнении протокол разрывается, при выполнении осуществляется переход к следующей операции.
В результате ключ [pic] при [pic][pic] U отличается от Kab , если выполняется проверка аутентичности [pic][pic]. Отсюда следует:
Атака 1. Противник Еа, играющий роль пользователя А, подменяет в канале сообщение [A|B|U|V] на [A|B|[pic]|[pic]] с условием [pic]. В результате пользователь В формирует ложный ключ [pic][pic]Kab.
Атака 2. Противник Еb, играющий роль В, посылает А число [pic], на что тот по протоколу отвечает числами (U, V), где [pic] В результате противник Е устанавливает с А ключ парной связи Kae, переданный по открытому каналу связи, причем А считает, что это ключ для связи с В.
Протоколы с криптосистемой RSA
Предварительно все пользователи А, В, С, … сети связи генерируют личные модули na, nb, nc, …, каждый из которых имеет структуру: n=pq произведения двух простых чисел p и q (na=pa[pic]qa; nb=pb[pic]qb; nc=pc[pic]qc; … ), выбранных надлежащим образом [ 2 ]. Затем каждый пользователь соответствующим образом выбирает пару чисел (e, d), удовлетворяющих условию [pic], где [pic] Далее числа (n, e) в качестве открытого ключа отправляются по достоверному каналу в общедоступный справочник. Числа (p, q, [pic], d) пользователи сохраняют в секрете.
Протокол шифрования и цифровой подписи по RSA
Данный протокол рекомендован МККТТ, рекомендация Х.509. Дефект протокола состоит в неправильном порядке операции шифрования и подписывания: правильно сначала подписать, затем шифровать. В формальной записи протокола применяются следующие обозначения:
М — передаваемое сообщение от А к В;
Сb — шифрованное А сообщение М на ключе eb получателя В;
Сba — сообщение Сb, подписанное А на ключе da отправителя А.
[pic] [pic]
[pic] [pic]
Предполагается, что nb