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@athena.mit.edu).
VÉASE TAMBIÉN¶
mknod (1)
RFC 1750, "Randomness Recommendations for Security"