/ dev / randomからの読み取りがブロックされるかどうかを確認する方法

カンプラの木枠

/proc/sys/kernel//random/entropy_avail使用可能なビット数示す情報を見つけまし/dev/randomからの次の読み取り/dev/randomがブロックれるかどうかを確認したかったのですが、私の素朴なアプローチはentropy_avail、必要なランダムビットの数を比較することだけでしたが、うまく機能しません。簡単な愚かな実験をしたとき、エントロピーがバッファリングされていることに気づきました。64ビットエントロピーバッファーは、6バイトのランダムデータを提供します。

この簡単なコマンドでentropy_availを監視しました。

while true
do
    cat /proc/sys/kernel//random/entropy_avail
    sleep 1
done

そして、私はコマンドを介してランダムなバイトを取得しようとしていました

dd if=/dev/random bs=1 count=1 > /dev/null

ddエントロピーは63以下である場合、コマンドはブロックされます。エントロピーが64に達し、1バイトを読み取ると、エントロピーは0に減少しますが、ブロックせずにさらに5バイトを読み取ることができます。次にdd、エントロピーが64に達するまで再びブロックします。

entropy_availの正確な意味は何ですか?また、使用可能なランダムビットの実数を検出するにはどうすればよいですか?

Gilles'SO-悪であることをやめなさい '

entropy_availで使用可能なビット数を示すものではありません/dev/randomこれは、電力を供給するRNG状態でのカーネルのエントロピー推定を示します/dev/randomそのエントロピー推定は、数学的に言えば、かなり無意味な量です。しかし/dev/random、エントロピー推定が低すぎる場合、Linuxはブロックします。

/dev/randomの値/proc/sys/kernel/random/entropy_avail/proc/sys/kernel/random/read_wakeup_thresholdより大きくなるまでブロックから読み取るプログラムからの読み取りは、/dev/random1バイトあたり8ビットの割合でエントロピーを消費します。

しかし、とにかくあなたはを使うべきではありません/dev/random/dev/urandom暗号化キーの生成を含め、同様に安全で、ブロックされないを使用する必要があります。乱数の生成はエントロピーを消費しません。システムに十分なエントロピーがあれば、それは宇宙の寿命にとって良いことです。OSはRNGシードをファイルに保存するため、システムが一度十分なエントロピーを取得すると、再起動後も十分なエントロピーを取得します。

/dev/urandom安全でない唯一のケースは、初めて起動する新しくインストールされたシステム、起動したばかりのライブシステム(ライブシステムから暗号化キーを生成することはお勧めできません!)、または新しく起動したシステムです。ハードウェアRNGまたは永続メモリのいずれも持たない起動された組み込みデバイス。このようなシステムで/dev/randomは、エントロピープールが構築されていることを確認するために、16バイトを出力することに同意するまで待ちます。次に、を使用します/dev/urandom

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

/ dev / randomからの読み取りがブロックされるかどうかを確認する方法

分類Dev

/ dev / randomをバイトブロック単位で頻繁に読み取るのはなぜですか?

分類Dev

/ dev / ttyからの読み取りを禁止する

分類Dev

dev-toolがsource-mapに設定された縮小バンドルのWebpack本番環境の読み取り可能なスタックトレースを取得するにはどうすればよいですか?

分類Dev

どの/ devがUSBフラッシュドライブであるかを確認するにはどうすればよいですか?

分類Dev

/ dev / nullから読み取ることができます。それを修正する方法は?

分類Dev

/ dev / nullから読み取ることができます。それを修正する方法は?

分類Dev

/ dev / input / miceからマウスボタンの状態をどのように読み取りますか?

分類Dev

なぜ `/ dev / random`から読み取ると、カーソルの後ろに` 1; 2c`文字が置かれるのですか?

分類Dev

なぜ `/ dev / random`から読み取ると、カーソルの後ろに` 1; 2c`文字が置かれるのですか?

分類Dev

読み取りがnullによって行われる場合、正確には `</ dev / null`とは何ですか?

分類Dev

/ dev / randomに書き込むと、/ dev / randomからの並列読み取りが速くならないのはなぜですか?

分類Dev

