Алгоритмы асимметричного шифрования
Обсуждение криптоанализа
Можно определить четыре возможных подхода для криптоанализа алгоритма RSA:
- Лобовая атака: перебрать все возможные закрытые ключи.
- Разложить n на два простых сомножителя. Это даст возможность вычислить ϕ(n)=(p–1)•(q–1) и d=e–1 (mod ϕ(n)).
- Определить ϕ(n) непосредственно, без начального определения р и q. Это также даст возможность определить d=e–1(mod ϕ(n)).
- Определить d непосредственно, без начального определения ϕ(n).
Защита от лобовой атаки для RSA и ему подобных алгоритмов состоит в использовании большой длины ключа. Таким образом, чем больше битов в е и d, тем лучше. Однако, так как вычисления, связанные с возведением в степень, необходимы как при создании ключей, так и при шифровании / расшифровании, чем больше размер ключа, тем медленнее работает система.
Большинство дискуссий о криптоанализе RSA фокусируется на задаче разложения n на два простых сомножителя. В настоящее время неизвестны алгоритмы, с помощью которых можно было бы разложить число на два простых множителя для очень больших чисел (т.е. несколько сотен десятичных цифр). Лучший из известных алгоритмов дает результат, пропорциональный
Пока не разработаны лучшие алгоритмы разложения числа на простые множители, можно считать, что величина n от 100 до 200 цифр в настоящее время является достаточно безопасной. На современном этапе считается, что число из 100 цифр может быть разложено на множители за время порядка двух недель. Для дорогих конфигураций (т.е. порядка $10 млн) число из 150 цифр может быть разложено приблизительно за год. Разложение числа из 200 цифр находится за пределами вычислительных возможностей. Например, даже если вычислительный уровень в 1012 операций в секунду достижим, что выше возможностей современных технологий, то потребуется свыше 10 лет для разложения на множители числа из 200 цифр с использованием существующих алгоритмов.
Для известных в настоящее время алгоритмов задача определения ϕ(n) по данным е и n, по крайней мере сопоставима по времени с задачей разложения числа на множители.
Для того чтобы избежать выбора значения n, которое могло бы легко раскладываться на сомножители, на р и q должно быть наложено много дополнительных ограничений:
- р и q должны друг от друга отличаться по длине только несколькими цифрами. Таким образом, оба значения р и q должны быть от 1075 до 10100.
- Оба числа (р – 1) и (q – 1) должны содержать большой простой сомножитель.
- НОД(p–1, q–1) должен быть маленьким.