Provided by: manpages-fr_4.15.0-9_all bug

NOM

       random – aperçu d’interfaces pour obtenir un caractère aléatoire

DESCRIPTION

       Le  générateur de nombres aléatoires du noyau repose sur l’entropie recueillie à partir de
       pilotes de périphérique et d’autres sources de bruit environnemental  pour  ensemencer  un
       générateur de nombres pseudo-aléatoires (CSPRNG) sûr du point de vue cryptographie. Il est
       conçu pour la sécurité plutôt que pour la rapidité.

       Les interfaces suivantes fournissent un accès pour obtenir un résultat d’un générateur  de
       nombres pseudo-aléatoires du noyau :

       –  Les  périphériques  /dev/urandom  et /dev/random, tous deux décrits dans random(4). Ces
          périphériques sont présents  dans  Linux  depuis  les  premiers  temps  et  sont  aussi
          disponibles dans beaucoup d’autres systèmes.

       –  L’appel  système  getrandom(2)  spécifique  à  Linux, disponible depuis Linux 3.17. Cet
          appel système fournit un accès soit à la  même  source  que  /dev/urandom  (appelée  la
          source  urandom dans cette page) ou à la même source que /dev/random (appelée la source
          random dans cette page). Celle par défaut est la source urandom. La source  random  est
          sélectionnée   avec   l’indicateur   GRND_RANDOM  dans  l’appel  système.  La  fonction
          getentropy(3) avec getrandom(2) fournit une interface légèrement plus portable.

   Initialisation de la réserve d’entropie
       Le noyau collecte les bits d’entropie à  partir  de  l’environnement.  Lorsque  un  nombre
       suffisant de bits a été collecté, la réserve d’entropie est considérée comme initialisée.

   Choix de la source random
       À  moins  de  vouloir générer une clef pérenne (et très vraisemblablement même pas dans ce
       cas), la lecture ne sera probablement pas faite à partir du périphérique /dev/random ou en
       employant  getrandom(2)  avec  l’indicateur GRND_RANDOM. À la place, la lecture sera faite
       soit à partir du périphérique /dev/urandom ou en utilisant getrandom(2) sans  l’indicateur
       GRND_RANDOM.  Les  cryptosystèmes  pour  la source urandom sont plutôt conservatifs et par
       conséquent devraient être suffisants pour toutes les utilisations.

       L’inconvénient de GRND_RANDOM et des lectures à partir de /dev/random est que  l’opération
       peut  bloquer  pendant  une  période  indéfinie. De plus, gérer des requêtes partiellement
       remplies pouvant se produire lors de l’utilisation de  GRND_RANDOM  ou  de  la  lecture  à
       partir de /dev/random augmente la complexité du code.

   Monte-Carlo et autres applications d’échantillonnage probabiliste
       L’utilisation  de  ces  interfaces  pour  fournir de grandes quantités de données pour les
       simulations  de  Monte-Carlo  et  d’autres  programmes   ou   algorithmes   réalisant   un
       échantillonnage  probabiliste, sera peu rapide. De plus, c’est inutile parce que de telles
       applications n’ont pas besoin de nombres aléatoires sûrs du point de vue chiffrement. À la
       place,  les  interfaces  décrites  dans cette page sont à utiliser pour obtenir une petite
       quantité de données pour ensemencer un générateur de  nombres  pseudo-aléatoires  pour  ce
       type d’applications.

   Comparaison entre getrandom, /dev/urandom et /dev/random
       Le  tableau  suivant  résume  le  comportement  des  diverses  interfaces qui peuvent être
       utilisées pour obtenir un caractère aléatoire. GRND_NONBLOCK est un  indicateur  qui  peut
       être  utilisé pour contrôler le comportement bloquant de getrandom(2). La dernière colonne
       du tableau tient compte du cas pouvant se produire au tout début  du  démarrage  quand  la
       réserve d’entropie n’est pas encore initialisée.

       ┌──────────────┬──────────────┬────────────────┬────────────────────┐
       │InterfaceRéserveComportementComportement si    │
       │              │              │ de blocageréserve pas encore │
       │              │              │                │ prête              │
       ├──────────────┼──────────────┼────────────────┼────────────────────┤
       │/dev/random   │ Réserve      │ Si entropie    │ Blocage jusqu’à    │
       │              │ bloquante    │ trop faible,   │ suffisamment       │
       │              │              │ blocage        │ d’entropie         │
       │              │              │ jusqu’à assez  │ accumulée          │
       │              │              │ d’entropie     │                    │
       ├──────────────┼──────────────┼────────────────┼────────────────────┤
       │/dev/urandom  │ Sortie       │ Aucun blocage  │ CSPRNG non         │
       │              │ CSPRNG       │                │ initialisé         │
       │              │              │                │ (entropie faible   │
       │              │              │                │ et inadaptée au    │
       │              │              │                │ chiffrement ?)     │
       ├──────────────┼──────────────┼────────────────┼────────────────────┤
       │getrandom()   │ Identique à  │ Aucun blocage  │ Blocage jusqu’à    │
       │              │ /dev/urandom │ si réserve     │ réserve prête      │
       │              │              │ prête          │                    │
       ├──────────────┼──────────────┼────────────────┼────────────────────┤
       │getrandom()   │ Identique à  │ Si entropie    │ Blocage jusqu’à    │
       │GRND_RANDOM/dev/random  │ trop faible,   │ réserve prête      │
       │              │              │ blocage        │                    │
       │              │              │ jusqu’à assez  │                    │
       │              │              │ d’entropie     │                    │
       ├──────────────┼──────────────┼────────────────┼────────────────────┤
       │getrandom()   │ Identique à  │ Aucun blocage  │ EAGAIN             │
       │GRND_NONBLOCK/dev/urandom │ si réserve     │                    │
       │              │              │ prête          │                    │
       ├──────────────┼──────────────┼────────────────┼────────────────────┤
       │getrandom()   │ Identique à  │ EAGAIN si      │ EAGAIN             │
       │GRND_RANDOM + │ /dev/random  │ manque         │                    │
       │GRND_NONBLOCK │              │ d’entropie     │                    │
       │              │              │ disponible     │                    │
       └──────────────┴──────────────┴────────────────┴────────────────────┘
   Génération des clés de chiffrement
       Le montant de matériel d’ensemencement nécessite de générer une clé de chiffrement égale à
       la  taille effective de la clé. Par exemple, une clé privée ou Diffie-Hellman de 3072 bits
       a une taille effective de 128 bits (2^128 opérations sont  nécessaires  pour  la  casser),
       aussi  un  générateur  de  clé  a  besoin  de  seulement  128 bits (16 octets) de matériel
       d’ensemencement à partir de /dev/random.

       Bien qu’une marge de sécurité au-dessus de ce minimum soit  raisonnable  comme  protection
       contre  des  défauts  d’algorithme  de CSPRNG, aucune primitive cryptographique disponible
       actuellement ne peut espérer  promettre  plus  de  256 bits  de  sécurité,  aussi,  si  un
       programme  lit  plus de 256 bits (32 octets) de la réserve de caractère aléatoire du noyau
       par invocation, ou par intervalle raisonnable de réensemencement (pas moins d’une minute),
       cela doit être pris comme un signe que son chiffrement n’a pas été implémenté savamment.

VOIR AUSSI

       getrandom(2), getauxval(3), getentropy(3), random(4), urandom(4), signal(7)

COLOPHON

       Cette  page  fait partie de la publication 5.13 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>  et  Jean-Paul  Guillonneau
       <guillonneau.jeanpaul@free.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.