- •Криптография с открытом ключом
- •2.0 Элементы теории сложности
- •2.1 Односторонние функции
- •2.2 Схема шифрования с открытым ключом
- •2.2.2 Схема шифрования rsa
- •2.3 Схема цифроврй подписи
- •2.3.1 Конструкция цп на основе односторонней функции с секретом
- •2.3.2 Цп на основе схемы шифрования с о.К.
- •2.3.4 Гост р 34.10-94
- •2.3.5 Гост р 34.10-2001
- •2.4.1 Слабые и сильные хф
- •2.4.2 Конструкция хф
- •2.4.3 Хф гост р 34.10-94
- •2.4.4 Применение хф
- •2.5 Хф с ключом
- •2.5.1 Определение
- •2.5.2 Конструкция хф с ключом
- •2.5.3 Имитовставка гост 28147
- •Криптографические протоколы
- •3.1 Определение
- •3.2 Классификация кп
- •3.3 Правила построения кп
- •3.4 Прием защиты от атак повтора
- •3.5 Протоколы обеспечения к, ц, н
- •3.5.1 Протокол пс с обеспечением ц
- •3.6 Протоколы аутентификации
- •3.6.1 Протокол простой защищенной аутентификации
- •3.6.2 Протоколы сильной аутентификации
- •3.7 Протоколы управления ключами
- •3.7.1 Протокол диффи-хэлмана
- •3.7.3 Протокол явного ключевого обмена
- •Управление ключами
- •4.1 Общие
- •4.2 Угрозы управления ключами
- •4.3 Защита ключей
- •4.4.1 По типу алгоритма
- •4.4.2 По уровням
- •4.4.3 По криптопериоду
- •4.5 Состояние ключей
- •4.6 Концепция распределения ключей
- •4.6.1 Распределение ключей «точка – точка»
- •4.6.2 Распределение внутри домена безопасности
- •4.6.3 Распределение ключей между доменами безопасности
2.3.1 Конструкция цп на основе односторонней функции с секретом
fk – односторонняя функция с секретом. fk(х) получить легко, зная k. Зная k вычислить легко , но не зная k, вычислить трудно.
k2=k, k1=fk
s=S(m, k)= , зная k можно вычислить .
2.3.2 Цп на основе схемы шифрования с о.К.
, k2 – З.К., k1 – О.К.
s=S(m,k2)=Dk2(m)
скорость передачи уменьшится в 2 раза.
1) ЦП с извлечением сообщения
s=Dk2(m). s отправляется получателю, который V(m,s,k1)=Ek1(s) – осмысленное сообщение .
При этом предполагается, что сообщение m имеет достаточно высокую степень избыточности, чтобы достичь высокую вероятность от подделки.
2) ЦП с использованием ХФ
ХФ f: X→Y – одностороннее отображение
- X=V* - последовательность бит произвольной длины
- Y=Vn – последовательность бит длины n
- не должно быть коллизий;
- трудно найти
s=Dk2(h(m))
Длина ЦП всегда фиксирована
, m,s отправляется получателю.
2.3.3 ЦП RSA
Генерация ключей:
- генерация большой разрядности;
- вычисление значения модуля N=p*q;
- генерация числа ;
- вычисление числа d такого, что ;
- (N,e) – О.К.;
- (N,d) – З.К.
Формирование ЦП
s=h(m)d(modN), а если схема с извлечением сообщения, то s=md(modN)
Проверка ЦП
se h(m) – проверка при использовании ХФ, а если схема с извлечением сообщения, тогда m=se(modN).
Корректность ЦП
Проверим для ЦП RSA: возьмем s=md(modN), se(modN) m, где , где по теореме Эйлера.
Безопасность ЦП RSA
1) попытка генерации ЦП без k2 или d задача факторизации N;
2) формирование ЦП без знания З.К. RSA. Функция RSA мультипликативная E(N,d). если , то бороться с этим:
- m1 и m2 – бессмысленный текст; использование;
- ХФ h, тогда атака не пройдет.
3) Если противник имеет доступ к процедуре расшифрования, а для расшифрования и формирования используется один ключ, противник может подать на вход функции расшифрования h(m).
k2 – или Л.К. для шифрования, или З.К, для ЦП
2.3.4 Гост р 34.10-94
Выбор параметров ЦП:
- ХФ ГОСТ 34.11;
- выбор простого числа р: ;
- выбор простого числа q: , q делит р-1;
- выбирается число а: -1<а<р-1, aq(modp)=1.
Выбор ключей:
- число 1<x<q-1, этот х – З.К.;
- с помощью х вычисляется О.К. y=ax(modp)
Для формирования ЦП следующий алгоритм:
H – ХФ, S – формирование ЦП, S(m,x)
1) h=H(m);
2) формируется число e: h<e>256, h – последовательность битов 256-го числа е;
3) если ;
4) выбирается k: 0<k<q;
5) r=ak(modp) и r’=r(modq);
6) если r’=0 => возвращение к 4);
7) s=(ke+r’x)(modq);
8) если s=0=>возвращение к 4)
<r’>256||<s>256 – ЦП
Значение k называется эфемерным ключом, значение которого должно быть в секрете или стереть (вычислили и забыли).
Проверка V(m, <r’>||s>, y):
1) проверить 0<r’<q и 0<s<q, если хоть одна из проверок не совпадает, то ЦП не действительна.
2) h=H(m);
3) e: h=<e>256;
4) если ;
5) V=eq-2(modq) (=e-1(modq));
6) z1=s*v(modq), z2=(q-r’)V(modq);
7) U=az1*yz2(modp)
8) проверить , если выполняется, то ЦП действительна, если нет, то не действительна.
Малая теорема Ферма
Если а не делится на простое число р, то
Корректность ЦП
Если
r’=r(modq), r=ak(modp)
s=ke+r’x(modq)
(шаг 8) (из алгоритма формирования шаг 7)
, где , где , где , где . (шаг 8) – выполняется.
-
Американский стандарт DSA
ГОСТ
q=160 бит, |ЦП|=320
q=256 бит, |ЦП|=512
Безопасность ЦП
1) атака на З.К,
х – З.К., – O.T. – в общем случае задача дискретного логарифмирования для противника. Сложность задачи = =1,3*1026 для ГОСТ, n – длина р в битах р=1024 бита, т.к. - частная задача дискретного логарифмирования.
Задача нахождения по y:
=3*1038(ГОСТ), m – длина q в битах => ;
2) атака на неотказуемость
- атака с 2-мя ключами
Генерация х1 и у1, х2 и у2, s1=S(m1, x1) и s2=S(m2, x2), s1=s2. (m1, s1) отправляются получателю, который V(m1, s1, y1). (m2, s2) утверждаются как истина, и отказывается от m1.
Как осуществить: k, r’
, требуется осуществить равенство, для этого решаем систему.
k*e1-k*e2=-(x1-x2)*r’, фиксируем x1 => x2=x1+k*(e1-e2)/r’, т.к. есть m1 и m2 => имеем е1 и е2.
Защита: генерация З.К. в специальном месте; сделать подписываемое сообщение неизвестным для того, кто может подписать заранее.
- атака на уязвимость эфемерного k
а) ] k повторился
находит х.
Повторение k приводит к тому, что противник легко находит З.К. х.
k должен генерироваться качественным датчиком случайных или псевдослучайных чисел.
б ) если