Raven - Blog
25 mai 2026

Pourquoi ma nouvelle YubiKey ne pouvait plus déverrouiller KeePassXC

Posté le 25 mai 2026  •  minutes  • mots  • Autres langues:  English

J’utilise des Yubikeys depuis plusieurs années. Elles me servent comme second facteur d’authentification U2F, de générateur OTP ou encore pour renforcer l’accès à mon Keepass via un challenge HMAC-SHA1 .

C’est justement ce dernier usage qui m’a posé problème récemment.

En souhaitant migrer vers une YubiKey 5C afin de profiter de l’USB-C désormais présent sur la majorité de mes appareils, j’ai découvert quelque chose d’assez inquiétant : les outils récents de Yubico ne provisionnent pas le challenge-response HMAC-SHA1 exactement de la même manière que les anciens outils.

Pendant plusieurs années, j’ai configuré mes clés avec le logiciel Yubikey Personalization Tools . À l’époque, j’avais soigneusement sauvegardé mon secret HMAC afin de pouvoir reprogrammer une clé de secours si nécessaire.

Mais aujourd’hui, en reprogrammant une nouvelle YubiKey 5C avec exactement le même secret, impossible d’ouvrir ma base KeepassXC 🤔

Première réaction : grosse montée de stress…
Avais-je mal sauvegardé mon secret ? Pourtant ma stratégie avait déjà été testée et validée plusieurs fois ces dernières années avec des clés de secours parfaitement fonctionnelles !

Après quelques recherches, je me suis rendu compte que le problème ne venait pas du secret lui-même, mais de la manière dont le challenge-response avait été inscrit à l’époque sur la clé.

Les anciens outils de personnalisation de Yubico proposaient plusieurs options avancées (comme le mode « fixed 64-byte input ») qui influencent le comportement du challenge-response. Les outils récents comme ykman ne proposent pas de personnalisation et utilisent quant à eux une implémentation plus standardisée. Résultat : une clé programmée aujourd’hui avec ykman peut produire une réponse différente d’une clé programmée il y a plusieurs années avec YubiKey Personalization Tools , même avec le même secret HMAC.

J’ai trouvé plusieurs sources relatant ce problème dont cette issue Github qui m’a particulièrement aidé.

Le vrai problème ici, c’est donc la dépendance implicite, mal ou non documentée, au tooling utilisé lors de la configuration initiale de la clé. Si vous avez configuré vos YubiKeys il y a plusieurs années avec YubiKey Personalization Tools , alors le jour où vous devrez reprogrammer une nouvelle clé, vous aurez potentiellement besoin du même outil… qui est aujourd’hui en fin de vie et pourrait devenir difficile à faire fonctionner avec le temps.

D’ailleurs, Yubico a progressivement abandonné la plupart de ses outils graphiques historiques au profit de ykman et de ses outils en ligne de commande. Aujourd’hui, il ne reste essentiellement que :

Personnellement, si vous aviez utiliser Yubikey Personalization Tools, je vous recommande de :

  1. Supprimer votre challenge-response sur KeepassXC
  2. Reprogrammer vos clés avec le Yubikey Manager CLI
  3. Enregistrer à nouveau le challenge-response sur KeepassXC

⚠️ Attention : avant toute manipulation, assurez-vous de pouvoir ouvrir votre base KeepassXC autrement.
⚠️ Reconfigurer vos YubiKeys invalidera également l’accès aux anciennes versions de votre base protégées avec l’ancien challenge-response.

Si, comme moi, vous gérez des clés de secours depuis plusieurs années, cette migration vous évitera probablement quelques sueurs froides le jour où vous devrez remplacer ou reprogrammer une YubiKey.

Mise à jour du challenge HMAC-SHA1 avec KeepassXC

La procédure est simple, déverrouillez votre base de données KeepassXC, rendez-vous dans les options de sécurité KeepassXC :

keepassxc security settings

Vous pouvez ensuite supprimer ici le challenge (ou le modifier, mais j’ai préféré passer par une suppression d’abord) :

keepassxc security settings

Re-création du challenge-response sur le slot 2

J’ai pour cela utilisé la CLI de Yubico avec les options indiquées dans leur documentation .

1
2
3
ykman otp chalresp --touch 2 your_strong_random_key
Program a challenge-response credential in slot 2? [y/N]: y
challenge-response credential stored in slot 2.

Vous n’avez plus qu’à retourner dans votre base KeepassXC et récréer le challenge-response !


C’est un petit article mais si ça peut éviter à nombre d’entre vous un gros stress en pensant que vous aviez mal sauvegarder votre secret key de challenge alors j’en serais heureux 😊

Follow me

Subscribe to my RSS feed !