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"