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

Двоичный код Гоппы — Википедия

Двоичный код Гоппы

Двоичный код Гоппы — код коррекции ошибок из класса общих кодов Гоппы[en], описан Валерием Денисовичем Гоппой. В сравнении с другими вариантами, бинарная структура даёт несколько математических преимуществ, а также подходит для общего использования в вычислительной технике и телекоммуникациях. Двоичные коды Гоппы обладают интересными свойствами, полезными в криптосистемах, подобных McEliece[1].

Строение и свойстваПравить

Двоичный код Гоппы определяется как многочлен g ( x )   степени t   над конечным полем G F ( 2 m )   без конечного числа нулей, и последовательность L   из n   различных элементов G F ( 2 m )  , которые не являются корнями или полиномами.

i , j { 0 , , n 1 } : L i G F ( 2 m ) ( L i = L j i = j ) g ( L i ) 0  

Ключи принадлежат ядру функции, формируя подпространство { 0 , 1 } n  :

Γ ( g , L ) = { c { 0 , 1 } n | i = 0 n 1 c i x L i 0 mod g ( x ) }  

Код определён, как пара ( g , L )   с минимальной длиной 2 t + 1  , таким образом, он может исправить t = ( 2 t + 1 ) 1 2   ошибок в слове длиной n m t  , используя ключи размером n  . Он также обладает удобной матрицей контроля чётности[en] H   в виде:

H = V D = ( 1 1 1 1 L 0 1 L 1 1 L 2 1 L n 1 1 L 0 2 L 1 2 L 2 2 L n 1 2 L 0 t 1 L 1 t 1 L 2 t 1 L n 1 t 1 ) ( 1 g ( L 0 ) 1 g ( L 1 ) 1 g ( L 2 ) 1 g ( L n 1 ) )  

Эта форма матрицы контроля чётности состоит из определителя Вандермонда V   и диагональной матрицы D  , имеет форму, схожую с проверочными матрицами альтернативных кодов[en]. Таким образом, в этой форме могут использоваться альтернативные декодеры. Они обычно обеспечивают только ограниченную возможность исправления ошибок (чаще всего t / 2  ).

Для практических целей матрица проверки на чётность кода Гоппы обычно преобразуется в более удобную для использования компьютером двоичную форму с помощью конструкции трассировки, которая преобразует t  -на- n   матрицу над G F ( 2 m )   в двоичную матрицу m t  -на- n  , разделив полиномиальные коэффициенты G F ( 2 m )   на m   последовательных рядов.

ДекодированиеПравить

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

Алгоритм Паттерсона преобразует синдром в вектор ошибок. Предполагается, что синдром двоичного слова c = ( c 0 , , c n 1 )   примет вид:

s ( x ) i = 0 n 1 c i x L i mod g ( x )  

Альтернативная форма матрицы контроля чётности основана на формуле для s ( x )   и может быть использована для создания такого синдрома с простым произведением матриц.

Далее алгоритм производит расчёт v ( x ) s ( x ) 1 x mod g ( x )  . Это не удается, когда s ( x ) 0  , но это тот случай, когда входное слово является ключом, поэтому исправление ошибок не требуется.

Использованием расширенного алгоритма Евклида v ( x )   сводится к многочленам a ( x )   и b ( x )  , так, что a ( x ) b ( x ) v ( x ) mod g ( x )  , при этом deg ( a ) t / 2   и deg ( b ) ( t 1 ) / 2  .

Наконец, многочлен, определяющий расположение ошибок, вычисляется как σ ( x ) = a ( x ) 2 + x b ( x ) 2  . При этом в двоичном случае для исправления ошибок достаточно их найти, так как существует только одно отличное значение.

Если исходный ключ был декодирован и e = ( e 0 , e 1 , , e n 1 )   — двоичный вектор ошибок, то:

σ ( x ) = i = 0 n 1 e i ( x L i )  .

Разложение на множители или оценка всех корней σ ( x )   дает достаточно информации, чтобы восстановить вектор ошибок и исправить их.

Свойства и использованиеПравить

Двоичные коды Гоппы обладают специфическим свойством — они исправляют все deg ( g )   ошибок, в то время как троичные и прочие коды исправляют только deg ( g ) / 2  . Асимптотически такая способность к исправлению ошибок соответствует известной границе Гилберта — Варшамова.

Благодаря способности исправления ошибок, с учётом высокой скорости кодирования и сложной формы матрицы проверки на чётность (которую обычно трудно отличить от случайной двоичной матрицы того же ранга) двоичные коды Гоппы используются в нескольких постквантовых криптосистемах, в частности, в криптосистеме McEliece и криптосистеме Нидеррейтера.

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

  1. Elwyn R. Berlekamp. Goppa Codes (англ.) // IEEE Transactions on information theory. — 1973. — September (no. Vol. IT-19, No. 5). — P. 590—592.

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

  • В. Д. Гоппa. Введение в алгебраическую теорию информации. — Физматлит, 1995.
  • Daniela Engelbert, Raphael Overbeck, Arthur Schmidt. A summary of McEliece-type cryptosystems and their securi (англ.) // Journal of Mathematical Cryptology. — 2007. — No. 2. — P. 151—199. MR: 2345114 Предыдущая версия
  • Daniel J. Bernstein. ist decoding for binary Goppa codes. Technical report (англ.) // Department of Computer Science University of Illinois at Chicago. — 2008.