É errado vincular / dev / random a / dev / urandom no Linux?

13

Atualmente, estou testando gpg --genkeyem uma VM Linux. Infelizmente, parece que esse software depende da /dev/randomcoleta de entropia e educadamente pede ao usuário que digite manualmente as telas após as telas de entrada criptograficamente aleatória, para que possa acabar gerando uma chave e não encontrei nenhum parâmetro de linha de comando para informar usar outro arquivo como fonte de entropia (o cara neste vídeo encontra o mesmo problema ...).

No entanto, o usuário deve ser livre para optar por usá-lo, /dev/urandompois não há nada errado com ele . Existe principalmente como uma reminiscência de algoritmos PRNG mais antigos, que eram mais fracos do ponto de vista criptográfico. Por exemplo, embora a página de manual do NetBSD garanta que a distinção ainda possa ser útil no estágio inicial de inicialização, ela descreve essa distinção como "folclore" e uma "teoria imaginária que se defende apenas contra modelos de ameaças de fantasia" . Ninguém concorda com a quantidade de entropia exigida por este comando nem com o fato de que a entropia é realmente consumida, como indicado na página de manual do GPG ("POR FAVOR, não use este comando, a menos que você saiba o que está fazendo, pois poderá remover entropia preciosa do sistema!" )

Eu li sobre pessoas instalando o rngddaemon e o configurei para usar /dev/urandomcomo fonte de entropia para alimentar /dev/random, mas acho essa prática bastante suja.

Tentei solucionar o problema da maneira FreeBSD removendo /dev/randome vinculando-o a /dev/urandom:

rm /dev/random
ln -s /dev/urandom /dev/random

Eu vejo isso como uma configuração dizendo "Eu confio /dev/urandomcomo fonte de entropia" .

Eu temia encontrar algum tipo de erro, mas isso parece fornecer o resultado esperado, já que o comando agora retorna com sucesso imediatamente.

Minha pergunta é: existe algum efeito colateral conhecido, prático e errado /dev/randomao vincular-se a /dev/urandomsistemas Linux, como é feito por padrão nos sistemas FreeBSD? Ou alguém poderia definir isso permanentemente (em um script no final do processo de inicialização, por exemplo) em caso de problemas repetitivos devido ao /dev/randombloqueio de algum serviço?

WhiteWinterWolf
fonte

Respostas:

2

Veja Mitos sobre urandom , não há ataque conhecido em / dev / urandom que também não seria um ataque em / dev / random. O principal problema que um sistema Linux tem é quando ele é clonado e executado como várias VMs sem redefinir o conjunto de entropia salvo após a clonagem. Esse é um caso de canto tangencial para o que você deseja.

Walter
fonte
0

Bem, uma coisa diferente /dev/randomé que ele interrompe a saída após o uso do pool de entropia. tente isto:

$ cat /dev/random
(a few short lines of gibberish)^C
$ 

/dev/urandomno entanto, reutilizará o mesmo pool para continuar a saída. como mostrado aqui:

$ cat /dev/urandom
(tons of gibberish fills the screen)^C
$

(Quando você tenta capturar esses dispositivos especiais, seu prompt pode ser confuso. Basta digitar resete entrar, seu terminal voltará ao normal)

Use /dev/urandomquando você só precisar preencher algo com um fluxo constante de bits "aleatórios". Use /dev/randompara chaves que você precisa ser absolutamente aleatória.

Daniel
fonte
3
A questão do OP era: existe algum efeito colateral conhecido, prático e errado de vincular / dev / random a / dev / urandom nos sistemas Linux, como é feito por padrão nos sistemas FreeBSD?
Countermode #
Interessante, se a diferença é acentuada, elas não devem estar ligadas. A maioria das outras discussões eventualmente chega a um consenso de que não há diferença após a inicialização, mas esse comportamento pode indicar uma diferença mais duradoura.
KalleMP
-2

No Linux, /dev/randomfornece bits aleatórios de alta qualidade. Eles são derivados de fontes que não são previsíveis nem repetíveis, externas à máquina. Por outro lado, /dev/urandomusa os mesmos dados aleatórios que /dev/random(se disponíveis); se não houver nenhum, usa um gerador de números pseudo-aleatórios, que é determinístico . Para a maioria dos propósitos, é imprevisível o suficiente, mas não para aplicativos muito exigentes, como criptografia, e muito menos para a criação de chaves de longa duração, como para GPG.

vonbrand
fonte
6
Isto está errado. /dev/urandomé bom para criptografia .
Gilles 'SO- stop be evil'
@ Gilles que depende do seu grau de paranóia. Para o GPG, todos são afetados por sua chave (indiretamente).
21416 vonbrand
5
Se você não confia /dev/urandom, também não tem motivos para confiar no GPG.
Gilles 'SO- stop be evil'
3
@ vonbrand: Dependendo do meu grau de paranóia, se eu tiver que escolher entre um PRNG matematicamente verificado para gerar aleatoriedade ou um usuário forçado a digitar uma tela cheia de lixo "asdfghasdfghasdfgh", eu escolheria de longe o software PRNG. Entendo seu argumento de que um computador não é bom em gerar aleatoriedade, mas os humanos são ainda piores nisso. No entanto, voltando à minha pergunta, exceto no debate urandomvs. random, você confirma que a substituição do /dev/randomarquivo por um link não deve ter outro efeito colateral e ser uma alternativa viável ao rngdtruque que mencionei?
WhiteWinterWolf
2
Isto está errado. Eles usam o mesmo RNG, mas bloqueiam aleatoriamente se achar que não há entropia suficiente.
Duncan X Simpson