Quantos bits de entropy por byte lidos de / dev / random e / dev / urandom?

1

Aproximadamente quantos bits de entropia estão contidos em cada byte lido em / dev / random e / dev / urandom? Dados de / dev / random usam o gerador de números aleatórios do kernel enquanto / dev / urandom usa um CPRNG, portanto, embora o número de bytes lidos de cada um possa ser idêntico, a quantidade de entropia real lida de cada um não seria idêntica. >

Existem melhores práticas e / ou estudos que estimam quanta entropia está geralmente contida em cada byte de dados lidos a partir dessas fontes?

Por exemplo, se eu precisasse de 80 bits de entropia para um token seguro, e o token estivesse sendo gerado lendo dados de dev / urandom, e se eu soubesse que cada byte de dados lidos de / dev / urandom conteria aproximadamente 4 bits de entropia, eu poderia ler 20 bytes de dados e usar uma função hash para gerar o token.

    
por Daniel Kauffman 31.12.2014 / 20:42

2 respostas

3

Desde que o CPRNG tenha sido adequadamente aplicado, /dev/random e /dev/urandom não têm diferenças detectáveis no comportamento. É como a diferença entre a água e a água benta - há uma diferença no modo como você as faz, mas nenhum teste pode distinguir um do outro.

Não há sentido em obter mais bytes de dados de um único CPRNG e fazer hash deles. Isso é precisamente o que o CPRNG já faz internamente.

    
por 31.12.2014 / 20:53
1

A página manual man 4 random contém muitas informações úteis sobre /dev/random e /dev/urandom .

Se eu entendi corretamente, a idéia é que, enquanto a entropia geral em seu sistema for alta o suficiente, não importa: tirar mais dados de /dev/urandom do que a entropia não deveria ser um problema, já que uso do fato de que a "entropia real" em por exemplo 2000 bits que você usa é de apenas 512 bits exigiria quebrar o CPRNG ou adivinhar os 512 bits, o que ainda é muito mais do que pode ser feito por métodos de força bruta. / p>

Se você realmente quiser medir o efeito do uso de dados de qualquer um desses dois dispositivos no pool de entropia, poderá ler o conteúdo de /proc/sys/kernel/random/entropy_avail , que contém o número atual de bits de entropia:

cat /proc/sys/kernel/random/entropy_avail
    
por 17.10.2015 / 00:03