Yubikey, c’est une petite clé USB un peu spéciale. Une petite pastille tactile sur le dessus permet de générer un mot de passe à usage unique, qu’un service distant saura utiliser pour vous identifier ou non. C’est pratique, c’est sûr (si c’est bien utilisé), et c’est assez geek pour qu’on en parle.
Sommaire :
Le problème
Les mots de passe se multiplient comme des petits pains, surtout chez les geeks. Comme il est impensable de tous les noter dans un petit calepin ou d’utiliser le même partout (on est d’accord ?), il faut sans cesse en inventer de nouveaux et les retenir.
Par ailleurs, si on veut être un peu sérieux, il faut se méfier du terminal que l’on utilise, surtout s’il appartient à un tiers. Qui vous dit que le vilain admin du cyber-café n’a pas un vilain keylogger sur toutes ses machines ? Plus fourbe, qui vous dit qu’il n’y a pas un vilain keylogger malware installé sur le laptop de votre [maman|grand-père|hamster] que vous utilisez en ce moment, “pour dépanner” ? Sans parler d’attaques type MitM et autres joyeusetés …
Arrive la Yubikey. Sans être une solution miracle à tous les problèmes de mot de passe, c’est une façon élégante de se simplifier la vie.
La Yubikey, en bref
Plutôt que de vous pointer vers le manuel de la Yubikey, je vais en synthétiser quelques passage pour commencer.
La Yubikey fonctionne sur n’importe quel matériel équipé d’un port USB hôte et tournant sous à peu près n’importe quel système d’exploitation supportant un clavier USB (sous Linux, le support HID suffit) : en effet, elle fonctionne en émulant des frappes clavier, sans avoir recours à un driver particulier.
À chaque utilisation, la clé génère une chaîne de caractères unique (appelée OTP pour One Time Password), basée entre autres choses sur une identité propre à la clé, un compteur non-volatile, une horloge et un nombre aléatoire. Cette chaîne est ensuite chiffrée à l’aide d’une clé AES de 128 bits et envoyée à l’hôte.
Exemples :
fifjgjgkhchbirdrfdnlnghhfgrtnnlgedjlftrbdeut
fifjgjgkhchbgefdkbbditfjrlniggevfhenublfnrev
fifjgjgkhchblechfkfhiiuunbtnvgihdfiktncvlhck
(on constate que les 12 premiers caractères sont toujours les mêmes : il s’agit là de l’identité de la Yubikey)
De l’autre côté, elle sera déchiffrée à l’aide de la même clé AES. De par l’usage d’un chiffrement symétrique, la sûreté de l’ensemble repose sur une bonne protection de la clé AES. Celle-ci est stockée dans une mémoire non volatile intégrée au microcontrolleur et n’est pas accessible, la configuration de la Yubikey se faisant en écriture seule. Pour récupérer la clé, il faudrait éventuellement sonder physiquement la puce ou analyser son comportement, ce qui implique de casser physiquement la Yubikey et de disposer de matériel de pointe. En d’autres termes, si ce n’est pas complètement adapté aux agents secrets, c’est probablement suffisamment sûr pour le geek moyen que je suis.
Le résultat est enfin vérifié par un serveur de validation : soit celui de Yubico, soit un serveur fait maison. La validation tient compte de plusieurs critères, au-delà de la simple identité. Notamment, la valeur du compteur est examinée : si elle est inférieure ou égale à la dernière valeur reçue, l’OTP est rejeté comme étant un “rejeu” d’un OTP plus ancien.
L’ensemble se résume au schéma suivant (cliquer pour agrandir) :

Une application doit donc être configurée (ou modifiée) afin d’accepter un login Yubikey. Comme nous utilisons du logiciel libre, ça se fait en général assez facilement. Nous allons donc voir comment utiliser la Yubikey sous Linux de façon basique, puis nous verrons la configuration d’une clé pour une utilisation “indépendante” avec serveur de validation maison.
Ajouter un commentaire