J'obtiens que / dev / random est une bonne source d'entropie, et c'est ce qui est généralement utilisé - C'est juste que je lis sur GC, au moins en Java, il semble accepté que le démon de récupération de place s'exécute de manière non déterministe . Si c'est vrai, pourquoi ne pas utiliser le timing de la collecte des ordures comme source d'entropie au lieu de la variable / dev / random?
random
garbage-collection
edthethird
la source
la source
Réponses:
"Non spécifié" et "aléatoire" sont deux concepts entièrement différents.
Le fonctionnement exact d'un garbage collector n'est pas spécifié et dépend du garbage collector (généralement implémenté par une machine virtuelle en quelque sorte, mais pas nécessairement).
Par conséquent, vous n'avez aucune heure spécifiée (c'est-à-dire déterministe) à laquelle les déchets seront collectés.
Cependant, toute implémentation donnée suivra certaines règles et il y a de fortes chances que deux exécutions ultérieures du même programme aient des modèles de récupération de place très similaires.
Par conséquent , la réelle entropie fournie par un collecteur de déchets serait très faible (et savoir qui les pièces que vous pouvez réellement utiliser comme l' entropie sera difficile).
A titre de comparaison: A
HashMap
en Java ne garantit aucun ordre de récupération pour ses membres (essentiellement parce que le garantir ajouterait des frais généraux qui ne valent pas la peine d'être payés, la plupart du temps). Cependant, pour une implémentation donnée et un ensemble donné d'insertions / suppressions, vous pouvez certainement calculer l'ordre résultant. Ce n'est pas parce qu'il n'y a aucune garantie pour une commande donnée que la commande est aléatoire.la source
Premièrement, nous devons veiller à ne pas tomber dans le piège du raisonnement en manipulant de simples mots. Par exemple, nous pourrions demander, puisqu'un NFA est un "automate fini non déterministe", pourquoi ne l'utilisons-nous pas pour obtenir des nombres aléatoires? Dans ce cas, ce serait parce que ce n'est pas ce que signifie «non déterministe» dans un NFA; en fait, lorsque nous simulons un NFA, sur une entrée donnée, le comportement de la simulation est parfaitement déterministe.
"Déterministe" est une phrase chargée. Pour un programmeur informatique ou un informaticien, un comportement non déterministe signifie simplement "déterminer le comportement exact est compliqué à penser" et dépend de trop de facteurs, y compris l'entrée du programme.
Cependant, cela ne signifie pas que ce n'est pas déterministe pour quelqu'un motivé pour attaquer un cryptosystème. Parfois, les facteurs environnementaux et les intrants peuvent être identifiés, et des schémas reproductibles émergent d'un comportement "non déterministe".
la source