Goppa-code

Een binaire goppa-code, doorgaans alleen goppa-code genoemd, is een foutcorrigerende code. De code is genoemd naar de Russische wiskundige Velerii Denisovich Goppa. In McEliece-cryptografie wordt bijvoorbeeld gebruikgemaakt van binaire goppa-codes. Een binaire goppa-code is niet hetzelfde als een algebraïsche goppa-code.

Voorwaardes

Er zijn verschillende definities te geven voor een goppa-code. Hier wordt toegewerkt naar een polynomiale definitie. Voordat we dat kunnen doen zijn er enkele parameters nodig. De volgende gegevens zijn gebruikelijk voor een goppa-code:

In dit geval geldt dat .

Definitie

Een definitie van de goppa-code , is nu

De polynomen , kunnen gezien worden als vectoren over .

Ze vormen een pariteitscontrole-matrix voor de code .

Algoritme van Patterson

In 1975 heeft Patterson een algoritme ontwikkeld om in polynomiale tijd fouten te kunnen corrigeren uit de goppa-code.

Voordat het algoritme weergegeven kan worden, is de definitie nodig van de norm van een polynoom.

Norm van een polynoom

Voor een polynoom geldt dat de norm , met de graad van .

Bij rationale functies geldt . Bijvoorbeeld .

Algoritme

Het doel is om maximaal fouten te verbeteren uit eengoppa-code . We starten met een woord , met maximaal fouten. Dat betekent dat er een coodewoord is zodat er in het codewoord hoogstens maal een 1 met een 0 verwisseld is, of andersom.

De norm van een vector is per definitie gelijk aan de norm van de polynoom .
Zo is de lengte van de vector gelijk aan .

Voor een uitgebreid voorbeeld van dit algoritme wordt verwezen naar het artikel van Bernstein.