Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по криптографии-2006!.doc
Скачиваний:
1
Добавлен:
31.12.2019
Размер:
1.28 Mб
Скачать

2.3.1. Алгоритм rsa

Алгоритм RSA защищен патентом США № 4405829. Разработан в 1977 году в Массачусетском технологическом институте (США). Получил название по первым буквам фамилий авторов (Rivest, Shamir, Adleman). Криптостойкость алгоритма RSA основана на вычислительной сложности задачи разложения большого числа на простые множители. Открытый и закрытый ключи являются функциями двух больших простых чисел, разрядностью 100-200 десятичных цифр. Предполагается, что восстанов­ление открытого текста по шифрованному тексту и открытому ключу рав­носильно разложению числа на два больших простых множителя.

Для генерации двух ключей применяются два больших случайных про­стых числа р и q. Для обеспечения максимальной безопасности р и q должны иметь одинаковую длину. Рассчитывается произведение п = pq.

Затем случайным образом выбирается ключ шифрования е так, чтобы е и (р -1)(q-1) являлись взаимно простыми числами. С помощью рас­ширенного алгоритма Евклида вычисляется ключ расшифрования d, такой что:

еd 1(mod(p -1)(q - 1)).

Другими словами:

d = e-1(mod(p- 1)(q - 1)).

Заметим, что d и n также взаимно простые числа.

Числа е и п — это открытый ключ, а число dзакрытый. Числа р и q могут быть отброшены, но они не должны быть раскрыты.

При шифровании сообщение т разбивается на цифровые блоки mi, размерами меньше п (для двоичных данных выбирается самая большая степень числа 2, меньшая п). Зашифрованное сообщение C будет состоять из блоков Ci, причем длина блока Ci,- равна длине блока mi. Таким образом, формула шифрования имеет вид:

Ci = mie mod n

При расшифровке сообщения для каждого зашифрованного блока Ci вы­числяется:

mi = Cid mod n

Так как Cid = (mie)d = mik(p-1)(q-1)+1 = mi, все по mod n, то формула восстанавливает сообщение.

Таким образом,

d = e-1(mod(p - 1)(q - 1)) - закрытый ключ

C = те mod n - шифрование

т = Cd mod n - расшифрование .

Чтобы организовать передачу шифрованных сообщений с помо­щью криптосистемы RSA получатель должен сделать следующее:

с помощью специального алгоритма сгенерировать два больших простых числа p,q, которые необходимо держать в секрете;

сообщить отправителю (или поместить в некоторый общедоступ­ный каталог) число n, равное произведению р и q, а также случайным об­разом выбранное целое число e, взаимно простое с произведением

(p - 1)(q - 1).

Для расшифрования сообщений, зашифрованных на открытом ключе п, e получателю необходимо иметь число d являющееся мультип­ликативным обратным числа e по модулю (p-1)(q-1), т.е. остаток от деле­ния произведения de на (p-1)(q-1) должен быть равен единице: de ≡1(mod(p-1)(q-1)). Найти такое число получателю легко, так как наи­больший общий делитель e и (p-1)(q-1) равен единице по выбору e.

Таким образом, отправитель знает открытый ключ: п и e, а получа­тель, кроме этого, имеет секретный ключ d.

Любое передаваемое сообщение можно представить в виде после­довательности целых чисел из заданного интервала. Будем считать, что отправитель передает секретное сообщение, представленное последова­тельностью чисел Х1,...Хк, 0 ≤ Хin-1, для всех i от 1 до к.

Отправитель для каждого блока Xi передаваемого сообщения вы­числяет Сi = (Xie) mod n и передает Сi, по открытому каналу связи.

Имея п, e и Сi,, получатель может расшифровать сообщение, вос­пользовавшись соотношением

Xi = (Cid) mod n. (2.2)

Докажем сначала выполнение равенства (2.2) для чисел Xi взаимно простых с п.

Так как числа e и d связаны соотношением ed = 1 (mod(p-1 )(q-1)), то для некоторого целого к справедливо равенство ed=1+k(p-1)(q-1). Отсюда и из соотношения CidXied(mod n) вытекает, что

CidXi1+k(p-1)(q-1)(mod n). (2.3)

Из теоремы Эйлера следует, что в случае, если числа Xi, и п взаимно просты

Xik(p-1)(q-1) ≡ 1(mod n).

Отсюда и из (2.3) следует выполнение соотношения (2.2) для слу­чая, когда Xi взаимно просто с п.

Предположим теперь, что Xi, имеет общий делитель с числом п, не совпадающий с единицей. В этом случае Xi, делится либо на р, либо на q, так как п у нас равно произведению двух простых чисел р и q. Для опре­деленности будем считать, что Xi, делится на р и Xi=kp, где k - некоторое целое число. Тогда Xi взаимно просто с q и по теореме Эйлера

Xi Xied(mod q). (2.4)

Обозначим через s остаток от деления Xied-1 на q. Так как Х=kр, для некоторого целого r справедливо представление Xied=kp(rq +s). Отсюда и из (2.4) вытекает соотношение kprq+kps ≡ Xi (mod q).

Следовательно, pks ≡ рк(mod q). Тогда (s-1)pk делится на q, и от­сюда s=1, так как k<q и s <q.

В итоге, имеем представление Xied = kprq + kp, из которого выте­кает выполнение соотношения Xi Xied(mod pq), эквивалентного (2.2).

Таким образом, получатель, вычислив (Cid) mod n, действитель­но получит i-й блок первоначального сообщения.

Рассмотрим в качестве примера случай р=3, q=11, n=3*11=33, e=1 и d=3. Легко убедиться, что каждое из чисел e=7 и DE=21 взаимно про­сто с (p-1)(q-1)=20. Для передачи сообщения М="02" отправителю необ­ходимо вычислить C≡27(mod 33)≡29. Получатель может расшифровать сообщение 29, возведя его в степень d по модулю п: 293 ≡2(mod 33). Пусть, как и ранее, наш алфавит состоит из букв русского языка (без бук­вы Ё) и пробела. Занумеровав элементы этого алфавита числами от 0 до 32, можно зашифровать произвольное сообщение на русском языке. На­пример, сообщение "ПРОВЕРИМ ЗНАНИЕ АРИФМЕТИКИ" в зашифро­ванном виде на ключе n=33, e=7 будет выглядеть следующим образом: "27 25 20 29 14 25 02 12 32 28 07 00 07 02 14 32 00 25 02 26 12 14 06 02 10 02".

Очевидно, что шифр в нашем примере является шифром простой замены. Мы уже знаем, что такой шифр можно вскрыть, исследовав час­тоты встречаемости и взаимное расположение чисел в криптограмме. Од­нако в данном случае дешифровать получившуюся криптограмму можно гораздо быстрее, если составить полную таблицу зашифрования (см. табл. 2.10). При таком маленьком значении n, противнику легко это сделать, так как по предположению открытый ключ: п=33, e=7 - ему известен.

Таблица 2.10