Hoe public-key cryptografie echt werkt
Een praktische uitleg van asymmetrische encryptie, sleutelparen en digitale handtekeningen, zonder wiskundige vergelijkingen.
Elke keer dat je SSH gebruikt op een server of een HTTPS-site laadt, doen twee wiskundig gerelateerde sleutels het zware werk. Eén is openbaar, eén is privé, en de relatie tussen hen maakt veilige communicatie over een onbetrouwbaar netwerk überhaupt mogelijk.
Het basisidee
Bij symmetrische encryptie sluit en opent één sleutel de gegevens. Dat werkt prima als beide partijen al een geheim delen, maar dat geheim veilig distribueren is het moeilijke gedeelte. Public-key (asymmetrische) cryptografie lost dit op door een wiskundig gerelateerd paar te genereren: een openbare sleutel die je aan iedereen geeft, en een privésleutel die je nooit deelt.
Gegevens versleuteld met de openbare sleutel kunnen alleen ontsleuteld worden met de bijbehorende privésleutel. Gegevens ondertekend met de privésleutel kunnen door iedereen met de openbare sleutel geverifieerd worden. Die twee eigenschappen dekken bijna alles waarvoor we dit gebruiken: vertrouwelijkheid en authenticatie.
RSA, het klassieke voorbeeld
RSA steunt op het feit dat twee grote priemgetallen vermenigvuldigen snel gaat, maar het product terug in priemgetallen ontbinden is op schaal computationeel zwaar. Een 2048-bits RSA-sleutel is gebouwd van twee priemgetallen van ruwweg 1024 bits elk. De openbare sleutel is (n, e) — n is het product van de priemgetallen, e een vaste exponent zoals 65537. De privésleutel wordt afgeleid met behulp van de totient van n en vereist het kennen van de originele priemgetallen.
Encryptie is modulair machtsverheffing: c = m^e mod n. Ontsleuteling draait het om met de private exponent d: m = c^d mod n. In de praktijk versleutelt niemand grote gegevens rechtstreeks met RSA — het is langzaam en heeft groottelimits gebonden aan de sleutellengte. In plaats daarvan verpakt RSA meestal een symmetrische sessiesleutel (AES-256, bijvoorbeeld), en de symmetrische cipher verwerkt de bulkgegevens. Dit is de hybride benadering die TLS gebruikt.
Elliptic curve cryptography en waarom het aan het overheersen is
ECC geeft je gelijkwaardige beveiliging als RSA met veel kleinere sleutels. Een 256-bits ECC-sleutel (zoals curve secp256r1 of Curve25519) is ruwweg vergelijkbaar in sterkte met een 3072-bits RSA-sleutel. Kleinere sleutels betekenen snellere handshakes en minder bandbreedte, wat verklaart waarom moderne TLS-configuraties, SSH-implementaties en Signal's protocol allemaal op ECC vertrouwen.
De wiskunde is anders — gebaseerd op het discrete logaritmeprobleem over punten op een elliptische curve in plaats van gehele factoriseringsontbinding — maar de openbare/privé-sleutelrelatie en de garanties zijn conceptueel hetzelfde.
Digitale handtekeningen: het andere gedeelte van de vergelijking
Encryptie houdt gegevens vertrouwelijk. Handtekeningen bewijzen authenticiteit en integriteit. Om een bericht te ondertekenen, hash je het (SHA-256, typisch) en versleutel je die hash met je privésleutel. Iedereen met je openbare sleutel kan het bericht zelf hashen, je handtekening ontsleutelen en controleren of de twee hashes overeenkomen.
Dit gebeurt exact wanneer je git commit -S uitvoert met een GPG-sleutel, of wanneer een Certificate Authority een TLS-certificaat ondertekent. De privésleutel van de CA ondertekent je cert; browsers worden geleverd met de openbare sleutel van de CA vooraf vertrouwd, dus ze kunnen je cert's authenticiteit verifiëren zonder ooit rechtstreeks met de CA te spreken.
Waar dit dagelijks voorkomt
SSH-sleutelauthenticatie is een directe toepassing: ssh-keygen -t ed25519 genereert een sleutelpaar, je plaatst de openbare helft in ~/.ssh/authorized_keys op de server, en authenticatie gebeurt via een challenge-response met de privésleutel, geen wachtwoord wordt ooit verzonden.
TLS-handshakes gebruiken asymmetrische crypto kort, puur om een gedeelde symmetrische sleutel tot stand te brengen (via ECDHE-sleuteluitwisseling in moderne setups), en schakelen dan over naar snelle symmetrische encryptie voor de daadwerkelijke sessie. PGP/GPG-e-mailencryptie volgt ook het hybride patroon — versleutel het bericht met een willekeurige AES-sleutel, versleutel die AES-sleutel vervolgens met de RSA- of ECC-openbare sleutel van de ontvanger.
Wat in de praktijk werkelijk breekt
De wiskunde achter RSA en ECC is niet doorbroken via klassieke computing. Wat misgaat is vrijwel altijd implementatie: zwakke willekeurige getallenvorming bij sleutelcreatie (de Debian OpenSSL-bug uit 2008 is het standaardvoorbeeld), hergebruikte nonces in ECDSA-handtekeningen die privésleutels lekken, of padding oracle-aanvallen tegen slecht geïmplementeerde RSA (Bleichenbacher's aanval tegen PKCS#1 v1.5 padding). Quantum computing is de lange-termijn theoretische bedreiging — Shor's algoritme zou zowel RSA als ECC breken als een voldoende grote quantumcomputer zou bestaan — wat verklaart waarom NIST al post-quantum algoritmen zoals ML-KEM (voorheen Kyber) heeft gestandaardiseerd voor toekomstige migratie.
Als je hier dieper mee wil gaan, behandelt Korra Studio's cryptografie-track sleuteluitwisselingprotocollen en hash-functie-internals dieper, en de netwerksegmenten lopen door hoe dit allemaal in een daadwerkelijke TLS-handshake byte voor byte past.
Geschreven met AI-ondersteuning, herzien en gepubliceerd door Michal Pilch (CISSP), Korra Studio.
Dit is één aantekening uit de kennisbasis van Korra Studio — het platform koppelt elk onderwerp aan 1-op-1 mentoring.
Gratis beginnenarrow_forward