Wie kann ich feststellen, ob mein Computer RNG-Hardware unterstützt?

11

Ich bin auf einen Blog über das Problem des Entropiepools gestoßen und habe erfahren, dass es eine spezielle Hardware namens RNG gibt. Ich habe diese Kernel-RNG- Seite gelesen, frage mich aber immer noch, ob es eine Möglichkeit gibt, herauszufinden, ob mein Server Hardware-RNG unterstützt oder nicht.

Allan Ruine
quelle

Antworten:

8

Es gibt zwei wahrscheinliche Arten von "echtem" Hardware-RNG: einen CPU-basierten und einen Chipsatz- oder PCI-basierten. (Es gibt auch ein paar USB-Hardware-RNGs, aber ich vermute, Sie hätten eines davon bemerkt ;-)

Das Folgende ist Linux-spezifisch.

Bei CPU-basierten können Sie /proc/cpuinfonach Hinweisen suchen, vorausgesetzt, Ihr Kernel ist neu genug, um sie zu erkennen. Für Intel-CPUs ist das Flag rdrand, weitere Informationen hier: /unix/43539/what-do-the-flags-in-proc-cpuinfo-mean

Für Chipsatz diejenigen haben , wenn Sie CONFIG_HW_RANDOMin Ihrem Kernel aktiviert und die pro-Vendor - Support CONFIG_HW_RANDOM_INTEL ..._AMDusw. dann Ihre Startmeldungen sollten angeben , wenn überhaupt gefunden wurden (zB „Intel 82802 RNG erkannt“). Wenn sie als Module vorhanden sind, können Sie versuchen ( modprobe intel-rng), um festzustellen, ob sie geladen werden. "Kein solches Gerät" zeigt an, dass keine Hardware erkannt wurde. Nicht alle Treiber drucken konsistent "RNG erkannt" oder "nicht erkannt", sodass Sie möglicherweise die Quellen lesen ( /drivers/char/hw_random/Verzeichnis der Kernelquelle).

Bei anderen können Sie überprüfen lspci -v, was erkannt wird.

mr.spuratic
quelle
1

Um dies herauszufinden, müssen RNGSie Folgendes tun:

1) Listen Sie alle Module auf, deren Name "rng" enthält:

cat /proc/modules | grep -i rng

2) Wenn Sie welche haben, erhalten Sie ein Ergebnis wie dieses

tpm_rng 16384 0 - Live 0xffffff......

3) Stellen Sie sicher, dass Sie es modprobezu diesem Zeitpunkt aktivieren oder laden :

modprobe tpm_rng

UPDATE : In Bezug auf Schritt (1) habe ich modprobe -lin Ubuntu 16 nicht gearbeitet, deshalb habe ich versucht, nach "/ proc / modules" zu suchen, aber wenn es mit Ihnen funktioniert, ist es in Ordnung. Kürzlich habe ich gesucht und kennengelernt Alle Module befinden sich im Inneren, /lib/modules/$(uname -r)sodass Sie auch Folgendes verwenden können, was besser ist:

cat /lib/modules/$(uname -r)/modules.dep | grep -i rng.*.ko
Muhammad Soliman
quelle
1

Auf den neuesten Kerneln können Sie hier überprüfen:

$ cat /sys/devices/virtual/misc/hw_random/rng_current 
virtio_rng.0

Wenn diese Datei existiert und keine sagt, haben Sie im Grunde ein rng vorhanden. (In diesem Fall handelt es sich um eine virtuelle Maschine, bei der der Host eine zufällige Quelle bereitstellt.)

Auch um zu sehen, was verfügbar ist (dieses Beispiel von einer modernen Intel-Maschine, auch mit einer angeschlossenen ChaosKey-Hardware rng)

$ cat /sys/devices/virtual/misc/hw_random/rng_available 
ChaosKey-hw-1.0-sw-1.9-001900375346430b20333632 tpm-rng-0 

Also sowohl der ChaosKey als auch die tpm verfügbar.

Unter https://daniel-lange.com/archives/152-hello-buster.html gibt es einige interessante Hintergrundinformationen

Tim Bray
quelle