L’enregistrement crée une paire de clés sur un authentificateur (un téléphone, l’authentificateur de plateforme d’un ordinateur ou une clé de sécurité) ; le site ne stocke que la clé publique et un ID d’identifiant. À la connexion, le navigateur envoie un challenge, l’authentificateur vérifie l’utilisateur et signe le challenge avec le condensat du RP ID du site, puis le serveur vérifie la signature. La plupart des clés d’accès utilisent ES256 (COSE −7) ; certaines utilisent EdDSA ou RS256.
Les clés d’accès synchronisées sont sauvegardées et copiées sur les appareils d’un utilisateur par un gestionnaire d’identifiants (trousseau iCloud, Gestionnaire de mots de passe de Google, 1Password et d’autres) et portent l’indicateur backup-eligible ; les clés d’accès liées à un appareil résident dans un seul authentificateur, comme une clé de sécurité, et ne peuvent pas être copiées. La connexion entre appareils utilise le transport hybride (un code QR et une vérification de proximité Bluetooth). Les formats d’échange d’identifiants de FIDO (CXF, le protocole CXP étant encore à l’état de projet) permettent aux utilisateurs de déplacer leurs clés d’accès d’un gestionnaire à l’autre.
Ce que le serveur doit toujours faire correctement : des challenges aléatoires à courte durée de vie, la vérification du RP ID et de l’origine, une politique de vérification de l’utilisateur, une récupération de compte qui ne réintroduit pas un facteur plus faible, et le stockage de plusieurs clés d’accès par compte. Le bac à sable des clés d’accès exécute en local un enregistrement et une connexion complets.