rngd
página de manual de rngd describe bastante bien lo que está haciendo el demonio:
Este daemon alimenta los datos de un generador de números aleatorios a la agrupación de entropía de números aleatorios del kernel, después de verificar primero los datos para asegurarse de que sean correctamente aleatorios.
[...]
Las opciones -r
o --rng-device
se pueden usar para seleccionar una fuente de entrada alternativa, además del /dev/hwrandom
predeterminado.
Para ser específico, el comando que ejecutó extrajo números aleatorios de /dev/urandom
y lo devolvió al grupo de entropía del kernel de Linux mientras lo registraba como "entropía real y reciente", por lo que también está disponible en /dev/random
(esto La explicación está un poco simplificada y, técnicamente, el proceso es un poco más complicado, pero esta es la idea detrás de rngd
call you post).
Dichas herramientas se usan comúnmente en máquinas virtuales o dispositivos integrados que no reciben suficiente entropía para llenar el grupo de entropía, ya que no tiene acceso a todas las fuentes de entropía que tendría una computadora de "hardware real" (sincronización del disco duro, ... ).
Números aleatorios en Linux
Y listo, de repente todo funcionó sin ningún esfuerzo en un segundo. ¿Pero como puede ser eso? ¿Me engañó y me dio números pseudoaleatorios?
Sí, hizo exactamente esto. Linux conoce dos dispositivos aleatorios: /dev/random
de bloqueo cuando un contador de entropía bastante arbitrario decide que no hay suficiente entropía disponible, y /dev/urandom
siempre devuelve nuevos números pseudoaleatorios. Ahora el "generador de números pseudoaleatorios" suena peor de lo que es, de hecho, los números aleatorios de un generador de números aleatorios (criptográficamente robustos, sin errores ni puertas traseras) no se distinguen de los números aleatorios "reales". "La simple realidad de la entropía. O cómo aprendí a dejar de preocuparme y amar al azar" presentada en 32C3 ofrece una excelente introducción en los generadores de números aleatorios y por qué están totalmente bien.
Después de todo, también /dev/random
es un generador de números aleatorios con una decisión bastante arbitraria sobre si la agrupación recibió suficientes bits aleatorios, y la decisión aún más arbitraria de decidir que no recibió suficientes bits aleatorios recientemente.
De todos modos, mezclar en la nueva entropía no es una mala idea, en caso de que los fundamentos matemáticos o la implementación del software tengan algunos problemas, los nuevos bits aleatorios (que no provienen de la agrupación de entropía) harán que sea mucho más difícil romper el conjunto de números al azar. / p>
Cierre: ¿Son seguras las claves generadas?
Como siempre, la respuesta es: depende. Dado que ya estableció un estado aleatorio adecuado del grupo de entropía al hacer que la máquina funcione durante un tiempo (es decir, no configuró el sistema recientemente, sino que ya lo utilizó durante más tiempo, con algunas horas o días más que seguro) para configuraciones típicas), el grupo de entropía se inicializó correctamente y usted tiene números aleatorios correctos de ahora en adelante, sin importar si retroalimenta números aleatorios solo para aumentar el contador de entropía del Kernel.
En general, los problemas de "no hay suficiente entropía" de GnuPG que se ejecuta en Linux se basan en dos decisiones discutibles: el kernel de Linux que proporciona /dev/random
con su arbitraria "No tengo suficientes semánticas de bits aleatorios" y GnuPG confiando en esto en lugar de /dev/urandom
. Lamentablemente, no hay manera de elegir otra fuente de entropía en GnuPG.