как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами? |
Алгоритмы с открытыми ключами
Атака методом цепных дробей
См. [1]
В целях ускорения зашифрования и расшифрования в системе RSA часто открытый или секретный показатель выбирают малыми. Поскольку размеры чисел составляют сотни бит, сокращение длины показателей первоначально могло выглядеть обоснованным. Однако такой способ увеличения скорости шифрования часто приводит к снижению стойкости.
Теорема 8.1 (Винер) Пусть в системе RSA выполняются неравенства и
. Тогда по открытому ключу
можно вычислить секретный показатель
.
При некотором целом выполняется неравенство:
![\left|\frac{e}{n}-\frac{k}{d}\right|\leq \frac{1}{d\sqrt[4]{n}} < \frac{1}{2d^2}.](/sites/default/files/tex_cache/5d10cb60ecd3ee56bbd94e97ce2f605e.png)
Число дробей , для которых
, удовлетворяющих полученому соотношению, не превосходит
, и все они являются подходящими дробями
к рациональному чилу
. Для некоторого
будет выполняться равенство
. Из равенства
следует, что числа
и
взаимно просты, значит,
,
.
Пример 8.7 Пусть - открытый ключ. Найдём
.
Раскладываем число в цепную дробь и находим последовательно подходящие дроби:
![\begin{align*}\frac{2693216516134636609}{4617790059809965777}=[0;1,1,2,1,1,64,3,1,1,61,2,9,\ldots],\\
\frac{P_1}{Q_1} =\frac{1}{1};\quad \frac{P_2}{Q_2} =\frac{1}{2};\quad \frac{P_3}{Q_3} =\frac{3}{5};\quad \frac{P_4}{Q_4} =\frac{4}{7};\quad \frac{P_5}{Q_5} =\frac{7}{12};\\
\frac{P_6}{Q_6} =\frac{452}{775};\quad \frac{P_7}{Q_7} =\frac{1363}{2337};\quad \frac{P_8}{Q_8} =\frac{1815}{3112};\quad
\frac{P_9}{Q_9} =\frac{3178}{5449}.\end{align*}](/sites/default/files/tex_cache/0c35a8d53ad38edc5d6c6afabccf3f74.png)
Для девятой подходящей дроби получаем, что разность делится нацело на
:
![2693216516134636609\cdot 5449-1=3178\cdot 4617790055512156980.](/sites/default/files/tex_cache/815649e8ca6bb5b3e93d46a5ab6694e6.png)
Полагаем . Секретный ключ найден.
Атака повторным шифрованием
Строим последовательность: ,
,
. Итак,
, а так как
, то существует такое натуральное число
, что
. Но тогда
, отсюда следует, что
, значит,
- решение сравнения
.
Пример 8.8 Пусть у нас имеется открытый ключ ,
и зашифрованное им сообщение
. Найдём открытый текст
.
Возводя в степень
, строим последовательность:
![\begin{align*}y_1 = y = 8646,\quad y_2 = 37043,\quad y_3 = 5569,\quad y_4 = 61833,\\ y_5 = 83891,\quad y_6 = 16137,\quad y_7 = 8646 = y.\end{align*}](/sites/default/files/tex_cache/cc5c2e63d0a31d872c623f3a885c7534.png)
Следовательно, является решением сравнения
, а, следовательно, искомым сообщением
.
Замечание. Анализ метода повторного шифрования хорошо показывает необходимость соблюдения требований на выбор и
для обеспечения стойкости. В данном примере
. Неудачный выбор криптосистемы привел к тому, что атака методом повторного шифрования дала результат почти сразу, тогда как нахождение
потребовало бы на порядок больших вычислений.
Атака на основе Китайской теоремы об остатках
Как отмечалось ранее, системы шифрования с открытыми ключами работают сравнительно медленно. Для повышения скорости шифрования RSA на практике используют малую экспоненту зашифрования.
Если выбрать число небольшим или таким, чтобы в его двоичной записи было мало единиц, то процедуру шифрования можно значительно ускорить. Например, выбрав
(при этом ни
, ни
не должны делиться на 3), мы сможем реализовать шифрование с помощью одного возведения в квадрат по модулю
и одного перемножения. Выбрав
- число, двоичная запись которого содержит только две единицы, мы сможем реализовать шифрование с помощью 16 возведений в квадрат по модулю
и одного перемножения. Если экспонента
выбирается случайно, то реализация шифрования по алгоритму RSA потребует
возведений в квадрат по модулю
и в среднем
умножений по тому же модулю, где
- длина двоичной записи числа
.
Вместе с тем, выбор небольшой экспоненты
может привести к негативным последствиям. Дело в том, что у нескольких корреспондентов могут оказаться одинаковые экспоненты
.
Пусть, например, три корреспондента имеют попарно взаимно простые модули ,
,
и общую экспоненту
. Если еще один пользователь посылает им некое циркулярное сообщение
, то криптоаналитик противника может получить в свое распоряжение три шифрованных текста
,
. Далее, он может найти решение системы сравнений, лежащее в интервале
и удовлетворяющее уравнениям:
![\left\{\begin{array}{l}
y\equiv y_1 ~(mod\; N_1),\\
y\equiv y_2 ~(mod\; N_2),\\
y\equiv y_3 ~(mod\; N_3)
\end{array}\right.](/sites/default/files/tex_cache/a3052cf82d62234a8d652206f97f9192.png)
По китайской теореме об остатках такое решение единственно, а так как
, то
. Значение
можно найти, вычислив кубический корень
. Отметим, 8.1 что выбор малой экспоненты расшифрования
также нежелателен в связи с возможностью определения
простым перебором. Известно также что если
, то экспоненту
легко найти, используя непрерывные дроби.
Пример 8.9 Три пользователя имеют модули ,
,
. Все пользователи используют экспоненту
. Всем пользователям было послано некое сообщение
, причем пользователи получили сообщения
,
,
. Найдём
.
С помощью китайской теоремы об остатках решим систему:
![\left\{\begin{array}{l}
y=5366 ~(mod\; 26549),\\
y=814 ~(mod\; 45901), \\
y=4454 ~(mod\; 25351).
\end{array}\right.](/sites/default/files/tex_cache/d9ba988e55e4aac0b05dd05cc73408ff.png)
Для этого вычислим . Далее находим
Отсюда - исходное сообщение, отправленное пользователям.
Бесключевое чтение
Пусть два пользователя выбрали одинаковый модуль и взаимно простые экспоненты
и
. Если один пользователь посылает им некое циркулярное сообщение
, то криптоаналитик противника может получить в свое распоряжение два шифрованных текста
и
. В таком случае криптоаналитик может получить исходное сообщение, найдя с помощью алгоритма Евклида числа
и
такие, что
. Отсюда получаем:
![y_1^r y_2^s = x^{re_1 + se_2} = x ~(mod\; N).](/sites/default/files/tex_cache/b7b38e619bf2d9f4c670b4c44449e97f.png)
Пример 8.10 Два пользователя применяют общий модуль , но разные взаимно простые экспоненты
и
. Пользователи получили шифртексты
и
, которые содержат одно и то же сообщение. Найдем исходное сообщение методом бесключевого чтения.
Так как и
взаимно просты, то найдем такие
и
, что
. С помощью расширенного алгоритма Евклида находим
,
. Искомое сообщение:
![x=y_1^r\cdot y_2^s = 60197^{61} \cdot 63656^{-50}=1234.](/sites/default/files/tex_cache/ca6f23a25406b04f2af8491e66678b57.png)
Выводы
Как видно из приведенных выше примеров, выбор параметров криптосистемы является ответственной задачей. Параметры необходимо выбирать в строгом соответствии с требованиями. Существующими в настоящими время методами (и при использовании существующих в настоящее время вычислительных мощностей) атака на алгоритм и/или криптосистему возможна лишь при неудачном выборе параметров. В частности, необходимо обеспечить каждому пользователю уникальные значения ,
и уникальное значение
, удовлетворяющие требованиям, приведенным выше.