В основе теоретико-сложностный подход.
Односторонние функции F:X→Y
а) существует полиномиальный алгоритм вычисления
y=F(x);
б) не существует полиномиального алгоритма инвертирования функции F, т.е. решения уравнения
F(x)=y относительно x.
Более сильное требование, чем принадлежность к NP-полным проблемам, т.к. требуется отсутствие полиномиального алгоритма почти всюду.
Функция с секретом fK: X→ Y
а) при любом к существует полиномиальный алгоритм вычисления fK;
б) при неизвестном к не существует полиномиального алгоритма инвертирования данной функции;
в) при известном к существует полиномиальный алгоритм ее инвертирования.
Дифи У., Хеллман М. Защищенность и имитостойкость. Введение в криптографию // ТИИЭР т.67, №3, 1979
RSA
Алгоритм шифрования, в основе сложная задача факторизации больших чисел
1. Абонент выбирает пару простых чисел: p и q вычисляет и публикует n=pq
2.Функция Эйлера: 
3. Случайное e
4. Вычисляем d: 
5. Открытый ключ; (n,e)
6. Секретный ключ: (
)
Шифрование: 
Расшифрование: 
Задача. Зашифровать аббревиатуру RSA при p=17, q=31.
Решение
1) Вычисляем модуль 
2) Функция Эйлера 
3) Случайное е, т.ч.
, например е = 7.
4) Вычисляем d, т.ч. e d=1(mod 480), d=343, т.к.

5) Переведем слово «RSA» в числовой вид:



Общая последовательность (с учетом диапазона [0,526]):

6) Шифруем последовательно M1 и M2


Получаем шифрограмму: С= (474,407)
7) Расшифрование


Для упрощения вычислений можно использовать соотношение:
343=256+64+16+4+2+1
Домашнее задание: написать программу на языке, реализующую RSA, проверить Пример для теста - зашифровать и расшифровать последовательность, включающую свои имя и фамилию (без пробела) + 3 собственных примера.






