Como o agente GPG funciona?

27

Eu tenho uma linha no meu arquivo gpg.conf que diz use-agent .
Eu entendo isso se refere ao gpg-agent, que é um daemon. A página man afirma "gpg-agent é um daemon para gerenciar chaves secretas (privadas) independentemente de qualquer protocolo. É usado como um backend para gpg e gpgsm, bem como para alguns outros utilitários."

Alguém pode explicar o que isso significa no contexto do gpg? Qual é o ponto de gpg-agent?

Eu tenho o GPG 1.4 atualmente.

  1. Como posso saber se o agente está sendo executado? Na verdade, nem estou claro se o gpg-agent está instalado com o pacote básico do GPG 1.4.
  2. Como posso iniciá-lo, se não estiver em execução?
  3. Como posso pará-lo, se estiver em execução?
por SauceCode 06.03.2015 / 22:19

1 resposta

32

Gpg-agent é um programa que roda em segundo plano (um daemon ) e armazena chaves secretas de GPG em memória. Quando um processo GPG precisa da chave, ele entra em contato com o programa gpg-agent em execução por meio de um soquete e solicita a chave. Se o processo do agente tiver a chave, ele será fornecido para gpg. Se isso não acontecer, ele tentará carregar a chave criptografada do seu chaveiro e solicitará a senha da chave. Uma vez que o agente tenha obtido a chave descriptografada, ele passa para o processo gpg. Além das chaves GPG, o Gpg-agent pode, da mesma forma, armazenar chaves SSH e fornecê-las aos processos SSH, como o programa ssh-agent que vem com o SSH.

O principal ponto de usar um agente de chave é para que você não precise digitar sua frase-senha toda vez que usar a chave. O agente mantém a chave na memória de uma vez para a próxima. O próprio GPG não pode fazer isso porque o processo termina assim que o trabalho é feito.

Outra coisa que um agente de chave pode fazer é permitir que o GPG em execução em uma máquina remota obtenha chaves no agente local (o que pode carregá-las de um arquivo local e solicitar sua frase secreta). O Gpg-agent não pode fazer isso ainda, é um recurso planejado . O SSH teve o encaminhamento do agente por um tempo muito longo. (Esta é uma razão para não usar o gpg-agent para chaves SSH.)

O GPG 1.x ou 2.0.x sabe que o agente está em execução porque a variável GPG_AGENT_INFO está configurada. Essa variável contém o local do soquete para se comunicar com o agente, bem como o ID do processo do agente. O GPG 2.1 sempre coloca o soquete do agente em ~/.gnupg . O GPG 2.x sempre inicia um processo de agente, se não estiver em execução.

Você pode iniciar o agente simplesmente executando gpg-agent . Se você quiser manter um processo de agente como parte de sua sessão, poderá substituir a chamada de seu gerenciador de sessões por gpg-agent my-session-manager ; algumas distribuições configuram isso automaticamente. O GPG iniciará automaticamente o agente, e o GPG 2.1 também encontrará um agente em execução sem precisar de uma variável de ambiente, portanto, não será necessário iniciá-lo dessa maneira, a menos que você use uma versão mais antiga do GPG ou use o agente para armazenar outros tipos de chaves como SSH.

Você pode enviar ao agente comandos com a gpg-connect-agent comando shell. Envie o kill command para eliminar o processo do agente (ou enviar é um sinal).

O Gpg-agent é fornecido com o próprio GPG. Algumas distribuições o embalam separadamente.

    
por 08.03.2015 / 01:10

Tags