- •Криптографическая система rsa
- •14.1. Введение
- •Исходный текст / зашифрованный текст
- •Пример 14.3
- •Лазейка
- •Введение
- •Атака с выборкой зашифрованного текста
- •Атаки на показатель степени шифрования
- •Атаки показателя степени дешифрации
- •Атаки исходного текста
- •Атаки модуля
- •Атаки реализации
- •Рекомендации
- •Оптимальное асимметричное дополнение шифрования (oaep — Optimal Assimetric Encryption Padding)
- •Приложения
Пример 14.3
Как очень тривиальный пример, предположим, что даны a = [17, 25, 46, 94, 201, 400] и s = 272. Таблица 14.1 показывает, как найти кортеж, используя процедуру inv_knapsackSum в алгоритме 14.1.
В этом случае x = [0, 1, 1,0, 1,0], — это означает, что в рюкзаке находятся 25, 46 и 201.
Таблица 14.1. Значения i, a и x в примере 14.3 |
|||||
i |
ai |
s |
s
|
xi |
s
|
6 |
400 |
272 |
false |
x6=0 |
272 |
5 |
201 |
272 |
true |
x5=1 |
71 |
4 |
94 |
71 |
false |
x4=0 |
71 |
3 |
46 |
71 |
true |
x3=1 |
25 |
2 |
25 |
25 |
true |
x2=1 |
0 |
1 |
17 |
0 |
false |
x1=0 |
0 |
Секретная связь с использованием ранца
Посмотрим, как Алиса может передать секретное сообщение Бобу, использующему ранцевую криптосистему. Идея показана на рис. 14.4.
Рис. 14.4. Секретная связь с использованием ранцевой криптосистемы
Генерация ключей
Этот процесс:
Создает суперувеличивающийся k -кортеж b = [b1, b2,..., bk].
Выбирает модуль n, такой, что n > b 1 + b2 + • • • + bk.
Выбирает случайное целое число r, которое является взаимно простым с n и
.Создает временный k -кортеж t = [t1, t2,…….. tk], в котором
.Выбирает перестановку k -объектов и находит новый кортеж a = liermute(t).
Открытый ключ k -кортежа — a. Секретный ключ — n, r и k -кортеж b.
Шифрация
Предположим, что Алисе надо послать сообщение Бобу.
Алиса преобразует свое сообщение в k -кортеж x=[x1, x2,…. xk], в котором xi — не 0 и не 1. Кортеж представляет собой исходный текст.
Алиса использует knapsackSum для вычисления s в качестве исходного текста.
Дешифрация
Боб получает зашифрованный текст s.
Боб
вычисляет
.
Боб переставляет x’ для того, чтобы найти x. Кортеж x есть восстановленный исходный текст.
Пример 14.4
Это тривиальный (очень легко раскрываемый пример). Он приводится только для того, чтобы показать процедуру.
Генерация ключей:
Боб создает суперувеличивающийся кортеж b = [7, 11, 19, 39, 79, 157, 313].
Боб выбирает модуль n = 900 и r = 37, и [4 2 5 3 1 7 6] как таблицу перестановок.
Боб теперь вычисляет кортеж t = [259, 407, 703, 543, 223, 409, 781].
Боб теперь вычисляет кортеж a = перестановка (t)= [543, 407, 223, 703, 259, 781, 409].
Боб объявляет a ; он сохраняет в тайне n, r и b.
Предположим, что Алиса хочет передать единственный символ "g" Бобу.
Она использует представление ASCII на 7 битов "g", (1100111) 2 и создает кортеж x = [1,1,0,0, 1, 1, 1]. Это — исходный текст.
Алиса вычисляет s = knulisackSum (a, x) = 2399. Это — зашифрованный текст, передаваемый Бобу.
Боб может расшифровать зашифрованный текст, s = 2165.
a. Боб вычисляет
.Боб вычисляет x’ = inv_knalisackSum (s', b) = [1, 1, 0, 1, 0, 1, 1].
Боб вычисляет x = перестановка (x’) = [1, 1, 0, 0, 1, 1, 1]. Он интерпретирует строку (1100111) 2 как символ "g".
