Conecte o ADC a uma fonte de ruído de hardware e use o software para "embranquecer" os números aleatórios, se necessário.
Aqui está um projeto baseado em AVR que faz isso: Mini Gerador de Número Aleatório Portátil de Leon (mPRNG)
Dependendo da segurança criptográfica necessária, você pode usar o ruído de uma entrada analógica aterrada ou o " sensor interno de temperatura " como sua semente de aleatoriedade, em vez de hardware externo.
Atualização : Mais tarde, escrevi um programa para o Arduino que usa os temporizadores do chip como fonte de entropia (o ADC acabou sendo inútil porque os bits ruidosos são truncados) e isso inspirou a criação da biblioteca Entropy .
Nos dois casos, a aleatoriedade não é, por exemplo, o valor da temperatura em si, que muda apenas lentamente, mas dos bits menos significativos , que variam aleatoriamente de uma leitura para a seguinte. Eu li o valor várias vezes, uma vez para cada bit de saída, deslocamento de bits e XOR na leitura anterior. XORing um bit verdadeiramente aleatório com um bit não correlacionado preserva a aleatoriedade , para que a aleatoriedade se espalhe por todos os bits e se torne um verdadeiro ruído branco. Porém, sua taxa de bits não será muito alta, pois você obtém apenas um bit de saída por tempo de aquisição ou ciclo do temporizador. Com o método do timer, eu estava obtendo cerca de 64 bits / s.