Comment installer Keepass (KeepassXC) et l'utiliser avec une Yubikey ?
ATTENTION, je ne suis pas sponsorisé pour cet article !
Keepass & Yubikey, cela ne fait pas bon ménage !
Il y a un article intéressant expliquant le tout avecKeePass multiplateforme en authentification forte avec une YubiKey.
MAIS également pourquoi ne pas utiliser Keepass.
À l'époque, j'avais suivi cet article, mais sans succès et plus d'actualité :Yubikey avec Keepass.
Il y a également un plugin existant, mais plus trop officiel :Keepass plugin.
Avec le site officielici.
Bon bref, passons aux choses sérieuses. Installation de KeepassXC, voici le siteofficiel.
Le paquet étant supporté par Debian, vous devez simplement taper la commande :
apt install keepassxc
Avant propos de l'utilisation de la YubiKey
Yubikey est un logiciel propriétaire, non opensource et américain, il ne doit pas protéger des gros secrets ...
Mais, il est validé par une partie de la communauté opensource de Keepass.
Il a également reçu un certificat CSPN de l'ANSSI, sur certaines des clés, qui sont plus renforcées et utilisées par des OIV ... :ANSSI 1 & 2
Le risque est présent et cela se discute.
KeepassXC est un fork de Keepass, il n'est pas validé par l'ANSSI, mais les risques sont moindres également.
Pourquoi pas FIDO ou TOTP ?
FIDO-U2F et TOTP nécessitent tous deux un composant dynamique (c'est-à-dire un compteur ou un horodatage) pour que l'authentification soit réussie. C'est parfait pour s'authentifier auprès d'un service en ligne, mais cela ne fonctionne pas pour une base de données hors ligne qui doit être cryptée avec une clé fixe. HMAC-SHA1, en revanche, peut être calculé à l'avance, car il ne nécessite qu'un secret fixe et aucun composant dynamique d'aucune sorte.
Yubikey Manager
Télécharger "Yubikey Manager" ici.
Prendre la version : Linux – AppImage Download . Cela permet de l'ouvrir directement en graphique, sans installer de paquet et compromettre sa machine.
Vérifier que la clé est bien détéctée via l'AppImage
HMAC-SHA1 Challenge-Response
Suivre la source de Yubicoici.
Le tout doit-être adapté à KeepassXC. Pour la suite, il y aura donc le suivi des articles suivants :ici.
Ouvrir la version : Linux – AppImage. Cliquer sur "Applications" & "OTP". Pour éviter cette erreur :

La partie "OTP" doit-être activée dans les 2 interfaces (USB (Slot 1) & NFC (Slot 2)). Je crois que les slots correspondent à ça.

Si cela ne fonctionne pas, regarderl'article.
J'ai donc suivi l'ajout manuel, du précédent article, le toutvia le site.
ACTION!="add|change", GOTO="yubico_end"
# Udev rules for letting the console user access the Yubikey USB
# device node, needed for challenge/response to work correctly.
# Yubico Yubikey II
ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010|0110|0111|0114|0116|0401|0403|0405|0407|0410", \
ENV{ID_SECURITY_TOKEN}="1"
LABEL="yubico_end"
Il est possible que cela n'aide pas forcément.
Ensuite, je choisis le Slot 2 (obligatoire), cliquer sur Configure :

Séléctionner : "Challenge-response" :

Il vous sera alors demandé de fournir une clé secrète. Vous pouvez soit créer votre propre clé, soit cliquer sur le bouton Générer si vous souhaitez utiliser une clé aléatoire (autant le faire, cela est plus simple, que de trouver soit même un bon format HEX.
Copier la clé dans un fichier texte. Je pourrais l'enlever après pour sécuriser le fichier et que celui-ci ne soit pas facilement trouvable.
Il peut même être intéressant de faire une sauvegarde de temps en temps de la base Keepass, juste avec une clé principale (mot de passe) et sans Yubikey, au cas où.
Vous devez enregistrer cette clé secrète si vous souhaitez configurer plusieurs Yubikeys pour qu'ils ouvrent la même base de données. Tous les Yubikeys doivent avoir la même réponse au défi programmée dans l'emplacement 2.
En bas à gauche se trouve l'option Require Touch. Si vous activez cette option, chaque fois que vous enregistrez ou ouvrez votre base de données, votre Yubikey vous demandera de le toucher avant de terminer l'action. Cette option est facultative. Je l'ai activé pour ma part
Si la base Keepass est déjà existante, aller dans "Base de données", cliquer sur les paramètres de la base.
Aller dans l'onglet "Sécurité'", cliquer sur "Ajouter une protection supplémentaire" et séléctionner "Ajouter question – réponse Yubikey".
Nous pouvons confirmer qu'elle est bien détéctée (même numéro de clé) :

Si vous avez sélectionné Require Touch lorsque vous avez attribué pour la première fois un Challenge Response à l'emplacement 2 dans le Yubikey Manager, vous serez invité à recevoir une notification chaque fois que vous apporterez une modification à votre base de données KeePassXC. Si vous ne touchez pas votre Yubikey dans un certain nombre de secondes, votre action sera interrompue et les modifications ne seront pas enregistrées. Exemple ci-dessous :/p>
Voilà, tout est terminé.
Fermer KeepassXC et tester la réouverture.
Ouverture KeepassXC avec Yubikey activée (en automatique)
À la première ouverture, ajouter la clé matérielle, elle se séléctionne en automatique :

Ajouter également le mot de passe et cliquer sur la yubikey pour valider si demandé.
Ajouter l'option pour ouvrir avec la yubikey et sans mot de passe. Cela est risqué, mais ma session ne se déverouille que sans mot de passe et je la vérouille toujours, donc ma clé sera inutile sans le déverouillage de ma session. Le pc est chiffré et c'est un Linux, cela peut-être assez compliqué, par rapport au confort à côté. Qui plus est, quelqu'un devrait venir chez moi récupérer le tout ... bref, ça devient une affaire tirée par les cheveux, autant se simplifier la vie.
Cliquer sur "Base de données" & séléctionner "Sécurité de la base de données". Ensuite, cliquer sur "Supprimer le mot de passe". Bien enregistrer le tout et tester. Cela est normalement fonctionnel. Il est par la suite, impossible de dévérouiller sans le clé. Aller à la section "Test de récupération" pour voir les options possibles.
Si après une réinstallation, il manque des paquest, résintaller ceux-la :
apt install libyubikey0 libyubikey-udev
Désactivation des interfaces
Voilà ce que cela devrait donner à la fin, après toute la configuration :

Dans le lot, garder au PIV, sinon la clé ne sera plus lu par "Yubikey Manager". Pour ma part, j'ai choisi de le désactiver, cela évite les lectures sur les PC, sans la ligne de commande.
Si vous souhaitez réactiver le tout, installer le paquet supporté par Debian :
apt install yubikey-manager
Plus d'informationsici.
Puis pour réactiver le tout, utiliser la commande :
ykman config usb --enable PIV --force
Il y a d'autres commandes, pour les autres interfaces, comme :
ykman config usb --enable OTP --force
ykman config usb --enable U2F --force
ykman config usb --enable FIDO2 --force
ykman config usb --enable OATH --force
ykman config usb --enable PIV --force
ykman config usb --enable OPENPGP --force
ykman config usb --enable HSMAUTH --force
Plus d'informationsici.
Bien désinstaller le paquet à la fin :
apt-get remove --purge yubikey-manager
Test de la récupération de la base sans clé
Rachat d'une clé et configurer le même OTP (à la suite d'une perte, par exemple)
Plus d'informationsici.
Méthode simple : obtenir un autre yk, le configurer de la même manière que le premier.
Compliqué : OTP et PIV exigent que vous établissiez des secrets au moment de la configuration. Vous pouvez sauvegarder cela, c'est-à-dire écrire la clé secrète défi-réponse sur un papier et mettre ce papier dans une boîte à clé. En supposant que Keepass puisse fonctionner avec OTP/PIV
Sauvegarder sans Yubikey de tps en tps
Même source que le dessus. Ce que je comptais faire : "Comme d'autres l'ont dit, vous avez besoin d'une YubiKey de rechange. Une autre option consiste à créer périodiquement une copie de sauvegarde de votre base de données KeePass qui ne nécessite pas votre YubiKey."
Test effectué
À effectuer sur une base copiée et non sur l'original, bien sûr.
J'ai reconnecté la clé au pc, j'ai reconfiguré l'OTP et resté la connexion à la base Keepass. Cela n'a pas fonctionné car j'ai changé le HMAC Secret :

J'ai refermé KeepassXC, reconfigurer l'OTP en collant le HMAC Secret que j'avais sauvegardé au début. Et retesté sur le logiciel et cela fonctionne.
Bien configurer en demandant un appui, sinon la base s'ouvre toute seule. Ce qui peut paraitre déconcertant au début.