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

McEliece — Википедия

McEliece

McEliece — криптосистема с открытыми ключами на основе теории алгебраического кодирования, разработанная в 1978 году Робертом Мак-Элисом[en][1]. Это была первая схема, использующая рандомизацию в процессе шифрования. Алгоритм не получил широко признания в криптографии, но в то же время является кандидатом для постквантовой криптографии, так как устойчив к атаке с использованием Алгоритма Шора[2].

Алгоритм основан на сложности декодирования полных линейных кодов (общая задача декодирования является NP-сложной)[3].

Для описания закрытого ключа выбран код исправляющий ошибки, для которого известен эффективный алгоритм декодирования и который может исправить t ошибок. Алгоритм использует двоичные коды Гоппа, которые легко декодируются благодаря алгоритму Петерсона. Открытый ключ получается при помощи маскировки выбранного кода как полного линейного. Для этого порождающая матрица G сначала умножается справа на матрицу перестановок P , а затем на невырожденную матрицу S слева (см. алгоритм работы).

Существует несколько вариантов криптосистемы, использующих различные типы кодов. Большинство из них оказываются менее защищенными. Отдельного рассмотрения заслуживает вопрос выбора параметров криптосистемы[4].

До сих пор McElice с кодами Гоппы не поддается криптоанализу[5]. Наиболее известные атаки используют алгоритм декодирования множества данныx. Последние работы описывают как атаки на систему, так и её защиту[6]. В других работах показано, что для квантовых вычислений размер ключа должен быть увеличен на четыре порядка из-за усовершенствования декодирования множества данных[2].

Криптосистема имеет несколько преимуществ, например, над RSA. Шифрование и дешифрование проходит быстрее и с ростом длины ключа степень защиты данных растет гораздо быстрее. Долгое время считалось, что McEliece не может быть использована для ЭЦП. Однако оказалось возможным построить схему для ЭЦП на основе криптосистемы Нидеррайтера (модификация МcEliece). Поскольку в зависимости от используемых кодов, эти две криптосистемы выражают одну и ту же кодовую задачу, на сегодняшний день, можно утверждать, что McEliece применим в задачах аутентификации.

Из-за недостатков McEliece используется редко. Одно из исключений — использование McElice для шифрования в Freenet-подобной сети ENTROPY.

Введение в коды ГоппыПравить

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

Гоппа полином задается как полином над полем G F ( p m )   вида g ( x ) = g 0 + g 1 x + g 2 x 2 + . . . + g t x t = i = 0 t g i x i  , где g i G F ( p m )  , а t [ 2 , . . . , ( n 1 ) / d ]  . Также зададим n  -размерное подмножество L   над расширением поля G F ( p m )  : L = [ α 1 , . . . , α n ] G F ( p m )  , для которого верно g ( α i ) 0   при любых α i  . Далее, для кодового слова c = [ c 0 , . . . c n ]   над полем G F ( p m )   определяется функция R c ( x ) = i = 1 n c i x α i  .

Код Гоппы Γ = Γ ( L , g )   состоит из всех кодовых слов c = ( c 1 , . . . c n )  , удовлетворяющих R c ( x ) 0   ( m o d   g ( x ) )  . Это означает, что полином g ( x )   делит R c ( x )  .

Размерность k   кода Гоппы Γ ( L , g )   длины n   больше или равна n m t  , а минимальное расстояние кода d   больше или равно t 1  .

Проверочная матрица Γ ( L , g )   имеет следующий вид:

H = ( 1 / g ( α 1 ) 1 / g ( α n ) α 1 / g ( α 1 ) α n / g ( α n ) α 1 t 1 / g ( α 1 ) α n t 1 / g ( α n ) )  .

Если Гоппа полином представляет из себя неприводимый полином g ( x )   над полем G F ( 2 m )  , тогда минимальное расстояние d   такого кода больше или равно 2 t + 1  . В дальнейшем предполагается, что d = 2 t + 1  .

В криптологических приложениях используется неприводимый, бинарный код Гоппы с параметрами [ n , k . d ] = [ n , n m t , 2 t + 1 ]  .

Причины для использованияПравить

Существует несколько причин для применения кодов Гоппы в криптосистеме МcEliece. Во-первых, существует несколько быстрых алгоритмов декодирования за полиномиальное время[7]. Во-вторых, любой неприводимый многочлен над полем G F ( 2 m )   подойдет для того, чтобы задать код Гоппы, порождающая матрица кода является почти случайной. Следовательно, коды Гоппы очень легко задать, но, в то же время, сложно распознать. Для фиксированной длины n   кодового слова существует множество кодов. Например, для кода длины n = 128  , способного исправлять до t = 10   ошибок, существует около 10 15   различных Гоппа кодов. Их количество растет экспоненциально в зависимости от длины слова и степени порождающего полинома.

