Connexion sécurisée : l'API WebAuthn presque finalisée, une première Yubikey FIDO2

Connexion sécurisée : l’API WebAuthn presque finalisée, une première Yubikey FIDO2

Mort aux mots de passe... ou pas ?

Avatar de l'auteur
David Legrand

Publié dans

Internet

16/04/2018 6 minutes
30

Connexion sécurisée : l'API WebAuthn presque finalisée, une première Yubikey FIDO2

L'utilisation des clés de sécurité et autres dispositifs biométriques pour se connecter simplement à des sites est une réalité qui se rapproche à grands pas. Le W3C et la FIDO Alliance arrivent au bout du travail sur l'API WebAuthn qui doit fortement simplifier la pratique dans ce domaine.

Il y a quelques jours, le W3C annonçait avec la FIDO Alliance que l'API Web Authentification (Webauthn) passait au statut de Candidate Recommendation (CR). Pour rappel, ces deux organismes ont la charge de la standardisation des pratiques du web pour l'un, et de dispositifs de connexion sécurisée comme l'U2F pour l'autre. 

Ce travail prend place au sein d'une œuvre plus large, FIDO2, où l'API WebAuthn est complétée par le protocole Client to Authenticator (CTAP). Ce dernier permet de lier un navigateur ou un système d'exploitation et un composant sécurisé. Celui-ci peut être aussi bien intégré à un smartphone qu'à une clé de sécurité ou une autre solution avec un dispositif biométrique.

Surtout, contrairement à l'U2F utilisé par Chrome et certains sites, ce standard fait l'objet d'un large consensus aux possibilités multiples. Firefox a ainsi travaillé à son support dans ses dernières versions, il en est de même pour Microsoft avec Edge et Windows 10, Opera, etc. Bref, on s'approche de plus en plus d'une solution exploitable assez largement.

Connexion sécurisée : d'U2F à WebAuthn

Face aux problématiques de sécurité qui gagnent en puissance ces dernières années, et la multiplication des fuites de bases de mot de passe, tout le monde cherche à se débarrasser de ce petit morceau de texte qui protège l'accès de milliards d'internautes. Mais voilà, trouver un compromis facile d'utilisation et sécurisé n'est pas chose facile.

Avec le temps, la double authentification s'est imposée comme une bonne solution. Elle permet de combiner trois éléments afin d'assurer la connexion : un qui nous désigne publiquement (mail, pseudo), un qui est secret (mot de passe) et un dernier qui est calculé pour une durée précise par un appareil que l'on possède.

Ainsi, les applications de type Authenticator et autres envois de code par SMS se sont multipliés, se reposant le plus souvent sur le smartphone. Mais cela pose encore parfois quelques problèmes de sécurité ou d'ordre pratique : que faire si l'appareil est volé, cassé ou plus bêtement si le code est visible sur l'écran verrouillé ?

La FIDO Alliance est née en 2012 de la volonté de pousser de nouveaux standards. PayPal, Lenovo, Nok Nok Labs, Validity Sensors, Infineon et Agnitio sont ses membres fondateurs. L'idée était de permettre une connexion sans mot de passe via différents dispositifs, le chiffrement asymétrique et un élément sécurisé pour le stockage des clés.

L'UAF (Universal Authentication Framework) a rapidement été rejoint par une solution qui a rencontré un plus grand succès : l'U2F (Universal Second Factor). Poussé par Yubico, NXP et Google qui travaillaient ensemble sur un tel projet, il a trouvé sa place au sein de la FIDO Alliance.

Google a ainsi reconnu très vite cette solution dans le cadre de la connexion à plusieurs facteurs sur ses sites. D'autres ont suivi le mouvement comme Dropbox, Facebook ou GitHub. Cette solution s'est propagée d'autant plus vite que l'on trouve des clés compatibles pour une dizaine d'euros seulement, notamment les Yubikey.

FIDO2 W3C

Mais avec le temps, de nombreuses limites ont été rencontrées. Tout d'abord, Chrome est toujours le seul à exploiter l'U2F. Ensuite, on le retrouve rarement dans un environnement mobile, malgré l'existence de clés Bluetooth/NFC. 

Yubico et la FIDO Alliance se sont rapprochés de Microsoft pour travailler à une solution, connue sous le nom de FIDO2. Il s'agit cette fois d'un standard permettant à la fois la connexion sans mot de passe ou à plusieurs facteurs, gérable via les appareils mobiles, les navigateurs et logiciels de nombreux partenaires, etc. 

