Алгоритм Райвеста-Шамира-Адлемана

Содержание

Слайд 2

Область применения
Шифрование;
Цифровое подписывание.

Область применения Шифрование; Цифровое подписывание.

Слайд 3

RSA и DH

Алгоритм RSA во многом схож с алгоритмом Диффи-Хеллмана.
Принци­пиальное различие:
Алгоритм DH

RSA и DH Алгоритм RSA во многом схож с алгоритмом Диффи-Хеллмана. Принци­пиальное
основан на использовании односторонней функции;
Алгоритм RSA основан на использовании односторонней функции с лазейкой.

Слайд 4

Лазейка для RSA

Вычисления производятся по модулю составного числа n=p*q, где p

Лазейка для RSA Вычисления производятся по модулю составного числа n=p*q, где p
и q- простые числа;
Зная публично известные n и e, мы можем найти me(mod n) по заданному m, но не наоборот. При этом, зная, как n раскладывается на множители; выполнить обратную операцию очень легко. Разложение числа n на множи­тели и есть "лазейка". (Если мы знаем эту информацию, то можем легко выполнить обратное действие, а если не знаем, то не можем).

Слайд 5

Китайская теорема об остатках (Сунь Цзе 1 век д.н.э.)

Числа по модулю n

Китайская теорема об остатках (Сунь Цзе 1 век д.н.э.) Числа по модулю
— это 0,1,..., n — 1. Они не образуют конечное поле, как в том случае, если бы n было простым числом. Математики обозначают это множество чисел как Zn и называют его кольцом.
Для каждого х из Zn можно легко вычислить пару (хmodp, хmodq). Китайская теорема об остатках утверждает, что можно выполнить и обратную операцию: зная пару (xmodp, xmodq), можно восстановить исходное значение х.

Слайд 6

Доказательство. Единственность решения

