Ist Arduino ideal für die Erstellung eines HRNG (Hardware-Zufallszahlengenerators)?

21

Ich stelle ein Design für einen Hardware-Zufallszahlengenerator zusammen, der mehrere Entropiequellen verwendet ( kombiniert ):

  • Umgebungslicht
  • Umgebungsgeräusch (und Geräuschpegel)
  • Umgebungstemparatur
  • Luftfeuchtigkeit
  • Position des Geräts selbst (verkehrt herum, nach links geneigt, nach rechts betitelt usw.)
  • Andere Quellen in der Zukunft, möglicherweise sogar GPS-Daten (als möglich markiert, da möglicherweise zwei Benutzer nebeneinander stehen und daher möglicherweise deterministisch sind, wenn Sie sie kennen.)

Meine Idee ist es, einen Entropiepool aufzuladen, den die Leute während des Tages mit sich herumtragen können, während er weiterhin auf ein USB-Laufwerk schreibt.

Nach ein paar Stunden hat der Benutzer einen schönen ~ 4 GB Entropie-Pool, der an einen PC angeschlossen und verwendet werden kann. Ich kann mir die wirklich teuren QRNGs, die auf Licht oder radioaktivem Zerfall basieren, nicht leisten, also versuche ich, mir etwas Billigeres auszudenken.

Ist Arduino Ihrer Meinung nach die beste Wahl für die Erstellung von Prototypen? Wenn nicht, was würden Sie empfehlen?

Tim Post
quelle

Antworten:

22

Ich denke, Sie wollen den Weg gehen, den Busz vorschlägt. Suchen Sie nach dem Begriff "Diodenrauschen". Die PN-Übergänge in Dioden und Transistoren können nahezu perfektes weißes Gauß-Rauschen erzeugen. Probenahme, die eine Entropiequelle sein sollte, die besser ist als jede andere Umweltquelle.

Das Problem bei den meisten Umwelt- / Umgebungsdaten ist, dass sich die Werte im Laufe der Zeit nur unwesentlich ändern: Temperatur, Luftfeuchtigkeit, Licht und Schall haben alle eine Variabilität von weniger als einer Größenordnung mit sehr starken Modi. Ein Beschleunigungsmesser zur Messung der Bewegung ist möglicherweise eine gute Quelle für Variabilität, wenn er an einer Person angebracht ist. Wahrscheinlich müssen Sie jedoch ein wenig Signalverarbeitung durchführen, um die normalen Schwingungsmoden zu beseitigen, die bei der Bewegung von Menschen auftreten. Eine Umgebungslicht- und Schallquelle könnte eine ziemlich hohe Variabilität aufweisen, wenn sie in einem städtischen Raum mit hoher Dichte platziert wird, aber ich denke auch, dass es eine Menge Wiederholungen geben würde.

todbot
quelle
8

Es gibt einige interessante Schaltkreise für HRNG ohne Umgebungsentropiequellen: http://www.cryogenius.com/hardware/rng/ http://robseward.com/itp/adv_tech/random_generator/ und mehr ...

Es ist definitiv möglich, eine dieser Schaltungen an einen Arduino-Schild anzupassen . Der Arduino würde dann als Gateway zwischen dem HRNG und einem PC fungieren.

Wenn Sie wirklich eine Umgebungsentropie benötigen, verfügt das Arduino über 6 analoge Eingangskanäle, sodass Sie fast jeden Sensor auslesen und die Daten als Quelle für einen zufälligen Startwert verwenden können.

bpijls
quelle
6

Zwei Kommentare:

  1. Sehen Sie sich Bruce Schneiers PRNG-Algorithmus für Schafgarbe an . Der wichtigste Punkt ist, dass Sie eine wirklich miese Quelle "wahrer" zufälliger Informationen haben können; Solange Sie im Laufe der Zeit genug davon akkumulieren, kann die resultierende Unsicherheit mit Software-Pseudozufallszahlen-Generierungstechniken kombiniert werden, um anständige Zufallszahlen zu erhalten.

  2. Auf der anderen Seite muss ich mich den meisten anderen Befragten anschließen. Sich langsam ändernde Signale von Umweltsensoren sind miese Entropiequellen und können leicht beeinflusst werden. Stellen Sie sicher, dass Sie etwas verwenden, das auf dem Eigenrauschen des Geräts basiert und unempfindlich gegen Umgebungsveränderungen ist.

Jason S
quelle
6

Ich habe gerade diesen Zufallszahlengenerator entdeckt :

Hourglass Random Number Generator http://makezineblog.files.wordpress.com/2009/12/usbsand.jpg?w=600&h=703

über Make: Blog und dachte, Sie könnten interessiert sein.

Amos
quelle
Beziehen Sie sich auf den "USB Hourglass Zufallszahlengenerator" ?
Davidcary
Ja das war der eine. Der ursprüngliche Link war zu seiner Homepage auf comcast, die nicht mehr da ist. Vielen Dank. Die Links wurden jetzt repariert.
Amos
3

Ich stimme den beiden obigen Antworten zu. Menschliche Aktivitäten und Umgebungsmessungen ergeben einen schrecklichen zufälligen Pool. Aber es hört sich so an, als würden Sie nur davon überzeugt sein, wenn Sie es versuchen und die resultierende Zufälligkeit selbst überprüfen. Es wird eine großartige Lernerfahrung für Sie sein!

Arduino ist in Ordnung für diese Anwendung. Alle Sensoren, an denen Sie interessiert sind, können an Arduino angeschlossen werden, und für diese Sensoren stehen Arduino-Bibliotheken zur Verfügung.

Sehen Sie sich diese Tutorials zum Anschließen von Sensoren an Arduino an: http://www.ladyada.net/learn/sensors/

SiliconFarmer
quelle
3

Dies kann eine Option für Sie sein. Es ist von sparkfun und nicht billig, aber es wird wahrscheinlich hervorragend als "echter" Zufallszahlengenerator geeignet sein. Es verwendet einen Geigerzähler, um die Zufallszahlen zu generieren.

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

Seidleroni
quelle
Das sieht interessant aus.
Amos
3

Eine Anzahl der Generatoren für weißes Rauschen in den analogen Musiksynthesizern (Moog und Arp) würde einen Transistor überlasten. Wenn Sie online nach dem Minimoog-Schaltplan oder dem ARP4027 fragen, sollten Sie die Schaltpläne finden.

Ich habe ein PCB-Layout für den ARP4027 erstellt. Wenn Sie den Schaltplan nicht finden, senden Sie mir eine E-Mail.

National hatte einen digitalen Zufallsgenerator entwickelt - den MM5437. IIRC gab es einige Programme für ein AT-winziges, das dies auch tun würde. Könnte ein lustiges kleines Projekt sein.

jluciani
quelle
2

Ich habe kürzlich eine sehr interessante Diskussion über die Verwendung von Widerständen zur Erzeugung von zufälligem Rauschen gelesen. Aufgrund von Quanteneffekten erzeugt ein Widerstand eine sehr kleine Spannung. Dies kann mit einem Operationsverstärker verstärkt werden, um eine qualitativ hochwertige Quelle für zufälliges Rauschen zu erzeugen.

Wackyvorlon
quelle
2

Sie könnten den Sensoreingang als Ausgangswert für einen Pseudozufallszahlengenerator verwenden. Das Linux-Betriebssystem verwendet Eingaben von der Tastatur / Maus als Startparameter für / dev / random. Nur eine Idee.

J. Polfer
quelle