Aunque mucha gente no lo crea, los números que se generan al azar en los programas de computadora no lo son. Son pseudoaleatorios y en general funcionan para la mayoría de las aplicaciones. Muchas veces, si se requiere valores más azarosos, se pueden obtener de usar bulbos Geiger, lámparas de lava o decaimiento radioactivo. Sin embargo, muchas veces todas estas soluciones son imprácticas. Por ello mismo, Karl, quien requería de un generador de números al azar por hardware, decidió hacer su propia solución: se necesitaba que fuese económico y suficientemente azaroso. La solución la encontró en un microcontrolador de 8 pins AVR.
La solución usa AVEntropy, una biblioteca que analiza el timer (watchdog) del microcontrolador AVR de manera que pueda dar un número al azar criptográficamente seguro. Armar el circuito fue fácil. Un microcontrolador ATtiny45 se conectó a un convertidor chino (muy barato) de USB a serial. Tres cables y el circuito quedó completo. El código es simple: se inicializa la entropía y se escriben los bits en el puerto serial.
Sin embargo, este sistema tiene sus contras. Como la biblioteca de la entropía debe esperar a que se acumule suficiente entropía, puede dar un par de dos números de 32 bits por segundo. Afortunadamente esto es lo que requería Karl. Finalmente decidió darle a su sistema un empaque de un corcho de un vino, con una canica de color en la parte trasera. Es probable que este sea el generador más bonito y pequeño, de números aleatorios.
Referencias: