Общая структура алгоритма
В целом процесс шифрования и расшифрования выглядит следующим образом:
Пусть мы имеем некое сообщение, которые мы хотим зашифровать. Представим его числом
- шифрование сообщения
- расшифрование сообщения
Тут пара чисел является открытым ключем и не является секретом, может передаваться по скомпрометированному каналу. Можно хоть нарисовать их на асфальте центра города. А пара - секретная часть. Число нужно надежно хранить, например, чтобы он хранился в памяти компьютера и никогда не покидал его пределы.
Эти ключи связаны особым образом:
Возьмем два больших простых числа , Вычислим
Вычислим функцию Эйлера
Выберем произвольную экспоненту взаимно простую c
Вычислим число обратное к числу по модулю
Наше сообщение должно быть меньше .
Чтобы прочитать сообщение, злоумышленнику нужно разложить число на его составляющие , . На текущий момент, используют , которое занимают 1024 бита и более. Например, для числа из 2048 бит его десятичная запись будет составлять примерно 600 знаков! Это невероятно огромное число. Современным компьютерам нужны годы, столетия чтобы разложить его на множители.