Алгоритм RSA – это система криптографической защиты данных, созданная Роном Ривестом, Ади Шамиром и Леонардом Адлеманом в 1977 году. Она основана на использовании общедоступного ключа и приватного ключа, которые могут использоваться для шифрования и дешифрования сообщений.
Для отправки сообщения Алиса использует открытый ключ Bob, который состоит из двух параметров: многочлена n и числа e. Чтобы зашифровать сообщение m, Алиса использует следующий алгоритм:
1. Посчитаем значение сообщения в бинарном виде. Для числа m=12, это b=1100.
2. Возводим b в степень e по модулю n. C= b^e mod n.
3. Полученный результат C отправляется Бобу.
Для получения сообщения из зашифрованных данных, Боб выполняет обратную операцию, используя свой закрытый ключ: многочлен n и число d.
1. Получаем зашифрованное сообщение C.
2. Отправляем его в точности как было получено.
3. Расшифровываем сообщение по формуле: m = C^d mod n
Однако, перед этим с помощью алгоритма расшифровывания Боб должен получить свой закрытый ключ d. Для этого необходимо расчитать следующие параметры:
1. Найдем значение многочлена φ(n), где n = p*q, где p и q - большие простые числа, выбранные Бобом:
φ(n) = (p-1)(q-1)
2. Найдем множитель e такой, что он является взаимно простым с φ(n):
Найдем числа e и d таких, что d*e ≡ 1 (mod φ(n))
Для этого можно использовать алгоритм Евклида:
φ(n) = (p-1)(q-1) = (7-1)(13-1) = 6*12 = 72
e должно быть взаимно просто с 72, например 11. Таким образом e = 11.
3. Находим значение числа d:
d ≡ e^(-1) mod φ(n)
d ≡ 11^(-1) mod 72
d = 59 (так как 11*59 = 649, 649 = 8*72 + 1, 1 = 649-8*72)
Теперь Боб знает значения множителей n, e, и d. Он может передать otкрытый ключ (n,e) Алисе, а сам использовать закрытый ключ (n,d) для расшифровки сообщения.
Теперь приведем конкретный пример данной схемы.
Пусть Алиса хочет отправить сообщение m=12 по открытому ключу Боба, который он предоставил ей ранее. Параметры его открытого ключа n и e равны PA = 35, QA = 11 и e = 11. Алиса зашифровывает сообщение следующим образом:
1. Посчитаем значение сообщения в бинарном виде. Для числа m=12, это b=1100.
2. Возводим b в степень e по модулю n. C= b^e mod n.
C = 1100^11 mod 385 = 105
3. Полученный результат C=105 отправляется Бобу.
Боб получает сообщение С=105, и расшифровывает его, используя свой закрытый ключ:
m = C^d mod n
d равняется 71, так как 11*71 = 1(mod72).
m = 105^71 mod 385 = 12
Боб успешно расшифровал сообщение Алисы. Таким образом, получается, что использование алгоритма RSA позволяет надежно защитить передаваемые данные, кроме случаев утечки закрытого ключа. Она продолжает оставаться одним из наиболее распространенных алгоритмов шифрования в современных информационных системах.