Криптосистема шифрования данных RSA
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Алгоритм RSA предложили в 1978 г. три автора: Р.Райвест (Rivest), А.Шамир (Shamir) и А.Адлеман (Adleman). Алгоритм получил свое название по первым буквам фамилий его авторов. Алгоритм RSA стал первым полноценным алгоритмом с открытым ключом, который может работать как в режиме шифрования данных, так и в режиме электронной цифровой подписи.

Надежность алгоритма основывается на трудности факторизации больших чисел и трудности вычисления дискретных логарифмов.

В криптосистеме RSA открытый ключ Кв, секретный ключ kв, сообщение М и криптограмма С принадлежат множеству целых чисел

ZN = {0, 1, 2, ..., N –1}, (2.5)

где N – модуль:

N = P*Q (2.6) .

Здесь P и Q – случайные большие простые числа. Для обеспечения максимальной безопасности выбирают P и Q равной длины и хранят в секрете.

Множество ZN с операциями сложения и умножения по модулю N образует арифметику по модулю N.

Открытый ключ Кв выбирают случайным образом так, чтобы выполнялись условия:

1< Кв £ j (N), НОД (Кв, j (N)) =1, (2.7)

j (N)=(P –1) (Q –1), (2.8)

где j (N) – функция Эйлера.

Функция Эйлера j (N) указывает количество положительных целых чисел в интервале от 1 до N, которые взаимно проcты с N.

Второе из указанных выше условий означает, что открытый ключ Кв и функция Эйлера j (N) должны быть взаимно простыми.

Далее, используя расширенный алгоритм Евклида, вычисляют секретный ключ kв, такой, что

kв * Кв º 1 (mod j (N)) (2.9)

или

kв = Кв–1 (mod (P –1)(Q –1)).

Это можно осуществить, так как получатель В знает пару простых чисел (P,Q) и может легко найти j (N). Заметим, что kв и N должны быть взаимно простыми.

Открытый ключ Кв используют для шифрования данных, а секретный ключ kв – для расшифрования.

Преобразование шифрования определяет криптограмму С через пару (открытый ключ Кв, сообщение М) в соответствии со следующей формулой:

C = (M) = EВ (M) = (mod N). (2.10)

В качестве алгоритма быстрого вычисления значения C используют ряд последовательных возведений в квадрат целого M и умножений на M с приведением по модулю N.

Обращение функции C = (mod N), т.е. определение значения M по известным значениям C, Кв и N, практически не осуществимо при N » 2 512.

Однако обратную задачу, т.е. задачу расшифрования криптограммы С, можно решить, используя пару (секретный ключ kв, криптограмма С) по следующей формуле:

М = (С) = DВ (C) = (mod N). (2.11)

Процесс расшифрования можно записать так:

DВ(EВ (М)) = М. (2.12)

Подставляя в (2.12) значения (2.10) и (2.11), получаем:

= М (mod N)

или

= M (mod N). (2.13)

Величина j (N) играет важную роль в теореме Эйлера, которая утверждает, что если НОД (x, N) =1, то

xj(N) º 1 (mod N),

или в несколько более общей форме

xn×j(N)+1 º x (mod N). (2.14)

Сопоставляя выражения (2.13) и (2.14), получаем

Кв * kв = n * j (N) +1

или, что то же самое,

Кв * kв º1 (mod j (N)).

Именно поэтому для вычисления секретного ключа kв используют соотношение (2.9).

Таким образом, если криптограмму

C = (mod N)

возвести в степень kв, то в результате восстанавливается исходный открытый текст М, так как

= = Mn×j(N)+1 º M (mod N).

Таким образом, получатель В, который создает криптосистему, защищает два параметра: 1) секретный ключ kв и 2) пару чисел (P,Q), произведение которых дает значение модуля N. С другой стороны, получатель В открывает значение модуля N и открытый ключ Кв.

Противнику известны лишь значения Кв и N. Если бы он смог разложить число N на множители P и Q, то он узнал бы "потайной ход" – тройку чисел {P,Q,Кв}, вычислил значение функции Эйлера

j (N) = (P –1) (Q –1)

и определил значение секретного ключа kв.

Однако, как уже отмечалось, разложение очень большого N на множители вычислительно не осуществимо (при условии, что длины выбранных P и Q составляют не менее 100 десятичных знаков).

 

Дата: 2016-10-02, просмотров: 180.