Asymmetrische encryptie
Stel je koopt duizend identieke hangsloten, doet ze allemaal open en deelt ze uit aan iedereen die je kent. De enige sleutel die erop past, houd jij. Wil iemand je iets geheims sturen, dan legt hij het in een doosje, klikt er één van jouw hangsloten op en post het. Vanaf dat moment krijgt hij het zelf ook niet meer open — alleen jij. Zo'n slot bestaat niet van metaal. Van wiskunde wel, en het is iets anders dan wat je vorig hoofdstuk deed: daar spraken twee mensen samen een sleutel af, hier stuurt iemand jou rechtstreeks iets geheims zonder dat jullie ooit iets afgesproken hebben.
Woorden die je zo nodig hebt
- Sleutelpaar
- Twee sleutels die wiskundig bij elkaar horen en samen gemaakt worden. Wat de ene sluit, opent alleen de andere.
- Publieke sleutel
- Zo'n open hangslot. Daar deel je er zoveel van uit als je wil, en je mag hem gerust op je profiel zetten. Wie jou iets geheims stuurt, doet het in een doosje en klikt jouw hangslot erop.
- Private sleutel
- De enige sleutel die op al die hangsloten past. Die blijft bij jou, altijd, en zonder die sleutel gaat er geen enkel doosje meer open — ook niet voor wie het zelf dichtgeklikt heeft.
- Asymmetrisch
- Twee verschillende sleutels voor sluiten en openen. Het tegendeel van symmetrisch, waar het dezelfde sleutel is.
- RSA
- Het eerste systeem dat dit kon, uit 1977, genoemd naar de drie bedenkers Rivest, Shamir en Adleman. Het werkt met priemgetallen die honderden cijfers lang zijn.
Niet te verwarren met het vorige hoofdstuk
Allebei lossen ze hetzelfde ongemak op — geheim doen met iemand die je niet vooraf een sleutel kon geven — maar ze doen het op een andere manier, en dat verschil raakt iedereen door elkaar. Ook mensen die het zouden moeten weten.
| Sleutels afspreken (hoofdstuk 6) | Asymmetrisch versleutelen (hier) | |
|---|---|---|
| Wat er gebeurt | jullie komen samen op één geheim uit | iemand versleutelt iets voor jou |
| Wie doet mee | allebei, tegelijk | de zender alleen; jij hoeft er niet te zijn |
| Wat je krijgt | een gedeelde sleutel, waar je dan AES mee doet | een cijfertekst, meteen |
| Het sleutelpaar | hoort bij die ene uitwisseling | is van jou, en blijft van jou |
Hoe het de rollen omdraait
| Symmetrisch (hoofdstuk 5) | Asymmetrisch (dit hoofdstuk) | |
|---|---|---|
| Sleutels | één, en die moet je delen | twee, en één mag iedereen zien |
| Vooraf afspreken | ja, via een veilig kanaal | niets |
| Snelheid | bliksemsnel | traag |
| Hoe groot mag het bericht zijn? | onbeperkt | heel klein — kleiner dan de sleutel |
Twee toepassingen, en het zijn niet dezelfde bewerking
Een sleutelpaar wordt op twee manieren gebruikt, en het is de moeite ze uit elkaar te houden — ze worden voortdurend verward, ook in leerboeken.
| Versleutelen | Ondertekenen | |
|---|---|---|
| Wie begint | iedereen die jou iets wil sturen | alleen jij |
| Met welke sleutel | jouw publieke | jouw private |
| Wie kan de andere kant | alleen jij, met je private | iedereen, met jouw publieke |
| Dat heet | ontsleutelen | verifiëren, niet ontsleutelen |
| Waarvoor | geheimhouding | bewijzen dat jij het was |
De regel die je vaak hoort — "wat je met de ene sleutel versleutelt, kan je alleen met de andere ontsleutelen" — klopt niet. Ze gaat op voor kale RSA en verder nergens. Bij de systemen op elliptische krommen béstaat "versleutelen met de private sleutel" niet eens: een handtekening is een paar getallen waar het bericht niet meer uit te halen valt. Verifiëren is geen ontsleutelen, het is een vergelijking die klopt of niet klopt.
De regel die wél overal opgaat, is deze: de private sleutel doet iets wat alleen de houder kan doen; de publieke sleutel laat iedereen dat richten of controleren. Over ondertekenen gaat hoofdstuk 8.1.
Twee families, en een handvol namen
Er bestaan verschillende manieren om een sleutelpaar te maken. Twee ervan dragen bijna alles wat je vandaag gebruikt, en die krijgen elk een eigen stuk hierna.
| Familie | Rust op | Sleutel afspreken | Ondertekenen | Versleutelen |
|---|---|---|---|---|
| RSA | priemgetallen ontbinden | — | RSA-PSS | RSA-OAEP |
| Elliptische krommen | terugtellen op een kromme | ECDH | ECDSA, EdDSA | zelden |
| Priemgetallen mod p | de discrete logaritme | DH (hoofdstuk 6) | DSA — afgevoerd | — |
| Roosters | de kortste vector zoeken | ML-KEM | ML-DSA | — |
Twee dingen vallen op in die tabel. Er is geen enkele familie die alles kan — elke kolom vraagt zijn eigen algoritme. En DSA staat er als afgevoerd: de Amerikaanse standaardisatiedienst NIST haalde het in 2023 uit de norm voor nieuwe handtekeningen, en liet het alleen staan om oude te blijven controleren. De onderste rij is de nieuwste en gaat over de quantumcomputer; daarover later meer.
Waar het bij mensen blijft hangen. Vraag iemand die dit vak doet wat hem of haar erin getrokken heeft, en het antwoord gaat verrassend vaak over dit ene hoofdstuk. Niet over de formules, maar over de scheefheid: een simkaartje van een halve centimeter rekent iets uit dat alle datacenters ter wereld samen niet kunnen terugdraaien. Dat een zó klein ding een zó groot ding kan tegenhouden, is niet vanzelfsprekend, en het is geen trucje van betere machines. Het is een eigenschap van de wiskunde zelf.
Dit is wiskunde: complexiteit
Alles in dit hoofdstuk hangt aan één soort som: eentje die je vooruit in een fractie van een seconde maakt en achteruit in geen duizend jaar. Zo'n som heet een eenwegfunctie. Je hebt er al twee gezien — priemgetallen vermenigvuldigen in hoofdstuk 7.1 en punten optellen in hoofdstuk 7.2 — en ze lijken in niets op elkaar, behalve in die scheefheid. Het vak dat meet hoeveel werk een berekening kost heet complexiteitstheorie, en het meet niet in seconden maar in hoe hard het werk groeit als je invoer groter wordt. Verdubbel je de sleutel, dan verdubbelt het werk om te versleutelen, terwijl het werk om te kraken een paar miljard keer zo groot wordt. Dáár leeft je veiligheid.
En nu het ongemakkelijke. Van geen enkele eenwegfunctie is bewezen dat ze er een is. Niemand heeft ooit aangetoond dat grote getallen ontbinden echt moeilijk moet zijn; we weten alleen dat het niemand tot nu toe gelukt is. Die vraag zit vast aan het beroemdste open probleem van de informatica, P versus NP, waar sinds 2000 een miljoen dollar op staat. Wordt het ooit opgelost in de verkeerde richting, dan valt de helft van deze site stil. Dat is geen doemscenario dat je moet vrezen, wel iets om te weten: moderne cryptografie rust niet op een bewijs, maar op vijftig jaar mislukte pogingen.