Надежность алгоритма основывается на трудновычислимых задачах факторизации (разложения на множители) больших чисел и вычисления дискретных логарифмов. Определения и теоремы из алгебры, использованные при создании данной криптосистемы рассмотрены в приложении. Приведем здесь только основные утверждения.
1. Криптографические системы являются стойкими, если определенные их параметры являются простыми числами. Число а называется простым, если оно не имеет целых делителей, кроме единицы. Числа а и b называются взаимно простыми, если их наибольший общий делитель НОД(а, b)=1.
2. Функцией Эйлера φ (n)называется число положительных целых чисел меньших n и взаимно простых с n.
Вычисление функции Эйлера φ (n) для больших n в общем случае представляет собой трудоемкую процедуру перебора всех чисел меньших n и проверки для каждого взаимной простоты с n. Однако, эта функция обладает следующими свойствами:
- φ (p) = p - 1 " p – простого числа.
- φ (a, b) = φ (а) φ (b) для любых натуральных взаимно простых а и b,
|
|
которые позволяют легко вычислить значение функции Эйлера φ (n) с помощью трех арифметических действий, если известно разложение числа n на простые сомножители p и q:
φ (n) = (p-1)(q-1).
3. В RSA используется теорема, которая носит название китайской теоремы об остатках, так как этот результат был известен еще в древнем Китае, где теорема была предложена китайским математиком первого века Сун Це. Она утверждает, что любое неотрицательное целое число, не превосходящее произведения модулей, можно однозначно восстановить, если известны его вычеты по этим модулям, и названа так потому, что результатом приведения числа а по модулю n является остаток от деления а на n.
Фактически в RSA используется следствие из этой теоремы, утверждающее, что если известно разложение числа n на простые множители n=n1n2...nk, где все ni попарно взаимно просты, и результат приведения числа x по модулю ni " i=1,…,k одинаков, то результатом приведения числа x по модулю n будет то же число. То есть " x,a – целых чисел
xº a mod n Û x º a mod ni " i=1,…,k.
4. Теорема Эйлера. Если n >1, то " х Î Zn * (х взаимно простого с n), выполняется сравнение
x φ( n ) º 1 mod n.
Следствие. " х < n и взаимно простого с n можно легко вычислить обратный элемент x -1 в кольце вычетов Zn из сравнения
x -1 º x φ( n )-1 mod n.
Малая теорема Ферма. " x Î GF(p), х ¹ 0, выполняется сравнение
хр- 1 º 1mod p.
Малая теорема Ферма является следствием из теоремы Эйлера, хотя исторически она была доказана раньше, затем Эйлер её обобщил.
Следствие 1: Если p — простое число, то " х, взаимно простого с p:
|
|
xp = х mod p.
Следствие 2:если НОД(е,φ(n))=1 (е - простое относительно φ(n))
то $ d -целое, такое, что
ed = 1 mod n.
На этих математических фактах основан алгоритм RSA.
Алгоpитм RSA
В криптосистеме RSA сообщение m, криптограмма c, открытый ключ Kо, и секретный ключ Кс, принадлежат множеству целых чисел Zn ={0, 1, 2,..., n -1}. Множество Zn с операциями сложения и умножения по модулю n образует кольцо.
Модуль n определяется как составное число равное произведению n=p · q двух больших простых чисел p ·и q. Модуль n является открытым параметром алгоритма, а чисела p ·и q — секретными параметрами. То есть множители p и q хранят в секрете, а их произведение n известно всем, кто пользуется данной криптосистемой. Здесь используется односторонняя функция с ловушкой. Зная секретные параметры алгоритма p и q можно легко вычислить функцию Эйлера j (n) по формуле
j (n)=(p -l)(q -1),
тогда как вычисление j (n) только по большому числу n является трудновычислимой задачей.
Функция Эйлера используется в RSA при вычислении ключей.
Открытый ключ Кo = е выбирают случайным образом из множества
Z* j (n) — чисел меньших j (n) и взаимно простых с j (n).
Иначе условие е ÎZ* j (n) раносильно выполнению двух условий
1< Kо £ j (n), и НОД(Ко, j (n))=1,
которым должено удовлетворять случайно выбранное число Кo = е, чтобы оно могло служить открытым ключом в RSA.
Секретный ключ Kc = d вычисляют так, чтобы выполнялось условие
Kc · Ко = е · d º 1 mod j (n). (*)
То есть, секретный ключ d является обратным элементом к открытому ключу е в множестве Zj (n): d = е -1 mod j (n). Решение сравнения (*) можно найти с помощью расширенного алгоритма Евклида.
Заметим, что d и n также взаимно простые числа. Вычисление секретного ключа по открытому является трудновычислимой задачей, если неизвестны секретные параметры алгоритма p и q, так как при этом трудно вычислить значение функции Эйлера, то есть модуля, по которому приводятся результаты операций при вычислении ключей.
При выполнении шифрования и дешифрования вычисления приводятся по модулю n. Открытый ключ Ко и модуль n сообщают всем, с кем предполагают обмениваться сообщениями и используют для шифрования данных, а секретный ключ Кс хранят в секрете на стороне получателя и используют для дешифрования.
Преобразование шифрования определяет криптограмму c через пару (открытый ключ Ко, сообщение m) в соответствии со следующей формулой:
с =Е Ко (m) = mКо mod n.
В качестве алгоритма быстрого вычисления значения c используют ряд последовательных возведений в квадрат целого m и умножений на m с приведением по модулю n.
Обращение функции с = mКо mod n, т.е. определение значения m по известным значениям с, Кo и n, является задачей дискретного логарифмирования и практически неосуществимо при n»2512.
Однако задачу расшифрования криптограммы с, можно легко решить, используя секретный ключ Кc, по следующей формуле:
m = D Kc (с) = сKc mod n.
Докажем, что в результате возведения криптограммы с в степень секретного ключа Кc получается исходный текст m. Процесс расшифрования можно записать так:
D Kc (E Kо (m)) = D Kc (m e) mod n = (m e) d mod n = med mod n.
По условию выбора ключей
e · d º1 mod j (n) (*)
мы можем написать, что $ k такое что, с учетом свойств j (n):
e · d = k · j (n) +1 = k (p- 1)(q- 1) +1.
Подставим это выражение в показатель степени:
med º m (m (p- 1)) k (q- 1) = (m (q- 1)) k (p- 1).
По малой теореме Ферма (хр-1 º1 mod p, p – простое):
med mod p º m (1) k (q- 1) mod p = m mod p.
Аналогично, заменив p на q, получим:
med mod q º m (1) k (p- 1) mod q = m mod q.
Далее, по следствию из китайской теоремы об остатках так как n=pq:
med mod n = m mod n, ч.т.д.
Таким образом, если криптограмму с возвести в степень Кс:
сKс mod n = m,
то в результате восстанавливается исходный открытый текст m.
Именно поэтому для вычисления секретного ключа Кc используют соотношение (*).
|
|