Erläutern Sie in einfachem Englisch Entropy Available

28

Wenn ich diesen Befehl in Ubuntu ausführe

sudo cat /proc/sys/kernel/random/entropy_avail

es gibt eine Zahl zurück, die angibt, wie viel "Entropie" dem Kernel zur Verfügung steht, aber das ist ungefähr alles, was ich weiß. In welcher Einheit wird diese Entropie gemessen? Was wird es verwendet? Mir wurde gesagt, dass es "schlecht" ist, wenn diese Zahl "niedrig" ist. Wie niedrig ist "niedrig" und welche "schlechten" Dinge werden passieren, wenn es so ist? Was ist ein guter Bereich für ihn? Wie ist es bestimmt?

Josh Lindsey
quelle

Antworten:

22

Ihr System erfasst einige "echte" Zufallszahlen, indem es verschiedene Ereignisse im Auge behält: Netzwerkaktivität, Hardware-Zufallszahlengenerator (falls verfügbar; VIA-Prozessoren verfügen normalerweise über einen "echten" Zufallszahlengenerator) usw. Füttert diese an den Kernel-Entropie-Pool, der von / dev / random verwendet wird. Anwendungen, die eine extreme Sicherheit benötigen, neigen dazu, / dev / random als Entropiequelle oder mit anderen Worten als Zufallsquelle zu verwenden.

Wenn / dev / random keine verfügbare Entropie mehr hat, kann keine weitere Zufälligkeit mehr ausgegeben werden, und die Anwendung, die auf die Zufälligkeit wartet, bleibt stehen, bis weitere zufällige Informationen verfügbar sind. Das Beispiel, das ich während meiner Karriere gesehen habe, ist, dass der Cyrus IMAP-Dämon / dev / random für die Zufälligkeit verwenden wollte und seine POP-Sitzungen die zufälligen Zeichenfolgen in APOP-Verbindungen aus / dev / random generieren wollten. In einer geschäftigen Umgebung gab es mehr Anmeldeversuche als Datenverkehr, um die Datei / dev / random zu füttern -> alles kam zum Stillstand. In diesem Fall installierte ich rng-tools und aktivierte das rngd, das es hatte - das halbzufällige Zahlen von / dev / urandom nach / dev / random schaufelte, falls / dev / random keine "echte" Entropie mehr hatte.

Janne Pikkarainen
quelle
19

Wenn Sie einen einfacheren Überblick über das zugrunde liegende Problem erhalten möchten: Einige Anwendungen (z. B. Verschlüsselung) benötigen Zufallszahlen. Sie können Zufallszahlen mithilfe eines Algorithmus generieren - obwohl diese in gewissem Sinne zufällig erscheinen, sind sie in einem anderen Sinne vollständig vorhersehbar. Wenn ich Ihnen zum Beispiel die Ziffern 58209749445923078164062862089986280348253421170679 gebe, sehen sie ziemlich zufällig aus. Wenn Sie jedoch erkennen, dass es sich tatsächlich um Ziffern von PI handelt, wissen Sie, dass die nächste Ziffer 8 sein wird.

Für einige Anwendungen ist dies in Ordnung, aber für andere Anwendungen (insbesondere für sicherheitsrelevante) wünschen sich die Benutzer eine echte unvorhersehbare Zufälligkeit - die von einem Algorithmus (dh einem Programm) nicht generiert werden kann, da dies per Definition vorhersehbar ist. Dies ist ein Problem, dass Ihr Computer im Wesentlichen ist ein Programm, so wie kann es möglicherweise echte Zufallszahl bekommen? Die Antwort besteht darin, wirklich zufällige Ereignisse aus der Außenwelt zu messen - zum Beispiel Lücken zwischen Ihren Tastendrücken - und diese zu verwenden, um dem ansonsten vorhersehbaren Zufallszahlengenerator echte Zufälligkeit zu verleihen. Der "Entropiepool" könnte als Speicher dieser Zufälligkeit angesehen werden, die durch die Tastenanschläge (oder was auch immer verwendet wird) aufgebaut und durch die Erzeugung von Zufallszahlen abgeleitet wird.