Алгоритм работыПравить

McEliece состоит из трех алгоритмов:

  • алгоритма случайной генерации ключа, который дает открытый и секретный ключ;
  • алгоритма случайного шифрования;
  • детерминированного алгоритма расшифрования.

Текст сообщения представляет из себя вектор длины k   над конечным полем G F ( q )  .

Все пользователи в системе совместно используют параметры безопасности: n ,   k ,   t  .

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

  1. Алиса выбирает ( n , k )  -линейный код C  , исправляющий t   ошибок. Затем для кода C   высчитывается k × n   порождающая матрица G  .
  2. Для того, чтобы исходный код было сложно восстановить, Алиса генерирует случайную k × k   невырожденную матрицу S  .
  3. Алиса генерирует случайную n × n   матрицу перестановки P  .
  4. Алиса вычисляет k × n   матрицу G ^ = S G P  .
  5. Открытым ключом является пара ( G ^ , t )  . Закрытым ключом является набор ( S , G , P )  .

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

Пусть Боб хочет передать сообщение m   Алисе, чей открытый ключ ( G ^ , t )  .

  1. Боб представляет своё сообщение m   в виде последовательностей двоичных символов длины k  .
  2. Боб генерирует случайный вектор z   длины n  , имеющий вес Хемминга t  .
  3. Боб вычисляет шифротекст как c = m G ^ + z   и передает его Алисе.

Расшифрование сообщенияПравить

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

  1. Алиса вычисляет обратную матрицу P 1  ;
  2. Алиса вычисляет c ^ = c P 1  ;
  3. Алиса использует алгоритм декодирования для кода C  , чтобы получить m ^   из c ^  ;
  4. Алиса вычисляет m = m ^ S 1  .

Корректность алгоритмаПравить

Покажем, что выполняется главное свойство криптосистемы[5], то есть, что D t ( E z ( m ) ) = m  .

Боб посылает c = m G ^ + z = m S G P + z  . Алиса вычисляет c ^ = c P 1 = m S G + z P 1  . Поскольку P 1   — матрица перестановки, то вес z P 1   не более, чем t  .

Код Гоппа G   исправляет до t   ошибок. Расстояние Хемминга d H ( m S G , c P 1 ) t  , поэтому Алиса получает верное сообщение m ^ = m S  . После этого Алиса вычисляет исходное сообщение m = m ^ S 1 = m S S 1  .

Пример работы алгоритмаПравить

Пусть, используется неприводимый, бинарный код Гоппы c параметрами [ 12 , 4 , 5 ]  , где g ( x ) = x 2 + x + α 3   — неприводимый полином степени t = 2   над полем G F ( 2 4 )  , причем α 3 = ( 0 , 0 , 0 , 1 ) T G F ( 2 4 )  .

Алиса случайным образом генерирует порождающую матрицу такого кода

G = ( 0 1 1 0 1 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 0 0 1 0 )  ,

выбирает матрицу

S = ( 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 )  

и матрицу перестановки

P = ( 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 )  ,

Тогда

G ^ = S G P = ( 1 1 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 0 1 1 )  .

В качестве открытого ключа предоставляется эта матрица и t = 2  . Если Боб хочет послать сообщение m = ( 1 , 0 , 1 , 0 )   Алисе, то он сначала генерирует вектор с весом 2  , например, z = ( 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )  .

Вычисляет шифротекст

c = m G ^ + z = ( 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 1 , 1 , 1 , 0 ) + ( 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) = ( 0 , 0 , 1 , 1 , 1 , 1 , 0 , 1 , 1 , 1 , 1 , 0 )  

и посылает его Алисе.

После получения сообщения Алиса сначала вычисляет

c ^ = c P 1 = m G ^ P 1 + z P 1 = m ( S G P ) P 1 + z P 1 = ( m S ) G + y = ( 0 , 1 , 1 , 1 , 1 , 0 , 1 , 0 , 1 , 1 , 1 , 0 )  .

Из-за перестановок ошибки переместились в первый и шестой символы. Алиса, используя быстрый алгоритм декодирования, находит

m S G = ( 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 1 , 1 , 0 )  .

Находит m S = ( 1 , 1 , 0 , 1 )  .

И, в итоге, Алиса получает m = ( 1 , 1 , 0 , 1 ) S 1 = ( 1 , 0 , 1 , 0 )  .

Размеры ключаПравить

