/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.