ランダムなデバイスとランダムなデバイス

目的

セキュアなランダム出力のソース。

説明

/dev/random および /dev/urandom キャラクター・デバイスは、割り込みタイミングまたはデバイスに書き込まれた入力から生成される暗号的にセキュアなランダム出力を提供します。

/dev/random デバイスは、暗号的にセキュアな高品質のランダム出力を提供することを目的としており、出力を生成するために十分な (同等以上の量の) ランダム入力が使用可能な出力のみを返します。 使用可能なランダム入力が不足している場合、 /dev/random 装置からの読み取りは、装置のオープン時に O_NONBLOCK フラグが指定されていない限り、要求が満たされるまでブロックされます。O_NONBLOCK フラグが指定されていない場合は、生成される可能性がある高品質の出力がエラー・コード EAGAIN で戻されます。

/dev/urandom デバイスは、信頼性の高いランダム出力のソースを提供しますが、使用可能な入力が不十分な場合、同じ量のランダム入力から出力が生成されることはありません。 /dev/urandom 装置からの読み取りでは、常に、ブロックせずに要求された出力の量が戻されます。 使用可能なランダム入力が不十分な場合、代替入力は乱数発生ルーチンによって処理され、暗号的にセキュアな出力を提供します。その強度は、乱数発生ルーチンによって使用されるアルゴリズムの強度を反映します。 ランダム入力なしで生成された出力は、理論的にはランダム入力から生成された出力よりもセキュアではないため、出力のセキュリティーに高いレベルの信頼性が必要なアプリケーションには、 /dev/random を使用する必要があります。

いずれかのデバイスに書き込まれたデータは、保管されたランダム入力のプールに追加され、出力の生成に使用されます。 書き込みは、両方のデバイスに対して同じように動作し、ブロックされません。

実行の特性

/dev/random および /dev/urandom デバイスは、乱数発生ルーチンのロード時にデバイス構成サブシステムによって割り当てられたメジャー番号とマイナー番号から作成されるため、デバイスの検索またはオープンを試行するときは、常にデバイス名を使用する必要があります。 乱数発生ルーチンがアンロードされると、デバイスは削除されます。 shutdown コマンドを使用してシステムをシャットダウンすると、出力は /dev/urandom デバイスから取得され、次のブート時に乱数発生ルーチンがロードされたときに /dev/random デバイスに書き戻されます。これにより、生成プログラムに開始エントロピーが提供され、ブート後に保管されるランダム入力の品質が向上します。

保管されたランダム入力のプールが半分を下回ると、割り込みタイミングから入力が収集され、プールが再びいっぱいになるまで収集され続けます。 このプロセスにより、タイミングの収集中にすべての外部割り込みのパフォーマンスへの影響が軽微になり、タイミングが収集されなくなると停止します。 いずれかのランダム・デバイスに書き込まれたデータは、保管されたランダム入力のプールにも寄与し、出力に影響を与える可能性があるため、これらのデバイスへの書き込みは特権操作にする必要があります。 これはデバイスの許可によって強制されるため、管理者は必要に応じて完全に不許可になるように変更できます。