GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué escribir en /dev/random no hace que la lectura paralela desde /dev/random sea más rápida?

Puedes escribir a /dev/random porque es parte de la forma de proporcionar bytes aleatorios adicionales a /dev/random , pero no es suficiente, también debe notificar al sistema que hay entropía adicional a través de un ioctl() llamar.

Necesitaba la misma funcionalidad para probar el programa de configuración de mi tarjeta inteligente, ya que no quería esperar a que mi mouse/teclado generara suficiente para varias llamadas a gpg que se realizaron para cada ejecución de prueba. Lo que hice fue ejecutar el programa Python, que sigue, en paralelo a mis pruebas. Por supuesto, no debería ser usado para nada real gpg generación de claves, ya que la cadena aleatoria no es aleatoria en absoluto (la información aleatoria generada por el sistema aún se intercalará). Si tiene una fuente externa para configurar la cadena para random , entonces debería poder tener una alta entropía. Puedes comprobar la entropía con:

cat /proc/sys/kernel/random/entropy_avail

El programa:

#!/usr/bin/env python
# For testing purposes only 
# DO NOT USE THIS, THIS DOES NOT PROVIDE ENTROPY TO /dev/random, JUST BYTES

import fcntl
import time
import struct

RNDADDENTROPY=0x40085203

while True:
    random = "3420348024823049823-984230942049832423l4j2l42j"
    t = struct.pack("ii32s", 8, 32, random)
    with open("/dev/random", mode='wb') as fp:
        # as fp has a method fileno(), you can pass it to ioctl
        res = fcntl.ioctl(fp, RNDADDENTROPY, t)
    time.sleep(0.001)

(No olvide cerrar el programa una vez que haya terminado).


Por lo general, está diseñado por desarrolladores del kernel y documentado en man 4 random :

Writing to /dev/random or /dev/urandom will update the entropy pool
with the data written, but this will not result in a higher entropy
count.  This means that it will impact the contents read from both
files, but it will not make reads from /dev/random faster.

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

  2. ¿Qué tan portátiles son /dev/stdin, /dev/stdout y /dev/stderr?

  3. ¿Cuándo usar /dev/random Vs /dev/urandom?

  4. Linux:¿Qué significa la letra 'u' en /dev/urandom?

  5. Cómo mapear dispositivos /dev/sdX y /dev/mapper/mpathY desde el dispositivo /dev/dm-Z

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

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

RdRand de /dev/random

¿Por qué dd de /dev/random da diferentes tamaños de archivo?

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

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