Standard · FIDO CTAP 2.2 hybrid (QR di passkey)

Dovrei scansionare questo QR di accesso con passkey?

Solo se è LEI ad aver appena avviato un accesso con passkey sul dispositivo che mostra il QR. Se chiunque altro ha generato il QR, uno sconosciuto, un agente dell'"assistenza", una telefonata di supporto tecnico, scansionarlo sul suo telefono fa accedere quella persona al suo account, non lei. Lo standard aperto del protocollo (FIDO CTAP 2.2 hybrid) è solido; la minaccia è l'ingegneria sociale su chi ha premuto per primo il pulsante "Accedi con una passkey".

Controlla un QR di passkey → Tutti gli standard →

Come funziona l'accesso con passkey cross-device

Una passkey è una credenziale, una coppia di chiavi pubblica/privata, legata a uno dei suoi dispositivi. Se ha registrato una passkey per example.com sul suo telefono, solo il suo telefono può firmare la sfida di accesso per example.com.

Questo funziona bene quando l'accesso avviene SUL suo telefono. Ma cosa succede quando accede da un portatile che non ha una passkey per quel sito? Può:

  1. Digitare la password, vanifica del tutto lo scopo delle passkey.
  2. Registrare una nuova passkey sul portatile, va bene, ma solo se si fida di questo portatile a lungo termine.
  3. Usare la passkey del telefono tramite trasporto cross-device, il portatile mostra un QR, il suo telefono lo scansiona, il telefono firma la sfida, il browser del portatile riceve il risultato e l'accesso è effettuato.

L'opzione 3 è ciò che definisce il FIDO CTAP 2.2 "hybrid". Il QR è il bootstrap, contiene informazioni sufficienti perché il suo telefono individui il portatile tramite Bluetooth Low Energy, stabilisca un tunnel sicuro monouso e faccia da proxy per la cerimonia WebAuthn.

Cosa c'è dentro il QR

L'URI ha questo aspetto:

FIDO:/0123456789012345678901234567890123456789...

Le cifre decimali sono una codifica base10 di una mappa CBOR. Dopo la decodifica base10 e il parsing CBOR, la mappa ha chiavi intere:

Chiave 0, chiave pubblica del peer

Byte della chiave pubblica X9.62 non compressa (33 byte per P-256). Il telefono li usa per stabilire il tunnel cifrato.

Chiave 1, segreto del QR / nonce del tunnel

10 byte di dati casuali. Identifica questo specifico QR; l'annuncio BLE trasmette un hash di questo valore così il telefono può trovare il portatile giusto.

Chiave 2, suggerimento sull'operazione

0 = make-credential (registrazione di una nuova passkey), 1 = get-assertion (accesso), 2 = discoverable-credential.

Chiave 3, dominio del server del tunnel

L'host HTTPS che fa da proxy al tunnel tra i due dispositivi quando il BLE diretto non è raggiungibile (ad es., attraverso NAT). Di solito un server gestito da un fornitore come cable.ua5v.com (Google) o cable.auth.com (Apple/MS).

Chiave 4, timestamp

Secondi dall'epoch quando il QR è stato generato. Usato per la protezione dal replay, il telefono rifiuta di onorare un QR più vecchio di qualche minuto.

Chiave 5, flag di assistenza dello stato

Booleano. Indica se il portatile vuole che il telefono partecipi al mantenimento passivo dello stato (rilevante soprattutto per i flussi di enumerazione delle credenziali).

Il modello di minaccia: chi ha premuto per primo "Accedi con una passkey"?

Il protocollo è crittograficamente solido. Il controllo di prossimità Bluetooth è reale e limita l'attacco a chiunque sia fisicamente vicino a lei. Quindi come va storto?

Tramite l'ingegneria sociale sull'avvio. L'aggressore avvia un accesso con passkey al SUO account sul PROPRIO portatile. Il loro portatile mostra un QR FIDO. In qualche modo le mettono quel QR davanti:

Se lei scansiona, il suo telefono inoltra la sua firma con passkey a il browser del portatile dell'aggressore. Il sito per cui ha una passkey crede che lei abbia effettuato l'accesso. L'aggressore è ora collegato al suo account.

Noti che il controllo di prossimità non aiuta, l'aggressore è fisicamente presente. Il contenuto del QR non aiuta, è crittograficamente valido. La destinazione dell'accesso non aiuta, è il sito corretto per cui ha una passkey. L'unica cosa che aiuta è riconoscere la situazione: non dovrebbe mai scansionare un QR FIDO che non ha generato lei stesso cliccando su "Accedi" sul proprio dispositivo.

Cosa evidenzia il nostro scanner

Quando trascina un QR FIDO nel nostro scanner, il verdetto mostra:

La classe di minaccia è sempre sospetta, non perché il protocollo sia compromesso ma perché la valutazione di sicurezza è contestuale e lo scanner non può sapere chi ha premuto "Accedi". La divulgazione del verdetto lo dice esattamente: "la scansione completa un accesso che qualcuno HA AVVIATO SU UN ALTRO DISPOSITIVO. Se non ha appena avviato lei stesso un accesso, rifiuti."

Quando è sicuro (e quando non lo è)

Sicuro: si è seduto al suo portatile, ha aperto il sito della sua banca o della sua email, ha cliccato su "Accedi con una passkey" e il portatile ha mostrato il QR. Prende il telefono, scansiona il QR, approva la richiesta di prossimità. Fatto.

Non sicuro: chiunque tranne lei ha avviato l'accesso. Questo include chiunque al telefono, chiunque in una chiamata di assistenza remota, chiunque le abbia inviato un QR via email, chiunque le abbia mostrato un "QR per verificare la sua identità" e qualsiasi QR in un luogo che non sia il suo dispositivo appena visualizzato.

Se non è sicuro che un QR provenga da un accesso che ha avviato LEI, annulli l'accesso sul dispositivo originale (chiuda la scheda del browser), poi ricominci da capo sul dispositivo che intendeva usare. I QR FIDO reali sono validi solo per circa 10 minuti, riavviare elimina ogni sessione in corso e rende la minaccia impossibile.

Correlati

Ispeziona un QR FIDO

Trascini l'immagine o incolli l'URI FIDO:. Il verdetto mostra operazione, server del tunnel, timestamp e un avviso netto a rifiutare a meno che non abbia avviato lei stesso l'accesso.

Apri lo scanner →