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

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

править

Двоичный код Гоппы определяется как многочлен   степени   над конечным полем   без конечного числа нулей, и последовательность   из   различных элементов  , которые не являются корнями или полиномами.

 

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

 

Код определён, как пара   с минимальной длиной  , таким образом, он может исправить   ошибок в слове длиной  , используя ключи размером  . Он также обладает удобной матрицей контроля чётности[англ.]   в виде:

 

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

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

Декодирование

править

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

Алгоритм Паттерсона преобразует синдром в вектор ошибок. Предполагается, что синдром двоичного слова   примет вид:

 

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

Далее алгоритм производит расчёт  . Это не удается, когда  , но это тот случай, когда входное слово является ключом, поэтому исправление ошибок не требуется.

Использованием расширенного алгоритма Евклида   сводится к многочленам   и  , так, что  , при этом   и  .

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

Если исходный ключ был декодирован и   — двоичный вектор ошибок, то:

 .

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

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

править

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

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

Примечания

править
  1. Elwyn R. Berlekamp. Goppa Codes (англ.) // IEEE Transactions on information theory. — 1973. — September (no. Vol. IT-19, No. 5). — P. 590—592. Архивировано 29 августа 2017 года.

Литература

править
  • В. Д. Гопп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.