- •Криптография с открытом ключом
- •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.0 Элементы теории сложности
Сложение T, S, c=a+b, |a|=|b|=n.
0) n=0;
1) for i=0…n-1
2) ci=L0*d
3) d=Hi*qi*gi*t*(ai+bi+d)
4) cn=d
Tadd(n)=n, Sadd(n)=3n+1
Для определения сложности алгоритма свяжем с понятием заданное число, называемое ее размером, который выражает меру количества входных данных.
Временная сложность вычислительного алгоритма есть время, необходимое для того, чтобы алгоритм решил задачу, рассматриваемую как функция от размера задачи.
Умножение (mult) c=a*b, n
for i=0…n-1
for j=0…n-1
(d,Ci+j)= ci+j+ai*bj+d
3) Ci+n=0
а, b, c в двоичной системе
for i=0…n-1, c(i)=c(i)+aib,
c=0
for i=0…n-1
if aj=1, c(i)=c(i)+b
T(m,d)=n*W(a)
Tmult(n)=n2, Smult(n)=4n
В зависимости от требований в качестве временной сложности алгоритма может рассматриваться минимальное, среднее, максимальное время алгоритма.
По теории сложности принято исследовать асимптотическое поведение вычислительной сложности от размера задачи.
f(n)=O(g(n))
,при n.n0
f(n)=O(nm),
Tadd(n)=n, Sadd(n)=O(n)
Tmult(n)= O(n2), Smult(n)= O(n)
Возведение в степень по модулю, c=ab(modm),n
1) с=1
2) for i=n-1…0
3) c=c2(modm)
4) if Gi=1, c=c*a(mod m)
Tmultmod(n)= O(n2)
Texp(n,b)=n*O(n2)=W(b)*O(n2)=O(n2)(n+W(b))
Texp(n)=O(n3)
Задачи, решаемые алгоритмами со сложностями U(n2), называются задачами квадратичной сложности.
O(p(n)) – задачи полиномиальной сложности, где p(n) – полином
O(ep(n)) – задача экспоненциальной сложности
Если алгоритм быстрее O(ep(n)) и медленнее O(p(n)), то называется задачей субэкспоненциальной сложности
ПРИМЕР: n=106
Класс |
Кложность |
Количество операций |
Время (106 бит/сек) |
Линейная |
O(n) |
106 |
1 c |
Квадратичная |
O(n2) |
1012 |
10 дней |
Кубическая |
O(n3) |
1018 |
27397 лет |
Субэкспоненциальная |
|
21000 |
3*1052 лет |
Экспоненциальная |
O(2n) |
10301050 |
10301016 лет |
106 процессоров решают задачи. Число 27397 лет заменится 10 днями.
Будем считать, что алгоритм простой, если его вычислительная сложность полиномиальна.
Сложный, если неполиномиальный.
Модель теории сложности используется для выбора алгоритма и выбора параметров алгоритма.
При выбранных параметрах используется модель, которую называют моделью практической стойкости.
Сложными алгоритмами называют алгоритмы, чьи вычислительные сложности не превышают допустимые пределы.
ПРИМЕР
1) сложение O(n); 2) умножение, деление O(n2); 3) экспонента O(n3); 4) задача разложения на сомножители задача факторизации - задача субэкспоненциальной сложности, но при этом полином; 5) задача нахождения показателя степени по известным y, a и p называется задачей дискретного логарифмирования: y=ax(modp). Наиболее эффективный алгоритм требует , где n – количество битов в числе р; 6) задача об «укладке ранца», имеется a={a1,…,an}, S=ai1+…+ait, требуется найти {a1,…,an}. 2n подмножества ; 7) метод Гаусса, n*n, T(n)=O(n3).