KeeChallenge pour YubiKey, et pourquoi vous devriez l'éviter
KeeChallenge est un plugin qui ajoute la prise en charge des YubiKey à KeePass 2. Il présente toutefois un certain nombre de problèmes. Cet article aborde ces problèmes ainsi que des solutions alternatives.
Comment fonctionne KeeChallenge
KeeChallenge chiffre la base de données avec la clé secrète HMAC (S). Cette clé est stockée dans la YubiKey et sert à générer des réponses. De plus, KeeChallenge chiffre S avec une paire challenge-réponse précalculée, puis enregistre le secret chiffré et le challenge dans un fichier XML auxiliaire.
Lorsque vous déverrouillez la base de données :
- KeeChallenge charge le challenge C depuis le fichier XML et l'envoie à la YubiKey
- La YubiKey transforme le challenge (à l'aide du secret S stocké dans la clé) et renvoie une réponse R
- La réponse R sert à déchiffrer le secret Senc stocké dans le fichier XML.
- Le secret déchiffré S sert à déchiffrer la base de données. Point important : c'est le même secret que celui stocké dans la YubiKey.
- KeeChallenge régénère le fichier XML (il génère un nouveau challenge aléatoire C, calcule la nouvelle réponse R, chiffre S à l'aide de R', puis enregistre les nouveaux C et Senc dans le fichier XML)
Pour plus de détails, veuillez consulter le diagramme complet du processus.
Les problèmes de KeeChallenge
L'approche de KeeChallenge présente plusieurs problèmes de sécurité :
- La clé secrète ne change jamais, elle est seulement rechiffrée. Du point de vue de KeePass, KeeChallenge n'est pas différent d'un fichier clé statique qui fournit les mêmes octets à chaque fois.
- En conséquence, KeeChallenge est totalement vulnérable aux attaques par rejeu. N'importe quel fichier XML antérieur peut servir à déchiffrer la base de données. Autrement dit, randomiser le challenge et rechiffrer le secret ne sert à rien — c'est du théâtre sécuritaire.
- Le secret ne devrait jamais quitter la YubiKey — c'est tout l'intérêt d'une clé matérielle en écriture seule. KeeChallenge viole ce principe en transférant le secret sur l'ordinateur. En théorie, un attaquant peut copier S depuis la mémoire du processus, cloner la YubiKey du propriétaire à son insu et déchiffrer toute version future de la base de données (puisque le secret est statique).
De plus, il existe quelques problèmes connexes :
- Un développeur de Yubico a signalé un problème de sécurité en 2016. En 2024, le problème est toujours ouvert.
- KeeChallenge semble abandonné : aucune mise à jour significative depuis 2016.
- Le mainteneur ne répond pas aux problèmes signalés.
Une meilleure alternative
Une approche alternative a été introduite dans KeePassXC et est prise en charge par toutes les applications compatibles :
Dans KeePassXC, nous n'avons besoin d'aucune connaissance du secret HMAC. Nous utilisons le master seed de la base de données (une chaîne d'octets aléatoire qui fait partie de votre base) comme challenge, puis nous utilisons la réponse pour chiffrer la base. Ainsi, nous n'avons pas besoin de fichier supplémentaire et nous bénéficions en outre de l'avantage que la réponse requise change à chaque enregistrement de la base, ce qui se rapproche davantage d'une véritable authentification à deux facteurs.
Cette approche présente plusieurs avantages importants par rapport à KeeChallenge :
- La clé dérivée de la YubiKey est dynamique : elle change à chaque enregistrement de la base de données. (Avec KeeChallenge, la clé de chiffrement reste la même, ce qui revient à simuler un fichier clé statique.)
- Le secret HMAC ne quitte jamais la clé matérielle, la YubiKey ne peut donc pas être clonée à votre insu.
- Il n'y a pas de fichier XML auxiliaire, seulement la base de données elle-même.
- Plusieurs équipes de développement actives prennent en charge cette approche.
Pour les raisons décrites ci-dessus, KeePassium met en œuvre l'approche de KeePassXC. Il n'est pas prévu de prendre en charge les bases de données chiffrées avec KeeChallenge.
Si vous avez une base de données protégée par KeeChallenge, envisagez plutôt de passer à KeePassXC et KeePassium. Cette combinaison vous offrira une solution plus sûre, compatible et maintenue.