RANDOM(4) Manuel du programmeur Linux RANDOM(4)
NOM
random, urandom - Périphériques générateurs aléatoires du
noyau.
DESCRIPTION
Les fichiers spéciaux caractères /dev/random et /dev/uran
dom (existants depuis Linux 1.3.30) fournissent une inter
face avec le générateur de nombres aléatoires du noyau.
Le fichier /dev/random a un numéro de périphérique majeur
égal à 1, et un numéro mineur égal à 8. Les numéros du
périphérique /dev/urandom sont 1 pour le majeur, et 9 pour
le mineur.
Le générateur de nombres aléatoires regroupe du bruit
provenant de son environnement par l'intermédiaire des
pilotes de périphériques et d'autres sources, et le stocke
dans un réservoir d'entropie. Le générateur mémorise
également une estimation du nombre de bits de bruit dans
son réservoir d'entropie, et utilise son contenu pour
créer des nombres aléatoires.
Lors d'une lecture, le périphérique /dev/random sera
limité au nombre de bits de bruit contenus dans le réser
voir d'entropie.
/dev/random est particulièrement adapté pour des cas où
l'on a ponctuellement besoin de nombres hautement
aléatoires (création de clés par exemple). Lorsque le
réservoir d'entropie est vide, les lectures du
périphérique /dev/random seront bloquantes jusqu'à
l'obtention de suffisament de bruits en provenance de
l'environnement.
Lors d'une lecture, /dev/urandom renverra autant d'octets
qu'on en demande. Toutefois, s'il n'y a plus assez de
bits disponibles dans le réservoir d'entropie, les valeurs
renvoyées pourraient être théoriquement vulnérables à une
cryptanalyse basée sur l'algorithme employé par le pilote.
Il n'existe pas de documentation sur ce type d'attaque
dans la littérature publique actuelle, mais cela n'élimine
pas le risque théorique. Si ce risque est important pour
votre application, utilisez plutôt /dev/random à la place.
CONFIGURATION
Si votre système ne dispose pas des fichiers /dev/random
et /dev/urandom vous pouvez les créer avec les commandes
suivantes :
mknod -m 644 /dev/random c 1 8
mknod -m 644 /dev/urandom c 1 9
chown root:root /dev/random /dev/urandom
Linux 14 Septembre 1998 1
RANDOM(4) Manuel du programmeur Linux RANDOM(4)
Lorsqu'un système Linux démarre sans interaction avec un
opérateur humain, le réservoir d'entropie peut se trouver
dans un état relativement prédictible. La véritable quan
tité de bruit dans le réservoir d'entropie est donc en-
dessous de son estimation. Afin de contrer ce problème, il
est utile de sauvegarder l'état du réservoir entropique
lors des arrêts et redémarrages du système. Il est possi
ble ainsi d'ajouter les lignes suivantes dans les scripts
de démarrage appropriés :
echo "Initialisatiion du générateur de nombre aléatoires"
# Initialiser le générateur de nombre aléatoire avec une racine
# mémorisée lors du dernier arrêt (ou redémarrage) du système
# On charge jusqu'à 512 octets (taille du réservoir d'entropie).
if [ -f /var/random-seed ]; then
cat /var/random-seed >/dev/urandom
fi
dd if=/dev/urandom of=/var/random-seed count=1
Egalement, il faut ajouter les lignes suivantes dans un
script exécuté lors de l'arrêt du système.
# Sauver une racine aléatoire pour pouvoir redémarrer le
# générateur au prochain boot. On sauve 512 octets.
echo "Sauvegarde de la racin du générateur aléatoire..."
dd if=/dev/urandom of=/var/random-seed count=1
FICHIERS
/dev/random
/dev/urandom
AUTEUR
Le générateur de nombre aléatoires du noyau a été écrit
par Theodore Ts'o (tytso@athena.mit.edu).
VOIR AUSSI
mknod (1)
RFC 1750, "Randomness Recommendations for Security"
TRADUCTION
Christophe Blaess, 1998.
Linux 14 Septembre 1998 2