GNU/Linux >> Linux の 問題 >  >> Linux

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

/dev/random に書き込むことができます /dev/random に追加のランダム バイトを提供する方法の一部であるためです。 、しかしそれだけでは不十分です。ioctl() を介して追加のエントロピーがあることをシステムに通知する必要もあります。 電話。

マウス/キーボードが gpg への数回の呼​​び出しに十分な量を生成するのを待ちたくなかったので、スマートカード セットアップ プログラムをテストするために同じ機能が必要でした。 テスト実行ごとに作成されました。私が行ったことは、テストと並行して、次の Python プログラムを実行することです。もちろん、すべきではありません 実際の gpg にはまったく使用できません ランダムな文字列はまったくランダムではないため、鍵の生成 (システムで生成されたランダムな情報は引き続きインターリーブされます)。 random の文字列を設定する外部ソースがある場合 、その後、高いエントロピーを持つことができるはずです。エントロピーは次の方法で確認できます:

cat /proc/sys/kernel/random/entropy_avail

プログラム:

#!/usr/bin/env python
# For testing purposes only 
# DO NOT USE THIS, THIS DOES NOT PROVIDE ENTROPY TO /dev/random, JUST BYTES

import fcntl
import time
import struct

RNDADDENTROPY=0x40085203

while True:
    random = "3420348024823049823-984230942049832423l4j2l42j"
    t = struct.pack("ii32s", 8, 32, random)
    with open("/dev/random", mode='wb') as fp:
        # as fp has a method fileno(), you can pass it to ioctl
        res = fcntl.ioctl(fp, RNDADDENTROPY, t)
    time.sleep(0.001)

(完了したらプログラムを強制終了することを忘れないでください。)


通常、カーネル開発者によって設計され、man 4 random で文書化されています。 :

Writing to /dev/random or /dev/urandom will update the entropy pool
with the data written, but this will not result in a higher entropy
count.  This means that it will impact the contents read from both
files, but it will not make reads from /dev/random faster.

Linux
  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. / dev / stdin、/ dev / stdout、および/ dev / stderrはどの程度移植可能ですか?

  3. / dev/randomと/dev/ urandomをいつ使用するか?

  1. Linux – / dev / urandomで「u」という文字は何を意味しますか?

  2. find -exec mv {} ./target/ + が機能しないのはなぜですか?

  3. `cat /dev/urandom` が端末を破壊するのはなぜですか?

  1. Linux が NVMe ドライブを /dev/sda ではなく /dev/nvme0 としてリストするのはなぜですか?

  2. /dev/random の dd でファイル サイズが異なるのはなぜですか?

  3. Linux:/dev/console 、 /dev/tty 、 /dev/tty0 の違い