
Atualmente estou testando gpg --genkey
em uma VM Linux. Infelizmente, este software parece depender de /dev/random
coletar entropia e pede educadamente ao usuário para digitar manualmente telas após telas de entrada criptograficamente aleatória, para que possa eventualmente acabar gerando uma chave, e não encontrei nenhum parâmetro de linha de comando para informar para usar outro arquivo como fonte de entropia (o caraneste vídeoencontra o mesmo problema...).
No entanto, o usuário deve ser livre para optar por usar, /dev/urandom
uma vez queNão há nada de errado com isso. Está lá principalmente como uma reminiscência de algoritmos PRNG mais antigos que eram mais fracos do ponto de vista criptográfico. Por exemplo, enquantoPágina de manual do NetBSDadmite que a distinção ainda pode ser útil em um estágio inicial de inicialização, ele descreve tal distinção como"folclore"e um"teoria imaginária que defende apenas contra modelos de ameaças fantasiosas". Ninguém concorda com nenhum dos doisa quantidade de entropia exigida por este comandonem o fato de que a entropia é algo que é realmente consumido, conforme declarado emPágina de manual do GPG("POR FAVOR, não use este comando a menos que saiba o que está fazendo, pois pode remover a preciosa entropia do sistema!").
Eu li sobrepessoas instalando o rngd
daemone configurá-lo para usar /dev/urandom
como fonte de entropia para alimentar /dev/random
, mas acho essa prática muito suja.
Tentei solucionar o problema no modo FreeBSD, removendo-o /dev/random
e vinculando-o a /dev/urandom
:
rm /dev/random
ln -s /dev/urandom /dev/random
Eu vejo isso como um cenário que diz"Eu confio /dev/urandom
como 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 da vinculação /dev/random
em /dev/urandom
sistemas Linux, como feito por padrão em sistemas FreeBSD?Ou seria possível definir isso permanentemente (em um script no final do processo de inicialização, por exemplo) em caso de problemas repetitivos devido ao /dev/random
bloqueio de algum serviço?
Responder1
VerMitos sobre urandom, não há nenhum ataque conhecido a /dev/urandom que não seja também um ataque a /dev/random. O principal problema que um sistema Linux tem é quando ele é clonado e executado como várias VMs sem redefinir o pool de entropia salvo após a clonagem. Esse é um caso secundário tangencial ao que você deseja.
Responder2
Bem, uma coisa diferente /dev/random
é que ele interrompe a saída depois que o pool de entropia é usado. tente isto:
$ cat /dev/random
(a few short lines of gibberish)^C
$
/dev/urandom
no entanto, reutilizará o mesmo pool para continuar a produção. como mostrado aqui:
$ cat /dev/urandom
(tons of gibberish fills the screen)^C
$
(Quando você tenta capturar esses dispositivos especiais, seu prompt pode ficar confuso. Basta digitar reset
e entrar, seu terminal voltará ao normal)
Use /dev/urandom
quando você só precisa preencher algo com um fluxo constante de bits "aleatórios". Use /dev/random
para chaves que você precisa que sejam absolutamente aleatórias.
Responder3
No Linux, /dev/random
fornece bits aleatórios de alta qualidade. Eles são derivados de fontes que sãonãoprevisível enãorepetível, externo à máquina. Em contraste, /dev/urandom
usa os mesmos dados aleatórios /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, é bastante imprevisível, masnãopara aplicações muito exigentes, como criptografia, e muito menos para criar chaves de longa duração, como o GPG.