как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами? |
Алгоритмы с открытыми ключами
Атака методом цепных дробей
См. [1]
В целях ускорения зашифрования и расшифрования в системе RSA часто открытый или секретный показатель выбирают малыми. Поскольку размеры чисел составляют сотни бит, сокращение длины показателей первоначально могло выглядеть обоснованным. Однако такой способ увеличения скорости шифрования часто приводит к снижению стойкости.
Теорема 8.1 (Винер) Пусть в системе RSA выполняются неравенства и . Тогда по открытому ключу можно вычислить секретный показатель .
При некотором целом выполняется неравенство:
Число дробей , для которых , удовлетворяющих полученому соотношению, не превосходит , и все они являются подходящими дробями к рациональному чилу . Для некоторого будет выполняться равенство . Из равенства следует, что числа и взаимно просты, значит, , .
Пример 8.7 Пусть - открытый ключ. Найдём .
Раскладываем число в цепную дробь и находим последовательно подходящие дроби:
Для девятой подходящей дроби получаем, что разность делится нацело на :
Полагаем . Секретный ключ найден.
Атака повторным шифрованием
Строим последовательность: , , . Итак, , а так как , то существует такое натуральное число , что . Но тогда , отсюда следует, что , значит, - решение сравнения .
Пример 8.8 Пусть у нас имеется открытый ключ , и зашифрованное им сообщение . Найдём открытый текст .
Возводя в степень , строим последовательность:
Следовательно, является решением сравнения , а, следовательно, искомым сообщением .
Замечание. Анализ метода повторного шифрования хорошо показывает необходимость соблюдения требований на выбор и для обеспечения стойкости. В данном примере . Неудачный выбор криптосистемы привел к тому, что атака методом повторного шифрования дала результат почти сразу, тогда как нахождение потребовало бы на порядок больших вычислений.
Атака на основе Китайской теоремы об остатках
Как отмечалось ранее, системы шифрования с открытыми ключами работают сравнительно медленно. Для повышения скорости шифрования RSA на практике используют малую экспоненту зашифрования.
Если выбрать число небольшим или таким, чтобы в его двоичной записи было мало единиц, то процедуру шифрования можно значительно ускорить. Например, выбрав (при этом ни , ни не должны делиться на 3), мы сможем реализовать шифрование с помощью одного возведения в квадрат по модулю и одного перемножения. Выбрав - число, двоичная запись которого содержит только две единицы, мы сможем реализовать шифрование с помощью 16 возведений в квадрат по модулю и одного перемножения. Если экспонента выбирается случайно, то реализация шифрования по алгоритму RSA потребует возведений в квадрат по модулю и в среднем умножений по тому же модулю, где - длина двоичной записи числа . Вместе с тем, выбор небольшой экспоненты может привести к негативным последствиям. Дело в том, что у нескольких корреспондентов могут оказаться одинаковые экспоненты .
Пусть, например, три корреспондента имеют попарно взаимно простые модули , , и общую экспоненту . Если еще один пользователь посылает им некое циркулярное сообщение , то криптоаналитик противника может получить в свое распоряжение три шифрованных текста , . Далее, он может найти решение системы сравнений, лежащее в интервале и удовлетворяющее уравнениям:
По китайской теореме об остатках такое решение единственно, а так как , то . Значение можно найти, вычислив кубический корень . Отметим, 8.1 что выбор малой экспоненты расшифрования также нежелателен в связи с возможностью определения простым перебором. Известно также что если , то экспоненту легко найти, используя непрерывные дроби.
Пример 8.9 Три пользователя имеют модули , , . Все пользователи используют экспоненту . Всем пользователям было послано некое сообщение , причем пользователи получили сообщения , , . Найдём .
С помощью китайской теоремы об остатках решим систему:
Для этого вычислим . Далее находим
Отсюда - исходное сообщение, отправленное пользователям.
Бесключевое чтение
Пусть два пользователя выбрали одинаковый модуль и взаимно простые экспоненты и . Если один пользователь посылает им некое циркулярное сообщение , то криптоаналитик противника может получить в свое распоряжение два шифрованных текста и . В таком случае криптоаналитик может получить исходное сообщение, найдя с помощью алгоритма Евклида числа и такие, что . Отсюда получаем:
Пример 8.10 Два пользователя применяют общий модуль , но разные взаимно простые экспоненты и . Пользователи получили шифртексты и , которые содержат одно и то же сообщение. Найдем исходное сообщение методом бесключевого чтения.
Так как и взаимно просты, то найдем такие и , что . С помощью расширенного алгоритма Евклида находим , . Искомое сообщение:
Выводы
Как видно из приведенных выше примеров, выбор параметров криптосистемы является ответственной задачей. Параметры необходимо выбирать в строгом соответствии с требованиями. Существующими в настоящими время методами (и при использовании существующих в настоящее время вычислительных мощностей) атака на алгоритм и/или криптосистему возможна лишь при неудачном выборе параметров. В частности, необходимо обеспечить каждому пользователю уникальные значения , и уникальное значение , удовлетворяющие требованиям, приведенным выше.