Geheime post: schrijf onkraakbare berichten

Genoeg gekeken. Nu ga je het echt doen: je maakt een sleutelkaart, je wisselt ze uit met een vriend, en vanaf dan sturen jullie elkaar berichten die niemand anders kan lezen. Niet je ouders, niet je leerkracht, niet WhatsApp zelf. Het bericht gaat gewoon via WhatsApp — maar wat erin staat, ontsleutel je alleen hier, met jouw kaart.

Woorden die je zo nodig hebt

Sleutelkaart
Jouw sleutelpaar uit hoofdstuk 5, maar dan tastbaar. De publieke sleutel staat erop om weg te geven; de geheime sleutel is een rij van 64 tekens die je op papier bewaart. Ben je je browser kwijt, dan typ je die 64 tekens terug in en alles is hersteld.
Vriend toevoegen
De publieke sleutel van iemand anders bewaren, met een naam erbij. Vanaf dan kan je schrijven "aan Sam" in plaats van elke keer een sleutel te plakken.
De link met een #
Het versleutelde bericht zit in een link, achter het hekje. Wat achter een # staat, stuurt een browser nooit naar een server. Wie op de link klikt, komt hier terecht met het bericht al ingevuld — en het ontsleutelen gebeurt in zijn eigen browser.
Niveau 1 en niveau 2
Niveau 1: jullie spreken een wachtwoord af (hoofdstuk 4). Niveau 2: jullie wisselen sleutelkaarten uit, en er is geen wachtwoord meer nodig (hoofdstuk 5 en 6). Niveau 2 is het echte werk.

Stap 1 — Maak je sleutelkaart

Jouw kaart

Je sleutels worden in je browser gemaakt en alleen dáár bewaard. Er gaat niets naar een server. Wis je de gegevens van deze site, dan is je kaart weg — tenzij je ze op papier hebt.

  1. Typ je voornaam. Die zien je vrienden bij je berichten.
  2. Klik Maak mijn sleutelkaart. Je browser kiest een willekeurig getal van 78 cijfers (je geheime sleutel) en rekent er het bijhorende punt op de kromme uit (je publieke sleutel). Dat duurt een fractie van een seconde.
Ik heb al een kaart op papier — herstel ze

Stap 2 — Voeg je vrienden toe

Vrienden

  1. Vraag je vriend zijn sleutelkaart te maken en ze je via WhatsApp te sturen (knop hierboven, bij hem).
  2. Plak wat je kreeg hieronder — je mag het hele berichtje plakken, de site vist de sleutel er wel uit.
  3. Geef een naam en klik Voeg toe.

Nog geen vrienden. Zolang dat zo is, kan je berichten sturen met een afgesproken wachtwoord (niveau 1).

    Stap 3 — Schrijf een geheim bericht

    Schrijven

    1. Kies aan wie. Een vriend met sleutelkaart, of iemand zonder — dan spreek je een wachtwoord af (niet via WhatsApp: fluister het, of schrijf het op een papiertje).
    2. Schrijf je bericht en klik Versleutel.
    3. Klik Deel via WhatsApp, of kopieer de link en plak ze waar je wil.

    Lees een geheim bericht

    Lezen

    Klikte je op een gedeelde link, dan staat het bericht hier al en is het ontsleutelen al gebeurd.

    Wat er echt gebeurt

    1. Jouw browser neemt jouw geheime sleutel en de publieke sleutel van je vriend en mengt ze — het verf-trucje uit hoofdstuk 5, op de kromme uit hoofdstuk 6. Er komt een gedeeld geheim uit dat alleen jullie twee kunnen maken.
    2. Van dat geheim maakt ze een AES-sleutel en versleutelt je bericht (hoofdstuk 4), met een lakzegel tegen knoeien.
    3. Je publieke sleutel reist mee in het bericht, zodat je vriend weet met wie hij moet mengen. Dat mag: ze is publiek.
    4. Je vriend mengt zijn geheime sleutel met jouw publieke. Zelfde bruine kleur. Zelfde AES-sleutel. Bericht open.

    WhatsApp ziet een link met een lange staart. De server van deze site ziet helemaal niets: de staart staat achter een #. Wie het bericht onderschept, heeft een pakketje AES-cijfertekst en één publieke sleutel — en zonder één van de twee geheime sleutels is dat waardeloos. Zelfs wij kunnen het niet lezen, en dat is precies zoals het hoort.

    Eerlijk over de grenzen. Dit is echte cryptografie, dezelfde bouwstenen als Signal en TLS. Maar het is een leerproject, geen product. Er is geen controle dat de kaart die je van "Noor" kreeg, echt van Noor is — als iemand anders je een kaart stuurt met haar naam erop, schrijf je naar die iemand anders. (Daar dienen certificaten voor, hoofdstuk 7.) Gebruik dit om te leren en te spelen, niet voor dingen waar je leven van afhangt.

    Dit is wiskunde: waarom het mengen in beide richtingen klopt

    Jouw geheime sleutel is een getal a, je publieke sleutel het punt a·G. Die van je vriend: b en b·G. Jij berekent a·(b·G). Hij berekent b·(a·G). Dat is allebei (a·b)·G — omdat vermenigvuldigen van getallen commutatief is en de puntoptelling associatief. Twee woorden uit de eerste les algebra, en samen zijn ze de reden dat je vriend en jij op hetzelfde geheim uitkomen terwijl een afluisteraar, die alleen a·G en b·G ziet, dat nooit kan. Dit heet Diffie–Hellman op een elliptische kromme, en het is letterlijk wat je browser deed toen hij deze pagina opende.