Welche Entropiequellen werden vom Linux-Kernel verwendet?


14

man 4 random hat eine sehr vage Beschreibung der Linux-Kernel-Entropiequellen:

Der Zufallszahlengenerator sammelt Umgebungsgeräusche von Gerätetreibern und anderen Quellen in einem Entropiepool.

Die Papierübertragung von Entropy im Linux-Zufallszahlengenerator ist ebenfalls nicht viel spezifischer. Es listet auf:

  • add_disk_randomness(),
  • add_input_randomness(), und
  • add_interrupt_randomness().

Diese Funktinos sind von random.c, die folgenden Kommentar enthalten:

Zufallsquellen aus der Umgebung sind Inter-Keyboard-Timings, Inter-Interrupt-Timings einiger Interrupts und andere Ereignisse, die sowohl (a) nicht deterministisch als auch (b) für einen externen Beobachter schwer zu messen sind.

Weiter unten gibt es eine Funktion add_hwgenerator_randomness(...), die die Unterstützung von Hardware-Zufallszahlengeneratoren anzeigt.

Alle diese Informationen sind ziemlich vage (oder erfordern im Fall des Quellcodes tiefe Kenntnisse des Linux-Kernels, um sie zu verstehen). Was sind die tatsächlich verwendeten Entropiequellen und unterstützt der Linux-Kernel irgendwelche Hardware-Zufallszahlengeneratoren, die sofort einsatzbereit sind?

Antworten:


4

Die meisten gängigen PC-Geräte verfügen heutzutage über einen Zufallszahlengenerator. VIA Semiconductor setzt sie seit vielen Jahren in ihren Prozessoren ein. Der Linux-Kernel hat dafür den via-rng-Treiber. Ich zähle 34 Quellmodule im drivers/char/hw_random/Verzeichnis des neuesten Quellbaums, einschließlich Treiber für Intel- und AMD-Hardware sowie für Systeme mit einem TPM-Gerät. Sie können den rng-Daemon (rngd) ausführen, um zufällige Daten in den Kernel-Entropie-Pool zu verschieben.


Dies scheint ein großer Teil der Antwort zu sein, nach der ich gesucht habe. Ich werde einen genaueren Blick darauf werfen, was darin enthalten ist, sobald ich dazu komme. Zusammen mit den bereits in der Frage enthaltenen Informationen fühlt sich dies wie eine umfassende Liste von Entropiequellen an.
Jens Erat

Und um zu sehen, was auf einem bestimmten PC läuft cat /sys/devices/virtual/misc/hw_random/rng_available.
hlovdal

0

Ja, es unterstützt Hardware-Entropie-Generatoren ab Werk. Dies ist für SSL-Server mit hoher Auslastung und vielen gleichzeitigen Verbindungen erforderlich, die pro Sekunde hergestellt werden (Google Mail, Facebook, Microsoft usw.). Für Heimserver oder kleine Unternehmensserver ist dies nicht unbedingt erforderlich. Beachten Sie, dass Hardware-Entropie-Generatoren in der Regel PCI-Schnittstellen verwenden. Da ist nichts Besonderes dabei, sodass sie problemlos unterstützt werden können. Wir sind uns nicht sicher, ob es proprietäre Hardware-Entropie-Generatoren gibt, die Closed-Source-Treiber benötigen, wahrscheinlich auch nicht, da dies (anders als bei Grafikkarten) keine sehr schwierige und nicht sehr profitable Branche ist.

http://en.wikipedia.org/wiki/Hardware_random_number_generator


2
Server mit hohem Volumen erfordern kein Hardware-RNG mehr als Server mit geringem Volumen. Sobald die Maschine mit ausreichender Entropie geimpft wurde, kann sie für immer (oder zumindest für Milliarden von Jahren, was in der Praxis das Gleiche ist) auf einem PRNG weiterlaufen. Die Art von Computern, die wirklich ein Hardware-RNG benötigen, sind eingebettete Geräte, die ihren aktuellen RNG-Status beim Ausschalten nicht sicher speichern können.
Gilles 'SO- hör auf böse zu sein'

@ Gilles: Gilt das für andere Systeme als Linux? Ich weiß, dass Linux dies tut, habe aber noch nie von * BSDs gehört, einschließlich OS X (oder Windwos), die dies tun.
Jens Erat

1
@ JensErat Ich weiß es nicht. Es ist einfach zu implementieren und sehr nützlich, daher wäre ich überrascht, wenn das BSD es nicht getan hätte.
Gilles 'SO- hör auf böse zu sein'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.