/ dev / randomに書き込むと、/ dev / randomからの並列読み取りが速くならないのはなぜですか?

分類Dev

ディスク読み取りなどで/ dev / randomをフィードする

分類Dev

/ dev / iio:deviceXのLSM330からデータを読み取る方法は?

分類Dev

読み取るたびに/ dev / urandomを再度開く必要がありますか?

分類Dev

から読み取った場合に文字特殊ファイルがブロックされるかどうかを確認する方法

分類Dev

コマンドラインが/ dev / nullにリダイレクトされているかどうかを確認するCコード

分類Dev

/ dev / rfcommから読み取ることができません

分類Dev

/ dev / urandomから読み取るBashスクリプト

分類Dev

/ dev / randomから読み取っても、データは生成されません

分類Dev

/ dev / randomから読み取っても、データは生成されません

分類Dev

/ dev / pts / xから読み取るときの競合状態

分類Dev

Javaから/ dev / input / js0を読み取る

分類Dev

/ devから非アクティブなブロックデバイスを削除するにはどうすればよいですか?

分類Dev

/ dev / pts / 5から読み取り、/ dev / pts / 6に出力します

分類Dev

/ dev / logに何かが書き込まれたかどうかを確認するにはどうすればよいですか?

分類Dev

データセットerrnoの/ devソースから正常に読み取るのはなぜですか?

分類Dev

dev / urandomからの読み取り-システムの動作

Related 関連記事

  1. 1

    / dev / randomからの読み取りがブロックされるかどうかを確認する方法

  2. 2

    / dev / randomをバイトブロック単位で頻繁に読み取るのはなぜですか?

  3. 3

    / dev / ttyからの読み取りを禁止する

  4. 4

    dev-toolがsource-mapに設定された縮小バンドルのWebpack本番環境の読み取り可能なスタックトレースを取得するにはどうすればよいですか?

  5. 5

    どの/ devがUSBフラッシュドライブであるかを確認するにはどうすればよいですか?

  6. 6

    / dev / nullから読み取ることができます。それを修正する方法は?

  7. 7

    / dev / nullから読み取ることができます。それを修正する方法は?

  8. 8

    / dev / input / miceからマウスボタンの状態をどのように読み取りますか?

  9. 9

    なぜ `/ dev / random`から読み取ると、カーソルの後ろに` 1; 2c`文字が置かれるのですか?

  10. 10

    なぜ `/ dev / random`から読み取ると、カーソルの後ろに` 1; 2c`文字が置かれるのですか?

  11. 11

    読み取りがnullによって行われる場合、正確には `</ dev / null`とは何ですか?

  12. 12

    / dev / randomに書き込むと、/ dev / randomからの並列読み取りが速くならないのはなぜですか?

  13. 13

    / dev / randomに書き込むと、/ dev / randomからの並列読み取りが速くならないのはなぜですか?

  14. 14

    ディスク読み取りなどで/ dev / randomをフィードする

  15. 15

    / dev / iio:deviceXのLSM330からデータを読み取る方法は?

  16. 16

    読み取るたびに/ dev / urandomを再度開く必要がありますか?

  17. 17

    から読み取った場合に文字特殊ファイルがブロックされるかどうかを確認する方法

  18. 18

    コマンドラインが/ dev / nullにリダイレクトされているかどうかを確認するCコード

  19. 19

    / dev / rfcommから読み取ることができません

  20. 20

    / dev / urandomから読み取るBashスクリプト

  21. 21

    / dev / randomから読み取っても、データは生成されません

  22. 22

    / dev / randomから読み取っても、データは生成されません

  23. 23

    / dev / pts / xから読み取るときの競合状態

  24. 24

    Javaから/ dev / input / js0を読み取る

  25. 25

    / devから非アクティブなブロックデバイスを削除するにはどうすればよいですか?

  26. 26

    / dev / pts / 5から読み取り、/ dev / pts / 6に出力します

  27. 27

    / dev / logに何かが書き込まれたかどうかを確認するにはどうすればよいですか?

  28. 28

    データセットerrnoの/ devソースから正常に読み取るのはなぜですか?

  29. 29

    dev / urandomからの読み取り-システムの動作

ホットタグ

アーカイブ