entropy_avail
não indica o número de bits disponíveis em /dev/random
. Indica a estimativa de entropia do kernel no estado RNG que energiza /dev/random
. Essa estimativa de entropia é uma quantidade bastante sem sentido, matematicamente falando; mas o Linux bloqueia /dev/random
se a estimativa de entropia for muito baixa.
Um programa lendo /dev/random
bloqueia até que o valor em /proc/sys/kernel/random/entropy_avail
seja maior que /proc/sys/kernel/random/read_wakeup_threshold
. A leitura de /dev/random
consome entropia à taxa de 8 bits por byte.
Mas, de qualquer forma, você não deveria estar usando /dev/random
. Você deve estar usando /dev/urandom
, que é tão seguro, inclusive para gerar chaves criptográficas , e que não bloqueia. Gerar números aleatórios não consome entropia: uma vez que o sistema tenha entropia suficiente, é bom para a vida do universo. O sistema operacional salva uma semente de RNG em um arquivo, portanto, uma vez que o sistema tenha entropia suficiente, ele terá entropia suficiente, mesmo após a reinicialização.
Os únicos casos em que /dev/urandom
não é seguro estão em um sistema recém-instalado inicializando pela primeira vez, em um sistema ativo que acabou de ser inicializado (então, gerar chaves criptográficas de um sistema ativo não é uma boa idéia!) ou em um dispositivo incorporado recém-inicializado que não tenha um RNG de hardware ou memória persistente. Em tais sistemas, aguarde até que /dev/random
concorde em liberar 16 bytes para garantir que o pool de entropia esteja configurado. Então use /dev/urandom
.