Криптосистема Нидеррайтера

Криптосистема Нидеррайтера — криптосистема с открытыми ключами, основанная на теории алгебраического кодирования, разработанная в 1986 году Харальдом Нидеррайтером[1]. В отличие от криптосистемы McEliece, в криптосистеме Нидеррайтера используется проверочная матрица кода. Криптосистема Нидеррайтера позволяет создавать цифровые подписи и является кандидатом для постквантовой криптографии, поскольку устойчива к атаке с использованием алгоритма Шора.

Используемый в криптосистеме Нидеррайтера алгоритм основан на сложности декодирования полных линейных кодов.

Несмотря на то, что данная криптосистема была взломана, некоторые её модификации остаются криптостойкими[2]

Алгоритм работы

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

Генерация ключа

[править | править код]
  1. Алиса выбирает код над полем Галуа , исправляющий ошибок. Этот код должен обладать эффективным алгоритмом декодирования[3].
  2. Алиса генерирует проверочную матрицу кода .
  3. Алиса выбирает случайную невырожденную матрицу над полем и некоторую матрицу перестановки [3].
  4. Алиса вычисляет матрицу
  5. Открытым ключом Алисы является пара . Закрытым ключом является набор .

Шифрование сообщения

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

В данном случае сообщения — это все векторы с координатами из поля с весом, не превосходящим . Таким образом, сообщениями являются все возможные ошибки, которые выбранный код в состоянии исправить[2].
Предположим, что Боб хочет отправить сообщение Алисе, чей открытый ключ .

  1. Боб представляет своё сообщение в виде двоичной последовательности длины , имеющей вес, не превосходящий .
  2. Боб вычисляет шифротекст по формуле: . Таким образом, шифротекстом в криптосистеме Нидеррайтера является зашумленный синдром шифруемого вектора ошибки[2].

Расшифровывание сообщения

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

После получения сообщения , Алиса выполняет следующие действия:

  1. Алиса вычисляет . Заметим, что, так как  — матрица перестановки, вес совпадает с весом и не превосходит , и потому алгоритм декодирования для может найти вектор ошибки, соответствующий синдрому [3].
  2. Алиса использует алгоритм быстрого декодирования для кода , чтобы найти [3].
  3. Алиса вычисляет сообщение .

Оригинальная криптосистема и её модификации

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

В оригинальной криптосистеме Нидеррайтер предлагал использовать коды Рида-Соломона и не использовал матрицу перестановки . Однако такая система оказалась нестойкой и была взломана Сидельниковым и Шестаковым в 1992 году[4]. Авторы показали, что возможно угадать структуру закрытого ключа по открытому и подобрать такие матрицы и , что . После этого для повышения криптостойкости системы было предложено использовать матрицу перестановки . Кроме того, появились различные модификации системы, например:

  • использующие различные метрики, отличные от классической хэмминговой, например, ранговую[5]: примером этого является модифицированная система GPT[3]
  • использующие коды со специфическими свойствами. Так, модификации, основанные на кодах Гоппы, все ещё остаются криптостойкими[2].

Преимущества и недостатки системы

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

Преимущества

[править | править код]
  • В отличие от McEliece, в криптосистеме Нидеррайтера не используются случайные параметры. Таким образом, результат шифрования одного и того же текста будет одинаковым. Этот факт позволяет использовать именно систему Нидеррайтера, а не McEliece, для создания электронно-цифровой подписи.
  • Размер открытого ключа в криптосистеме Нидеррайтера в раз меньше, чем в McEliece[6].
  • По сравнению с RSA, скорость шифрования выше приблизительно в 50 раз, а дешифрования — в 100 раз[6].

Недостатки

[править | править код]
  • Для шифрования произвольного сообщения необходим алгоритм перевода в -арный вектор длиной веса не более .
  • Размер ключей больше, чем в классических криптосистемах с открытым ключом (RSA, Схема Эль-Гамаля, ГОСТ Р 34.10-2012).
  • Размер шифротекста намного больше, чем размер шифруемого сообщения (если сообщение размера переводится в вектор длиной и шифруется, то получается шифротекст размером , что не менее, чем в 2 раза превосходит ).

Ниже в таблице приведены различные параметры для криптосистем McEliece, Нидеррайтера и RSA, наглядно показывающие их преимущества и недостатки[6].

McEliece
n=1024, k=524, t=101
бинарный код
Криптосистема Нидеррайтера
n=1024, k=524, t=101
бинарный код
RSA
1024-битные модули
e=17
Размер открытого ключа
в байтах
67072 32750 256
Количество бит
полезной информации
512 276 1024
Число бинарных операций
для шифрования
514 50 2402
Число бинарных операций
для расшифровывания
5140 7863 738112

Эквивалентность криптостойкости системы Нидеррайтера и системы McEliece

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

Как показано в оригинальной статье о системе Сидельникова[7], атака на систему Нидеррайтера может быть полиномиально сведена к атаке на систему McEliece и обратно.

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

Если же известна криптоатака со сложностью для системы Нидеррайтера, то возможно, используя в качестве шифротекста вектор , вычислить векторы и .

Построение цифровой подписи

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

В 2001 году Николя Куртуа, Мэттью Финиаз и Николя Сандриер показали[8], что криптосистема Нидеррайтера может быть использована для создания электронной подписи.

