Gerar entropia para chave PGP


12

Estou conectado a uma VM remotamente e tentando gerar uma chave PGP de 4096 bits, ele fica travado para sempre porque não há entropia e, como estou trabalhando na área de trabalho remota, provavelmente não detecta o movimento do mouse como entropia.

Como posso gerar alguns?

Eu tentei, cat /dev/urandom > /dev/nullmas isso não ajuda.

Respostas:


13

A obtenção de dados para fora de /dev/randomou /dev/urandomdefinitivamente é não vai ajudar, tudo o que vai fazer é esgotar o seu pool de entropia, tornando o problema ainda pior. A principal diferença entre esses dois arquivos é que, mesmo quando o kernel ficar sem entropia urandom, continuará gerando dados aleatórios de menor qualidade, enquanto randombloqueará até conseguir reunir dados aleatórios de alta qualidade. O PGP requer os dados aleatórios mais altos possíveis para gerar chaves seguras, portanto, ele sempre será usado /dev/random.

Se você tiver bons dados aleatórios por aí, ou exportar alguns de outros servidores /dev/random, poderá inseri- catlos nos servidores /dev/randompara obter mais entropia. Você nunca deve ter cato mesmo arquivo duas vezes /dev/random.

Se você costuma ficar sem entropia, também pode considerar instalar algo como haveged , um daemon que gera novamente a entropia em segundo plano e preenche /dev/randomconforme necessário.

Também pode ser tentador ligar simbolicamente /dev/randoma /dev/urandom, mas isso deve ser considerado um risco de segurança como qualquer chave gerada usando pode ser menos seguro do que deveriam. Embora possa ajudar a aplicativos menos críticos, você deve considerar todos os outros usos possíveis /dev/random, incluindo outros usuários gerando suas próprias chaves, CSR, etc.


Note que no FreeBSD, /dev/randomé um PRNG de alta qualidade e normalmente não deve ser bloqueado.
— 23415 Kevin Kevin

@ Kevin /dev/randomsão PRNG de alta qualidade em BSD e Linux modernos, com certeza. Mas bloqueará se não houver entropia suficiente disponível. Por outro lado, /dev/urandomnão bloqueará se não houver suficiente disponível, mas sua qualidade aleatória pode sofrer nesse caso. Nos detalhes, existem muitas sutilezas entre implementações aleatórias e aleatórias entre o Linux e os vários BSDs, mas o acima deve ser verdadeiro em todos os AFAIK.
— Huygens

No Linux, você pode gerar mais entropia simplesmente executando ping em um host (por exemplo, ping 8.8.8.8se você possui outro host de rede, tente fazer pings a cada 100ms (se o seu RTT for <100ms, é claro)). E / ou use findpara procurar arquivos no disco rígido e liberar o cache de RAM entre cada pesquisa de arquivo.
— Huygens

@ Huygens: Abra a página de manual que eu vinculei e Ctrl + F "kern.random.sys.seeded"; por padrão, /dev/randomnão bloqueia no FreeBSD.
— Kevin

1
@ Kevin sim, você está certo, o agrupamento ou a colheita de entropia talvez sejam duas maneiras distintas de "semear" o PRNG. E depois de alguns testes na minha caixa BSD, descobri que o aleatório e o aleatório se comportam da mesma maneira, eles bloqueiam quando não conseguem gerar o PRNG bom o suficiente. Tente executar dd if=/dev/random of=/tmp/rndtest bs=64M count=1após uma nova inicialização, foram necessárias duas execuções consecutivas para ver o tempo para gerar o aumento de 64 MB do arquivo. Eu pensei que não veria esse efeito com urandom como entrada, mas o FreeBSD parece estar bloqueando também, ao contrário do Linux.
— Huygens


4

Eu recomendaria gerar suas chaves gpg em sua máquina local, que terão uma aleatoriedade muito melhor que a remota. E depois migre as chaves usando SSH para sua máquina remota.

A geração local será mais rápida (mais fonte de entropia), mais segura (ninguém pode espionar o processo se sua máquina não estiver infectada, melhor aleatoriedade).

Se você ainda deseja gerá-los remotamente: No Linux, você pode gerar mais entropia simplesmente executando ping em um host (por exemplo, ping 8.8.8.8se você possui outro host de rede, tente fazer pings a cada 100ms (se seu RTT for <100ms, é claro). E / ou use findpara procurar arquivos no disco rígido e liberar o cache de RAM entre cada pesquisa de arquivo.

Você também pode instalar, havegedmas ler as limitações se estiver executando em um ambiente virtual: https://wiki.archlinux.org/index.php/Haveged#Virtual_machines


Na minha opinião, esta é a solução certa - +1 de mim.
— MadHatter

3

Em sistemas baseados no Debian, você pode instalar o rng-toolspacote usando atp-get e, em seguida, iniciar o daemon para gerar entropia:

echo HRNGDEVICE=/dev/urandom >> /etc/default/rng-tools && service rng-tools restart

Nos servidores CentOS-6, o rngdaemon é instalado como uma das ferramentas básicas (pelo menos na maioria dos sistemas em que trabalhei) e é possível executar o seguinte comando para iniciá-lo, a fim de gerar entropia:

sed -i \'s|EXTRAOPTIONS=\"\"|EXTRAOPTIONS=\"-r /dev/urandom\"|g\' /etc/sysconfig/rngd && service rngd restart

Eu não acho que usar o urandom como fonte para o rngd seja inteligente. Isso ajudará a esgotar a entropia disponível mais rapidamente e, uma vez esgotado, será uma fonte tendenciosa da entropia. Então, eu evitaria essa solução.
— Huygens

1
sudo yum install haveged && sudo systemctl start haveged

definitivamente funciona em uma VM do CentOS 7.2. Às vezes, você deseja criar chaves GPG em uma vm, se estiver criando um monte e quiser seu chaveiro intacto.

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.