Процедуры шифрования и расшифрования в криптосистеме RSА.

Предположим, что пользователь А хочет передать пользо­вателю В сообщение в зашифрованном виде, используя криптоси­стему РSА. В таком случае пользователь А выступает в роли от­правителя сообщения, а пользователь В - в роли получателя. Как отмечалось выше, криптосистему РSА должен сформировать по­лучатель сообщения, т.е. пользователь В. Рассмотрим последова­тельность действий пользователя В и пользователя А.

1. Пользователь В выбирает два произвольных больших простых числа Р и Q.

2. Пользователь В вычисляет значение модуля N = Р * Q.

3. Пользователь В вычисляет функцию Эйлера

f(N) = (Р-1)(Q-1)

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

1<КB <= f(N), НОД(КB, f(N)) = 1.

4. Пользователь В вычисляет значение секретного ключа kB, используя расширенный алгоритм Евклида при решении сра­внения

kB = KB-1 (mod f(N)).

5. Пользователь В пересылает пользователю А пару чисел (N, КB) по незащищенному каналу.

Если пользователь А хочет передать пользователю В со­общение М, он выполняет следующие шаги.

1. Пользователь А разбивает исходный открытый текст М на блоки, каждый из которых может быть представлен в ви­де числа Мi = 0, 1, 2, ..., N-1.

2. Пользователь А шифрует текст, представленный в виде последовательности чисел Мi по формуле Сi = МiКв (mod N) и отправляет криптограмму С1, С2, С3, ..., Сi, ... пользователю В.

3. Пользователь В расшифровывает . принятую крип­тограмму С1, С2, С3, ..., Сi, ... используя секретный ключ kB, по формуле Мi = Сikв(mod N).

В результате будет получена последовательность чисел Мi, которые представляют собой исходное сообщение М. Чтобы алгоритм RSА имел практическую ценность, необходимо иметь возможность без существенных затрат генерировать большие про­стые числа, уметь оперативно вычислять значения ключей КB и kB.

Пример. Шифрование сообщения САВ. Для простоты вычислений будут использоваться небольшие числа. На практике применяются очень большие числа.

Действия пользователя В.

Выбирает Р = 3 и Q = 11.

Вычисляет модуль N = Р*Q = 3*11 = 33.

Вычисляет значение функции Эйлера для N = 33:

f(N) = f(33) = (Р -1 )(Q -1) = 2*10 = 20.

Выбирает в качестве открытого ключа КB произвольное число с учетом выполне­ния условий:

1 < КB <= 20, НОД (KB,20) = 1.

Пусть КB= 7.

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

kB = 7-1 (mod 20).

Решение дает kB= 3.

5. Пересылает пользователю А пару чисел (N = 33, КB= 7).

Рассмотрим подробнее, как получено решение kB=3.

Расчет kB осуществляется с использованием частного режима работы расширенного алгоритма Евклида, использующего равенство НОД(КВ, f(N))=1.

1. Введем трехмерные векторы u, v, t

u = {0, 1, f(N)}, v = (1, 0, KB)

2. Если u3=1, то переход к пункту 4; в противном случае, переход к пункту 3.

3. S=[u3 / v3]целая часть; t=u-v*s; u=v; v=t; переход к пункту 2.

Конец, kB = u1.

Процесс поиска решения можно задать таблицей.

 

S U1 U2 U3 V1 V2 V3
 
-2
-2 -1
-1      

 

В результате решения получаем, что kB=3.

 








Дата добавления: 2017-08-01; просмотров: 478;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.