Memorizzare contemporaneamente tutte le password delle sottochiavi gpg? Impedire la necessità di inserire più password gpg?


10

Posso inserire la mia password gpg solo una volta e sbloccare tutte le mie sottochiavi (firma, decrittografia, autenticazione)?

Al momento, devo inserire la mia password gpg tre volte (per la firma, per la decrittografia, per l'autenticazione). Questo è scomodo.

Ho provato a trovare uno script di 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"

Ma sfortunatamente, in questo modo le password gnupg-agent non memorizzano nella cache la password. Questo può essere risolto?

Informazioni di sistema:

  • Quando non uso quello script di shell, non ho problemi con gnupg-agent. Quando firmo / decrittografo manualmente un file nella shell, pinentry richiede due volte la password, quindi la memorizza nella cache fino al riavvio.
  • Usando Debian Wheezy.
  • versione 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)

Ho chiesto sulla mailing list degli utenti di gnupg qualche tempo fa, ma nessuna risposta.

Forse questa risposta avrebbe funzionato? Forse gpg-connect-agentè richiesto?


Sono impressionato: exec 3<<<"$passphrase"era nuovo anche per me ... E ho appena lanciato una ricompensa di 250 rappresentanti alla risposta che citi.
Hauke ​​Laging,

Risposte:


3

C'è il demone gnome-keyring e il cavalluccio marino che rendono molto semplice la gestione di chiavi e password.

Fondamentalmente se stai eseguendo gnome-keyring-daemon come agente gpg, ha la possibilità di sbloccare automaticamente le tue chiavi GPG. Lo fa mantenendo un portachiavi con password, che contiene le password per cose come siti Web, chiavi GPG, chiavi SSH, ecc. Questo portachiavi con password viene quindi protetto con la propria password. Quindi lo sblocchi e il portachiavi di gnome sblocca tutto il resto.
Come bonus aggiuntivo, gnome-keyring-daemon ha un portachiavi "login", che se la sua password corrisponde alla password dell'utente, il portachiavi viene automaticamente sbloccato quando effettui l'accesso.


Configurazione

Come farlo funzionare? Basta installare gnome-keyring-daemon e cavalluccio marino. Il pacchetto dovrebbe fare tutta la configurazione del sistema per te. Basta assicurarsi che non stai iniziando un altro demone portachiavi o un agente GPG . Qualunque inizio inizi "vince", e il portachiavi gnome inizia nello stack PAM, così estremamente presto.

Se le tue chiavi GPG sono archiviate ~/.gnupg, le raccoglierà automaticamente e fungerà da agente GPG per loro. Lo stesso vale per le chiavi SSH archiviate~/.ssh

La prima volta che provi a utilizzare la chiave privata, visualizzerai una finestra di dialogo simile alla seguente: (L'ho attivata da una semplice riga di comando gpg -d myfile.gpg) sbloccare portachiavi
Seleziona semplicemente "Sblocca automaticamente questo portachiavi ogni volta che eseguo l'accesso"

Ora non abbiamo davvero parlato di cavalluccio marino. Questo perché non è strettamente necessario. Tutto questo è stato fatto solo con il normale demone gnome-keyring. Tuttavia con il cavalluccio marino puoi visualizzare e gestire tutte le tue chiavi e portachiavi. E se usi l'autenticazione centralizzata (LDAP), dovrai usarla quando cambi la password di accesso per cambiare anche la password sul portachiavi "login" per abbinarla.

cavalluccio marino - chiavi gpg


Altre password

Come accennato in precedenza, gnome-keyring-daemon può anche archiviare le password dei siti web. L'ultima volta che ho verificato Chrome supporta questo, ma Firefox non lo fa. Tuttavia, c'è un trucco per farlo funzionare.
Per impostazione predefinita avrai 2 portachiavi, un portachiavi "login" e un portachiavi "predefinito". Il portachiavi "predefinito" è quello predefinito (da cui il nome). Ma è un portachiavi separato, quindi non viene automaticamente sbloccato. Nel cavalluccio marino, se fai clic con il pulsante destro del mouse sul portachiavi "login", c'è un'opzione per "impostare come predefinito". Seleziona questo e inizierà ad essere utilizzato per le password. Personalmente, elimino solo quello "predefinito" e utilizzo "login" per tutto.


Peccato che non sono un utente gnomo. L'ho fatto sudo apt-get remove gnupg-agente sudo apt-get install gnome-keyring seahorse. Quindi ha creato un file /etc/X11/Xsession.d/999gnomekeyringcon il seguente contenuto. 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(Altrimenti gnome-keyring non si avvia nemmeno in KDE.) Ora, quando corro gpg -d myfile.gpg, mi verrà chiesta la password e verrà memorizzata nella cache, ma non mi è mai stato richiesto con questa finestra di dialogo.
adrelanos,

(Questo è male, perché sono tornato da dove ho iniziato. La chiave di firma verrà memorizzata nella cache separatamente.) (C'è una nuova linea tra la riga di valutazione e di esportazione, non possibile con il markup dei commenti qui.)
adrelanos

Non uso nemmeno gnome per il mio desktop manager. Non è richiesto Gnome fa molto di più del semplice desktop manager. Non dovresti aggiungere nulla a /etc/X11/Xsession.d. Ciò dovrebbe essere fatto nello stack PAM. Dovresti avere una session optional pam_gnome_keyring.so auto_startvoce in uno o più file in /etc/pam.d. Sfortunatamente non uso Debian, quindi non so quale. Se non è lì, allora questo è il problema.
Patrick,

Senza aggiungere a /etc/X11/Xsession.d, ps aux | grep gnomemostra che gnome-keyring-daemon non si avvia. (Tuttavia, rimosso.) /usr/share/doc/libpam-gnome-keyring/README.DebianDice 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(le nuove righe rimosse da se commenti). Fatto ciò, aggiunto a /etc/pam.d/kdm, riavviato kdm. Nessun carico di agente, nessuno disponibile.
adrelanos,

Sono in perdita. Se lo stai usando kdme lo hai inserito /etc/pam.d/kdm, avrebbe dovuto farlo. L'unica cosa che posso suggerire se vuoi ancora perseguire questa strada è scavare tra i registri. Scusate la falsa speranza, pensavo che questa sarebbe stata una soluzione semplice per voi.
Patrick,

0

Ho fatto qualche indagine e il risultato è sorprendente per me ma semplice:

Quando viene chiamato in questo modo gpgnon comunica gpg-agent affatto ! gpgè in grado di eseguire tutte queste operazioni da solo.

Ma se gpg-agentnon sa nemmeno che è successo qualcosa, difficilmente può sapere una passphrase che non conosceva prima.


Sembra che abbia scoperto un modo, come questo non può essere risolto.
adrelanos,

La mia domanda originale è ancora aperta. (Che è Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?) Spero di inserire la password gpg-agento in gpg-connect-agentqualche modo sia possibile.
adrelanos,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.