Основные определения и теоремы

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

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,       ч.т.д.

Таким образом, если криптограмму с возвести в степень Кс:

с mod n = m,

то в результате восстанавливается исходный открытый текст m.

Именно поэтому для вычисления секретного ключа Кc используют соотношение (*).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: