Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Алгоритм 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 ≤ Хi≤ n-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). Отсюда и из соотношения Cid ≡ Xied(mod n) вытекает, что

Cid ≡ Xi1+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

Полная таблица зашифрования

А Б В Г Д Е Ж   И И К Л М Н О П  
                                 
                                 
Р С Т У Ф X Ц Ч Ш Щ Ъ Ы Ь Э Ю Я  
                                 
                                 

Из этой таблицы зашифрования легко получить таблицу расшиф­рования (табл. 2.11), отсортировав столбцы таблицы 2.10 по последней строке.

Таблица 2.11

Таблица дешифрования

                                 
                                 
А Б И Ы Я Ъ Т Н С Г К Л М У Е И Д
                                 
                                 
Э Ш Ь О X Ц Ч Ю Р Ф П   В Ж Щ    

Сложность составления такой таблицы дешифрования пропорцио­нальна количеству различных блоков, которые могут встретиться в шиф­руемом сообщении. Поэтому, для того чтобы шифр, основанный на крип­тосистеме RSA, не допускал дешифрование при неизвестном ключе, необ­ходимо (но не достаточно) выполнение следующих двух условий. Во-первых, должно быть большим число п, которое ограничивает макси­мальный размер блока, а следовательно, и количество различных блоков. Во-вторых, шифруемые сообщения должны быть достаточно разнообраз­ны. Недопустимо использование системы RSA (а также других криптоси­стем с открытым ключом) в случае, если сообщения являются комбинаци­ей относительно небольшого количества стандартных фраз. При выпол­нении указанных выше требований невозможно будет также дешифрова­ние на основе анализа частоты встречаемости и взаимного расположения различных блоков шифрованного сообщения.

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

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

Доказано, что вероятность успешной атаки методом дешифрования итерациями маловероятна, если p-1 и q-1 имеют большие простые сомно­жители p' и q' и, в свою очередь, р'- 1 и q'-1 также имеют большие простые сомножители.

Рассмотрим теперь "лобовой метод" вскрытия системы RSA, кото­рый заключается в нахождении числа d, мультипликативного обратного e по модулю (р-1)(q-1). Это легко сделать, если известны числа p и q. Сле­довательно, решив задачу разложения на сомножители целого числа п, можно дешифровать систему RSA. Для того чтобы усложнить задачу раз­ложения п на простые сомножители, числа р и q должны выбираться слу­чайным образом и иметь достаточно большие значения. Кроме того, числа р и q не должны быть "слишком близкими" друг к другу.

Покажем, каким образом можно использовать близость значений р и q. Без ограничения общности можно считать, что p>q. Для величин x=(p+q)/2 и y=(p-q)/2 справедливо соотношение

x2 –у2 = п. (2.5)

Для того чтобы найти разложение n на простые сомножители, дос­таточно подобрать целые числа х и у, удовлетворяющие соотношению (2.5). Данное уравнение в нашем случае имеет единственное решение, так как (х+у)(х-у)=п, а п единственным образом раскладывается на простые сомножители. Перебирая в порядке возрастания варианты х > , легко найти это решение, так как x=(p+q)/2 будет близким к при условии, что р и q близки. В итоге находим: р=х+у, q=x-y.

Рассмотрим еще один пример. Пусть n=pq = 851. Воспользуемся описанным выше способом, чтобы разложить n на простые сомножители р и q. Так как ≈29.17, берем х=30, вычисляем 302 - 851 = 49 и с первой попытки находим решение уравнения (2.5): х=30, у=7. Отсюда p=30+7=37, q=30 - 7=23.

Кроме указанных выше ограничений на выбор р, q, e и d к данным параметрам предъявляются и другие требования, влияющие на стойкость криптосистемы RSA. Более подробно эти требования изложены в [20].

Далее в учебном пособии объясняется, каким образом можно использовать криптосистему RSA для построения системы цифровой подписи.

В этом случае параметры р, q, e и d должен вырабатывать не полу­чатель, а отправитель сообщений (придерживаясь ранее введенных обо­значений, будем считать, что e является ключом зашифрования, a d -расшифрования). Чтобы подписать сообщение М, отправитель вычисляет P=(Me)mod n. Получатель, имея М и Р, вычисляет Рd ≡ М(mod n) и убеж­дается таким образом в подлинности документа.

Пример. Пусть р=3, q=11, n=33, e=7 и d=3. Отправитель сооб­щения M="02" вычисляет цифровую подпись 29=(27)mod 33 и посылает получателю пару "02, 29". Чтобы проверить подлинность сообщения "02", получателю достаточно убедиться в том, что 2=(293)mod 33.

Для приведенного алгоритма цифровой подписи противник может использовать следующий способ атаки: взять произвольное Р1 и вычис­лить сообщение М1=(P1) mod n, имеющее цифровую подпись Р1. Одна­ко при таком способе атаки он не сможет предвидеть полученное значе­ние М1. Скорее всего, сообщение М1, будет совершенно не похоже на от­крытый текст и, следовательно, противник не сможет ввести получателя в заблуждение. Данная атака представляет реальную опасность в случае передачи каких-либо числовых данных, для которых допустимы все воз­можные значения подписываемых блоков (или, по крайней мере, сущест­венная доля). Использование хорошей хеш-функции не позволит осуще­ствить данный способ подделки сообщений, так как противник не сможет подобрать текст, имеющий подписанный им хеш-код.





Дата публикования: 2014-11-02; Прочитано: 1793 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...