KeePass : comment protéger l'accès avec une Yubikey et le plugin KeeChallenge

Tu plug ou tu plug pas ? 38
En bref
image dediée
Sécurité
Par
le mercredi 15 février 2017 à 09:30
David Legrand

KeePass ne propose pas nativement de dispositif de double authentification exploitant le standard U2F. Mais avec des plugins comme KeeChallenge, il est possible de renforcer la connexion en exigeant la présence d'une clef de sécurité.

Depuis quelques temps maintenant, les gestionnaires de mot de passe tels que Dashlane ou LastPass permettent de protéger l'accès à leur client avec une clef de sécurité. Pour cela, ils se reposent sur le standard de connexion à deux facteurs U2F de la FIDO Alliance. Pour faire simple, en plus de votre identifiant et de votre mot de passe, il faut aussi disposer d'une clef USB compatible U2F et la connecter à l'ordinateur.

KeePass compatible avec les Yubikey via KeeChallenge

Yubico propose de tels produits avec ses Yubikey. Elles permettent de faire office de smart cardde stocker une clef via GPG, ou encore de renforcer la sécurité de vos comptes DropboxGitHubGoogle, etc. Elles peuvent aussi déverrouiller une session macOS ou Windows et générer des mots de passe à la demande (OTP, OATH-HOTP/TOTP).

Ainsi, elles peuvent fonctionner avec de nombreux services, dont KeePass. Le célèbre gestionnaire de mots de passe open source propose déjà une connexion à plusieurs facteurs, mais n'intègre pas encore nativement le support de l'U2F ou la gestion de clefs de sécurité. Il dispose néanmoins de nombreux plugins qui pourront lui adjoindre des fonctionnalités supplémentaires.

C'est notamment le cas de KeeChallenge, qui autorise l'utilisation d'une Yubikey comme élément matériel, assurant la sécurité de votre base de mots de passe (via son mode HMAC-SHA1, voir plus bas). Open source, son code est disponible sur GitHub sous licence GPL v3.

Les modèles compatibles avec ce plugin sont les NeoNeo-n4 et Neo 4. Ces deux derniers se distinguent par une certification FIPS 140 et le support de RSA 4096 / ECC p384, leur permettant d'être supportés par Docker, ce qui n'est pas le cas des modèles inférieurs.

Préparation et installation du plugin

Passons à la pratique et la préparation de la machine. Outre une Yubikey compatible, vous devrez disposer d'une version à jour de KeePass 2.x, du plugin KeeChallenge et de l'outil de gestion de Yubico pour votre OS. Ceux-ci peuvent être téléchargés aux adresses suivantes :

Installez ensuite KeePass et YubiKey Personalization Tool. Le plugin se récupère sous forme d'une archive ZIP qui contient un répertoire. Ce dernier sera à placer dans celui dédié aux plugins de KeePass. Dans notre cas :

C:\Program Files (x86)\KeePass Password Safe 2\Plugins

Une fois le dossier copié, il n'y a rien d'autre à faire. Il faudra néanmoins vérifier que tout s'est bien passé en se rendant dans le menu Tools de KeePass puis dans Plugins

Créez ensuite une nouvelle base de données de mots de passe, ou ouvrez-en une existante. Dans ce second cas, il faudra se rendre dans le menu File, puis cliquer sur Change Master Key. Une fenêtre s'affichera alors pour entrer les différents élements de sécurité. Par défaut, ceux-ci peuvent être de trois types : un mot de passe maître, une clef ou votre identifiant Windows. Pour utiliser la Yubikey il faut cocher Key file / provider puis Yubikey Challenge Response.

Il est recommandé de ne pas utiliser cette seule méthode pour se connecter, mais plutôt d'en faire une solution complémentaire d'un mot de passe maître fort. Dans le cas contraire, n'importe qui ayant accès à votre Yubikey pourra ouvrir votre base de mots de passe (évitez donc aussi de le générer en utilisant son mode statique).

Yubikey KeePass HMAC-SHA1Yubikey KeePass HMAC-SHA1

Une fois validé, il faudra entrer une clef secrète. C'est l'application YubiKey Personalization Tool qui permet de l'obtenir. Rendez-vous dans l'onglet Challenge-response puis cliquez sur HMAC-SHA1. Il faut alors effectuer les opérations suivantes :

  • Sélectionnez le Configuration slot 2
  • Cochez la case Require user input
  • Sélectionnez le mode Fixed 64 byte input

