Опубликован: 02.03.2017 | Доступ: свободный | Студентов: 1855 / 118 | Длительность: 21:50:00
Лекция 8:

Алгоритмы с открытыми ключами

8.2 Атаки на алгоритм RSA

Для расшифрования необходимо по известным N, e и шифртексту y найти такое x\in \mathbb{Z}_N^\ast, что y=x^e (\mod N).

Попытаемся решить сравнение при конкретных y, затем использовать гомоморфность отображения D(x).

Один из возможных способов следующий: пусть имеется набор пар:

\{(x_1,y_1),(x_2,y_2),\ldots (x_k,y_k)\}

с условием, что x_i^e = y_i ~(\mod N)$, $1<y<N, \GCD(y,N)=1. Если каким-либо образом удалось представить y в виде y=y_1^{s_1} y_2^{s_2}\cdots y_k^{s_k} ~(\mod N) с целыми s_k, то x=x_1^{s_1}x_2^{s_2}\cdots x_k^{s_k} будет решением сравнения y=x^e ~(\mod N).

Пример 8.3 В наличии имеется открытый ключ N = 31459, e = 5 и набор пар соответствующих друг другу исходных и зашифрованных сообщений: (23, 18707), (755, 26871), (631, 6384). Требуется расшифровать шифртекст y = 11 638.

Представим y в виде y=18707^{-1}\cdot 26871^3\cdot 6384^{-2}=11 638. Отсюда легко вычислить исходное сообщение: x=23^{-1}\cdot 755^3 \cdot 631^{-2}=28260.

Заметим, что этот подход не менее труден, чем поиск алгоритма решения сравнения y=x^e ~(\mod N).

Взлом RSA при неудачном выборе параметров криптосистемы

Само по себе использование RSA не обеспечивает безопасности. Дело еще в деталях реализации. Приведем ряд примеров. Для простоты вычислений будем работать с небольшими числами. Цель - показать особенности, не зависящие от размера.

Пример 8.4 Пусть пользователь выбрал N=2047, e=179, d=411. Так как 2047 = 23 \cdot 89, а числа \varphi(23)=22 и \varphi(89)=88 имеют наименьшее общее кратное 88, то любое обратное к 179 по модулю 88, например 59, будет действовать как d.

Пример 8.5 Число N = 536813567 является произведением простого числа Мерсенна 8191 и простого числа Ферма 65537. Это очень плохой выбор.

Пример 8.6 Число 23360947609 является очень плохим выбором для N из-за того, что два его простых делителя слишком близки к друг другу.

Пусть p>q, тогда имеем:

N=t^2 - s^2, \qquad t=\frac{p+q}{2},\ s=\frac{p-q}{2}.

Так как S мало, то t - целое число, лишь немного большее \sqrt{N}, причем t^{2}-N является полным квадратом. Проверяем подряд целые числа t>\sqrt{N}. В нашем примере это t_1 = 152843, t_2 = 152844, t_3 = 152845, причем t_3^2-N=804^2. Тогда p = 152845 - 804. Таким образом, мы с третьей попытки нашли p и q. Количество попыток, необходимых для факторизации N, можно при известных p и q вычислить по следующей формуле:

k=\sqrt{p\cdot q + \left(\frac{p-q}{2}\right)^2}-\left[\sqrt{p\cdot q}\right],

где [x] - операция округления x до ближайшего целого числа.

Юлия Мышкина
Юлия Мышкина

Обучение с персональным тьютором осуществляется по Скайпу или посредством переписки?