Diese Frage ist ziemlich alt. Aber immer noch relevant, also werde ich meine Antwort geben. Viele CPUs sind heute mit einem eingebauten Hardware-Zufallszahlengenerator (RNG) ausgestattet. Außerdem verfügen viele Systeme über ein Trusted Platform Module (TPM), das auch einen RNG bereitstellt. Es gibt auch andere Optionen, die gekauft werden können, aber Ihr Computer hat wahrscheinlich schon etwas davon.
Sie können rngd aus dem rng-utils-Paket auf den meisten Linux-Distributionen verwenden, um mehr zufällige Daten zu erzeugen. Zum Beispiel musste ich auf Fedora 18 nur Folgendes tun, um das Seeding vom TPM und dem CPU-RNG (RDRAND-Befehl) zu aktivieren:
# systemctl enable rngd
# systemctl start rngd
Sie können die Geschwindigkeit mit und ohne rngd vergleichen. Es ist eine gute Idee, rngd -v -f
auszuführen von der Kommandozeile. Das zeigt Ihnen erkannte Entropiequellen. Stellen Sie sicher, dass alle notwendigen Module zur Unterstützung Ihrer Quellen geladen sind. Um TPM nutzen zu können, muss es über die tpm-tools aktiviert werden. aktualisieren :Hier ist eine nette Anleitung.
Übrigens, ich habe im Internet einige Bedenken darüber gelesen, dass TPM RNG oft auf unterschiedliche Weise beschädigt wird, aber ich habe nichts Konkretes gegen die RNGs gelesen, die in Intel-, AMD- und VIA-Chips zu finden sind. Die Verwendung von mehr als einer Quelle wäre am besten, wenn Ihnen die Zufälligkeitsqualität wirklich wichtig ist.
urandom ist gut für die meisten Anwendungsfälle (außer manchmal während des frühen Bootens). Die meisten Programme verwenden heutzutage urandom statt random. Sogar openssl macht das. Siehe Mythen über Urandom und den Vergleich zufälliger Schnittstellen.
Neuerdings unterstützen Fedora und RHEL/CentOS rng-Tools auch die Jitter-Entropie. Sie können bei fehlenden Hardwareoptionen oder wenn Sie ihr einfach mehr vertrauen als Ihrer Hardware.
AKTUALISIERUNG: eine weitere Option für mehr Entropie ist HAVEGED (hinterfragte Qualität). Auf virtuellen Maschinen gibt es ein kvm/qemu VirtIORNG (empfohlen).
AKTUALISIERUNG 2: In Linux 5.6 macht der Kernel seine eigene Jitter-Entropie.
Auf den meisten Linux-Systemen /dev/random
wird von der tatsächlichen Entropie angetrieben, die von der Umgebung gesammelt wird. Wenn Ihr System keine große Datenmenge von /dev/random
liefert , bedeutet dies wahrscheinlich, dass Sie nicht genug Umgebungszufälligkeit erzeugen, um es mit Strom zu versorgen.
Ich bin mir nicht sicher, warum Sie /dev/urandom
denken ist "langsamer" oder hochwertiger. Es verwendet einen internen Entropiepool wieder, um Pseudozufälligkeiten zu erzeugen – wodurch die Qualität etwas geringer wird – aber es blockiert nicht. Im Allgemeinen können Anwendungen, die keine High-Level- oder langfristige Kryptografie benötigen, /dev/urandom
verwenden zuverlässig.
Versuchen Sie, eine Weile zu warten, und lesen Sie dann ab /dev/urandom
wieder. Es ist möglich, dass Sie den internen Entropiepool erschöpft haben, indem Sie so viel von /dev/random
gelesen haben , beide Generatoren brechen - wenn Sie Ihrem System erlauben, mehr Entropie zu erzeugen, sollten sie wieder aufgefüllt werden.
Siehe Wikipedia für weitere Informationen über /dev/random
und /dev/urandom
.