Explique em Inglês Simples sobre a Entropia Disponível

21

Se eu executar este comando no Ubuntu

sudo cat /proc/sys/kernel/random/entropy_avail

ele retorna um número que indica quanto de "entropia" está disponível para o kernel, mas isso é tudo que eu sei. Em qual unidade esta entropia é medida? Para que isso é usado? Já me disseram que é "ruim" se esse número for "baixo". Quão baixo é "baixo" e que coisas "ruins" vão acontecer se for? O que é um bom intervalo para ser? Como isso é determinado?

    
por Josh Lindsey 19.08.2010 / 15:34

4 respostas

20

Seu sistema reúne alguns números aleatórios "reais" mantendo um olho sobre eventos diferentes: atividade de rede, gerador de números aleatórios de hardware (se disponível; por exemplo, processadores VIA geralmente tem um gerador de números aleatórios "real") e assim por diante. Se alimenta estes ao conjunto de entropia do kernel, que é usado por / dev / random. Aplicações que precisam de alguma segurança extrema tendem a usar / dev / random como sua fonte de entropia, ou em outras palavras, a fonte de aleatoriedade.

Se / dev / random ficar sem entropia disponível, não será possível distribuir mais aleatoriedade e o aplicativo aguardará as paradas de aleatoriedade até que mais coisas aleatórias estejam disponíveis. O exemplo que vi durante minha carreira é que o daemon Cyrus IMAP queria usar / dev / random para a aleatoriedade e suas sessões POP queriam gerar as strings aleatórias em conexões APOP a partir de / dev / random. Em um ambiente ocupado, houve mais tentativas de login do que o tráfego para alimentar o / dev / random - > tudo parou. Nesse caso, eu instalei ferramentas rng e ativei o rngd que ele tinha - que shoveled números semi-aleatórios de / dev / urandom para / dev / random no caso / dev / random acabou com a entropia "real".

    
por 19.08.2010 / 15:43
18

Se você quiser uma visão geral mais simples do problema subjacente: Alguns aplicativos (como criptografia) precisam de números aleatórios. Você pode gerar números aleatórios usando um algoritmo - mas, embora pareçam aleatórios em um sentido, eles são totalmente previsíveis em outro. Por exemplo, se eu lhe der os dígitos 58209749445923078164062862089986280348253421170679, eles parecem muito aleatórios. Mas se você perceber que eles são realmente dígitos de IP, então você saberia que o próximo será 8.

Para alguns aplicativos, tudo bem, mas para outras aplicações (especialmente aquelas relacionadas à segurança) as pessoas querem uma aleatoriedade imprevisível genuína - que não pode ser gerada por um algoritmo (isto é, programa) já que é por definição previsível. Este é um problema em que o seu computador essencialmente é um programa, então como ele pode obter números aleatórios genuínos? A resposta é medir eventos genuinamente aleatórios do mundo exterior - por exemplo, intervalos entre os pressionamentos de teclas e usá-los para injetar uma aleatoriedade genuína no gerador de números aleatórios de outra forma previsível. O 'pool de entropia' poderia ser pensado como o repositório dessa aleatoriedade que é construída pelas teclas (ou o que quer que esteja sendo usado) e drenada pela geração de números aleatórios.

    
por 19.08.2010 / 16:07
7

The read-only file entropy_avail gives the available entropy. Normally, this will be 4096 (bits), a full entropy pool.

Você pode ler mais em: link

    
por 19.08.2010 / 15:40
7

Entropia é um termo técnico para "Aleatoriedade". Computadores não realmente gerar entropia mas recolhê-lo, olhando para coisas como as variações de Velocidades de rotação do disco rígido (Um fenômeno físico que é muito difícil prever devido à fricção etc.) Quando um computador deseja gerar dados pseudo-aleatórios, ele semeará uma fórmula matemática com entropia verdadeira que encontrou medindo cliques do mouse, variações de rotação do disco rígido Roughly speaking entropy_avail é a medida dos bits atualmente disponíveis para serem lidos em /dev/random

Leva tempo para o computador ler a entropia a partir de seu ambiente, a menos que ela tenha hardware legal como um diodo barulhento ou algo assim.

Se você tiver 4096 bits de entropia disponível e você cat /dev/random , pode esperar ler 512 bytes de entropia (4096 bits) antes que o arquivo bloqueie, enquanto aguarda por mais entropia.

Por exemplo, se você “ cat /dev/random ” sua entropia encolher para zero. No começo, você terá 512 bytes de lixo aleatório, mas ele irá parar e, pouco a pouco, você verá mais dados aleatórios.

Não é assim que as pessoas devem operar /dev/random . Normalmente, os desenvolvedores lerão uma pequena quantidade de dados, como 128 bits, e usarão isso para semear algum tipo de algoritmo PRNG. É educado não ler mais entropia de /dev/random do que você precisa, pois leva muito tempo para construir e é considerado valioso. Assim, se você esvaziá-lo descuidadamente cat do arquivo como acima, você causará outros aplicativos que precisam ler /dev/random para bloquear. Em um sistema no trabalho, percebemos que muitas funções de criptografia estavam se esgotando. Descobrimos que uma tarefa do cron estava chamando um script python que mantinha a inicialização de ramdom.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 que inicializasse apenas uma vez, e a tarefa do cron leria dados via XMLRPC para que ele não mantivesse a leitura de /dev/random na inicialização.

    
por 14.07.2015 / 06:18