pass : un gestionnaire de mots de passe simple et efficace

 x0r   0
linux pass gpg password sécurité

De nos jours, l’explosion du nombre de comptes que l’on doit créer et maintenir auprès de services en ligne constitue en effet autant de mots de passe qu’il faut inventer et retenir. Entre le compte mail, souvent plusieurs comptes chez des sites marchands en ligne, les démarches administratives (comme les impôts ou le compte personnel de formation, dont j’avais cassé le site Web dans le passé) voire les mots de passe dont on peut être amené à se souvenir au travail, on finit rapidement à plusieurs dizaines de mots de passe à retenir. Si pour bien faire les choses, on vous prie de choisir des mots de passe à la fois forts (longs et puisant dans les lettres, les chiffres et les symboles) et uniques, la gymnastique mentale devient vite fastidieuse.

Il y a beaucoup de mauvaises méthodes pour gérer plusieurs dizaines de mots de passe forts dans sa tête : on est vite tenté d’utiliser le même mot de passe sur au moins deux services différents. Guère mieux est le fait de construire ses mots de passe à partir d’un préfixe et d’un suffixe identiques tout en dérivant le reste du mot de passe du nom du service.

La dernière méthode consiste à mettre en œuvre un gestionnaire de mots de passe : un utilitaire qui retient chaque mot de passe à la place de l’utilisateur en les stockant dans un stockage chiffré, déverrouillable uniquement à l’aide d’un mot de passe maître.

Je savais depuis un moment qu’il me fallait un gestionnaire de mots de passe, moi aussi, simplement pour me prémunir des risques que constitueraient la compromission de la base de données de mots de passe d’un des nombreux services Web chez qui j’ai un compte. J’ai pris le temps d’étudier de nombreuses alternatives sans en trouver une qui me plaise.

Depuis quelques mois, j’utilise un petit gestionnaire de mots de passe qui s’appelle pass et que j’aime beaucoup. Il est gratuit et libre et va à l’essentiel de ce qu’est un gestionnaire de mots de passe : un système de stockage de secrets dans une base de données chiffrée. Je vous propose un petit tour d’horizon de cet outil et de ses possibilités.

Présentation

Pass est sans doute le gestionnaire de mots de passe le plus simple que j’ai pu voir : il s’agit en effet d’un script shell d’environ sept cents lignes. Les mots de passe en eux-mêmes sont stockés dans des fichiers texte, chiffrés avec GPG avant d’être placés dans une arborescence arbitraire de fichiers et de répertoires, ce qui permet de les sauvegarder sans peine et de les partager entre plusieurs machines avec Git par exemple. L’outil est par ailleurs extensible et bénéficie déjà d’intégrations avec les navigateurs Web les plus répandus.

Premiers pas

Installation

Votre système d’exploitation *nix fournit vraisemblablement déjà un paquet. Il suffit donc d’installer le paquet pass (ou password-store sous FreeBSD) pour installer le logiciel en lui-même.

Initialisation du stockage des mots de passe

Cependant, une fois installé, le logiciel n’est pas encore prêt à l’emploi. Il faut d’abord initialiser la base de données de mots de passe. Pour cela, nous allons d’abord créer une clef GPG dédiée au chiffrement de mots de passe et qu’on gardera distincte des autres. De manière générale, c’est toujours une bonne pratique d’utiliser des clefs distinctes pour des usages distincts.

Pour cela, un simple gpg --full-generate-key suffit dans un terminal. Pour mon propre usage, je n’ai pas donné de nom ni d’adresse e-mail, mais seulement un commentaire indiquant que la clef sert uniquement de clef de chiffrement pour des mots de passe.

Prenez note de l’identifiant de la clef nouvellement créée, puis initialisez Pass avec pass --init <ID de clef GPG>.

La dernière étape, facultative, est d’initialiser le dépôt Git dans la base de données de mots de passe. Pour cela, pass git init fera l’affaire. Dans la plupart des cas, vous voudrez alors pousser votre base de mots de passe sur une machine distante ; il faudra alors renseigner le distant avec une commande de la forme pass git remote add origin ssh://utilisateur@example.com/home/utilisateur/.pass.git.

Générer un nouveau mot de passe aléatoire

Lorsqu’on crée un nouveau compte ou qu’on change pour la première fois le mot de passe d’un service, la commande pass generate fait tout le travail :

pass generate Sites\ Web/Social/Diaspora

Par défaut, pass affiche le mot de passe qu’il a généré sur le terminal. Veillez donc à ce que personne ne regarde par-dessus votre épaule au moment où vous lancez cette commande ! Alternativement, pass peut aussi copier le nouveau mot de passe dans le presse-papiers si vous donnez l’option =-c= ; vous avez alors 45 secondes pour le coller dans la page Web avant qu’il soit supprimé du presse-papiers. À ce stade, le mot de passe est stocké dans la base de données et si vous utilisez Git, un commit aura été fait.

Quand ça ne marche pas

