Provided by: manpages-fr_4.27.0-1_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)

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 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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                          random(7)