echte Zufallszahlen erzeugen (Hardware RNG)

Gast #3435667
Lesenswert?

Hallo,

ich möchte mit einer elektronischen Schaltung und einem Mikrocontroller 
echte Zufallszahlen erzeugen. Also einen Hardware-RNG bauen. Eine 
Suche im Forum hat zu diesem Thema leider kein Ergebnis geliefert.

Ziel der ganzen Sache wäre es, mittels Hardware und einem MC echte 
Zufallszahlen zu erzeugen, die keinem nachvollziehbaren Algorithmus 
unterliegen. Hierfür gibt es verschiedene Ansätze um sowas zu 
realisieren. Z.B. gibt es Schaltungen, die das statische Rauschen einer 
Rauschquelle über einen OpAmp verstärken und am AVR damit einen Eingang 
in schneller, unvorhersehbarer Folge zufällig auf 1 oder 0 setzt. Aber 
es gibt auch einige andere Ansätze, um sowas hardwaremäßig zu erreichen.

Diese zufällige Quelle muß nicht unbedingt eine hohe Entropie aufweisen, 
d.h. es müssen keine zufälligen Zahlen mit hoher Frequenz erzeugt 
werden. Wichtiger ist mir, dass die Quelle eine gute statistische 
Verteilung liefert, d.h. dass die insgesamt erzeugten zufälligen Zahlen 
statistisch gesehen von guter Qualität sind.

Kennt jemand im Forum eine bewährte Schaltung um sowas zu 
bewerkstelligen? Oder gibts eventuell schon fertige Lösungen für einen 
MC? Mich interessiert an dieser Lösung nur die Hardware. Die endgültige 
Aufbereitung der fertigen Zahlen mittels Software im MC ist zweitrangig.

Vielen Dank schon mal für hilfreiche Antworten!

Beste Grüße & ein schönes WE,

Norbert
Gast #3435758
Lesenswert?

Aus dem STM32F$xx reference manual:

RNG introduction
The RNG processor is a random number generator, based on a continuous 
analog noise,
that provides a random 32-bit value to the host when read.
The RNG passed the FIPS PUB 140-2 (2001 October 10) tests with a success 
ratio of 99%.
#3435763
Lesenswert?

pitschu schrieb:

> The RNG processor is a random number generator, based on a continuous
> analog noise,
> that provides a random 32-bit value to the host when read.

Interessant. Andererseits, da ja 1000 Transistoren in einem IC
heutzutage nichts mehr kosten, könnte man auch einen Pseudo-
zufallsgenerator mit einer Wiederholrate von z.B. 20 Jahren
bauen. Das wäre dann jenseits der Lebensdauer des Chips.
Gruss
Harald
(Firma: matzetronics) #3435808
Lesenswert?

Harald Wilhelms schrieb:
> könnte man auch einen Pseudo-
> zufallsgenerator mit einer Wiederholrate von z.B. 20 Jahren
> bauen. Das wäre dann jenseits der Lebensdauer des Chips.

Allerdings wird dieser ohne zufällige Seed (z.B. aus einer Rauschquelle 
:-P) beim Neustart immer wieder die gleichen Zahlen ausspucken. Wenn man 
allerdings ein wirklich zufälliges Seed einfüttert, klappt die 
Schieberegisternummer aber auch recht gut. Finde den RNG in den STM32 
aber sehr interessant, ist leider auf meinen STM32F103 anscheinend nicht 
implementiert.
Gast #3435870
Lesenswert?

Harald Wilhelms schrieb:
> Interessant. Andererseits, da ja 1000 Transistoren in einem IC
> heutzutage nichts mehr kosten, könnte man auch einen Pseudo-
> zufallsgenerator mit einer Wiederholrate von z.B. 20 Jahren
> bauen. Das wäre dann jenseits der Lebensdauer des Chips.
> Gruss
> Harald

Solange damit die bekannten rückgekoppelten Schieberegister-Generatoren, 
und ihre Abkömmlinge, alleine aber auch bei beliebig kombinatorischer / 
logischer verknüpfter Form mehrerer Generatoren, aufgebaut werden, 
bleibt deren "Zufall" unter Sicherheitskriterien völlig wertfrei... 
(ungeachtet der Zykluslänge, selbst wenn diese sogar bei hoher 
Folgefrequenz viele Jahrhunderte ohne Sequenzwiederholung bietet) 
...sobald man - gemessen am Gesamtvolumen der generierte Zufallszahlen - 
eine kleine Zahl indizierter (*) Samples beschaffen und mathematisch 
analysieren kann. Dann ist es nahezu kinderleicht, sowohl die komplette 
Sequenz wie auch die Logik ihrer Generierung offenzulegen.

Alle derartige Verfahren sind daher nicht zur Verschlüsselung geeignet, 
sondern bestenfalls, um Datenströmen signaltypische Formen und Muster zu 
nehmen, und sie gleichverteiltem Rauschen ähnlich (aber auch das nur auf 
den ersten Blick...;-) ) zu machen.

(*) d.h. Samples, deren Abstand zueinander (drittes, siebtes, 
dreiundfünzigstes Forlgeelement, usw.) bekannt ist.
Gast #3435987
Lesenswert?

