Armazenar em cache todas as senhas de subchave gpg de uma só vez? Evitar a necessidade de várias entradas de senha de gpg?


10

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

No momento, preciso digitar minha senha do gpg três vezes (para assinar, descriptografar e 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, dessa maneira as senhas gnupg-agent não armazenam 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 / decodifico manualmente um arquivo no shell, o pinentry solicita a senha duas vezes e o armazena 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 não respondi.

Talvez essa resposta funcione? Talvez gpg-connect-agentseja necessário?


Estou impressionado: exec 3<<<"$passphrase"era novo até para mim ... E joguei uma recompensa de 250 representantes na resposta que você citar.
Hauke ​​Laging

Respostas:


3

Existe o gnome-keyring-daemon e o seahorse, que facilitam muito o gerenciamento de chaves e senhas.

Basicamente, se você estiver executando o gnome-keyring-daemon como um agente gpg, ele poderá desbloquear suas chaves GPG automaticamente. Isso é feito mantendo um chaveiro de senha, que contém as senhas de sites, chaves GPG, chaves SSH, etc. Esse chaveiro de senha é protegido com sua própria senha. Então você a desbloqueia e o chaveiro do gnomo desbloqueia 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á desbloqueado automaticamente quando você efetuar o login.


Configuração

Como fazer isso funcionar? Basta instalar o gnome-keyring-daemon e o cavalo-marinho. O pacote deve fazer toda a configuração do sistema para você. Apenas certifique-se de não iniciar outro daemon de chaveiro ou agente GPG . O que quer que comece por último "ganha", e o chaveiro do gnomo começa na pilha do PAM, muito cedo.

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

Na primeira vez em que você tentar usar a chave privada, você verá uma caixa de diálogo com a seguinte aparência: (eu a iniciei por uma linha de comando simples gpg -d myfile.gpg) desbloquear chaveiro
Basta selecionar "Desbloquear automaticamente este chaveiro sempre que estiver conectado"

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

cavalo-marinho - chaves gpg


Outras senhas

Como mencionado anteriormente, o gnome-keyring-daemon também pode armazenar senhas de sites. A última vez que verifiquei o chrome suporta isso, mas o firefox não. No entanto, há um truque para fazê-lo funcionar.
Por padrão, você terá 2 chaveiros, um chaveiro "login" e um chaveiro "padrão". O chaveiro "padrão" é o padrão (daí o nome). Mas é um chaveiro separado, para que não seja desbloqueado automaticamente. No cavalo-marinho, se você clicar com o botão direito do mouse no chaveiro "login", há uma opção para "definir como padrão". Selecione isso e ele começará a se acostumar com senhas. Pessoalmente, apago o "padrão" e uso "login" para tudo.


Pena que eu não sou um usuário gnomo. Eu fiz sudo apt-get remove gnupg-agente sudo apt-get install gnome-keyring seahorse. Em seguida, criou um arquivo /etc/X11/Xsession.d/999gnomekeyringcom o seguinte conteúdo. 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(Caso contrário, o gnome-keyring nem começaria no KDE.) Agora, quando eu executar gpg -d myfile.gpg, ser-me-á pedido a senha e ela será armazenada em cache, mas nunca fui solicitado com esta caixa de diálogo.
22414 adrelanos

(Isso é ruim, porque estou de volta onde comecei. A chave de assinatura será armazenada em cache separadamente.) (Há uma nova linha entre a linha de avaliação e de exportação, que não é possível com a marcação de comentário aqui.)
adrelanos

Também não uso o gnome para o meu gerenciador de desktop. Não é necessário. O Gnome faz muito mais do que apenas o gerenciador de desktop. Você não deve adicionar nada a /etc/X11/Xsession.d. Isso deveria ser feito na pilha do PAM. Você deve ter uma session optional pam_gnome_keyring.so auto_startentrada em um ou mais arquivos em /etc/pam.d. Infelizmente eu não uso o debian, então não sei qual. Se não estiver lá, esse é o problema.
Patrick

Sem adicionar a /etc/X11/Xsession.d, ps aux | grep gnomemostra que o gnome-keyring-daemon não é iniciado. (No entanto, removi-o.) /usr/share/doc/libpam-gnome-keyring/README.DebianDiz 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(novas linhas removidas por comentários). Fez isso, adicionado a /etc/pam.d/kdm, reiniciou o kdm. Nenhum carregamento do agente, nenhum disponível.
22414 adrelanos

Estou perdida. Se você está usando kdme o coloca /etc/pam.d/kdm, deve ter feito. A única coisa que posso sugerir se você ainda deseja seguir essa rota é vasculhar os logs. Desculpe a esperança falsa, pensei que isso seria uma solução simples para você.
Patrick

0

Eu fiz alguma investigação e o resultado é surpreendente para mim, mas simples:

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

Mas se você gpg-agentnem sabe que algo aconteceu, dificilmente poderá saber uma frase secreta que não conhecia antes.


Parece que eu descobri uma maneira, como isso não pode ser resolvido.
Adrelanos

Minha pergunta original ainda está aberta. (Qual é Can I enter my gpg password just once and unlock all my sub keys (signing, decryption, authentication)?) Espero canalizar a senha gpg-agentou gpg-connect-agenté de alguma forma possível.
Adrelanos
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.