dzagalskii / RSA_Attacks

Attacks on the RSA cryptosystem without factoring a number

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Атаки на криптосистему RSA

Настройка среды разработки

Данная программа была реализована на Anaconda 3 на языке программирования Python 3 в среде разработки Jupyter Notebook. Для работы программы требуются библиотеки: pycryptodome. Остальные зависимости присутствуют в Anaconda 3. Чтобы установить недостающие библиотеки, нужно выполнить следующие команды в командной строке Anaconda 3:

$ pip install pycryptodome

Реализованные атаки на RSA

1 Разложение составного числа на множители по известным показателям RSA

Если в системе RSA у пользователей A и B общее составное число n, но различные открытые e_A, e_B и закрытые d_A, d_B ключи, причем e_A d_A = e_B d_B (mod phi(n)), то каждый пользователь может найти разложение числа n и тем самым узнать закрытый ключ другого пользователя. Для этого нарушителю (например, пользователю B) достаточно найти значение квадратного корня из единицы, отличное от +-1. Если t^2 = 1 (mod n), t != +-1, то t^2 - 1 = (t + 1)(t - 1) = 0 (mod n), и t + 1, t - 1 имеют нетривиальные общие делители с n. Разложение можно выполнить по аналогии с псевдопростым тестом Миллера–Рабина реализованным алгоритмом.

2 Случай малого закрытого показателя: атака Винера

Атака Винера на схему RSA основана на предположении, что значение закрытого показателя d достаточно мало. Пусть n = pq, q < p < 2q, (n, e) − открытый ключ, (n, d) − закрытый ключ схемы RSA. Тогда если d < (1 / 3) n^(1 / 4), то значение закрытого показателя d может быть вычислено за полиномиальное от n время.

3 Случай специальных открытых показателей: бесключевое дешифрование сообщения в случае малого порядка e в (Z/phi(n)Z)*

Каждый пользователь i системы связи с шифрованием по схеме RSA должен иметь свое персональное число n_i = p_i q_i. Для ускорения процесса шифрования иногда используются малые открытые показатели e_i, причем они могут быть одинаковыми, например, 3 или 5. В этом случае, даже если числа n_i различны, можно выполнить бесключевое дешифрование сообщения.

About

Attacks on the RSA cryptosystem without factoring a number


Languages

Language:Jupyter Notebook 100.0%