Clé 0, clé publique pair
Octets de clé publique non compressée X9.62 (33 octets pour P-256). Le téléphone utilise cette clé pour établir le tunnel chiffré.
Standards · FIDO CTAP 2.2 hybrid (QR passkey)
Seulement si VOUS venez de démarrer une connexion par passkey sur l’appareil affichant le QR. Si quelqu’un d’autre vous demande de le scanner, c’est une tentative de prise de contrôle de compte.
Un passkey est un identifiant, une paire de clés publique/privée, lié à l'un de vos appareils. Si vous avez enregistré un passkey pour example.com sur votre téléphone, seul votre téléphone peut signer le défi de connexion pour example.com.
Cela fonctionne bien quand vous vous connectez SUR votre téléphone. Mais que se passe-t-il quand vous êtes sur un laptop et que votre passkey est sur votre téléphone ? Vous avez trois options.
L’option 3 est ce que définit FIDO CTAP 2.2 « hybrid ». Le QR est l’amorçage ; il transporte les paramètres de la session, pas vos identifiants.
L’URI ressemble à :
FIDO:/0123456789012345678901234567890123456789...
Les chiffres décimaux sont un encodage base10 d’une structure CBOR. Après décodage base10 + CBOR, le payload contient cinq à six champs clés.
Octets de clé publique non compressée X9.62 (33 octets pour P-256). Le téléphone utilise cette clé pour établir le tunnel chiffré.
10 octets de données aléatoires. Identifie ce QR spécifique ; l’annonce BLE diffuse ce secret pour que le laptop et le téléphone se trouvent.
0 = make-credential (enregistrement d'un nouveau passkey), 1 = get-assertion (connexion), 2 = discoverable-credential.
L'hôte HTTPS qui relaie le tunnel entre les deux appareils lorsque le BLE direct n'est pas disponible (par exemple, derrière un NAT). Il s'agit généralement d'un serveur géré par un fournisseur, comme cable.ua5v.com (Google) ou cable.auth.com (Apple/MS).
Secondes depuis epoch au moment où le QR a été généré. Utilisé pour la protection contre la rejouabilité ; le QR expire rapidement.
Booléen. Indique si le laptop souhaite que le téléphone participe à la découverte passive du tunnel via BLE.
Le protocole est cryptographiquement solide. La vérification de proximité Bluetooth est réelle et attenante à la session. En usage normal, c’est sûr.
La compromission passe par l’ingénierie sociale sur l’initiation. L’attaquant démarre une connexion par passkey sur votre compte, génère le QR, puis vous convainc de le scanner.
Si vous scannez, votre téléphone achemine votre signature passkey vers la session de l’attaquant. Il est maintenant connecté à votre compte.
Notez que la vérification de proximité n'aide pas : l'attaquant est physiquement présent. Le contenu du QR n'aide pas davantage : il est cryptographiquement valide. La destination de connexion n'aide pas non plus : c'est bien le site pour lequel vous possédez un passkey. La seule chose qui aide est de reconnaître la situation : vous ne devriez jamais scanner un QR FIDO que vous n'avez pas généré vous-même en cliquant sur « Se connecter » sur votre propre appareil.
Quand vous déposez un QR FIDO dans notre scanner, le verdict affiche :
cable.ua5v.com de Google, le serveur de tunnel d'Apple, etc.) ?La classe de menace est toujours suspect, non pas parce que le protocole est dangereux, mais parce que la distinction « vous avez initié ceci » vs « quelqu’un d’autre l’a fait » ne peut pas être déterminée par un scanner.
Sûr : vous êtes assis devant votre laptop, vous avez ouvert votre banque ou votre e-mail et cliqué sur « Se connecter avec un passkey », et votre écran affiche un QR.
Pas sûr : quelqu’un d’autre que vous a initialisé la connexion. Cela inclut « le support technique », un « responsable informatique », un « agent de sécurité », un « recruteur » ou toute autre personne vous demandant de scanner quoi que ce soit.
Si vous n’êtes pas sûr qu’un QR provienne d’une connexion que VOUS avez initiée, annulez la connexion et redémarrez-la vous-même sur un appareil que vous contrôlez.
Déposez l’image ou collez l’URI FIDO:. Le verdict affiche l’opération, le serveur de tunnel, l’horodatage et les contrôles de cohérence.