Passkeys: het wachtwoord dat niet bestaat

Gepubliceerd op door David Carrero

Alle wachtwoordverhalen eindigen hetzelfde: iemand bewaarde jouw geheim ergens, en is het kwijtgeraakt.

Het jaartal doet er niet toe. In het begin stond het in een tekstbestand op een gedeelde computer, en het volstond om het systeem te vragen het even af te drukken. In 1979 beschreven Morris en Thompson hoe je de hash kon zouten en duurder maken, zodat een gestolen lijst niet meteen een lijst met wachtwoorden werd. Een enorme verbetering. Daarna kwamen de samenstellingsregels die ons allemaal een leesteken achteraan lieten plakken. Maar de vórm van het probleem verschoof al die tijd geen millimeter: er is een geheim, jij kent het, de server kan het controleren, en dus heeft de server iets te verliezen.

Alles wat we sindsdien hebben gedaan komt neer op dat geheim langer maken, gekker, zouter, trager te kraken. Niemand stelde de vraag die daarvóór komt: en als er nu eens geen gedeeld geheim was?

1976 het idee dat een geheim uit twee helften kan bestaan

In 1976 publiceerden Whitfield Diffie en Martin Hellman New Directions in Cryptography. Het idee was bijna beledigend eenvoudig: een sleutel kan in twee stukken worden gebroken die niet uitwisselbaar zijn. De ene deel je uit aan wie het maar horen wil; de andere komt de deur niet uit. Wat je met de privésleutel ondertekent, controleer je met de publieke — maar met de publieke onderteken je niets.

Lees dat nog eens terug met een server in gedachten: de site hoeft niets meer te bewaren waarmee je naar binnen kunt. Alleen de helft die geen enkele deur opent.

Dat dit idee er bijna een halve eeuw over deed om het inlogscherm van je bank te bereiken, pleit niet bepaald voor onze sector. Clientcertificaten bestonden al en ze werkten; wat niet bestond was een manier om ze te gebruiken waar je geen diploma voor nodig had. De cryptografie was klaar. De bruikbaarheid niet.

2013 eindelijk eens iemand die het eens wordt

In 2013 werd de FIDO Alliance opgericht, een industrieconsortium met een verklaard en weinig bescheiden doel: de afhankelijkheid van wachtwoorden verkleinen. Het belangrijkste was niet de techniek — die was er al — maar dat fabrikanten, browsers en diensten aan tafel gingen zitten om hetzelfde protocol af te spreken. Dat klinkt als vergaderen, en het was precies wat ontbrak: een authenticatiemethode die maar in één browser en bij één dienst werkt, is geen methode maar een anekdote.

2019 de browser leert cryptografie

In maart 2019 werd WebAuthn een aanbeveling van het W3C. In gewone taal: elke website kon vanaf dat moment de browser vragen — via een standaard-API, zonder plug-ins of drivers — om een sleutelpaar aan te maken en daarmee te ondertekenen.

De flow, zonder franje, gaat zo. Bij het registreren maakt je apparaat een nieuw sleutelpaar aan, specifiek voor die site. De publieke sleutel gaat de deur uit. De privésleutel blijft achter, bewaard door het apparaat zelf en beschermd door je vingerafdruk, je gezicht of de pincode. Als je terugkomt, stuurt de site je een willekeurige uitdaging, je apparaat ondertekent die, en de site controleert de handtekening met de publieke sleutel die hij al had.

Let op wat er niet gebeurt: er reist geen enkel geheim. De server heeft je privésleutel nooit gehad, dus hij kan hem ook niet kwijtraken. Als morgen de hele database uitlekt, gaat men er met een lijst publieke sleutels vandoor — ongeveer zoals een telefoonboek stelen. Geen hashes om door een GPU te halen, geen woordenboek om op los te laten. Het is niet dat het moeilijk is: er zit daar gewoon niets van waarde.

Het bijeffect is groter dan het idee

Als je apparaat dat sleutelpaar aanmaakt, koppelt het dat aan het domein. De sleutel die is opgeslagen voor jouwbank.nl wordt alleen aan jouwbank.nl aangeboden. Dat is geen beleid, geen waarschuwing, geen rood balkje in de adresbalk: de sleutel voor jouwb4nk-beveiliging.com bestáát niet. De browser vindt hem niet, omdat hij nooit is aangemaakt.