Notez qu'il est possible de passer par le slot 1 de la Yubikey. Pour cela il faudra modifier paramètre du plugin dans KeePass via l'onglet ToolsKeeChallenge Settings.

Cliquez sur Generate plusieurs fois, sélectionnez et copiez le résultat. Pensez à sauvegarder cette clef secrète de manière à pouvoir la récupérer en cas de problème. Attention, elle ne doit pas être accessible à tous, n'hésitez donc pas à la protéger par un mot de passe avec un outil tel que 7-Zip ou VeraCrypt par exemple.

Yubikey KeePass HMAC-SHA1

Cliquez sur Write Configuration, annulez l'enregistrement du fichier log, c'est terminé. Fermez l'application et collez la clef privée dans la fenêtre KeePass. Validez. Appuyez alors sur le bouton de la Yubikey. Si tout s'est bien passé, un message vous en informera.

Une fois la base de données fermée, la Yubikey devra être connectée à la machine pour l'ouvrir. Un tel dispositif a néanmoins des limites puisque s'il est parfaitement adapté à un usage personnel depuis un ordinateur, il ne permettra pas de proposer un accès depuis un appareil mobile par exemple.

Que faire en cas de problème ?

Et si la clef était cassée ou qu'elle n'était pas temporairement à votre disposition ? Lors de l'ouverture de votre base de données, si aucune clef n'est connectée à la machine, le plugin propose d'utiliser un Recovery mode. Il consiste simplement à taper la clef secrète afin de pouvoir accéder aux données. 

Cette clef doit donc être sauvegardée préciseusement comme nous l'expliquions précédemment. Elle doit aussi être protégée afin de ne pas pouvoir être trouvée par le premier venu.

Yubikey KeePass HMAC-SHA1

HMAC-SHA1, AES 256 : KeeChallenge, comment ça marche ?

Pour fonctionner de pair avec la Yubikey, le plugin KeeChallenge utilise une identification de type « défi-réponse » HMAC-SHA1. Pour faire simple, l'application et la clef partagent une clef secrète et vont tenter de communiquer ensemble. Un défi va être envoyée à la Yubikey par l'application, celle-ci fournira alors une réponse. Si la valeur correspond à celle attendue et à la clef privée, la connexion est possible. Sinon, c'est qu'il y a un problème.

Dans ce contexte, un HMAC (Hash-based message authentication code) correspond à ce qui permet de s'assurer à la fois de l'intégrité et de l'authenticité des messages transmis. Pour cela, il combine la clef priveé et la fonction de hash SHA-1. 

Dans sa documentation, le développeur de KeeChallenge indique que « la clef secrète est utilisée pour chiffrer la base de données. Afin d'éviter d'avoir à stocker cette clef, on génère une paire défi-réponse en amont. Le défi est stocké et sera utilisé lors de la prochaine connexion alors que la réponse est utilisée comme clef AES256 pour chiffrer la clef secrète. Toutes les données utiles sont stockées dans un fichier XML situé dans le même répertoire que votre base de données ».

Et effectivement, on trouve bien un fichier XML composé de la manière suivante : 

<?xml version="1.0" encoding="utf-8"?>
<data>
<aes>
<encrypted>+GFzy7wTM7uGrnjGLYMxNdmVL5NmCXaJ7M=</encrypted>
<iv>trMcqf7MDK7bqYr1iSAg==</iv>
</aes>
<challenge>Otci/No/vbaKyOMHeL5i2mpqhSE5/vZ22u/kJXqTdlFxh/PEuHh1w2oU3h/Zg==</challenge>
<verification>EOW9Wdl08CG/j5F4EsiiYGK5c0PXk75NCKOM=</verification>
<lt64>False</lt64>
</data>

Ainsi, la clef privée est uniquement stockée dans la Yubikey, dont elle ne peut pas être extraite. De cette manière, un attaquant ne peut pas la retrouver par ce biais, ou même en accédant à la machine. Mais ces deux éléments combinés permettent une connexion en toute sécurité.

Retrouvez notre dossier Chiffrement, clefs de sécurité et cryptobidules :


chargement
Chargement des commentaires...