pass comme gestionnaire de mot de passe

Cela fait maintenant plusieurs années que j’utilise un gestionnaire de mot de passe pour retenir à ma place les informations d’accès aux différents services que j’utilise. J’avais jusqu’à présent choisi d’utiliser Keepass, en particulier pour ces fonctions de synchroniser via WebDAV et l’existence de ses nombreuses variantes qui permettent une utilisation sur GNU/Linux, Windows, Mac et Android sans trop de difficultés. Très récemment, j’ai décidé de changer de gestionnaire et de tester pass.

Quelques mots sur pass. Le programme de base prend la forme d’une simple ligne de commande. Chaque entrée consiste en un fichier dont la première ligne contient le mot de passe. On peut ensuite stocker diverses informations sur les lignes suivantes, comme url, username, clés d’API, etc. Tous les fichiers sont chiffrés par clé gpg. Lorsqu’on accède à l’un des fichiers de mot de passe, seul ce fichier sera déchiffré et non l’ensemble de la base comme c’est en général le cas avec les autres gestionnaires. La synchronisation est assurée par git, ce qui permet de bénéficier de l’historique du dépôt qui constituera notre base de référence de mot de passe.

Passons à l’utilisation. Pour ma part, j’ai cloné un nouveau dépôt git puis procédé à l’initialisation de pass :

pass init <gpg-id or email>

J’en profite également pour configurer l’emplacement de mon dossier de mot de passe, étant donné que j’ai fait le choix de ne pas le stocker dans le dossier par défaut ~/.password-store. Il n’est pas impossible que je revienne sur ce choix, mais pour l’instant, je préfère avoir le dossier dans le même répertoire que mes autres dépôts git.

export PASSWORD_STORE_DIR=/path/to/store

À ce stade, je dispose donc d’un gestionnaire configuré, initialisé et vide, et d’un fichier Keepass contenant plus d’une centaine d’entrées. N’étant pas particulièrement motivé pour réaliser la migration à la main pendant plusieurs heures (mais disposé à le faire en l’absence d’alternative), je me suis donc mis en quête d’une solution d’importation. La solution : pass-import, dont voici les instructions d’installation.

git clone https://github.com/roddhjav/pass-import/ 
cd pass-import 
make
sudo make install

Avant de pouvoir réaliser l’import, il faut commencer par exporter les données. Après quelques essais infructueux, je choisis l’export au format KeePass XML (2.x). Une fois l’export effectué, je passe à l’étape d’import (Les fichiers attachés et les champs string ne font pas partis de l’export):

pass import keepass /path/to/export/file.xml

L’import s’effectue sans erreur. Avant d’aller plus loin, je supprime le fichier d’export. Ou plutôt, je réécris des données aléatoires à la place du fichier puis je le supprime :

shred -u export4pass.xml

Je commence par remodeler l’arborescence de répertoire créée par l’import et j’en profite également pour renommer certaines entrées ou dossiers, en particulier remplacer les espaces par des – ou des _ afin de faciliter la sélection et remplacement de certaines majuscules par des minuscules. Après quelques vérifications, je constate néanmoins que tous les fichiers attachés à des entrées keepass n’ont pas été importés (ni exporté en fait). Situation similaire du côté des champs string supplémentaire d’une entrée keepass. S’ensuit donc une série d’opérations manuelles afin de renseigner ces données dans la nouvelle base.

Pour ce qui est de la gestion des fichiers, deux possibiltés. Soit le contenu du fichier peut être intégré directement au fichier du mot de passe, je pense notamment aux fichiers de recovery codes des sites ayant une authentification double facteurs activée. Deuxième possibilité, chiffrer directement le fichier avec la clé utilisée par pass. Cette deuxième option nécessite un peu de configuration pour gagner en simplicité d’utilisation. Dans ~/.gnupg/gpg.conf, je commence donc par me désigner comme destinataire par défaut.

# Use the default key as the default recipient                       default-recipient-self

Je peux ensuite passer au chiffrement de mon fichier avec un simple (on n’oubliera pas de supprimer le fichier source de façon sécurisée avec shred une fois le fichier chiffré généré):

gpg -e test.file

Le déchiffrement s’effectue quant à lui de la manière suivante :

gpg test.file.gpg

Pour ce qui est de l’utilisation, je liste ici quelques-unes des commandes disponibles.

# Création d'une nouvelle entrée
pass insert github.com/username
# Génération d'un mot de passe de longueur n
pass generate github.com/username n
# Copier le mot de passe
pass -c github.com/username
# Génération sans utiliser de symbole -n
pass generate -n -c github.com/username 16
# Afficher l'entrée
pass github.com/username
# Affichage de l'arborescence complète
pass
# Lister le contenu d'un répertoire
pass ls Email/
# Recherche dans le nom des fichiers
pass find ovh
pass search gandi
# Recherche dans le contenu des fichiers
pass grep api-keys
# Suppression
pass rm github.com/username
# Synchronisation
pass git pull
pass git push

En ce qui concerne l’utilisation sur Android, j’utilise l’application nommée Android-Password-Store, avec OpenKeyChain et NFC pour l’accès à la clé PGP stockée sur ma Yubikey.

Du côté du navigateur, Firefox dans mon cas, et pour disposer d’un accès direct à pass et de saisie automatique des champs, je me suis tourné vers browserpass, qui nécessite l’installation de deux composants, l’un dans le navigateur, à savoir l’extension, l’autre comme composant natif du système. Pour le composant natif, il ne faut pas oublier de le configurer (à adapter en fonction du navigateur):

make hosts-firefox-user

Enfin, dernière chose. Étant donné que j’ai changé le répertoire de ma base de mot de passe, je crée un lien symbolique entre l’emplacement par défaut et mon répertoire car le composant natif ne reconnaît pas ma configuration de PASSWORD_STORE_DIR.

ln -s /home/username/path/to/my-password-store /home/username/.password-store

Terminons cet article par un bilan rapide. Le changement de Keepass vers pass s’effectue plutôt bien, mais nécessite de prendre de nouvelles habitudes et d’apprendre à se servir de ce nouvel outil. Je pense avoir gagné un peu en sécurité, au prix de la contrainte de disposer de ma Yubikey pour accéder aux mots de passe. J’étudie d’ailleurs un moyen de recréer rapidement une clé de sécurité temporaire contenant ma clé gpg à partir des sauvegardes chiffrées, en cas de perte ou de détérioration de ma Yubikey. J’ai désormais un accès très pratique à mes mots de passe grâce à l’intégration de passmenu sur mon système GNU/Linux. En revanche,accéder à un mot de passe sur un nouveau système requiert de passer par plusieurs étapes d’installation et de configuration des outils nécessaires, en particulier du côté de gpg. Il me reste d’ailleurs encore à procéder à un test de configuration en environnement Windows.

En résumé, un peu de travail de configuration à la mise en place de ce nouveau gestionnaire, pour un gain de sécurité et une amélioration de l’intégration au système. Bref, satisfait de ce nouvel outil !

Victor

Auteur : Victor

Libriste convaincu, j’administre ce serveur et son domaine et privilégie l'utilisation de logiciels libres au quotidien. Je construis progressivement mon "cloud" personnel service après service pour conserver un certain contrôle sur mes données numériques.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *