Linuxのエントロピーソース

Linuxのエントロピーソース

/dev/randomでワンタイムフィルに適した約ギガバイトのランダムデータが欲しいとしましょう。したがって、/dev/urandom は廃止されました。これを行うのに十分なエントロピーを/ dev / randomにどのようにシードしますか?これに関する特定のコマンドとプログラムを探しています。私は何も買いたくありません。違いがある場合は、Arch Linuxを使用しています。

答え1

残念ながら、/dev/randomは使い捨てパッドでの使用には適していません。少なくともほとんどの人が使い捨てパッドを考えたり実装したりすると、想像している種類の使い捨てパッド(証明可能なセキュリティ保証を含む)には適していません。以下の情報のほとんどは(非常に長い)記事で要約されています。http://www.2uo.de/myths-about-urandom/

問題は、/dev/randomが実際にランダムではないということです。 CSPRNG を使用して出力を生成します。実際、/dev/random は /dev/urandom とまったく同じ CSPRNG を使用します。唯一の違いは、内部エントロピー推定が不十分な場合、/ dev / randomがブロックされることです。

前の文の「推定」という言葉が鍵です。ほとんどの人はこの見積もりは常に正確で完璧だと思いますが、実際にはまったく正確ではありません。推定が間違っていると、使い捨てパッドの実証可能なセキュリティ保証がすべて失われ、計算セキュリティのみが残ります。 /dev/urandomを使用するよりも優れていません!

エントロピー推定が少しでも間違っても使い捨てパッドのセキュリティが低下するわけではありません。使い捨てパッドの実証済みのセキュリティ保証は、全部または専務です。

この質問の前提は、エントロピーを追加すると、/dev/random問題を「修正」できることです。残念ながら、この前提は間違っていた。エントロピーソースはしばしば内部データにアクセスし、RNG出力を使用して秘密にこのデータをエクスポートする可能性があるため、悪意のあるエントロピーソースはエントロピーがまったくないよりもはるかに悪いです。http://blog.cr.yp.to/20140205-entropy.html完全な議論をしてください(ここでは要約するには長すぎます)。特に、ハードウェアエントロピーソース(他のいくつかの答えで推奨されています)は、セキュリティの観点から見て非常に間違った選択です。ハードウェアは悪意のあるタスクを実行するのに最適な場所にあり、本質的に監査できないためです。

答え2

ハードウェアコンポーネントが最高のアイデアのようです。市場にはいくつかのハードウェアジェネレータICがありますが、実際に現れると信じる必要があります。

可能な2つの良い解決策は、誘導部品ノイズです。 2つの主な解決策は、温度偏差とダイオード生成アバランシェノイズであるようです(参照:http://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rng.html)

ジャイロスコープや加速度計などのコンポーネントがより敏感になるにつれて、最高感度で動作し、LSB値を使用するのも良い解決策ですが、私が知っている限り誰も感謝しませんでした。

RNGを実行しないという論文はたくさんありますが、実績のあるオープンハードウェアの実装はないので興味深いです。

答え3

追加のハードウェアなしでエントロピープールを増やすことができる2つのプログラムは、rng-toolsそしてhavegedrng-tools最新のCPUとチップセットで利用可能なRNGをhaveged使用して、最新のCPUランダム性(キャッシュ動作など)を使用します。どちらもArchで利用でき、アーチスウィキこれについて議論する興味深いページがあります。私はそれを使ってギガバイトのデータを生成しようとしませんでしたが、合理的な時間内に可能になります。

具体的には購入を除外しますが、完全性のためにLWNに次の興味深い記事があります。NeuGエントロピー、これにはhavegedさまざまな他の方法の議論が含まれます。 NeuGを実行できるSTM8Sボードを10ドル未満で購入するか、FST-01を35ドルで購入できます。

答え4

マイクが接続されていない場合、アナログマイクチャンネルから得られる情報は通常静的です。たとえば、bzip2を介してパイプし、ホワイトニングのために他の任意のソース(urandomまたは他のマイクジャック)と混合し、結果をopensslを介してパイプして良い測定値と結果を得ることができます。しなければならないとてもランダムです。

しかし、結果のランダム性に関して厳密で高速なセキュリティ属性を証明することは困難です。

関連情報