Symmetrische encryptie
Julius Caesar schreef zijn brieven aan zijn generaals in geheimschrift: elke
letter een paar plaatsen verder in het alfabet. A wordt
D, B wordt E. Wie wist hoeveel
plaatsen, kon lezen. Wie het niet wist, zag onzin. Dat "hoeveel plaatsen" is
de sleutel — en tweeduizend jaar later is dat idee nog
altijd de basis van hoe je berichtjes beveiligd zijn.
Woorden die je zo nodig hebt
- Sleutel
- Het geheim dat je nodig hebt om te versleutelen én te ontsleutelen. Bij Caesar een getal van 1 tot 25. Bij moderne systemen een reeks van 256 willekeurige bits. Wie de sleutel heeft, kan lezen. Wie niet, niet.
- Symmetrisch
- Dezelfde sleutel sluit én opent. Zoals de sleutel van je fietsslot: één sleutel, en die moet je delen met iedereen die het slot mag openen.
- Klaartekst en cijfertekst
- Klaartekst is je gewone bericht. Cijfertekst is wat eruit komt na het versleutelen: voor iedereen zonder sleutel gewoon ruis.
- AES
- Het geheimschrift dat vandaag bijna alles gebruikt: je wifi, je berichtjes, je bankapp. Sinds 2001 de wereldstandaard, en in al die jaren heeft niemand er een gat in gevonden.
- IV (initialisatievector)
- Een willekeurig getal dat bij elk bericht anders is, zodat twee keer hetzelfde bericht met dezelfde sleutel toch twee verschillende cijferteksten geeft. Anders zou een meelezer zien: "hé, dat bericht heeft hij gisteren ook gestuurd".
Wat er in 2000 jaar veranderd is
Caesar had 25 mogelijke sleutels. Die probeer je met de hand allemaal uit in een kwartier. AES heeft 2256 mogelijke sleutels. Zet alle computers op aarde samen aan het werk, en ze zijn nog bezig als de zon uitdooft. Het principe is hetzelfde; alleen de wiskunde onder de motorkap is onvergelijkbaar slimmer.
Er is nog iets bijgekomen. Caesar kon niet zien of iemand onderweg een letter had veranderd. Moderne versleuteling wel: AES in de GCM-stand hangt een soort lakzegel aan het bericht. Wordt er ook maar één bit aan de cijfertekst veranderd, dan breekt het zegel en weigert het ontsleutelen. Dat ga je zo zelf zien gebeuren.
Probeer het zelf
Alles gebeurt in je browser. Er wordt niets naar de server gestuurd.
- Klik Versleutelen. Het versleutelde pakket verschijnt in het onderste vak — onleesbaar.
- Klik Ontsleutelen. Je bericht komt terug.
- Verander nu één letter in het wachtwoord en klik weer Ontsleutelen. Geen bericht, alleen een weigering.
- Zet het wachtwoord terug. Klik Klap één bit om — de demo verandert één enkele 0 in een 1 in het pakket. Klik Ontsleutelen. Het zegel is gebroken.
- Versleutel hetzelfde bericht twee keer. Vergelijk de twee pakketten.
Bij stap 5 zag je twee compleet verschillende pakketten voor hetzelfde bericht. Dat is de IV aan het werk. En het is belangrijk: iemand die je verkeer afluistert, mag zelfs niet kunnen zien dat je twee keer hetzelfde stuurde.
Het probleem dat Caesar ook al had
Alles hierboven werkt alleen als jij en de ontvanger dezelfde sleutel hebben. Caesar kon zijn generaal de sleutel influisteren voor hij vertrok. Maar hoe doe jij dat met een website in Amerika die je nog nooit gezien hebt? Je kan de sleutel niet gewoon meesturen — dan leest de afluisteraar hem mee en is alles voor niets.
Dit heet het sleuteluitwisselingsprobleem, en het leek eeuwenlang onoplosbaar. Tot in 1976 twee wiskundigen iets bedachten dat klinkt als een goocheltruc. Dat is het volgende hoofdstuk.
Dit is wiskunde: klokrekenen
Caesar telt bij elke letter 3 op. Maar wat komt er na Z? Je
begint opnieuw bij A. Dat is rekenen op een klok met 26 uren:
25 + 3 = 2. Wiskundigen noemen dat modulo 26. Het klinkt als een
trucje voor kinderen, maar het is de bouwsteen van álle moderne
cryptografie. Elk hoofdstuk hierna gebruikt het — op een klok met een getal
van 78 cijfers als omtrek.