Statistiken können nicht beweisen, daß der Zufall gut (für 
kryptographische Anwendungen) ist. Das geht nur mit Gelaber: erklären, 
wie der Zufall erzeugt wird und begründen, warum er wirklich zufällig 
ist.
#3436007
Lesenswert?

Nosnibor schrieb:
> Das geht nur mit Gelaber: erklären,
> wie der Zufall erzeugt wird und begründen, warum er wirklich zufällig
> ist.

Und dann irgendwann kommt am Ende des Gelabres die Phillosophische 
Frage: "Wie zufällig ist der Zufall ?" Ist das Universum vielleicht 
deterministisch und wir verstehen nur nicht die kompletten Zusammenhänge 
und uns kommt der Zufall nur "zufällig" vor ? Die Antwort von Einstein, 
"Gott würfelt nicht", fand ich jedoch  unzureichend.
#3436016
Lesenswert?

Nosnibor schrieb:
> erklären,
> wie der Zufall erzeugt wird und begründen, warum er wirklich zufällig
> ist.

erzeugen:
z.B. mit einer am ADC-Eingang geschalteten Rauschquelle
beweisen (nur optischer Nachweis):
ein Diagramm, welches das Spektrum des Wertebereichs der gewünschten 
Zufallszahlen abdeckt, müßte mit Zufallswerten übersäht werden, so dass 
sich letztendlich eine homogene Fläche daraus bildet. Das Entstehen 
dieser, aus den Einzelergebnissen entstandenen Fläche sollte sich nach 
wiederholten Versuchen unterschiedlich verdichten.

Bin Laie und das würde mir als erster Gedankenansatz reichen. Wichtig 
ist nur, dass der Samen (seed) wirklich zufällig ist, was ja durch den 
Rauschgenerator gewähleistet ist, wenn man die Strahlung des Urknalls 
zugrunde legt :-).
Gast #3436020
Lesenswert?

So wie die Beschreibung ist, gibt auch der STM32F2/4 eine Mischung von 
echtem Zufall und einfachen Pseudozufallszahlen aus. Für viele 
Anwendungen ist so eine Kombination OK weil man so einige der Defizite 
der echten Zufallsgeneratoren wie nicht zu gute Gleichverteilung 
ausgleichen oder wenigstens verschleiern kann. Es macht aber auch die 
Beurteilung der Zufallszahlen per Messung / Statistik  schwieriger, weil 
vieles halt von den Pseudozufallszahlen geleistet wird.

Bei der gewählten Realisierung über frei laufende Oszillatoren besteht 
immer die Gefahr das die dann doch irgendwie Synchronisieren, wenn auch 
Abhängig von der konkreten Schaltung und sicher nicht perfekt. Im 
Extremfall hätte man auch nur einen Pseudozufallszahlengenerator der 
gelegentlich mal "Fehler" macht. Die Rate der Entropieerzeugung kann das 
deutlich reduzieren, ohne dass es offensichtlich ist.

Der Weg viele frei laufende Oszillatoren per XOR zu verknüpfen ist 
sicher eine Möglichkeit. Die Kunst ist es die Oszillatoren gut 
gegeneinander zu isolieren damit sie sich nicht doch Synchronisieren. 
Der Echte Zufall kommt von Schwankungen der Frequenzen - nicht einem 
krummen Verhältnis der Frequenzen, das gibt nur so eine Art 
Pseudozufall.
Gast #3436081
Lesenswert?

J. L. schrieb:
> Ich wollte immer mal diesen Zufallsgenerator nachbauen:
> http://www.jtxp.org/tech/xr232web.htm

Hallo J.L.,

vielen Dank für den Link. Der bringt mich nämlich auf eine andere Seite, 
wo man eine USB Variante dieses Zufallsgenerators findet. Und hier gibts 
auch eine tolle Schaltungsvorlage für eine Hardware-Rauschquelle. Die 
Schaltung mit dem LM393 ist einfach genial. Vor allem auch deshalb, weil 
sie mit 5V läuft und direkt den Eingang eines AVR speisen kann.

http://www.jtxp.org/tech/xr232usb.htm

Genau das, was ich gesucht habe!

Vielen Dank auch für die anderen Tips und Vorschläge.

Beste Grüße,

Norbert
Gast #3436152
Lesenswert?

D. V. schrieb:
> Läßt du uns an den Ergebnissen deiner weiteren Entwicklung bezüglich
> Zufallsgeneratorergebnisse teilhaben?

Nun ja, meine Werke sind eigentlich nicht darauf ausgelegt, 
reproduzierbar zu sein. Ich produziere keine Platinenlayouts mit Eagle, 
sondern verdrahte meine Schaltungen mit Fädeltechnik. Außerdem hasse ich 
die Programmiersprache C und programmiere daher meine AVRs mit LunaAVR. 
Da werden die meisten hier im Forum sowieso abwinken und sagen, damit 
kann ich nichts anfangen.

Den Rauschgenerator mit dem LM393 werde ich auf jeden Fall mal 
austesten. Den Rest der Schaltung brauche ich nicht weil ich die 
Zufallszahlen nicht via USB in einen PC transferieren will, sondern für 
andere Zwecke benötige.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren