Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lecter / системы с откр.ключом.5 раздел.doc
Скачиваний:
28
Добавлен:
10.02.2016
Размер:
136.7 Кб
Скачать

5.1. Шифр Ривеста-Шамира-Алдемана

Несмотря на довольно большое число различных систем с открытыми ключами, наиболее популярна - криптосистема RSA, разработанная в 1977 году и получившая название в честь ее создателей: Рона Ривеста, Ади Шамиpа и Леонарда Эйдельмана, которые придумали ее во время совместных исследований в Массачусетском технологическом институте.

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

Возможность гарантированно оценить защищенность алгоритма RSA стала одной из причин популярности этой СОК на фоне десятков других схем. Поэтому алгоритм RSA используется в банковских компьютерных сетях, особенно для работы с удаленными клиентами (обслуживание кредитных карточек). Международная сеть электронного перечисления платежей SWIFT уже требует от банковских учреждений, пользующихся ее услугами, применения именно этой криптографической системы.

В настоящее время алгоритм RSA используется во многих стандартах, среди которых SSL, S-HHTP, S-MIME, S/WAN, STT и PCT.

Рассмотрим математические результаты, положенные в основу этого алгоритма.

Теорема 1. (Малая теорема Ферма.)

Если р - простое число, то xp-1 = 1 (mod p) для любого х, простого относительно р,

и xp =х(modp)для любого х.

Определение. Функцией Эйлера (n) называется число положительных целых, меньших n и простых относительно n.

n

2

3

4

5

6

7

8

9

10

11

12

(n)

1

2

2

3

2

6

4

6

4

10

4

Теорема 2. Если n=pq, (p и q - отличные друг от друга простые числа), то

(n)=(p-1)(q-1).

Теорема 3. Если n=pq, (p и q - отличные друг от друга простые числа) и х - простое относительно р и q, то

x(n) = 1 (mod n).

Следствие . Если n=pq, (p и q - отличные друг от друга простые числа) и е простое относительно (n), то отображение

Еe,n: xxe (mod n)

является взаимно однозначным на Zn.

Очевиден и тот факт, что если е - простое относительно (n), то существует целое d, такое, что

ed = 1 (mod (n))

На этих математических фактах и основан популярный алгоритм RSA.

Алгоритм работает так:

  1. Отправитель выбирает два очень больших простых числа р и q и вычисляет два произведения n=pq и m=(p-1)(q-1).

  2. Затем он выбирает случайное целое число d, взаимно простое с m, и вычисляет e, удовлетворяющее условию de = 1 mod m.

  3. После этого он публикует d и n как свой открытый ключ шифрования, сохраняя е как закрытый ключ.

  4. Если S - сообщение, длина которого, определяемая по значению выражаемого им целого числа, должна быть в интервале (1, n), то оно превращается в шифровку возведением в степень d по модулю n и отправляется получателю S'=(S**d)modn.

  5. Получатель сообщения расшифровывает его, возводя в степень е по модулю n, так как S = (S'**e)mod n = (S**(d*e))mod n.

Таким образом, открытым ключом служит пара чисел n и d, а секретным ключом число е. Смысл этой системы шифрования становится прозрачным, если упомянуть про малую теорему Ферма, которая утверждает, что при простом числе р и любом целом числе к, которое меньше р, справедливо тождество к**(p-1)=1mod р. Эта теорема позволяет определять, является ли какое-либо число простым или же составным.

Итак, в реальных системах алгоритм RSA реализуется следующим образом: каждый пользователь выбирает два больших простых числа, и в соответствии с описанным выше алгоритмом выбирает два простых числа e и d. Как результат умножения первых двух чисел (p и q) устанавливается n.

{e,n} образует открытый ключ, а {d,n} - закрытый (хотя можно взять и наоборот).

Открытый ключ публикуется и доступен каждому, кто желает послать владельцу ключа сообщение, которое зашифровывается указанным алгоритмом. После шифрования, сообщение невозможно раскрыть с помощью открытого ключа. Владелец же закрытого ключа без труда может расшифровать принятое сообщение.