Générateur de nombres aléatoires

+300 outils pour les web développeurs

Vous voulez Générer des chiffres et des nombres aléatoires? - voilà un Générateur de nombres et de chiffres en ligne pour le faire, un outil simple, facile et rapide
Début: Fin: Combien?

Autres outils dont vous aurez peut être besoin:

Les nombres aléatoires sont utilisés depuis plusieurs milliers d'années. Qu'il s'agisse de lancer une pièce ou de lancer un dé, le but est de laisser le résultat final au hasard. Les générateurs de nombres aléatoires dans un ordinateur sont similaires - ils tentent d'obtenir un résultat aléatoire imprévisible.

Les générateurs de nombres aléatoires sont utiles à de nombreuses fins différentes. Outre les applications évidentes comme la génération de nombres aléatoires à des fins de jeu ou la création de résultats imprévisibles dans un jeu informatique, le caractère aléatoire est important pour la cryptographie.

La cryptographie nécessite des chiffres que les attaquants ne peuvent pas deviner. Nous ne pouvons pas simplement utiliser les mêmes chiffres encore et encore. Nous voulons générer ces nombres de manière très imprévisible afin que les attaquants ne puissent pas les deviner. Ces nombres aléatoires sont essentiels pour le cryptage sécurisé, que vous cryptiez vos propres fichiers ou que vous utilisiez simplement un site Web HTTPS sur Internet.

Nombres aléatoires vrais


Vous vous demandez peut-être comment un ordinateur peut générer un nombre aléatoire. D'où vient ce "hasard"? Si c'est juste un morceau de code informatique, n'est-il pas possible que les chiffres générés par l'ordinateur soient prévisibles?

Nous regroupons généralement les nombres aléatoires générés par les ordinateurs en deux types, en fonction de la manière dont ils sont générés: les nombres aléatoires «vrais» et les nombres pseudo-aléatoires.

Pour générer un «vrai» nombre aléatoire, l'ordinateur mesure un certain type de phénomène physique qui se produit en dehors de l'ordinateur. Par exemple, l'ordinateur peut mesurer la décroissance radioactive d'un atome. Selon la théorie quantique, il n'y a aucun moyen de savoir avec certitude quand la décroissance radioactive se produira. Il s'agit donc essentiellement d'un «pur hasard» dans l'univers. Un attaquant ne serait pas en mesure de prédire le moment où la désintégration radioactive se produirait, afin de ne pas connaître la valeur aléatoire.

Pour un exemple plus quotidien, l'ordinateur peut compter sur le bruit atmosphérique ou simplement utiliser l'heure exacte sur laquelle vous appuyez sur les touches de votre clavier comme source de données imprévisibles ou d'entropie. Par exemple, votre ordinateur peut remarquer que vous avez appuyé sur une touche exactement à 0.23423523 secondes après 14h00. Prenez suffisamment de temps spécifique associé à ces touches et vous aurez une source d'entropie que vous pourrez utiliser pour générer un «vrai» nombre aléatoire. Vous n'êtes pas une machine prévisible, donc un attaquant ne peut pas deviner le moment précis où vous appuyez sur ces touches. Le périphérique / dev / random sous Linux , qui génère des nombres aléatoires, "bloque" et ne retourne pas de résultat tant qu'il ne recueille pas assez d'entropie pour renvoyer un nombre vraiment aléatoire.

Nombres pseudo-aléatoires


Les nombres pseudo-aléatoires sont une alternative aux «vrais» nombres aléatoires. Un ordinateur peut utiliser une valeur de départ et un algorithme pour générer des nombres qui semblent être aléatoires, mais qui sont en fait prévisibles. L'ordinateur ne collecte aucune donnée aléatoire provenant de l'environnement.

Ce n'est pas nécessairement une mauvaise chose dans toutes les situations. Par exemple, si vous jouez à un jeu vidéo, peu importe que les événements qui se produisent dans ce jeu soient caractérisés par des «vrais» nombres aléatoires ou des nombres pseudo-aléatoires. D'un autre côté, si vous utilisez le chiffrement, vous ne voulez pas utiliser des nombres pseudo-aléatoires qu'un attaquant pourrait deviner.

Par exemple, supposons qu'un attaquant connaisse l'algorithme et la valeur de départ utilisés par un générateur de nombres pseudo-aléatoires. Et disons qu'un algorithme de chiffrement obtient un nombre pseudo-aléatoire de cet algorithme et l'utilise pour générer une clé de chiffrement sans ajouter aucun caractère aléatoire supplémentaire. Si un attaquant en sait assez, ils pourraient revenir en arrière et déterminer le nombre pseudo-aléatoire que l'algorithme de chiffrement doit avoir choisi dans ce cas, en cassant le chiffrement.

Le générateur de nombres aléatoires de la NSA et d'Intel


Pour faciliter les choses pour les développeurs et aider à générer des nombres aléatoires sécurisés, les puces Intel incluent un générateur de nombres aléatoires basé sur le matériel appelé RdRand. Cette puce utilise une source d'entropie sur le processeur et fournit des nombres aléatoires au logiciel lorsque le logiciel les demande.

Le problème ici est que le générateur de nombres aléatoires est essentiellement une boîte noire et nous ne savons pas ce qui se passe à l’intérieur. Si RdRand contenait une porte dérobée NSA, le gouvernement serait en mesure de casser les clés de chiffrement générées avec uniquement les données fournies par ce générateur de nombres aléatoires.

C'est un problème sérieux. En décembre 2013, les développeurs de FreeBSD ont supprimé le support de l'utilisation directe de RdRand comme source de caractère aléatoire, affirmant qu'ils ne pouvaient pas lui faire confiance. La sortie du périphérique RdRand serait introduite dans un autre algorithme qui ajoute une entropie supplémentaire, en veillant à ce que les portes arrière du générateur de nombres aléatoires importent peu. Linux fonctionnait déjà de cette façon, en randomisant davantage les données aléatoires provenant de RdRand, de manière à ce qu’elles ne soient pas prévisibles même s’il y avait une porte dérobée. Dans un récent AMA (“Ask Me Anything”) sur Reddit, le PDG d’Intel, Brian Krzanich, n’a pas répondu à ces questions.

Bien sûr, ce n'est probablement pas seulement un problème avec les puces Intel. Les développeurs de FreeBSD ont également appelé les puces de Via. Cette controverse montre pourquoi il est si important de générer des nombres aléatoires vraiment aléatoires et imprévisibles.

Pour générer des «vrais» nombres aléatoires, les générateurs de nombres aléatoires rassemblent «l'entropie» ou des données apparemment aléatoires du monde physique qui les entoure. Pour les nombres aléatoires qui n'ont pas vraiment besoin d'être aléatoires, ils peuvent simplement utiliser un algorithme et une valeur de départ.