As liberações do gnupg de 2.1.16 (atualmente 2.1.17) bloqueiam a espera de entropia apenas na primeira chamada .
Nota: não se trata de uma tentativa de gerar uma chave, apenas para descriptografar um arquivo e iniciar o agente.
A primeira vez que o gpg-agent é iniciado, diretamente com gpg2 file.gpg
ou usando um aplicativo como pass
, o pinentry aparece e, assim que eu digito minha senha e pressiono, Enterela fica suspensa por cerca de 15s.
Todas as chamadas subseqüentes, dentro da janela do default-cache-ttl, são executadas imediatamente.
Em execução no --debug-all
modo, o período em que ocorre o travamento é impresso 1 :
gpg: DBG: chan_6 <- S PROGRESS need_entropy X 30 120
gpg: DBG: chan_6 <- S PROGRESS need_entropy X 120 120
gpg: DBG: chan_6 <- S PROGRESS need_entropy X 30 120
gpg: DBG: chan_6 <- S PROGRESS need_entropy X 120 120
gpg: DBG: chan_6 <- S PROGRESS need_entropy X 30 120
...
Eu instalei o rng-tools para complementar o pool de entropia:
cat /proc/sys/kernel/random/entropy_avail
4094
e comparado com uma máquina com a mesma versão do gnupg que não possui rng-tools ou não possui instalado, que não apresenta atraso:
cat /proc/sys/kernel/random/entropy_avail
3783
Portanto, parece haver entropia suficiente na piscina. Isso foi testado nos núcleos 4.8.13 e 4.9.
O gpg usa um pool diferente? Como posso fornecer entropia suficiente ou eliminar o atraso de 15s ao iniciar o agente?
1. O log de depuração completo .
rng-tools
como explicar aqui? serverfault.com/questions/214605/gpg-not-enough-entropy