Первоначально были предложены параметры: n = 1024 , k = 524 , t = 50  , в результате размер публичного ключа составлял 524*(1024—524) = 262,000 бит. В недавно проведенном анализе были предложены следующие параметры: n = 2048 , k = 1751 , t = 27   для 80 бит безопасности при использовании обычного алгебраического декодирования, или n = 1632 , k = 1269 , t = 34   при использовании декодировочной таблицы для кода Гоппы. При этом публичный ключ увеличивается до 520,047 и 460,647 бит соответственно. Для устойчивости против квантового компьютера параметры параметры следует увеличить до n = 6960 , k = 5413 , t = 119  , а размер публичного ключа до 8,373,911 бит[1][6].

АтакиПравить

Криптографическая стойкость системы основана на двух сложных вычислительных задачах: исчерпывающего поиска по ключевому пространству и декодирования по максимуму правдоподобия. В литературе описано достаточно большое количество атак на McEliece[8]. Некоторые атаки, называемые структурными атаками, основаны на попытке построить/реконструировать декодер для кода, сгенерированного открытым ключом G ^  . Если такая попытка окажется успешной, то закрытый ключ G   будет раскрыт, а криптосистема полностью взломана. Код C ^  , порожденный матрицей G ^   и код C  , порожденный матрицей G  , принадлежат одному эквивалентному классу. Злоумышленник должен сравнить представителя кода из каждого класса в C ^   для того, чтобы определить эквивалентный код. Поскольку эквивалентные классы имеют очень малую мощность, этот процесс выходит за рамки возможностей даже самых мощных компьютеров. Для оригинальных параметров ( 1024 , 524 , 50 )   данная структурная атака требует для изучения более 2 466   кодов[5].

Другие атаки направлены на получения исходного текста сообщения из шифрованного сообщения. Большинство из них основаны на декодировании множества данных (ISD (англ.)) или на парадоксе дней рождения[9], их обобщениях и улучшениях. Существуют такие атаки, как, например, итерационное декодирование[3] и статическое декодирование, но они не являются успешными. Атака ISD оказалась наименее сложной. В последние годы было описано несколько алгоритмов и их улучшения. Наиболее важные перечислены в таблице вместе с их двоичным показателем затрат для декодирования ( 1024 , 524 , 50 )   кода Гоппы. Для этих алгоритмов известны их предельные показатели[10].

Год Алгоритм Сложность ( l o g 2  )
1986 Адамс-Мейер 80,7
1988 Ли-Брикелл 70,89
1989 Штерн 66,21
1994 Кантеаут-Шабанн 65,5
1998 Кантеаут-Шабант 64,1
2008 Бернштейн-Ланг-Петерс 60,4
2009 Финиаз-Сендреир 59,9

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

Пусть C   — это код длины n   над полем G F ( 2 )  , а n  -мерный вектор y   имеет расстояние ω   от кодового слова c C  , тогда y c   — это элемент C   с расстоянием ω   от y  . И обратное, если C   — это код длины n   над полем G F ( 2 )   с минимальным расстоянием меньше ω  , тогда элемент e C + [ 0 , y ]   веса ω   не может быть в C  , он должен быть в C + [ y ]  . Или иначе, y e   — элемент C   с расстоянием ω   от y  .

Шифротекст криптосистемы McEliece y   имеет расстояние t   от уникального ближайшего кодового слова c   кода C  , который имеет расстояние как минимум 2 t + 1  . Атакующий знает порождающую матрицу кода C   и может легко добавить y   для образования порождающей матрицы для C + [ 0 , y ]  . Единственное кодовое слово веса t   в C + [ 0 , y ]   — это y c  . Найдя это кодовое слово, атакующий находит c   и легко получает искомый текст. Стоит учесть, что декодирование дает незначительное упрощение:

если C   имеет размерность k  , то C + [ 0 , y ]   имеет размерность k + 1  . Алгоритм Штерна позволяет найти кодовое слово наименьшего веса.

Поиск кодового слова наименьшего весаПравить

На вход алгоритма поступает число ω > 0   и проверочная матрица H   размера ( n k ) × n   для ( n , k )   кода над полем F 2  . С помощью методов линейной алгебры всегда можно получить из порождающей матрицы проверочную.

Случайным образом выбирается n k   из n   столбцов матрицы H  . Затем случайным образом выбирается l  -размерное подпространство Z  , которое разделяет оставшиеся k   на два подмножества X   и Y  . Для кодового слова имеющего ровно p   не нулевых бит в X  , ровно p   не нулевых бит в Y  , 0   не нулевых бит в Z   и ровно ω 2 p   не нулевых бит в других столбцах.

Поиск состоит из трех шагов. На первом шаге применяя простейшие операции к H   получаем из выбранных n k   столбцов единичную матрицу. Этого сделать не получиться, если оригинальная ( n k ) × ( n k )   подматрица H   не является обратимой, тогда алгоритм запускается заново. Потери на перезапусках избегаются благодаря адаптивному выбору каждого столбца.

