mensagem syslog na inicialização: leitura urandom não inicializada

mensagem syslog na inicialização: leitura urandom não inicializada

CPU éSOC AMD GX-412TC:

GX-412TC GE412TIYJ44JB 4 6W 2MB 1,0GHz/ 1,4GHz N/AN/A DDR-1333 0-90°C

que não possui rdrand:

grep rdrand /proc/cpuinfo
# nothing

Vejo as seguintes mensagens syslogapós a inicialização da máquina:

kernel: random: dd: uninitialized urandom read (512 bytes read)
kernel: random: cryptsetup: uninitialized urandom read (32 bytes read)

o que exatamente essas mensagens significam e o que posso fazer a respeito?

Isso significa ddtentar cryptsetupler /dev/urandom, mas não há entropia suficiente?

Estou usando havegedo daemon, mas ele é iniciado tardiamente no processo de inicialização, depois que esta mensagem aparece.

Aqui está minha sequência de inicialização do script de inicialização:

/etc/rcS.d/S01hostname.sh
/etc/rcS.d/S01mountkernfs.sh
/etc/rcS.d/S02mountdevsubfs.sh
/etc/rcS.d/S03checkroot.sh
/etc/rcS.d/S04checkfs.sh
/etc/rcS.d/S05mountall.sh
/etc/rcS.d/S06bootmisc.sh
/etc/rcS.d/S06procps
/etc/rcS.d/S06urandom
/etc/rcS.d/S07crypto-swap
/etc/rc2.d/S01haveged
/etc/rc2.d/S01networking
/etc/rc2.d/S04rsyslog
/etc/rc2.d/S05cron
/etc/rc2.d/S05ssh

as mensagens no syslog vêm destes dois scripts:

/etc/rcS.d/S06urandom  -> dd
/etc/rcS.d/S07crypto-swap -> cryptsetup

Deve havegedser iniciado antes urandom?

Estou usando o Debian 10.

Além disso, devo acrescentar que esta máquina é uma placa vazia, sem teclado. A única interface é um console serial. Acho que isso afeta a entropia disponível e é a razão pela qual instalei havegedem primeiro lugar. Sem haveged, o sshddaemon demoraria vários minutos para iniciar, porque não tem entropia suficiente.

Responder1

Seu diagnóstico está correto: foi tentada uma leitura em um pool de entropia vazio. Isso é "fome de entropia no tempo de inicialização".

Você pode aproveitar o systemd-boot se tiver um sistema EFI,ignore o aviso(você está usando uma criptografia previsível, mas emmaioriacasos de uso que ainda são melhores do que nenhuma criptografia) ou tente creditar a entropia de fontes alternativas -se disponível- adicionando isso à linha de comando do kernel

rng_core.default_quality=X

(comece em X = 1000 e desça a partir daí).

Existem outras técnicas para coletar entropia; um SOC pode ter alguns pinos disponíveis e existem módulos de driver de hardware que permitem coletar entropia deles. É então apenas uma questão de conectar alguma configuração adequada de transistor e resistor (ou, em alguns casos, um microfone de eletreto) para captar algum ruído térmico.

Como alternativa, os kernels da série 5.4+ possuem uma coleção de entropia mais eficiente, o que pode ser suficiente.

Responder2

Para que o haveged funcione, ele deve ser compatível com o seu kernel - há um problema com o haveged não fazer nada nas versões do kernel >=5.x, consultehaveged ainda é útil/relevante? #57no GitHub.

O mantenedor teve a gentileza de reintroduzir a funcionalidade, mas esses patches terão que ser lançados e depois incluídos nas várias distros primeiro... a versão antiga ou não inicia ou não faz nada, mesmo que seja em execução (verifique com strace), já que o pool de entropia do kernel não parece mais estar faltando - mas crng init ainda leva tempo por algum motivo.

Ele também precisa ser executado muito cedo, portanto, se você estiver usando o initramfs, também deverá iniciar o initramfs, algum tempo antes de usar o dispositivo aleatório. Em um sistema init tradicional, o haveged deve ser executado assim que /proc /sys /devestiver disponível.

Não tenho certeza de quanto tempo leva exatamente para enviar entropia ao kernel ... ele precisa primeiro coletar a aleatoriedade por conta própria e executar alguns testes de qualidade nisso também. No meu último teste (com haveged corrigido), houve um atraso de meio segundo entre o início do haveged e o relatório do kernel random: crng init done.

Além de haveged, você também pode considerar salvar/restaurar uma semente aleatória e, se tiver rede, um pouco de tráfego pode ajudar o kernel a coletar alguma entropia também.

informação relacionada