GNU/Linux >> LINUX-Kenntnisse >  >> Linux

/dev/random Extrem langsam?

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 .


Linux
  1. So generieren Sie ein zufälliges Passwort unter Linux mit /dev/random

  2. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  3. Linux – Was bedeutet der Buchstabe „u“ in /dev/urandom?

  4. So ordnen Sie /dev/sdX- und /dev/mapper/mpathY-Geräte vom /dev/dm-Z-Gerät zu

  5. Wie kann /dev/random oder /dev/urandom mit base64 codiert werden?

tty (/dev/tty ) vs. pts (/dev/pts) unter Linux

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

RdRand von /dev/random

Kernel:/dev/kmem und /dev/mem deaktivieren

Wie Linux /dev/tty und /dev/tty0 verwendet

Ist es falsch, /dev/random unter Linux mit /dev/urandom zu verknüpfen?