_man 4 random
_には、Linuxカーネルエントロピーソースの非常にあいまいな説明があります。
乱数ジェネレーターは、デバイスドライバーやその他のソースからの環境ノイズをエントロピープールに収集します。
論文 Linux Random Number Generatorのエントロピー転送 もそれほど具体的ではありません。それはリストします:
add_disk_randomness()
、add_input_randomness()
、add_interrupt_randomness()
。
これらの機能は _random.c
_ からのもので、次のコメントが含まれます。
環境からのランダム性のソースには、キーボード間タイミング、一部の割り込みからの割り込み間タイミング、および(a)非決定的であり、(b)外部の観測者が測定するのが難しい他のイベントが含まれます。
さらに下には、ハードウェア乱数発生器のサポートを示す関数add_hwgenerator_randomness(...)
があります。
これらの情報はすべてあいまいです(または、ソースコードの場合、理解するにはLinuxカーネルの深い知識が必要です)。 実際に使用されるエントロピーソースは何ですか?また、Linuxカーネルは標準でハードウェア乱数ジェネレーターをサポートしていますか?
最近のほとんどのPCのハードウェアには、乱数ジェネレータが搭載されています。 VIA半導体は長年、それらをプロセッサに組み込んでいます; Linuxカーネルはそのためのvia-rngドライバを持っています。私は drivers/char/hw_random/
IntelおよびAMDハードウェア用のドライバーを含む最新のソースツリー内のディレクトリ、およびTPMデバイスを備えたシステム用のディレクトリ。 rngデーモン(rngd)を実行して、ランダムデータをカーネルエントロピープールにプッシュできます。
はい、そのままでハードウェアエントロピージェネレーターをサポートします。これは、1秒あたりに多数の同時接続が開始される高負荷のSSLサーバー(Gmail、Facebook、Microsoftなど)に必要です。これは、ホームサーバーや小規模な組織のサーバーには必要ありません。ハードウェアエントロピージェネレーターは通常PCIインターフェイスを使用することに注意してください。ファンシーは何もないので、簡単にサポートできます。とにかく、それほど難しくなく、(グラフィックスカードとは異なり)非常に収益性の高い業界ではないため、クローズドソースドライバーを必要とする独自のハードウェアエントロピージェネレーターがあるかどうかはわかりません。
http://en.wikipedia.org/wiki/Hardware_random_number_generator