API WebAuthn pour l’authentification sans mot de passe sur Windows
Les mots de passe peuvent rendre vos clients vulnérables aux violations de données et aux attaques de sécurité par des utilisateurs malveillants.
Microsoft est depuis longtemps un partisan de l’authentification sans mot de passe et a introduit les API de plateforme Win32 WebAuthn W3C/Fast IDentity Online 2 (FIDO2) dans Windows 10 (version 1903).
À compter de Windows 11, version 22H2, les API WebAuthn prennent en charge les algorithmes ECC.
Qu’est-ce que cela signifie ?
À l’aide des API WebAuthn, les partenaires de développement et la communauté des développeurs peuvent utiliser des clés de sécurité Windows Hello ou FIDO2 pour implémenter l’authentification multifacteur sans mot de passe pour leurs applications sur des appareils Windows.
Les utilisateurs de ces applications ou sites peuvent utiliser n’importe quel navigateur prenant en charge les API WebAuthn pour l’authentification sans mot de passe. Les utilisateurs disposent d’une expérience familière et cohérente sur Windows, quel que soit le navigateur qu’ils utilisent.
Les développeurs doivent utiliser les API WebAuthn pour prendre en charge les clés d’authentification FIDO2 de manière cohérente pour les utilisateurs. En outre, les développeurs peuvent utiliser tous les transports disponibles selon les spécifications FIDO2 (USB, NFC et BLE) tout en évitant la surcharge d’interaction et de gestion.
Remarque
Lorsque ces API sont utilisées, les navigateurs ou applications Windows 10 n’ont pas d’accès direct aux transports FIDO2 pour la messagerie liée à FIDO.
Vue d’ensemble
Le protocole CTAP2 (Client to Authenticator Protocol 2) et WebAuthn définissent une couche d’abstraction qui crée un écosystème pour les informations d’identification fortement authentifiées. Dans cet écosystème, tout client interopérable (par exemple, une application ou un navigateur natif) qui s’exécute sur un appareil client donné utilise une méthode standardisée pour interagir avec n’importe quel authentificateur interopérable. Les authentificateurs interopérables incluent des authentificateurs intégrés à l’appareil client (authentificateurs de plateforme) et des authentificateurs qui se connectent à l’appareil client à l’aide de connexions USB, BLE ou NFC (authentificateurs itinérants).
Le processus d’authentification démarre lorsque l’utilisateur effectue un mouvement utilisateur spécifique qui indique son consentement pour l’opération. À la demande du client, l’authentificateur crée en toute sécurité des clés de chiffrement fortes et les stocke localement.
Une fois ces clés spécifiques au client créées, les clients peuvent demander des attestations pour l’inscription et l’authentification. Le type de signature utilisé par la clé privée reflète le mouvement de l’utilisateur qui a été effectué.
Le diagramme suivant montre comment CTAP et WebAuthn interagissent. Les flèches en pointillés bleu clair représentent des interactions qui dépendent de l’implémentation spécifique des API de plateforme.
Relations des composants qui participent à l’authentification sans mot de passe
Une danse WebAuthn/CTAP2 combinée comprend les personnages suivants :
Appareil client. L’appareil client est le matériel qui héberge une authentification forte donnée. Les ordinateurs portables et les téléphones sont des exemples d’appareils clients.
Parties de confiance et clients. Les parties de confiance sont des applications web ou natives qui consomment des informations d’identification fortes. Les parties de confiance s’exécutent sur les appareils clients.
En tant que partie de confiance, une application native peut également agir comme un client WebAuthn pour effectuer des appels WebAuthn directs.
En tant que partie de confiance, une application web ne peut pas interagir directement avec l’API WebAuthn. La partie de confiance doit négocier la transaction via le navigateur.
Remarque
Le diagramme précédent ne représente pas l’authentification Sign-On unique (SSO). Veillez à ne pas confondre les parties de confiance FIDO avec les parties de confiance fédérées.
API WebAuthn. L’API WebAuthn permet aux clients d’effectuer des demandes aux authentificateurs. Le client peut demander à l’authentificateur de créer une clé, de fournir une assertion sur une clé, de créer des rapports, de gérer un code confidentiel, etc.
Plateforme/hôte CTAP2. La plateforme (également appelée hôte dans la spécification CTAP2) est la partie de l’appareil client qui négocie avec les authentificateurs. La plateforme est chargée de signaler en toute sécurité l’origine de la demande et d’appeler les API CTAP2 Concise Binary Object Representation (CBOR). Si la plateforme n’est pas compatible avec CTAP2, les clients eux-mêmes prennent davantage en charge la charge. Dans ce cas, les composants et les interactions indiqués dans le diagramme précédent peuvent différer.
Authentificateur de plateforme. Un authentificateur de plateforme réside généralement sur un appareil client. Parmi les authentificateurs de plateforme, citons la technologie de reconnaissance des empreintes digitales qui utilise un lecteur d’empreintes digitales intégré pour ordinateur portable et la technologie de reconnaissance faciale qui utilise un appareil photo intégré pour smartphone. Les protocoles de transport multiplateforme tels que USB, NFC ou BLE ne peuvent pas accéder aux authentificateurs de plateforme.
Authentificateur itinérant. Un authentificateur itinérant peut se connecter à plusieurs appareils clients. Les appareils clients doivent utiliser un protocole de transport pris en charge pour négocier les interactions. Parmi les authentificateurs itinérants, citons les clés de sécurité USB, les applications de smartphone compatibles BLE et les cartes de proximité compatibles NFC. Les authentificateurs itinérants peuvent prendre en charge CTAP1, CTAP2 ou les deux protocoles.
De nombreuses parties de confiance et clients peuvent interagir avec de nombreux authentificateurs sur un seul appareil client. Un utilisateur peut installer plusieurs navigateurs qui prennent en charge WebAuthn et peut avoir simultanément accès à un lecteur d’empreintes digitales intégré, à une clé de sécurité branchée et à une application mobile compatible BLE.
Interopérabilité
Avant WebAuthn et CTAP2, il y avait U2F et CTAP1. U2F est la spécification universelle du second facteur fiDO Alliance. De nombreux authentificateurs parlent CTAP1 et gèrent les informations d’identification U2F. WebAuthn a été conçu pour être interopérable avec les authentificateurs CTAP1. Une partie de confiance qui utilise WebAuthn peut toujours utiliser les informations d’identification U2F si la partie de confiance ne nécessite pas de fonctionnalité FIDO2 uniquement.
Les authentificateurs FIDO2 ont déjà été implémentés et les parties de confiance WebAuthn peuvent nécessiter les fonctionnalités facultatives suivantes :
- Clés pour plusieurs comptes (les clés peuvent être stockées par partie de confiance)
- Code confidentiel du client
- Emplacement (l’authentificateur renvoie un emplacement)
- Code d’authentification de message basé sur le hachage (HMAC)-secret (active les scénarios hors connexion)
Les options suivantes peuvent être utiles à l’avenir, mais n’ont pas encore été observées dans la nature :
- Approbation transactionnelle
- Index de vérification utilisateur (les serveurs peuvent déterminer si les données biométriques stockées localement ont changé au fil du temps)
- Méthode de vérification utilisateur (l’authentificateur retourne la méthode exacte)
- Limites de performances biométriques (la partie de confiance peut spécifier des taux acceptables d’acceptation de faux et de faux rejet)
Implémentation De Microsoft
L’implémentation de Microsoft FIDO2 est en cours d’élaboration depuis des années. Les logiciels et les services sont implémentés indépendamment en tant qu’entités conformes aux normes. À compter de la version 1809 (octobre 2018) de Windows 10, tous les composants Microsoft utilisent la dernière version du candidat WebAuthn. Il s’agit d’une version stable qui ne devrait pas changer de manière normative avant la ratification finale de la spécification. Étant donné que Microsoft est parmi les premiers au monde à déployer FIDO2, certaines combinaisons de composants non-Microsoft populaires ne seront pas encore interopérables.
Voici une disposition approximative de l’emplacement des bits Microsoft :
Implémentation des API WebAuthn et CATP2 par Microsoft
Partie de confiance WebAuthn : compte Microsoft. Si vous n’êtes pas familiarisé avec le compte Microsoft, il s’agit du service de connexion pour Xbox, Outlook et de nombreux autres sites. L’expérience de connexion utilise JavaScript côté client pour déclencher Microsoft Edge pour communiquer avec les API WebAuthn. Le compte Microsoft exige que les authentificateurs présentent les caractéristiques suivantes :
- Les clés sont stockées localement sur l’authentificateur et non sur un serveur distant
- Les scénarios hors connexion fonctionnent (activés à l’aide de HMAC)
- Les utilisateurs peuvent placer des clés pour plusieurs comptes d’utilisateur sur le même authentificateur
- Si nécessaire, les authentificateurs peuvent utiliser un code confidentiel client pour déverrouiller un module de plateforme sécurisée
Important
Étant donné que le compte Microsoft nécessite des fonctionnalités et des extensions propres aux authentificateurs FIDO2 CTAP2, il n’accepte pas les informations d’identification CTAP1 (U2F).
Client WebAuthn : Microsoft Edge. Microsoft Edge peut gérer l’interface utilisateur pour les fonctionnalités WebAuthn et CTAP2 décrites dans cet article. Il prend également en charge l’extension AppID. Microsoft Edge peut interagir avec les authentificateurs CTAP1 et CTAP2. Cette étendue d’interaction signifie qu’elle peut créer et utiliser des informations d’identification U2F et FIDO2. Toutefois, Microsoft Edge ne parle pas le protocole U2F. Par conséquent, les parties de confiance doivent utiliser uniquement la spécification WebAuthn. Microsoft Edge sur Android ne prend pas en charge WebAuthn.
Remarque
Pour plus d’informations sur la prise en charge de Microsoft Edge pour WebAuthn et CTAP, consultez la documentation pour les développeurs Microsoft Edge hérités.
Plateforme : Windows 10, Windows 11. Windows 10 et Windows 11 hébergent les API WebAuthn de la plateforme Win32.
Authentificateurs itinérants. Vous remarquerez peut-être qu’il n’existe pas d’authentificateur itinérant Microsoft . La raison en est qu’il existe déjà un écosystème solide de produits spécialisés dans l’authentification forte, et chaque client (qu’il s’agisse d’entreprises ou de particuliers) a des exigences différentes en matière de sécurité, de facilité d’utilisation, de distribution et de récupération de compte. Pour plus d’informations sur la liste toujours croissante des authentificateurs certifiés FIDO2, consultez Produits certifiés FIDO. La liste comprend les authentificateurs intégrés, les authentificateurs itinérants et même les fabricants de puces qui ont des conceptions certifiées.
Références pour les développeurs
Les API WebAuthn sont documentées dans le référentiel GitHub Microsoft/webauthn . Pour comprendre le fonctionnement des authentificateurs FIDO2, passez en revue les deux spécifications suivantes :
- Authentification web : API permettant d’accéder aux informations d’identification de clé publique (disponible sur le site W3C). Ce document est appelé spécification WebAuthn.
- Client à Authenticator Protocol (CTAP). Ce document est disponible sur le site FIDO Alliance , sur lequel les équipes de matériel et de plateforme travaillent ensemble pour résoudre le problème de l’authentification FIDO.