Entropia é um termo técnico para "Aleatoriedade". Os computadores não geram realmente entropia, mas o coletam analisando coisas como as variações das velocidades de rotação do disco rígido (um fenômeno físico que é muito difícil de prever devido ao atrito, etc.) Quando um computador deseja gerar dados pseudo-aleatórios, propicie uma fórmula matemática com verdadeira entropia encontrada ao medir cliques de mouse, variações de rotação do disco rígido etc. Em termos gerais, entropy_avail
é a medida dos bits atualmente disponíveis para leitura./dev/random
Leva tempo para o computador ler entropia a partir de seu ambiente, a menos que tenha hardware interessante, como um diodo barulhento ou algo assim.
Se você tem 4096 bits de entropia disponível e deseja um gato, /dev/random
pode esperar ler 512 bytes de entropia (4096 bits) antes que o arquivo seja bloqueado enquanto aguarda por mais entropia.
Por exemplo, se você " cat /dev/random
" sua entropia diminuirá para zero. No início, você terá 512 bytes de lixo aleatório, mas ele irá parar e, aos poucos, você verá mais dados aleatórios fluindo.
Não é assim que as pessoas devem operar /dev/random
. Normalmente, os desenvolvedores leem uma pequena quantidade de dados, como 128 bits, e os usam para propagar algum tipo de algoritmo PRNG. É educado não ler mais entropia do /dev/random
que você precisa, pois leva tanto tempo para se acumular e é considerado valioso. Portanto, se você o drenar, cat
imprimindo o arquivo de forma descuidada como acima, você causará outros aplicativos que precisam ser lidos /dev/random
para bloquear. Em um sistema em funcionamento, percebemos que muitas funções criptográficas estavam paralisadas. Descobrimos que um trabalho cron estava chamando um script python que continuava inicializandoramdom.random()
em cada execução, que era executada a cada poucos segundos. Para corrigir isso, reescrevemos o script python para que ele fosse executado como um daemon inicializado apenas uma vez e o trabalho cron leria dados via XMLRPC para que não continuasse lendo /dev/random
na inicialização.