Для упрощения записи введем обозначение (а, b):= (х mod p,

Доказательство. Единственность решения Для упрощения записи введем обозначение (а, b):= (х mod
x mod q). Вначале покажем, что восстановление исходного значения х вообще возможно, а затем приведем алгоритм его вычисления.
Чтобы вычислить х по заданным (а, b), следует убедиться, что в Zn не существует второго такого числа х', для которого х' mod р = а и х' mod q = b. В противном случае и x и х' привели бы к появлению одной и той же пары (а, b), и ни один алгоритм не смог бы распознать, какое из этих значений является исходным.
Пусть d:= х — х' — это разность чисел, которым соответствует одна и же пара (а, b).
Имеем (d mod р) = (х — х') mod р = (х mod р) — (х'mod p)= =а—а = О, а следовательно, d кратно р.
Аналогичным образом получаем, что d кратно q.
Отсюда следует, что d является кратным НОК(р, q), так как НОК это, наименьшее общее кратное. Поскольку p и q — это неодинаковые простые числа, HОK(p, q) = pq =n, а значит, х — х' кратно n.
Но и x и x' лежат в диапазоне 0,1,... ,n — 1, поэтому разность х - х', кратная n, находится в диапазоне: —n + 1,..., n — 1. Единственным возможным значением такой разности, кратным n, является х—х' = 0, или х = х'. Это доказывает, что для любой заданной пары (а, b) существует не более одного х, удовлетворяющего условиям теоремы. Остается лишь найти значение х.

Слайд 7

Доказательство. Существование решения

Самым удобным способом вычисления х является формула Гарнера:
х = (((а

Доказательство. Существование решения Самым удобным способом вычисления х является формула Гарнера: х
-b)(q-1 mod p)) mod p) * q + b (*).
Здесь множитель (q-1 mod p) — это константа, которая зависит только от p и q. Мы можем выполнять деление по модулю р, а значит, и вычислять (1/qmodp), что является всего лишь другой формой записи выражения (q-1 modp).
Вначале покажем, что х находится в диапазоне 0,... ,n — 1.
Очевидно, x ≥ 0 .
Обозначим за t выражение (((a-b)(q-1 mod p)) mod p). Значение t должно попадать в диапазон 0,…,р — 1, так как является результатом вычисления по модулю р.
Если t ≤ p — 1, тогда tq ≤ (p — l)q и х = tq + b(из (*)) ≤ (p — l)q + (q — 1) = pq — 1 = n— 1.
Очевидно, значение х действительно находится в диапазоне 0,..., n — 1.

Слайд 8

Доказательство. Существование решения

Теперь покажем, что найденное значение х дает правильный результат и

Доказательство. Существование решения Теперь покажем, что найденное значение х дает правильный результат
модулю р, и по модулю q.
x mod q= ((((a-b)(q-1 mod p)) mod p)* q + b)mod q=(К*q + b)mod q =
= b mod q=b.
Выражение (((a — b)(q-1 mod p)) mod p), которое умножается на q — это некотopoe целое число К, но при выполнении операций по модулю q любое кратное q можно отбросить.
х mod р = ((((а - b)(q-1 mod p)) mod p)* q + b) mod p = (((a – b) q-1)* q + b) mod p = ((a - b)(q-1 *q) + b) mod p =((a — b) + b) mod p = amod p=a.
Избавляемся от нескольких лишних операторов по mod p, изменяем порядок умножения и замечаем, что (q-1 *q) = l(mod p).
Таким образом формула Гарнера дает результат х, который лежит в нужном диапазоне и для которого (а, b)=(хmodp ,хmodq). Поскольку мы уже знаем, что такое решение может быть только одно, результат формулы Гарнера полностью решает китайскую теорему остатках.

Слайд 9

RSA. Шифрование.

RSA. Шифрование.

Слайд 10

Генерация ключей

Выбираются два разных случайных простых числа р и q (порядка 1024

Генерация ключей Выбираются два разных случайных простых числа р и q (порядка
бит каждое) и вычисляется n=pq;
Вычисляется число t = НОК(р-l,q-1);
Выбирается целое число e взаимно простое с t и вычисляется число d такое, что ed=1(mod t);
Пара (n, e) образует открытый ключ.
Значения (р, q, t, d) образуют закрытый ключ и сохраняются в секрете человеком, который сгенерировал ключ RSA.

Слайд 11

Шифрование. Расшифрование.

Чтобы зашифровать сообщение m, отправитель генерирует шифрованный текст с:=me(mod n).
Чтобы

Шифрование. Расшифрование. Чтобы зашифровать сообщение m, отправитель генерирует шифрованный текст с:=me(mod n).
расшифровать шифрованный текст с, получатель вычисляет cd(mod n).
Это эквивалентно значению
(me)d(modn)=med(modn)=mkt+1(modn)=(mt)k*m(mod)=
=m(mod n),
где k - некое целое число, которое всегда существует.
Таким образом, получатель может расшифровать шифрованный текст mе, чтобы получить открытый текст m.

Слайд 12

Пример. Генерация ключей.

Выберем р=3 и q=11.
Определим n=3*11=33.
Найдем (р-1)*(q-1)=20. Следовательно в качестве

Пример. Генерация ключей. Выберем р=3 и q=11. Определим n=3*11=33. Найдем (р-1)*(q-1)=20. Следовательно
e выберем любое число, которое является взаимно простым с числом 20, например e=3.
Выберем число d. В качестве такого числа может быть взято любое число, для которого выполняется равенство
(d*3)mod 20=1, например d=7.
Пара (33, 3) образует открытый ключ.
Значения (3, 11, 20, 7) образуют закрытый ключ

Слайд 13

Пример. Шифрование.

Т.к. в качестве n было взято число 33, можем шифровать буквы

Пример. Шифрование. Т.к. в качестве n было взято число 33, можем шифровать
русского алфавита производя вычисления по модулю 33.
Зашифруем слово «бал», переведем буквы в соответствующие числовые значения (2,1,13)
C1=(2^3)mod33=8mod33=8;
C2=(1^3)mod33=1mod33=1;
C3=(13^3)mod33=2197mod33=19.
Зашифрованное слово (8,1,12) или «жас»

Слайд 14

Пример. Расшифрование.

Зашифрованное слово (8,1,19) или «жас»
M1=(8^7)mod33=2097152mod33=2, M2=(1^7)mod33=1mod33=1, M3=(19^7)mod33=893871739mod33=13.
Расшифрованное слово (2,1,13) или «бал»

Пример. Расшифрование. Зашифрованное слово (8,1,19) или «жас» M1=(8^7)mod33=2097152mod33=2, M2=(1^7)mod33=1mod33=1, M3=(19^7)mod33=893871739mod33=13. Расшифрованное слово (2,1,13) или «бал»

Слайд 15

RSA. Электронная подпись.

RSA. Электронная подпись.

Слайд 16

RSA. Создание электронной подписи.

Для сообщения m создается цифровая подпись s на основании

RSA. Создание электронной подписи. Для сообщения m создается цифровая подпись s на
секретного ключа пользователя А
s=SA(m)=md(modn);
Пара (m,s) передается пользователю В.

Слайд 17

RSA. Проверка электронной подписи.

Применить открытый ключ пользователя А к паре (m,s)
m‘=PA(s)=se(modn);
Проверить

RSA. Проверка электронной подписи. Применить открытый ключ пользователя А к паре (m,s)
подлинность подписи сравнив m и m‘.
Если m=m‘ – верификация проходит успешно.

Слайд 18

Проблемы использования RSA

Четкая математическая структура
(если пользователь А подпишет цифровой подписью два со­общения

Проблемы использования RSA Четкая математическая структура (если пользователь А подпишет цифровой подписью
– m1 и m2, пользователь Б сможет вычислить, какой должна быть подпись пользователя А для сообщения m3:= m1m2(modn);
Шифрование сообщения малого ((если при возведении в степень e символ сообщения принимает значение Необходимость применять в качестве ключей шифрования и ЭП не пересекающиеся множества;
Атаки основанные на методах решения полиномиальных уравнений по модулю n.