Теорема Копперсмита
Теорема Копперсмита (метод Копперсмита) — теорема, позволяющая эффективно найти все нули нормированных многочленов по определённому модулю.[1]
Теорема используется в основном для атак на криптосистему RSA. Этот метод является эффективным, если экспонента кодирования имеет достаточно малое значение, либо когда известна часть секретного ключа. Теорема также связана с LLL-алгоритмом.
ОписаниеПравить
ВведениеПравить
Теорема предлагает алгоритм эффективного нахождения корней нормированного многочлена по модулю , которые меньше чем . Если будет малым, то алгоритм будет работать быстрее. Преимущество теоремы это возможность находить малые корни многочлена по составному модулю . Если же модуль — простое число, то нет смысла использовать теорему Копперсмита. Намного эффективнее будет использовать другие способы нахождения корней многочлена.[1]
Маленькая экспонента кодированияПравить
Чтобы уменьшить время шифрования или проверки подписи, желательно использовать маленькое (экспонента кодирования). Наименьшее возможное значение — , однако рекомендуется использовать (для защиты от некоторых атак). При использовании значения на проверку подписи требуется 17 умножений ( , где — порядок мультипликативной группы , возможно около 1000). Атаки ориентированные на использование маленького не всегда действенны.
Самые мощные атаки на маленькую экспоненту кодирования основываются на теореме Копперсмита, которая имеет много приложений, одно из которых атака Хастеда (Hasted).[2]
Атака ХастедаПравить
Предположим один отправитель отправляет одно и то же сообщение в зашифрованном виде определённому количеству людей , каждый из которых использует одну и ту же маленькую экспоненту кодирования , скажем , и различные пары , причем . Отправитель зашифровывает сообщение, используя поочередно открытый ключ каждого пользователя, и отсылает его соответствующему адресату. Тогда, если противник прослушает канал передачи и соберет переданных шифротекстов, то он сможет восстановить сообщение .
ДоказательствоПравить
Предположим противник перехватил и , где . Мы предполагаем, что взаимно просты, иначе наибольший общий делитель отличный от единицы означал нахождение делителя одного из . Применяя китайскую теорему об остатках к и получим , такое что , которое имеет значение . Однако, зная что , получаем . Поэтому , то есть противник может расшифровать сообщение взяв корень кубический от .
Для восстановления сообщения с любым значением открытой экспоненты кодирования , необходимо противнику перехватить шифротекстов.
ФормулировкаПравить
Пусть и нормированный многочлен степени . Пусть , . Тогда по паре атакующий эффективно найдет все целые числа , удовлетворяющие . Время выполнения определяется выполнением LLL-алгоритма на решетке размерности , где .[1]
ДоказательствоПравить
Пусть натуральное число, которое мы определим позже. Определим
Мы используем в качестве основы для нашей решетки полиномы для и . Например, когда и мы получаем матрицу решетки, натянутую на строки:
,
где «—» обозначает ненулевые недиагональные элементы, значение которых не влияет на определитель. Размер этой решетки равен , а её определитель считается так:
Потребуем, чтобы . Отсюда следует
что можно упростить до
,
где и для всех . Если мы возьмем , то получим а, следовательно, и . В частности, если мы хотим решить для произвольного , достаточно взять , где . [3]
См. такжеПравить
ПримечанияПравить
- ↑ 1 2 3 Dan Boneh. Twenty Years of Attacks on the RSA Cryptosystem (неопр.). Дата обращения: 25 ноября 2016. Архивировано 26 марта 2016 года.
- ↑ Ушаков Константин. Взлом системы RSA (неопр.). Дата обращения: 25 ноября 2016. Архивировано 1 декабря 2016 года.
- ↑ Glenn Durfee. CRYPTANALYSIS OF RSA USING ALGEBRAIC AND LATTICE METHODS (неопр.) (июнь 2002). Дата обращения: 30 ноября 2016. Архивировано 4 марта 2016 года.