Криптосистема Нидеррайтера
Криптосистема Нидеррайтера — криптосистема с открытыми ключами, основанная на теории алгебраического кодирования, разработанная в 1986 году Харальдом Нидеррайтером[1]. В отличие от криптосистемы McEliece, в криптосистеме Нидеррайтера используется проверочная матрица кода. Криптосистема Нидеррайтера позволяет создавать цифровые подписи и является кандидатом для постквантовой криптографии, поскольку устойчива к атаке с использованием алгоритма Шора.
Используемый в криптосистеме Нидеррайтера алгоритм основан на сложности декодирования полных линейных кодов.
Несмотря на то, что данная криптосистема была взломана, некоторые её модификации остаются криптостойкими[2]
Алгоритм работы[править | править код]
Генерация ключа[править | править код]
- Алиса выбирает код над полем Галуа , исправляющий ошибок. Этот код должен обладать эффективным алгоритмом декодирования[3].
- Алиса генерирует проверочную матрицу кода .
- Алиса выбирает случайную невырожденную матрицу над полем и некоторую матрицу перестановки [3].
- Алиса вычисляет матрицу
- Открытым ключом Алисы является пара . Закрытым ключом является набор .
Шифрование сообщения[править | править код]
В данном случае сообщения — это все векторы с координатами из поля с весом, не превосходящим . Таким образом, сообщениями являются все возможные ошибки, которые выбранный код в состоянии исправить[2].
Предположим, что Боб хочет отправить сообщение Алисе, чей открытый ключ .
- Боб представляет своё сообщение в виде двоичной последовательности длины , имеющей вес, не превосходящий .
- Боб вычисляет шифротекст по формуле: . Таким образом, шифротекстом в криптосистеме Нидеррайтера является зашумленный синдром шифруемого вектора ошибки[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
|
Криптосистема Нидеррайтера
|
RSA
| |
---|---|---|---|
Размер открытого ключа
|
67072 | 32750 | 256 |
Количество бит
|
512 | 276 | 1024 |
Число бинарных операций
|
514 | 50 | 2402 |
Число бинарных операций
|
5140 | 7863 | 738112 |
Эквивалентность криптостойкости системы Нидеррайтера и системы McEliece[править | править код]
Как показано в оригинальной статье о системе Сидельникова[7], атака на систему Нидеррайтера может быть полиномиально сведена к атаке на систему McEliece и обратно.
Пусть известен синдром . Тогда можно вычислить вектор с некоторым таким, что . Вектор будет рассматриваться как шифротекст в системе McEliece. Если найдена криптографическая атака со сложностью для системы McEliece, то есть известен алгоритм вычисления вектора , который является секретной информацией в этой системе, то вектор , являющийся секретом для системы Нидеррайтера, можно представить в виде . Таким образом, сложность определения совпадает со сложностью определения .
Если же известна криптоатака со сложностью для системы Нидеррайтера, то возможно, используя в качестве шифротекста вектор , вычислить векторы и .
Построение цифровой подписи[править | править код]
В 2001 году Николя Куртуа, Мэттью Финиаз и Николя Сандриер показали[8], что криптосистема Нидеррайтера может быть использована для создания электронной подписи.
Подпись сообщения[править | править код]
Пусть — открытый ключ криптосистемы Нидеррайтера, использующей -линейный код. Для подписи документа необходимо:
- Выбрать хеш-функцию , дающей символов на выходе. Таким образом, результат данной хеш-функции можно представить в виде синдрома и попытаться декодировать;
- Вычислить хеш ;
- Для каждого вычислить ;
- Найти наименьший номер такой, что синдром будет возможно декодировать. Пусть — результат декодирования синдрома ;
- Подписью документа является пара .
Проверка подписи[править | править код]
- Вычислить ;
- Вычислить ;
- Сравнить и : если они совпадают — подпись верна.
Пример работы системы[править | править код]
Пусть для кодирования был выбран код Рида-Соломона над полем Галуа , построенным по модулю неприводимого многочлена , с порождающим многочленом
Тогда, порождающая матрица кода:
Проверочная матрица кода:
Заметим, что расстояние данного кода , то есть число исправляемых ошибок .
Генерация ключей[править | править код]
Пусть выбрана матрица . Тогда обратная к ней матрица
Пусть выбрана матрица перестановки
В этом случае открытым ключом системы будет матрица:
Шифрование[править | править код]
Пусть выбранное сообщение было представлено в виде вектора веса 2.
Зашифрованное сообщение:
Расшифровывание[править | править код]
Принятый вектор
Для него вычислим декодируемый синдром
Используя алгоритм декодирования кода Рида-Соломона, декодируем .
Получится вектор
После чего вычислим исходный вектор
См. также[править | править код]
Примечания[править | править код]
- ↑ Niederreiter H. Knapsack-type cryptosystems and algebraic coding theory (англ.) // Problems of Control and Information Theory — 1986. — Vol. 15, Iss. 2. — P. 159—166.
- ↑ 1 2 3 4 Самохина М. А. Модификации криптосистемы Нидеррайтера, их стойкость и практические применения // Труды МФТИ — М.: 2009. — Т. 1, вып. 2. — С. 121—127. — ISSN 2072-6759
- ↑ 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 Cryptography — Springer US, Springer Science+Business Media, 2014. — Vol. 70, Iss. 1. — P. 231—239. — ISSN 0925-1022; 1573-7586 — doi:10.1007/S10623-012-9757-4
- ↑ Сидельников В. М., Шестаков С. О. О системе шифрования, построенной на основе обобщенных кодов Рида–Соломона // Дискретная математика — 1992. — Т. 4, вып. 3. — С. 57—63. — ISSN 2305-3143; 0234-0860
- ↑ Габидулин Э. М. Теория кодов с максимальным ранговым расстоянием // Теория информации и теория кодирования — 1985. — Т. 21, вып. 1. — С. 3—16.
- ↑ 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-3349 — doi:10.1007/3-540-49649-1_16
- ↑ Сидельников В. М. Открытое шифрование на основе двоичных кодов Рида–Маллера // Дискретная математика — 1994. — Т. 4, вып. 3. — С. 191—207. — ISSN 2305-3143; 0234-0860
- ↑ 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-3349 — doi: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-3349 — doi: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.
Эта статья входит в число добротных статей русскоязычного раздела Википедии. |