GNU/Linux >> Tutoriales Linux >  >> Linux

/dev/random ¿Extremadamente lento?

Esta pregunta es bastante antigua. Pero sigue siendo relevante, así que voy a dar mi respuesta. Muchas CPU hoy en día vienen con un generador de números aleatorios (RNG) de hardware integrado. Además, muchos sistemas vienen con un módulo de plataforma confiable (TPM) que también proporciona un RNG. También hay otras opciones que se pueden comprar, pero es probable que su computadora ya tenga algo.

Puede usar rngd del paquete rng-utils en la mayoría de las distribuciones de Linux para generar más datos aleatorios. Por ejemplo, en fedora 18, todo lo que tenía que hacer para habilitar la inicialización desde el TPM y la CPU RNG (instrucción RDRAND) era:

# systemctl enable rngd
# systemctl start rngd

Puede comparar la velocidad con y sin rngd. Es una buena idea ejecutar rngd -v -f desde la línea de comandos. Eso le mostrará las fuentes de entropía detectadas. Asegúrese de que todos los módulos necesarios para admitir sus fuentes estén cargados. Para usar TPM, debe activarse a través de las herramientas tpm. actualizar :aquí hay un buen tutorial.

Por cierto, he leído en Internet algunas preocupaciones acerca de que TPM RNG a menudo se rompe de diferentes maneras, pero no leí nada concreto contra los RNG que se encuentran en los chips Intel, AMD y VIA. Usar más de una fuente sería mejor si realmente te importa la calidad de la aleatoriedad.

urandom es bueno para la mayoría de los casos de uso (excepto a veces durante el inicio temprano). La mayoría de los programas hoy en día usan urandom en lugar de random. Incluso openssl hace eso. Ver mitos sobre urandom y comparación de interfaces aleatorias.

En las últimas herramientas rng de Fedora y RHEL/CentOS también se admite la entropía de fluctuación. Puede hacerlo por falta de opciones de hardware o si simplemente confía más en él que en su hardware.

ACTUALIZACIÓN: otra opción para más entropía es HAVEGED (calidad cuestionada). En máquinas virtuales hay un kvm/qemu VirtIORNG (recomendado).

ACTUALIZACIÓN 2: En Linux 5.6, el kernel tiene su propia entropía de fluctuación.


En la mayoría de los sistemas Linux, /dev/random se alimenta de la entropía real reunida por el medio ambiente. Si su sistema no entrega una gran cantidad de datos de /dev/random , probablemente significa que no estás generando suficiente aleatoriedad ambiental para impulsarlo.

No estoy seguro de por qué piensas /dev/urandom es "más lento" o de mayor calidad. Reutiliza un grupo de entropía interno para generar pseudoaleatoriedad, lo que lo convierte en una calidad ligeramente inferior, pero no bloquea. Generalmente, las aplicaciones que no requieren criptografía de alto nivel o de largo plazo pueden usar /dev/urandom fiable.

Intenta esperar un poco y luego lee desde /dev/urandom otra vez. Es posible que hayas agotado el grupo de entropía interno leyendo tanto desde /dev/random , rompiendo ambos generadores, permitiendo que su sistema cree más entropía debería reponerlos.

Consulte Wikipedia para obtener más información sobre /dev/random y /dev/urandom .


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

  3. ¿Cómo codificar en base64 /dev/random o /dev/urandom?

  4. Simulando /dev/random en Windows

  5. DD de /dev/zero a /dev/null... lo que realmente sucede

tty (/dev/tty) vs pts (/dev/pts) en Linux

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

Linux:diferencia entre /dev/console, /dev/tty y /dev/tty0

Cómo usa Linux /dev/tty y /dev/tty0

hacer eco o imprimir /dev/stdin /dev/stdout /dev/stderr

¿Por qué se requieren < o > para usar /dev/tcp?