Infelizmente, o / dev / random também não é adequado para uso em um bloco único, pelo menos não o tipo de bloco único (com garantias de segurança prováveis) que a maioria das pessoas imagina quando pensa ou implementa blocos únicos. A maioria das informações abaixo é resumida no artigo (muito longo) em http://www.2uo.de/myths-about-urandom/
O problema é que / dev / random não é verdadeiramente aleatório; ele usa um CSPRNG para gerar sua saída. De fato, / dev / random usa exatamente o mesmo CSPRNG que / dev / urandom. A única diferença é que / dev / bloqueia aleatoriamente se sua estimativa interna de entropia é insuficiente.
A palavra "estimativa" na frase anterior é a chave. A maioria das pessoas pensa que essa estimativa é sempre precisa e perfeita, mas na realidade não é de todo precisa. No instante em que a estimativa está errada, você perde todas as garantias de segurança prováveis do teclado único e tudo o que resta é segurança computacional - nada melhor do que se você tivesse usado / dev / urandom!
Entender a estimativa da entropia um pouquinho errado não torna seu controle único um pouco inseguro. A garantia de segurança comprovável de um bloco único é tudo ou nada.
A premissa desta pergunta é que os problemas com / dev / random podem ser "corrigidos" adicionando mais entropia. Infelizmente, essa premissa está errada. Uma fonte maliciosa de entropia é muito pior do que nenhuma entropia, porque as fontes de entropia geralmente têm acesso a dados internos e podem exportar esses dados secretamente usando a saída RNG - consulte http://blog.cr.yp.to/20140205-entropy .html para uma discussão completa (muito tempo para resumir aqui). Em particular, uma fonte de entropia de hardware (como recomendado por várias outras respostas) é uma péssima escolha do ponto de vista de segurança, uma vez que esse hardware está em uma posição privilegiada para executar ações maliciosas e é essencialmente não auditável.