カーネル 5.10.119 では、/proc/sys/kernel/random/entropy_avail および poolsize の値が 256 になります。

カーネル 5.10.119 では、/proc/sys/kernel/random/entropy_avail および poolsize の値が 256 になります。

カーネル5.10.119にアップデートした後、/proc/sys/kernel/random/entropy_avail256で停止してマウスを動かしても変わりません。以前は3,000を超えていました。

# cat /proc/sys/kernel/random/entropy_avail  
256

また、/proc/sys/kernel/random/poolsize256に落ちた。以前は4096でした。

これはバグですか?このカーネルの新しい乱数ジェネレータの利用可能なエントロピーは256個しかないと思いますか?

ベストアンサー1

Marcusの完全な答えと競争する意図はありません。何が起こっているのかを説明し、あなたが見つけたものがバグではないことを証明するためです。

デフォルトのプールサイズはハードコーディングされていますが、drivers/char/random.c5.10.119では実際に変更されています。

2011年10月5日現在:

#define INPUT_POOL_SHIFT    12
#define INPUT_POOL_WORDS    (1 << (INPUT_POOL_SHIFT-5))
...
static int sysctl_poolsize = INPUT_POOL_WORDS * 32;

(2^(12-5))x32=4096

5.10.119以下、poolsizeは別々に計算されているようです。

POOL_BITS = BLAKE2S_HASH_SIZE * 8
...
static int sysctl_poolsize = POOL_BITS;

BLAKE2S_HASH_SIZE = 32、定義どおりinclude/crypto/blake2s.h

8x32=256あなたが見つけたのはバグではなく機能です!

ちなみに、これはデフォルト値にすぎないので、必要に応じない場合は自由に変更してください。


注:この変更は、5.17-rc1が119から5.10にバックポートされているが、44から最新のLTSにバックポートされたため、メインラインに関連しています。 5.15は(まだ?)気にしないようで、もちろん5.16もそうです。


@TooTeaがコメントで提案したように、これらの動きの理由は次のとおりです。初期コミット、一言で言えば:

  • セキュリティ強化(プールの状態が漏洩したら、その内容を制御して完全にゼロにすることができます。)
  • パフォーマンスの向上(高度なCPUで最大225%)

これは、4096 LFSR を BLAKE2 への直接呼び出しで置き換えることによって達成されます。

BLAKE2sは256ビットを出力し、適切な最小エントロピー蓄積量とアクティブ攻撃に対する十分な広い衝突抵抗マージンを提供します。

おすすめ記事