Anda dapat menulis ke /dev/random
karena ini adalah bagian dari cara untuk menyediakan byte acak ekstra ke /dev/random
, tetapi itu tidak cukup, Anda juga harus memberi tahu sistem bahwa ada entropi tambahan melalui ioctl()
panggilan.
Saya memerlukan fungsionalitas yang sama untuk menguji program penyiapan kartu pintar saya, karena saya tidak ingin menunggu mouse/keyboard saya menghasilkan cukup untuk beberapa panggilan ke gpg
yang dibuat untuk setiap uji coba. Apa yang saya lakukan adalah menjalankan program Python, yang mengikuti, secara paralel dengan pengujian saya. Tentu saja harus tidak digunakan sama sekali untuk gpg
nyata pembuatan kunci, karena string acak tidak acak sama sekali (info acak yang dihasilkan sistem akan tetap disisipkan). Jika Anda memiliki sumber eksternal untuk mengatur string untuk random
, maka Anda harus dapat memiliki entropi yang tinggi. Anda dapat memeriksa entropi dengan:
cat /proc/sys/kernel/random/entropy_avail
Programnya:
#!/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)
(Jangan lupa untuk mematikan program setelah Anda selesai.)
Biasanya, ini dirancang oleh pengembang kernel dan didokumentasikan dalam 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.