Sécurité

/dev/random vs /dev/urandom et sont-ils sécurisés?

/dev/random vs /dev/urandom et sont-ils sécurisés?

Commencer

Qui aurait pensé que générer un nombre aléatoire serait un tel gâchis, c'est censé être aussi simple que de deviner un nombre n'importe où entre une plage donnée. Mais ce n'est pas aussi simple qu'il y paraît et jusqu'à présent, toutes les machines se sont avérées incapables de générer elles-mêmes un vrai nombre aléatoire.

Pourquoi les machines ne peuvent pas générer elles-mêmes un vrai nombre aléatoire?

Les machines ne sont pourtant que des ensembles de mécanismes et de circuits instruits, et par conséquent, elles ne peuvent pas être instruites de penser à un nombre aléatoire par elles-mêmes sans aucune aide. Et c'est pourquoi jusqu'à présent et plus loin, nous avons impliqué la nature ou les humains avec des machines pour générer un vrai nombre aléatoire. Nous ne discuterons pas ici de la façon de générer un vrai nombre aléatoire, mais nous discuterons des générateurs de nombres aléatoires déjà implémentés, de leur fonctionnement et de leurs faiblesses.

Pourquoi est-il si important de générer un vrai nombre aléatoire?

La question se pose de savoir pourquoi la génération de vrais nombres aléatoires est importante et la réponse à cette question est due à des problèmes de sécurité. La plupart des algorithmes cryptographiques sont basés sur la génération de nombres aléatoires car ces nombres aléatoires sont utilisés pour créer des clés cryptographiques et si les nombres aléatoires générés ne sont pas vraiment de nature aléatoire, ils affaiblissent l'ensemble de ces techniques cryptographiques et ces clés peuvent être prédites relativement plus facilement. en utilisant l'algorithme qui a été utilisé pour générer ces clés aléatoires. C'est la raison la plus importante pour un vrai nombre aléatoire, autre que des applications comme le jeu.

Générateur de nombres aléatoires dans les noyaux Linux :

Le sujet de notre discussion d'aujourd'hui est basé sur Linux Random Number Generator, sur quels facteurs ce générateur est-il basé et est-ce vraiment aléatoire ou est-ce juste un autre nombre aléatoire généralement peu fiable.

Linux utilise un générateur de nombres pseudo-aléatoires (PRNG) ou un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé (CSPRNG), ce qui signifie qu'il utilise des formules mathématiques complexes et des propriétés environnementales pour obtenir un caractère aléatoire maximal. Linux a été le premier système d'exploitation à inclure PRNG dans son espace noyau. Cela a été mis en œuvre par Theodore Ts'o en 1994.

Linux a trois catégories de générateurs de nombres aléatoires, /dev/random, /dev/urandom, /dev/arandom. Ce sont tous les trois les fichiers dans lesquels Linux stocke des nombres aléatoires. Les nombres aléatoires dans ces fichiers sont générés en utilisant le bruit environnemental des pilotes de périphériques et d'autres sources. Aussi, pour assurer le caractère aléatoire de ses nombres aléatoires, Linux utilise l'entropie qui est l'étendue de l'incertitude ou du désordre entre eux. Vous pouvez également trouver la page de manuel pour Linux Random Number Generator (RNG) ici :

http://man7.org/linux/man-pages/man4/random.4.html

/dev/aléatoire contre /dev/urandom contre /dev/aléatoire:

Les principales différences entre /dev/random, /dev/urandom et /dev/arandom sont que /dev/random bloque si l'entropie n'indique pas un caractère aléatoire suffisant, /dev/urandom ne bloque jamais, même lorsque le générateur de nombres pseudo-aléatoires n'est pas entièrement amorcé au démarrage et enfin /dev/arandom ne se bloque que lorsque le générateur de nombres pseudo-aléatoires n'est pas encore entièrement amorcé. En bref, /dev/random est le plus sûr de tous, puis vient /dev/arandom et le moins sûr est /dev/urandom. Normalement, /dev/random et /dev/urandom sont utilisés car /dev/arandom est similaire à /dev/urandom en de nombreux termes. L'estimation d'entropie pour le pool de nombres aléatoires en bref est utilisée pour déterminer le caractère aléatoire des nombres générés. Plus il y a d'entropie, plus l'aléatoire est atteint et mieux c'est. La quantité actuelle d'entropie et la taille de son pool d'entropie sont disponibles dans /proc/sys/kernel/random/ nommés respectivement entropy_avail et pool_size, qui peuvent être affichés dans le terminal en utilisant les commandes :

