Алгоритм rsa шифрования с открытым ключом (р.Ривест, а.Шамир, л.Адлеман, 1978 г.).
Получатель генерирует открытый ключ – пару чисел n и e.
Выбираются два простых числа p и q, p ≠ q.
Определяется первая часть открытого ключа – число n = pq.
Определяется вторая часть открытого ключа – небольшое нечетное число e, взаимно простое с (p-1)(q-1)=φ(n) (любое с таким свойством).
Открытый ключ n и e сообщается всем отправителям сообщений.
Получатель генерирует закрытый ключ: d=e-1mod(p-1)(q-1), то есть –обратный элемент дляв полеℤ*(p-1)(q-1), то есть =или
de≡1(mod(p-1)(q-1))
Закрытый ключ хранится в секрете.
Отправитель шифрует сообщение, разбивая его на слова αi<n, (т.е. длина αi менее log2n двоичных разрядов) по правилу
βi=(αi )emod n. (1)
Получатель расшифровывает сообщение с помощью закрытого ключа d по правилу
γi=(βi )dmod n. (2)
Теорема 1. При шифровании RSA дешифровка производится корректно, то есть γi=αi.
Доказательство: Из алгоритма следует,
(1) βi=(αi )emod n βi≡(αi )e(mod n), 0 ≤ βi <n, (3)
(2) γi=(βi )dmod n γi≡(βi )d(mod n), 0 ≤ γi <n. (4)
Возведем обе части (3) в степень d: (αi )ed ≡βid(mod n)≡ γi(mod n). С учетом транзитивности,
(αi )ed ≡ γi (mod n). (5)
Поскольку e и d – взаимно обратны по модулю (p-1)(q-1), то =, то есть =⇔ed≡1(mod(p-1)(q-1)) следовательно,
ed=1+(p-1)(q-1)k, kℤ. (6)
Докажем, что для любого x<n выполняется
xed≡x(mod p). (7)
а) Пусть x≢0(mod p), значит, x не кратен p, и, так как p – простое число, то (x, p)=1, следовательно, по теореме Ферма, xφ(p)≡1(mod p), то есть xp-1≡1(mod p). Тогда xed=x1+(p-1)(q-1)k=x‧(xp-1)(q-1)k≡x‧1(q-1)k(mod p)≡x(mod p).
б) Пусть x≡0(mod p), т.е. x кратен p. Возведем обе части сравнения в степень ed: xed≡0(mod p) и из транзитивности отношения сравнимости следует xed≡x(mod p).
Таким образом, для любого x < n выполняется (7).
Аналогично доказывается, что для любого x<n
xed≡x(mod q). (8)
Из (7) и (8) следует xed≡x(mod p), xed≡x(mod q). По теореме 4, (следствие теоремы об остатках), с учетом (p, q)=1 получаем xed≡x(mod pq), т.е. для любого x<n
xed≡x(mod n). (9)
Так как в алгоритме RSA двоичные сообщения αi имеет длину |αi|< log2n, то αi является двоичным числом, меньшим . Тогда
(9) ⇒ (αi)ed≡αi(mod n),
(5) ⇒(αi)ed≡γi(mod n).
С учетом транзитивности отношения сравнимости, αi≡γi(mod n). И так как αi<n и γi<n, то αi=γi. Теорема доказана.
Криптостойкость системы RSA объясняется сложностью разложения открытого числа n на простые множители. Эффективный алгоритм для этого найден лишь для отдельных случаев. Чтобы их избежать, выполняют требования:
а) p и q – достаточно большие, не слишком близки, но не слишком отличаются друг от друга;
б) желательно, чтобы НОД(p-1; q-1)=2 или был небольшим;
в) p и q – сильно простые числа (r сильно простое число, если r+1 имеет большой простой делитель, r-1 имеет большой простой делитель s и s-1 имеет большой простой делитель).
Недостатки системы RSA.
- медленная работа при больших e и снижение криптостойкости при малых e.
- разработаны и постоянно совершенствуются программы и компьютеры способные быстро разлагать большие числа на простые множители.