Articulo de referencia

Código binario de Goppa

En matemáticas y ciencias de la computación , el código binario Goppa es un código de corrección de errores que pertenece a la clase de códigos Goppa generales descritos origina...

En matemáticas y ciencias de la computación , el código binario Goppa es un código de corrección de errores que pertenece a la clase de códigos Goppa generales descritos originalmente por Valerii Denisovich Goppa , pero la estructura binaria le otorga varias ventajas matemáticas sobre las variantes no binarias, y también proporciona un mejor ajuste para el uso común en computadoras y telecomunicaciones. Los códigos binarios Goppa tienen propiedades interesantes adecuadas para la criptografía en criptosistemas tipo McEliece y configuraciones similares.

Construcción y propiedades

Un código Goppa binario irreducible se define mediante un polinomio de grado sobre un campo finito sin raíces repetidas y una secuencia de elementos distintos de que no son raíces de . gramo ( incógnita ) {\estilo de visualización g(x)} a {\estilo de visualización t} GRAMO F ( 2 metro ) {\displaystyle GF(2^{m})} yo 1 , . . . , yo norte {\displaystyle L_{1},...,L_{n}} norte {\estilo de visualización n} GRAMO F ( 2 metro ) {\displaystyle GF(2^{m})} gramo {\estilo de visualización g}

Las palabras clave pertenecen al núcleo de la función del síndrome y forman un subespacio de : { 0 , 1 } norte {\displaystyle \{0,1\}^{n}}

Γ ( gramo , yo ) = { do { 0 , 1 } norte | i = 1 norte do i incógnita yo i 0 modificación gramo ( incógnita ) } {\displaystyle \Gamma (g,L)=\left\{c\in \{0,1\}^{n}\left|\sum _{i=1}^{n}{\frac {c_{i}}{x-L_{i}}}\equiv 0\mod g(x)\right.\right\}}

El código definido por una tupla tiene una dimensión de al menos y una distancia de al menos , por lo que puede codificar mensajes de longitud de al menos utilizando palabras de código de tamaño y corrigiendo al menos errores. Posee una conveniente matriz de verificación de paridad en forma ( gramo , yo ) {\estilo de visualización (g,L)} norte metro a {\displaystyle n-mt} 2 a + 1 {\estilo de visualización 2t+1} norte metro a {\displaystyle n-mt} norte {\estilo de visualización n} ( 2 a + 1 ) 1 2 {\displaystyle \left\lfloor {\frac {(2t+1)-1}{2}}\right\rfloor } yo {\estilo de visualización H}

yo = V D = ( 1 1 1 1 yo 1 1 yo 2 1 yo 3 1 yo norte 1 yo 1 2 yo 2 2 yo 3 2 yo norte 2 yo 1 a 1 yo 2 a 1 yo 3 a 1 yo norte a 1 ) ( 1 gramo ( yo 1 ) 1 gramo ( yo 2 ) 1 gramo ( yo 3 ) 1 gramo ( yo norte ) ) {\displaystyle H=VD={\begin{pmatrix}1&1&1&\cdots &1\\L_{1}^{1}&L_{2}^{1}&L_{3}^{1}&\cdots &L_{n}^{1}\\L_{1}^{2}&L_{2}^{2}&L_{3}^{2}&\cdots &L_{n}^{2}\\\vdots &\vdots &\vdots &\ddots &\vdots \\L_{1}^{t-1}&L_{2}^{t-1}&L_{3}^{t-1}&\cdots &L_{n}^{t-1}\end{pmatrix}}{\begin{pmatrix}{\frac {1}{g(L_{1})}}&&&&\\&{\frac {1}{g(L_{2})}}&&&\\&&{\frac {1}{g(L_{3})}}&&\\&&&\ddots &\\&&&&{\frac {1}{g(L_{n})}}\end{pmatrix}}}

Tenga en cuenta que esta forma de la matriz de comprobación de paridad, al estar compuesta por una matriz de Vandermonde y una matriz diagonal , comparte la forma con las matrices de comprobación de códigos alternantes , por lo que se pueden utilizar decodificadores alternantes en esta forma. Dichos decodificadores suelen proporcionar solo una capacidad limitada de corrección de errores (en la mayoría de los casos ). V {\estilo de visualización V} D {\estilo de visualización D} a / 2 {\estilo de visualización t/2}

Para fines prácticos, la matriz de verificación de paridad de un código Goppa binario se convierte generalmente a una forma binaria más amigable para la computadora mediante una construcción de traza, que convierte la matriz -por- en una matriz binaria -por- escribiendo coeficientes polinómicos de elementos en filas sucesivas. a {\estilo de visualización t} norte {\estilo de visualización n} GRAMO F ( 2 metro ) {\displaystyle GF(2^{m})} metro a {\estilo de visualización mt} norte {\estilo de visualización n} GRAMO F ( 2 metro ) {\displaystyle GF(2^{m})} metro {\estilo de visualización m}

