Ранцевая криптосистема Шора-Ривеста

(перенаправлено с «Шифрование Шор-Ривеста»)

Ранцевая криптосистема Шора-Ривеста была предложена в 1985 году (Chor, 1985; Chor and Rivest, 1988)[1]. В настоящее время она является единственной известной схемой шифрования, основанной на задаче о ранце, которая не использует модульного умножения для маскировки простой задачи о ранце[2] На данный момент создано множество рюкзачных криптосистем, например ранцевая криптосистема Меркла — Хеллмана. Однако практически все существующие на сегодняшний день взломаны или признаны потенциально небезопасными, примечательным исключением является схема Шор-Ривеста. Криптосистема Шора-Ривеста является одной из немногих не взломанных систем[3].

Описание алгоритма править

Пусть пользователь B хочет отправить зашифрованное сообщение A. Для этого:

Для генерации открытого и закрытого ключей нужно[4]:

  1. Выбрать конечное поле   характеристики  , где  ,  , и для которого возможно эффективно решать задачу дискретного логарифмирования (см. Особенности криптосистемы 3)
  2. Выбрать случайный монотонный неприводимый многочлен   степени   над  . Элементы   будут представлены как многочлены от   степени меньше  , причем умножение можно выполняться по модулю  .
  3. Выбрать случайный примитивный многочлен   поля  .
  4. Вычислить дискретный логарифм   элемента поля  .
  5. Выбрать случайную перестановку   на множестве целых чисел  
  6. Выбрать случайное целое число  ,  
  7. Вычислить   ,  

Открытым ключом   является  ; закрытым ключом   является  

Для генерации случайного мононического неприводимого многочлена можно использовать следующий алгоритм:[5]

ВХОД: простое   и положительное целое число  .

ВЫХОД: монотонный неприводимый многочлен   степени   в  .

Полученный многочлен будет неприводимым, ввиду следующей теоремы:

  • Случайно выбрать целые числа   между   и   с  . Представить многочлен   в виде"  
  • Выбрать  
  • Для   от   до   сделать следующие действия:
  1. Вычислить  . (Заметить, что   является многочленом от   степени меньше  )
  2. Вычислить  
  3. Если   вернуть   «приводимый».
  • Если   приводимый — повторить шаги алгоритма. Иначе вернуть  

    Неприводимый многочлен   степени   является примитивным многочленом тогда и только тогда, когда   делит   для   и для не меньшего положительного целого  .[6]

Для генерации случайного мононического примитивного многочлена можно использовать следующий алгоритм:[7]

ВХОД: простое  , целое число   ≥ 1 и различные простые множители   из  .

ВЫХОД: монотонный примитивный многочлен   степени   в  .

  • Генерировать случайный монотонный неприводимый многочлен над  .
  • Для   от   до   сделать следующие действия:
  1. Вычислить  
  2. Если   вернуть   «не примитивный».
  • Если   примитивный — повторить шаги алгоритма. Иначе вернуть  

Шифрование править

Для шифрования с открытым ключом   нужно сделать следующее[4]:

  • Получить открытый ключ    
  • Представить сообщение   как двоичную строку длины  , где   является биномиальным коэффициентом  
  • Рассмотреть   как двоичное представление целого числа. Преобразовать это целое число в двоичный вектор   длины  , имеющий ровно   единиц следующим образом:
  1. Выбрать  
  2. Для   от   до   выполнить следующие действия: Если   то выбрать  ,  ,  . В противном случае выбрать  . (Примечание:   для   ;  для  )
  • Вычислить  
  • Отправить зашифрованный текст   в  

Дешифрование править

Для дешифрования с открытым ключом   нужно сделать следующее[4]:

  • Вычислить  
  • Вычислить  
  • Вычислить  , монотонный многочлен степени   над  
  • Разложить   на произведение линейных множителей над  :  , где   (см. Особенности криптосистемы 5)
  • Вычислить двоичный вектор   следующим образом. Компоненты  , которые равны  , имеют индексы  . Остальные компоненты равны  .
  • Сообщение   восстанавливается из   следующим образом:
  1. Выбрать  ,  
  2. Для   от   до   выполнить следующие действия: Если  , то выбрать   и  

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

Для доказательства работы схемы можно заметить, что[8]

 

Так как   и   — монические многочлены степени   и конгруэнтны по модулю  , то:

 

Следовательно,   корней   все лежат в  , и применение   к этим корням дает координаты  , которые равны  .

Пример править

В качестве примера можно рассмотреть работу схемы в случае, когда параметры относительно малы[9]

Генерация ключей править

Для генерации ключей A выполняет следующее:

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

Шифрование править

Чтобы зашифровать сообщение   для  ,   делает следующее:

  • Получает открытый ключ   открытого ключа
  • Представляет   как двоичную строку длиной  :  . (так как  )
  • Использует метод, описанный на шаге 3 " алгоритма Шифрования ", для преобразования   в бинарный вектор   длины  .
  • Вычисляет  
  • Отправляет   в  

Дешифрование править

Чтобы расшифровать зашифрованный текст  ,   делает следующие действия:

  • Вычисляет  
  • Вычисляет  
  • Вычисляет  
  • Факторизует  (так  ,  ,  ,  )
  • Компоненты  , которые равны  , имеют индексы  ,  ,   и  . Следовательно,  
  • Использует метод, описанный на шаге 6 " алгоритма дешифрования ", чтобы преобразовать   в целое число  , тем самым восстанавливая исходный текст.

