Um True Random Number Generator, ou TRNG, obtém novas entradas imprevisíveis medindo um processo físico. Isso o diferencia de um gerador que apenas calcula novos valores a partir de um estado armazenado. Na prática, os dois podem trabalhar juntos. Mas “true” não é garantia de qualidade: uma fonte física também pode ter um projeto ruim ou apresentar defeitos.
Um circuito pode medir pequenas flutuações elétricas e convertê-las em números. O que importa é quanto dessa medição um atacante não consegue prever. Produzir muitos dados rapidamente não basta. Por isso, a NIST SP 800-90B avalia a fonte de ruído específica, a amostragem, o eventual processamento e as verificações de funcionamento. Dar nome ao fenômeno físico não substitui essa avaliação. [1]
Uma fonte pode produzir zeros com mais frequência que uns. O processamento chamado conditioning ajuda a reduzir esse viés e concentrar a entropia disponível, a incerteza do ponto de vista do atacante, numa saída menor. Ele não cria a incerteza que falta. Por isso, NIST SP 800-90B vincula a entropia reconhecida na saída à entrada e ao método usado. Mesmo um hash, uma impressão digital calculada dos dados, não comprova imprevisibilidade: com uma entrada conhecida, é possível calcular a mesma impressão novamente. [1]
Se a fonte começar a devolver sempre o mesmo valor, o dispositivo não pode ignorar isso. A NIST SP 800-90B usa Repetition Count Test para acompanhar repetições e Adaptive Proportion Test para frequências incomuns. Essas verificações procuram determinadas falhas; não detectam automaticamente todo ataque ou defeito. Ao detectar uma falha persistente, a fonte não deve continuar fornecendo dados como se operasse normalmente. [1]
A presença de um TRNG, sozinha, não comprova a segurança da carteira. Também importa como aquela versão usa os dados e reage a erros. Por isso, a NIST SP 800-90C considera as fontes junto aos geradores seguintes. Avaliar um componente não é avaliar a carteira inteira. Nem uma excelente fonte de aleatoriedade protege um backup que você depois revela. [4]
Um registro longo de um aparelho ligado revela aspectos diferentes de seu comportamento em comparação com desligá-lo e iniciá-lo repetidamente. Por isso, NIST SP 800-90B inclui testes de reinício. A avaliação precisa corresponder à fonte concreta e às suas condições de operação. O resultado de uma amostra não cobre automaticamente todos os dispositivos ou ambientes. Uma mudança de firmware, o programa interno do aparelho, também pode exigir nova avaliação. [1]
A documentação técnica menciona as instruções RDRAND e RDSEED. A Intel as descreve no guia do DRNG, um gerador de números aleatórios por hardware. RDRAND fornece resultados de um gerador determinístico que calcula valores a partir do estado interno. RDSEED fornece entropia processada para inicialização, ou seja, criação do estado inicial de um gerador. Ambos os caminhos podem começar numa fonte física; isso não significa acesso direto ao ruído sem processamento. [2]
O processador pode não ter um resultado pronto para cada solicitação. Por isso, a Intel exige verificar o indicador de estado CF em RDRAND e RDSEED: 1 significa resultado disponível e 0 indisponível. Procurar apenas um zero numérico no registrador de destino, um pequeno espaço de armazenamento do processador, não basta. O programa precisa ler o indicador de sucesso. Suportar uma instrução não garante que uma solicitação específica tenha sido bem-sucedida. [2]
No Linux, a interface hw_random permite ler a fonte de hardware por /dev/hwrng, de forma semelhante a um arquivo. Sua documentação alerta expressamente que essa interface não aplica, por si mesma, testes de qualidade aos dados. Hardware defeituoso ou adulterado pode devolver dados incorretos que a aplicação ainda consegue ler. Uma leitura bem-sucedida não comprova entropia suficiente. É preciso avaliar a fonte e o uso que o programa faz de seus resultados. [3]
Para ter uma visão mais completa, leia este verbete junto com Cryptographic Entropy, Random Number Generator, CSPRNG, Entropy Mixing. Também há referências a este verbete em Entropy Mixing.