Теорема Копперсмита

Теорема Копперсмита (метод Копперсмита) — теорема, позволяющая эффективно найти все нули нормированных многочленов по определённому модулю.[1]

Теорема используется в основном для атак на криптосистему RSA. Этот метод является эффективным, если экспонента кодирования имеет достаточно малое значение, либо когда известна часть секретного ключа. Теорема также связана с LLL-алгоритмом.

Теорема предлагает алгоритм эффективного нахождения корней нормированного многочлена по модулю , которые меньше чем . Если будет малым, то алгоритм будет работать быстрее. Преимущество теоремы это возможность находить малые корни многочлена по составному модулю . Если же модуль — простое число, то нет смысла использовать теорему Копперсмита. Намного эффективнее будет использовать другие способы нахождения корней многочлена.[1]

Маленькая экспонента кодирования

[править | править код]

Чтобы уменьшить время шифрования или проверки подписи, желательно использовать маленькое (экспонента кодирования). Наименьшее возможное значение — , однако рекомендуется использовать (для защиты от некоторых атак). При использовании значения на проверку подписи требуется 17 умножений (, где  — порядок мультипликативной группы , возможно около 1000). Атаки ориентированные на использование маленького не всегда действенны.

Самые мощные атаки на маленькую экспоненту кодирования основываются на теореме Копперсмита, которая имеет много приложений, одно из которых атака Хастеда (Hasted).[2]

Атака Хастеда

[править | править код]

Предположим один отправитель отправляет одно и то же сообщение в зашифрованном виде определённому количеству людей , каждый из которых использует одну и ту же маленькую экспоненту кодирования , скажем , и различные пары , причем . Отправитель зашифровывает сообщение, используя поочередно открытый ключ каждого пользователя, и отсылает его соответствующему адресату. Тогда, если противник прослушает канал передачи и соберет переданных шифротекстов, то он сможет восстановить сообщение .

Доказательство

[править | править код]

Предположим противник перехватил и , где . Мы предполагаем, что взаимно просты, иначе наибольший общий делитель отличный от единицы означал нахождение делителя одного из . Применяя китайскую теорему об остатках к и получим , такое что , которое имеет значение . Однако, зная что , получаем . Поэтому , то есть противник может расшифровать сообщение взяв корень кубический от .

Для восстановления сообщения с любым значением открытой экспоненты кодирования , необходимо противнику перехватить шифротекстов.

Формулировка

[править | править код]

Пусть и нормированный многочлен степени . Пусть , . Тогда по паре атакующий эффективно найдет все целые числа , удовлетворяющие . Время выполнения определяется выполнением LLL-алгоритма на решетке размерности , где .[1]

Доказательство

[править | править код]

Пусть натуральное число, которое мы определим позже. Определим

Мы используем в качестве основы для нашей решетки полиномы для и . Например, когда и мы получаем матрицу решетки, натянутую на строки:

,

где «—» обозначает ненулевые недиагональные элементы, значение которых не влияет на определитель. Размер этой решетки равен , а её определитель считается так:

Потребуем, чтобы . Отсюда следует

что можно упростить до

,

где и для всех . Если мы возьмем , то получим а, следовательно, и . В частности, если мы хотим решить для произвольного , достаточно взять , где . [3]

Примечания

[править | править код]
  1. 1 2 3 Dan Boneh. Twenty Years of Attacks on the RSA Cryptosystem. Дата обращения: 25 ноября 2016. Архивировано 26 марта 2016 года.
  2. Ушаков Константин. Взлом системы RSA. Дата обращения: 25 ноября 2016. Архивировано 1 декабря 2016 года.
  3. Glenn Durfee. CRYPTANALYSIS OF RSA USING ALGEBRAIC AND LATTICE METHODS (июнь 2002). Дата обращения: 30 ноября 2016. Архивировано 4 марта 2016 года.