Forum: Mikrocontroller und Digitale Elektronik echte Zufallszahlen erzeugen (Hardware RNG)


von Norbert (Gast)


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

von pitschu (Gast)


Lesenswert?

Ja, es gibt fertige MC, die sowas an board haben. Die STM32F4 z.B. Ich 
habe den RNG auf dem STM32F4Discovery board schon verwendet.

von Barney Bär (Gast)


Lesenswert?

Scheint ein interessanter Ansatz zu sein:

https://gist.github.com/endolith/2568571

von Harald W. (wilhelms)


Lesenswert?

pitschu schrieb:

> Ja, es gibt fertige MC, die sowas an board haben. Die STM32F4 z.B. Ich
> habe den RNG auf dem STM32F4Discovery board schon verwendet.

Bist Du Dir sicher, das das kein Pseudozufall ist?
Gruss
Harald

von Dennis H. (c-logic) Benutzerseite


Lesenswert?


von Wolfgang (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> Bist Du Dir sicher, das das kein Pseudozufall ist?

Steht jedenfalls so in AN4230: "The True random number generator 
peripheral implemented on STM32 F2 series is the same as the one 
implemented on F4 series, and it is based on an analog circuit."

http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/DM00073853.pdf

von pitschu (Gast)


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%.

von Tippgeber (Gast)


Lesenswert?


von Harald W. (wilhelms)


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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


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.

von BitLutscher (Gast)


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.

von D. V. (mazze69)


Lesenswert?

Gibt es bereits Statistiken über die ausgespuckten Zufallszahlen 
diverser µC, oder ist das hier nur wieder nur Gelaber?

von Nosnibor (Gast)


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.

von Heiko J. (heiko_j)


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.

von D. V. (mazze69)


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 :-).

von J. L. (lindenbaum)


Lesenswert?

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

von Ulrich (Gast)


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.

von Norbert (Gast)


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

von D. V. (mazze69)


Lesenswert?

Norbert schrieb:
> Vielen Dank auch für die anderen Tips und Vorschläge.

Läßt du uns an den Ergebnissen deiner weiteren Entwicklung bezüglich 
Zufallsgeneratorergebnisse teilhaben?
Diese Frage taucht hier nämlich (immer wieder auf) und könnte damit 
einen Großteil weiterer Anfragen erschlagen?

Danke

von Norbert (Gast)


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.

von Wolfgang H. (frickelkram)


Lesenswert?

Hi Norbert,

Du suchst also eigentlich nur einen Rauschgenerator?
Suche mit Google mal nach E00cH39.PDF und E00cH30.PDF

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.