Криптосистема шифрования данных RSА
Алгоритм RSА предложили в 1978 г. три автора: Р.Райвест (rivest), А.Шамир (Shamir) и А.Адлеман (Adleman). Алгоритм получил свое название по первым буквам фамилий его авторов. Алгоритм RSА стал первым полноценным алгоритмом с открытым ключом, который может работать как в режиме шифрования данных, так и в режиме электронной цифровой подписи.
Надежность алгоритма основывается на трудности факторизации больших чисел и трудности вычисления дискретных логарифмов. .
В криптосистеме RSА открытый ключ Кв, секретный ключ kв, сообщение М и криптограмма С принадлежат множеству целых чисел
ZN = {0, 1,2, ...,N-1}, (4.1)
где N - модуль: N = Р*Q. (4.2)
Здесь Р и Q - случайные большие простые числа. Для обеспечения максимальной безопасности выбирают Р и О равной длины и хранят в секрете.
Множество ZN с операциями сложения и умножения по модулю N образует арифметику по модулю N.
Открытый ключ КВ выбирают случайным образом так, чтобы выполнялись условия:
1 < КВ <= f(N), НОД (КВ, f(N)) = 1, (4.3)
f(N) = (P-1)(Q-1) (4.4)
где f(N) - функция Эйлера.
Функция Эйлера f(N) указывает количество положительных целых чисел в интервале от 1 до N, которые взаимно просты с N.
Второе из указанных выше условий означает, что открытый ключ КВ и функция Эйлера f(N) должны быть взаимно простыми.
Далее, используя расширенный алгоритм Евклида, вычисляют секретный ключ кВ, такой, что
kB * KB =1 (mod f(N)) (4.5)
или
kB = KB-1 (mod (P-1)(Q-1)).
Это можно осуществить, так как получатель В знает пару простых чисел (P, Q) и может легко найти f(N). Заметим, что кВ и N должны быть взаимно простыми.
Открытый ключ КВ используют для шифрования данных, а секретный ключ kВ - для расшифрования.
Преобразование шифрования определяет криптограмму С через пару (открытый ключ КB, сообщение М) в соответствии со следующей формулой:
С = ЕКB(М) = ЕB(М) = МКB(mod N). (4.6)
В качестве алгоритма быстрого вычисления значения С используют ряд последовательных возведений в квадрат целого М и умножений на М с приведением по модулю N.
Обращение функции С = МКB(mod N), т.е. определение значения М по известным значениям C, КB и N, практически не осуществимо при N =2512.
Однако обратную задачу, т.е. задачу расшифрования криптограммы С, можно решить, используя пару (секретный ключ kB, криптограмма С) по следующей формуле:
М = DkB (С) = DB (С) = СkB (mod N). (4.7)
Процесс расшифрования можно записать так:
DB(Ев (М)) = М. (4.8)
Подставляя в (4.8) значения (4.6) и (4.7), получаем:
(МКв )kв = М (mod N)
или
МКвkB = М(mod N). (4.9)
Величина f(N) играет важную роль в теореме Эйлера, которая утверждает, что если НОД (х, N) =1, то
Xf(N) = 1 (mod N),
или в несколько более общей форме
Xnf(N) + 1 = X (mod N) (4.10)
Сопоставляя выражения (4.9) и (4.10), получаем
КB * kB = n * f (N) +1
или, что то же самое,
КB * kB =1 (mod f (N)}.
Именно поэтому для вычисления секретного ключа kB используют соотношение (4.5).
Таким образом, если криптограмму
С = МКв(mod N)
возвести в степень kB, то в результате восстанавливается исходныйоткрытый текст М, так как
(МKB)kB = мКBkB = Мnf(N)+1 = М (modN).
Таким образом, получатель В, который создает криптосистему, защищает два параметра: 1) секретный ключ kB и 2) пару чисел (Р, Q), произведение которых дает значение модуля N. С другой стороны, получатель В открывает значение модуля N и открытый ключ КB.
Противнику известны лишь значения КB и N. Если бы он смог разложить число N на множители Р и Q, то он узнал бы "потайной ход" - тройку чисел {Р, Q, КB}, вычислил значение функции Эйлера
f(N) = (Р-1)(Q-1)
и определил значение секретного ключа kB.
Однако, как уже отмечалось, разложение очень большого N на множители вычислительно не осуществимо (при условии, что длины выбранных Р и Q составляют не менее 100 десятичных знаков).
Дата добавления: 2017-08-01; просмотров: 506;