¿Qué fuentes de entropía utiliza el kernel de Linux?


14

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 reúne el ruido ambiental de los controladores de dispositivos y otras fuentes en un grupo de entropía.

Las transferencias de papel de Entropy en el generador de números aleatorios de Linux tampoco son mucho más específicas. Enumera:

  • add_disk_randomness(),
  • add_input_randomness()y
  • add_interrupt_randomness().

Estos functinos son de random.c, que incluye el siguiente comentario:

Las fuentes de aleatoriedad del entorno incluyen los tiempos entre teclados, los tiempos entre interrupciones de algunas interrupciones y otros eventos que son (a) no deterministas y (b) difíciles de medir para un observador externo.

Más abajo, hay una función que add_hwgenerator_randomness(...)indica el 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 y el kernel de Linux es compatible con cualquier generador de números aleatorios de hardware listo para usar?

Respuestas:


4

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 de origen en el drivers/char/hw_random/directorio en el último árbol de origen, 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 núcleo.


Esto parece una gran parte de la respuesta que estaba buscando. Tendré una mirada más profunda a lo que contiene allí tan pronto como pueda hacerlo. Junto con la información ya contenida en la pregunta, esto se siente como una lista completa de fuentes de entropía.
Jens Erat

Y para ver lo que está disponible en una ejecución de PC específica cat /sys/devices/virtual/misc/hw_random/rng_available.
hlovdal

0

Sí, admite generadores de entropía de hardware listos para usar. Esto es necesario para servidores SSL de alta carga con muchas conexiones simultáneas iniciadas por segundo (Gmail, Facebook, Microsoft, etc.). Realmente no es necesario para servidores domésticos o servidores de pequeñas organizaciones. Tenga en cuenta que los generadores de entropía de hardware generalmente usan interfaces PCI, nada lujoso allí, por lo que puede ser compatible fácilmente. No estoy seguro si hay generadores de entropía de hardware propietarios que requieren controladores de código cerrado, probablemente no, ya que no es muy difícil y no es una industria muy rentable (a diferencia de las tarjetas gráficas).

http://en.wikipedia.org/wiki/Hardware_random_number_generator


2
Los servidores de alto volumen no requieren un RNG de hardware más que los servidores de bajo volumen. Una vez que la máquina se ha sembrado con suficiente entropía, puede seguir funcionando en un PRNG para siempre (o al menos durante miles de millones de años, que es lo mismo en la práctica). El tipo de computadoras que realmente necesitan un RNG de hardware son dispositivos integrados que no pueden guardar su estado actual de RNG de forma segura cuando se apagan.
Gilles 'SO- deja de ser malvado'

@Gilles: ¿es válido para otros sistemas que no sean Linux? Sé que Linux hace esto, pero nunca he oído hablar de * BSD, incluido OS X (ni Windwos) que lo hagan.
Jens Erat

1
@JensErat No lo sé. Es fácil de implementar y muy útil, por lo que me sorprendería si el BSD no lo hiciera.
Gilles 'SO- deja de ser malvado'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.