Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа? |
Криптографическая система RSA
"Лазейка" в односторонней функции
Главная идея асимметрично-ключевой криптографии — понятие "лазейки" в односторонней функции.
Функции
Хотя понятие функции знакомо из математики, мы дадим неофициальное определение здесь. Функция — правило, по которому связывают (отображают) один элемент во множестве A, называемый доменом, и один элемент во множестве B, называемый диапазоном, как показано на рис. 14.3.
Обратимая функция — функция, которая связывает каждый элемент в диапазоне с точно одним элементом в домене.
Односторонняя функция (OWF — One Way Function) — функция, которая обладает следующими двумя свойствами:
- f вычисляется просто. Другими словами, при данном x может быть легко вычислен y = f (x).
- f -1 вычисляется трудно. Другими словами, при данном y, вычислить x= f ~1 (y) неосуществимо.
"Лазейка" в односторонней функции
"Лазейка" в односторонней функции (TOWF — Trapdoor One Way) — односторонняя функция с третьим свойством:
3. При данном y и ловушке (секретной) x может быть легко вычислен.
Пример 14.1
Когда n является большим, — односторонняя функция. Обратите внимание, что в этой функции x — кортеж (p, q) двух простых чисел, а y в данном случае — это n. При заданных p и q всегда просто вычислить n. При данном n очень трудно вычислить p и q. Это — проблема разложения на множители, которую мы рассматривали в лекциях 12-13. В этом случае для нахождения функции f -1 нет решения с полиномиальным временем.
Пример 14.2
Когда n является большим, функция y = xk mod n — "лазейка" в односторонней функции. При заданных x, k и n просто вычислить y, используя алгоритм быстрого возведения в степень, который мы обсуждали в лекциях 12-13. При заданных y, k и n очень трудно вычислить x. Это — проблема дискретного логарифма, которую мы обсуждали в лекциях 12-13. В этом случае нет решения с полиномиальным временем для функции f -1. Однако если мы знаем "лазейку" и k’, такое, что , мы можем использовать x = yk mod n, чтобы найти x. Это — известный алгоритм (RSA — Riverst-Shamir-Adelman), который будет рассмотрен позже в этой лекции.
Ранцевая криптосистема
Первая блестящая идея относительно криптографии открытого ключа доступа принадлежит Меркелю и Хеллману — она изложена в их ранцевой криптосистеме. Хотя эта система ненадежна в соответствии с сегодняшними стандартами, главная ее идея дает возможность понять современные криптосистемы с открытым ключом, которые будут рассматриваться позже в этой лекции.
Если нам говорят, какие элементы заранее определенного множества чисел мы имеем, то можно легко вычислить сумму чисел. Если нам говорят сумму, то трудно сказать, какие элементы "находятся в ранце".
Определение
Предположим, что нам даны два k -кортежа, a = [a1,a2, …,ak] и x = [x1,x2, …,xk]. Первый кортеж — заранее определенное множество; второй кортеж, в котором x равен только 0 или l, определяет, какие элементы a должны быть отброшены в ранце. Сумма элементов в ранце равна
s = knapsackSum (a, x) = x1 a1 + x2 a2 + • • • + xkak
По данным a и x просто вычислить s. Однако по данному s трудно найти x. Другими словами, s = knapsackSum (x, a) вычисляется просто, но x= inv_knapmi (s, a) труден. Функция knapsackSum — односторонняя функция, если a - общий k -кортеж.
Суперувеличение кортежа
Просто вычислить knapsackSum и inv_knapsackSum, если - k -кортеж суперувеличивается. В суперувеличивающемся кортеже . Другими словами, каждый элемент (кроме a1 ) больше или равен сумме всех предыдущих элементов. В этом случае мы вычисляем knapsackSum и inv_knapsackSum, как показано в Алгоритме 14.1. Алгоритм inv_knapsackSum запускается от наибольшего элемента и продолжает процесс к наименьшему. В каждой итерации он проверяет, находится ли элемент в рюкзаке.
knapsackSum (x[1,…,k], a[1,…,k] ) { s <- 0 for (i=1 to k) { s <- s + ai x xi } return x } Inv_knapsackSum (s, a[1,…,k]) { for (i=k down to 1) { if s >= aj { xi <- 1 s <- s - ai } else xi <- 0 } return x[1,…,k] }14.1. knapsacksum и inv_knapsackSum для суперувеличивающегося k-кортежа
Пример 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.
i | ai | s | s | xi | s s - ai x xi |
---|---|---|---|---|---|
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.
Генерация ключей
Этот процесс:
- Создает суперувеличивающийся 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" Бобу.
- Боб может расшифровать зашифрованный текст, 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".
Лазейка
Вычисление суммы элементов в ранце Алисы — фактически умножение матрицы-строки x на матрицу-столбец a. Результат — матрица s . Матричное умножение: , в котором x является матрицей-строкой, а a — матрица-столбец -односторонняя функция. По данным s и x Ева не сможет легко найти a. Боб, однако, имеет лазейку. Боб использует его и секретную, суперувеличивающуюся матрицу-столбец b, чтобы найти матрицу-строку x. При этом он применяет процедуру inv_knapsackSum. Перестановка позволяет Бобу найти x по известному x’.