Pass génère par défaut des mots de passe de 24 caractères en puisant dans les 94 caractères imprimables du jeu de caractères ASCII. Il arrive parfois que certains sites aient du mal avec les mots de passe contenant certains caractères que les développeurs n’ont pas prévu dans leur code ; il arrive aussi que des sites rejettent des mots de passe trop longs. Dans les deux cas, ce sont des bugs et dans le second cas, cela peut aussi suggérer que le site stocke en fait ses mots de passe en mépris de l’état de l’art (en clair, par exemple).

Dans ces cas, pass generate accepte l’option -n pour générer un mot de passe sans symboles et il est possible de paramétrer au cas par cas la longueur du mot de passe à générer.

Retrouver un mot de passe préalablement stocké

Pour retrouver le mot de passe qu’on vient de stocker et le copier dans le presse-papiers, taper pass -c <nom du compte>. Après avoir tapé le mot de passe de la clef de chiffrement, le mot de passe en question est déchiffré et copié dans le presse-papiers (puis effacé du presse-papiers après 45 secondes).

Cette manipulation est un peu fastidieuse si on n’a pas déjà un terminal ouvert à côté de son navigateur. Heureusement, des extensions pour Firefox et Chrome existent. Puisque j’utilise Firefox, je parlerai seulement de Firefox ici, mais il me semble que l’intégration avec Chrome fonctionne de la même manière.

Intégration avec Firefox

L’intégration Firefox de pass nécessite l’installation de deux composants : passff-host d’une part, qui est un petit « wrapper » autour de pass et passff d’autre part, l’extension Firefox en lui-même.

En installant ces deux composants, le navigateur remplit automatiquement les identifiants et mots de passe des sites Web renseignés dans la base de données, comme la majorité des gestionnaires de mots de passe.

Installation de l’application hôte

On peut installer l’application hôte de plusieurs façons. Ils proposent de télécharger un script shell depuis la rubrique « /Releases/ » de la page GitHub et l’exécuter. Ce script télécharge et installe l’application hôte.

Une autre alternative est de télécharger tous les fichiers localement puis d’exécuter le même script shell avec l’option --local.

Dans tous les cas, les droits root ne sont pas nécessaires pour installer l’application hôte.

Installation de l’extension Firefox

Pour l’extension Firefox, il suffit de se rendre sur la page de l’extension passff sur addons.mozilla.org et de suivre la même procédure que pour installer n’importe quelle autre extension Firefox.

Format des fichiers de mot de passe

Pour que le remplissage automatique fonctionne, il faut modifier ses fichiers de mot de passe existants pour y ajouter quelques métadonnées. Pour cela, taper :

pass edit <nom_du_service>

Ceci déchiffre et ouvre le fichier de mot de passe dans un éditeur de texte, avec le mot de passe en première ligne. Modifier ensuite le fichier pour qu’il ait la forme suivante :

<mot de passe>
URL: https://*.example.com/* (à adapter selon les URL des pages de connexion)
Username: votre_identifiant

Sauvegardez et quittez. Si vous vous rendez sur la page de connexion du service, le formulaire n’est pas automatiquement rempli mais si vous cliquez sur l’icône en forme de « p » dans la barre d’outils de Firefox, passff vous proposera de remplir le formulaire avec les informations que vous avez stockées dans pass.

Remplissage automatique des champs

Par défaut, passff ne remplit pas automatiquement les champs des formulaires de connexion. Si vous voulez activer ce comportement, il vous faut aller dans les préférences de l’extension.

Notez cependant que vous n’êtes jamais complètement à l’abri du risque de fuite de vos mots de passe si vous activez cette fonction : certaines attaques visant des gestionnaires de mots de passe exploitent justement la fonction de remplissage et d’envoi automatique d’identifiants. Ce genre de fonctions est donc à activer à vos risques et périls.

Conclusion

Je n’ai donné qu’un aperçu très superficiel des fonctionnalités de pass ; néanmoins, l’outil est suffisamment souple pour permettre des usages avancés que je ne détaillerai pas dans ce billet.

En tout cas, mon passage à un gestionnaire de mots de passe apporte un confort certain. Je profite la plupart des temps de l’occasion de me connecter à un service que je n’ai pas encore converti à pass pour le faire.

L’usage d’un gestionnaire de mots de passe peut pousser certains sites Web dans ses retranchements. Hormis les problèmes que j’ai détaillés ci-dessus, j’ai aussi eu droit aux sites qui m’interdisaient le copier-coller dans le champ « Confirmer le mot de passe ». D’autres sites interdisent carrément le copier-coller d’identifiants sur leurs pages de connexion (une très mauvaise idée). Néanmoins, l’idée de pouvoir utiliser des mots de passe extrêmement complexes sans avoir besoin de s’en souvenir me plaît beaucoup et, dans le cas de pass, il me semble tout à fait faisable de sécuriser davantage ses secrets en investissant dans une YubiKey ou une authentification par carte à puce.

Commentaires

Poster un commentaire

Poster un commentaire