Frage Erkläre in Plain English über Entropy Available


Wenn ich diesen Befehl in Ubuntu ausführen

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 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 ist? Was ist ein guter Bereich dafür? Wie ist es bestimmt?


21
2017-08-19 13:34


Ursprung


Ich mag es, wenn Leute nach Erklärungen für komplexe, nuancierte technische Probleme in "plain english" fragen. Es stellt sich heraus, dass fast jeder Beruf eine unglaublich spezifische Sprache verwendet, um Probleme zu beschreiben, die für diesen Bereich oder dieses Problem-Set einzigartig sind. Das macht es nicht, um dich auszuschließen, sie tun es, weil die genaue Form dieser Sprache in diesem Beruf Bedeutung hat, die nicht in "einfachem Englisch" vermittelt werden kann. Es gibt einen Grund, warum Leute dafür bezahlt werden, Dinge zu tun und zu zählen. Oft wird eine Antwort in "plain english" nuancierte Details auslassen und den Empfänger später in den Po beißen ... - jj33
@ jj33 Es gibt keinen Grund, warum eine Übersicht auf hoher Ebene nicht gegeben werden kann. Die Antworten in dieser Frage sind sehr hilfreich. Es hört sich nicht so an, als brauche er das "nuancierte Detail". - ceejayoz
@ceejayoz Ich stimmte wirklich völlig zu. Ich habe keine Ahnung, warum ich diese Frage beantwortet habe. Meine allgemeine Aussage ist wahr, aber ich bin mir nicht sicher, warum ich das Gefühl hatte, dass ich auf diese Frage antworten müsste, die wie eine vollkommen vernünftige Bitte um Information erscheint. - jj33


Antworten:


Ihr System sammelt einige "echte" Zufallszahlen, indem es verschiedene Ereignisse im Auge behält: Netzwerkaktivität, Hardware-Zufallszahlengenerator (falls verfügbar; zum Beispiel VIA-Prozessoren haben normalerweise einen "echten" Zufallszahlengenerator) und so weiter. Wenn diese dem Kernel entropy pool zugeführt werden, wird dies von / dev / random verwendet. Anwendungen, die eine extreme Sicherheit benötigen, neigen dazu, / dev / random als ihre Entropiequelle oder mit anderen Worten die Zufälligkeitsquelle zu verwenden.

Wenn / dev / random aus der verfügbaren Entropie ausgeht, kann es keine Zufälligkeit mehr liefern, und die Anwendung, die auf die Zufälligkeit wartet, bleibt stehen, bis mehr zufällig verfügbares Material verfügbar ist. Das Beispiel, das ich während meiner Karriere gesehen habe, ist, dass Cyrus IMAP Daemon / Dev / Random für die Zufälligkeit verwenden wollte und seine POP-Sitzungen die zufälligen Strings in APOP-Verbindungen von / dev / random generieren wollten. In einer stark frequentierten Umgebung gab es mehr Login-Versuche als Traffic für die / dev / random -> alles wurde blockiert. In diesem Fall habe ich rng-tools installiert und die rngd aktiviert - die halb-zufälligen Zahlen von / dev / urandom nach / dev / random geschaufelt, wenn / dev / random aus der "echten" Entropie herausgelaufen ist.


20
2017-08-19 13:43





Wenn Sie einen einfacheren Überblick über das zugrunde liegende Problem haben möchten: Einige Anwendungen (z. B. Verschlüsselung) benötigen Zufallszahlen. Sie können Zufallszahlen mit einem Algorithmus erzeugen - obwohl diese in einem Sinn zufällig erscheinen, sind sie in einem anderen völlig vorhersagbar. Zum Beispiel, wenn ich Ihnen die Ziffern 58209749445923078164062862089986280348253421170679 gebe, sehen sie ziemlich zufällig aus. Aber wenn Sie erkennen, dass sie tatsächlich Ziffern von PI sind, dann würden Sie wissen, dass der nächste 8 sein wird.

