La CPU esAMD GX-412TC SOC:
GX-412TC GE412TIYJ44JB 4 6W 2MB 1.0GHz/ 1.4GHz N/A/D DDR-1333 0-90°C
que no tiene rdrand
:
grep rdrand /proc/cpuinfo
# nothing
Veo los siguientes mensajes syslog
después del inicio de mi máquina:
kernel: random: dd: uninitialized urandom read (512 bytes read)
kernel: random: cryptsetup: uninitialized urandom read (32 bytes read)
¿Qué significan exactamente estos mensajes y qué puedo hacer al respecto?
¿Significa dd
que cryptsetup
intento leer /dev/urandom
pero no hay suficiente entropía?
Estoy usando haveged
un demonio, pero se inicia tarde en el proceso de inicio, después de que aparece este mensaje.
Aquí está la secuencia de inicio de mi script de arranque:
/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
los mensajes en syslog provienen de estos dos scripts:
/etc/rcS.d/S06urandom -> dd
/etc/rcS.d/S07crypto-swap -> cryptsetup
¿Se debe haveged
empezar antes urandom
?
Estoy usando Debian 10.
Además, debo agregar que esta máquina es una placa básica, sin teclado. La única interfaz es una consola serie. Creo que esto tiene un efecto en la entropía disponible y es la razón por la que lo instalé haveged
en primer lugar. Sin haveged
, el sshd
demonio no se iniciaría hasta dentro de varios minutos, porque no tiene suficiente entropía.
Respuesta1
Su diagnóstico es correcto: se intentó una lectura en un grupo de entropía vacío. Esto es "hambre de entropía en el tiempo de arranque".
Puede aprovechar systemd-boot si tiene un sistema EFI,ignora la advertencia(estás usando una criptografía predecible, pero enmayoríacasos de uso que siguen siendo mejores que no utilizar ninguna criptografía), o intentar acreditar la entropía de fuentes alternativas:si está disponible- agregando esto a la línea de comando del kernel
rng_core.default_quality=X
(comience en X=1000 y baje desde allí).
Existen otras técnicas para recolectar entropía; un SOC puede tener algunos pines disponibles y hay módulos de controladores de hardware que permiten recolectar entropía de ellos. Entonces es sólo cuestión de conectar alguna configuración adecuada de transistor y resistencia (o en algunos casos, un micrófono electreto) para captar algo de ruido térmico.
Alternativamente, los núcleos de la serie 5.4+ tienen una recolección de entropía más eficiente, lo que podría ser suficiente.
Respuesta2
Para que haveged funcione, tiene que ser compatible con su kernel; hay un problema porque haveged no hace nada en las versiones del kernel >=5.x, consulte¿Haged sigue siendo útil/relevante? #57en GitHub.
El responsable del mantenimiento tuvo la amabilidad de reintroducir la funcionalidad, pero esos parches tendrán que publicarse y luego incorporarse a las distintas distribuciones primero... la versión anterior no se iniciará en absoluto o en realidad no hará nada, incluso si es ejecutándose (verifique con strace
), ya que el grupo de entropía del kernel ya no parece faltar, pero crng init todavía lleva tiempo por alguna razón.
También debe ejecutarse desde el principio, por lo que si está usando initramfs, también debe comenzar a ejecutar haveged en initramfs, algún tiempo antes de usar el dispositivo aleatorio. En un sistema de inicio tradicional, haveged debería ejecutarse tan pronto como /proc
/sys
/dev
esté disponible.
No estoy seguro de cuánto tiempo tarda exactamente Haveged en enviar entropía al núcleo... primero tiene que recolectar aleatoriedad por sí solo y también realiza algunas pruebas de calidad al respecto. En mi última prueba (con Haveged parcheado) hubo como medio segundo de retraso entre el inicio de Haveged y el informe del kernel random: crng init done
.
Además de haveged, también puedes considerar guardar/restaurar una semilla aleatoria y, si tienes red, un poco de tráfico podría ayudar al kernel a recolectar algo de entropía también.