Hybride encryptie: hoe het echt gebeurt

Een grote gesloten envelop met daarin een kleine sleutel in een eigen kistje.

Je hebt nu twee soorten sloten. Het symmetrische (één sleutel) is bliksemsnel en kan een hele film versleutelen — maar je moet de sleutel eerst bij de ander krijgen. Het asymmetrische (twee sleutels) lost dat op — maar kan amper een zin versleutelen en is traag. Welk kies je? Geen van beide. Je gebruikt ze samen, en dat is exact wat elk echt systeem doet — van het slotje in je browser tot je berichtenapp.

Woorden die je zo nodig hebt

Hybride
Een mengvorm. Hier: asymmetrische versleuteling voor het kleine, snelle symmetrische versleuteling voor het grote.
Sessiesleutel
Een symmetrische sleutel die je maar één keer gebruikt: voor dit ene bericht, of voor dit ene bezoek aan een website. Daarna weggooien.
TLS
Het systeem achter het slotje en de https:// in je adresbalk. Het spreekt met een asymmetrisch trucje een sessiesleutel af en versleutelt daarna alles symmetrisch.

Het recept

  1. Maak een verse, willekeurige symmetrische sleutel. Alleen voor dit bericht.
  2. Versleutel het bericht daarmee (AES). Snel, en zo groot als je wil.
  3. Versleutel die sleutel — maar 32 bytes — met de publieke sleutel van de ontvanger. Dat past ruim binnen de RSA-grens van 190 bytes.
  4. Stuur beide pakketjes samen: het grote (bericht) en het kleine (sleutel).

De ontvanger doet het omgekeerde: eerst met zijn private sleutel het kleine pakketje openen en zo de sessiesleutel terugkrijgen, dan daarmee het grote pakket ontsleutelen. Twee sloten, één brief.

Probeer het zelf

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

  1. Klik De ontvanger maakt een sleutelpaar. Zij zet haar publieke sleutel online; meer heb jij niet nodig.
  2. Klik Versleutelen. Kijk naar de drie onderdelen en hun grootte.
  3. Plak het bericht tien keer achter elkaar en versleutel opnieuw. Het RSA-deel blijft exact 256 bytes. Alleen het AES-deel groeit.
  4. Klik Ontsleutelen en volg de twee stappen die de ontvanger zet.

Waar je dit elke dag gebruikt

WaarHoe
Het slotje in je browser (TLS) Bij het openen van een site spreken je browser en de server met een asymmetrisch trucje een sessiesleutel af — meestal met een elliptische kromme. Alles wat daarna heen en weer gaat, is symmetrisch versleuteld.
WhatsApp, Signal Hetzelfde principe, met een extra laag: de sleutel verandert bij elk bericht, zodat één gelekte sleutel maar één bericht blootlegt.
Belgische zorg (eHealth) Dokters sturen elkaar versleutelde berichten met exact dit recept. Het bericht wordt eerst ondertekend en dan verzegeld: de ontvanger weet wie het stuurde én dat niemand anders kon meelezen.

Waarom een nieuwe sleutel per bericht

Stel dat een sleutel ooit uitlekt — een hack, een fout, een verloren laptop. Gebruikte je die sleutel voor alles, dan ligt alles open, ook wat je jaren geleden stuurde. Met een verse sleutel per bericht is de schade beperkt tot dat ene bericht. Dat heet forward secrecy: het verleden blijft dicht, ook als het heden lekt.

Dit is wiskunde: hoeveel sleutels heb je nodig?

Stel dat 30 leerlingen in een klas elkaar allemaal geheim willen kunnen schrijven, alleen met symmetrische sleutels. Elk paar heeft een eigen sleutel nodig. Hoeveel paren zijn er? 30 × 29 / 2 = 435 sleutels. Met 1000 mensen: 499 500. Met de hele wereld: onmogelijk. Met asymmetrische sleutels heeft elke persoon maar één sleutelpaar nodig, hoeveel mensen er ook zijn. Dat is combinatoriek: de wiskunde van tellen hoeveel manieren er zijn. Ze bepaalt of een idee werkt voor tien mensen of voor acht miljard.