Quando eu entro, ele fica travado até que o init do crng seja concluído

22

Quando inicio sessão com o LightDM no meu laptop executando o Debian Unstable, ele começou a travar recentemente por cerca de 2 minutos até journalctlmostrar a mensagem kernel: random: crng init done. Quando pressiono teclas aleatórias no teclado enquanto ele desliga, ele entra mais rápido (em torno de 10 segundos). Antes que eu não tivesse esse problema, existe alguma maneira de corrigi-lo?

Editar: usando em linux-image-4.15.0-3-amd64vez de linux-image-4.16.0-1-amd64funciona, mas não quero usar um kernel mais antigo.

wb9688
fonte
11
Parece que algo está consumindo toda a piscina de entropia.
Kusalananda
11
O assunto systemd-journalde sua necessidade (alegada) de que o CSPRNG seja semeado surgiu recentemente em vários fóruns de discussão. Veja lists.freedesktop.org/archives/systemd-devel/2018-May/… por exemplo.
JdeBP
11
sudo apt install haveged sudo systemctl enable haveged
Virusmxa 10/0818

Respostas:

15

Parece que algum componente do seu sistema bloqueia enquanto tenta obter dados aleatórios do kernel (isto é, lendo /dev/urandomou chamando getrandom()) devido à insuficiente entropia (aleatoriedade) disponível.

Não tenho uma explicação pronta para explicar por que o problema depende de uma versão específica do kernel ou de qual componente do seu sistema realmente bloqueia, mas, independentemente da causa raiz,

De fato, como apontado por Bigon em sua resposta , parece ser um bug do kernel introduzido na 4.16:

Esse bug é introduzido pela alteração "crng_init> 0" para "crng_init> 1" neste commit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ? id = 43838a23a05fbd13e47d750d3dfd77001536dd33

Essa alteração inadvertidamente afeta o urandom_read, fazendo com que o estado crng_init == 1 seja tratado como não inicializado e causando o bloqueio do urandom, apesar desse estado existir especificamente para suportar necessidades não criptográficas no momento da inicialização: https://git.kernel.org/pub /scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c#n1863

A reversão de 43838a23a05f ("random: fix crng_ready () test") corrige o bug (testado com 4.16.5-1), mas isso pode causar problemas de segurança (CVE-2018-1108 é mencionado em 43838a23a05f). Estou testando uma correção mais localizada que deve ser mais agradável ao montante.

( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572#82 )

... Ainda assim, você pode tentar usar havegedou rng-toolscoletar entropia mais rapidamente.

intelfx
fonte
4
Parece que no Linux 4.16.4 algumas coisas relacionadas ao CRNG foram alteradas por causa do CVE-2018-1108. rng-toolsnão funciona no meu laptop, porque o Intel Celeron N2840 não suporta AES-NI e, portanto, não possui um TRNG embutido.
Wb9688
3
Último upload do rng-toolsdebian a partir de 2011. Você tem um rng-tools5pacote que foi introduzido recentemente
Bigon
@Bigon TBH Eu não sei nada sobre pacotes no Debian; Eu não uso isso. Este é um conselho geral, não específico do Debian.
Intelfx # 10/18
11
Confirmado com o Ubuntu 18.04 (biônico). Tive esse problema depois de instalar dropbear-initramfse desbloquear meu disco remotamente com cryptroot-unlock. Simplesmente apt install rng-toolsfaz as coisas funcionarem magicamente. Obrigado!
um nerd pago 08/07
A instalação havegedfuncionou para mim. Eu tenho um antigo Intel Core 2 Duo que não possui um gerador de números aleatórios verdadeiros.
Balau
7

É uma alteração (bug?) No kernel, veja: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572

Atenuar essa instalação rng-tools5parece ajudar. Observe que não sei se a instalação deste pacote afeta ou não a forte geração de chaves de criptografia

Edit: Aparentemente, a atualização do util-linux 2.32 deve corrigir o problema

Bigon
fonte
Não, o util-linux 2.32 não resolve o problema para mim.
vinc17
5

É um bug do kernel que pode acontecer com diferentes kernels.

Executando apt-get install rng-toolscomosu no terminal deve funcionar.

Giulio G
fonte
A execução do apt-get install rng-tools como su no terminal corrigiu o problema com a minha caixa linux.
Giovanni Cannizzaro
2

rng-toolssó ajuda se o seu sistema tiver suporte de hardware para números aleatórios, como a " Chave Segura " da intel . Assim inventado com Ivy Bridge . Meus sistemas com processadores 1037u (baseados em ivy bridge) não não têm esse suporte de hardware. Portanto rng-tools, não ajude.

Em outro sistema aqui com um processador Sandy Bridge i3, rng-toolsajude. O rngdserviço deve ser iniciado muito cedo no processo de inicialização, a fim de preencher a fila de entropia. Este é o caso da sequência de inicialização do Ubuntu, não sei se isso é verdade para outras distribuições, mas você pode descobrir, pois o início de rngdé logado no syslog.

J. Schwender
fonte
11
Isso não é inteiramente verdade. Você pode executar rngd -f -r /dev/urandoma bomba /dev/urandompara /dev/random, mas é aconselhável não executá-lo desta maneira, é uma opção ..
SLM
2

Também pode acontecer após a exclusão da partição de troca

Pendurado antes kernel: random: crng init done também pode acontecer após a exclusão de uma partição de troca.

Se uma partição de troca for excluída, o arquivo de configuração /etc/initramfs-tools/conf.d/resume deverá estar completamente vazio ou lido RESUME=. Exclua qualquer número UUID. RESUME=NONEnão é válido.

$ sudo vim /etc/initramfs-tools/conf.d/resume

O sistema de arquivos RAM inicial requer atualização para que essas alterações entrem em vigor:

$ sudo update-initramfs -u
Serge Stroobandt
fonte
1

No meu caso, eu estava executando um Debian Buster (kernel 4.19.0-4-amd64 VM ) no Proxmox VE.

A solução foi adicionar um dispositivo VirtIO RNG à VM. No Proxmox, isso é feito editando o arquivo de configuração da VM .

No meu caso, editei /etc/pve/qemu-server/110.confe adicionei a seguinte linha:

args: -device virtio-rng-pci

Não foram necessárias ferramentas de espaço do usuário (por exemplo, rng-toolsou haveged).

Jonathon Reinhart
fonte