Mettre en cache tous les mots de passe de sous-clé gpg à la fois? Empêcher le besoin de plusieurs entrées de mot de passe gpg?

10

Puis-je saisir mon mot de passe gpg une seule fois et déverrouiller toutes mes sous-clés (signature, déchiffrement, authentification)?

Pour le moment, je dois saisir mon mot de passe gpg trois fois (pour la signature, pour le déchiffrement, pour l'authentification). C'est gênant.

J'ai essayé de trouver un script shell.

#!/bin/bash
set -x
set -e
set +o history

signing_key=77BB3C48
encryption_key=CE998547

tempfile="$(mktemp)"
echo "test" > testfile

unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo

exec 3<<<"$passphrase"

gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"

gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"

exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"

Mais malheureusement, de cette façon, les mots de passe gnupg-agent ne mettent pas en cache le mot de passe. Cela peut-il être corrigé?

Informations système:

  • Lorsque je n'utilise pas ce script shell, je n'ai aucun problème avec gnupg-agent. Lorsque je signe / déchiffre manuellement un fichier dans le shell, Pinentry demande le mot de passe deux fois, puis le met en cache jusqu'au redémarrage.
  • Utiliser Debian Wheezy.
  • version gpg:

dpkg -l | grep gnupg

ii  gnupg                                        1.4.12-7+deb7u3                    i386         GNU privacy guard - a free PGP replacement
ii  gnupg-agent                                  2.0.22-3                           i386         GNU privacy guard - password agent
ii  gnupg-curl                                   1.4.12-7+deb7u3                    i386         GNU privacy guard - a free PGP replacement (cURL)
ii  gnupg2                                       2.0.22-3                           i386         GNU privacy guard - a free PGP replacement (new v2.x)

J'ai demandé sur la liste de diffusion gnupg-users il y a un moment, mais aucune réponse.

Peut - être que cette réponse fonctionnerait? Peut gpg-connect-agent- être est-il nécessaire?

adrelanos
la source
Je suis impressionné: exec 3<<<"$passphrase"c'était nouveau même pour moi ... Et je viens de jeter une prime de 250 représentants à la réponse que vous citez.
Hauke ​​Laging

Réponses:

3

Il y a le démon gnome-keyring et l' hippocampe qui rend la gestion des clés et des mots de passe très facile.

Fondamentalement, si vous exécutez gnome-keyring-daemon en tant qu'agent gpg, il a la possibilité de déverrouiller automatiquement vos clés GPG. Il le fait en maintenant un trousseau de mots de passe, qui contient les mots de passe pour des sites comme les sites Web, les clés GPG, les clés SSH, etc. Ce trousseau de mots de passe est ensuite sécurisé avec son propre mot de passe. Vous le déverrouillez donc et le trousseau de clés gnome déverrouille tout le reste.
Comme bonus supplémentaire, gnome-keyring-daemon a un trousseau de "connexion" qui, si son mot de passe correspond à votre mot de passe utilisateur, le trousseau est automatiquement déverrouillé lorsque vous vous connectez.


Configuration

Comment faire fonctionner ça? Installez simplement gnome-keyring-daemon et seahorse. Le package doit effectuer toute la configuration du système pour vous. Assurez-vous simplement de ne pas démarrer un autre démon de trousseau de clés ou agent GPG . Celui qui commence le dernier "gagne", et le trousseau de clés gnome commence dans la pile PAM, donc très tôt.

Si vos clés GPG sont stockées dans ~/.gnupg, il les récupérera automatiquement et agira comme agent GPG pour elles. Il en va de même pour les clés SSH stockées dans~/.ssh

La première fois que vous essayez d'utiliser la clé privée, vous obtiendrez une boîte de dialogue qui ressemble à ceci: (Je l'ai déclenchée par une simple ligne de commande gpg -d myfile.gpg) déverrouiller le porte-clés
Sélectionnez simplement "Déverrouiller automatiquement ce trousseau de clés chaque fois que je suis connecté"

