一般的なLinuxユーザーの場合は、/dev/randomにエントロピーがないかほとんどないことがセキュリティの観点や他の関連の観点から悪いと見なされるかどうか疑問に思います。
編集:乱数を生成する必要はありません(パスワード生成とディスク暗号化にも/ dev / urandomを使用します)。楽しみにして、/dev/randomからランダムな文字列を生成するbashスクリプトがあります。もちろんしばらく使用すると、/dev/randomにエントロピーがなくブロックされます。 IRCではこれを行うのが「悪い」と言われましたが、理由は示されていません。一般的なLinuxユーザーが/dev/randomを使用して自動的にランダムなエントリを生成するので、これは悪いですか?では、どのような手順が必要ですか?
私は/dev/randomにエントロピーを残さない限り、数値生成が決定的であることを知っています。しかし、繰り返しますが、私のコンピュータ(通常のLinuxユーザー)には本当に乱数が必要ですか?
編集2:約3分間毎秒/ dev / randomのエントロピーレベルを監視し、監視の開始時にエントロピーを使用してランダムな文字列を生成するbashスクリプトを起動しました。計画を立てました。エントロピーレベルが何らかの方法で振動するのを見ることができるので、私のコンピュータのいくつかのプログラムは/ dev / randomを使ってコンテンツを生成しています。 /dev/randomファイルを使用してすべてのプログラムを一覧表示する方法はありますか?
また、エントロピープールが空になると、「許容可能なレベル」のエントロピーを生成するのに1分もかかりません。
答え1
エントロピーは入力速度がかなり遅いため、/dev/random
使用するプログラムを使用すると/dev/random
エントロピーが低くなるのが一般的です。
Linuxのエントロピー定義を信じても、低いエントロピーはセキュリティ上の問題ではありません。/dev/random
エントロピーが十分になるまでブロックします。エントロピーが低いと、ランダム性を失うことなくマウスを動かすのを待つアプリケーションが得られます。
実際、エントロピーに対するLinuxの定義に欠陥があります。これは理論的レベルのランダム性を達成しようとする非常に保守的な定義ですが、実際には役に立ちません。実際、エントロピーは決してなくなりません。一度エントロピーが十分であれば十分です。残念ながら、Linuxには乱数を取得するための2つのインタフェースしかありません。ブロックして/dev/random
はいけないときにブロックするインターフェイスと/dev/urandom
絶対にブロックしないインターフェイスです。幸いなことに、実際には/dev/urandom
ほぼ常に正しいこれは、システムがすぐに十分なエントロピーを収集するためです。/dev/urandom
常に可能(暗号化キー生成などの用途を含む)。
問題が発生する唯一の/dev/urandom
ケースは、新規インストールを初めて起動するとき、Live CDを起動した後、または仮想マシンを複製した後など、システムにエントロピーがまだ十分でない場合です。この場合、/proc/sys/kernel/random/entropy_avail
約200に達するまで待ってください。その後、/dev/urandom
必要に応じて使用できます。
答え2
残りのエントロピーなしそして知っている確信してください/dev/random
。これにより、他のプロセス(悪意のあるユーザーによって開始されたプロセスを含む)が将来の出力(つまりそのプロセスから読み取ったバイト)を「予測」することができます/dev/random
。
一方で、「真の」ランダム性を必要とする優れたLinuxプログラマーは注意深く読むでしょう。ランダム(4)だからそうだろう読書(2)/dev/random
利用可能なエントロピーがない場合はブロックされます。これにより、データを読み取るプロセスが迷惑になることがあります。また参照してください(OPがコメントしました)に関する神話urandom
ページ。
一方、一部のプログラマは、読み取りが/dev/urandom
ほとんど常に十分でブロックされないことを好む。 AFAIK、C++11 標準ライブラリ湾岸協力協議会これは以下のために行われます。標準::random_device。
明らかに、ランダム性は通常のデスクトップよりもサーバーにとって重要です。
あなたの質問が「Linuxプログラマーがこれらの問題を認識するのに十分な能力を持っていますか?」になると、これは/dev/random
コメントに関する質問やアンケートになり、おそらくトピックから逸脱した可能性があります。
私の意見は、プログラマーが読まなければならないということです。ランダム(4)。
最新のIntelプロセッサではロードランドマシンコマンドを実行し、/dev/random
それをランダムなソースとして使用します。だから私はエントロピーの欠如が/dev/random
彼らに影響を与えないと思います(つまり、決して起こらないでしょう)。
簡単に言えば、私は低いエントロピーに興味がありません/dev/random
。しかし、私はランダム性の重要なソフトウェア(ポーカーサイト、いくつかのバンキングシステムなど)を書いていません(人命の損失、何百万ユーロ、またはドルの費用がかかりすぎます)。私はそのようなシステムがより良いランダムソースを提供することができ(IIRC、メガビット/秒帯域幅を備えたハードウェアランダムジェネレータのコストは数百ユーロ)、ランダム性と確率の専門知識を保持する必要があります(またはそのためのコンサルティングサービスを購入するする必要があります)。
README
おそらく、ドキュメントで簡単に言及する必要があります。あなたのあなたが使用しているソフトウェアおよび/dev/random
/または/dev/urandom
何らかの目的で使用し、あなたのコードに対する任意性の重要性を明確に文書化します。