Provided by:
manpages-fr_3.32d0.2p4-1_all 
NOM
random, urandom - Peripheriques generateurs aleatoires du noyau
DESCRIPTION
Les fichiers speciaux en mode caractere /dev/random et /dev/urandom
(existants depuis Linux 1.3.30) fournissent une interface avec le
generateur de nombres aleatoires du noyau. Le fichier /dev/random a un
numero de peripherique majeur egal a 1, et un numero mineur egal a 8.
Les numeros du peripherique /dev/urandom sont 1 pour le majeur, et 9
pour le mineur.
Le generateur de nombres aleatoires regroupe du bruit provenant de son
environnement par l'intermediaire des pilotes de peripheriques et
d'autres sources, et le stocke dans un reservoir d'entropie. Le
generateur memorise egalement une estimation du nombre de bits de bruit
dans son reservoir d'entropie, et utilise son contenu pour creer des
nombres aleatoires.
Lors d'une lecture, le peripherique /dev/random sera limite au nombre
de bits de bruit contenus dans le reservoir d'entropie. /dev/random est
particulierement adapte pour les cas ou l'on a ponctuellement besoin de
nombres hautement aleatoires (creation de cles par exemple). Lorsque le
reservoir d'entropie est vide, les lectures depuis le peripherique
/dev/random seront bloquantes jusqu'a 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
reservoir d'entropie, les valeurs renvoyees pourraient etre
theoriquement vulnerables a une cryptanalyse basee sur l'algorithme
employe par le pilote. Il n'existe pas de documentation sur ce type
d'attaque dans la litterature publique actuelle, mais cela n'elimine
pas le risque theorique. Si ce risque est important pour votre
application, utilisez plutot /dev/random a la place.
Utilisation
Si vous ne savez pas tres bien s'il vous faut utiliser /dev/random ou
/dev/urandom, alors utilisez ce dernier. En regle generale,
/dev/urandom est a utiliser pour tout sauf les cles GPG/SSL/SSH a
longue duree de vie.
Si un reservoir d'entropie est sauve d'un redemarrage a l'autre comme
recommande ci-dessous (toutes les distributions majeures de Linux font
cela depuis au plus tard l'an 2000), la sortie est cryptographiquement
sure vis a vis d'attaquants sans acces local comme superutilisateur, a
la condition que ce fichier soit recharge au demarrage et suffisant
pour les cles de chiffrement de sessions reseau. Comme la lecture
depuis /dev/random peut etre bloquante, les utilisateurs l'ouvrent
generalement dans un mode non bloquant (ou en effectuant la lecture
avec un delai d'expiration) et fournissent un systeme de notification
lorsque l'entropie demandee n'est pas immediatement disponible.
Le generateur de nombres aleatoires du noyau est concu pour produire
une faible quantite de donnees de haute qualite destinees a initialiser
un generateur de nombres pseudo-aleatoires (<< cryptographic
pseudo-random number generator >> ou CPRNG). Il est concu pour la
securite et non la vitesse, et n'est pas adapte a la generation de
grandes quantites de donnees aleatoires. Les utilisateurs doivent etre
tres economes sur leur utilisation de /dev/urandom (et /dev/random) :
des lectures inutiles de grandes quantites de donnees auront un impact
negatif sur les autres utilisateurs de ces sources.
La quantite de donnees d'initialisation necessaire pour generer une cle
de chiffrement est egale a la taille utile de la cle. Par exemple, une
cle privee RSA ou Diffie-Hellman de 3072 bits a une taille utile de
128 bits (2^128 calculs sont necessaires pour la casser) et a donc
besoin de 128 bits (16 octets) aleatoires issus de /dev/random.
Bien qu'une marge d'incertitude au-dessus de ce minimum soit
acceptable, pour contourner les faiblesses de l'algorithme du
generateur de nombres pseudo-aleatoires cryptographique, aucune
primitive de cryptographie ne peut esperer aujourd'hui garantir plus de
256 bits de securite. Aussi, si un programme puise plus de 256 bits
(32 octets) dans le reservoir d'entropie du noyau, par invocation ou
apres un intervalle de reapprovisionnement raisonnable (au moins une
minute), cela laisse supposer que la cryptographie est maladroitement
implementee.
Configuration
Si votre systeme ne dispose pas des fichiers /dev/random et
/dev/urandom vous pouvez les creer 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 systeme Linux demarre sans interaction avec un operateur
humain, le reservoir d'entropie peut se trouver dans un etat
relativement previsible. La veritable quantite de bruit dans le
reservoir d'entropie est donc en dessous de son estimation. Afin de
contrer ce probleme, il est utile de sauvegarder l'etat du reservoir
d'entropie lors des arrets et redemarrages du systeme. Il est possible
ainsi d'ajouter les lignes suivantes dans les scripts de demarrage
appropries :
echo "Initialisation du generateur de nombres aleatoires"
random_seed=/var/run/random-seed
# Initialise le generateur de nombres aleatoires avec une racine
# memorisee lors du dernier arret (ou redemarrage) du systeme
# Charge puis sauvegarde 512 octets (taille du reservoir 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
Egalement, il faut ajouter les lignes suivantes dans un script execute
lors de l'arret du systeme.
# Initialise le generateur de nombres aleatoires avec une racine
# memorisee lors du dernier arret (ou redemarrage) du systeme
# Sauvegarde le reservoir d'entropie
echo "Sauvegarde la racine du generateur aleatoire...
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 repertoire /proc/sys/kernel/random (present depuis
2.3.16) fournissent une interface supplementaire au peripherique
/dev/random.
Le fichier en lecture seule entropy_avail donne l'entropie disponible.
Normalement, elle sera de 4096 (bits), une reserve d'entropie pleine.
Le fichier poolsize donne la taille de la reserve d'entropie. Sa
signification depend des versions du noyau :
Linux 2.4 : Ce fichier donne la taille de la reserve d'entropie
en octets. Normalement, elle sera de 512 (octets),
mais le fichier peut etre ecrit et peut etre modifie
a n'importe quelle valeur pour laquelle un
algorithme est disponible. Actuellement, les choix
sont 32, 64, 128, 256, 512, 1024, 2048.
Linux 2.6 : Ce fichier est en lecture seule et donne la taille
de la reserve d'entropie en bits. Il contient la
valeur 4096.
Le fichier read_wakeup_threshold contient le nombre de bits d'entropie
necessaires pour reveiller les processus endormis qui attendaient
l'entropie en provenance de /dev/random. La valeur par defaut est 64.
Le fichier write_wakeup_threshold contient le nombre de bits d'entropie
en dessous duquel on reveillera les processus ayant effectue un appel a
select(2) ou poll(2) pour un acces en ecriture a /dev/random. Ces
valeurs peuvent etre modifiees en ecrivant dans les fichiers.
Les fichiers en lecture seule uuid et boot_id contiennent des chaines
aleatoires comme 6fd5a44b-35f4-4ad4-a9b9-6b9be13e1fe9. Le premier est
genere a chaque lecture, le dernier est genere une seule fois.
FICHIERS
/dev/random
/dev/urandom
VOIR AUSSI
mknod(1)
RFC 1750, << Randomness Recommendations for Security >>
COLOPHON
Cette page fait partie de la publication 3.32 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Simon
Paillard et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
Linux 29 aout 2010 RANDOM(4)