Скачиваний:
118
Добавлен:
01.05.2014
Размер:
412 Кб
Скачать
☆

11.3. Система шифрования rsa.

Рассмотрим асимметричную систему шифрования RSA, названную по имени ее авторов Ривеста, Шамира и Адельмана. В данной системе односторонняя функция строится на основе произведения двух очень больших (сотни десятичных цифр) простых числе p и q. В то время как выбор двух больших простых чисел и вычисление их произведения не вызывает особых затруднений, обратная задача – разложение произведения на простые множители (факторизация) приводит к значительным вычислительным и временным затратам. Сложность факторизации числа иллюстрирует следующий факт. Для разложения числа, содержащего около 130 десятичных цифр, потребовалась бы работа 1600 ЭВМ в течение 8 месяцев. Следовательно, произведение, как часть ключа шифрования, может быть сделано общедоступным, в то время как множители, которые могут «разоблачить» ключ дешифрования, соответствующий ключу шифрования, остаются секретными.

Пусть , где p и q – простые числа, т. е. не имеющие делителей кроме 1 и самих себя. Несмотря на то, что n общедоступно, p и q являются скрытыми из-за большой сложности разложения n на множители. В теории чисел известна функция Эйлера , которая определяет количество положительных чисел, меньших n и взаимно простых с n. Так, для рассматриваемого произведения функция Эйлера вычисляется как

.

Важной особенностью функции Эйлера является то, что для любого целого x из интервала (0, n–1) и любого целого k имеет место следующее соотношение

. (11.5)

Следовательно, если все остальные арифметические действия выполняются по , то арифметические действия в степени выполняются по .

Затем случайным образом выбирается большое число целое число d, являющееся взаимно простым с , т.е. НОД . Этому условию будет удовлетворять любое простое число, больше наибольшего из (p, q). Далее находится целое , такое, что

или , (11.6)

где k – некоторое натуральное число.

Пара чисел образует открытый ключ, который известен всем абонентам, тогда как используется в качестве секретного ключа. Процедура шифрования и расшифрования осуществляется следующим образом. Предположим, что абонент A собирается отправить сообщение абоненту B. Первоначально шифрованию открытого текста предшествует преобразование по некоторому правилу его символов в целые числа (в простейшем виде оно поясняется в примере 11.3.1). Затем абонент A, зная открытый ключ абонента B, шифрует преобразованный открытый текст, предназначенный абоненту B, согласно следующей показательной функции по модулю

.

Очевидно, что в указанной трансформации проявилась односторонняя функция, присущая системе RSA.

Абонент B, приняв шифротекст y, производит вычисление еще одной показательной функции, используя свой закрытый ключ , в результате чего осуществляется обратная трансформация

,

где учтено соотношение (11.5).

Одним из возможных способов взлома шифра при данном ключе может служить следующий алгоритм. Необходимо разложить n на множители p и q, вычислить , а затем определить d из соотношения (11.6). Все операции в данном алгоритме, за исключением разложения n на множители, представляют собой простые действия. Однако, как уже упоминалось ранее, при значительном n и отсутствии сведений о значении сомножителей данная задача неразрешима при существующем уровне вычислительной техники.

Авторы системы RSA рекомендуют для обеспечения высокой стойкости использовать числа, содержащие около 200 десятичных цифр. Хотя разработаны специальные вычислители, позволяющие быстро возводить числа в большие степени, быстродействие RSA считается низким.

Пример 11.3.1. (Данный пример предназначен не для демонстрации сложности алгоритма, а для иллюстрации его выполнения).

Пусть . Следовательно, и . Параметр d выбирается взаимно простым с и больше наибольшего из p и q. Например, выберем . Затем определим значение e, удовлетворяющее условию

или .

Отметим, что для вычисления e используется, как правило, разновидность алгоритма Евклида вычисления . Применение его дает . Таким образом, ключ для шифрования , для расшифрования – .

Предположим, что необходимо передать открытый текст вида: ITS ALL GREEK TO ME. Если заменить каждую букву двухразрядным числом из интервала (01, 26), соответствующим ее позиции в английском алфавите, и закодировать пробел комбинацией 00, открытое сообщение можно записать следующим образом:

0920 1900 0112 1200 0718 0505 1100 2015 0013 0500.

Как видно, каждый символ преобразованного открытого текста выражается целым числом из интервала . Поэтому в данном примере шифрование может быть осуществлено по–блочно, причем длина блока равна 4, т.к. это максимальное число разрядов, которое всегда дает число, меньшее . Первый блок (0920) открытого текста шифруется следующим образом

.

Продолжая аналогичные вычисления для следующих блоков, в итоге получаем следующую криптограмму

0948 2342 1084 1444 2663 2390 0778 0774 0229 1655.

Открытый текст восстанавливается с помощью обратного преобразования, описываемого соотношением

.

Соседние файлы в папке Конспект по ТОИ