Dit maakt een einde aan phishing. Niet minder phishing: geen mechanisme meer. De hele phishingbusiness draait erom dat jij je wachtwoord in de verkeerde site kunt tikken, en we proberen dat al jaren op te lossen met gebruikerstrainingen en bewustwordingscampagnes. Dat was allemaal symptoombestrijding. Jouw oog trapt in een URL die er bijna hetzelfde uitziet; je telefoon niet. Die leest niet: die vergelijkt tekenreeksen.

En passant sneuvelt ook het hergebruik, die andere hoofdzonde. Elke site heeft zijn eigen sleutelpaar. Er valt niets te hergebruiken, ook niet als je zou willen.

2022 de grote drie sluiten vrede

In mei 2022 kondigden Apple, Google en Microsoft gezamenlijk aan dat ze de ondersteuning van FIDO-inloggegevens — de passkeys — in hun platforms en browsers zouden uitbreiden.

Dat is wat dit veranderde van een technische voetnoot in iets wat je aan je moeder kunt uitleggen. Tot dan toe betekende WebAuthn bijna altijd een fysieke USB-sleutel: uitstekend, en voor drie mensen. Een passkey woont daar waar je de telefoon toch al in je hand hebt, en gaat open met je gezicht.

Wat het niet oplost

Nu de kleine lettertjes, want de sector gaat de komende jaren doen alsof ze niet bestaan.

Herstel blijft de zwakke plek. Het gat is niet verdwenen: het is verplaatst. Als je je apparaat kwijtraakt, moet iemand beslissen dat jij het bent, en die beslissing valt bijna altijd via e-mail, via sms of in een gesprek met een mens in een callcenter. Die mens is precies hetzelfde doelwit als vroeger. Je hebt de voordeur gepantserd en de achterdeur zit nog waar hij zat.

Synchroniseren bindt je aan een ecosysteem. Passkeys zijn comfortabel omdat je platform ze over je apparaten heen kopieert. Dat is een andere manier om te zeggen dat jouw sleutels aan de sleutelbos van één bepaald bedrijf hangen. Daar weer weggaan is niet onmogelijk, maar het is ook geen knop. Je hebt het probleem van onthouden ingeruild voor dat van ergens bij horen.

En je moet nog steeds naar binnen kunnen als je je telefoon kwijt bent. Wat in de praktijk betekent dat vrijwel geen enkele site het wachtwoord heeft afgeschaft: hij heeft het verstopt achter een “problemen met inloggen?”. Zolang die link bestaat, bestaat het wachtwoord, en dat is net zo slecht als het altijd was. De ketting breekt bij de zwakste methode die je accepteert, niet bij de elegantste die je aanbiedt.

Wat je ondertussen kunt doen

Zet passkeys aan waar ze worden aangeboden, en begin bij wat het meeste pijn doet als het valt: je e-mail, je bank, het account waarmee je overal anders inlogt. Het is een van de weinige beveiligingsverbeteringen die je ook nog eens werk uit handen neemt.

En hou jezelf niet voor de gek: je houdt nog jaren wachtwoorden, al is het maar als plan B. Zorg dat ze lang zijn, overal anders, en in een wachtwoordmanager staan. Wil je er een die nooit in je hoofd heeft gezeten, gebruik dan de generator; wil je weten of die van jou ergens tegen kan, haal hem dan door de checker.

De oude vraag van de schildwacht — halt, wie daar? — heeft eindelijk een ander antwoord. Decennialang antwoordden we met een woord dat je kon afluisteren: het wachtwoord heet niet voor niets zo. Nu antwoorden we met een handtekening die alleen jouw apparaat kan zetten, zonder dat het woord ooit bestaat. Het is de eerste keer dat we de vraag hebben veranderd in plaats van het woord.


Bronnen: W. Diffie en M. Hellman, “New Directions in Cryptography”, IEEE Transactions on Information Theory, 1976 · R. Morris en K. Thompson, “Password Security: A Case History”, Communications of the ACM, 1979 · FIDO Alliance, opgericht in 2013 · “Web Authentication: An API for accessing Public Key Credentials”, aanbeveling van het W3C, maart 2019 · gezamenlijke aankondiging van Apple, Google en Microsoft over de ondersteuning van passkeys, mei 2022.

← Terug naar de blog