Conecte el ADC a una fuente de ruido de hardware y use software para "blanquear" los números aleatorios si es necesario.
Aquí hay un proyecto basado en AVR que hace esto: Mini generador portátil de números aleatorios de Leon (mPRNG)
Dependiendo de cuán criptográficamente seguro deba ser, puede usar el ruido de una entrada analógica con conexión a tierra o el " sensor de temperatura interno " como semilla de aleatoriedad en lugar de hardware externo.
Actualización : más tarde escribí un programa para Arduino que usa los temporizadores del chip como fuente de entropía (el ADC resultó inútil porque los bits ruidosos se truncan), y esto inspiró la creación de la biblioteca Entropy .
En ambos casos, la aleatoriedad no proviene, por ejemplo, del valor de la temperatura en sí, que solo cambia lentamente, sino de los bits menos significativos , que varían aleatoriamente de una lectura a la siguiente. Leí el valor varias veces, una vez por cada bit de salida, desplazamiento de bits y XORing con la lectura anterior. XORing un bit verdaderamente aleatorio con un bit no correlacionado conserva la aleatoriedad , por lo que la aleatoriedad se extiende a todos los bits y se convierte en un verdadero ruido blanco. Sin embargo, su velocidad de bits no será muy alta, ya que solo obtiene un bit de salida por tiempo de adquisición o ciclo de temporizador. Con el método del temporizador, estaba obteniendo aproximadamente 64 bit / s.