RSA
| Определение: |
| RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел. |
Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи.
Содержание
Реализация
Алгоритм RSA включает в себя четыре этапа: генерация ключей, передача ключей, шифрование и расшифрование.
Криптографические системы с открытым ключом используют так называемые односторонние функции.
| Определение: |
| Односторонняя функция (англ. one-way function) — математическая функция, которая легко вычисляется для любого входного значения, но трудно найти аргумент по заданному значению функции. |
Под односторонностью понимается не теоретическая однонаправленность, а практическая невозможность вычислить обратное значение, используя современные вычислительные средства, за обозримый интервал времени.
В основу криптографической системы с открытым ключом RSA положена сложность задачи факторизации произведения двух больших простых чисел. Для шифрования используется операция возведения в степень по модулю большого числа. Для дешифрования (обратной операции) за разумное время необходимо уметь вычислять функцию Эйлера от данного большого числа, для чего необходимо знать разложение числа на простые множители.
| Определение: |
| Возведение в степень по модулю (англ. modular exponentiation) — это вычисление остатка от деления натурального числа (основание), возведенного в степень (показатель степени), на натуральное число (модуль). Обозначается: |
В криптографической системе с открытым ключом каждый участник располагает как открытым ключом (англ. public key), так и закрытым ключом (англ. private key). В криптографической системе RSA каждый ключ состоит из пары целых чисел. Каждый участник создаёт свой открытый и закрытый ключ самостоятельно. Закрытый ключ каждый из них держит в секрете, а открытые ключи можно сообщать кому угодно или даже публиковать их. Открытый и закрытый ключи каждого участника обмена сообщениями в криптосистеме RSA образуют «согласованную пару» в том смысле, что они являются взаимно обратными. То есть для любых допустимых пар открытого и закрытого ключей существуют соответствующие функции шифрования и расшифрования такие, что для любого сообщения , где — множество допустимых сообщений,
Создание открытого и секретного ключей
RSA-ключи генерируются следующим образом:
- Выбираются два различных случайных простых числа и заданного размера (например, бита каждое).
- Вычисляется их произведение , которое называется модулем.
- Вычисляется значение функции Эйлера от числа :
- Выбирается целое число (), взаимно простое со значением функции . Обычно в качестве берут простые числа, содержащие небольшое количество единичных бит в двоичной записи.
- Число называется открытой экспонентой (англ. public exponent)
- Время, необходимое для шифрования с использованием быстрого возведения в степень, пропорционально числу единичных бит в .
- Слишком малые значения , например 3, потенциально могут ослабить безопасность схемы RSA.
- Вычисляется число , мультипликативно обратное к числу по модулю , то есть число, удовлетворяющее сравнению:
- Число называется секретной экспонентой. Обычно, оно вычисляется при помощи расширенного алгоритма Евклида.
- Пара публикуется в качестве открытого ключа RSA (англ. RSA public key).
- Пара играет роль закрытого ключа RSA (англ. RSA private key) и держится в секрете.