Můžete psát na /dev/random
protože je součástí způsobu, jak poskytnout extra náhodné bajty pro /dev/random
, ale to nestačí, musíte také upozornit systém, že existuje další entropie prostřednictvím ioctl()
volání.
Potřeboval jsem stejnou funkcionalitu pro testování svého programu pro nastavení čipové karty, protože jsem nechtěl čekat, až moje myš/klávesnice vygeneruje dostatek pro několik volání gpg
které byly vyrobeny pro každý zkušební provoz. To, co jsem udělal, je spustit program Python, který následuje, souběžně s mými testy. Samozřejmě by nemělo být vůbec použit pro skutečné gpg
generování klíče, protože náhodný řetězec není vůbec náhodný (systémem generované náhodné informace budou stále prokládány). Pokud máte externí zdroj pro nastavení řetězce pro random
, pak byste měli být schopni mít vysokou entropii. Entropii můžete zkontrolovat pomocí:
cat /proc/sys/kernel/random/entropy_avail
Program:
#!/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)
(Po dokončení nezapomeňte program ukončit.)
Obvykle je navržen vývojáři jádra a zdokumentován v 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.