Особенности криптосистемы править

  • Известно, что система небезопасна, если раскрыты части секретного ключа, например, если известны   и   в некотором представлении   или если   известно, или если   известен[10]
  • Хотя схема Шор-Ривеста была описана только для случая   простой, она распространяется на случай, когда базовое поле   заменяется полем первичного степенного порядка[11]
  • Чтобы сделать задачу дискретного логарифма выполнимой на шаге 1 алгоритма " Генерация ключей ", параметры   и   могут быть выбраны так, что   имеет только малые множители. В этом случае для эффективного вычисления дискретных логарифмов можно использовать алгоритм Полига — Хеллмана в конечном поле  [12]
  • На практике рекомендуемый размер параметров:   и  . Один конкретный выбор первоначально предложенных параметров:   и  ; в этом случае наибольший простой коэффициент   составляет  , а плотность набора ранца составляет около  . Другие первоначально заданные параметры:  ,  (базовое поле  ) и   (базовое поле  )[13]
  • Шифрование — очень быстрая операция. Расшифровка выполняется намного медленнее, узким местом является вычисление   на шаге 2 " алгоритма дешифрования ". Корни   на шаге 4 можно найти, просто попробовав все возможности в  [14]
  • Основным недостатком схемы Шор-Ривеста является то, что открытый ключ довольно велик, а именно бит  . Для параметров   и   это около 36000 бит[15]
  • Расширение сообщения происходит в  . Для   и  , это  [16]

Атаки с раскрытием частичного ключа править

В этом разделе Serge Vaudenay[англ.] показывает, что он может монтировать атаку, когда раскрывается какая-либо часть секретного ключа. Несколько таких атак уже опубликованы в документе[17] и некоторые из них были улучшены ниже.[18]

Секретные ключи состоят из:

  1. элемент   с степенью  
  2. генератор  
  3. целое число  
  4. перестановка   на множестве целых чисел  

Атака с раскрытием части  

Если предположим, что   и   (из-за симметрии в секретном ключе мы знаем, что будет выполняться произвольный выбор  ), мы можем вычислить   и  , то решим систему уравнения:

 
  с неизвестными   и  [17]

Атака с раскрытием части  

Если предположим, что   и   (из-за симметрии в секретном ключе мы знаем, что будет выполняться произвольный выбор  ), мы можем вычислить:

 

затем разрешить  

Атака с раскрытием части  

Найдем линейную комбинацию с формой   с относительно небольшими интегральными коэффициентами  . Это можно выполнить с помощью алгоритма Lenstra-Lenstra-Lovász[19]. Мы можем ожидать, что   с  . Обозначая это, получаем некоторое уравнение:

 

с неотрицательными малыми степенями, который является полиномиальным уравнением с малой степенью, которое может быть эффективно разрешено.[17]

Атака с раскрытием части   и  

Мы можем интерполировать полином   с   парами  . Таким образом, мы получаем многочлен   — степени, корни которого являются сопряженными  . Потом мы можем решить его, чтобы получить   и выполнить атаку с раскрытием части  

См. также править

Примечания править

  1. A. Queiruga Dios, L. Hernández Encinas, and J. Espinosa García. a case study of chor-rivest cryptosystem in maple. — С. 2.
  2. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — С. 302. Архивировано 15 декабря 2017 года.
  3. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — С. 300. Архивировано 15 декабря 2017 года.
  4. 1 2 3 Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — С. 303. Архивировано 15 декабря 2017 года.
  5. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — С. 156. Архивировано 15 декабря 2017 года.
  6. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — 2.229 Fact. — С. 84. Архивировано 15 декабря 2017 года.
  7. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — С. 163. Архивировано 15 декабря 2017 года.
  8. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — С. 304. Архивировано 15 декабря 2017 года.
  9. Dr. Nguyen Binh, Dr. Ngo Duc Thien. giáo trình cơ sở mật mã học. — С. 118—120. Архивировано 23 ноября 2015 года. Архивная копия от 23 ноября 2015 на Wayback Machine
  10. Dr. Nguyen Binh, Dr. Ngo Duc Thien. giáo trình cơ sở mật mã học. — Note 1. — С. 120. Архивировано 23 ноября 2015 года. Архивная копия от 23 ноября 2015 на Wayback Machine
  11. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — 8.45 Note (i). — С. 305. Архивировано 15 декабря 2017 года.
  12. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — 8.45 Note (ii). — С. 305. Архивировано 15 декабря 2017 года.
  13. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — 8.45 Note (iii). — С. 305. Архивировано 15 декабря 2017 года.
  14. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — 8.45 Note (iv). — С. 305. Архивировано 15 декабря 2017 года.
  15. Dr. Nguyen Binh, Dr. Ngo Duc Thien. giáo trình cơ sở mật mã học. — Note 5. — С. 120. Архивировано 23 ноября 2015 года. Архивная копия от 23 ноября 2015 на Wayback Machine
  16. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. handbool of applied cryptography. — 8.45 Note (vi). — С. 306. Архивировано 15 декабря 2017 года.
  17. 1 2 3 B. Chor, R.L. Rivest. A knapsack-type public key cryptosystem based on arithmetic in finite fields. IEEE Transactions on Information Theory. — С. 901—909. Архивировано 21 декабря 2016 года.
  18. Serge Vaudenay. Cryptanalysis of the Chor-Rivest Cryptosystem. Архивировано 23 декабря 2017 года.
  19. A.K. Lenstra, H.W. Lenstra Jr., L. Lov´asz. Factoring polynomials with rational coefficients. — С. 515—534.