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