Maintenant, nous n'avons pas vraiment parlé d'hippocampe. C'est parce que ce n'est pas strictement nécessaire. Tout cela a été fait avec juste le démon gnome-keyring-daemon habituel. Cependant, avec Seahorse, vous pouvez afficher et gérer toutes vos clés et porte-clés. Et si vous utilisez l'authentification centralisée (LDAP), vous devrez l'utiliser lorsque vous modifiez votre mot de passe de connexion pour également changer le mot de passe sur le trousseau de clés "connexion" pour le faire correspondre.

hippocampe - clés gpg


Autres mots de passe

Comme évoqué précédemment, gnome-keyring-daemon peut également stocker les mots de passe des sites Web. La dernière fois que j'ai vérifié, Chrome le supporte, mais pas Firefox. Cependant, il existe une astuce pour le faire fonctionner.
Par défaut, vous aurez 2 trousseaux de clés, un trousseau de clés "connexion" et un trousseau de clés "par défaut". Le trousseau de clés "par défaut" est la valeur par défaut (d'où le nom). Mais c'est un trousseau de clés séparé, donc il ne se déverrouille pas automatiquement. Dans Seahorse, si vous cliquez avec le bouton droit sur le trousseau de clés «connexion», il y a une option pour «définir par défaut». Sélectionnez-le et il commencera à être utilisé pour les mots de passe. Personnellement, je supprime celui "par défaut" et j'utilise "login" pour tout.

Patrick
la source
Dommage que je ne sois pas un utilisateur de gnome. Je l'ai fait sudo apt-get remove gnupg-agentet sudo apt-get install gnome-keyring seahorse. Ensuite, créé un fichier /etc/X11/Xsession.d/999gnomekeyringavec le contenu suivant. eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK(Sinon, gnome-keyring ne démarrerait même pas dans KDE.) Maintenant, quand je lance gpg -d myfile.gpg, on me demandera le mot de passe et il sera mis en cache, mais je n'ai jamais été invité avec cette boîte de dialogue.
adrelanos
(C'est mauvais, car je suis de retour là où j'ai commencé. La clé de signature sera mise en cache séparément.) (Il y a une nouvelle ligne entre la ligne d'évaluation et d'exportation, impossible avec le balisage de commentaire ici.)
adrelanos
Je n'utilise pas non plus gnome pour mon gestionnaire de bureau. Ce n'est pas obligatoire. Gnome fait bien plus que son gestionnaire de bureau. Vous ne devriez rien avoir à ajouter /etc/X11/Xsession.d. Cela est censé être fait dans la pile PAM. Vous devez avoir une session optional pam_gnome_keyring.so auto_startentrée dans un ou plusieurs fichiers dans /etc/pam.d. Malheureusement, je n'utilise pas Debian donc je ne sais pas lequel. Si ce n'est pas là, c'est le problème.
Patrick
Sans ajouter à /etc/X11/Xsession.d, ps aux | grep gnomemontre que gnome-keyring-daemon ne démarre pas. (, Enlevé. Néanmoins) /usr/share/doc/libpam-gnome-keyring/README.Debiandit If you want to start gnome_keyring from another display manager, you need to add the following lines to the corresponding /etc/pam.d/?dm file: auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start(en tant que tels sauts de ligne supprimés commentaires). Est-ce que, ajouté à /etc/pam.d/kdm, redémarré kdm. Aucune charge d'agent, aucune disponible.
adrelanos
Je suis à perte. Si vous utilisez kdmet que vous l'avez mis /etc/pam.d/kdm, cela aurait dû le faire. La seule chose que je peux suggérer si vous voulez toujours suivre cette route est de fouiller dans les journaux. Désolé pour le faux espoir, j'ai pensé que ce serait une solution simple pour vous.
Patrick
0

J'ai fait quelques recherches et le résultat est surprenant pour moi mais simple:

Appelé de cette façon, gpgil ne communique pas gpg-agent du tout ! gpgest capable de faire toutes ces opérations par lui-même.

Mais s'il gpg-agentne sait même pas que quelque chose s'est produit, il peut difficilement connaître une phrase secrète qu'il ne connaissait pas auparavant.

Hauke ​​Laging
la source
On dirait que j'ai découvert un moyen, comment cela ne peut pas être résolu.
adrelanos
Ma question d'origine est toujours ouverte. (Ce qui est Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?) J'espère que le mot de passe sera intégré gpg-agentou gpg-connect-agentest en quelque sorte possible.
adrelanos