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

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

Commencer

Qui aurait pensé générer un nombre aléatoire. Mais ce n'est pas aussi simple qu'il y paraît et aussi jusqu'à présent toutes les machines ne sont pas en mesure de générer un vrai nombre aléatoire par lui-même.

Pourquoi les machines ne peuvent pas générer un vrai nombre aléatoire en soi?

Les machines ne sont pas encore instruites des ensembles de mécanismes et de circuits, et donc ils ne peuvent pas être invités à penser à un nombre aléatoire seul sans aucune aide. Et c'est pourquoi jusqu'à présent et plus loin, nous impliquons 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 et de leur travail et de leurs faiblesses.

Pourquoi la génération d'un vrai nombre aléatoire est si importante?

La question se pose que pourquoi la génération de vrais nombres aléatoires est-il important et la réponse à cela est dû à 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, ceux-ci facilitent l'ensemble de ces techniques cryptographiques et ces clés peuvent être prédites relativement plus faciles en utilisant l'algorithme qui a été utilisé pour générer ces clés aléatoires. C'est la raison la plus importante d'un véritable 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 aujourd'hui est basé sur le générateur de nombres aléatoires Linux, 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 aléatoires pseudo (PRNG) ou un générateur de nombres aléatoires pseudo (CSPRNG) sécurisé cryptographiquement qui signifie qu'il utilise des formules mathématiques complexes et. Linux a été le premier système d'exploitation à inclure PRNG dans son espace de noyau. Ceci 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 / aléatoire, / dev / urandom, / dev / arandom. Ce sont tous les trois les fichiers dans lesquels Linux stocke des nombres aléatoires. Les nombres aléatoires de ces fichiers sont générés en utilisant le bruit environnemental des pilotes de l'appareil et d'autres sources. De plus, pour assurer le hasard dans ses nombres aléatoires, Linux utilise l'entropie qui est l'étendue de l'incertitude ou du trouble entre eux. Vous pouvez également trouver la page manuelle du générateur de nombres aléatoires Linux (RNG) ici:

http: // man7.org / linux / man-pages / man4 / aléatoire.4.html

/ dev / aléatoire Versus / dev / urandom versus / dev / arandom:

Les principales différences entre / dev / aléatoire, / dev / urandom et / dev / arandom est que les blocs / dev / aléatoire si l'entropie n'indique pas suffisamment de hasard, / dev / urandom ne bloque jamais, même lorsque le générateur de nombres aléatoires pseudo n'est pas entièrement ensemencé lorsque les blocs démarrés et enfin / dev / arandom uniquement lorsque le générateur de nombres aléatoires pseudo n'est pas encore entièrement ensemencé. En bref, / dev / aléatoire est le plus sûr de tous, puis vient / dev / arandom et le moins sûr est / dev / urandom. Normalement / dev / aléatoire et / dev / urandom est utilisé car / dev / arandom en plusieurs termes est similaire à / dev / urandom. L'estimation de l'entropie pour le pool de nombres aléatoires en bref est utilisée pour déterminer l'aléatoire des nombres générés. Plus il y a d'entropie, plus il est réalisé et mieux réalisé. La quantité actuelle d'entropie et de taille de son pool d'entropie est disponible sur / proc / sys / noyau / aléatoire / nommé entropy_avail et pool_size, respectivement, qui peut être affiché dans le terminal en utilisant les commandes:

chat / proc / sys / noyau / aléatoire / entropy_avail

Et:

CAT / PROC / SYS / KERNEL / RAMESS / POOL_SIZE

Urandom et Random sont utilisés dans différents scénarios. `` Urandom '' est utilisé lorsqu'il y a un besoin constant de nombres aléatoires et que son aléatoire n'est pas très important tandis que «aléatoire» est utilisé lorsqu'il y a une préoccupation de sécurité et que son aléatoire devrait être fiable car il bloque les nombres aléatoires si l'entropie n'est pas à la hauteur la marque. Bien que l'entropie pour urandom (illimité aléatoire) ne soit pas beaucoup plus faible, il est recommandé d'utiliser un aléatoire lorsque plus de sécurité est requise en raison de la possibilité d'attaques sur le nombre généré par Urandom.

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

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

Pour les grains Linux, le générateur de nombres aléatoires n'est pas bon pour le matériel intégré tel que les routeurs, dans lequel l'état de démarrage est prévisible et la source pour suffisamment d'entropie est limitée. Pour ce type de matériel, il est recommandé d'enregistrer et d'utiliser l'état de générateur de nombres aléatoires (RNG) avant l'arrêt qui sera utilisé sur le démarrage suivant. 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 de routeur et qu'ils écoutent ses liens de communication ou s'ils ont directement accessible à l'état de RNG enregistré du routeur lui-même.

Pour ce défaut de RNG en cas de matériel, les générateurs d'entropie tiers viennent à la rescousse. Ces générateurs d'entropie tels que «Hasend» utilisent une synchronisation de cache de processeur, des dispositifs de saisie 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 plutôt des estimations d'entropie. Plusieurs recherches ont également révélé que l'estimation d'entropie des nombres aléatoires utilisées dans Linux ne sont pas des estimations appropriées ou plus étroites, ce qui rend le hasard global des nombres plus faibles.

Bien qu'il existe des faiblesses dans le générateur de nombres aléatoires Linux, mais c'est une bien meilleure option par rapport aux autres RNG, sans oublier les correctifs en cours fournis par les contributeurs et développeurs Linux.

Final:

C'était de mon côté sur le générateur de nombres aléatoires dans le noyau Linux. J'ai passé un bon moment pour diffuser ces connaissances avec vous. J'espère que vous avez appris quelque chose de nouveau à travers lui et que vous partagerez les connaissances davantage vers le monde. Enfin, merci d'avoir investi du temps dans cet article.