Это не официальный сайт wikipedia.org 01.01.2023

Теорема Копперсмита — Википедия

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

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

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

ОписаниеПравить

ВведениеПравить

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

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

Чтобы уменьшить время шифрования или проверки подписи, желательно использовать маленькое e   (экспонента кодирования). Наименьшее возможное значение — 3  , однако рекомендуется использовать e = 2 16 + 1 = 65537   (для защиты от некоторых атак). При использовании значения 2 16 + 1   на проверку подписи требуется 17 умножений ( e ϕ ( N )  , где ϕ ( N )   — порядок мультипликативной группы Z N  , возможно около 1000). Атаки ориентированные на использование маленького e   не всегда действенны.

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

Атака ХастедаПравить

Предположим один отправитель отправляет одно и то же сообщение M   в зашифрованном виде определённому количеству людей P 1 ; P 2 ; . . . ; P k  , каждый из которых использует одну и ту же маленькую экспоненту кодирования e  , скажем e = 3  , и различные пары N i , e  , причем M < N i , i  . Отправитель зашифровывает сообщение, используя поочередно открытый ключ каждого пользователя, и отсылает его соответствующему адресату. Тогда, если противник прослушает канал передачи и соберет k 3   переданных шифротекстов, то он сможет восстановить сообщение M  .

ДоказательствоПравить

  Предположим противник перехватил C 1 , C 2   и C 3  , где C i = M 3 mod N i  . Мы предполагаем, что N 1 , N 2 , N 3   взаимно просты, иначе наибольший общий делитель отличный от единицы означал нахождение делителя одного из n  . Применяя китайскую теорему об остатках к C 1 , C 2   и C 3   получим C Z N 1 , N 2 , N 3  , такое что C i C mod N i  , которое имеет значение C = M 3 mod N 1 N 2 N 3  . Однако, зная что M < N i , i  , получаем M 3 < N 1 N 2 N 3  . Поэтому C = M 3  , то есть противник может расшифровать сообщение M   взяв корень кубический от C  .

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

ФормулировкаПравить

Пусть N Z   и f ( x ) Z [ x ]   нормированный многочлен степени d  . Пусть X = N 1 d ε  , ε 0  . Тогда по паре N , f   атакующий эффективно найдет все целые числа | x 0 | < | X |  , удовлетворяющие f ( x 0 ) 0 mod N  . Время выполнения определяется выполнением LLL-алгоритма на решетке размерности O ( ω )  , где ω = min { 1 ε , log 2 N }  .[1]

ДоказательствоПравить

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

g i , k ( x ) = x i ( f ( x ) / M ) k  

Мы используем в качестве основы для нашей решетки L   полиномы g i , k ( x X )   для i = 0 , . . . , d 1   и k = 0 , . . . , m 1  . Например, когда d = 3   и m = 3   мы получаем матрицу решетки, натянутую на строки:

[ 1 X X 2 X 3 M 1 X 4 M 1 X 5 M 1 X 6 M 2 X 7 M 2 X 8 M 2 ]  ,

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

det ( L ) = X ω ( ω 1 ) / 2 M ω ( m 1 ) / 2  

Потребуем, чтобы det ( L ) < 2 ω ( ω 1 ) / 4 ω ω / 2  . Отсюда следует

X < M ( m 1 ) / ( ω 1 ) 2 1 / 2 ω 1 / ( ω 1 )  

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

X < γ ω M 1 d ε  ,

где ε = d 1 d ( ω 1 )   и 1 2 2 γ ω < 1 2   для всех ω  . Если мы возьмем m  , то получим ω   а, следовательно, и ε 0  . В частности, если мы хотим решить X < M 1 d ε 0   для произвольного ε 0  , достаточно взять m = O ( k / d )  , где k = min { 1 ε , log 2 N }  .  [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 года.