JustinP
quelle
2
Schöne Erklärung ...
Pradipta
Aber PI ist irrational und würde jede Sequenz einschließen, einschließlich der obigen Sequenz, gefolgt von 9 (anstelle von 8).
Ajay Brahmakshatriya
9

Entropie ist ein Fachbegriff für "Zufälligkeit". Computer erzeugen Entropie nicht wirklich, sondern erfassen sie durch Betrachten von Dingen wie den Schwankungen der Festplattenrotationsgeschwindigkeiten (ein physikalisches Phänomen, das aufgrund von Reibung usw. sehr schwer vorherzusagen ist) eine mathmatical Formel mit echten Entropie Saatgut , dass es durch Messung Mausklicks, Festplatte Spinvariationen usw. Grob gesagt gefunden entropy_availist das Maß des Bits zur Zeit verfügbar zu lesenden von/dev/random

Es dauert eine Weile, bis der Computer die Entropie aus seiner Umgebung gelesen hat, es sei denn, er verfügt über eine coole Hardware wie eine verrauschte Diode oder ähnliches.

Wenn Sie über 4096 Entropiebits verfügen und eine Katze haben /dev/random, können Sie davon ausgehen, dass 512 Byte Entropie (4096 Bits) vor dem Blockieren der Datei gelesen werden können, während auf weitere Entropie gewartet wird.

Wenn Sie zum Beispiel „ cat /dev/random“ Ihre Entropie auf Null reduzieren. Zuerst werden Sie 512 Bytes zufälligen Müll bekommen, aber es wird aufhören und nach und nach werden Sie mehr zufällige Daten durchlaufen sehen.

Dies ist jedoch nicht die Art und Weise, wie Menschen arbeiten sollten /dev/random. Normalerweise lesen Entwickler eine kleine Datenmenge, wie 128 Bit, und verwenden diese, um eine Art PRNG-Algorithmus zu erzeugen. Es ist höflich, nicht mehr Entropie /dev/randomals nötig zu lesen , da der Aufbau so lange dauert und als wertvoll angesehen wird. Wenn Sie es also entleeren, indem Sie catdie Datei wie oben beschrieben nachlässig tippen, werden andere Anwendungen /dev/randomblockiert , aus denen gelesen werden muss . Auf einem System bei der Arbeit stellten wir fest, dass viele Kryptofunktionen ausfielen. Wir haben festgestellt, dass ein Cron-Job ein Python-Skript aufruft, das ständig initialisiert wirdramdom.random()bei jedem Lauf, der alle paar Sekunden lief. Um dieses Problem zu beheben, haben wir das Python-Skript so umgeschrieben, dass es als ein nur einmal initialisierter Daemon ausgeführt wurde und der Cron-Job Daten über XMLRPC liest, damit er /dev/randombeim Start nicht weiter liest .

Carlos D. Garza
quelle
1
"Um dies zu beheben, haben wir das Python-Skript so umgeschrieben, dass es als ein nur einmal initialisierter Daemon ausgeführt wurde und der Cron-Job Daten über XMLRPC liest, damit er beim Start nicht weiter aus / dev / random liest." --- Abgesehen von dem Teil, den ich zitiert habe, der schwierig zu bewerten ist, weil nicht klar ist, ob Ihr Skript wirklich Zufälligkeit benötigte oder nicht, ist Ihre Antwort sehr klar und eindeutig.
Craig Hicks
8

Die schreibgeschützte Datei entropy_avail gibt die verfügbare Entropie an. Normalerweise ist dies 4096 (Bits), ein vollständiger Entropiepool.

Weitere Informationen finden Sie unter: http://linux.die.net/man/4/random

Prix
quelle