.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1997 John S. Kallal (kallal@voicenet.com) .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" Some changes by tytso and aeb. .\" .\" 2004-12-16, John V. Belmonte/mtk, Updated init and quit scripts .\" 2004-04-08, AEB, Improved description of read from /dev/urandom .\" 2008-06-20, George Spelvin , .\" Matt Mackall .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH random 4 "18 avril 2023" "Pages du manuel de Linux 6.05.01" .SH NOM random, urandom —\ Périphériques générateurs de nombres aléatoires du noyau .SH SYNOPSIS .nf #include .PP \fBint ioctl(\fP\fIfd\fP\fB, RND\fP\fIrequête\fP\fB, \fP\fIparam\fP\fB);\fP .fi .SH DESCRIPTION Les fichiers spéciaux en mode caractère \fI/dev/random\fP et \fI/dev/urandom\fP (existants depuis Linux\ 1.3.30) fournissent une interface pour le générateur de nombres aléatoires du noyau. Le fichier \fI/dev/random\fP a un numéro de périphérique majeur égal à 1 et un numéro mineur égal à 8. Le fichier \fI/dev/urandom\fP a un numéro de périphérique majeur égal à 1 et à 9 pour le périphérique mineur. .PP 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. .PP Les noyaux Linux 3.17 et postérieurs fournissent une interface \fBgetrandom\fP(2) plus sûre et plus simple qui ne requiert aucun fichier spécial. Consulter le manuel de \fBgetrandom\fP(2) pour plus de détails. .PP Lors de sa lecture, le périphérique \fI/dev/urandom\fP renvoie des octets aléatoires en utilisant un générateur de nombres pseudoaléatoires nourri à partir du réservoir d’entropie. Les lectures à partir de ce périphérique ne sont pas bloquantes (c’est\-à\-dire qu’un «\ yield\ » n’est pas imposé au CPU), mais peuvent entrainer un délai notable lors de requêtes d’un grand montant de données. .PP .\" This is a real problem; see .\" commit 9b4d008787f864f17d008c9c15bbe8a0f7e2fc24 Lors d’une lecture au tout début du démarrage (boot), \fI/dev/urandom\fP peut renvoyer des données avant que le réservoir d’entropie n’ait été initialisé. Si cela à de l’importance dans votre application, utilisez plutôt \fBgetrandom\fP(2) ou \fI/dev/random\fP. .PP Le périphérique \fI/dev/random\fP est une interface patrimoniale qui remonte aux temps où les primitives de chiffrement utilisées dans les implémentations de \fI/dev/urandom\fP n’étaient pas d’une grande fiabilité. Il renvoyait des octets aléatoires seulement pour un nombre estimé de bits de bruit récent dans le réservoir d’entropie, en bloquant si nécessaire. \fI/dev/random\fP est adapté pour les applications qui nécessitent une haute qualité d’imprévisibilité et qui peuvent supporter des délais indéterminés. .PP Si le réservoir d’entropie est vide, les lectures dans \fI/dev/random\fP bloqueront jusqu’à ce que du bruit environnemental supplémentaire soit accumulé. Depuis Linux\ 5.6, le drapeau \fBO_NONBLOCK\fP est ignoré car \fI/dev/random\fP ne bloquera pas sauf pendant le tout début du démarrage. Dans les versions précédentes, si \fBopen\fP(2) est appelé pour \fI/dev/random\fP avec le drapeau \fBO_NONBLOCK\fP, un appel ultérieur à \fBread\fP(2) ne bloquera pas si le nombre requis d’octets n’est pas disponible. À la place, les octets disponibles sont renvoyés. Si aucun octet n’est disponible, \fBread\fP(2) renverra \fB\-1\fP et \fIerrno\fP sera défini à \fBEAGAIN\fP. .PP Le drapeau \fBO_NONBLOCK\fP n’a aucun effet lors de l’ouverture de \fI/dev/urandom\fP. Lors de l’appel \fBread\fP(2) pour le périphérique \fI/dev/urandom\fP, des lectures jusqu’à 256\ octets renverront autant d'octets que nécessaires et ne seront pas interrompues par un gestionnaire de signal. Les lectures avec un tampon dépassant cette limite peuvent renvoyer un nombre d’octets insuffisant ou échouer avec l’erreur \fBEINTR\fP si elles sont interrompues par un gestionnaire de signal. .PP .\" commit 79a8468747c5f95ed3d5ce8376a3e82e0c5857fc .\" SEC_XFER_SIZE in drivers/char/random.c Depuis Linux\ 3.16, un appel \fBread\fP(2) pour \fI/dev/urandom\fP renverra au plus 32\ Mo. Un appel \fBread\fP(2) pour \fI/dev/random\fP renverra au plus 512\ octets (340\ octets avant Linux\ 2.6.12). .PP Écrire dans \fI/dev/random\fP ou \fI/dev/urandom\fP mettra à jour le réservoir d'entropie avec les données écrites, mais n'augmentera pas le décompte d'entropie. Cela signifie que le contenu lu des deux fichiers sera affecté, mais que cela ne rendra pas les lectures de \fI/dev/random\fP plus rapides. .SS Utilisation Le périphérique \fI/dev/random\fP est une interface patrimoniale et \fI/dev/urandom\fP est préféré et suffisant dans tous les cas d’utilisation à l’exception des applications qui requièrent des données aléatoires au tout début du démarrage. Pour celles\-ci, \fBgetrandom\fP(2) doit être utilisé à la place, car il créera un blocage jusqu’à ce que le réservoir d’entropie soit initialisé. .PP .\" Si un fichier d’ensemencement est sauvegardé d'un redémarrage à l'autre comme recommandé ci\-dessous (toutes les distributions majeures de Linux font cela depuis au moins l'an 2000), la sortie est chiffrée de manière sûre vis\-à\-vis d'attaquants sans accès local comme superutilisateur, à la condition que ce fichier soit rechargé lors du démarrage et parfaitement adapté pour les clés de chiffrement de sessions réseau. Comme la lecture depuis \fI/dev/random\fP 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. .SS Configuration Si votre système ne dispose pas des fichiers \fI/dev/random\fP et \fI/dev/urandom\fP, vous pouvez les créer avec les commandes suivantes\ : .PP .in +4n .EX mknod \-m 666 /dev/random c 1 8 mknod \-m 666 /dev/urandom c 1 9 chown root:root /dev/random /dev/urandom .EE .in .PP Lorsqu'un système Linux démarre sans trop d’interaction avec un opérateur, le réservoir d'entropie peut se trouver dans un état relativement prévisible. Cela réduit la quantité réelle de bruit dans le réservoir d'entropie en dessous de la quantité nécessaire estimée. Afin de contrer cet effet, il est utile de sauvegarder les informations du réservoir d'entropie lors des arrêts et redémarrages du système. Pour réaliser cela, ajoutez les lignes suivantes dans le script de démarrage approprié exécuté lors de la séquence de démarrage du système Linux\ : .PP .in +4n .EX echo "Initialisation du générateur de nombres aléatoires..." random_seed=/var/run/random\-seed # Transmission d’une graine aléatoire de démarrage en démarrage # Chargement puis sauvegarde de tout le 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 ] && bits=$(cat $poolfile) || bits=4096 bytes=$(expr $bits / 8) dd if=/dev/urandom of=$random_seed count=1 bs=$bytes .EE .in .PP Également, ajoutez les lignes suivantes dans le script approprié exécuté lors de l’extinction du système Linux. .PP .in +4n .EX # Transmission d’une graine aléatoire de démarrage en démarrage # Sauvegarde du réservoir d'entropie en entier echo "Sauvegarde de la graine aléatoire..." random_seed=/var/run/random\-seed touch $random_seed chmod 600 $random_seed poolfile=/proc/sys/kernel/random/poolsize [ \-r $poolfile ] && bits=$(cat $poolfile) || bits=4096 bytes=$(expr $bits / 8) dd if=/dev/urandom of=$random_seed count=1 bs=$bytes .EE .in .PP .\" Dans les exemples ci\-dessus, il est assumé que Linux\ 2.6.0, ou versions suivantes, est utilisé, où \fI/proc/sys/kernel/random/poolsize\fP renvoie la taille du réservoir d’entropie en bits (voir ci\-dessous). .SS "/proc interfaces" Les fichiers du répertoire \fI/proc/sys/kernel/random\fP (présent depuis Linux\ 2.3.16) fournissent des informations supplémentaires à propos du périphérique \fI/dev/random\fP. .TP \fIentropy_avail\fP Ce fichier en lecture seule donne l'entropie disponible, en bits. Ce sera un nombre dans l’intervalle 0−4096. .TP \fIpoolsize\fP Ce fichier donne la taille de la réserve d'entropie. Sa sémantique varie selon les versions du noyau\ : .RS .TP Linux 2.4\ : Ce fichier donne la taille de la réserve d'entropie en \fIoctets\fP. Normalement, elle sera de 512 (octets), mais le fichier est éditable et peut être modifié à n'importe quelle valeur pour laquelle un algorithme est disponible. Actuellement, les choix sont 32, 64, 128, 256, 512, 1024 ou 2048. .TP Linux 2.6 et suivants\ : Ce fichier est en lecture seule et donne la taille de la réserve d'entropie en \fIbits\fP. Il contient la valeur 4096. .RE .TP \fIread_wakeup_threshold\fP Ce fichier fournit le nombre de bits d’entropie requis pour réveiller les processus endormis en attente d’entropie de \fI/dev/random\fP. La valeur par défaut est 64. .TP \fIwrite_wakeup_threshold\fP Ce fichier fournit le nombre de bits d'entropie en dessous duquel on réveillera les processus ayant effectué un appel à \fBselect\fP(2) ou \fBpoll\fP(2) pour un accès en écriture à \fI/dev/random\fP. Ces valeurs peuvent être modifiées en écrivant dans les fichiers. .TP \fIuuid\fP et \fIboot_id\fP .\" Ces fichiers en lecture seule fournissent des chaînes aléatoires comme 6fd5a44b\-35f4\-4ad4\-a9b9\-6b9be13e1fe9. Le premier est régénéré à chaque lecture, le dernier est généré une seule fois. .SS "Interface ioctl(2)" Les requêtes \fBioctl\fP(2) suivantes sont définies sur les descripteurs de fichier connectés à \fI/dev/random\fP ou \fI/dev/urandom\fP. Toutes les requêtes réalisées interagiront avec l'entrée du réservoir d'entropie et auront un effet sur \fI/dev/random\fP et \fI/dev/urandom\fP. La capacité \fBCAP_SYS_ADMIN\fP est nécessaire pour toutes les requêtes sauf \fBRNDGETENTCNT\fP. .TP \fBRNDGETENTCNT\fP Récupérer le décompte d'entropie du réservoir d'entrée, le contenu sera le même que celui du fichier \fIentropy_avail\fP sous proc. Le résultat sera stocké dans l'entier pointé par l'argument. .TP \fBRNDADDTOENTCNT\fP Augmenter ou diminuer le décompte d'entropie du réservoir d'entrée de la valeur pointée par l'argument. .TP \fBRNDGETPOOL\fP Supprimée dans Linux\ 2.6.9. .TP \fBRNDADDENTROPY\fP Ajouter de l'entropie supplémentaire au réservoir d’entrée en augmentant le décompte d'entropie. Cela diffère de l'écriture dans \fI/dev/random\fP ou \fI/dev/urandom\fP qui ajoute des données mais sans augmenter le décompte d'entropie. La structure suivante est utilisée\ : .IP .in +4n .EX struct rand_pool_info { int entropy_count; int buf_size; __u32 buf[0]; }; .EE .in .IP Ici, \fIentropy_count\fP est la valeur ajoutée au (ou soustraite du) décompte d'entropie, et \fIbuf\fP est le tampon de taille \fIbuf_size\fP qui est ajouté au réservoir d'entropie. .TP \fBRNDZAPENTCNT\fP, \fBRNDCLEARPOOL\fP Vider les décomptes d'entropie de tous les réservoirs et ajouter des données système (comme le temps réel) aux réservoirs. .SH FICHIERS \fI/dev/random\fP .br \fI/dev/urandom\fP .SH NOTES Pour un aperçu et une comparaison des interfaces utilisables pour produire de l'aléatoire, voir \fBrandom\fP(7). .SH BOGUES .\" .SH AUTHOR .\" The kernel's random number generator was written by .\" Theodore Ts'o (tytso@athena.mit.edu). Lors du tout début du démarrage (boot), des lectures dans \fI/dev/urandom\fP peuvent renvoyer des données avant que le réservoir d’entropie n’ait été initialisé. .SH "VOIR AUSSI" \fBmknod\fP(1), \fBgetrandom\fP(2), \fBrandom\fP(7) .PP RFC\ 1750, «\ Randomness Recommendations for Security\ » .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Cédric Boutillier , Frédéric Hantrais et Jean-Paul Guillonneau . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .