
Алгоритм rsa
Вычисление ключей |
|
Выбор p и q |
p и q должны быть простыми |
Вычисление n |
n = pq |
Вычисление φ(n) |
φ(n) = (p-1)(q-1) |
Выбор целого e |
НОД(φ(n), e) = 1, 1<e<φ(n) |
Вычисление d |
d = e–1mod φ(n) |
Открытый ключ |
KU={e,n} |
Личный ключ |
KR={d,n} |
Шифрование |
|
Открытый текст |
M < n |
Шифрованный текст |
C=M e(mod n) |
Дешифрование |
|
Открытый текст |
C |
Шифрованный текст |
M = C d(mod n) |
Рис.1 Алгоритм RSA
3. Пример ручного расчета
Рассмотрим пример шифрования с использованием алгоритма RSA(рис.1).
1. Выбираются два простых числа, р=7 и q=17.
2. Вычисляется n = pq = 7х17=119.
3. Вычисляется φ(n) = (p – 1)(q -1) = 96
4. Выбирается e, взаимно простое с φ(n)=96 и меньше, чем φ(n); в данном случае e=5
5. Определяется такое d, что de = 1 mod 96 и d < 96.
Число d можно определить с помощью расширенного алгоритма Эвклида:
Шаг1: Составляем две вектор-строки (A1 = [φ(n) 1 0] , A2=[e 0 1]).
Шаг2: Берем разность между первой строкой и второй, умноженной на такой коэффициент k, что первый элемент разности будет не более чем соответствующий элемент второй строки (C=A1 – k*A2, при этом С(1) < A2(1)).
Шаг3: Проверяем, если первый элемент в C равен нулю (C(1) = 0), то обратное число d будет равно третьему элементу A2 (d = A2(3)) и если d<0, то d= φ(n) +d, иначе приравниваем A2 к A1 (A1 = A2) и C к A2 (A2 = C), и переходим к шагу 2.
Цикл 1 Цикл 2
A1=[96 1 0] A1= [ 5 0 1]
A2=[ 5 0 1] A2= [1 1 -19]
k=19 k=1
C=[ 1 1 -19] C= [0 -4 -95]
Для удобства вычисления можно эту схему представить в виде:
_ [96 1 0]
_ [ 5 0 1] //умножая на k=19
_ [ 1 1 -19] // умножая на k=5
[ 0 -4 -95] //первый элемент в вектор-строке С равен 0.
Но d=
-19<0. Тогда положительное
значение будет равно - d=96
+(-19)=77. Проверить
числа e
и d
на обратность
можно вычислив
выражения (ed)
mod φ(n)
и результатом должна быть 1.
Действительно
,
значит числа e и d
являются обратными по модулю φ(n).
В результате получаются открытый ключ KU = {5, 119} и личный ключ KR = {77, 119}. В данном примере показано использование этих ключей с вводимым открытым текстом М = 19. При шифровании, 19 возводится в пятую степень, что дает 2476099. В результате деления на 119 определяется остаток, равный 66. Следовательно, 195≡66mod119, и поэтому шифрованным текстом будет 66. Для дешифрования выясняется, что 6677 ≡ 19 mod 119.
Для наглядности, на рис. 2, показан пример применения алгоритма RSA.
Рис. 2. Пример использования алгоритма RSA