Como posso verificar a entropia disponível?


14

Nos sistemas Linux, pode-se verificar a entropia disponível (útil para saber se você está tocando /dev/randompara fins de PRNG) com

cat /proc/sys/kernel/random/entropy_avail

No entanto, não há equivalente /procem um Mac (AFAIK). Como posso verificar a entropia do sistema disponível em um Mac? Estou executando o OS X 10.7.3 (Lion)


Para atualizar com alguns dos meus comentários na resposta de Kyle - Uma das razões para os Macs não exibirem essas informações é que elas não são necessárias (na maioria dos casos). Os sistemas Linux bloquearão as chamadas /dev/randomse não houver entropia suficiente no pool. Nos Macs, periodicamente continua adicionando ao pool de entropia usando o SecurityServerdaemon.

No entanto, também observa que, se o daemon falhar por algum motivo, a qualidade da saída diminuirá sem nenhuma indicação de falha :

A qualidade de sua produção é, contudo, dependente da adição regular de entropia apropriada. Se o SecurityServerdaemon do sistema falhar por qualquer motivo, a qualidade da saída sofrerá com o tempo sem nenhuma indicação explícita do próprio dispositivo aleatório.

Portanto, mesmo que a quantidade de entropia não seja disponibilizada com facilidade, isso não significa que ela não esteja lá e que possa haver casos em que seu conhecimento possa ser útil.


Você realmente precisa verificar ou apenas garantir que haja material suficiente para usar? Consulte developer.apple.com/library/mac/#documentation/Darwin/Reference/…. Citação: "Programadores paranóicos podem combater esse risco de alguma forma coletando entropia de sua escolha (por exemplo, pressionando a tecla ou pressionando o mouse) e inserindo-o randomdiretamente antes de obter números aleatórios importantes ".
Chris W. Rea

Eu só preciso ter certeza de que há o suficiente para usar.
Rm -rf

Respostas:


6

Esta não é uma solução, mas um esclarecimento de como a entropia é coletada e usada no Linux.

Na verdade, o Linux tem dois conjuntos de entropia diferentes:

/dev/randome /dev/urandom.

O primeiro é um verdadeiro pool aleatório, alimentado por fontes de entropia do sistema.
O último é mais um PRNG, como os encontrados no BSD e no OS X.

No entanto, mesmo urandom requer uma semente de entropia aleatória 'real' para produzir dados pseudo-aleatórios de qualidade. Nos kernels recentes, uma completa falta de entropia em / dev / random ainda não bloqueia o urandom, mas o urandom reutiliza a última semente válida até que mais entropia esteja disponível. Como o urandom é não-bloqueador, a maioria dos serviços que exigem um fluxo constante de entropia o utiliza, em vez de depender de / dev / random.

No entanto, ainda existem alguns serviços, como vários pacotes SSL, que não se contentam com a entropia pseudo-aleatória, mas exigem uma fonte de entropia verdadeiramente imprevisível. Nesse caso, o urandom (ou qualquer outro PRNG) não pode ser usado e / dev / random entra em ação.


2

O Mac OS X simplesmente usa o Yarrow . Até o FreeBSD foi além e mudou para sua versão melhorada chamada "Fortuna".

A força de Yarrow é limitada pelo tamanho da chave. Por exemplo, o Yarrow-160 possui um tamanho de chave efetivo de 160 bits. Se a segurança exigir 256 bits, o Yarrow-160 não poderá executar o trabalho.

Tudo isso é outro lembrete As prioridades da Apple não incluem segurança / robustez ou algo assim.


1

O Mac OS X, como o FreeBSD, não depende de fontes externas de entropia. Em vez disso, ele usa um gerador de números pseudoaleatórios baseado no algoritmo Yarrow . Por estar usando um algoritmo e não um pool de entropia, não há necessidade de garantir que haja entropia "suficiente" - você sempre poderá ler de / dev / random sem bloquear .

Portanto, para responder à sua pergunta, a menos que você seja "paranóico" e precise basear sua entropia em fontes externas (pressionamentos de tecla / movimentos do mouse / etc), nesse caso você deve fazer isso sozinho, a quantidade de entropia disponível para / dev / o uso aleatório é sempre infinito.


4
Isso não é inteiramente correto. Usar um algoritmo não o torna entropia infinita. O que eles querem dizer é que, no Linux, ele bloqueia quando o pool de entropia é baixo, enquanto no mac: "Entropia adicional é alimentada ao gerador regularmente pelo daemon SecurityServer a partir de medições aleatórias de jitter do kernel". Então, basicamente, ele cuida disso e também salva uma entropia no disco para uso imediatamente após a inicialização. Ele também diz que enquanto Yarrow é resistente, a qualidade é dependente da adição regular de entropia - algo que não será necessário se fosse entropia verdadeiramente infinito
rm-rf

1
Ele diz ainda que: "Se o daemon do sistema SecurityServer falhar por qualquer motivo, a qualidade de saída sofrerá ao longo do tempo, sem qualquer indicação explícita do próprio dispositivo aleatório" Admito que a OSX tornou mais fácil para não ter de se preocupar com o real entropia valor, mas não significa que não há um ... Btw, eu estava referindo-se a esta página de manual em minhas citações acima
rm -rf

@RM É verdade, eu estava pensando mais em termos de se ou não uma chamada para / dev / random iria bloquear do que a qualidade da entropia
Kyle Cronin

> A menos que você é "paranóico" - Mac OS X simplesmente não tem de qualquer quantidade razoável de aleatoriedade a ser até um pouco considerada segura
poige
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.