Für einige Anwendungen ist dies in Ordnung, aber für andere Anwendungen (insbesondere sicherheitsbezogene) wünschen sich die Benutzer eine echte unvorhersehbare Zufälligkeit - die nicht durch einen Algorithmus (d. H. Programm) erzeugt werden kann, da dies per Definition vorhersagbar ist. Dies ist ein Problem in Ihrem Computer im Wesentlichen ist ein Programm, wie kann es also echte Zufallszahlen bekommen? Die Antwort besteht darin, wirklich zufällige Ereignisse von der Außenwelt zu messen - zum Beispiel Lücken zwischen Ihren Tastendrucken und diese zu verwenden, um echte Zufälligkeit in den ansonsten vorhersagbaren Zufallszahlengenerator zu injizieren. Der "Entropie-Pool" könnte man sich als den Speicher dieser Zufälligkeit vorstellen, der durch die Tastenanschläge (oder was auch immer verwendet wird) aufgebaut und durch die Erzeugung von Zufallszahlen abgelassen wird.


18
2017-08-19 14:07



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


Die schreibgeschützte Datei entropy_avail gibt   die verfügbare Entropie. Normalerweise, das   wird 4096 (Bits) sein, eine volle Entropie   Schwimmbad.

Sie können mehr lesen unter: http://linux.die.net/man/4/random


7
2017-08-19 13:40





Entropie ist ein technischer Begriff für "Zufälligkeit". Computer nicht wirklich erzeuge Entropie, aber sammle sie, indem du Sachen wie die Variationen von Rotationsgeschwindigkeiten der Festplatte (Ein physikalisches Phänomen, das aufgrund von Reibung sehr schwer vorhersagbar ist) Wenn ein Computer Pseudozufallsdaten erzeugen will, wird er eine mathematische Formel mit echter Entropie erzeugen, die er durch Mausklicks, Festplattenspinvariationen ermittelt usw. Grob gesagt entropy_avail ist das Maß der Bits, von denen derzeit gelesen werden kann /dev/random

Es braucht Zeit, bis der Computer Entropie aus seiner Umgebung liest, es sei denn, er hat eine coole Hardware wie eine verrauschte Diode oder so.

Wenn Sie 4096 Bits Entropie zur Verfügung haben und Sie Katze /dev/random Sie können erwarten, 512 Byte Entropie (4096 Bits) lesen zu können, bevor die Datei blockiert, während sie auf mehr Entropie wartet.

Zum Beispiel wenn du "cat /dev/random"Ihre Entropie wird auf Null schrumpfen. Zuerst werden Sie 512 Bytes zufälligen Mülls bekommen, aber es wird aufhören und nach und nach werden Sie mehr zufällige Daten durch die Tropfnässe sehen.

So sollten Menschen nicht arbeiten /dev/random obwohl. Normalerweise lesen Entwickler eine kleine Menge von Daten, wie 128 Bits, und verwenden diese, um eine Art von PRNG-Algorithmus zu erzeugen. Es ist höflich, keine Entropie mehr zu lesen /dev/random als Sie brauchen, da dauert so lange aufzubauen und gilt als wertvoll. Also wenn du es achtlos weggibst catWenn Sie die Datei wie oben beschrieben starten, werden andere Anwendungen, von denen Sie lesen müssen, betroffen sein /dev/randomblockieren. Auf einem System bei der Arbeit stellten wir fest, dass viele Kryptofunktionen ausgingen. Wir haben festgestellt, dass ein Cron-Job ein Python-Skript aufruft, das initialisiert wird ramdom.random() bei jedem Lauf der alle paar Sekunden lief. Um dies zu beheben, haben wir das Python-Skript so umgeschrieben, dass es als ein Daemon lief, der nur einmal initialisiert wurde und der Cron-Job Daten über XMLRPC lesen würde, so dass er nicht weiterlesen würde /dev/random beim Start.


7
2017-07-14 04:18



"Um das zu beheben, haben wir das Python-Skript so umgeschrieben, dass es als Daemon lief, der nur einmal initialisiert wurde und der Cron-Job Daten über XMLRPC lesen würde, so dass es beim Start nicht mehr von / dev / random lesen würde." Abgesehen von dem Teil, den ich zitiert habe, der schwer zu bewerten ist, weil es nicht klar ist, ob dein Skript wirklich Zufall benötigt oder nicht, ist deine Antwort sehr klar und deutlich. - Craig Hicks