Cuando inicio sesión, se cuelga hasta que crng init haya terminado

22

Cuando inicio sesión con LightDM en mi computadora portátil con Debian Unstable, recientemente comenzó a colgarse durante unos 2 minutos hasta que journalctlaparece el mensaje kernel: random: crng init done. Cuando presiono teclas aleatorias en mi teclado mientras se cuelga, se registra más rápido (alrededor de 10 segundos). Antes de no tener este problema, ¿hay alguna forma de solucionarlo?

Editar: usando en linux-image-4.15.0-3-amd64lugar de linux-image-4.16.0-1-amd64trabajos, pero no quiero usar un kernel anterior.

wb9688
fuente
1
Parece que algo se está comiendo todo el grupo de entropía.
Kusalananda
1
El tema systemd-journaldy su (supuesta) necesidad de sembrar el CSPRNG ha surgido en varios foros de discusión recientemente. Ver lists.freedesktop.org/archives/systemd-devel/2018-May/… por ejemplo.
JdeBP
1
sudo apt install haveged sudo systemctl enable haveged
virusmxa

Respuestas:

15

Parece que algunos componentes de los bloques de su sistema al intentar obtener datos aleatorios del núcleo (es decir, leer /dev/urandomo llamar getrandom()) debido a la entropía (aleatoriedad) insuficiente disponible.

No tengo una explicación inmediata de por qué el problema depende de una versión particular del núcleo, o qué componente de su sistema realmente bloquea, pero independientemente de la causa raíz,

De hecho, como señaló Bigon en su respuesta , parece ser un error del núcleo introducido en 4.16:

Este error es introducido por el cambio "crng_init> 0" a "crng_init> 1" en este commit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ? id = 43838a23a05fbd13e47d750d3dfd77001536dd33

Este cambio sin darse cuenta afecta a urandom_read, haciendo que el estado crng_init == 1 sea tratado como no inicializado y que bloquee urandom, a pesar de que este estado existe específicamente para admitir necesidades no criptográficas en el momento del arranque: https://git.kernel.org/pub /scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c#n1863

Revertir 43838a23a05f ("random: fix crng_ready () test") corrige el error (probado con 4.16.5-1), pero esto puede causar problemas de seguridad (CVE-2018-1108 se menciona en 43838a23a05f). Estoy probando una solución más localizada que debería ser más apetecible para aguas arriba.

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

... Aún así, puede intentar usar havegedo rng-toolspara recolectar entropía más rápido.

intelfx
fuente
44
Parece que en Linux 4.16.4 algunas cosas relacionadas con el CRNG han cambiado debido a CVE-2018-1108. rng-toolsno funciona en mi computadora portátil, porque el Intel Celeron N2840 no es compatible con AES-NI y, por lo tanto, no tiene un TRNG incorporado.
wb9688
3
Última carga de rng-toolsDebian desde 2011. Tiene un rng-tools5paquete que se ha introducido recientemente
Bigon,
@Bigon TBH No sé nada sobre paquetes en Debian; No lo uso. Este es un consejo general, no específico de Debian.
intelfx
1
Confirmado con Ubuntu 18.04 (biónico). Tuve este problema después de instalar dropbear-initramfsy desbloquear mi disco de forma remota cryptroot-unlock. Simplemente apt install rng-toolshace que las cosas funcionen mágicamente. ¡Gracias!
un nerd pagado el
La instalación havegedfuncionó para mí. Tengo un viejo Intel Core 2 Duo que no tiene un verdadero generador de números aleatorios.
Balau
7

Es un cambio (¿error?) En el núcleo, consulte: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572

Para mitigar esa instalación rng-tools5parece ayudar. Tenga en cuenta que no sé si la instalación de este paquete tiene un impacto o no en la generación de claves de criptografía fuerte

Editar: aparentemente actualizar util-linux 2.32 debería solucionar el problema

Grande en
fuente
No, util-linux 2.32 no me soluciona el problema.
vinc17
5

Es un error del núcleo que puede ocurrir con diferentes núcleos.

Ejecutar apt-get install rng-toolscomo suen la terminal debería funcionar.

Giulio G
fuente
Ejecutar apt-get install rng-tools como su en el terminal ha solucionado el problema con mi linux box.
Giovanni Cannizzaro
2

rng-toolssolo ayuda si su sistema tiene soporte de hardware para números aleatorios, como la " Clave segura " de Intel . Así inventado con Ivy Bridge . Mis sistemas con procesadores 1037u (basados ​​en ivy bridge) no tienen este soporte de hardware. Por rng-toolslo tanto , no ayudes.

En otro sistema aquí con un procesador Sandy Bridge i3 rng-toolsayuda. El rngdservicio debe iniciarse muy temprano en el proceso de arranque para completar la cola de entropía. Este es el caso en la secuencia de arranque con Ubuntu, no sé si esto es cierto para otras distribuciones, pero puede averiguarlo, ya que el inicio de rngdsesión se registra en syslog.

J. Schwender
fuente
1
Esto no es del todo cierto. Usted podría funcionar rngd -f -r /dev/urandompara bombear /dev/urandomhacia /dev/random, aunque es recomendable no ejecutarlo de esta manera, es una opción ..
SLM
2

También puede suceder después de eliminar la partición de intercambio

Colgar antes kernel: random: crng init donetambién puede ocurrir después de eliminar una partición de intercambio.

Si se elimina una partición de intercambio, el archivo de configuración /etc/initramfs-tools/conf.d/resume debe estar completamente vacío o leído RESUME=. Eliminar cualquier número de UUID. RESUME=NONEno es válido.

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

El sistema de archivos RAM inicial requiere actualización para que estos cambios surtan efecto:

$ sudo update-initramfs -u
Serge Stroobandt
fuente
1

En mi caso, estaba ejecutando una 4.19.0-4-amd64máquina virtual Debian Buster (kernel ) en Proxmox VE.

La solución fue agregar un dispositivo VirtIO RNG a la VM. En Proxmox, esto se hace editando el archivo de configuración de VM .

En mi caso, edité /etc/pve/qemu-server/110.confy agregué la siguiente línea:

args: -device virtio-rng-pci

No se necesitaban herramientas de espacio de usuario (p. Ej. rng-toolsO haveged).

Jonathon Reinhart
fuente