ハードウェアによって乱数列を発生させる方法


ソフトウェアの計算ではなく、ハードウェアによって乱数列を発生させる方法として次の3つが知られている。

1.サイコロ:サイコロの出目を使う。
dice

2.ダイオードの生成する熱雑音:ダイオードの熱雑音を増幅してアナログ・デジタル変換する。
white_noise_generator

3.光子の確率的な振る舞い:5 0/5 0ビームスプリッターを通過した単一光子の挙動を検出する。
photon_beam_splitter

IntelのIvyBridge以降のCPUでは、rdrand命令が追加されている。rdrand命令は、CPUに組み込まれた乱数生成器から予測不可能な乱数を生成するとされている。この乱数生成器は、擬似乱数生成アルゴリズム(線形フィードバックシフトレジスタ法)をベースにしながら、周期性を持たせない仕組み(定期的にseedを初期化する)を設けている。Linuxでrdrandをサポートする際に、「この乱数生成器を信頼できるのか?」という問題提起がなされている。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です