Generación de números aleatorios

El núcleo Linux proporciona un generador de números aleatorios al que se accede a través de /dev/random y /dev/urandom. Los programas que utilizan los dispositivos random y urandom, como OpenSSH, se beneficiarán de estas instrucciones.

Cuando un sistema Linux comienza sin mucha interacción del operador, el fondo de entropía, los datos usados para calcular un número aleatorio, puede estar en un estado fácilmente predecible. Esto crea la posibilidad real de que el número generado al inicio pueda ser siempre el mismo. Para contrarrestar este efecto, deberías propagar la información del fondo de entropía a través de los apagados e inicios del sistema. El siguiente guión init.d y sus enlaces efectuarán esta función automáticamente.

cat > /etc/rc.d/init.d/random << "EOF"
#!/bin/sh
# Inicio de $rc_base/init.d/random

# Basado en el guión de sysklogd de LFS-3.1 y anteriores.
# Reescrito por Gerard Beekmans  - gerard@linuxfromscratch.org
# Elementos del guión de números aleatorios por Larry Lawrence

source /etc/sysconfig/rc
source $rc_functions

case "$1" in
        start)
                echo "Inicializando el generador de números aleatorios del núcleo..."
                if [ -f /var/tmp/random-seed ]; then
	                cat /var/tmp/random-seed >/dev/urandom
		fi
		dd if=/dev/urandom of=/var/tmp/random-seed count=1 &>/dev/null
		evaluate_retval
		;;
		
	stop)
		echo "Salvando la semilla de números aleatorios..."
		dd if=/dev/urandom of=/var/tmp/random-seed count=1 &>/dev/null
		evaluate_retval
		;;

        *)
                echo "Uso: $0 {start|stop}"
                exit 1
                ;;
esac

# Fin de $rc_base/init.d/random
EOF
chmod 755 /etc/rc.d/init.d/random

Crea los enlaces simbólicos a este fichero en los directorios rc.d pertinentes con los siguientes comandos:

cd /etc/rc.d/init.d &&
ln -sf ../init.d/random ../rc0.d/K45random &&
ln -sf ../init.d/random ../rc2.d/S25random &&
ln -sf ../init.d/random ../rc3.d/S25random &&
ln -sf ../init.d/random ../rc4.d/S25random &&
ln -sf ../init.d/random ../rc5.d/S25random &&
ln -sf ../init.d/random ../rc6.d/K45random