man 4 random
tiene una descripción muy vaga de las fuentes de entropía del kernel de Linux:
El generador de números aleatorios recopila el ruido ambiental de los controladores de dispositivos y otras fuentes en un grupo de entropía.
Las transferencias de Entropía en papel en el generador de números aleatorios de Linux tampoco son mucho más específicas. Enumera:
add_disk_randomness()
,add_input_randomness()
, yadd_interrupt_randomness()
.
Estas funciones son de random.c
, que incluye el siguiente comentario:
Las fuentes de aleatoriedad del entorno incluyen tiempos entre teclados
, tiempos entre interrupciones de algunas interrupciones y otros
eventos que son (a) no deterministas y (b) difíciles para un
observador externo para medir.
Más abajo, hay una función add_hwgenerator_randomness(...)
indicando soporte para generadores de números aleatorios de hardware.
Toda esa información es bastante vaga (o, en el caso del código fuente, requiere un conocimiento profundo del kernel de Linux para comprender). ¿Cuáles son las fuentes de entropía reales utilizadas? ¿El kernel de Linux admite generadores de números aleatorios de hardware listos para usar?
Respuesta aceptada:
La mayoría del hardware de PC básico tiene un generador de números aleatorios en estos días. VIA Semiconductor los ha puesto en sus procesadores durante muchos años; el kernel de Linux tiene el controlador via-rng para eso. Cuento 34 módulos fuente en drivers/char/hw_random/
directorio en el árbol de origen más reciente, incluidos los controladores para hardware Intel y AMD, y para sistemas que tienen un dispositivo TPM. Puede ejecutar el demonio rng (rngd) para enviar datos aleatorios al grupo de entropía del kernel.