Date création : 30-03-2008 14:00:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section4 - Périphériques]
RANDOM
Index
- NOM
- DESCRIPTION
- CONFIGURATION
- INTERFACE PROC
- FICHIERS
- AUTEUR
- VOIR AUSSI
- TRADUCTION
NOM
random, urandom - Périphériques générateurs aléatoires du noyau.
DESCRIPTION
Les fichiers spéciaux en mode caractère /dev/random et /dev/urandom
(existants depuis Linux 1.3.30) fournissent une interface 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éservoir d'entropie. /dev/random est
particulièrement adapté pour les 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 depuis le périphérique
/dev/random seront bloquantes jusqu'à l'obtention de suffisamment de
bruit 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
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évisible. La véritable quantité 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 d'entropie lors des arrêts et
redémarrages du système. Il est possible ainsi d'ajouter les lignes
suivantes dans les scripts de démarrage appropriés :
echo "Initialisation du générateur de nombres aléatoires"
random_seed=/var/run/random-seed
# Initialise le générateur de nombres aléatoires avec une racine
# mémorisée lors du dernier arrêt (ou redémarrage) du système
# Charge puis sauvegarde 512 octets (taille du réservoir d'entropie).
if [ -f $random_seed ]; then
cat $random_seed >/dev/urandom
else
touch $random_seed
fi
chmod 600 $random_seed
poolfile=/proc/sys/kernel/random/poolsize
[ -r $poolfile ] && bytes=`cat $poolfile` || bytes=512
dd if=/dev/urandom of=$random_seed count=1 bs=$bytes
Également, il faut ajouter les lignes suivantes dans un script exécuté lors
de l'arrêt du système.
# Initialise le générateur de nombres aléatoires avec une racine
# mémorisée lors du dernier arrêt (ou redémarrage) du système
# Sauvegarde le réservoir d'entropie
echo "Sauvegarde la racine du générateur aléatoire...
random_seed=/var/run/random-seed
touch $random_seed
chmod 600 $random_seed
poolfile=/proc/sys/kernel/random/poolsize
[ -r $poolfile ] && bytes=`cat $poolfile` || bytes=512
dd if=/dev/urandom of=$random_seed count=1 bs=$bytes
INTERFACE PROC
Les fichiers du répertoire /proc/sys/kernel/random (présent depuis
2.3.16) fournissent une interface supplémentaire au périphérique
/dev/random.
Le fichier en lecture seule entropy_avail donne l'entropie
disponible. Normalement, elle sera de 4096 (bits), une réserve d'entropie
pleine.
Le fichier poolsize donne la taille de la réserve
d'entropie. Normalement, elle sera de 512 (octets). Ceci peut être modifié à
n'importe quelle valeur pour laquelle un algorithme est
disponible. Actuellement, les choix sont 32, 64, 128, 256, 512, 1024, 2048.
Le fichier read_wakeup_threshold contient le nombre de bits d'entropie
nécessaires pour réveiller les processus endormis qui attendaient l'entropie
en provenance de /dev/random. La valeur par défaut est 64. Le fichier
write_wakeup_threshold contient le nombre de bits d'entropie en dessous
duquel on réveillera les processus ayant effectué un appel à select() ou
poll() pour un accès en écriture à /dev/random. Ces valeurs peuvent
être modifiées en écrivant dans les fichiers.
Les fichiers en lecture seule uuid et boot_id contiennent des chaînes
aléatoires comme 6fd5a44b-35f4-4ad4-a9b9-6b9be13e1fe9. Le premier est généré
à chaque lecture, le dernier est généré une seule fois.
FICHIERS
/dev/random
/dev/urandom
AUTEUR
Le générateur de nombres 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
Cette page de manuel a été traduite et mise à jour par
Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003,
puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur
le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
« man -L C <section> <page_de_man> ».
|