Elliptische krommen: de wiskunde in je zak

Dit is de vergelijking y2 = x3 − x + 1. Teken je ze, dan krijg je een gebogen lijn — een elliptische kromme. Dat lijkt iets uit een wiskundeboek waar je nooit meer aan denkt. Maar precies deze soort lijn zit in de chip van je identiteitskaart, achter het slotje in je browser, en onder Bitcoin. In dit hoofdstuk ga je erop klikken en zien waarom.

Woorden die je zo nodig hebt

Kromme
Gewoon een gebogen lijn in een grafiek: alle punten (x, y) waarvoor een vergelijking klopt. Een parabool is een kromme. Dit is een iets spannendere.
Punten optellen
Dit is het rare idee. Op deze kromme kan je twee punten "optellen" en krijg je een derde punt op dezelfde kromme. Niet door de coördinaten op te tellen, maar met een tekenregel: trek een lijn door de twee punten, kijk waar die de kromme nog een derde keer snijdt, en spiegel dat punt in de x-as. Klaar: dat is P + Q.
Verdubbelen
P + P. Je hebt maar één punt, dus je neemt de raaklijn — de lijn die de kromme in P precies raakt — en doet dezelfde truc.
Klokrekenen (modulo)
Rekenen met alleen gehele getallen van 0 tot een grens, waarbij je na de grens opnieuw bij 0 begint. Ken je van het vorige hoofdstuk. Hier zie je wat het met een grafiek doet.

Klik op de kromme

Alles gebeurt in je browser. Er wordt niets naar de server gestuurd.

  1. Klik ergens op de lijn. Dat is P. Klik een tweede keer voor Q. De demo trekt de lijn, vindt het derde snijpunt, spiegelt het, en toont P + Q.
  2. Klik Wis, kies één punt en druk op Verdubbel. Blijf dan klikken op Tel P er nog eens bij: 3·P, 4·P, 5·P… De punten springen over de hele kromme.
  3. Schuif aan a en b. De vorm verandert — soms splitst de lijn in twee stukken. Zoek de stand waar ze een knik krijgt: die is onbruikbaar, en de demo zegt waarom.
  4. Druk op Klokrekenen (modulo 97). Zelfde vergelijking, alleen gehele getallen. Kijk wat er van de lijn overblijft. Kies een stip en tel weer op.

Wat je net gezien hebt

Op de vloeiende lijn kon je nog een beetje "voelen" waar je zat. Na drie keer optellen zit je ongeveer dáár, na vier keer ongeveer daar. Maar zodra je op klokrekenen overschakelde, viel de lijn uit elkaar in een wolk van stippen zonder enig patroon. En het optellen werkte nog steeds — dezelfde formules, dezelfde regels — alleen springt het resultaat nu kruis en dwars over het vlak.

Nu het hele geheim. Stel dat ik een punt P kies en het 1 000 000 keer bij zichzelf optel. Dat kan een computer razendsnel — er is een truc waardoor het maar een dertigtal stappen kost. Ik geef jou P en het eindpunt. Kan jij uitzoeken dat het 1 000 000 keer was? Op de stippenwolk van 97 nog wel: je probeert ze gewoon allemaal. Maar de kromme in je identiteitskaart heeft ongeveer 2384 punten. Dat getal heeft 116 cijfers. Niemand probeert dat af, ook geen supercomputer, ook niet in een miljard jaar.

Dát is de private sleutel: het aantal keren. De publieke sleutel is het eindpunt. Iedereen mag het eindpunt zien; niemand kan terugtellen. Precies het open hangslot uit het vorige hoofdstuk — maar met een grafiek in plaats van priemgetallen.

Waarom krommen en niet gewoon RSA

RSA (priemgetallen)Elliptische krommen
Even veilig bijsleutel van 3072 bitssleutel van 256 bits
Dat iseen getal van 925 cijferseen getal van 78 cijfers
Past op een chipkaart?met moeiteruim
Bedacht in19771985, door Neal Koblitz en Victor Miller, los van elkaar

Twaalf keer kortere sleutels voor dezelfde veiligheid. Daarom stapt de wereld over: de nieuwste Belgische identiteitskaarten gebruiken een kromme (met de naam P-384), oudere kaarten nog RSA. Het slotje in je browser spreekt de sleutel af met een kromme. Bitcoin-adressen zijn punten op een kromme.

De regel voor a en b. Bij het schuiven zag je dat sommige standen een knik of een lus geven. Wiskundig: als 4a3 + 27b2 = 0, is de kromme "ontaard" en werkt het optellen niet meer overal. Cryptografen kiezen a en b dus met zorg — en ze publiceren ze, zodat iedereen kan controleren dat er geen geheime zwakte in verstopt zit. Dat wantrouwen is een vak op zich.

Dit is wiskunde: een groep

Wat je net deed — punten "optellen" met een tekenregel — heeft alle eigenschappen van gewoon optellen. Het is associatief: (P + Q) + R = P + (Q + R), al zie je dat niet meteen. Er is een "nul" (het punt op oneindig, dat je tegenkwam toen de lijn verticaal werd). Elk punt heeft een tegengestelde (zijn spiegelbeeld). Wiskundigen noemen zo'n verzameling met zo'n bewerking een groep. Dat is het eerste hoofdstuk van abstracte algebra, het vak waarin je leert dat getallen, draaiingen van een kubus en punten op een kromme diep vanbinnen hetzelfde spelletje spelen. Het staat in het eerste jaar van elke universitaire opleiding wiskunde — en het is precies dit spelletje dat je identiteitskaart beschermt.