起動時にSyslogメッセージ:初期化されていないランダム読み取り

起動時にSyslogメッセージ:初期化されていないランダム読み取り

中央処理装置はAMD GX-412TC SoC:

GX-412TC GE412TIYJ44JB 4 6W 2MB 1.0GHz/ 1.4GHz 該当なし DDR-1333 0-90°C

それらのどれもありませんrdrand

grep rdrand /proc/cpuinfo
# nothing

syslogマシンが起動すると、次のメッセージが表示されます。

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

このメッセージはどういう意味ですか?どうですか?

これは意味しddcryptsetup読もうとします/dev/urandomが、エントロピーが足りませんか?

デーモンを使用していますが、havegedこのメッセージが表示された後、ブートプロセスの後半にデーモンが起動しました。

私のブートスクリプトの起動順序は次のとおりです。

/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

システムログのメッセージは、次の2つのスクリプトから来ます。

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

どれからhaveged始めるべきですかurandom

私はDebian 10を使用しています。

また、このマシンはベアボードであり、キーボードがないことを付け加えたいと思います。唯一のインターフェイスはシリアルコンソールです。私はこれが利用可能なエントロピーに影響を与えると思います。これがhaveged私が最初にそれをインストールした理由です。それ以外の場合は、havegedエントロピーsshdが不十分なため、デーモンは数分間起動しません。

答え1

診断は正しいです。空のエントロピープールでお読みください。これは」開始時間エントロピー飢餓」。

EFIシステムがある場合は、systemd-bootを利用できます。警告を無視(あなたは予測可能な暗号通貨を使用していますが、最大暗号化しないよりも優れたユースケース)または他のソースのエントロピーを検討してください。可能であれば- カーネルコマンドラインに追加

rng_core.default_quality=X

(X = 1000で始まり、そこから降ります)。

エントロピーを収集する他の技術があります。 SOCには使用可能なピンがあり、そのピンからエントロピーを収集できるハードウェアドライバモジュールがあります。次に、適切なトランジスタと抵抗設定(または場合によってはエレクトレットマイク)を接続して熱ノイズを収集します。

あるいは、5.4+シリーズのカーネルはより効率的なエントロピー収集を提供するので、十分です。

答え2

hasgedが機能するにはカーネルと互換性がなければなりません。問題があります。 hasgedは5.x以上のカーネルバージョンでは何もしません。Haggardはまだ役に立つか関連性がありますか? 57話GitHubから。

管理者は親切に機能を再導入しましたが、そのパッチをリリースしてから最初にさまざまなディストリビューションに適用する必要がありました。 )を使用して確認すると、straceカーネルのエントロピープールはもはや枯渇しないように見えますが、何らかの理由でcrng initにはまだ時間がかかります。

また、非常に早く実行する必要があるため、initramfsを使用している場合は、ランダムデバイスを使用する前に一定時間 initramfsで実行を開始する必要があります。従来のinitシステムでは、Havegedが/proc /sys /dev利用可能になるとすぐに実行する必要があります。

Havegedがカーネルにエントロピーを送るのにどれくらいの時間がかかるのかわかりません。まず、ランダム性自体を収穫する必要があり、それに対して品質テストも実行します。私の最後のテスト(パッチされたhasgedを使用)では、hasgedの開始とカーネルレポートの間に約0.5秒の遅延がありましたrandom: crng init done

ハッシュに加えて、ランダムシードを保存/復元することも検討できます。ネットワークがある場合は、少しのトラフィックがカーネルがエントロピーを収集するのに役立ちます。

関連情報