На втором шаге ( n k ) × ( n k )   подматрица H   есть единичная матрица, множество Z   из l   столбцов соответствует l   строчкам. Для каждого p   размерного подмножества A   множества X   вычисляется сумма столбцов в A   для каждой из этих l   строчек. В результате получается l  -битный вектор π ( A )  . Аналогично для каждого p   размерного подмножества B   множества Y  .

На третьем шаге для каждой коллизии π ( A ) = π ( B )   считается сумма 2 p   столбцов в A B  . Эта сумма будет являться ( n k )  -битным вектором. Если сумма имеет вес ω 2 p  , то получается 0   путем добавления соответствующих ω 2 p   столбцов в ( n k ) × ( n k )   подматрицу. Эти ω 2 p   столбцов вместе с A   и B   формируют искомое кодовое слово веса ω  .

НедостаткиПравить

Основные недостатки криптосистемы McEliece[6]:

  • Размер открытого ключа G ^ = S G P   слишком большой. При использовании кодов Гоппы с параметрами, предложенными Мак-Элисом, открытый ключ составляет 2 19   бит, что вызывает сложности в реализации;
  • Зашифрованное сообщение гораздо длиннее исходного;
  • На данный момент алгоритмы, использующие данную криптосистему в задачах аутентификации не нашли широкого распространения.

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

  1. 1 2 R. J. McEliece. A Public-Key Cryptosystem Based On Algebraic Coding Theory // DSN Progress Report 42-44. — 1978. Архивировано 2 ноября 2021 года.
  2. 1 2 Dinh H., Moore C., Russell A. McEliece and Niederreiter Cryptosystems That Resist Quantum Fourier Sampling Attacks (англ.) // Advances in Cryptology — CRYPTO 2011: 31st Annual Cryptology Conference, Santa Barbara, CA, USA, August 14-18, 2011, Proceedings / P. RogawaySpringer Science+Business Media, 2011. — P. 761—779. — 782 p. — ISBN 978-3-642-22791-2doi:10.1007/978-3-642-22792-9_43
  3. 1 2 Berlekamp E. R., McEliece R. J., Tilborg H. C. A. v. On the inherent intractability of certain coding problems (англ.) // IEEE Trans. Inf. Theory / F. KschischangIEEE, 1978. — Vol. 24, Iss. 3. — P. 384—386. — ISSN 0018-9448; 1557-9654doi:10.1109/TIT.1978.1055873
  4. Niebuhr R., Meziani M., Bulygin S., Buchmann J. Selecting Parameters for Secure McEliece-based Cryptosystems (англ.) // International Journal of Information SecuritySpringer Science+Business Media, 2012. — Vol. 11, Iss. 3. — P. 137–147. — ISSN 1615-5262; 1615-5270doi:10.1007/S10207-011-0153-2
  5. 1 2 3 4 5 A. Valentijn. Goppa Codes and Their Use in the McEliece Cryptosystems // Syracuse University SURFACE. — 2015. Архивировано 21 декабря 2016 года.
  6. 1 2 3 4 Bernstein D. J., Lange T., Peters C. Attacking and Defending the McEliece Cryptosystem (англ.) // Post-Quantum Cryptography: Second International Workshop, PQCrypto 2008 Cincinnati, OH, USA October 17-19, 2008 Proceedings / J. Buchmann, J. DingBerlin, Heidelberg, New York, NY, London [etc.]: Springer Science+Business Media, 2008. — P. 31—46. — 231 p. — (Lecture Notes in Computer Science; Vol. 5299) — ISBN 978-3-540-88402-6 — ISSN 0302-9743; 1611-3349doi:10.1007/978-3-540-88403-3_3 D. J. Bernstein1 ,Tanja Lange, C. Peters. Attacking and defending the McEliece cryptosystem. — 2008. Архивировано 1 августа 2016 года.
  7. P. Loidreau. Strengthening McEliece Cryptosystem // Springer-Verlag Berlin Heidelberg. — 2000.
  8. 1 2 D. Engelbert, R. Overbeck, A. Schmidt. A Summary of McEliece-Type Cryptosystems and their Security // IACR Eprint archive. — 2006. Архивировано 23 декабря 2016 года.
  9. N. Courtois, M. Finiasz, N. Sendrier. How to achieve a McEliece-based Digital Signature Scheme. — 2001. Архивировано 22 июля 2018 года.
  10. D.J. Bernstein, T. Lange, C. Peters, H.C.A. van Tilborg. Explicit bounds for generic decoding algorithms for code-based cryptography // International Workshop on Coding and Cryptography. — 2009. Архивировано 20 декабря 2016 года.

ЛитератураПравить