Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка МОИБ..doc
Скачиваний:
131
Добавлен:
10.06.2015
Размер:
1.03 Mб
Скачать

9.3. Криптосистема шифрования данных 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.

О

36

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

1< Кв(N), НОД (Кв,(N)) =1, (2.7)

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

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

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

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

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

kвКв1 (mod(N)) (2.9)

или

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

Это можно осуществить, так как получатель В знает пару простых чисел (P,Q) и может легко найти (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.

О

37

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

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

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

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

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

= М (mod N)

или

= M(modN). (2.13)

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

x(N) 1 (mod N),

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

xn(N)+1 x (mod N). (2.14)

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

Квkв= n(N) +1

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

Квkв1 (mod(N)).

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

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

C = (mod N)

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

= =Mn(N)+1M (mod N).

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

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

38

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

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

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