NOMBRE
random, urandom − dispositivos de la fuente de números aleatorios del núcleo
DESCRIPCIÓN
Los ficheros especiales de caracteres /dev/random y /dev/urandom (presente desde la versión 1.3.30 de Linux) proporcionan una interfaz con el generador de números aleatorios del núcleo. El ficheros /dev/random tiene 1 como número major de dispositivo y 8 como número menor de dispositivo. El fichero /dev/urandom tiene 1 como número major de dispositivo y 9 como número menor de dispositivo.
El generador de números aleatorios recoge el ruido ambiental procedente de los manejadores de dispositivo y otras fuentes y lo guarda en un "almacen de entropía". El generador también mantiene una estimación del número de bits de ruído en el almacen de entropía. Los números aleatorios se crean a partir de este almacen.
En las lecturas, el dispositivo /dev/random sólo devolverá bytes aleatorios teniendo en cuenta el número de bits de ruído en el almacen de entropía (es decir, se devolverán los bytes solicitados si hay suficientes bits en el almacen para formar dichos bytes). /dev/random debe ser adecuado en aquellos casos en los que se necesite una aleatoriedad de gran calidad tales como "one-time pad" y la generación de claves. Cuando el almacen de entropía está vacío, las lecturas sobre /dev/random se bloquearán hasta que se recoga ruido ambiental adicional.
En las lecturas, el dispositivo /dev/urandom devolverá tantos bytes como se soliciten. Como resultado, si no hay suficiente entropía en el almacen de entropía, los valores devueltos son teóricamente vulnerables a un ataque criptográfico sobre los algoritmos usados por el manejador. El conocimiento de cómo hacer esto no está disponible en la literatura "sin clasificar" actual pero teóricamente es posible que un ataque así pueda existir. Si esto es una preocupación de su aplicación, use /dev/random en su lugar.
CONFIGURACIÓN
Si en su sistema no existen todavía /dev/random y /dev/urandom, puede crearlos con las siguientes órdenes:
mknod -m 644
/dev/random c 1 8
mknod -m 644 /dev/urandom c 1 9
chown root:root /dev/random /dev/urandom
Cuando un sistema Linux arranca sin mucha interación del operador, el almacen de entropía puede estar en un estado bastante predecible. Esto reduce la cantidad actual de ruido en el almacen de entropía por debajo de lo recomendado. Para contrarestar este efecto, podemos conservar la información del almacen de entropía entre las paradas y arranques del sistema. Para hacer esto, añada las siguientes líneas a un guión shell adecuado que se ejecute durante la secuencia de arranque del sistema Linux:
echo "Initializando el generador de números aleatorios del núcleo..." |
|||
# Initializamos el generador de números aleatorios del núcleo |
|||
# de este arranque a partir de la semilla aleatoria de la última |
|||
# parada (o arranque). Cargamos y a continuación salvamos 512 bytes, |
|||
# que es el tamaño del almacen de entropía. |
|||
if [ -f /var/random-seed ]; then |
|||
cat /var/random-seed >/dev/urandom | |||
fi |
|||
dd if=/dev/urandom of=/var/random-seed count=1 |
También, añada las siguientes líneas a un guión shell apropiado que se ejecute durante la parada del sistema Linux:
# Mantenemos una semilla aleatoria entre una parada y un arranque | |
# para el generador de números aleatorios. Salvamos 512 bytes, que | |
# es el tamaño del almacen de entropía del generador de números | |
# aleatorios. | |
echo "Salvando semilla aleatoria..." | |
dd if=/dev/urandom of=/var/random-seed count=1 |
FICHEROS
/dev/random
/dev/urandom
AUTOR
El generador de números aleatorios del núcleo fue escrito por Theodore Ts’o (tytso [AT] athena.edu).
VÉASE TAMBIÉN
mknod (1)
RFC 1750, "Randomness Recommendations for
Security"