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

21

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

  • luz ambiente
  • Sonido ambiental (y niveles de sonido)
  • Temperatura ambiente
  • Humedad ambiental
  • Posición del propio dispositivo (boca abajo, inclinado hacia la izquierda, titulado derecho, etc.)
  • Otras fuentes en el futuro, posiblemente incluso datos de GPS (marcados como posibles porque dos usuarios pueden estar uno al lado del otro, por lo tanto, posiblemente sean deterministas si los conoce).

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

Después de unas pocas horas, el usuario tendrá un buen grupo de entropía de 4 GB que se puede conectar a una PC y usar. No puedo costear los QRNG realmente caros basados en la descomposición radioactiva o ligera, por lo 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ía?

    
pregunta Tim Post

10 respuestas

22

Creo que querrás ir por el camino que sugiere busz. Buscar el concepto "ruido de diodo". Las uniones PN en diodos y transistores pueden producir un ruido blanco Gaussiano casi perfecto. Muestreo que debería ser una fuente de entropía que sea 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 menos variabilidad en 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 se mueven los humanos. Una luz ambiente y amp; La fuente de sonido podría tener una variabilidad bastante alta si se colocara en un espacio urbano de alta densidad, pero nuevamente creo que habría mucha repetición. Sigo pensando que la mejor fuente de entropía sería reducir las propiedades físicas fundamentales de los materiales, como el ruido de diodo, en lugar de aumentar la escala y observar los factores ambientales que un microcontrolador puede leer.

    
respondido por el todbot
9

Hay algunos circuitos interesantes para HRNG sin la necesidad de fuentes de entropía ambiental: enlace enlace 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 en el que pueda pensar y usar los datos como fuente para una semilla aleatoria.

    
respondido por el bpijls
6

Dos comentarios:

  1. Consulte el Yarrow algoritmo PRNG de Bruce Schneier. El punto principal es que puede tener una fuente realmente mala de información aleatoria "verdadera"; siempre que acumules lo suficiente a lo largo del tiempo, la incertidumbre resultante se puede combinar con las técnicas de generación de números pseudoaleatorios de software 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 fuentes pésimas de entropía y podrían ser fácilmente influenciadas. Asegúrese de usar algo que se base en el ruido intrínseco del dispositivo, y será insensible a los cambios ambientales.

respondido por el Jason S
4

Esta puede ser una opción para ti. Es de sparkfun y no es barato, pero probablemente será excelente como un verdadero generador de números aleatorios. Utiliza un geigercounter para generar los números aleatorios.

enlace

    
respondido por el Seidleroni
3

Estoy de acuerdo con las dos respuestas anteriores. Las actividades humanas y las lecturas ambientales harán un grupo terrible al azar. Pero parece que solo estarás convencido de esto probándolo y verificando la aleatoriedad resultante por ti mismo. ¡Será una gran experiencia de aprendizaje para ti!

Arduino está bien para esta aplicación. Todos los sensores en los que está interesado pueden conectarse a Arduino y hay bibliotecas de Arduino disponibles para esos sensores.

Vea estos tutoriales sobre cómo conectar sensores a Arduino: enlace

    
respondido por el SiliconFarmer
3

Algunos de los generadores de ruido blanco en los sintetizadores de música analógicos (Moog y Arp) avalancha de un transistor. Si consulta en línea el esquema Minimoog o el ARP4027, puede 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-pequeño que harían esto también. Podría ser un pequeño proyecto divertido.

    
respondido por el jluciani
2

He leído recientemente 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 se puede amplificar con un amplificador operacional para producir una fuente de ruido aleatorio de alta calidad.

    
respondido por el wackyvorlon
2

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

    
respondido por el J. Polfer
1

Aquí está lo último en generación de números aleatorios:

texto del enlace

No son tan caros.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas