Veilig inloggen voor iedereen

In maart dit jaar is een nieuwe standaard geratificeerd door het W3C, de organisatie die webstandaarden ontwikkelt: Web Authentication. Eerder was daaraan de publicatie van een andere, gerelateerde standaard voorafgegaan met de naam CTAP, afkomstig van een andere organisatie, de FIDO alliance. Beide specificaties zijn opgesteld door werkgroepen bestaande uit afgevaardigden van bedrijven als Google, Microsoft en Mozilla, die inmiddels hun browsers hebben aangepast om deze standaarden te ondersteunen. Dat is mooi, maar waarom is dat bijzonder, en wat hebben gebruikers daar eigenlijk aan?

FIDO2

Web authentication (kortweg: WebAuthn) en CTAP zijn het resultaat van het FIDO2 project, een initiatief van vele organisaties verenigd in de FIDO alliance om inloggen makkelijker en veiliger te maken door een alternatief te bieden voor wachtwoorden als middel om te bewijzen wie je bent. Dat wachtwoorden niet makkelijk in het gebruik zijn weet iedereen: ze zijn moeilijk te onthouden want het zijn er gewoon te veel. De neiging bestaat daarom om wachtwoorden te hergebruiken, of eenvoudige wachtwoorden te kiezen die makkelijker te onthouden zijn, hetgeen weer ten koste gaat van de veiligheid. Bovendien heb je die beveiliging niet in eigen hand: de database waarin jouw wachtwoorden worden opgeslagen kan worden gestolen waardoor die wachtwoorden op straat komen te liggen.

Het FIDO2 project probeert die problemen op te lossen door wachtwoorden te vervangen door een zogeheten authenticator, een apparaat waarop je al jouw inloggegevens veilig kunt opslaan en waarmee je kunt bewijzen dat je bent wie je zegt dat je bent met bijvoorbeeld een vingerafdruk of middels gezichtsherkenning. User verification heet dat in FIDO2 termen.

Foto van FIDO authenticators
Een scala aan FIDO authenticators

Zo’n authenticator kan een apart apparaat zijn dat je in een USB poort stopt of tegen een NFC lezer aanhoudt (een roaming authenticator), maar kan ook je mobiele Android telefoon met vingerafdrukscanner zijn of je Windows 10 laptop met gezichtsherkenning (een platform authenticator). Zie de afbeelding hierboven voor enkele voorbeelden van roaming authenticators, ook wel FIDO2 tokens of security keys genoemd. De FIDO2 standaarden CTAP en WebAuthn zorgen ervoor dat deze manier van inloggen altijd werkt, ongeacht wie de fabrikant is van de browser, de authenticator of de applicatie waarop je inlogt. CTAP legt de berichten vast die de authenticator en de browser (of andere client) met elkaar uitwisselen, terwijl Webauthn de programmeerinterface beschrijft waarmee een applicatie via de browser gebruik kan maken van de inloggegevens van de authenticator. Zie onderstaande figuur.

Figuur die toont hoe inloggen met FIDO werkt
De CTAP en Webauthn standaarden spelen ieder hun eigen rol wanneer een gebruiker wil inloggen op een applicatie

Browser support

Het feit dat Webauthn gestandaardiseerd is door het W3C is belangrijk: U2F (Universal 2nd Factor), een eerdere poging om inloggen met wachtwoorden te versterken middels USB tokens, werd door FIDO zelf opgesteld maar werd lange tijd alleen door Google Chrome ondersteund. Om die reden is U2F, hoewel ideaal als middel voor stepup authenticatie, nooit in productie genomen binnen SURFsecureID. Met het verschijnen van de W3C specificatie is browser support voor WebAuthn nu sterk verbeterd: Microsoft Edge, Mozilla FireFox, en Google Chrome bieden minstens basisfunctionaliteit en Apple Safari volgt dit najaar tegelijkertijd met het verschijnen van macOS 10.15 (Catalina). Momenteel is WebAuthn in Safari 12.1 alleen nog beschikbaar als Experimental Feature.

Met support in browsers neemt ook de support op websites toe. Typisch kunnen security keys nu gebruikt worden om bestaande accounts te beschermen, zoals bij Google, Microsoft, Dropbox, Twitter en Facebook. Ook SURFsecureID zal later dit jaar FIDO2 ondersteunen.

