Процедуры шифрования и расшифрования в криптосистеме 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;