Pour cela, le groupement a travaillé avec le W3C pour standardiser l'usage des API Web de FIDO2, ce qui a pris forme à travers WebAuthn. Le groupe de travail compte une trentaine de membres issus d'Airbnb, Alibaba, Deutsche Telekom, Google, IBM, Intel, Microsoft, Mozilla, le NIST, Opera, Orange, PayPal, Qualcomm, Softbank, Tencent ou encore Yubico.

Bien qu'Apple fasse partie de la liste, iOS, macOS et Safari restent absents des différentes annonces, mais cela ne saurait durer. On se rappellera que l'implémentation du NFC des iPhone empêche par exemple l'utilisation d'une clé U2F. Intel a de son côté déjà fait des annonces allant dans le sens d'une intégration native il y a quelques mois. 

La FIDO Alliance précise que FIDO2 génère une paire de clés spécifique à chaque service, ces derniers ne stockant que la clé publique. Les appareils compatibles peuvent être utilisés pour une connexion directe, avec ou sans solution complémentaire comme un code PIN, une reconnaissance biométrique, etc. Ils peuvent aussi simplement faire office de solution de connexion à plusieurs facteurs.

Dans les deux cas, un premier enregistrement est nécessaire. Chaque appareil peut être révoqué à tout moment.FIDO2

Une première Yubikey FIDO2

Le groupement promet que la nouvelle version de son standard complète l'UAF et l'U2F et que « les utilisateurs qui disposent d'un appareil FIDO, comme une clé de sécurité U2F, pourront continuer à les utiliser avec les services qui supportent WebAuthn ». Une rétrocompatibilité rassurante. 

Cela n'empêche pas Yubico d'annoncer une première clé nativement compatible avec FIDO2 et l'U2F, marquée d'un « 2 ». Il s'agit du modèle de base, proposé aux alentours de 20 euros. Les précédents sont indiqués comme incompatibles pour le moment. Interrogée sur le sujet, Yubico nous a répondu que la nouvelle clé était la seule à supporter WebAuthn et CTAP.

Elle est donc utilisable dans un scénario de connexion ne nécessitant pas de mot de passe, contrairement aux modèles antérieurs. Yubico nous précise qu'il en sera de même pour les autres clés de sa gamme, mais n'avait pour le moment pas de date à nous donner pour la sortie d'une éventuelle Yubikey 5. 

La société en profite pour annoncer un nouveau programme consacré aux développeurs, avec une documentation spécifique. Une manière de fêter les dix ans de sa première clé. Ce, alors que Yubico compte désormais des millions de clients dans 160 pays et propose des solutions open source côté serveurs, en plus de permettre l'utilisation de différents standard au sein de ses produits comme OTP, Smart Card (PIV), OpenPGP ou encore OATH (HOTP/TOTP).

Écrit par David Legrand

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Connexion sécurisée : d'U2F à WebAuthn

Une première Yubikey FIDO2

Fermer

Commentaires (30)


Excellente nouvelle, c’est un dispositif qui devient vraiment normalisé et porté par tous. Merci pour l’info David, j’étais passé à coté de la sortie de cette RC.



A moitié HS : de la double authentification pour se connecter à son serveur en SSH

https://linode.com/docs/security/authentication/use-one-time-passwords-for-two-f…



ça peut peut être intéresser des admin-sys en mode guru <img data-src=" />


C’est ce que j’ai fait pour mon serveur ssh également mais j’ai gardé la clef d’authenticator en lieu sûr pour le cas où mon téléphone serai volé.


Je serais preneur d’une solution similaire pour la connection à un serveur MariaDB en ssh.


Merci pour le lien, ayant énormément de bidule sous nunux (Raspberry, VM sur mon Freenas, toussa toussa).



Par contre, faut que je me penche sur comment “backup” la yubikey en cas de perte. Me semble que quand tu configs, tu peux exporter le bousin, mais tu le réimporte comment après ? Tu as un bouton pour ? Je préfère un token “physique” qu’un Google Auth et compagnie.








wanou a écrit :



Je serais preneur d’une solution similaire pour la connection à un serveur MariaDB en ssh.







Que ton serveur fasse tourner MariaDB ou autre chose, ça n’a aucune incidence si tu t’y connectes en ssh… tu peux utiliser le lien de boogieplayer









Kazer2.0 a écrit :



Merci pour le lien, ayant énormément de bidule sous nunux (Raspberry, VM sur mon Freenas, toussa toussa).



