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