Syslog-Meldung beim Booten: nicht initialisierter Urandom-Lesevorgang

Syslog-Meldung beim Booten: nicht initialisierter Urandom-Lesevorgang

CPU istAMD GX-412TC SOC:

GX-412TC GE412TIYJ44JB 4 6 W 2 MB 1,0 GHz/1,4 GHz N/A DDR-1333 0–90 °C

was nicht hat rdrand:

grep rdrand /proc/cpuinfo
# nothing

syslogNach dem Booten meines Computers werden mir folgende Meldungen angezeigt :

kernel: random: dd: uninitialized urandom read (512 bytes read)
kernel: random: cryptsetup: uninitialized urandom read (32 bytes read)

was genau bedeuten diese Meldungen und was kann ich dagegen tun?

Bedeutet dies dd, dass cryptsetupversucht wird, von zu lesen /dev/urandom, aber nicht genügend Entropie vorhanden ist?

Ich verwende havegedden Daemon, aber er wird spät im Bootvorgang gestartet, nachdem diese Meldung angezeigt wird.

Hier ist die Startreihenfolge meines Boot-Skripts:

/etc/rcS.d/S01hostname.sh
/etc/rcS.d/S01mountkernfs.sh
/etc/rcS.d/S02mountdevsubfs.sh
/etc/rcS.d/S03checkroot.sh
/etc/rcS.d/S04checkfs.sh
/etc/rcS.d/S05mountall.sh
/etc/rcS.d/S06bootmisc.sh
/etc/rcS.d/S06procps
/etc/rcS.d/S06urandom
/etc/rcS.d/S07crypto-swap
/etc/rc2.d/S01haveged
/etc/rc2.d/S01networking
/etc/rc2.d/S04rsyslog
/etc/rc2.d/S05cron
/etc/rc2.d/S05ssh

die Meldungen im Syslog stammen aus diesen beiden Skripten:

/etc/rcS.d/S06urandom  -> dd
/etc/rcS.d/S07crypto-swap -> cryptsetup

Sollte havegedvorher begonnen werden urandom?

Ich verwende Debian 10.

Außerdem sollte ich hinzufügen, dass diese Maschine ein Bareboard ohne Tastatur ist. Die einzige Schnittstelle ist eine serielle Konsole. Ich denke, das hat Auswirkungen auf die verfügbare Entropie und ist der Grund, warum ich havegedüberhaupt installiert habe. Ohne würde havegedder sshdDaemon mehrere Minuten lang nicht starten, da er nicht über genügend Entropie verfügt.

Antwort1

Ihre Diagnose ist richtig: Es wurde ein Leseversuch auf einem leeren Entropiepool unternommen. Dies ist "Entropiemangel beim Booten".

Sie können entweder systemd-boot nutzen, wenn Sie ein EFI-System haben,Ignorieren Sie die Warnung(Sie verwenden eine vorhersehbare Krypto, aber inam meistenAnwendungsfälle, die immer noch besser sind als gar keine Krypto), oder versuchen Sie, Entropie aus alternativen Quellen gutzuschreiben -wenn verfügbar- Hinzufügen zur Kernel-Befehlszeile

rng_core.default_quality=X

(Beginnen Sie bei X=1000 und gehen Sie von dort nach unten).

Es gibt andere Techniken, um Entropie zu sammeln. Ein SOC hat möglicherweise einige Pins verfügbar und es gibt Hardware-Treibermodule, die das Sammeln von Entropie von ihnen ermöglichen. Es ist dann nur noch eine Frage des Anschlusses einer geeigneten Transistor- und Widerstandskonfiguration (oder in einigen Fällen eines Elektretmikrofons), um etwas thermisches Rauschen zu erfassen.

Alternativ verfügen die Kernel der Serie 5.4+ über eine effizientere Entropiesammlung, die möglicherweise ausreicht.

Antwort2

Damit haveged funktioniert, muss es mit Ihrem Kernel kompatibel sein — es gibt ein Problem mit haveged, das in Kernelversionen >=5.x nichts tut, sieheist haveged noch nützlich/relevant? #57auf GitHub.

Der Betreuer war so freundlich, die Funktionalität wieder einzuführen, aber diese Patches müssen veröffentlicht werden und dann zuerst in die verschiedenen Distributionen gelangen ... die alte Version startet entweder überhaupt nicht oder tut auch dann nichts, wenn sie ausgeführt wird (prüfen Sie dies mit strace), da der Entropiepool des Kernels nicht länger zu fehlen scheint – aber die Initierung von crng dauert aus irgendeinem Grund noch immer lange.

Es muss auch sehr früh ausgeführt werden. Wenn Sie also initramfs verwenden, müssen Sie haveged auch einige Zeit vor der Verwendung des zufälligen Geräts in initramfs starten. In einem herkömmlichen Init-System sollte haveged ausgeführt werden, sobald es /proc /sys /devverfügbar ist.

Ich bin mir nicht sicher, wie lange Haveged genau braucht, um Entropie an den Kernel zu senden ... es muss zuerst selbst Zufälligkeiten sammeln und führt dazu auch einige Qualitätstests durch. Bei meinem letzten Test (mit gepatchtem Haveged) gab es etwa eine halbe Sekunde Verzögerung zwischen dem Start von Haveged und der Kernel-Meldung random: crng init done.

Zusätzlich zu Haveged können Sie auch das Speichern/Wiederherstellen eines Zufallszahlengenerators in Betracht ziehen, und wenn Sie über ein Netzwerk verfügen, kann ein wenig Datenverkehr dem Kernel ebenfalls dabei helfen, etwas Entropie zu sammeln.

verwandte Informationen