Come funziona l'agente GPG?


31

Ho una riga nel mio file gpg.conf che dice use-agent.
Capisco che questo si riferisca all'agente gpg che è un demone. La pagina man afferma "gpg-agent è un demone per gestire chiavi segrete (private) indipendentemente da qualsiasi protocollo. È usato come backend per gpg e gpgsm, nonché per un paio di altre utility".

Qualcuno può spiegare cosa significa questo nel contesto di Gpg? Qual è il punto di gpg-agent?

Al momento ho GPG 1.4.

  1. Come posso sapere se l'agente è in esecuzione? In realtà non sono nemmeno chiaro se gpg-agent sia installato con il pacchetto GPG 1.4 di base.
  2. Come posso avviarlo, se non è in esecuzione?
  3. Come posso fermarlo, se è in esecuzione?

Risposte:


38

Gpg-agent è un programma che viene eseguito in background (un demone ) e memorizza le chiavi segrete GPG in memoria. Quando un processo GPG necessita della chiave, contatta il programma gpg-agent in esecuzione tramite un socket e richiede la chiave. Se il processo dell'agente ha la chiave, la fornisce a gpg. In caso contrario, tenta di caricare la chiave crittografata dal tuo portachiavi e ti chiede la passphrase della chiave. Una volta che l'agente ha ottenuto la chiave decodificata, la passa al processo gpg. Oltre alle chiavi GPG, Gpg-agent può allo stesso modo archiviare le chiavi SSH e fornirle ai processi SSH, come il ssh-agentprogramma fornito con SSH.

Il punto principale dell'uso di un agente chiave è che non è necessario digitare la passphrase ogni volta che si utilizza la chiave. L'agente mantiene la chiave in memoria da una volta all'altra. Lo stesso GPG non può farlo perché il processo termina una volta terminato il suo lavoro.

Un'altra cosa che un key agent può fare è consentire a GPG in esecuzione su un computer remoto di ottenere le chiavi nell'agent locale (che potrebbe caricarle da un file locale e richiedere la passphrase). L'agente Gpg non può ancora farlo, è una funzionalità pianificata . SSH ha inoltrato agenti da molto tempo. (Questo è un motivo per non usare gpg-agent per le chiavi SSH.)

GPG 1.xo 2.0.x sa che l'agente è in esecuzione perché la GPG_AGENT_INFOvariabile è impostata. Questa variabile contiene la posizione del socket per comunicare con l'agente e l'ID del processo dell'agente. GPG 2.1 inserisce sempre il socket dell'agente ~/.gnupg. GPG 2.x avvia sempre un processo agente se non è in esecuzione.

È possibile avviare l'agente semplicemente eseguendo gpg-agent. Se si desidera mantenere un processo agente come parte della sessione, è possibile sostituire l'invocazione del gestore della sessione con gpg-agent my-session-manager; alcune distribuzioni lo impostano automaticamente. GPG avvierà automaticamente l'agente e GPG 2.1 troverà inoltre un agente in esecuzione senza la necessità di una variabile di ambiente, quindi non è necessario avviarlo in questo modo a meno che non si usi una versione precedente di GPG o si usi l'agente per memorizzare altri tipi di chiavi come SSH.

È possibile inviare i comandi agent con il gpg-connect-agentcomando shell. Invia il killcomando per interrompere il processo dell'agente (o inviagli un segnale).

L'agente Gpg viene fornito con GPG stesso. Alcune distribuzioni lo confezionano separatamente.


6
"Quando un processo GPG ha bisogno della chiave, contatta il programma gpg-agent in esecuzione attraverso un socket e richiede la chiave. Se il processo agent ha la chiave, la fornisce a gpg." Leggermente fuorviante. L'agente non fornisce una chiave per il processo client. Al contrario, esegue le azioni utilizzando la chiave, per conto del processo client. (Il client fornisce all'agente qualcosa da firmare, crittografare o decrittografare e l'agente lo fa.) Quando si utilizza un agente, il software client SSH e GPG non ottiene mai l'accesso alla chiave effettiva.
Peter Samuelson,

3
"L'agente Gpg non può ancora farlo, è una funzionalità pianificata. SSH ha avuto l'inoltro dell'agente da molto tempo. (Questo è un motivo per non usare l'agente gpg per le chiavi SSH.)" Non del tutto vero. gpg-agent funziona bene con l'inoltro dell'agente SSH. Lo uso ogni giorno. Il client SSH gestisce l'inoltro, gpg-agent non è realmente coinvolto in questo. Ciò che non è supportato è che GPG stesso parli a distanza con un agente.
Peter Samuelson,
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.