0

/dev/randomコードでorを使用/dev/urandomして乱数を生成したいだけです。このアプリケーションは、すべての Linux フレーバーで実行されます。これらのデバイス ファイルが /dev ディレクトリに存在しない場合、アプリケーションは失敗します。したがって、これらのデバイス ファイル (/dev/randomおよび/dev/urandom) はすべての Linux フレーバーで使用できますか?

4

1 に答える 1

1

これらのデバイスは、起動時にカーネルによって作成されます。ほとんどすべての GNU/Linux ディストリビューションにはそれらがありますが、常にそうであるとは限りません。それらを持たないようにカーネルをコンパイルすることができます。この奇妙な/厄介な状況を処理するコードを常に記述する必要があります。ただし、プログラムを実行するシステムの 99'99% には両方のファイルがあります。

ファイルについて /dev/random は、ユーザーと周辺機器によって生成されたノイズを収集する数値を生成します。問題は、エントロピー プールが空の場合、そのファイルに対する read() 操作がブロックされることです (ファイルが O_NONBLOCK で開かれていない限り)。 . /dev/urandom は通常の疑似乱数ジェネレーターですが、「ノンブロッキング」です。

あなたは実際にコードを書いているので、あなたのプログラムはセキュリティに関係する開発をあまり必要としないと思います。そのため、/dev/urandom を使用することをお勧めします。そうすれば、プログラムは /dev/random でエントロピーを待ってスタックすることはありません。 . しかし、あなたのプログラムが本当にセキュリティを必要としているのなら...まあ、あなたが何をしているのか本当に、本当に、本当に理解していない限り、あなた自身のセキュリティに関係するコードを決してプログラムしないでください。たとえば、「サイドチャネル攻撃」について読んでください。

幸運を。

于 2013-10-28T12:44:51.660 に答える