/dev/randomのディスク読み取りなどを提供

/dev/randomのディスク読み取りなどを提供

/dev/random十分なエントロピーを提供する方法はありますか?データが完全にランダムである必要はありません。つまり、pidに時間を追加し、ここに27を追加できます。気にしません。より速く実行したいだけです。

私はボールを転がそうとしましたdd if=/dev/zero of=/dev/null。予測できないブロック電話を受けないように人工的にadd_keystroke_randomness/linux/random.hをやる方法がないかどうか疑問に思いました。/dev/randomつまり、速度のためにランダム性をある程度犠牲にする意向があります。

PS - 使用を提案しないでください。/dev/urandom

答え1

エントロピーを生成する方法にはさまざまなソリューションがあります。例えばhaveged(私は自分自身について非常に満足しています)timer_entropydなどaudio-entropydです。彼らは通常、最も頻繁に使用されるアプリケーションに十分なエントロピーを生成します/dev/random。最大限に活用したい場合は、ハードウェアランダムマイザー(USBスティックとして使用可能)もあります。おそらくあなたが思うよりも少ないエントロピーを生成します...

それにもかかわらず、/dev/urandomこれはデータが即座に必要なときに常に良いオプションです。

大容量データ(ハードドライブの上書きなど)の場合、使用可能なエントロピーに関係なく、任意のデバイスは速度に関しては適していません。このようなPRNGベースのソリューションは、shred実際にはより良く、より高速です。

答え2

(私の答えはLinuxに適用されます。一般原則は他のUNIXバリアントに適用されますが、random/urandom違いには適用されません。)

これはすでにカーネル内で起こっています。

追加のエントロピーを注入することは決して悪くありません。疑似乱数バイトが多い場合は、それを作成すると/dev/randomエントロピープールに混在します。

ハベグ追加エントロピーを収集する人気のあるプログラムです。

dd if=/dev/zero of=/dev/nullハードウェアI / Oを発生させないため、エントロピーを追加しません。キー入力には少量のエントロピーが含まれています。


Linuxでこの記事を読んでいるのなら、/dev/random間違っています。 Linuxデザイナー間違っている:彼らはエントロピーが急速に枯渇していると主張しています。しかし、実際にはそうではありません。。 「遮断」に対する解決策は、/dev/random「エントロピーをさらに注入すること」ではなく、「適切な装備を使用すること」だ。聞きたいかどうか、あなたは読まなければなりません/dev/urandom

答え3

カーネルバージョンに応じて、Linuxはadd_disk_randomness()add_input_randomness()およびをadd_interrupt_randomness()エントロピーソースとして実装します。これらのイベントは、ディスクI / Oイベント、キーボードおよびマウスイベント、割り込み(IRQ)イベントに対応します。正確な実装については、Random.cを参照してください。これらのソースは内部的に調整、混合、保存され、ブロックおよび非/dev/randomブロック/dev/urandomドライバにデータを提供するために使用されます。この場合、非ブロックとは、/dev/urandomエントロピープールにエントロピーがない場合でも、呼び出しが常に出力を生成することを意味します。可能性はリーンですが、/dev/urandom使用すると、低いエントロピーシードと予測可能な決定的RNGが発生する可能性があります。これにより暗号化が壊れる可能性があり、RSAは特に低いエントロピー条件に対して脆弱です。したがって、暗号化に使用しないでください/dev/urandom。ただし、ブートタイム/dev/urandomエントロピーはヘッドレスシステムで常に問題となり、正しく機能するには追加のエントロピーソースが必要です。

ブートエントロピーの欠如を解決する最も簡単な方法は、経由で有効にするRdRand(またはRdSeedhw_randことですが、これを行うにはIntel(および現在のAMD)ブラックボックスの実装を信頼する必要があります。 QorlQを使用する場合、同じSEC機能があります。

あるいは、ソフトウェアの真の(?)乱数ジェネレータを実装することもできます。私の提案はCPU時間ジッタよく文書化されており、既存のシステムとの統合が容易であるため、Stephan Mullerが設計しました。最大エントロピーの結果を得るには、最適化なしでコンパイルする必要があることに注意してください。

関連情報