25/12/2021
Fremtiden for Sikkerhed: WebAuthn og Kampen mod Phishing
Phishing udgør en af de mest vedvarende og skadelige trusler på internettet. Statistikker viser, at en overvældende procentdel af sikkerhedsbrud stammer fra svage eller stjålne adgangskoder. Selvom multifaktorgodkendelse (MFA) har været svaret på dette problem, er implementeringerne ofte fragmenterede og adresserer ikke altid phishing-truslen effektivt. Det er her, WebAuthn kommer ind i billedet. Et samarbejde mellem FIDO Alliance og W3C har resulteret i denne innovative standard, der sigter mod at eliminere phishing som et problem for webapplikationer.

Hvad er WebAuthn?
Web Authentication API, eller WebAuthn, giver webapplikationer en brugeradministreret adgang til autentificeringsenheder. Disse enheder, ofte hardware-tokens, kan tilgås via USB, Bluetooth Low Energy (BLE) eller Near Field Communication (NFC), eller de kan være indbygget direkte i enheder som smartphones. WebAuthn muliggør generering af kryptografiske nøglepar og udførelse af autentificeringsprocesser på en sikker måde. Dette åbner døren for en række nye og forbedrede brugeroplevelser:
- Phishing-resistent og friktionsfri 2FA: Brug sammen med din eksisterende adgangskode for et ekstra sikkerhedslag.
- Adgangskodeløs genautorisation: Log ind ved hjælp af biometriske data som fingeraftryk eller ansigtsgenkendelse.
- Friktionsfri og phishing-resistent login uden adgangskode: Ideelt til konti, der slet ikke kræver en adgangskode.
API'en er designet til at blive implementeret i alle større browsere og har til formål at forenkle den brugergrænseflade, man typisk møder online, samtidig med at phishing-risikoen markant reduceres. WebAuthn bygger oven på Credential Management API'en og introducerer en ny credential-type kaldet PublicKeyCredential. Kernen i WebAuthn er abstraktionen mellem browseren og autentificeringsenheden, hvilket giver brugeren mulighed for at:
- Oprette og registrere en offentlig nøgle-credential til et specifikt website.
- Autentificere sig på et website ved at bevise ejerskab af den registrerede credential.
Autentificeringsenheder er hardware, der kan generere offentlige/private nøglepar og indsamle brugerens samtykke til operationer. Dette samtykke kan gives ved et enkelt tryk, via fingeraftrykslæsning eller andre biometriske metoder, der lever op til anerkendte standarder (f.eks. FIDO Alliance's certificeringsprogram). Autentificeringsenheder kan være indbyggede i enheden (som smartphone fingeraftryksscannere) eller eksterne enheder forbundet via USB, BLE eller NFC.
Sådan Fungerer WebAuthn
Oprettelse og Registrering af en Nøglepar
Når en bruger ønsker at registrere en credential på et website (refereret til som en "Relying Party" eller "RP" i WebAuthn-terminologi), sker følgende:
- RP Genererer en Udfordring: Websitet genererer en unik, tilfældig udfordring (challenge).
- Browseren Anmoder om Oprettelse: Websitet beder browseren, via Credential Management API, om at oprette en ny credential. Dette inkluderer information om brugeren og de ønskede credential-parametre, f.eks. om enheden understøtter brugerverifikation (biometri osv.).
- Autentificeringsenhed Genererer Nøgle: Når brugeren har givet sit samtykke (f.eks. ved at scanne sit fingeraftryk), genererer autentificeringsenheden et nyt nøglepar (offentlig og privat nøgle).
- Credential Sendes til RP: Den offentlige nøgle, og eventuelt en signeret certifikatattest, sendes tilbage til browseren og derefter til websitet.
- Server Gemmer Offentlig Nøgle: Websitets server gemmer den offentlige nøgle sammen med brugerens identitet, så den kan bruges til fremtidige autentificeringer.
Her er et eksempel på, hvordan dette kunne se ud i JavaScript:
let credential = await navigator.credentials.create({ publicKey: { challenge: new Uint8Array([117, 61, 252, 231, 191, 241, ...]), rp: { id: "acme.com", name: "ACME Corporation" }, user: { id: new Uint8Array([79, 252, 83, 72, 214, 7, 89, 26]), name: "jamiedoe", displayName: "Jamie Doe" }, pubKeyCredParams: [ { type: "public-key", alg: -7 } // ES256 signature algorithm ] } });Vigtigt: Certifikatattester giver websitet mulighed for at verificere autentificeringsenhedens oprindelse. Det anbefales dog at undgå at opretholde lister over godkendte enheder på serversiden.
Autentificering af en Bruger
Når et website skal verificere en brugers identitet, følger processen disse trin:
- RP Genererer Udfordring og Angiver Kriterier: Websitet genererer en ny udfordring og giver browseren besked om, hvilke registrerede credentials der er relevante for brugeren. Det kan også specificeres, hvor autentificeringsenheden skal søges (lokalt eller eksternt via USB, BLE osv.).
- Browseren Anmoder Autentificeringsenhed om Signatur: Browseren beder autentificeringsenheden om at signere udfordringen ved hjælp af en af de angivne credentials.
- Bruger Verificerer og Samtykker: Hvis autentificeringsenheden finder en matchende credential, beder den brugeren om samtykke (f.eks. fingeraftryk).
- Assertion Sendes til RP: Efter brugerens samtykke returnerer autentificeringsenheden en signeret assertion til browseren, som videresendes til websitet.
- Server Verificerer Assertion: Websitets server verificerer signaturen på assertionen ved hjælp af den gemte offentlige nøgle. Hvis verifikationen er succesfuld, er autentificeringen fuldført.
Her er et eksempel på JavaScript for autentificeringsprocessen:
let credential = await navigator.credentials.get({ publicKey: { challenge: new Uint8Array([139, 66, 181, 87, 7, 203, ...]), rpId: "acme.com", allowCredentials: [ { type: "public-key", id: new Uint8Array([64, 66, 25, 78, 168, 226, 174, ...]) } // User's credential ID ], userVerification: "required" // Require user presence/verification } });Du kan selv prøve WebAuthn på webauthndemo.appspot.com.
Hvad er Nyt og Hvad Kommer?
Chrome 67 Beta markerer en vigtig milepæl med indbygget understøttelse for navigator.credentials.get({publicKey: ...}) og navigator.credentials.create({publicKey: ...}). Denne beta-version muliggør brug af U2F/CTAP 1 autentificeringsenheder via USB på desktop-computere.
Fremtidige opdateringer vil udvide understøttelsen til flere transportprotokoller som BLE og NFC, samt den nyere CTAP 2-protokol. Ydermere arbejdes der på avancerede funktioner muliggjort af CTAP 2 og WebAuthn, herunder:
- PIN-beskyttede Autentificeringsenheder: Tilføjelse af et ekstra sikkerhedslag med en PIN-kode til hardware-tokens.
- Kontoudvalg: Mulighed for at vælge den korrekte brugerkonto, når man logger ind, uden at skulle indtaste brugernavn eller adgangskode.
- Forbedret Fingeraftryksregistrering: Strømlinet proces for registrering af fingeraftryk.
Det er værd at bemærke, at andre browsere også omfavner WebAuthn. Microsoft Edge understøtter API'en, og Firefox har tilføjet WebAuthn-support fra version 60 og frem.
Tabeller og Sammenligninger
Sammenligning af Autentificeringsmetoder
| Metode | Sikkerhed mod Phishing | Brugervenlighed | Implementeringskompleksitet | Afhængighed af Hardware |
|---|---|---|---|---|
| Adgangskoder | Lav | Middel | Lav | Ingen |
| SMS 2FA | Middel (sårbar over for SIM-swapping) | Middel | Middel | Mobiltelefon |
| Authenticator Apps (TOTP) | Høj | Høj | Middel | Smartphone |
| Hardware Tokens (U2F/WebAuthn) | Meget Høj | Meget Høj (med biometri) | Høj | Hardware Token / Biometri-aktiveret enhed |
Ofte Stillede Spørgsmål (FAQ)
Er WebAuthn det samme som FIDO U2F?
WebAuthn er en webstandard, der bygger på principperne fra FIDO-alliancens standarder, herunder U2F (Universal 2nd Factor). WebAuthn er mere fleksibel og understøtter et bredere udvalg af autentificeringsmetoder og transportprotokoller end U2F.
Skal jeg skifte mine nuværende adgangskoder ud?
WebAuthn er designet til at kunne bruges sammen med eksisterende adgangskoder som et ekstra sikkerhedslag (2FA). På sigt vil det blive muligt at migrere helt til adgangskodeløs autentificering, men det kræver, at websites implementerer fuld understøttelse.
Hvilke enheder kan bruges som autentificeringsenheder?
Mange moderne enheder kan fungere som autentificeringsenheder, herunder smartphones med fingeraftryksscannere eller ansigtsgenkendelse, laptops med indbyggede biometriske sensorer, samt dedikerede hardware-sikkerhedsnøgler som YubiKey.
Hvordan beskytter WebAuthn mod phishing?
WebAuthn bruger kryptografiske nøglepar, der er bundet til specifikke websites. Når du godkender et login, verificeres det, at autentificeringsenheden kommunikerer med det korrekte website. Dette forhindrer, at dine loginoplysninger kan blive opsnappet af falske websites, selv hvis du indtaster dem.
Ressourcer
For yderligere information og tekniske detaljer, se venligst følgende ressourcer:
- WebAuthn Demo: webauthndemo.appspot.com
- WebAuthn Relying Party Implementation eksempel.
- Artikel om WebAuthn af Adam Langley.
- Google I/O 2018 session om WebAuthn.
WebAuthn repræsenterer et betydeligt skridt fremad i bestræbelserne på at skabe en mere sikker og brugervenlig online oplevelse, der effektivt bekæmper den udbredte trussel fra phishing.
Hvis du vil læse andre artikler, der ligner WebAuthn: Sikker Login Uden Adgangskoder, kan du besøge kategorien Teknologi.
