Arduino est-il idéal pour fabriquer un HRNG (générateur de nombres aléatoires matériel)?

21

Je prépare une conception pour un générateur de nombres aléatoires matériel qui utilisera plusieurs sources d'entropie ( combinées ):

  • Lumière ambiante
  • Son ambiant (et niveaux sonores)
  • Temp ambiante
  • Humidité ambiante
  • Position de l'appareil lui-même (à l'envers, incliné à gauche, titré à droite, etc.)
  • D'autres sources dans le futur, peut-être même des données GPS (marquées comme possibles car deux utilisateurs peuvent se tenir côte à côte, donc peut-être déterministes si vous les connaissez.)

Mon idée est de faire un «chargeur» de piscine entropique que les gens peuvent emporter avec eux pendant leur journée pendant qu'il continue d'écrire sur une clé USB.

Après quelques heures, l'utilisateur disposera d'un joli pool d'entropie de ~ 4 Go qui peut être branché sur un PC et utilisé. Je ne peux pas me permettre les QRNG très chers basés sur la décroissance légère ou radioactive, alors j'essaie de trouver quelque chose de moins cher.

À votre avis, Arduino est-il le meilleur choix pour le prototypage? Sinon, que recommanderiez-vous?

Tim Post
la source

Réponses:

22

Je pense que vous voudrez emprunter le chemin suggéré par busz. Recherchez le concept "bruit de diode". Les jonctions PN dans les diodes et les transistors peuvent produire un bruit blanc gaussien proche de la perfection. Un échantillonnage qui devrait être une source d'entropie meilleure que n'importe quelle source environnementale.

Le problème avec la plupart des données environnementales / ambiantes est que les valeurs ne changent pas beaucoup au fil du temps: la température, l'humidité, la lumière et le son ont tous moins d'un ordre de grandeur de variabilité avec des modes vraiment puissants. Un accéléromètre pour mesurer le mouvement peut être une bonne source de variabilité s'il est monté sur une personne, mais vous devrez probablement faire un peu de traitement du signal pour supprimer les modes d'oscillation normaux qui sont présents dans la façon dont les humains se déplacent. Une source de lumière et de son ambiant pourrait avoir une variabilité assez élevée si elle est placée dans un espace urbain à haute densité, mais encore une fois, je pense qu'il y aurait beaucoup de répétition.

todbot
la source
8

Il existe des circuits intéressants pour HRNG sans avoir besoin de sources d'entropie ambiante: http://www.cryogenius.com/hardware/rng/ http://robseward.com/itp/adv_tech/random_generator/ et plus ...

Il est certainement possible d'adapter l'un de ces circuits à un blindage Arduino . L'Arduino ferait alors office de passerelle entre le HRNG et un PC.

Si vous avez vraiment besoin d'une entrée entropique ambiante, l'arduino a 6 canaux d'entrée analogique pour que vous puissiez lire presque tous les capteurs auxquels vous pouvez penser et utiliser les données comme source pour une graine aléatoire.

bpijls
la source
6

Deux commentaires:

  1. Découvrez l' achillée de Bruce Schneier algorithme PRNG de . Le point principal est que vous pouvez avoir une très mauvaise source d'informations aléatoires «vraies»; tant que vous en accumulez suffisamment au fil du temps, l'incertitude qui en résulte peut être combinée avec des techniques logicielles de génération de nombres pseudo-aléatoires pour produire des nombres aléatoires décents.

  2. D'un autre côté, je dois être d'accord avec la plupart des autres répondeurs. Les signaux à variation lente des capteurs environnementaux sont de mauvaises sources d'entropie et pourraient facilement être influencés. Assurez-vous que vous utilisez quelque chose qui est basé sur le bruit intrinsèque de l'appareil, et il sera insensible aux changements environnementaux.

Jason S
la source
6

Je viens de repérer ce générateur de nombres aléatoires :

Générateur de nombres aléatoires de sablier http://makezineblog.files.wordpress.com/2009/12/usbsand.jpg?w=600&h=703

sur Make: Blog et a pensé que vous pourriez être intéressé.

Amos
la source
Faites-vous référence au "générateur de nombres aléatoires USB Hourglass" ?
davidcary
Oui, c'était celui-là. Le lien d'origine était vers sa page d'accueil sur comcast qui n'est plus là. Merci. Correction des liens maintenant.
Amos
3

Je suis d'accord avec les deux réponses ci-dessus. Les activités humaines et les lectures ambiantes constitueront un terrible pool aléatoire. Mais il semble que vous n'en serez convaincu qu'en l'essayant et en vérifiant vous-même le caractère aléatoire résultant. Ce sera une grande expérience d'apprentissage pour vous!

Arduino convient parfaitement à cette application. Tous les capteurs qui vous intéressent peuvent être connectés à Arduino et il existe des bibliothèques Arduino disponibles pour ces capteurs.

Consultez ces tutoriels sur la connexion de capteurs à Arduino: http://www.ladyada.net/learn/sensors/

SiliconFarmer
la source
3

Cela peut être une option pour vous. Son de sparkfun et pas bon marché, mais il sera probablement excellent en tant que générateur de «vrai» nombre aléatoire. Il utilise un geigercounter pour générer les nombres aléatoires.

https://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=132

Seidleroni
la source
Ça a l'air intéressant.
Amos
3

Un certain nombre de générateurs de bruit blanc dans les synthétiseurs de musique analogiques (Moog et Arp) provoqueraient une avalanche de transistor. Si vous recherchez en ligne le schéma Minimoog ou l'ARP4027, vous devriez trouver les schémas.

J'ai fait une disposition PCB pour l'ARP4027. Si vous ne trouvez pas le schéma, envoyez-moi un e-mail.

National avait fabriqué un générateur numérique de nombres aléatoires - le MM5437. IIRC il y avait quelques programmes pour un AT-tiny qui feraient cela aussi. Cela pourrait être un petit projet amusant.

jluciani
la source
2

J'ai lu récemment une discussion très intéressante sur l'utilisation de résistances pour générer du bruit aléatoire. En raison des effets quantiques, une résistance produira une très petite tension. Cela peut être amplifié avec un ampli opérationnel pour produire une source de bruit aléatoire de haute qualité.

wackyvorlon
la source
2

Vous pouvez utiliser l'entrée du capteur comme graines d'un générateur de nombres pseudo-aléatoires. Le système d'exploitation Linux utilise les entrées du clavier / de la souris comme graines pour / dev / random. Juste une idée.

J. Polfer
la source