Подпись сообщения

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

Пусть  — открытый ключ криптосистемы Нидеррайтера, использующей -линейный код. Для подписи документа необходимо:

  1. Выбрать хеш-функцию , дающей символов на выходе. Таким образом, результат данной хеш-функции можно представить в виде синдрома и попытаться декодировать;
  2. Вычислить хеш ;
  3. Для каждого вычислить ;
  4. Найти наименьший номер такой, что синдром будет возможно декодировать. Пусть  — результат декодирования синдрома ;
  5. Подписью документа является пара .

Проверка подписи

[править | править код]
  1. Вычислить ;
  2. Вычислить ;
  3. Сравнить и : если они совпадают — подпись верна.

Пример работы системы

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

Пусть для кодирования был выбран код Рида-Соломона над полем Галуа , построенным по модулю неприводимого многочлена , с порождающим многочленом

Тогда, порождающая матрица кода:

Проверочная матрица кода:

Заметим, что расстояние данного кода , то есть число исправляемых ошибок .

Генерация ключей

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

Пусть выбрана матрица . Тогда обратная к ней матрица

Пусть выбрана матрица перестановки

В этом случае открытым ключом системы будет матрица:

Шифрование

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

Пусть выбранное сообщение было представлено в виде вектора веса 2.

Зашифрованное сообщение:

Расшифровывание

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

Принятый вектор

Для него вычислим декодируемый синдром

Используя алгоритм декодирования кода Рида-Соломона, декодируем .

Получится вектор

После чего вычислим исходный вектор

Примечания

[править | править код]
  1. Niederreiter H. Knapsack-type cryptosystems and algebraic coding theory (англ.) // Problems of Control and Information Theory — 1986. — Vol. 15, Iss. 2. — P. 159—166.
  2. 1 2 3 4 Самохина М. А. Модификации криптосистемы Нидеррайтера, их стойкость и практические применения // Труды МФТИМ.: 2009. — Т. 1, вып. 2. — С. 121—127. — ISSN 2072-6759
  3. 1 2 3 4 5 Khan E., Gabidulin E., Honary B., Ahmed H. Modified Niederreiter type of GPT cryptosystem based on reducible rank codes (англ.) // Designs, Codes and CryptographySpringer US, Springer Science+Business Media, 2014. — Vol. 70, Iss. 1. — P. 231—239. — ISSN 0925-1022; 1573-7586doi:10.1007/S10623-012-9757-4
  4. Сидельников В. М., Шестаков С. О. О системе шифрования, построенной на основе обобщенных кодов Рида–Соломона // Дискретная математика — 1992. — Т. 4, вып. 3. — С. 57—63. — ISSN 2305-3143; 0234-0860
  5. Габидулин Э. М. Теория кодов с максимальным ранговым расстоянием // Теория информации и теория кодирования — 1985. — Т. 21, вып. 1. — С. 3—16.
  6. 1 2 3 Canteaut A., Sendrier N. Cryptanalysis of the Original McEliece Cryptosystem (англ.) // Advances in Cryptology — ASIACRYPT 1998: International Conference on the Theory and Applications of Cryptology and Information Security, Beijing, China, October 18-22, 1998, Proceedings — Berlin: Springer Berlin Heidelberg, 1998. — P. 187—199. — (Lecture Notes in Computer Science; Vol. 1514) — ISBN 978-3-540-65109-3 — ISSN 0302-9743; 1611-3349doi:10.1007/3-540-49649-1_16
  7. Сидельников В. М. Открытое шифрование на основе двоичных кодов Рида–Маллера // Дискретная математика — 1994. — Т. 4, вып. 3. — С. 191—207. — ISSN 2305-3143; 0234-0860
  8. Courtois N., Finiasz M., Sendrier N. How to Achieve a McEliece-Based Digital Signature Scheme (англ.) // Advances in Cryptology — ASIACRYPT 2001: 7th International Conference on the Theory and Application of Cryptology and Information Security, Gold Coast, Australia, December 9-13, 2001, Proceedings / C. Boyd — London: Springer Science+Business Media, 2001. — P. 157—174. — (Lecture Notes in Computer Science; Vol. 2248) — ISBN 978-3-540-42987-6 — ISSN 0302-9743; 1611-3349doi:10.1007/3-540-45682-1

Литература

[править | править код]
  • Wieschebrink C. Cryptanalysis of the Niederreiter Public Key Scheme Based on GRS Subcodes (англ.) // Post-Quantum Cryptography: Third International Workshop, PQCrypto 2010, Darmstadt, Germany, May 25-28, 2010. Proceedings / N. Sendrier — Berlin: Springer Berlin Heidelberg, 2010. — P. 61—72. — (Lecture Notes in Computer Science; Vol. 6061) — ISBN 978-3-642-12928-5 — ISSN 0302-9743; 1611-3349doi:10.1007/978-3-642-12929-2
  • Соловьева Ф. И., Лось А. В., Могильных И. Ю. II Криптология // Сборник задач по теории кодирования, криптологии и сжатию данных — Новосибирск: НГУ, 2013. — С. 41—49. — 100 с. — ISBN 978-5-4437-0184-4
  • Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — 816 с. — 3000 экз. — ISBN 5-89392-055-4.