Por lo general, la lectura de /dev/randomproduce 100-500 bytes y bloques, esperando que se recopile una entropía.
¿Por qué la escritura de información /dev/randompor otros procesos no acelera la lectura? ¿No debería proporcionar la entropía requerida?
Puede ser útil para desbloquear gpgo software similar sin reiniciarlo y volver a ingresarlo todo, para generar claves no súper secretas, etc.

/dev/urandomlugar./dev/urandomes tan seguro como/dev/randompara el uso criptográfico , el comportamiento de/dev/randomes un mal diseño.gpg --gen-keyde/dev/randoma/dev/urandomsin reiniciar?gpgha/dev/randomcodificado. Puede cambiar su configuración de udev para hacer/dev/randomel mismo dispositivo que/dev/urandom, entre otras posibilidades.gpg --gen-key, por lo tanto, volver a ingresar los datos que solicita de forma interactiva (o usar métodos más inteligentes como especificar más parámetros de línea de comandos). También se perderá el tiempo de CPU que genera el cebado (gpg puede funcionar un minuto, imprime algunos+es y luego solicita datos aleatorios adicionales). Y da la sensación de "volvamos e iremos por otra ruta" en lugar de "tomemos un martillo y lo obliguemos a avanzar" ...Respuestas:
Puede escribir
/dev/randomporque es parte de la forma de proporcionar bytes aleatorios adicionales/dev/random, pero no es suficiente, también debe notificar al sistema que hay entropía adicional a través de unaioctl()llamada.Necesitaba la misma funcionalidad para probar mi programa de configuración de tarjeta inteligente , ya que no quería esperar a que mi mouse / teclado generara lo suficiente para las varias llamadas
gpgque se hicieron para cada ejecución de prueba. Lo que hice fue ejecutar el programa Python, que sigue, en paralelo a mis pruebas. Por supuesto, no debe usarse en absoluto para lagpggeneración de claves reales , ya que la cadena aleatoria no es aleatoria en absoluto (la información aleatoria generada por el sistema seguirá intercalada). Si tiene una fuente externa para establecer la cadenarandom, entonces debería poder tener una entropía alta. Puede verificar la entropía con:El programa:
(No olvides matar el programa una vez que hayas terminado).
fuente
rngd. Está disponible como paquete en la mayoría de las distribuciones (¿todas?).random = "3420348024823049823-984230942049832423l4j2l42j"ver xkcd.com/221Por lo general, está diseñado por desarrolladores de kernel y documentado en
man 4 random:fuente
Anthony ya explicó que escribir a
/dev/randomno aumenta el recuento de entropía y mostró cómo el ioctl RNDADDENTROPY (ver al azar (4) ) puede usarse para acreditar la entropía. Obviamente no es realmente seguro, así que aquí hay una alternativa cuando hay disponible un generador de números aleatorios de hardware.Las siguientes implementaciones toman 512 bytes (4096 bits) de aleatoriedad
/dev/hwrngy lo envían al grupo de entropía (acreditar 4 bits de entropía por byte, esta es una elección arbitraria de mi parte). Después de eso, invocará la llamada al sistema select (2) para bloquear cuando el grupo de entropía esté lleno (documentado en la página de manual al azar (4) ).Una versión de Python:
Dado que la iso de Arch Linux no tenía Python instalado, aquí también hay una versión de Perl:
Esto es probablemente lo que hace el programa rngd (parte de rng-tools ) (sin verificar), excepto que usa herramientas (Python o Perl) que ya están comúnmente disponibles.
fuente
/dev/urandomlugar de hacerlo/dev/hwrngsi no le importan los valores aleatorios inseguros .getrandom()llamada al sistema se usa con hwrng en núcleos anteriores a 4.8-rc1 que produce un comportamiento de bloqueo. Una solución alternativa es hacerread()dos veces desde/dev/random, ver github.com/Lekensteyn/archdir/commit/…