Le 20 novembre 2018, Microsoft a annoncé que ses 800 millions de titulaires de comptes Microsoft pouvaient désormais se connecter à des services tels qu’Outlook, Office, Skype et Xbox Live sans utiliser de mots de passe.
Cette annonce s’inscrit dans une apparente accélération de l’initiative visant à obtenir un web permettant une connexion sans mot de passe. Elle intervient à la fin d’une année particulière, au cours de laquelle Mozilla Firefox, Google Chrome et Microsoft Edge ont tous annoncé la prise en charge de WebAuthn, l’une des technologies clés pour atteindre cet objectif.
L’authentification sans mot de passe signifie l’abandon des noms d’utilisateur et des mots de passe en faveur de la biométrie, comme les empreintes digitales et la reconnaissance faciale, ou d’autres formes d’authentification compatibles avec la spécification FIDO2, telles que YubiKeys ou Titans.
En termes de sécurité, c’est une bonne nouvelle, mais rien ne garantit que les gens l’accepteront simplement parce qu’elle est plus sécurisée. En fait, à en juger par la lenteur de l’adoption de l’authentification à deux facteurs, j’imagine que l’adoption d’une telle authentification biométrique sera d’une lenteur comparable !
Une des raisons pour lesquelles les mots de passe survivent depuis si longtemps est qu’ils sont très, très faciles à comprendre. La connexion sans mot de passe fonctionne différemment, et est moins aisée à comprendre et est accompagnée d’un lexique de nouveaux acronymes (ou relativement nouveaux) et de normes telles que FIDO2, WebAuthn et CTAP.
Elle vient également avec son cortège de malentendus. Les utilisateurs qui sont prêts à l’adopter, en supposant qu’elle fonctionne comme l’authentification par mot de passe, se demandent tout de même si le fait d’utiliser leurs empreintes digitales pour se connecter à un site web implique de partager leurs données biométriques (ce qui n’est en fait pas le cas !). Selon eux, les mots de passe ne sont peut-être pas fantastiques, mais au moins ils peuvent les changer en cas de violation !
La connexion sans mot de passe est une Bonne Chose et mérite quelques explications.
Dans cet article, je vais essayer d’expliquer, en termes simples, comment cette authentification fonctionne, ainsi que la signification des principaux acronymes et comment des derniers fonctionnent ensemble.
Comment établir une connexion sans mot de passe
Normalement, lorsque vous vous inscrivez sur un site web, vous devez déclarer qui vous êtes et fournir le mot de passe vous allez utiliser. Une fois que vous avez donné ce mot de passe, vous n’avez plus aucun contrôle sur ce que le site web en fera, vous devez simplement avoir confiance en partant du principe que le site en question le stockera de manière sécurisée.
Le nombre de violations de données qui font l’actualité de nos jours, vous donne un aperçu plutôt réaliste sur le niveau de sécurité réel mis en place !
Avec l’authentification sans mot de passe, vous n’avez pas à faire confiance au site web après avoir défini un mot de passe ou fourni une autre donnée sensible.
C’est parce que cette technique utilise la cryptographie à clé publique, à savoir une authentification à l’aide de deux clés cryptographiques : une clé privée secrète et une clé publique qui ne l’est pas.
Vous conservez la clé secrète, privée et vous communiquez la clé publique au site web lors de votre inscription. Comme la clé publique n’est pas secrète, vous n’avez pas à vous inquiéter du niveau de sécurité utilisé par le site web, si elle sera perdue suite à une violation de données ou si elle sera abandonnée sur le siège arrière d’un taxi !
La clé publique peut uniquement déverrouiller des éléments préalablement verrouillés à l’aide de la clé privée correspondante qui, quant à elle, ne doit jamais vous quitter.
Vous vous authentifiez en utilisant votre clé privée pour chiffrer un “challenge” (un nombre très grand et choisi au hasard) envoyé par le site web, puis déchiffrer avec la clé publique par ce dernier. Si la séquence de chiffrement/déchiffrement fonctionne et que le serveur web récupère son challenge, félicitations, vous avez la preuve que vous êtes bien le propriétaire de la clé privée.
Mais cela reste de la théorie !
Pour le faire fonctionner dans la pratique, vous avez besoin d’un moyen vous permettant de créer et stocker des clés, un authentificateur et un ensemble de règles qui permettent à votre ordinateur, à votre navigateur et aux sites web que vous visitez de coopérer et de tout faire fonctionner de manière homogène.
WebAuthn
WebAuthn est un ensemble de règles récemment créé, une API (Application Programming Interface), que les sites web et les navigateurs web peuvent utiliser pour activer l’authentification en utilisant le chiffrement à clé publique au lieu des mots de passe.
Tous les principaux navigateurs savent déjà comment gérer WebAuthn. C’est maintenant au tour de chaque propriétaire de sites web de faire leur part du travail et de modifier leur code.
Au lieu de fournir un formulaire de connexion au niveau duquel vous entrez votre nom d’utilisateur et votre mot de passe, les sites web peuvent authentifier les utilisateurs à l’aide d’un code JavaScript intégré dans les pages web.
Le code utilise l’API WebAuthn pour demander aux navigateurs de créer
des identifiants, lorsque vous souhaitez vous inscrire sur un site web, ou pour obtenir
des identifiants lorsque vous souhaitez vous connecter.
Bien que le code JavaScript soit téléchargé avec la page web et soit exécuté au niveau de votre ordinateur, dans votre navigateur, il est toujours considéré comme faisant partie du site web, de sorte qu’il n’est pas sécurisé avec un accès à votre clé privée ou à toute autre donnée secrète.
Au lieu de cela, il agit simplement comme un intermédiaire, demandant à votre navigateur d’agir secrètement à ce niveau précis, puis de faire circuler les informations entre le navigateur et le serveur web du site en question.
Bien que le navigateur accepte les demandes de traitement des données secrètes, il ne les exécute pas réellement. C’est également un intermédiaire qui sous-traite la partie confidentielle à l’authentificateur.
Les authentificateurs
De par sa conception, un site web sur lequel vous vous authentifiez ne sait pas ou ne se soucie pas de la manière dont vous générez ou sécurisez vos clés privées. Vous êtes donc libre de le faire comme bon vous semble.
Vous pouvez utiliser une authentification intégrée à votre système d’exploitation, telle que la reconnaissance faciale Windows Hello de Microsoft, ou un authentificateur distant, tel qu’un téléphone portable ou une clé de sécurité.
Pour prendre en charge efficacement un large éventail d’authentificateurs distants, il était important que les principaux acteurs s’accordent sur un ensemble de règles relatives à la manière dont les navigateurs web et les authentificateurs communiqueraient ensemble. Ces règles évitent aux navigateurs de devoir connaître ou s’intéresser aux différents types d’authentificateurs, fabricants ou versions, et facilitent ainsi la tâche aux entreprises souhaitant mettre sur le marché de nouvelles solutions d’authentification (ce qui était difficile par le passé).
Ces règles sont appelées CTAP, à savoir Client to Authenticator Protocol, et définissent comment un client, tel un navigateur web, peut communiquer avec un authentificateur distant via USB, Bluetooth ou NFC (communication en champ proche).
NB : comme nous en sommes aux acronymes, en voici un autre : FIDO2. FIDO signifie Fast IDentity Online et FIDO2 n’est qu’un terme générique pour désigner la combinaison de WebAuthn et de CTAP.
L’authentificateur fournit le savoir-faire cryptographique à l’ensemble de la transaction, générant et stockant vos clés, et chiffrant le challenge WebAuthn du site web pour le compte de votre navigateur.
Détail très important, l’authentificateur doit demander votre permission avant de procéder à sa crypto-magie. La spécification CTAP souligne que :
Afin de fournir la preuve de l’interaction de l’utilisateur, un authentifiant itinérant mettant en œuvre ce protocole devra disposer d’un mécanisme permettant d’obtenir un signal de l’utilisateur. Les exemples possibles des signaux provenant de l’utilisateur incluent : un bouton de consentement, un mot de passe, un code PIN, une clé biométrique ou une combinaison de ces derniers.
C’est à ce stade que les différentes formes d’authentification entrent en jeu, expliquant notamment pourquoi, si vous choisissez de vous connecter à un site web en utilisant vos empreintes digitales, elles ne seront pas partagées avec ce site web, mais elles seront utilisées uniquement pour déverrouiller l’authentificateur.
Vos données sensibles, telles que vos empreintes digitales (votre visage, code PIN, iris, etc,…) ainsi que vos clés privées, ne sont partagées qu’avec l’authentificateur, à savoir un appareil bel et bien en votre possession !
Et au final, quel est le résultat ?
Disons que vous vous connectez à un site web en utilisant vos empreintes digitales.
Vous arrivez sur le site web et votre navigateur web demande la page de connexion. Le code de la page de connexion utilise l’API WebAuthn pour demander à votre navigateur de valider un challenge en utilisant votre clé privée. Votre navigateur transmet le challenge à l’authentificateur. Celui-ci vous demande de lui donner la permission de valider le challenge, ce que vous faites en mettant votre doigt sur le scanner d’empreintes digitales.
L’authentificateur vérifie alors que c’est bien votre doigt, valide le challenge et le renvoie au navigateur, qui le renvoie ensuite au code JavaScript du site web, côté client, qui le restitue au serveur du site web en question. Le serveur déchiffre le challenge avec succès grâce à une clé publique (non secrète) que vous avez fournie lors de votre inscription, prouvant ainsi votre identité !
Bien qu’en coulisse, cela semble plus complexe que de simplement envoyer un mot de passe au site web, en pratique vous n’avez presque rien à faire !
Vous n’avez pas à saisir ou à vous souvenir de quoi que ce soit. Vous avez prouvé qui vous étiez sans avoir eu à fournir la moindre donnée confidentielle, et si vous voulez à l’avenir, améliorer votre sécurité avec un authentificateur plus récent, plus intelligent, plus sécurisé et qui n’utilise pas les empreintes digitales, vous le pouvez !
Billet inspiré de The passwordless web explained, sur Sophos nakedsecurity.