Par contre, faut que je me penche sur comment “backup” la yubikey en cas de perte. Me semble que quand tu configs, tu peux exporter le bousin, mais tu le réimporte comment après ? Tu as un bouton pour ?







Il me semble que le seul moyen d’avoir un « backup » est d’utiliser une 2ème clé (c’est plus un spare qu’un backup)

Ça me semble étrange qu’on puisse cloner une yubikey …



Au final, ca ferait comme une clé pour ouvrir la porte d’entrée de son logement ?

Il ne faut surtout pas se la faire voler quoi. Mais elle est plus souvent exposé (la clé de son logement reste souvent au fond de la poche toute la journée sauf pour entrer/sortir de chez soit)








KP2 a écrit :



Que ton serveur fasse tourner MariaDB ou autre chose, ça n’a aucune incidence si tu t’y connectes en ssh… tu peux utiliser le lien de boogieplayer





Le souci est que je n’arrive pas à sécuriser l’accès à mon serveur Mariadb alors que c’est sencé pouvoir le faire nativement avec ssl. L’idée est que je veux y accéder depuis un script en perl ou en python depuis une autre machine et via Internet.



Disons que le jour où on peut révoquer la serrure d’une porte d’un clic… <img data-src=" /> Après certains préféreront rester sur de la 2FA plutôt qu’une authentification forte uniquement avec la clé (mais bon quand tu es habitué à l’auth par clé privée pour SSH…). Puis ce sera toujours plus propre qu’une authentification avec un simple cookie <img data-src=" />








Kazer2.0 a écrit :



Merci pour le lien, ayant énormément de bidule sous nunux (Raspberry, VM sur mon Freenas, toussa toussa).



Par contre, faut que je me penche sur comment “backup” la yubikey en cas de perte. Me semble que quand tu configs, tu peux exporter le bousin, mais tu le réimporte comment après ? Tu as un bouton pour ? Je préfère un token “physique” qu’un Google Auth et compagnie.







Yubikey t’explique la méthodologie en cas de perte =&gt;

https://support.yubico.com/support/solutions/articles/15000006444-losing-your-yu…



Le mieux c’est de ne pas la perdre <img data-src=" />



C’est pour ça que je préfère un token de 20 secondes, même si tu perds ton device, tu peux le faire depuis un autre sans perte. Sauf à ne pas se souvenir de son passe phrase de protection du générateur de token <img data-src=" />









David_L a écrit :



Puis ce sera toujours plus propre qu’une authentification avec un simple cookie <img data-src=" />







T’es con j’ai failli recracher mon coca sur mon clavier mécanique en pleine compile d’un truc trouvé sur github <img data-src=" />



Fun fact : le fonctionnement de ce genre de devices est similaire à celui d’une carte à puce, et c’est putain de classe. J’espère que ça va se développer vite et surtout être supporté partout. Content de voir Apple dans la liste, je serais pas étonné par une implémentation dans l’Apple Watch par exemple.


Je ne comprend pas comment ca marche, ca veut dire qu’a terme on pourra se loguer sur des sites avec une authentification hardware par emprunte digital ? Je trouve ca génial si c’est ca.


Quelqu’un pourrait donner un site pas trop confidentiel (messagerie, console web, banque…) qui exploite déjà ce genre de mécanisme avec des clés grand public ?


Il y a-t-il des gens ici qui pourraient me donner un retour d’expérience sur KeepassXC avec une clé YubiKey, et l’intégration directe avec le plugin qui va bien sous Firefox ? Aujourd’hui j’utilise Keepass 2.x et KeePassHttp-Connctor en plugin pour lier Firefox, et le comportement global me convient très bien. Seulement j’en ai parfois marre de taper 50 fois par jour mon mot de passe principal à rallonge. Du coup la Yubi m’intéresse.


Oui c’est l’idée








barthous a écrit :



Quelqu’un pourrait donner un site pas trop confidentiel (messagerie, console web, banque…) qui exploite déjà ce genre de mécanisme avec des clés grand public ?







T’as déja des banques qui permettent de se connecter avec l’emprunte mais sur smartphone uniquement.

Par exemple boursorama.

Inutile de préciser que c’est très pratique.









Kazer2.0 a écrit :



Merci pour le lien, ayant énormément de bidule sous nunux (Raspberry, VM sur mon Freenas, toussa toussa).



