Hardware-Zufallszahlengenerator verwenden

Für die Verschlüsselung per z.B. von HTTPS, die Generierung des Private-Keys oder von Session-Ids werden Zufallszahlen benötigt. Je mehr Verschlüsselt werden soll umso mehr Zufall wird benötigt. Die Menge an Zufallszahlen die bereitgestellt werden kann wird Entropie genannt. Linux verwendet hierfür gewöhnlich den IO (Festplattenzugriffe) und die Eingaben von Tastatur und Maus. Server hat of […]

Für die Verschlüsselung per z.B. von HTTPS, die Generierung des Private-Keys oder von Session-Ids werden Zufallszahlen benötigt. Je mehr Verschlüsselt werden soll umso mehr Zufall wird benötigt. Die Menge an Zufallszahlen die bereitgestellt werden kann wird Entropie genannt. Linux verwendet hierfür gewöhnlich den IO (Festplattenzugriffe) und die Eingaben von Tastatur und Maus. Server hat of keine Tastatur und Maus angeschlossen, darum fallen diese Quellen für die Entropie weg. Da der Raspberry PI Hardware für die Generierung von Zufallszahlen besitzt, kann dieser für diese Aufgabe verwendet werden.

Verfügbare Entropie anzeigen

Je nach Beitrag den ich gelesen habe ist ein Wert von weniger als 1000 schlecht. Im Artikel Check available entropy in Linux wird aber auch erst ein Wert von unter 100 bis 200 als schlecht bemängelt.

cat /proc/sys/kernel/random/entropy_avail
676

Kernelmodule anzeigen

Die benötigten Kernelmodule bcm2835-rng werden über folgenden Befehl ausgelastet. Diese Kernelmodule werden nicht per lsmod angezeigt, da die Module statisch in den Kernel mit einkompiliert wurde.

grep rng /lib/modules/$(uname -r)/modules.builtin
kernel/crypto/rng.ko
kernel/drivers/char/hw_random/rng-core.ko
kernel/drivers/char/hw_random/bcm2835-rng.ko

Wie hier zu sehen, ist das Modul bcm2835-rng geladen, damit der Hardwarezufallszahlengenerator (TRNG) des Raspberry PI verwendet werden kann. Dieser wird über die Datei /dev/hwrng bereitgestellt. Der Kernel verwendet diesen Zufallszahlengenerator aber nicht für /dev/random oder /dev/urandom.

rng-tools installieren

Damit die Entropie auch für alle Programme über /dev/random oder /dev/urandom bereitgestellt werden, müssen die rng-tools installiert werden. Da das Init-Script von rng-tools automatisch den Zufallszahlengenerator erkennt, ist keine weitere Konfiguration notwendig um diesen einzubinden.

sudo apt install rng-tools
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.       
Statusinformationen werden eingelesen.... Fertig
Die folgenden NEUEN Pakete werden installiert:
  rng-tools
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 48,7 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 160 kB Plattenplatz zusätzlich benutzt.
Holen: 1 http://mirrordirector.raspbian.org/raspbian/ jessie/main rng-tools armhf 2-unofficial-mt.14-1 [48,7 kB]
Es wurden 48,7 kB in 5 s geholt (8.690 B/s).

rng-tools beim booten starten

sudo systemctl enable rng-tools
Synchronizing state for rng-tools.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d rng-tools defaults
Executing /usr/sbin/update-rc.d rng-tools enable

Testen

Der Wert von /proc/sys/kernel/random/entropy_avail hat sich jetzt deutlich erhöht.

cat /proc/sys/kernel/random/entropy_avail
3724

Benchmark mit dd

Wie zu sehen, kann dir der Kernel über 50 KB pro Sekunde an Entropie bereitstellen. Sollten die rng-tools nicht installiert sein, so wird dieser Test entweder sehr lange dauern oder muss sogar mit STRG+C abgebrochen werden.

dd if=/dev/random of=/dev/null bs=128 count=1024 iflag=fullblock
1024+0 Datensätze ein
1024+0 Datensätze aus
131072 Bytes (131 kB) kopiert, 2,51669 s, 52,1 kB/s

Benchmark mit openssl

In etwa 5 Minuten und 50 Sekunden war die Generierung abgeschlossen. Ohne die rng-tools hatte OpenSSL etwa 91 Minuten für die gleiche Aufgabe benötigt.

time openssl dhparam -out /tmp/dhparam-benchmark.pem 2048
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
…

real	5m50.520s
user	5m50.480s
sys	0m0.030s

Das Artikelbild wurde von https://www.pexels.com/photo/casino-cubes-dice-gambling-40508/ geladen und wurde unter der CC0 License lizenziert.

2 Antworten auf „Hardware-Zufallszahlengenerator verwenden“

  1. […] Artikel Hardware-Zufallszahlengenerator verwenden wurde eine weitere Quelle für die Entropie hinzugefügt. Damit kannst du jetzt bessere und […]

  2. […] kann auf dem Raspberry Pi sehr lange (über 90 Minuten) dauern, falls die Schritte im Artikel Hardware-Zufallszahlengenerator verwenden noch nicht durchgeführt wurden. Sollte der Dienst rng-tools schon installiert sein, werden nur […]

Schreibe einen Kommentar zu Sichere Host-Keys generieren – Mein Raspberry PI Blog Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.