Cache todas as senhas da subchave gpg de uma só vez? Evitar a necessidade de várias entradas de senha gpg?

10

Posso inserir minha senha gpg apenas uma vez e desbloquear todas as minhas subchaves (assinatura, descriptografia, autenticação)?

No momento, preciso inserir minha senha gpg três vezes (para assinatura, para descriptografia, para autenticação). Isso é inconveniente.

Eu tentei criar um script de 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"

Mas, infelizmente, a senha do gnupg-agent não armazena em cache a senha. Isso pode ser corrigido?

Informação do sistema:

  • Quando não estou usando esse script de shell, não tenho problemas com o gnupg-agent. Quando assino / descriptografo manualmente um arquivo no shell, o pinentry solicita a senha duas vezes e, em seguida, armazena-o em cache até a reinicialização.
  • Usando o Debian Wheezy.
  • versão 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)

Eu perguntei na lista de discussão gnupg-users há um tempo atrás , mas sem resposta.

Talvez esta resposta funcionaria? Talvez gpg-connect-agent seja necessário?

    
por adrelanos 06.02.2014 / 19:39

2 respostas

3

Existe o gnome-keyring-daemon e cavalo-marinho que faz com que o & gerenciamento de senhas muito fácil.

Basicamente, se você estiver executando o daemon do gnome-keyring como um agente gpg, ele terá a capacidade de desbloquear suas chaves GPG automaticamente. Ele faz isso mantendo um chaveiro de senha, que contém as senhas para coisas como sites, chaves GPG, chaves SSH, etc. Esse chaveiro de senha é então protegido com sua própria senha. Então você desbloqueia e o chaveiro gnome destrava todo o resto.
Como um bônus adicional, o gnome-keyring-daemon possui um chaveiro "login", que se a senha corresponder à sua senha de usuário, o chaveiro será automaticamente desbloqueado quando você efetuar login.

Configuração

Como fazer isso funcionar? Basta instalar o gnome-keyring-daemon e seahorse. O pacote deve fazer toda a configuração do sistema para você. Apenas verifique se você não está iniciando outro daemon de chaveiro ou agente GPG . O que começar por último "ganha", e o chaveiro gnome começa na pilha do PAM, tão cedo.

Se suas chaves GPG estiverem armazenadas em ~/.gnupg , elas serão automaticamente selecionadas e agem como o agente GPG para elas. O mesmo vale para chaves SSH armazenadas em ~/.ssh

Na primeira vez que você tentar usar a chave privada, você verá uma caixa de diálogo que se parece com isso: (Eu a acionei por meio de uma linha de comando simples gpg -d myfile.gpg ) > Basta selecionar "Desbloquear automaticamente este chaveiro sempre que eu fizer login"

Agora, não falamos muito sobre cavalos-marinhos. Isso porque não é estritamente necessário. Tudo isso foi feito apenas com o daemon regular do gnome-keyring. No entanto, com cavalos-marinhos, você pode ver e gerenciar todas as suas chaves & porta-chaves. E se você usar autenticação centralizada (LDAP), você precisará usá-la quando alterar sua senha de login para também alterar a senha no chaveiro "login" para que ela seja correspondida.

Outrassenhas

Comomencionadoanteriormente,odaemondognome-keyringtambémpodearmazenarsenhasdesites.AúltimavezqueverifiqueioChromesuportaisso,masoFirefoxnão.Noentanto,háumtruqueparafazê-lofuncionar.
Porpadrão,vocêterá2chaveiros,umchaveiro"login" e um chaveiro "padrão". O chaveiro "padrão" é o padrão (daí o nome). Mas é um chaveiro separado, por isso não é automaticamente desbloqueado. No cavalo-marinho, se você clicar com o botão direito do mouse no anel de "login", há uma opção para "definir como padrão". Selecione isso e ele começará a ser usado para senhas. Eu, pessoalmente, apenas excluo o "padrão" e uso "login" para tudo.

    
por 13.03.2014 / 02:31
0

Eu fiz algumas investigações e o resultado é surpreendente para mim, mas simples:

Quando chamado dessa forma, gpg não se comunica com gpg-agent em tudo ! gpg é capaz de fazer todas essas operações por conta própria.

Mas se gpg-agent nem souber que algo aconteceu, dificilmente poderá saber uma senha que não conhecia antes.

    
por 06.02.2014 / 23:30