Standarder · FIDO CTAP 2.2 hybrid (passord­nøkkel-QR)

Bør jeg skanne denne passord­nøkkel-innloggings-QR-en?

Bare hvis DU nettopp startet en passord­nøkkel-innlogging på enheten som viser QR-koden. Hvis noen andre genererte QR-koden – en fremmed, en «helpdesk»-agent eller en teknisk support-samtale – logger du dem inn på kontoen din ved å skanne den med telefonen din, ikke deg selv. Protokollens åpne standard (FIDO CTAP 2.2 hybrid) er solid; trusselen er sosial manipulasjon rundt hvem som trykket på «Logg inn med passord­nøkkel» først.

Sjekk en passord­nøkkel-QR → Alle standarder →

Slik fungerer kryssenhet passord­nøkkel-innlogging

En passord­nøkkel er en legitimasjon – et offentlig/privat nøkkelpar – bundet til én av enhetene dine. Hvis du registrerte en passord­nøkkel for example.com på telefonen din, er det bare telefonen din som kan signere innloggingsutfordringen for example.com.

Det fungerer fint når du logger inn PÅ telefonen din. Men hva skjer når du logger inn på en bærbar datamaskin som ikke har en passord­nøkkel for det aktuelle nettstedet? Du kan:

  1. Skriv inn passordet ditt – det opphever hele poenget med passord­nøkler.
  2. Registrer en ny passord­nøkkel på den bærbare – greit, men bare hvis du stoler på denne bærbare datamaskinen på lang sikt.
  3. Bruk telefonens passord­nøkkel via kryssenhetstransport – den bærbare viser en QR-kode, telefonen din skanner den, telefonen signerer utfordringen, og nettleseren på den bærbare mottar resultatet og du er logget inn.

Alternativ 3 er det FIDO CTAP 2.2 «hybrid» definerer. QR-koden er bootstrap-mekanismen – den inneholder nok informasjon til at telefonen din kan oppdage den bærbare via Bluetooth Low Energy, etablere en enveissikker tunnel og mellomlegge WebAuthn-seremonien.

Hva er inne i QR-koden

URI-en ser slik ut:

FIDO:/0123456789012345678901234567890123456789...

Desimalsifrene er en base10-koding av et CBOR-kart. Etter base10-dekoding + CBOR-parsing har kartet heltallsnøkler:

Nøkkel 0, peer offentlig nøkkel

Ukomprimerte X9.62 offentlige nøkkelbytes (33 bytes for P-256). Telefonen bruker disse til å etablere den krypterte tunnelen.

Nøkkel 1, QR-hemmelighet / tunnelnonce

10 bytes tilfeldige data. Identifiserer denne spesifikke QR-koden; BLE-kunngjøringen sender ut en hash av dette slik at telefonen kan finne den riktige bærbare.

Nøkkel 2, operasjonsantydning

0 = make-credential (registrering av ny passord­nøkkel), 1 = get-assertion (innlogging), 2 = discoverable-credential.

Nøkkel 3, tunnelserver-domene

HTTPS-verten som mellomlegger tunnelen mellom de to enhetene når direkte BLE ikke er tilgjengelig (f.eks. via NAT). Vanligvis en leverandørdrevet server som cable.ua5v.com (Google) eller cable.auth.com (Apple/MS).

Nøkkel 4, tidsstempel

Sekunder siden epoke da QR-koden ble generert. Brukes til replay-beskyttelse – telefonen nekter å honorer en QR-kode som er eldre enn noen minutter.

Nøkkel 5, tilstandsassistert flagg

Boolsk. Angir om den bærbare ønsker at telefonen deltar i passiv tilstandslagring (primært relevant for flyter for opptelling av legitimasjoner).

Trusselmodellen: hvem trykket på «Logg inn med passord­nøkkel» først?

Protokollen er kryptografisk sund. Bluetooth-nærhetstsjekket er reelt og begrenser angrepet til den som fysisk befinner seg nær deg. Så hvordan går det galt?

Gjennom sosial manipulasjon av initieringen. Angriperen starter en passord­nøkkel-innlogging til DIN konto på DERES bærbare. Den bærbare viser en FIDO QR-kode. De får på en eller annen måte QR-koden foran deg:

Hvis du skanner, videresender telefonen din passord­nøkkel-signaturen din til angriper­ens bærbare datamaskins nettleser. Nettstedet du har en passord­nøkkel for tror du er logget inn. Angriperen er nå logget inn på kontoen din.

Merk at nærhetstsjekket ikke hjelper – angriperen er fysisk til stede. QR-kode-innholdet hjelper ikke – det er kryptografisk gyldig. Innloggings­destinasjonen hjelper ikke – det er det riktige nettstedet du har en passord­nøkkel for. Det eneste som hjelper er å gjenkjenne situasjonen: du bør aldri skanne en FIDO QR-kode som du ikke selv har generert ved å klikke «Logg inn» på din egen enhet.

Hva skanneren vår viser

Når du slipper en FIDO QR-kode inn i skanneren vår, viser resultatet:

Trusselklassen er alltid mistenkelig – ikke fordi protokollen er ødelagt, men fordi sikkerhetsvurderingen er kontekstuell og skanneren ikke kan vite hvem som trykket på «Logg inn». Resultatsopplysningen forteller deg nettopp det: «skanning fullfører en innlogging som noen STARTET PÅ EN ANNEN ENHET. Avvis hvis du ikke nettopp selv har initiert en innlogging.»

Når det er trygt (og når det ikke er det)

Trygt: Du satte deg ved den bærbare, åpnet banken eller e-postnettstedet ditt, klikket på «Logg inn med passord­nøkkel», og den bærbare viste QR-koden. Du tar telefonen, skanner QR-koden og godkjenner nærhetsprompten. Ferdig.

Ikke trygt: enhver andre enn deg startet innloggingsprosessen. Det inkluderer enhver over telefon, enhver ved en fjernstøtte-samtale, enhver som sendte deg en QR-kode via e-post, enhver som viste deg en «QR for å verifisere identiteten din», og enhver QR-kode et sted som ikke er din egen nettopp viste enhet.

Hvis du ikke er sikker på om en QR-kode stammer fra en innlogging DU startet, kanseller innloggingen på den opprinnelige enheten (lukk nettleserfanen) og start deretter på nytt på enheten du hadde tenkt å bruke. Ekte FIDO QR-koder er bare gyldige i ca. 10 minutter – å starte på nytt tømmer alle pågående sesjoner og gjør trusselen umulig.

Relatert

Inspiser en FIDO QR-kode

Slipp bildet eller lim inn FIDO:-URI-en. Resultatet viser operasjon, tunnelserver, tidsstempel og en tydelig advarsel om å avvise med mindre du selv startet innloggingen.

Åpne skanner →