Linuxカーネルで使用されるエントロピーソースは何ですか?


14

man 4 random Linuxカーネルエントロピーソースの非常に曖昧な説明があります。

乱数ジェネレーターは、デバイスドライバーやその他のソースからの環境ノイズをエントロピープールに収集します。

Linux Random Number Generatorでの論文のエントロピー転送も、それほど具体的ではありません。それはリストします:

  • add_disk_randomness()
  • add_input_randomness()、そして
  • add_interrupt_randomness()

これらのfunctinoはからのものでrandom.c、次のコメントが含まれます。

環境からのランダム性のソースには、キーボード間タイミング、一部の割り込みからの割り込み間タイミング、および(a)非決定的であり、(b)外部オブザーバーが測定するのが難しい他のイベントが含まれます。

さらに下には、add_hwgenerator_randomness(...)ハードウェア乱数ジェネレーターのサポートを示す機能があります。

これらの情報はすべて曖昧です(または、ソースコードの場合、理解するにはLinuxカーネルの深い知識が必要です)。実際に使用されるエントロピーソースは何ですか?Linuxカーネルは、ハードウェア乱数ジェネレーターをそのままサポートしていますか?

回答:


4

最近のほとんどの市販のPCハードウェアには乱数ジェネレーターがあります。VIA Semiconductorは、長年にわたってそれらをプロセッサに搭載しています。Linuxカーネルにはそのためのvia-rngドライバーがあります。drivers/char/hw_random/最新のソースツリーのディレクトリにある34個のソースモジュールをカウントします。これには、IntelおよびAMDハードウェア、およびTPMデバイスを持つシステムのドライバーが含まれます。rngデーモン(rngd)を実行して、ランダムデータをカーネルエントロピープールにプッシュできます。


これは、私が探していた答えの大きな部分のようです。そこに何が含まれているかについて、私がそうするようになったらすぐに詳しく見ていきます。質問に既に含まれている情報と合わせて、これはエントロピーソースの包括的なリストのように感じます。
イェンスエラ

そして、特定のPCの実行で利用可能なものを確認しますcat /sys/devices/virtual/misc/hw_random/rng_available
hlovdal

0

はい、そのままでハードウェアエントロピージェネレーターをサポートします。これは、1秒間に多数の同時接続が開始される高負荷SSLサーバー(Gmail、Facebook、Microsoftなど)に必要です。ホームサーバーや小規模な組織サーバーには、実際には必要ありません。ハードウェアエントロピージェネレーターは通常PCIインターフェースを使用しますが、そこに凝ったものはないため、簡単にサポートできます。閉じたソースドライバーを必要とする独自のハードウェアエントロピージェネレーターがあるかどうかはわかりませんが、おそらくそうではありません。

http://en.wikipedia.org/wiki/Hardware_random_number_generator


2
大容量サーバーは、小容量サーバーよりもハードウェアRNGを必要としません。マシンに十分なエントロピーがシードされると、PRNGで永久に(または少なくとも数十億年間、実際は同じです)実行し続けることができます。ハードウェアRNGを本当に必要とする種類のコンピューターは、電源を切ったときに現在のRNG状態を安全に保存できない組み込みデバイスです。
ジル「SO-悪であるのをやめる」14

@Gilles:これはLinux以外のシステムでも有効ですか?Linuxがこれを行うことは知っていますが、OS X(またはWindwos)を含む* BSDのことを聞いたことはありません。
イェンスエラ

1
@JensErat私は知らない。実装は簡単で非常に便利なので、BSDがそれをやらなかったら驚かされるでしょう。
ジル 'SO-悪であるのをやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.