Dat klinkt als goed nieuws. Maar wat is er nu precies zoveel makkelijker en veiliger aan inloggen met FIDO2? Laten we eerst eens kijken naar aspecten die de gebruikerservaring betreffen, en vervolgens naar redenen waarom FIDO2 zoveel veiliger is.

Wachtwoordloos

Met FIDO2 is het mogelijk (maar niet verplicht) volledig wachtwoordloos in te loggen. Dat betekent dat er geen wachtwoord hoeft worden onthouden, omdat er eenvoudigweg geen wachtwoord bestaat voor een account. Dat is dus anders dan bij het gebruik van een wachtwoordmanager, die wachtwoorden voor je beheert zodat je ze niet meer hoeft in te voeren – in feite verdwijnen wachtwoorden daarmee onder het tapijt, maar ze zijn er nog wel (en kunnen dus nog steeds misbruikt worden). Sommige authenticators (zoals die van Yubico) maken wel gebruik van een PIN bij wachtwoordloos inloggen, maar dat werkt fundamenteel anders dan een wachtwoord: de PIN wordt alleen gebruikt voor authenticatie van de gebruiker naar de authenticator en niet van de gebruiker naar de server: de server ontvangt nooit de PIN, en hoeft dus ook geen PINs op te slaan.

Hoe wachtwoordloos inloggen in zijn werk gaat is te zien in onderstaand filmpje van Feitian (een fabrikant van FIDO2 authenticators) waarin een FIDO2 security key gebruikt wordt om in te loggen op een Windows systeem met een Azure AD account. Dit is een vorm van multi-factor authenticatie: de gebruiker logt in met een fysieke sleutel (de wat-je-hebt factor) en zijn vingerafdruk (de wat-je-bent factor).

Naast brede ondersteuning in browsers is er inmiddels ook voldoende keuze op de markt voor roaming authenticators. Zeker gezien het feit dat WebAuthn compatible is met U2F, waardoor ook oudere U2F tokens gebruikt kunnen worden om accounts die met wachtwoorden zijn afgeschermd beter te beveiligen. Omdat de FIDO2 specificaties open zijn kan iedereen een authenticator maken, zo ook Conor Patrick, die samen met enkele anderen een volledig open implementatie heeft gemaakt waarvan het hardware design en de source code van de firmware vrij beschikbaar zijn.

Ook niet onbelangrijk: FIDO2 security keys zijn betaalbaar (vanaf € 20), zeker in vergelijking tot meer traditionele hardware tokens waar vaak ook nog licentiekosten mee gemoeid zijn. Bovendien is de aanschaf van een roaming authenticator lang niet altijd nodig als een platform authenticator al voorhanden is, zoals een Android-device.

Veilig inloggen

Maar de belangrijkste voordelen van FIDO2 sleutels zijn toch die op het gebied van beveiliging en privacy. Zo maken FIDO2 sleutels gebruik van public key cryptografie. Dat heeft als groot voordeel dat de server waar je inlogt geen geheimen hoeft te bewaren. Dat is wel het geval bij het gebruik van wachtwoorden, maar ook bij sommige middelen die gebruikt worden voor twee-factor authenticatie zoals RSA SecurID, Vasco Digipass (tegenwoordig OneSpan) en ook Google Authenticator en SURF’s eigen tiqr. Dergelijke oplossingen zijn net als wachtwoorden gebaseerd op een shared secret. De server heeft toegang nodig tot dat secret om te kunnen bepalen of dat secret bij de client ook bekend is – dat is immers waar de authenticatie op is gebaseerd. Als de database met secrets van de server wordt gestolen zijn in principe alle bijbehorende accounts in gevaar.

Zo niet bij public key gebaseerde cryptografie, waar alleen een niet-geheime (publieke) sleutel wordt opgeslagen. De bijbehorende geheime (private) sleutel is alleen bij de client bekend, en authenticatie is gebaseerd op het feit dat alleen met deze geheime sleutel een digitale handtekening kan worden gezet onder berichten die naar de server worden gestuurd, waarvan de echtheid kan worden gecontroleerd met de publieke sleutel die bekend is op de server. Met de publieke sleutel kunnen alleen handtekeningen worden gecontroleerd, maar niet gegenereerd. Als zo’n publieke sleutel uitlekt is dat geen ramp: een aanvaller kan er verder niets mee.

