human
Comment un programme rend-il les choses « aléatoires » ? Par exemple, comment les machines garantissent-elles le caractère aléatoire de certaines fonctions ? S'il vous plaît, expliquez-moi comme si j'avais cinq ans.
gpt
Il existe en fait différents niveaux d'aléatoire, selon les besoins. Il y a ce que nous pouvons appeler le hasard occasionnel. C'est juste assez aléatoire pour qu'une personne occasionnelle ait l'impression que c'est aléatoire. Comme /u/flyingjam l'a dit, vous prenez l'heure actuelle, vous l'introduisez dans une fonction aléatoire et elle crache quelque chose d'assez bon pour des efforts occasionnels. La plupart des "aléatoires" sont aléatoires. Les fonctions aléatoires pour cela peuvent être aussi simples que l'heure précise actuelle impaire ou paire. Plus généralement, des générateurs congruentiels linéaires très rapides sont utilisés, ne vous inquiétez pas des grands mots, sachez simplement que si vous connaissez l'équation, vous pouvez commencer à attaquer le caractère aléatoire et gagner en fonction du fait qu'il n'est pas aléatoire. Pour des choses plus strictes, il y a le hasard de Monte Carlo, nommé d'après le jeu. Ceci est utilisé là où les enjeux sont plus élevés, soit de l'argent en jeu, soit il est souvent utilisé dans les sciences. Cela nécessite simplement une fonction aléatoire plus forte. L'idée est que ce que vous échantillonnez ne peut pas deviner les nombres, donc la variation par rapport à la perfection n'a pas d'importance. Bien qu'il existe des algorithmes suffisamment bons pour le caractère aléatoire de Monte Carlo qui ne sont pas cryptographiques, la vitesse des algorithmes cryptographiques modernes signifie que l'algorithme d'étirement de l'entropie cryptographique est de plus en plus utilisé. Aléatoire cryptographique. Parfois, vous avez besoin de nombres vraiment très aléatoires, pour des choses comme la clé utilisée entre votre ordinateur et votre banque. Ceux-ci supposent un attaquant de grande puissance. L'algorithme lui-même est généralement en deux étapes, la première étape est la collecte d'entropie. La deuxième étape est l'étirement de l'entropie. La collecte d'entropie est empruntée à perfect , mais une fonction cryptographiquement forte est ensuite utilisée pour étirer les données. Souvent, la fonction semble assez simple, mais elle est très soigneusement conçue pour « remuer » tout nouveau caractère aléatoire qu'elle peut trouver. De plus en plus d'endroits utilisent ce niveau pour tout, les systèmes d'exploitation modernes offrent effectivement ce niveau gratuitement. Parfait hasard. Vous n'en avez pas besoin très souvent, pour la plupart des gens vous n'en avez vraiment besoin que pour alimenter votre niveau cryptographique. Collection purement entropique. Entropy collection vous prenez tout ce que vous pouvez trouver qui pourrait avoir au moins un peu de hasard ; la vitesse du ventilateur, le temps de recherche du disque, l'arrivée des paquets réseau, l'heure actuelle, la température du processeur, certains processeurs ont des sources aléatoires, etc. À partir de là, une fonction de hachage est généralement utilisée pour distiller l'entropie. Une centaine de mégaoctets devient 512 bits. Cela peut prendre des heures pour générer un seul kilo-octet de ce niveau de random .