Het eenmalige blok: onbreekbaar op papier

Twee identieke blaadjes vol kolommen kleine tekens, half over elkaar op een bureau, met een potlood en een dobbelsteen ernaast.

Alles op deze site draait op een computer die rekent met getallen waar jij niet bij kan. Dit hoofdstuk niet. Hier maak je een geheimschrift dat je met een potlood uitvoert, op een blaadje dat je in je zak steekt, en waarvan bewezen is dat niemand het kan breken. Geen supercomputer, geen quantumcomputer, niemand. En daarna zie je waarom bijna niemand het gebruikt.

Woorden die je zo nodig hebt

Eenmalig blok
Een lijst willekeurige letters, twee keer afgedrukt: één voor jou, één voor de ander. Je gebruikt elke letter van die lijst precies één keer. In het Engels: one-time pad.
Modulo 26
Rekenen met het alfabet als een klok van 26 uur. Na Z komt weer A. Je kent dit al van hoofdstuk 6, daar was het een klok van 23.
Bewezen veilig
Niet "nog nooit gekraakt", maar wiskundig aangetoond dat er niets te kraken valt. Dat is een sterke uitspraak, en dit is zowat het enige geheimschrift waarvoor ze geldt.
Sleuteldistributie
Het probleem hoe je een sleutel bij de ander krijgt zonder dat iemand anders hem onderweg meeleest. Onderaan dit hoofdstuk blijkt dat het hele probleem hierin zit.

Hoe het werkt

Geef elke letter zijn nummer: A is 0, B is 1, tot Z is 25. Neem de eerste letter van je bericht, neem de eerste letter van je blok, tel de twee nummers bij elkaar op. Kom je boven de 25, trek er dan 26 af. Het nummer dat je overhoudt is je cijferletter. Dan de tweede letter, met de tweede letter van het blok. Enzovoort.

cijferletter = (bericht + blok) mod 26

bericht = (cijferletter − blok) mod 26

Meer is het niet. Optellen om te sluiten, aftrekken om te openen. Dat is te doen met een potlood, en tijdens de Koude Oorlog is het jarenlang precies zo gedaan, met blokjes papier zo groot als een postzegel.

Waarom dit niet te kraken is

Stel dat je de cijfertekst XQFMB onderschept. Je probeert alle blokken. Bij één blok komt er THUIS uit. Bij een ander blok SLAAP. Bij weer een ander NIETS. Alle drie zijn het geldige Nederlandse woorden, en er is geen enkele reden om te denken dat de ene meer klopt dan de andere.

Dat is het verschil met alles wat je tot nu toe gezien hebt. Bij een Caesar levert het juiste antwoord leesbare tekst op en de 24 andere onzin, dus je weet meteen welke het is. Hier levert elk mogelijk bericht van die lengte een geldig blok op. De cijfertekst vertelt je letterlijk niets over het bericht, behalve hoe lang het is.

Drie regels, en ze zijn geen van drieën onderhandelbaar. Het blok moet even lang zijn als het bericht. Het moet echt willekeurig zijn, dus gegooid en niet verzonnen, zie hoofdstuk 2. En je mag het maar één keer gebruiken. Laat je er één vallen, dan stort het hele bewijs in, en verderop op deze pagina zie je hoe hard.

Maak je eigen blok

Een blok van willekeurige letters

Alles gebeurt in je browser. Er wordt niets naar de server gestuurd, en er wordt niets bewaard.

  1. Kies hoeveel letters je wil en klik Maak het blok.
  2. Klik Print. Print twee keer: één blad voor jou, één voor de persoon aan wie je gaat schrijven. Geef het af als je elkaar ziet.
  3. Sluit dit tabblad en kom terug. Het blok is weg. Dat is opzet: wat je niet geprint hebt, bestaat niet meer.

Versleutel met de hand

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

  1. Typ je bericht. Maak eerst hierboven een blok als je dat nog niet gedaan hebt.
  2. Reken de eerste vijf letters zelf uit, met papier. Vul je antwoord in bij Mijn uitkomst en klik Controleer mij.
  3. Klik daarna Toon de optelling om te zien hoe de demo het gedaan heeft, letter voor letter.

Wat er gebeurt als je het blok twee keer gebruikt

Je hebt nog blok over en je wil nog iets sturen. Verleidelijk, en fataal. Noem de twee berichten b1 en b2, en het blok k. Dan is de ene cijfertekst b1 + k en de andere b2 + k. Trek ze van elkaar af:

(b1 + k) − (b2 + k) = b1 − b2

De k valt weg. De afluisteraar houdt het verschil van je twee berichten over, en daar zit geen greintje geheim meer in. Vanaf dat moment is één gok genoeg: raad je een stuk van het ene bericht, dan rolt het andere er vanzelf uit.

Twee berichten, één blok

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

  1. Klik Verstuur ze allebei. Je ziet de twee cijferteksten en hun verschil.
  2. Doe nu alsof je de afluisteraar bent. Je vermoedt dat het eerste bericht begint met AANVAL. Typ dat bij Mijn gok en klik Wat staat er dan in het andere?
  3. Probeer een gok die er niet in staat, en kijk wat er dan uitkomt.

Waarom bijna niemand dit gebruikt

Je hebt zonet het beste geheimschrift ter wereld gemaakt, en het kostte je een blaadje. Waarom staat dit dan niet in je telefoon?

Omdat je het blok eerst moest afgeven. Jullie moesten elkaar zien. En als je elkaar toch al kan zien zonder dat iemand meeluistert, had je het bericht net zo goed meteen kunnen fluisteren. Wil je vanavond honderd letters sturen, dan moet je vandaag honderd letters overhandigen. Voor een gesprek van een uur met een berichtenapp heb je er miljoenen nodig.

Dat is de reden dat de rest van deze site bestaat. hoofdstuk 6 lost precies dit op: een geheim afspreken zonder elkaar ooit gezien te hebben. Je betaalt ervoor met een geheimschrift dat niet meer bewijsbaar onbreekbaar is, alleen nog onbreekbaar zolang niemand een slimme truc vindt. Dat is de ruil, en zo goed als de hele wereld heeft ze gemaakt.

Eén groep niet. Voor verbindingen waar het echt om gaat, bestaan er nog altijd eenmalige blokken op papier, gegooid met een dobbelsteen, met de hand overhandigd. Niet omdat het handig is, maar omdat het het enige is waarvan je niet hoeft te hopen dat het klopt.

Dit is wiskunde: perfecte geheimhouding

Claude Shannon, dezelfde van de entropie uit hoofdstuk 2, schreef in 1949 op wat "onbreekbaar" precies betekent: een geheimschrift is perfect geheim als de kans op een bepaald bericht na het zien van de cijfertekst exact even groot is als ervoor. Je hebt niets geleerd. Hij bewees dat het eenmalige blok dat haalt, en meteen erachteraan iets veel onaangenamers: dat het alléén kan als je sleutel minstens zoveel entropie heeft als je bericht. Dat is geen tekortkoming van dit ene systeem maar een ondergrens voor allemaal. Elke keer dat je een sleutel van 256 bits gebruikt voor een film van twee gigabyte, koop je dus geen perfecte geheimhouding maar iets zwakkers: een systeem dat te breken is, alleen niet in de tijd die iemand heeft. Dat onderscheid tussen "kan niet" en "duurt te lang" loopt door de hele moderne cryptografie, en het is hier dat je het voor het eerst scherp ziet.