Par contre, faut que je me penche sur comment “backup” la yubikey en cas de perte. Me semble que quand tu configs, tu peux exporter le bousin, mais tu le réimporte comment après ? Tu as un bouton pour ? Je préfère un token “physique” qu’un Google Auth et compagnie.





C’est selon ton utilisation, à voir sur le site constructeur. Dans le cas de gpg, avec une yubikey c’est relativement simple (il suffit de copier le répertoire temporaire utilisé par gpg pour générer les clés avant export, sur une clé usb dédié et cryptée). Il existe d’autres méthodes, comme copier la clé à la main, ce qui s’avère moins pratique.



La smartcard est presque en plug n play sur une base debian, il suffit d’installer les deux trois paquets manquants.&nbsp;



Je&nbsp; ne comprends pas l’intérêt pas rapport à un token.


Merci <img data-src=" />








wanou a écrit :



Le souci est que je n’arrive pas à sécuriser l’accès à mon serveur Mariadb alors que c’est sencé pouvoir le faire nativement avec ssl. L’idée est que je veux y accéder depuis un script en perl ou en python depuis une autre machine et via Internet.







tu peux activer les connexions chiffrées + certificat avec mariadb :

https://www.cyberciti.biz/faq/how-to-setup-mariadb-ssl-and-secure-connections-fr…



sinon, tu peux monter un tunnel ssh :

https://linode.com/docs/databases/mysql/create-an-ssh-tunnel-for-mysql-remote-ac…



sinon, tu peux monter un tunnel vpn avec openvpn mais c’est plus complexe et plus chiant qu’un tunnel ssh.



Si je comprends bien, je me met sur un PC je branche la clé et automatiquement le navigateur grâce à webauth prouve au service en ligne que c’est bien moi en vérifiant mon identité dans la clé.



C’est ça ?



Si c’est ça, il faut bien faire attention de toujours avoir sa clé sur soi. Par contre, si les mesures classiques de sécurisation par mot de passe subsiste (en cas de perte de clé par exemple) le niveau de sécurité ne bouge pas pas rapport à la situation actuelle. Non ?


Que vais je faire de mes anciennes clés Yubico du coup ?… J’ai une 4 et une Neo et c’est bien dommage qu’elles n’intègrent par la norme Fido2. Ces clés ne sont pas reprogrammables ?


Si, lorsque je personnalise ma Yubikey, je garde les infos (clefs privés et tout le bousin, j’ai pas sous les yeux là). En remettant exactement les mêmes params sur une autre Yubikey, ça devrait être bon logiquement ?


Yep, c’est le principe ;)


Par contre un autre truc, j’avais essayer de config ma yubikey sous SSH, mais ça ne demandais plus la yubikey une fois loggué lors d’un passage d’user à un autre. Genre je me connecte en SSH avec + password + yubikey, puis je SU sur un autre user et ça demande plus la yubikey (alors que j’avais configuré la demande de la yubikey pour les deux utilisateurs).



J’ai abandonné du coup pour l’instant, mais je trouve dommage de pas utiliser ma yubi <img data-src=" />


Me semble que la Yubiley repose aussi sur de la sécurité par “l’obscurité” (tu n’es normalement pas en mesure si tu trouves une Yubikey dans la rue de savoir à quel login et service elle est associée).








Kazer2.0 a écrit :



Par contre un autre truc, j’avais essayer de config ma yubikey sous SSH, mais ça ne demandais plus la yubikey une fois loggué lors d’un passage d’user à un autre. Genre je me connecte en SSH avec + password + yubikey, puis je SU sur un autre user et ça demande plus la yubikey (alors que j’avais configuré la demande de la yubikey pour les deux utilisateurs).



J’ai abandonné du coup pour l’instant, mais je trouve dommage de pas utiliser ma yubi <img data-src=" />







Ah ouais, j’avais pas compris. Yubikey explique comment faire ici :

https://developers.yubico.com/PGP/SSH_authentication/









Kazer2.0 a écrit :



Me semble que la Yubiley repose aussi sur de la sécurité par “l’obscurité” (tu n’es normalement pas en mesure si tu trouves une Yubikey dans la rue de savoir à quel login et service elle est associée).





Ah bah oui je suis con… c’est le mot de passe qui est transformé en dur c’est pas un système SSO <img data-src=" />



Pourquoi pas.

Mais bon si c’est toujours plus opensource voirhttps://www.yubico.com/2016/05/secure-hardware-vs-open-source/

c’est une dépendance de plus et risquer d’etre dans le cas de SLV17 ou à chaque évolution il faut réinvestir, c’est dommage.