Loading

NOM

       random, urandom - Périphériques générateurs aléatoires du noyau.

       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.

   Utilisation
       Si vous ne savez pas très bien s’il vous faut utiliser  /dev/random  ou
       /dev/urandom,   alors   utilisez   ce   dernier.   En  règle  générale,
       /dev/urandom est à utiliser pour  tout  sauf  les  clés  GPG/SSL/SSH  à
       longue durée de vie.

       Si  un  réservoir d’entropie est sauvé d’un redémarrage à l’autre comme
       recommandé ci-dessus (toutes les distributions majeures de  Linux  font
       cela  depuis au plus tard l’an 2000), la sortie est cryptographiquement
       sûre vis à vis d’attaquants sans accès local comme superutilisateur,  à
       la  condition  que  ce  fichier soit rechargé au démarrage et suffisant
       pour les clés de chiffrement  de  sessions  réseau.  Comme  la  lecture
       depuis  /dev/random  peut  être  bloquante,  les utilisateurs l’ouvrent
       généralement dans un mode non bloquant (ou  en  effectuant  la  lecture
       avec  un  délai d’expiration) et fournissent un système de notification
       lorsque l’entropie demandée n’est pas immédiatement disponible.

       Le générateur de nombres aléatoires du noyau est  conçu  pour  produire
       une faible quantité de données de haute qualité destinées à initialiser
       un   générateur   de   nombres    pseudo-aléatoires    (« cryptographic
       pseudo-random  number  generator »  ou  CPRNG).  Il  est  conçu pour la
       sécurité et non la vitesse, et n’est pas  adapté  à  la  génération  de
       grandes  quantités de données aléatoires. Les utilisateurs doivent être
       très économes sur leur utilisation de /dev/urandom  (et  /dev/random) :
       des  lectures inutiles de grandes quantités de données auront un impact
       négatif sur les autres utilisateurs de ces sources.

       La quantité de données d’initialisation nécessaire pour générer une clé
       de  chiffrement est égale à la taille utile de la clé. Par exemple, une
       clé privée RSA ou Diffie-Hellman de 3072 bits a  une  taille  utile  de
       128 bits  (2^128 calculs  sont  nécessaires  pour  la casser) et a donc
       besoin de 128 bits (16 octets) aléatoires 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
       générateur  de  nombres   pseudo-aléatoires   cryptographique,   aucune
       primitive de cryptographie ne peut espérer aujourd’hui garantir plus de
       256 bits de sécurité. Aussi, si un programme  puise  plus  de  256 bits
       (32 octets)  dans  le  réservoir d’entropie du noyau, par invocation ou
       après un intervalle de réapprovisionnement raisonnable  (au  moins  une
       minute),  cela  laisse supposer que la cryptographie est maladroitement
       implémentée.

   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.  Sa
       signification dépend des version du noyau :

              Linux 2.4 : Ce  fichier donne la taille de la réserve d’entropie
                          en octets. Normalement, elle sera de  512  (octets),
                          mais le fichier peut être écrit et peut être modifié
                          à  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  réserve  d’entropie  en bits. Il contient la
                          valeur 4096.

       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(2)  ou  poll(2)  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

VOIR AUSSI

       mknod(1)
       RFC 1750, « Randomness Recommendations for Security »

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

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, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement          gérées          par         Simon         Paillard
       <simon.paillard@resel.enst-bretagne.fr>  et  l’équipe  francophone   de
       traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou 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> ».