Você pode escrever para /dev/random
porque é parte da maneira de fornecer bytes aleatórios extras para /dev/random
, mas não é suficiente, você também precisa notificar o sistema de que há entropia adicional por meio de um ioctl()
ligar.
Eu precisava da mesma funcionalidade para testar meu programa de configuração de smartcard , pois eu não queria Espero que meu mouse / teclado gere o suficiente para as várias chamadas para gpg
que foram feitas para cada teste. O que fiz foi executar o programa Python, que segue, em paralelo aos meus testes. É claro que não deve ser usado para geração de chaves gpg
real, já que a cadeia aleatória não é aleatória (informações aleatórias geradas pelo sistema ainda serão intercaladas). Se você tem uma fonte externa para definir a string para random
, então você deve ter alta entropia. Você pode verificar a entropia com:
cat /proc/sys/kernel/random/entropy_avail
O programa:
#!/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)
(Não se esqueça de matar o programa depois de terminar.)