¿Arduino es ideal para hacer un HRNG (generador de números aleatorios de hardware)?

21

Estoy armando un diseño para un generador de números aleatorios de hardware que utilizará múltiples fuentes de entropía ( combinadas ):

  • Luz ambiental
  • Sonido ambiental (y niveles de sonido)
  • Temperatura ambiente
  • Humedad ambiental
  • Posición del propio dispositivo (al revés, inclinado a la izquierda, titulado a la derecha, etc.)
  • Otras fuentes en el futuro, posiblemente incluso datos de GPS (marcados como posibles porque dos usuarios pueden estar parados uno al lado del otro, por lo tanto, posiblemente determinista si los conoce).

Mi idea es hacer un 'cargador' de grupo de entropía que las personas puedan llevar consigo durante el día mientras continúa escribiendo en una unidad USB.

Después de unas horas, el usuario tendrá un buen grupo de entropía de ~ 4 GB que se puede conectar a una PC y usar. No puedo pagar los QRNG realmente caros basados ​​en la luz o la desintegración radiactiva, así que estoy tratando de encontrar algo más barato.

En su opinión, ¿es Arduino la mejor opción para crear prototipos? Si no, ¿qué recomendarías?

Tim Post
fuente

Respuestas:

22

Creo que querrás seguir el camino que sugiere Busz. Busque el concepto "ruido de diodo". Las uniones PN en diodos y transistores pueden producir un ruido blanco gaussiano casi perfecto. El muestreo que debería ser una fuente de entropía es mejor que cualquier fuente ambiental.

El problema con la mayoría de los datos ambientales / ambientales es que los valores simplemente no cambian mucho con el tiempo: la temperatura, la humedad, la luz y el sonido tienen una variabilidad menor que un orden de magnitud con modos realmente fuertes. Un acelerómetro para medir el movimiento podría ser una buena fuente de variabilidad si se monta en una persona, pero es probable que tenga que hacer un poco de procesamiento de señal para eliminar los modos normales de oscilación que están presentes en la forma en que los humanos se mueven. Una fuente de luz y sonido ambiental podría tener una variabilidad bastante alta si se coloca en un espacio urbano de alta densidad, pero de nuevo creo que habría mucha repetición.

todbot
fuente
8

Hay algunos circuitos interesantes para HRNG sin la necesidad de fuentes de entropía ambiental: http://www.cryogenius.com/hardware/rng/ http://robseward.com/itp/adv_tech/random_generator/ y más ...

Definitivamente es posible adaptar uno de estos circuitos a un escudo Arduino . El Arduino actuaría entonces como una puerta de enlace entre el HRNG y una PC.

Si realmente necesita una entrada de entropía ambiental, el arduino tiene 6 canales de entrada analógica para que pueda leer casi cualquier sensor que pueda imaginar y utilizar los datos como fuente de una semilla aleatoria.

bpijls
fuente
6

Dos comentarios:

  1. Mire el algoritmo Yarrow PRNG de Bruce Schneier . El punto principal es que puede tener una fuente realmente pésima de información aleatoria "verdadera"; siempre y cuando acumule suficiente cantidad de tiempo con el tiempo, la incertidumbre resultante se puede combinar con técnicas de generación de números pseudoaleatorios para obtener números aleatorios decentes.

  2. Por otro lado, tengo que estar de acuerdo con la mayoría de los otros respondedores. Las señales que cambian lentamente de los sensores ambientales son pésimas fuentes de entropía y podrían ser fácilmente influenciadas. Asegúrese de usar algo que esté basado en el ruido intrínseco del dispositivo, y será insensible a los cambios ambientales.

Jason S
fuente
3

Estoy de acuerdo con las dos respuestas anteriores. Las actividades humanas y las lecturas ambientales harán un grupo aleatorio terrible. Pero parece que solo te convencerás de esto al intentarlo y comprobar la aleatoriedad resultante por ti mismo. ¡Será una gran experiencia de aprendizaje para ti!

Arduino está bien para esta aplicación. Todos los sensores que le interesan se pueden conectar a Arduino y hay bibliotecas Arduino disponibles para esos sensores.

Consulte estos tutoriales sobre la conexión de sensores a Arduino: http://www.ladyada.net/learn/sensors/

SiliconFarmer
fuente
3

Varios de los generadores de ruido blanco en los sintetizadores de música analógica (Moog y Arp) aluden a un transistor. Si consulta en línea el esquema Minimoog o el ARP4027, debe encontrar los esquemas.

Hice un diseño de PCB para el ARP4027. Si no puede encontrar el esquema, envíeme un correo electrónico.

National había creado un generador digital de números aleatorios: el MM5437. IIRC había algunos programas para un AT-tiny que también haría esto. Podría ser un pequeño proyecto divertido.

jluciani
fuente
2

Recientemente leí una discusión muy interesante sobre el uso de resistencias para generar ruido aleatorio. Debido a los efectos cuánticos, una resistencia producirá un voltaje muy pequeño. Esto puede amplificarse con un amplificador operacional para producir una fuente de ruido aleatorio de alta calidad.

wackyvorlon
fuente
2

Podría usar la entrada del sensor como semillas de un generador de números pseudoaleatorio. El sistema operativo Linux utiliza la entrada del teclado / mouse como semillas para / dev / random. Solo una idea.

J. Polfer
fuente