De private sleutel die is opgeslagen in een authenticator is goed beveiligd met speciale hardware die heel veilig dergelijke sleutels kan aanmaken en gebruiken, maar die het zeer moeilijk maakt om die sleutels uit de chip te exporteren. Uiteindelijk is daar het what-you-have aspect van authenticatietokens op gebaseerd: de tokens met daarin opgeslagen private sleutels zijn beveiligd tegen kopiëren waardoor elk token in principe uniek is.

Phishing

Het grootste gevaar op dit moment is echter phishing, waarbij een perfecte replica van een site het gemunt heeft op wachtwoorden van nietsvermoedende gebruikers. De enige manier om zo’n phishingsite te herkennen is door consequent het webadres van de site en zonodig het bijbehorende certificaat te controleren, een discipline die menig gebruiker ontbeert. Met tools als evilginx2 en muraena is het bovendien een fluitje van een cent om zo’n site op te zetten, inclusief beveiligingscertificaat. Helaas helpen de meeste hardware tokens hier niet tegen: een one-time-password gegenereerd door een Yubikey helpt bijvoorbeeld prima om het hergebruik van wachtwoorden tegen te gaan, maar is evengoed bruikbaar door de phisher om in te breken in het account van een slachtoffer.

Screenshot van een phishing site voor Microsoft accounts
Een voorbeeld van een phishing site voor Microsoft Accounts, gebouwd met de tool evilginx2

Het mooie van WebAuthn is dat gebruikers die inloggen met een FIDO2-token automatisch beschermd zijn tegen phishing, met behulp van de browser. Op het moment dat een FIDO2 token wordt geregistreerd op een bepaalde site wordt namelijk een publiek/privaat sleutelpaar gegenereerd specifiek voor die site. Welke site dat is wordt bovendien niet door de gebruiker of de website bepaald, maar door de browser op basis van het adres van de website (de zogeheten origin). Als later wordt geprobeerd in te loggen met datzelfde token wordt opnieuw (door de browser) de origin meegenomen in het bericht dat met de private sleutel wordt ondertekend. De server kan op die manier detecteren dat er een phising site actief is: de controle van de handtekening zal in dat geval falen aangezien de handtekening is gezet op basis van een andere origin dan verwacht (outlook.lekkervissen.nl in plaats van outlook.com in bovenstaand voorbeeld). Een sleutel die is gegenereerd voor de ene site kan dus niet worden gebruikt op een andere site. Zelfs als de phisher ook de domeinnaam weet te kapen is het mogelijk dit met WebAuthn te detecteren. In dit scenario (een zogeheten Man-in-the-Middle aanval) is het mogelijk om naast de origin ook unieke parameters van de beveiligde verbinding (TLS sessie) mee te nemen in de handtekening. Deze techniek wordt token binding genoemd, maar wordt momenteel alleen door Microsoft Edge geïmplementeerd.

En nu?

Al met al een hele mooie ontwikkeling. Voor het eerst is er een technologie die inloggen veiliger én makkelijker maakt, en die toch breed wordt ondersteund en betaalbaar is. Toch zal het nog even duren voordat iedereen wachtwoordloos kan inloggen met FIDO2. Hoewel er voldoende keuze is voor authenticators en steeds betere ondersteuning in browsers, is het nog wachten op ondersteuning op websites. Ook is het credential management op tokens nog voor verbetering vatbaar: bij veel tokens is het eenvoudig credentials (private keys) toe te voegen, maar onmogelijk om individuele credentials te verwijderen. De verwachting is dat daar binnenkort ook verbetering in komt.

Doe mee met de workshop!

Mocht je geïnteresseerd zijn in FIDO2 en WebAuthn: op 25 september 2019 organiseert SURF een workshop waarin aandacht wordt besteed aan deze nieuwe technologie. Er wordt dieper ingegaan op privacy en beveiligingsaspecten en in een hands on onderdeel kan worden geëxperimenteerd met het gebruik van sleutels. Ook wordt aandacht besteed aan manieren om WebAuthn te integreren in eigen webapplicaties.

Meedoen? Schrijf je hier in.

Author

Joost van Dijk

Comments

Dit artikel heeft 0 reacties