web-dev-qa-db-fra.com

Expliquez en anglais à propos de l'entropie disponible

Si j'exécute cette commande à Ubuntu

Sudo cat /proc/sys/kernel/random/entropy_avail

il retourne un nombre indiquant combien de "entropie" est disponible pour le noyau, mais c'est à peu près tout ce que je sais. Dans quelle unité cette entropie est-elle mesurée? A quoi cela sert? On m'a dit que c'est "mauvais" si ce nombre est "faible". Quelle est la basse "faible" et quelles choses "mauvaises" vont se passer si c'est? Qu'est-ce qu'une bonne gamme pour qu'il soit à? Comment est-il déterminé?

30
Josh Lindsey

Votre système rassemble des nombres aléatoires "réels" en gardant un œil sur différents événements: activité réseau, générateur de nombres aléatoires du matériel (si disponible; par exemple, les processeursVIAont généralement un "réel" générateur de nombres aléatoires) et bientôt. Si vous nourrissez ceux de la piscine d'entropie de noyau, qui est utilisé par/dev/aléatoire. Les applications nécessitant une certaine sécurité extrême ont tendance à utiliser/dev/aléatoires comme source d'entropie, ou en d'autres termes, la source de randomneur.

Si/dev/Dev/aléatoire est sorti de l'entropie disponible, il est incapable de servir plus de hasard et l'application en attente des stands de randomness jusqu'à ce que des trucs plus aléatoires soient disponibles. L'exemple que j'ai vu au cours de ma carrière est que Cyrus IMAP Daemon souhaitait utiliser/dev/de devir/aléatoire pour le hasard et ses sessions pop souhaitant générer les chaînes aléatoires des connexions apop de/dev/aléatoires. Dans un environnement occupé, il y avait plus de tentatives de connexion que le trafic d'alimentation de/dev/aléatoires -> tout callait. Dans ce cas, j'ai installé des outils RNG et activé le RNGD Il avait - que les nombres semi-aléatoires pellés de/dev/ur par-urande à/dev/deviennent/aléatoires dans le cas/dev/aléatoire ont manqué d'entropie "réelle".

23
Janne Pikkarainen

Si vous souhaitez un aperçu plus simple du problème sous-jacent: certaines applications (telles que le cryptage) ont besoin de nombres aléatoires. Vous pouvez générer des nombres aléatoires à l'aide d'un algorithme - mais bien que ceux-ci semblent aléatoires dans un sens, ils sont totalement prévisibles dans une autre. Par exemple, si je vous donne les chiffres 58209749445923078164062862089984280348253421170679, ils ont l'air assez aléatoire. Mais si vous réalisez qu'ils sont en réalité des chiffres de PI, vous sauriez que la suivante va être 8.

Pour certaines applications, cela va bien, mais pour d'autres applications (en particulier les personnes liées à la sécurité), les gens veulent une véritable aléatoire imprévisible - qui ne peut être générée par un algorithme (c'est-à-dire un programme) car c'est par définition prévisible. C'est un problème dans la mesure de votre ordinateur essentiellement IS un programme, comment peut-il avoir des nombres aléatoires authentiques? La réponse consiste à mesurer des événements véritablement aléatoires du monde extérieur - par exemple des lacunes entre vos touches et les utiliser pour injecter une véritable aléatoire dans le générateur de nombres aléatoires sinon prévisible. Le "pool d'entropie" pourrait être considéré comme le magasin de ce hasard qui se construit par les frappes de frappe (ou tout ce qui est utilisé) et drainé par la génération de nombres aléatoires.

21
JustinP

L'entropie est un terme technique pour "aléatoire". Les ordinateurs ne génèrent pas vraiment d'entropie, mais rassemblez-le en regardant des trucs comme les variations de vitesses de rotation du disque dur (phénomènes physiques très difficiles à prédire en raison du frottement, etc.) Lorsqu'un ordinateur souhaite générer une pseudo aléatoire de données. Semez une formule mathématique avec une véritable entropie que celle-ci trouvée en mesurant des mouseClicks, des variations de rotation du disque dur, etc. à titre approximatif entropy_avail est la mesure des bits actuellement disponibles à lire à partir de /dev/random

Il faut du temps pour que l'ordinateur lise l'entropie de son environnement à moins d'avoir un matériel cool comme une diode bruyante ou quelque chose du genre.

Si vous avez 4096 bits d'entropie disponibles et que vous êtes chat /dev/random Vous pouvez vous attendre à pouvoir lire 512 octets d'entropie (4096 bits) avant que le fichier ne bloque que s'il attend plus d'entropie.

Par exemple, si vous "cat /dev/random" Votre entropie se rétrécira à zéro. Au début, vous obtiendrez 512 octets de déchets aléatoires, mais cela s'arrêtera et petit à petit, vous verrez plus de bac de couchage de données aléatoires.

Ce n'est pas la façon dont les gens doivent utiliser /dev/random Cependant. Normalement, les développeurs liront une petite quantité de données, comme 128 bits, et utilisent cela pour semer une sorte de type PRNG algorithme. Il est poli de ne pas lire plus d'entropie à partir de /dev/random Que vous n'avez besoin que depuis que vous devez construire si longtemps et est considéré comme précieux. Ainsi, si vous le drainez par négligement cat Ting le fichier comme ci-dessus, vous causerez d'autres applications à lire à partir de /dev/random À bloquer. Sur un système au travail, nous avons remarqué que beaucoup de fonctions de crypto se blottissaient. Nous avons découvert qu'un travail cron appelait un script python _ qui continuait à initialiser ramdom.random() sur chaque exécution qui a fonctionné toutes les quelques secondes. Pour résoudre ce problème, nous avons réécrit le script python afin qu'il courait comme un démon initialisé une seule fois et que le travail cron lirait des données via XMLRPC de manière à ne pas continuer à lire à partir de /dev/random Commencez.

9
Carlos D. Garza

L'entropy_avail de fichier en lecture seule donne l'entropie disponible. Normalement, ce sera 4096 (bits), un pool complet d'entropie.

Vous pouvez lire plus à: http://linux.die.net/man/4/random

8
Prix