{"id":3581,"date":"2019-06-14T14:00:25","date_gmt":"2019-06-14T12:00:25","guid":{"rendered":"https:\/\/www.unicoda.com\/?p=3581"},"modified":"2019-05-31T17:27:46","modified_gmt":"2019-05-31T15:27:46","slug":"pass-comme-gestionnaire-de-mot-de-passe","status":"publish","type":"post","link":"https:\/\/www.unicoda.com\/?p=3581","title":{"rendered":"pass comme gestionnaire de mot de passe"},"content":{"rendered":"\n<p>Cela fait maintenant plusieurs ann\u00e9es que j&rsquo;utilise un gestionnaire de mot de passe pour retenir \u00e0 ma place les informations d&rsquo;acc\u00e8s aux diff\u00e9rents services que j&rsquo;utilise. J&rsquo;avais jusqu&rsquo;\u00e0 pr\u00e9sent choisi d&rsquo;utiliser Keepass, en particulier pour ces fonctions de synchroniser via WebDAV et l&rsquo;existence de ses nombreuses variantes qui permettent une utilisation sur GNU\/Linux, Windows, Mac et Android sans trop de difficult\u00e9s. Tr\u00e8s r\u00e9cemment, j&rsquo;ai d\u00e9cid\u00e9 de changer de gestionnaire et de tester <a rel=\"noreferrer noopener\" aria-label=\"pass (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/www.passwordstore.org\/\" target=\"_blank\">pass<\/a>.<\/p>\n\n\n\n<p>Quelques mots sur pass. Le programme de base prend la forme d&rsquo;une simple ligne de commande. Chaque entr\u00e9e consiste en un fichier dont la premi\u00e8re ligne contient le mot de passe. On peut ensuite stocker diverses informations sur les lignes suivantes, comme url, username, cl\u00e9s d&rsquo;API, etc. Tous les fichiers sont chiffr\u00e9s par cl\u00e9 gpg. Lorsqu&rsquo;on acc\u00e8de \u00e0 l&rsquo;un des fichiers de mot de passe, seul ce fichier sera d\u00e9chiffr\u00e9 et non l&rsquo;ensemble de la base comme c&rsquo;est en g\u00e9n\u00e9ral le cas avec les autres gestionnaires. La synchronisation est assur\u00e9e par git, ce qui permet de b\u00e9n\u00e9ficier de l&rsquo;historique du d\u00e9p\u00f4t qui constituera notre base de r\u00e9f\u00e9rence de mot de passe.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Passons \u00e0 l&rsquo;utilisation. Pour ma part, j&rsquo;ai clon\u00e9 un nouveau d\u00e9p\u00f4t git puis proc\u00e9d\u00e9 \u00e0 l&rsquo;initialisation de pass :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pass init &lt;gpg-id or email&gt;<\/pre>\n\n\n\n<p>J&rsquo;en profite \u00e9galement pour configurer l&#8217;emplacement de mon dossier de mot de passe, \u00e9tant donn\u00e9 que j&rsquo;ai fait le choix de ne pas le stocker dans le dossier par d\u00e9faut ~\/.password-store. Il n&rsquo;est pas impossible que je revienne sur ce choix, mais pour l&rsquo;instant, je pr\u00e9f\u00e8re avoir le dossier dans le m\u00eame r\u00e9pertoire que mes autres d\u00e9p\u00f4ts git.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">export PASSWORD_STORE_DIR=\/path\/to\/store<\/pre>\n\n\n\n<p>\u00c0 ce stade, je dispose donc d&rsquo;un gestionnaire configur\u00e9, initialis\u00e9 et vide, et d&rsquo;un fichier Keepass contenant plus d&rsquo;une centaine d&rsquo;entr\u00e9es. N&rsquo;\u00e9tant pas particuli\u00e8rement motiv\u00e9 pour r\u00e9aliser la migration \u00e0 la main pendant plusieurs heures (mais dispos\u00e9 \u00e0 le faire en l&rsquo;absence d&rsquo;alternative), je me suis donc mis en qu\u00eate d&rsquo;une solution d&rsquo;importation. La solution : <a rel=\"noreferrer noopener\" aria-label=\"pass-import (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/github.com\/roddhjav\/pass-import\" target=\"_blank\">pass-import<\/a>, dont voici les instructions d&rsquo;installation.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git clone https:\/\/github.com\/roddhjav\/pass-import\/ \ncd pass-import \nmake\nsudo make install<\/pre>\n\n\n\n<p>Avant de pouvoir r\u00e9aliser l&rsquo;import, il faut commencer par exporter les donn\u00e9es. Apr\u00e8s quelques essais infructueux, je choisis l&rsquo;export au format KeePass XML (2.x). Une fois l&rsquo;export effectu\u00e9, je passe \u00e0 l&rsquo;\u00e9tape d&rsquo;import (Les fichiers attach\u00e9s et les champs string ne font pas partis de l&rsquo;export):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pass import keepass \/path\/to\/export\/file.xml<\/pre>\n\n\n\n<p>L&rsquo;import s&rsquo;effectue sans erreur. Avant d&rsquo;aller plus loin, je supprime le fichier d&rsquo;export. Ou plut\u00f4t, je r\u00e9\u00e9cris des donn\u00e9es al\u00e9atoires \u00e0 la place du fichier puis je le supprime :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">shred -u export4pass.xml<\/pre>\n\n\n\n<p>Je commence par remodeler l&rsquo;arborescence de r\u00e9pertoire cr\u00e9\u00e9e par l&rsquo;import et j&rsquo;en profite \u00e9galement pour renommer certaines entr\u00e9es ou dossiers, en particulier remplacer les espaces par des &#8211; ou des _ afin de faciliter la s\u00e9lection et remplacement de certaines majuscules par des minuscules. Apr\u00e8s quelques v\u00e9rifications, je constate n\u00e9anmoins que tous les fichiers attach\u00e9s \u00e0 des entr\u00e9es keepass n&rsquo;ont pas \u00e9t\u00e9 import\u00e9s (ni export\u00e9 en fait). Situation similaire du c\u00f4t\u00e9 des champs string suppl\u00e9mentaire d&rsquo;une entr\u00e9e keepass. S&rsquo;ensuit donc une s\u00e9rie d&rsquo;op\u00e9rations manuelles afin de renseigner ces donn\u00e9es dans la nouvelle base.<\/p>\n\n\n\n<p>Pour ce qui est de la gestion des fichiers, deux possibilt\u00e9s. Soit le contenu du fichier peut \u00eatre int\u00e9gr\u00e9 directement au fichier du mot de passe, je pense notamment aux fichiers de recovery codes des sites ayant une authentification double facteurs activ\u00e9e. Deuxi\u00e8me possibilit\u00e9, chiffrer directement le fichier avec la cl\u00e9 utilis\u00e9e par pass. Cette deuxi\u00e8me option n\u00e9cessite un peu de configuration pour gagner en simplicit\u00e9 d&rsquo;utilisation. Dans ~\/.gnupg\/gpg.conf, je commence donc par me d\u00e9signer comme destinataire par d\u00e9faut.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Use the default key as the default recipient                       default-recipient-self<\/pre>\n\n\n\n<p>Je peux ensuite passer au chiffrement de mon fichier avec un simple (on n&rsquo;oubliera pas de supprimer le fichier source de fa\u00e7on s\u00e9curis\u00e9e avec shred une fois le fichier chiffr\u00e9 g\u00e9n\u00e9r\u00e9):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gpg -e test.file<\/pre>\n\n\n\n<p>Le d\u00e9chiffrement s&rsquo;effectue quant \u00e0 lui de la mani\u00e8re suivante :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gpg test.file.gpg<\/pre>\n\n\n\n<p>Pour ce qui est de l&rsquo;utilisation, je liste ici quelques-unes des commandes disponibles.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Cr\u00e9ation d'une nouvelle entr\u00e9e\npass insert github.com\/username\n# G\u00e9n\u00e9ration d'un mot de passe de longueur n\npass generate github.com\/username n\n# Copier le mot de passe\npass -c github.com\/username\n# G\u00e9n\u00e9ration sans utiliser de symbole -n\npass generate -n -c github.com\/username 16\n# Afficher l'entr\u00e9e\npass github.com\/username\n# Affichage de l'arborescence compl\u00e8te\npass\n# Lister le contenu d'un r\u00e9pertoire\npass ls Email\/\n# Recherche dans le nom des fichiers\npass find ovh\npass search gandi\n# Recherche dans le contenu des fichiers\npass grep api-keys\n# Suppression\npass rm github.com\/username\n# Synchronisation\npass git pull\npass git push<\/pre>\n\n\n\n<p>En ce qui concerne l&rsquo;utilisation sur Android, j&rsquo;utilise l&rsquo;application nomm\u00e9e <a rel=\"noreferrer noopener\" aria-label=\"Android-Password-Store (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/github.com\/zeapo\/Android-Password-Store\" target=\"_blank\">Android-Password-Store<\/a>, avec OpenKeyChain et NFC pour l&rsquo;acc\u00e8s \u00e0 la cl\u00e9 PGP stock\u00e9e sur ma Yubikey.<\/p>\n\n\n\n<p>Du c\u00f4t\u00e9 du navigateur, Firefox dans mon cas, et pour disposer d&rsquo;un acc\u00e8s direct \u00e0 pass et de saisie automatique des champs, je me suis tourn\u00e9 vers browserpass, qui n\u00e9cessite l&rsquo;installation de deux composants, l&rsquo;un dans le navigateur, \u00e0 savoir l&rsquo;<a rel=\"noreferrer noopener\" aria-label=\"extension (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/github.com\/browserpass\/browserpass-extension\" target=\"_blank\">extension<\/a>, l&rsquo;autre comme <a rel=\"noreferrer noopener\" aria-label=\"composant natif du syst\u00e8me (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/github.com\/browserpass\/browserpass-native\" target=\"_blank\">composant natif du syst\u00e8me<\/a>. Pour le composant natif, il ne faut pas oublier de <a rel=\"noreferrer noopener\" aria-label=\"le configurer (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/github.com\/browserpass\/browserpass-native#configure-browsers\" target=\"_blank\">le configurer<\/a> (\u00e0 adapter en fonction du navigateur):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">make hosts-firefox-user<\/pre>\n\n\n\n<p>Enfin, derni\u00e8re chose. \u00c9tant donn\u00e9 que j&rsquo;ai chang\u00e9 le r\u00e9pertoire de ma base de mot de passe, je cr\u00e9e un lien symbolique entre l&#8217;emplacement par d\u00e9faut et mon r\u00e9pertoire car le composant natif ne reconna\u00eet pas ma configuration de PASSWORD_STORE_DIR.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ln -s \/home\/username\/path\/to\/my-password-store \/home\/username\/.password-store<\/pre>\n\n\n\n<p>Terminons cet article par un bilan rapide. Le changement de Keepass vers pass s&rsquo;effectue plut\u00f4t bien, mais n\u00e9cessite de prendre de nouvelles habitudes et d&rsquo;apprendre \u00e0 se servir de ce nouvel outil. Je pense avoir gagn\u00e9 un peu en s\u00e9curit\u00e9, au prix de la contrainte de disposer de ma Yubikey pour acc\u00e9der aux mots de passe. J&rsquo;\u00e9tudie d&rsquo;ailleurs un moyen de recr\u00e9er rapidement une cl\u00e9 de s\u00e9curit\u00e9 temporaire contenant ma cl\u00e9 gpg \u00e0 partir des sauvegardes chiffr\u00e9es, en cas de perte ou de d\u00e9t\u00e9rioration de ma Yubikey. J&rsquo;ai d\u00e9sormais un acc\u00e8s tr\u00e8s pratique \u00e0 mes mots de passe gr\u00e2ce \u00e0 l&rsquo;int\u00e9gration de passmenu sur mon syst\u00e8me GNU\/Linux. En revanche,acc\u00e9der \u00e0 un mot de passe sur un nouveau syst\u00e8me requiert de passer par plusieurs \u00e9tapes d&rsquo;installation et de configuration des outils n\u00e9cessaires, en particulier du c\u00f4t\u00e9 de gpg. Il me reste d&rsquo;ailleurs encore \u00e0 proc\u00e9der \u00e0 un test de configuration en environnement Windows.<\/p>\n\n\n\n<p>En r\u00e9sum\u00e9, un peu de travail de configuration \u00e0 la mise en place de ce nouveau gestionnaire, pour un gain de s\u00e9curit\u00e9 et une am\u00e9lioration de l&rsquo;int\u00e9gration au syst\u00e8me. Bref, satisfait de ce nouvel outil !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cela fait maintenant plusieurs ann\u00e9es que j&rsquo;utilise un gestionnaire de mot de passe pour retenir \u00e0 ma place les informations d&rsquo;acc\u00e8s aux diff\u00e9rents services que j&rsquo;utilise. J&rsquo;avais jusqu&rsquo;\u00e0 pr\u00e9sent choisi d&rsquo;utiliser Keepass, en particulier pour ces fonctions de synchroniser via WebDAV et l&rsquo;existence de ses nombreuses variantes qui permettent une utilisation sur GNU\/Linux, Windows, Mac &hellip; <a href=\"https:\/\/www.unicoda.com\/?p=3581\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;pass comme gestionnaire de mot de passe&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[377],"tags":[382,422,423],"class_list":["post-3581","post","type-post","status-publish","format-standard","hentry","category-crypto","tag-gpg","tag-pass","tag-password-store"],"_links":{"self":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3581"}],"version-history":[{"count":9,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3581\/revisions"}],"predecessor-version":[{"id":3645,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3581\/revisions\/3645"}],"wp:attachment":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}