cat /proc/sys/kernel/random/entropy_avail

Et:

cat /proc/sys/kernel/random/pool_size

urandom et random sont utilisés dans différents scénarios. « Urandom » est utilisé lorsqu'il existe un besoin constant de nombres aléatoires et que son caractère aléatoire n'est pas très important, tandis que « random » est utilisé lorsqu'il existe un problème de sécurité et que son caractère aléatoire doit être fiable car il bloque la sortie de nombres aléatoires si l'entropie n'est pas à la hauteur la marque. Bien que l'entropie pour urandom (Unlimited Random) ne soit pas beaucoup plus faible, mais il est recommandé d'utiliser aléatoire lorsqu'une plus grande sécurité est requise en raison de la possibilité d'attaques sur le nombre générées par urandom.

Faiblesses dans les générateurs de nombres aléatoires Linux

Pour le matériel de mémoire non volatile :

Pour les noyaux Linux, le générateur de nombres aléatoires n'est pas bon pour le matériel embarqué tel que les routeurs, dans lesquels l'état de démarrage est prévisible et la source d'entropie suffisante est limitée. Pour ce type de matériel, il est recommandé de sauvegarder et d'utiliser l'état du générateur de nombres aléatoires (RNG) avant l'arrêt qui sera utilisé au prochain démarrage. Dans de tels cas de routeurs, les attaquants ne peuvent compromettre et prédire les nombres aléatoires générés que s'ils ont accès à tous les liens du routeur et s'ils espionnent ses liens de communication ou s'ils ont directement accédé à l'état RNG enregistré depuis le routeur lui-même.

Pour cette faille de RNG en cas de hardware, des générateurs d'entropie tiers viennent à la rescousse. Ces générateurs d'entropie tels que « haveged » utilisent la synchronisation du cache du processeur, des périphériques d'entrée audio et vidéo externes pour augmenter l'entropie à un degré acceptable.

Estimation de l'entropie :

Comme mentionné précédemment, le noyau Linux détermine le caractère aléatoire en termes d'entropie, mais il ne calcule pas réellement l'entropie à chaque fois et utilise à la place des estimations d'entropie. Plusieurs recherches ont également révélé que l'estimation de l'entropie des nombres aléatoires utilisés dans Linux n'est pas appropriée ou des estimations plus proches, rendant ainsi le caractère aléatoire global des nombres plus faible.

Bien qu'il y ait quelques faiblesses dans Linux Random Number Generator, mais c'est une bien meilleure option par rapport aux autres RNG, sans oublier les correctifs en cours fournis par les contributeurs et les développeurs Linux.

Final:

Tout cela était de mon côté à propos du générateur de nombres aléatoires dans le noyau Linux. J'ai passé un bon moment à partager ces connaissances avec vous. J'espère que vous avez appris quelque chose de nouveau à travers cela et aussi que vous partagerez les connaissances plus loin dans le monde. Enfin, merci d'avoir consacré du temps à cet article.

Moteurs de jeux gratuits et open source pour le développement de jeux Linux
Cet article couvrira une liste de moteurs de jeux gratuits et open source qui peuvent être utilisés pour développer des jeux 2D et 3D sur Linux. Il ex...
Tutoriel Shadow of the Tomb Raider pour Linux
Shadow of the Tomb Raider est le douzième ajout à la série Tomb Raider - une franchise de jeux d'action-aventure créée par Eidos Montréal. Le jeu a ét...
Comment booster les FPS sous Linux?
FPS signifie Images par seconde. La tâche du FPS est de mesurer la fréquence d'images dans les lectures vidéo ou les performances de jeu. En termes si...