Standaarden · FIDO CTAP 2.2 hybrid (passkey-QR)

Moet ik deze passkey-aanmeldings-QR scannen?

Alleen als U net zelf een passkey-aanmelding hebt gestart op het apparaat dat de QR toont. Als iemand anders de QR heeft gegenereerd — een vreemde, een 'helpdesk'-medewerker, een technische-ondersteuningsgesprek — dan logt u bij het scannen op uw telefoon hen in op uw account, niet uzelf. Het open protocol (FIDO CTAP 2.2 hybrid) is solide; de dreiging is social engineering rondom de vraag wie als eerste op de knop 'Aanmelden met een passkey' heeft gedrukt.

Controleer een passkey-QR → Alle standaarden →

Hoe cross-device passkey-aanmelding werkt

Een passkey is een referentie — een publiek/privé sleutelpaar — gebonden aan één van uw apparaten. Als u een passkey voor example.com op uw telefoon hebt geregistreerd, kan alleen uw telefoon de aanmeldingsuitdaging voor example.com ondertekenen.

Dat werkt prima als u OP uw telefoon inlogt. Maar wat als u inlogt op een laptop die geen passkey heeft voor die site? U kunt:

  1. Uw wachtwoord invoeren, waarmee het hele punt van passkeys teniet wordt gedaan.
  2. Een nieuwe passkey op de laptop inschrijven, prima, maar alleen als u deze laptop langdurig vertrouwt.
  3. De passkey van de telefoon gebruiken via cross-device transport: de laptop toont een QR, uw telefoon scant hem, de telefoon ondertekent de uitdaging, de browser van de laptop ontvangt het resultaat en u bent ingelogd.

Optie 3 is wat FIDO CTAP 2.2 "hybrid" definieert. De QR is de bootstrap: hij bevat voldoende informatie voor uw telefoon om de laptop te ontdekken via Bluetooth Low Energy, een eenmalige beveiligde tunnel op te zetten en de WebAuthn-ceremonie te proxyen.

Wat er in de QR zit

De URI ziet er zo uit:

FIDO:/0123456789012345678901234567890123456789...

De decimale cijfers zijn een base10-codering van een CBOR-map. Na base10-decodering + CBOR-parsing heeft de map integer-sleutels:

Sleutel 0, peer publieke sleutel

Niet-gecomprimeerde X9.62 publieke-sleutelbytes (33 bytes voor P-256). De telefoon gebruikt dit om de versleutelde tunnel op te zetten.

Sleutel 1, QR-geheim / tunnelnonce

10 bytes willekeurige gegevens. Identificeert deze specifieke QR; de BLE-advertentie verstuurt een hash hiervan zodat de telefoon de juiste laptop kan vinden.

Sleutel 2, bewerkingshint

0 = make-credential (nieuwe passkey registreren), 1 = get-assertion (aanmelden), 2 = discoverable-credential.

Sleutel 3, tunnelserverdomein

De HTTPS-host die de tunnel proxyet tussen de twee apparaten wanneer directe BLE niet bereikbaar is (bijv. via NAT). Doorgaans een door de leverancier beheerde server zoals cable.ua5v.com (Google) of cable.auth.com (Apple/MS).

Sleutel 4, tijdstempel

Seconden-sinds-epoch toen de QR werd gegenereerd. Gebruikt voor replaybescherming: de telefoon weigert een QR te verwerken die ouder is dan een paar minuten.

Sleutel 5, state-assisted vlag

Boolean. Geeft aan of de laptop wil dat de telefoon deelneemt aan passief statusbeheer (vooral relevant voor credential-enumeratiestromen).

Het dreigingsmodel: wie heeft als eerste op "Aanmelden met een passkey" gedrukt?

Het protocol is cryptografisch solide. De Bluetooth-nabijheidscontrole is echt en beperkt de aanval tot degene die fysiek dicht bij u is. Hoe gaat het dan mis?

Via social engineering op de initiatie. De aanvaller start een passkey-aanmelding bij UW account op HUN laptop. Hun laptop toont een FIDO QR. Ze brengen die QR op een of andere manier voor u:

Als u scant, proxyet uw telefoon uw passkey-handtekening terug naar de browser van de laptop van de aanvaller. De site waarvoor u een passkey heeft denkt dat u bent ingelogd. De aanvaller is nu ingelogd op uw account.

Let op: de nabijheidscontrole helpt niet — de aanvaller is fysiek aanwezig. De QR-inhoud helpt niet — ze zijn cryptografisch geldig. De aanmeldingsbestemming helpt niet — het is de juiste site waarvoor u een passkey heeft. Het enige dat helpt is de situatie herkennen: u zou nooit een FIDO QR moeten scannen die u niet zelf heeft gegenereerd door op "Aanmelden" op uw eigen apparaat te klikken.

Wat onze scanner toont

Wanneer u een FIDO QR in onze scanner sleept, toont het vonnis:

De dreigingsklasse is altijd verdacht, niet omdat het protocol gebroken is, maar omdat de veiligheidsbeoordeling contextueel is en de scanner niet kan weten wie op "Aanmelden" heeft geklikt. Het vonnis vertelt u precies dat: "scannen voltooit een aanmelding die iemand OP EEN ANDER APPARAAT heeft GESTART. Als u niet net zelf een aanmelding hebt gestart, weiger dan."

Wanneer het veilig is (en wanneer niet)

Veilig: u zit aan uw laptop, opent uw bank- of e-mailsite, klikt op "Aanmelden met een passkey" en uw laptop toont de QR. U pakt uw telefoon, scant de QR, keurt de nabijheidsprompt goed. Klaar.

Niet veilig: iemand anders dan uzelf heeft de aanmelding gestart. Dit omvat iedereen aan de telefoon, iedereen in een remote-support-gesprek, iedereen die u een QR heeft ge-e-maild, iedereen die u een "QR om uw identiteit te verifiëren" heeft getoond en elke QR op een plek die niet uw eigen net-geopende apparaat is.

Als u niet zeker weet of een QR afkomstig is van een aanmelding DIE U ZELF hebt gestart, annuleer dan de aanmelding op het oorspronkelijke apparaat (sluit het browsertabblad) en begin opnieuw op het apparaat dat u van plan was te gebruiken. Echte FIDO QR's zijn slechts ~10 minuten geldig; opnieuw beginnen wist elke lopende sessie en maakt de dreiging onmogelijk.

Gerelateerd

Een FIDO QR inspecteren

Sleep de afbeelding erin of plak de FIDO:-URI. Het vonnis toont de bewerking, tunnelserver, tijdstempel en een harde waarschuwing om te weigeren tenzij u de aanmelding zelf hebt gestart.

Scanner openen →