/dev/random
Este artigo ou secção contém uma lista de referências no fim do texto, mas as suas fontes não são claras porque não são citadas no corpo do artigo, o que compromete a confiabilidade das informações. (Março de 2010) |
Em sistemas operacionais do tipo Unix, /dev/random, /dev/urandom e /dev/arandom são arquivos especiais que servem como geradores de números pseudo-aleatórios. Eles permitem acesso aos ruídos do ambiente coletados de controladores de dispositivos e outras fontes. /dev/random normalmente bloqueia se houver menos entropia disponível do que o solicitado. /dev/urandom normalmente nunca bloqueia, mesmo se a semente do gerador de números pseudo-aleatórios não tenha sido completamente inicializada com entropia desde a inicialização (boot). /dev/arandom bloqueia após a inicialização até que a semente tenha sido inicializada com segurança, com entropia suficiente, e então jamais bloqueia novamente. Nem todos os sistemas operacionais implementam as mesmas semânticas para /dev/random e /dev/urandom e apenas alguns fornecem /dev/arandom.
Linux
editarO Linux foi o primeiro sistema operacional que implementou este tipo de gerador de números aleatórios como serviço do sistema. Nesta implementação o gerador mantém um número estimado de bits de ruído no pool de entropia. A partir deste pool de entropia os números aleatórios são criados. Quando lido, o dispositivo /dev/random irá retornar apenas os bytes aleatórios com o número de bits estimados pelo pool de entropia. O /dev/random deve ser apropriado para usos que necessitam alta qualidade dos números aleatórios como one-time pad ou geração de chave pública. Quando o pool de entropia está vazio, operações de leitura no /dev/random serão bloqueadas até que seja obtido ruído adicional do ambiente. (Origem: Linux Programmer's Manual, seção 4)
Uma contraparte do /dev/random é o /dev/urandom que reusa o pool interno para produzir mais bits pseudo-aleatórios. A intenção é servir como um gerador de número pseudo-aleatório criptograficamente seguro, apesar dele não ser projetado por especialistas em criptografia. Como resultado, a maioria do software de criptografia (incluindo OpenSSL, PGP e GnuPG, por exemplo) implementam o seu próprio gerador a partir da "semente" obtida no /dev/random.
Algumas fraquezas apontadas neste gerador são discutidas no artigo Analysis of the Linux Random Number Generator.
FreeBSD
editarO sistema operacional FreeBSD implementa o algoritmo Yarrow para gerar um fluxo aleatório.