RNG significa Random Number Generator, ou Gerador de Números Aleatórios, em português. É um dispositivo ou algoritmo que produz sequências de números que não seguem nenhum padrão previsível. Os números aleatórios são usados em diversas aplicações, como criptografia, jogos, simulações, estatística, etc.
No Linux, existem duas formas principais de gerar números aleatórios: o RNG de hardware e o RNG de software. O RNG de hardware é um componente físico que usa fontes de ruído, como o térmico, o elétrico ou o quântico, para produzir bits aleatórios. O RNG de software é um programa que usa algoritmos matemáticos para gerar números pseudoaleatórios, ou seja, que parecem aleatórios, mas que podem ser reproduzidos se a semente inicial for conhecida.
O Linux possui dois dispositivos virtuais que fornecem acesso aos números aleatórios: /dev/random e /dev/urandom. O /dev/random usa o RNG de hardware, se disponível, ou o RNG de software com uma semente baseada em eventos do sistema, como interrupções, movimentos do mouse, etc. O /dev/urandom usa apenas o RNG de software com uma semente gerada pelo /dev/random. A diferença entre os dois é que o /dev/random pode bloquear a leitura se a entropia (a medida da imprevisibilidade dos números) for baixa, enquanto o /dev/urandom nunca bloqueia, mas pode fornecer números menos seguros.
A escolha entre usar o /dev/random ou o /dev/urandom depende da aplicação e do nível de segurança desejado. Em geral, recomenda-se usar o /dev/urandom para a maioria dos casos, pois ele é mais rápido e não causa bloqueios. O /dev/random deve ser usado apenas para gerar chaves criptográficas ou outros dados que exigem uma alta qualidade de aleatoriedade.
Neste post, explicamos o que é o RNG no Linux e como ele funciona. Esperamos que tenha sido útil e esclarecedor. Se você tiver alguma dúvida ou sugestão, deixe um comentário abaixo.