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_avail
ist 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/random
als nötig zu lesen , da der Aufbau so lange dauert und als wertvoll angesehen wird. Wenn Sie es also entleeren, indem Sie cat
die Datei wie oben beschrieben nachlässig tippen, werden andere Anwendungen /dev/random
blockiert , 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/random
beim Start nicht weiter liest .