Recentemente, meu gerenciador de senhas de passe começou a levar mais de 45 segundos para abrir o prompt de senha do agente gpg para minha senha mestra, o que é super irritante quando estou tentando fazer login em um site e tenho que ficar sentado olhando para a senha solicitar por um minuto.
Comecei a fazer alguns testes e descobri que parece haver algo errado com o agente gpg2. Quando executo o gpg1, sem nenhum agente configurado, é muito rápido (e isso inclui o tempo para digitar minha senha):
$ time gpg -vvv -d BitBucket.gpg
real 0m2.940s
user 0m0.024s
sys 0m0.004s
Mas quando executo o gpg2 no mesmo arquivo (agente necessário para usar o gpg2), é muito lento:
$ time gpg2 -vvv -d BitBucket.gpg
real 0m53.421s
user 0m0.000s
sys 0m0.004s
No entanto, agora que o agente tem minha senha armazenada em cache, é rápido novamente:
$ time gpg2 -vvv -d BitBucket.gpg
real 0m0.126s
user 0m0.004s
sys 0m0.000s
Não é a descriptografia que é lenta - uma vez que o prompt de senha finalmente aparece, ele descriptografa em um período de tempo mais ou menos normal. Só que o agente demora uma eternidade para carregar e exibir o prompt de senha.
Os logs detalhados não produzem nada útil. A saída se parece com isso (informações irrelevantes e/ou confidenciais substituídas por <angle-bracketed text>
:
$ gpg2 -vvv -d BitBucket.gpg
gpg: using character set 'utf-8'
<key parameters>
:pubkey enc packet: version 3, algo 1, keyid <X>
data: [2048 bits]
gpg: public key is <Y>
gpg: using subkey <Y> instead of primary key <Z>
[...here it locks up for 45-ish seconds and then pops up the agent prompt]
gpg: public key encrypted data: good DEK
<key parameters>
:encrypted data packet:
length: 200
mdc_method: 2
gpg: using subkey <Y> instead of primary key <Z>
gpg: encrypted with 2048-bit RSA key, ID <Y>, created 2012-03-07
<ME>
gpg: AES256 encrypted data
<key parameters>
:literal data packet:
mode b (62), created 1525637737, name="",
raw data: 151 bytes
gpg: original file name=''
<the content of the password file>
gpg: decryption okay
Eu tentei matar e recarregar manualmente gpg-agent
com a --log-file
opção conforme descrito na página de manual, esperando obter uma explicação do que estava demorando tanto, mas a única linha que foi impressa depois que fiz várias operações de descriptografia foi:
2019-07-24 17:49:13 gpg-agent[19648] gpg-agent (GnuPG) 2.1.11 started
O que obviamente não é muito útil!
Tentei alterar o pinentry-program
no meu ~/.gnupg/gpg-agent.conf
, mas GUIs diferentes se comportaram de maneira semelhante.
Eu encontrei este tópico , mas parece ser sobre criptografia (isso seria plausivelmente bloqueado devido à falta de aleatoriedade, mas a verdadeira aleatoriedade parece uma necessidade improvável de iniciar o agente gpg).
Eu também encontrei um tópico sobre --check-trustdb
ser lento e às vezes executar em todos os comandos, mas eu --check-trustdb
mesmo executei e terminou sem um atraso perceptível:
$ time gpg2 -vvv --check-trustdb
real 0m0.009s
user 0m0.008s
sys 0m0.000s
Alguma ideia do que eu poderia tentar a seguir para chegar ao fundo disso?
Perplexo, fiz a coisa do usuário do Windows e reiniciei meu PC (mesmo que esteja executando o Linux aqui) e, surpreendentemente, o problema desapareceu. Acho que deve ter havido algum tipo de problema de contenção com outro processo em execução.
Voltarei e atualizarei se isso acontecer novamente e for capaz de identificar qual foi o culpado específico. As entradas listadas
lsof
para o gpg-agent não parecem sugerir problemas prováveis, e verifiquei duas vezes para ter certeza de que não havia outros agentes em execução ou processos GPG.