ECDSA: hoe elliptische krommen digitale handtekeningen mogelijk maken
Als je online bankiert, een cryptomunt verstuurt of inlogt met je identiteitskaart, gebeurt er op de achtergrond iets wiskundigs: er wordt een digitale handtekening gezet en gecontroleerd. Een van de meest gebruikte technieken daarvoor heet ECDSA, voluit Elliptic Curve Digital Signature Algorithm, oftewel het handtekeningalgoritme op basis van elliptische krommen. Het zorgt ervoor dat een ontvanger met wiskundige zekerheid kan vaststellen dat een bericht echt van jou komt en dat niemand het onderweg heeft veranderd.
Vergelijk het met een notariële handtekening die niemand kan vervalsen en die iedereen tegelijk kan controleren, zonder dat er een notaris aan te pas komt. Jij hebt een geheime sleutel, een unieke reeks cijfers die alleen jij kent, vergelijkbaar met een pen die niemand anders bezit. Daarnaast heb je een publieke sleutel die iedereen mag kennen, zoals een voorbeeldhandtekening op je identiteitskaart. Met je geheime sleutel zet je een handtekening onder een bericht; wie dan ook kan met jouw publieke sleutel controleren of die handtekening klopt, zonder ooit je geheime sleutel te zien. ECDSA is de specifieke wiskundige truc waarmee dat lukt, en wel met opvallend kleine sleutels vergeleken met oudere methodes.
Wat is het precies?
ECDSA bouwt voort op elliptische-krommencryptografie. Een elliptische kromme is geen ellips, maar een wiskundige vergelijking van de vorm y² = x³ + ax + b, die als je hem tekent een glooiende, symmetrische lijn oplevert. Op zo'n kromme kun je punten "optellen" volgens vaste regels: je trekt een lijn door twee punten, kijkt waar die de kromme nog een keer snijdt, en spiegelt dat punt. Doe je dat een bepaald punt G heel vaak achter elkaar bij zichzelf op, dan land je op een nieuw punt. Het cruciale gegeven is: als je alleen het beginpunt G en het eindpunt kent, is het bijna onmogelijk te achterhalen hoe vaak je hebt opgeteld. Dat aantal is je geheime sleutel; het eindpunt is je publieke sleutel. Dit eenrichtingsprobleem heet het "discrete-logaritmeprobleem op elliptische krommen" en vormt het fundament van de veiligheid.
Een handtekening zetten gaat in twee stappen. Eerst wordt het bericht door een hashfunctie gehaald, een soort digitale vingerafdruk die van elke tekst een vaste, unieke reeks cijfers maakt. Vervolgens combineert het algoritme die vingerafdruk, je geheime sleutel en een eenmalig willekeurig getal (de "nonce", genoemd k) tot twee getallen, r en s. Samen vormen die de handtekening. Bij controle gebruikt de ontvanger jouw publieke sleutel, het bericht en de handtekening om via een wiskundige berekening te checken of alles klopt. Als ook maar één letter van het bericht is veranderd, komt er een andere hash uit en faalt de controle.
Dat willekeurige getal k is verrassend belangrijk: het moet elke keer opnieuw en onvoorspelbaar gekozen worden. Gebruik je twee keer dezelfde k voor twee verschillende berichten, dan kan een aanvaller met simpele algebra je geheime sleutel terugrekenen. Dit is geen theoretisch risico gebleken, zoals verderop blijkt.
Wat wil men ermee bereiken?
Het doel van ECDSA is drieledig: authenticiteit (is dit bericht echt van de afzender?), integriteit (is het onderweg niet gewijzigd?) en onweerlegbaarheid (de afzender kan achteraf niet ontkennen dat hij het heeft ondertekend). Dat zijn dezelfde doelen als bij oudere handtekeningsystemen zoals RSA, maar ECDSA belooft dat met veel kleinere sleutels. Een ECDSA-sleutel van 256 bits biedt ongeveer hetzelfde veiligheidsniveau als een RSA-sleutel van 3072 bits. Kleinere sleutels betekenen minder rekenwerk, minder dataverkeer en minder opslag, wat vooral winst oplevert op plekken waar rekenkracht en batterij schaars zijn: smartcards, simkaarten, IoT-sensoren en mobiele apparaten.
Daarnaast wilde de cryptografische gemeenschap af van de afhankelijkheid van slechts één wiskundig probleem (het ontbinden van grote getallen in priemfactoren, waar RSA op steunt) door een alternatief eenrichtingsprobleem te bieden. Dat vergroot de veerkracht van het hele digitale vertrouwenssysteem: als er ooit een zwakte in RSA wordt gevonden, is er een onafhankelijk alternatief beschikbaar, en omgekeerd.
Voorbeelden uit de praktijk
Bitcoin (2009). Het bitcoinnetwerk van Satoshi Nakamoto gebruikt ECDSA met een specifieke kromme genaamd secp256k1 om transacties te ondertekenen. Wie bitcoin verstuurt, bewijst met een ECDSA-handtekening dat hij de eigenaar is van het adres waar het geld vandaan komt, zonder ooit zijn geheime sleutel te tonen.
De kraak van de Sony PlayStation 3 (2010). De hackersgroep fail0verflow ontdekte dat Sony voor het ondertekenen van PS3-software steeds hetzelfde willekeurige getal k gebruikte in plaats van elke keer een nieuw getal. Daardoor konden ze met relatief eenvoudige algebra de geheime ondertekeningssleutel van Sony berekenen, wat de deur opende voor ongeautoriseerde software op het apparaat. Het is het bekendste voorbeeld van hoe een implementatiefout, niet een zwakte in de wiskunde zelf, een systeem volledig onderuit kan halen.
TLS/HTTPS-beveiliging van websites. Wanneer je browser een vergrendeld hangslotje toont bij een website, controleert hij een certificaat dat vaak met ECDSA is ondertekend. Certificaatautoriteiten zoals Let's Encrypt bieden sinds enkele jaren standaard ECDSA-certificaten aan naast de oudere RSA-variant, omdat ze sneller zijn te verwerken op drukbezochte servers.
Elektronische identiteitsdocumenten. Moderne paspoorten en eID-kaarten, waaronder de Nederlandse en Duitse identiteitskaart met chip, gebruiken ECDSA-achtige handtekeningen (conform ICAO-standaarden voor reisdocumenten) om de echtheid van de opgeslagen gegevens te waarborgen.
Wachtwoordloos inloggen met passkeys. De WebAuthn/FIDO2-standaard, waarmee je tegenwoordig met je vingerafdruk of gezichtsherkenning kunt inloggen bij websites, ondersteunt ECDSA met de curve P-256 als een van de standaardalgoritmes voor het genereren van die passkeys.
Hoe ver is de techniek?
ECDSA is geen nieuwe of experimentele techniek, maar een volwassen, wereldwijd ingeburgerde standaard. De onderliggende elliptische-krommencryptografie werd in 1985 onafhankelijk van elkaar voorgesteld door de wiskundigen Neal Koblitz en Victor Miller. De specifieke handtekeningvariant ECDSA werd begin jaren negentig uitgewerkt, met Scott Vanstone als een van de belangrijkste ontwerpers, en vervolgens vastgelegd in de industriestandaard ANSI X9.62 (eind jaren negentig) en de Amerikaanse overheidsstandaard NIST FIPS 186-2 in 2000. De meest recente versie van die standaard, FIPS 186-5, dateert van 2023. Inmiddels draaien er dagelijks miljarden apparaten op ECDSA, van creditcardchips tot smartphones.
Het grootste obstakel voor de toekomst is niet praktisch, maar theoretisch: een voldoende krachtige kwantumcomputer zou met het zogeheten Shor-algoritme het onderliggende wiskundige probleem in redelijke tijd kunnen oplossen, en daarmee ECDSA-sleutels kunnen breken. Zulke kwantumcomputers bestaan nog niet op de benodigde schaal, en experts zijn het oneens over wanneer, of zelfs of, ze er ooit komen. Uit voorzorg heeft het Amerikaanse standaardisatie-instituut NIST in augustus 2024 de eerste "post-kwantum" handtekeningstandaarden definitief gemaakt (onder meer FIPS 204, bekend als ML-DSA), die niet kwetsbaar zijn voor Shors algoritme. De overstap van bestaande systemen naar deze nieuwe standaarden is echter een werk van jaren tot mogelijk een decennium, omdat het vrijwel elk digitaal systeem raakt. Voor nu blijft ECDSA, mits correct geïmplementeerd, als veilig beschouwd tegen aanvallen met klassieke computers.
Wie werken eraan?
De wiskundige basis komt van academici als Neal Koblitz (Universiteit van Washington) en Victor Miller, met Scott Vanstone als drijvende kracht achter de handtekeningvariant zelf. Het Canadese bedrijf Certicom, later overgenomen door BlackBerry, bezat lange tijd belangrijke patenten rond elliptische-krommencryptografie en speelde een grote rol bij de vroege standaardisatie.
Op standaardisatiegebied is het Amerikaanse NIST (National Institute of Standards and Technology) de belangrijkste partij, met FIPS 186 als leidende norm, aangevuld door de IETF (Internet Engineering Task Force), die ECDSA verwerkt in internetstandaarden zoals TLS via RFC-documenten. Grote technologiebedrijven als Google, Cloudflare en Apple passen ECDSA breed toe in hun infrastructuur en browsers, en certificaatautoriteiten zoals Let's Encrypt maken het algoritme toegankelijk voor miljoenen websites. Fabrikanten van beveiligingschips, zoals NXP en Infineon, bouwen ECDSA in hardware in voor bankpassen, simkaarten en identiteitsdocumenten. Aan de kant van de opvolgers werkt vooral NIST, in samenwerking met cryptografen wereldwijd, aan de post-kwantumstandaarden die ECDSA op termijn deels moeten aanvullen of vervangen.