ECDH: hoe twee onbekenden via internet een geheime sleutel afspreken
Elke keer dat je in je browser een website bezoekt met een groen slotje, of een bericht stuurt via Signal of WhatsApp, gebeurt er iets opmerkelijks: jouw toestel en de server aan de andere kant spreken in enkele milliseconden een geheime sleutel af, zonder dat die sleutel ooit letterlijk over de verbinding wordt verstuurd. Dat klinkt tegenstrijdig: hoe kun je iets geheims delen via een lijn waarop in principe iedereen kan meeluisteren? Het antwoord heet ECDH, kort voor Elliptic Curve Diffie-Hellman (elliptische-krommen-Diffie-Hellman), een wiskundige truc die precies dat mogelijk maakt.
Een bekende manier om het principe te begrijpen is de klassieke verf-analogie. Stel je twee mensen voor, Anna en Bob, die in het openbaar willen afspreken welke verfkleur ze samen gaan gebruiken, zonder dat een meekijkende buitenstaander die kleur kan raden. Ze spreken eerst een kleur af die iedereen mag zien, bijvoorbeeld geel. Daarna mengt Anna in het geheim thuis geel met haar eigen geheime kleur, en Bob mengt geel met zijn eigen geheime kleur. Ze wisselen alleen hun mengsels uit, nooit hun geheime kleur zelf. Wie meekijkt, ziet twee mengsels voorbijkomen, maar kan daaruit niet terugrekenen welke geheime kleur erin zit. Vervolgens voegt Anna haar geheime kleur toe aan het mengsel dat ze van Bob ontving, en Bob voegt zijn geheime kleur toe aan het mengsel van Anna. Beiden komen nu uit op precies dezelfde eindkleur, hun gedeelde geheim, zonder dat een afluisteraar die ooit kon reconstrueren. Dat is in essentie wat er digitaal gebeurt bij elke beveiligde verbinding, alleen dan met getallen op een elliptische kromme in plaats van met verf.
Wat is het precies?
Het basisidee komt niet van ECDH zelf, maar van een ouder protocol: Diffie-Hellman key exchange (sleuteluitwisseling), genoemd naar de Amerikaanse cryptografen Whitfield Diffie en Martin Hellman, die het in 1976 publiceerden, met een belangrijke bijdrage van Ralph Merkle. Zij losten een probleem op dat cryptografen al eeuwen achtervolgde: hoe spreek je een geheime sleutel af met iemand die je nog nooit hebt ontmoet, via een kanaal dat door iedereen kan worden afgeluisterd? Hun oplossing gebruikte rekenkunde met grote getallen in plaats van verf, maar het principe bleef hetzelfde: een publiek deel combineren met een privégeheim tot een gedeeld eindresultaat dat afluisteraars niet kunnen naberekenen.
In de jaren tachtig ontdekten wiskundigen dat je hetzelfde soort wiskunde ook kunt bouwen op elliptische krommen: een klasse van vloeiende, gebogen lijnen die worden beschreven door een relatief eenvoudige vergelijking. Op zo'n kromme kun je punten volgens vaste meetkundige regels bij elkaar optellen, en die optelling gedraagt zich wiskundig net zo bruikbaar als het rekenwerk van klassiek Diffie-Hellman, maar met een belangrijk voordeel: om een vergelijkbaar veiligheidsniveau te bereiken zijn veel kortere sleutels nodig. Waar klassiek Diffie-Hellman en het verwante RSA sleutels van duizenden bits nodig hebben, volstaat bij elliptische krommen ongeveer 256 bits voor een vergelijkbaar geschat veiligheidsniveau. Kortere sleutels betekenen minder rekenwerk, minder dataverkeer en dus snellere, zuinigere beveiligde verbindingen, precies waarom ECDH tegenwoordig de standaardkeuze is op smartphones en in browsers.
In de praktijk werkt het zo: beide partijen kiezen in het geheim een willekeurig getal, hun privésleutel. Daaruit berekenen ze, met de vaste rekenregels van de gekozen elliptische kromme, een bijbehorend punt op die kromme, hun publieke sleutel, die ze vervolgens openlijk naar elkaar sturen. Elke partij combineert daarna de eigen privésleutel met de ontvangen publieke sleutel van de ander, wat bij beiden tot hetzelfde eindpunt op de kromme leidt: het gedeelde geheim (shared secret). Dat geheim wordt meestal niet direct gebruikt om berichten te versleutelen, maar dient als grondstof voor een afgeleide sessiesleutel, die vervolgens met snellere, symmetrische versleuteling het eigenlijke dataverkeer beschermt. De veiligheid rust op het feit dat het terugrekenen van een publiek punt naar het geheime getal waarmee het is gemaakt, met de huidige computers onhaalbaar traag is, een probleem waar decennia cryptografisch onderzoek nog geen praktische doorbraak in heeft gevonden.
Wat wil men ermee bereiken?
Het achterliggende doel is simpel te formuleren en moeilijk op te lossen: twee apparaten die elkaar nog nooit eerder hebben gesproken, moeten via het volledig openbare internet een geheime sleutel kunnen afspreken, zonder dat ze die sleutel ooit vooraf via een ander, veilig kanaal hebben uitgewisseld. Vóór dit soort protocollen moesten geheime sleutels fysiek of via een reeds vertrouwd kanaal worden overgedragen, onwerkbaar voor een wereld waarin miljarden apparaten dagelijks nieuwe, willekeurige verbindingen met onbekende servers opzetten.
Een tweede, minstens zo belangrijk doel is wat cryptografen forward secrecy noemen, ook wel voorwaartse geheimhouding. Dat betekent: zelfs als een aanvaller er op een later moment in slaagt een geheime sleutel te bemachtigen, bijvoorbeeld door een server te hacken, dan blijven eerdere, al afgesloten gesprekken toch veilig. Dit wordt bereikt door voor vrijwel elke nieuwe sessie een compleet nieuw, tijdelijk sleutelpaar te genereren via ECDH, dat na gebruik meteen wordt weggegooid. Wie versleuteld verkeer van vroeger onderschept en opslaat in de hoop het later alsnog te ontsleutelen, kan daar dus niets mee, ook niet als de langetermijnsleutel van de server ooit uitlekt.
Voorbeelden uit de praktijk
Het bekendste voorbeeld zit verstopt achter het slotje in je browserbalk. Sinds de introductie van TLS 1.3, vastgelegd door internetstandaardisatieorganisatie IETF in RFC 8446 (2018), is een vorm van ECDH-sleuteluitwisseling verplicht voor elke beveiligde HTTPS-verbinding, terwijl de oudere methode zonder forward secrecy is geschrapt. Vrijwel elke website die je vandaag bezoekt, gebruikt dus onopgemerkt ECDH.
De chat-app Signal, ontwikkeld door de Signal Foundation, bouwde rond het midden van de jaren 2010 het zogeheten X3DH-protocol (Extended Triple Diffie-Hellman), dat op meerdere plekken tegelijk ECDH gebruikt, met de specifieke kromme Curve25519, om bij elk nieuw gesprek automatisch een gedeeld geheim op te zetten, ook als de ander op dat moment offline is. Ditzelfde protocol vormde via een licentieovereenkomst ook de basis voor de end-to-end-encryptie die WhatsApp sindsdien aan miljarden gebruikers biedt.
De vpn-software WireGuard, ontworpen door ontwikkelaar Jason A. Donenfeld, gebruikt Curve25519-ECDH als kern van zijn sleuteluitwisseling en werd geprezen om zijn compacte, overzichtelijke programmacode. In 2020 werd WireGuard opgenomen in de Linux-kernel (versie 5.6), waarmee het protocol in één klap beschikbaar kwam op een groot deel van 's werelds servers en Android-toestellen.
Ook systeembeheerders die op afstand inloggen op servers via SSH (Secure Shell) maken sinds het midden van de jaren 2010 doorgaans gebruik van ECDH-varianten zoals curve25519-sha256, inmiddels de aanbevolen standaardinstelling in veelgebruikte software als OpenSSH.
Hoe ver is de techniek?
ECDH is geen opkomende technologie meer, maar een volwassen, breed toegepaste standaard. De onderliggende wiskunde van elliptische-krommen-cryptografie werd al in 1985 onafhankelijk voorgesteld door de wiskundigen Neal Koblitz en Victor Miller, en is sindsdien tientallen jaren onderzocht en aangevallen door de cryptografische gemeenschap, zonder dat er fundamentele zwakheden in het onderliggende wiskundige probleem zijn gevonden.
Een belangrijke mijlpaal was de introductie van Curve25519 door cryptograaf Daniel J. Bernstein, rond 2005 gepubliceerd als een bijzonder snelle en zorgvuldig doordachte kromme. Na de onthullingen van klokkenluider Edward Snowden in 2013 over grootschalige surveillance door Amerikaanse inlichtingendiensten, en de ophef rond het gerelateerde algoritme Dual_EC_DRBG (een generator voor willekeurige getallen waarin achteraf een mogelijke achterdeur werd vermoed), ontstond bredere argwaan tegen door de Amerikaanse overheid gestandaardiseerde elliptische krommen. Dat wantrouwen betrof strikt genomen een ander algoritme dan ECDH zelf, maar zorgde er wel voor dat de cryptografische gemeenschap in hoog tempo overstapte op transparant ontworpen alternatieven als Curve25519, dat de IETF in 2016 formeel standaardiseerde in RFC 7748, samen met de sterkere variant Curve448.
Het belangrijkste obstakel voor de toekomst ligt niet in de techniek van vandaag, maar in wat er nog moet komen: kwantumcomputers. Een voldoende krachtige kwantumcomputer zou met een wiskundige methode die bekendstaat als Shor's algoritme in staat zijn het onderliggende wiskundige probleem van ECDH, en ook van RSA, in relatief korte tijd op te lossen, waarmee de beveiliging zou instorten. Zulke machines bestaan vandaag niet in een vorm die dit praktisch mogelijk maakt, en experts zijn het oneens over hoeveel jaar dit nog kan duren, met schattingen die uiteenlopen en grote onzekerheidsmarges kennen. Toch bereidt de sector zich nu al voor, mede vanwege het risico dat versleuteld verkeer van vandaag wordt opgeslagen om pas jaren later, zodra een kwantumcomputer beschikbaar is, alsnog te worden ontsleuteld. Het Amerikaanse standaardisatie-instituut NIST publiceerde daarom in augustus 2024 FIPS 203, een standaard voor het zogeheten ML-KEM-algoritme, gebaseerd op het eerder geselecteerde CRYSTALS-Kyber. Dit is een post-kwantum-sleutelmethode die niet steunt op elliptische krommen maar op een ander wiskundig probleem waarvan gedacht wordt dat het ook voor kwantumcomputers moeilijk blijft. Enkele grote partijen, onder meer Google in delen van Chrome en Signal met een uitbreiding genaamd PQXDH, zijn inmiddels overgestapt op hybride combinaties die ECDH en zo'n post-kwantumalgoritme tegelijk gebruiken, zodat de verbinding veilig blijft zolang minstens één van beide methodes standhoudt. ECDH verdwijnt dus voorlopig niet, maar krijgt er de komende jaren geleidelijk een extra beschermingslaag naast.
Wie werken eraan?
Aan de wiskundige basis werkten oorspronkelijk vooral individuele onderzoekers: Whitfield Diffie en Martin Hellman, met een belangrijke bijdrage van Ralph Merkle, voor het klassieke Diffie-Hellman-protocol uit 1976; Neal Koblitz en Victor Miller voor de toepassing op elliptische krommen in 1985; en Daniel J. Bernstein voor de veelgebruikte Curve25519 halverwege de jaren 2000.
De internetstandaardisatieorganisatie IETF (Internet Engineering Task Force) legt via RFC's, de officiële technische specificaties van het internet, vast hoe protocollen als TLS en SSH ECDH precies moeten toepassen. Het Amerikaanse National Institute of Standards and Technology (NIST) speelt een vergelijkbare rol voor formele overheidsstandaarden en trekt bovendien wereldwijd de kar bij de standaardisatie van post-kwantumcryptografie.
In de praktijk wordt de techniek grotendeels gedragen door een combinatie van grote techbedrijven en open source-projecten. Browserbouwers en clouddiensten als Google, Apple, Microsoft en Cloudflare implementeren ECDH in hun TLS-software; de Signal Foundation en Meta (WhatsApp) passen het toe in end-to-end-versleutelde berichtenapps; en onderliggende opensourcebibliotheken als OpenSSL, BoringSSL van Google en libsodium leveren de daadwerkelijke code waarop een groot deel van het internet leunt.