Por que estou constantemente ficando sem entropia?

3

Estou tentando criar uma nova chave GPG e continuo recebendo este erro bem conhecido:

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 294 more bytes)

Assim, após 20 minutos de movimentos do mouse que nem resultaram no incentivo +++++ s na parte inferior do terminal, tentei o que parece ter resolvido o problema para os outros: Instalei rng-tools e executei:

rngd -r /dev/random

Mas isso também não fez nada. Nenhuma mudança em tudo. Quando eu corro:

cat /proc/sys/kernel/random/entropy_avail

Eu nunca recebo uma saída acima de 60 ou mais.

Então, além do problema imediato - ou seja, não ser capaz de gerar uma nova chave GPG - por que minha máquina estaria comendo entropia tão rapidamente? Parece que deve haver um problema subjacente que deve ser abordado.

    
por kittykittybangbang 23.07.2015 / 23:14

1 resposta

1

Para obter um pouco mais de entropia, verifique minha resposta no Server Fault para Gerar entropia para a chave PGP .

O resumo dessa resposta é:

  • gera IOs de rede e disco;
  • use haveged (mas tenha cuidado quando estiver em um ambiente de VM, consulte o link).

Quanto ao seu uso do rngd, ele não "funcionará". O programa rngd é uma espécie de coletor de coisas aleatórias que, após alguns desvios e branqueamentos, será usado para alimentar um pool de entropia que será usado para gerar um número aleatório usando um PRNG. Então rngd é um coletor para fornecer "entradas" para o PRNG do Linux. Quando você usa /dev/random , o Linux estima o conjunto de entropia e, se ele decidir que é bom o suficiente, ele o usará para gerar um novo número aleatório para /dev/random . Verifique este artigo técnico sobre números aleatórios no LWN, consulte o capítulo "Recomendações do administrador" .

Basicamente, ao chamar /dev/random ou gpg, você está usando (e "esgotando") o mesmo pool de entropia. Por isso não vai ajudar / trabalhar. Use um RNG de hardware como fonte para rngd ou qualquer fonte como webcam, microfone, etc., mas você precisará de drivers apropriados para vinculá-los ao rngd. E isso depende se você estiver usando uma VM e qual distro você usa.

Observação: se você estiver executando o bare metal (não em uma VM convidada), poderá usar o TPM para um RNG de hardware. O TPM pode não ser recomendado se o seu pior inimigo for a NSA ;-) leia on-line sobre o TPM. Mas se você quiser usá-lo, aqui está uma maneira de vincular o TPM ao rngd (disclaimer eu escrevi este artigo): link

E verifique esta apresentação em PDF para obter informações onde a entropia está sendo usada :-) link

    
por 10.08.2015 / 11:27