WebAuthn, l'avenir du Web sans mot de passe
Même si les éditeurs de systèmes d'exploitation et de navigateurs Internet prennent désormais en charge l'API WebAuthn, il est difficile de savoir à quel moment et comment les sites Web vont le mettre en oeuvre.
La méthode apportée par l'API WebAuthn permet de se connecter à des sites Web sans avoir à se souvenir de ses mots de passe. À la place, l'API utilise une empreinte digitale, une empreinte faciale ou un token matériel comme identifiant. Depuis cette semaine, l'API WebAuthn a été élevée au rang de standard officiel par le World Wide Web Consortium (W3C). Entre temps, la norme a été intégrée à de nombreux navigateurs populaires et à Windows 10. Maintenant, c'est au tour du web lui-même de l'incorporer.
Les avantages de WebAuthn
Vous avez peut-être entendu parler de la série de fuites de données Collections qui s'est traduite pas la publication sur le Web de millions de noms d'utilisateur et de mots de passe, certains liés les uns aux autres. Ces fuites sont en partie dues au fait que les sites Web auxquels l'utilisateur s'identifie stockent ses identifiant et mot de passe sur le site lui-même. De plus, une fois ces données dispersées sur le web, d'autres acteurs mal intentionnés peuvent encore les utiliser pour usurper d'autres sites, au cas où les mêmes mots de passe auraient été utilisés ailleurs. En exploitant cet effet de cascade, des pirates peuvent avoir accès à un nombre toujours plus important d'informations personnelles.
WebAuthn ne requiert pas de mot de passe. L'API crée un token d'authentification unique à chaque fois que l'utilisateur ouvre une session, et elle met en pratique une simple recommandation de sécurité : créer un mot de passe unique pour chaque site Internet, et ce, sans obliger l'utilisateur à se souvenir de quoi que ce soit. WebAuthn prend en charge deux catégories principales d'authentification : la biométrie et les tokens de sécurité matérielle. Aujourd'hui, l'usage de la biométrie n'est plus exceptionnel. Beaucoup de smartphones et de PC sont équipés de capteurs pour la reconnaissance d'empreinte digitale ou de caméra de profondeur pour la reconnaissance faciale, comme celle couplée avec Windows Hello par exemple.
Les PC sous Windows 10 équipés d'une caméra de profondeur permettent d'ouvrir une session par reconnaissance faciale avec Windows Hello. (Crédit : Mark Hachman/IDG)
Le fonctionnement des tokens matériels est un peu plus opaque. Le token matériel Yubico YubiKey, désormais assez connu, n'utilise ni mot de passe, ni biométrie. Il consiste à insérer une YubiKey dans le port USB d'un ordinateur. Cette solution peut s'avérer intéressante pour les PC qui ne sont pas équipés de caméra de profondeur. La YubiKey permet en quelque sorte d'avoir toujours un mot de passe complexe à portée de main. En cas de perte, l'utilisateur devra le signaler au site en question, désactiver l'ancienne clé, puis acheter et activer une nouvelle clé.
Fonctionnement de WebAuthn
Le blog Sophos Naked Security résume assez bien le processus WebAuthn. Si l'on se connecte à un site qui prend en charge WebAuthn, celui-ci demande au navigateur qui tourne sur un PC (ou un smartphone) de prouver que l'utilisateur est bien celui qu'il prétend être. Le navigateur va alors demander à l'authentificateur de confiance de fournir cette preuve. Comme authentificateur, le site reconnait soit le lecteur d'empreintes digitales d'un mobile, Windows Hello ou un token matériel. Parce que l'authentificateur lui-même est digne de confiance, il n'est pas nécessaire de stocker des données d'empreintes digitales ou quoi que ce soit d'autre sur le site Web, contrairement aux méthodes d'identification actuelles où les mots de passe sont stockées sur le site. Autrement dit, l'authentificateur de confiance est un intermédiaire qui sert de garant à l'utilisateur.
Le Yubico YubiKeys se branche sur le port USB du PC pour l'authentification. (Crédit : Yubico)
Quand un site Web demande à l'utilisateur de s'identifier, le navigateur va demander à son tour à l'authentificateur de prouver son identité. À ce moment-là, il va par exemple appliquer son doigt sur le capteur d'empreinte digitale de son mobile. L'authentificateur confirme ensuite que l'utilisateur est bien celui qu'il prétend être, et le navigateur renvoie cette confirmation cryptée au serveur Web. Mais, il y a un peu plus que cela, puisque les données sont cryptées avec une clé publique assortie d'une Private Challenge Key - un challenge de clé privée - pour le déverrouillage. Cependant, le principe repose toujours sur le fait que l'utilisateur communiquera son « secret » (empreinte digitale, empreinte faciale ou token) uniquement dans les limites sécurisées de son mobile ou de son PC. Voici une manière plus imagée de présenter les choses : supposons que le conseiller de clientèle d'une banque se rende chez son client en taxi pour lui remettre un chèque. Pour prouver son identité, le client pourrait soit communiquer ces informations personnelles et son mot de passe oralement au chauffeur, et tout le monde pourrait l'entendre. Mais, mieux encore, il pourrait communiquer ces informations à un ami de confiance dans son appartement, pour prouver qu'il est bien celui qu'il prétend être, et demander à cet ami de confiance d'aller à la rencontre du conseiller pour lui confirmer que tout est conforme.
Démonstration de WebAuthn
Sur le site de Webauthn.org on peut voir une démo sur le fonctionnement de WebAuthn. Même si la vidéo est assez lente, on ne voit pas que le système crée de clé publique. WebAuthn repose sur une identification à un seul facteur : une solution à toute épreuve pour identifier l'utilisateur, mais c'est tout. On pourrait imaginer qu'une personne profite de votre sommeil pour s'authentifier sur un site bancaire avec l'empreinte de votre doigt. Si cette empreinte est la seule façon de vérifier une identité (c.-à-d. sans mot de passe), alors oui, une usurpation est possible. D'ailleurs, on se demande toujours si WebAuthn fonctionnera en conjonction avec les méthodes 2FA existantes. L'authentification à deux facteurs combine généralement deux de ces trois éléments : une information connue uniquement de l'utilisateur (un mot de passe), un élément matériel dont il est le seul propriétaire (une carte à puce ou un token) ou quelque chose qui le représente en propre, autrement dit lui-même. En d'autres termes, une banque peut encore encourager son client à utiliser l'identification biométrique WebAuthn avec un mot de passe pour améliorer un peu plus la sécurité.
Une grande partie du travail préparatoire de WebAuthn est déjà terminée. Windows 10, Android et Google Chrome, Mozilla Firefox, Microsoft Edge et Apple Safari (en preview) le supportent déjà. C'est désormais au tour des sites Web eux-mêmes de mettre en oeuvre le support pour WebAuthn. Et cette mise en oeuvre peut aller un peu plus loin que la simple réécriture de code autorisant les connexions WebAuthn. On ne sait pas par exemple si un site Web supportant WebAuthn aura besoin de « se rabattre » sur un mot de passe moins sûr si Windows Hello n'arrive pas à reconnaître l'utilisateur pour une raison quelconque, ou si le lecteur d'empreintes digitales échoue à son tour. Ces sites devront également informer les utilisateurs sur les avantages de WebAuthn et modifier leurs pages de connexion, etc. Ces sites n'obligeront probablement pas les utilisateurs ayant des PC plus anciens à acheter un token matériel, mais il y aura des décisions à prendre. Quoi qu'il en soit, l'annonce du W3C représente un important pas en avant. Le WebAuthn dispose d'une reconnaissance officielle. Aux sites Web d'en faire désormais une réalité.