Code de Goppa
# Code de Goppa

En mathématiques et en théorie des codes correcteurs d'erreur, les codes de Goppa, aussi appelé codes de géométrie algébrique, sont une généralisation des codes de Reed-Solomon. Les codes de Goppa sont construits à partir d'une courbe algébrique $C$ sur un corps fini $F$. Dans le cas des codes de Reed-Solomon, la courbe en question est la droite projective, alors que les codes de Goppa généraux utilisent des courbes de genre plus élevé. De tels codes ont été proposés par V. D. Goppa. Parmi la famille des codes de Goppa, les codes dits hermitiens peuvent remplacer avantageusement les codes de Reed-Solomon.

Il ne faut pas confondre les codes de Goppa géométriques avec les codes de Goppa classiques, qui ne reposent pas sur la théorie des courbes algébriques sur les corps finis.

## Codes géométriques

### Notions préliminaires

Posons $C$ une courbe algébrique projective non-singulière irréductible. Fixons $n$ points rationnels de $C$:

    $P_{1},P_{2},...,P_{n}$

et soit $D$, un diviseur de $C$, sur $F$, dont le support ne contient aucun des $P_{i}$.

Il existe un sous-espace vectoriel de dimension finie $L(D)$ du corps de fonctions de $C$, qui est constitué des fonctions rationnelles $f$ sur $C$ avec des zéros et pôles sujets à $D$. Autrement dit, $D$ qui est une somme formelle de points de $C$ sur la clôture algébrique de $F$, donne une borne inférieure pour l'ordre des zéros et une borne supérieure pour l'ordre des pôles de $f$.

### Définition du code de Goppa

Alors, pour une base fixe:

    $f_{1},f_{2},...,f_{k}~$

pour $L(D)$ sur $F$, le code de Goppa correspondant dans $F$ est généré sur $F$ par les vecteurs

    $f_{i}(P_{1}),f_{i}(P_{2}),...,f_{i}(P_{n})~$

De façon équivalente, on peut définir le code de Goppa comme l'ensemble de tous les vecteurs

    $f(P_{1}),f(P_{2}),...,f(P_{n})~$

où $f$ est dans $L(D)$.

## Codes de Goppa classiques

### Utilisation

Les codes de Goppa ont fait une apparition marginale en cryptographie dans le cryptosystème de McEliece.

Généralement, les codes de Goppa sont considérés comme de « bons » codes linéaires puisqu'ils permettent de corriger jusqu'à ${n^{k}} \choose {\log _{2}n}$ erreurs. Aussi, ils se décodent efficacement, par les algorithmes d'Euclide et de Berlekamp-Massey, en particulier.

