Question

Un gars a dit ce qui suit:

Quiconque tente de générer des nombres aléatoires par des moyens déterministes est, bien sûr, vivre dans un état de péché.

Cela signifie toujours que vous ne pouvez pas générer de vrais nombres aléatoires avec un seul ordinateur. Et il a dit que lorsque les ordinateurs étaient la taille équivalente d'un seul microprocesseur Intel 8080 (~ 6000 vannes). Les ordinateurs sont devenus plus complexes, et je crois que la déclaration de von von Neumann n'est peut-être plus vraie. Considérez qu'un algorithme logiciel implémenté uniquement est impossible. Ils fonctionnent sur du matériel physique. De vrais générateurs de nombres aléatoires et leurs sources d'entropie sont également en matériel.

Ce fragment Java a mis dans une boucle:

      file.writeByte((byte) (System.nanoTime() & 0xff));

peut créer un fichier de données que j'ai représenté comme une image:

nanoimage

Vous pouvez voir la structure, mais avec beaucoup d'aléatoire également. La chose qui intéresse est que ce fichier PNG est de 232 Ko, mais contient 250 000 pixels à l'échelle gris. Le niveau de compression PNG était maximum. Ce n'est qu'un taux de compression de 7%, c'est-à-dire. assez non compressible. Ce qui est également intéressant, c'est que le fichier est unique. Chaque génération de ce fichier est un modèle légèrement différent et a une compressibilité similaire de 7%. Je le souligne car cela est essentiel à mon argument. C'est l'entropie ~ 7bits / octet. Cela réduira bien sûr l'utilisation d'un algorithme de compression plus fort. Mais ne pas réduire à quelque chose près de 0 bits / octet. Une meilleure impression peut être faite en prenant l'image ci-dessus et en substituant sa carte des couleurs par une carte aléatoire: -

randomised nanoimage

La majeure partie de la structure (dans la moitié supérieure) disparaît car ce n'était que des séquences de valeurs similaires mais légèrement différentes. Est-ce une véritable source d'entropie créée en exécutant simplement un programme Java sur un système d'exploitation multi-prise? Pas un générateur de nombres aléatoires uniformément distribué, mais la source d'entropie pour un? Une source d'entropie construite en logiciels fonctionnant sur du matériel physique qui se trouve être un PC.

Supplémentaire

Afin de confirmer que chaque image génère une entropie fraîche sans motif fixe commun à tous, 10 images consécutives ont été générées. Ceux-ci ont ensuite été concaténés et compressés avec l'archiver le plus fort que je puisse obtenir à compiler (PAQ8PX). Ce processus éliminera toutes les données courantes, y compris la corrélation automatique ne laissant que les modifications / entropie.

Le fichier concaténé a complété à ~ 66%, ce qui conduit à un taux d'entropie de ~ 5,3 bits / octet ou 10,5 mbits / image. Une quantité surprenante d'entropie $ sourire $

Supplément 2

Il y a eu des commentaires négatifs selon lesquels mon entropie par méthodologie de test de compression est défectueuse, ne donnant qu'une estimation liée à la limite supérieure. J'ai donc maintenant exécuté le fichier concaténé au même niveau du test d'évaluation de l'entropie cryptographique officielle de NIST, SP800-90B_ENTROPYEASSESSHAL. C'est aussi bon que possible pour la mesure de l'entropie non IID. C'est le rapport (désolé, cette question devient longue, mais le problème est complexe): -

Running non-IID tests...

Entropic statistic estimates:
Most Common Value Estimate = 7.88411
Collision Test Estimate = 6.44961
Markov Test Estimate = 5.61735
Compression Test Estimate = 6.65691
t-Tuple Test Estimate = 7.40114
Longest Reapeated Substring Test Estimate = 8.00305

Predictor estimates:
Multi Most Common in Window (MultiMCW) Test: 100% complete
    Correct: 3816
    P_avg (global): 0.00397508
    P_run (local): 0.00216675
Multi Most Common in Window (Multi MCW) Test = 7.9748
Lag 

Test: 100% complete
    Correct: 3974
    P_avg (global): 0.00413607
    P_run (local): 0.00216675
Lag Prediction Test = 7.91752
MultiMMC Test: 100% complete
    Correct: 3913
    P_avg (global): 0.00407383
    P_run (local): 0.00216675
Multi Markov Model with Counting (MultiMMC) Prediction Test = 7.9394
LZ78Y Test: 99% complete
    Correct: 3866
    P_avg (global): 0.00402593
    P_run (local): 0.00216675
LZ78Y Prediction Test = 7.95646
Min Entropy: 5.61735

Le résultat est que NIST croit que j'ai généré 5,6 bits / octet d'entropie. Mon estimation de compression de bricolage met cela à 5,3 bits / octet, légèrement plus conservatrice.

-> Les preuves semblent soutenir l'idée qu'un ordinateur en train d'exécuter un logiciel peut générer une véritable entropie. Et que von Neumann avait tort (mais peut-être correct pour son temps).


J'offre les références suivantes qui pourraient soutenir ma réclamation: -

Y a-t-il des modèles stochastiques de non-déterminisme dans le taux d'exécution du programme?

Analyse WCET des systèmes probabilistes en temps réel

Existe-t-il un algorithme logiciel qui peut générer un modèle de chaos non déterministe? et la pertinence des effets chaotiques.

Parallèle avec le Principe d'incertitude entropique quantique

Aleksey Shipilёv entrée de blog Concernant le comportement chaotique de NanoTime (). Son complot de dispersion n'est pas différent du mien.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top