Descodificación

La decodificación de códigos binarios Goppa se realiza tradicionalmente mediante el algoritmo de Patterson, que proporciona una buena capacidad de corrección de errores (corrige todos los errores de diseño) y también es bastante simple de implementar. a {\estilo de visualización t}

El algoritmo de Patterson convierte un síndrome en un vector de errores. Se espera que el síndrome de una palabra binaria adopte la forma de do = ( do 1 , , do norte ) {\displaystyle c=(c_{1},\puntos ,c_{n})}

s ( incógnita ) i = 1 norte do i incógnita yo i modificación gramo ( incógnita ) {\displaystyle s(x)\equiv \suma _{i=1}^{n}{\frac {c_{i}}{x-L_{i}}}\mod g(x)}

Se puede utilizar una forma alternativa de una matriz de verificación de paridad basada en la fórmula para para producir dicho síndrome con una simple multiplicación de matrices. s ( incógnita ) {\estilo de visualización s(x)}

El algoritmo calcula entonces . Esto falla cuando , pero ese es el caso cuando la palabra de entrada es una palabra de código, por lo que no es necesaria ninguna corrección de errores. en ( incógnita ) s ( incógnita ) 1 incógnita modificación gramo ( incógnita ) {\displaystyle v(x)\equiv {\sqrt {s(x)^{-1}-x}}\mod g(x)} s ( incógnita ) 0 {\displaystyle s(x)\equiv 0}

en ( incógnita ) {\estilo de visualización v(x)} se reduce a polinomios y utilizando el algoritmo euclidiano extendido , de modo que , mientras que y . a ( incógnita ) {\displaystyle a(x)} b ( incógnita ) {\estilo de visualización b(x)} a ( incógnita ) b ( incógnita ) en ( incógnita ) modificación gramo ( incógnita ) {\displaystyle a(x)\equiv b(x)\cdot v(x)\mod g(x)} grados ( a ) a / 2 {\displaystyle \deg(a)\leq \lfloor t/2\rfloor } grados ( b ) ( a 1 ) / 2 {\displaystyle \deg(b)\leq \lfloor (t-1)/2\rfloor }

Finalmente, el polinomio localizador de errores se calcula como . Nótese que en el caso binario, localizar los errores es suficiente para corregirlos, ya que solo hay otro valor posible. En los casos no binarios, también se debe calcular un polinomio de corrección de errores por separado. σ ( incógnita ) = a ( incógnita ) 2 + incógnita b ( incógnita ) 2 {\displaystyle \sigma(x)=a(x)^{2}+x\cdot b(x)^{2}}

Si la palabra clave original era decodificable y el vector de error binario era el vector de error, entonces mi = ( mi 1 , , mi norte ) {\ Displaystyle e = (e_ {1}, \ puntos, e_ {n})}

σ ( incógnita ) = i = 1 norte mi i ( incógnita yo i ) {\displaystyle \sigma(x)=\prod_{i=1}^{n}e_{i}(x-L_{i})}

Por lo tanto, factorizar o evaluar todas las raíces de proporciona suficiente información para recuperar el vector de error y corregir los errores. σ ( incógnita ) {\displaystyle \sigma(x)}

Propiedades y uso

Los códigos Goppa binarios, considerados como un caso especial de códigos Goppa, tienen la interesante propiedad de que corrigen errores completos, mientras que solo corrigen errores en los casos ternarios y en todos los demás. Asintóticamente, esta capacidad de corrección de errores cumple con el famoso límite de Gilbert-Varshamov . grados ( gramo ) {\displaystyle \deg(g)} grados ( gramo ) / 2 {\displaystyle \deg(g)/2}

Debido a la alta capacidad de corrección de errores en comparación con la tasa de código y la forma de la matriz de verificación de paridad (que generalmente es difícilmente distinguible de una matriz binaria aleatoria de rango completo), los códigos binarios Goppa se utilizan en varios criptosistemas postcuánticos , en particular el criptosistema McEliece y el criptosistema Niederreiter .

Referencias

  • Elwyn R. Berlekamp, ​​Códigos Goppa, IEEE Transactions on information theory, vol. IT-19, n.º 5, septiembre de 1973, https://web.archive.org/web/20170829142555/http://infosec.seu.edu.cn/space/kangwei/senior_thesis/Goppa.pdf
  • Daniela Engelbert, Raphael Overbeck, Arthur Schmidt. "Un resumen de los criptosistemas de tipo McEliece y su seguridad". Journal of Mathematical Cryptology 1, 151–199. MR 2345114. Versión anterior: http://eprint.iacr.org/2006/162/
  • Daniel J. Bernstein. "Descodificación de listas para códigos binarios Goppa". http://cr.yp.to/codes/goppalist-20110303.pdf

Véase también

Obtenido de "https://es.wikipedia.org/w/index.php?title=Código_binario_de_Goppa&oldid=1194324910"