Ich suche nach einer Möglichkeit, beim Einschalten des AVR (tiny2313)
eine (32 bit) Zufallszahl zu ermitteln, mit der ich einen bestimmten
nachgeschalteten Algorithmus starte.
Was gibt es da für preiswerte Möglichkeiten? Eine Forderung ist übrigens
noch, daß die Wahrscheinlichkeit gleichverteilt sein soll, also nicht
schon durch das Verfahren bereits eine Tendenz für bestimmte Gruppen von
Zahlen da sein sollte. (Man könnte sich vorstellen, man hat ein stark
temperaturabhängiges Bauelement, das die Ladezeit eines Kondensators
bestimmt. Zähle ich jetzt beim Einschalten schnell bis 2^32-1 komme ich
vielleicht immer nur in die Gegend von 10 Mio.) Man könnte das zwar noch
verwirbeln, indem man die Werte dann als Startwerte für einen
Pseudo-Random-Generator nimmt, aber das wäre dann doch wieder irgendwie
korreliert.
Also langer Rede, kurzer Sinn, was für ein Bauelement, Algorithmus, was
immer, nimmt man dafür?
Grüße
Christoph
Tja, Christoph,
der 2313 hat keinen AD-Wandler.
Damit werden die bestimmenden Fragen:
a) hast Du 2 Pins frei? Vielleicht gar die des Analog-Komparators?
b) hast Du eine Brummquelle in der Nähe?
c) Wieviele zusätzliche Bauteile darfst Du spendieren? Beispielsweise
Photodiode, Photowiderstand, Kondensator zum aufladen und Zeitmessen.
Der Rest ist Arbeit - die verfügbare Quelle unsicherer Information zu
nutzen.
Eine Kollege hatte mal das Rauschen einer Zenerdiode verstärkt.
Ciao
Wolfgang Horn
Du kannst auch den Ram(Register auch) auslesen und alle Bytes
miteinander xoren, die sind alle zufällig. Das funktioniert aber nur
beim Power Up, nicht beim Reset!
AVRs haben DIL-Gehäuse mit 2.54mm Pin-Abstand, nicht? Das ist etwas
viel.
Also ich benutze zur Initialisierung des Zufallszahlengenerators meines
DSPs den Tunneleffekt zwischen 2 Leiterbahnen mit 2/1000" Abstand. Die
Tunnelwahrscheinlichkeit liegt zwar <50%, aber mit geeigneter
Kalibrierung kann ich vollkommen gleichverteilte Bits bekommen, ich
erzeuge 128 Bit in ca. 1,2 Sekunden. Ohne Quanteneffekte kannst du keine
echte Zufälligkeit erreichen!
>Also ich benutze zur Initialisierung des Zufallszahlengenerators meines>DSPs den Tunneleffekt zwischen 2 Leiterbahnen mit 2/1000" Abstand.
Das würde mich jetzt aber auch interessieren, wo und wie genau da ein
Tunneleffekt auftritt.
Jörg
Holzi, man muß nicht immer von anderen auf sich selbst schließen. Die
Versuche zum Tunneleffekt an Nanometerstrukturen zielen auf ganz andere
Ergebnisse als es für eine simple Zufallsfolge nötig ist.
Oder lass den Timer einfach frei durchlaufen und werte das erste
zufällige externe ereigneis aus (z.B. Tastendruck einen nutzers).
Der Beweis das das ganze gleichverteilt ist könnte zwar schwer werden
aber das problem wirst du immer haben ;)
All die Vorschläge, einen Timer bis zu einem "zufälligen" Ereignis
hochzuzählen, gehen etwas an der Realität vorbei. Mit wieviel MHz
arbeitet ein AVR, 8MHz? Dann braucht er ca. 500 Sekunden, um bis 2^32 zu
zählen. Geht man davon aus, dass das erste Ereignis in der ersten Minute
nach dem Booten eintritt, sind diese Zählerstände niemals nicht
gleichverteilt.
Holzi sagt bestimmt gleich, dann lassen wir eben einen zweiten Zähler
mit der halben Frequenz laufen und haben zwei unabhängige 16-Bit Zahlen
in Bruchteilen einer Sekunde...
Wem der Aufbau zum Tunneleffekt zu hoch ist, der kann auch einen
Geigerzähler benutzen und ein paar Zerfälle abwarten. Mit kosmischer
Strahlung braucht es ca. 10s um mit 8MHz Zählrate 32 Zufallsbits zu
erhalten. In Londoner Sushiläden deutlich schneller.
Der Tiny2313 hat doch auch den analogen Komparator? Vielleicht lässt
sich damit etwas anstellen.
Das mit dem Tunneleffekt hört sich gleichermaßen interessant wie
durchgeknallt an.
Gibts da für Laien verständliche Informationen? Schaltpläne, Layouts,
Softwareschnipsel?
mein Geigerzählrohr macht etwa alle 2 sec einen Knacks. Wie generiert
man damit 32 Bits in 10 sec? ich kann die Dauer zwischen zwei Knacksen
mit 8 MHz also 125nsec Auflösung messen, das wären dann 16 Millionen
oder 2 hoch 24 mögliche Abstände, wobei das Zählrohr nach einem Knacks
eine gewisse Erholzeit benötigt.
@Marvin
Alles was du zum Tunneleffekt wissen musst, steht eigentlich auf
Wikipedia. Die Idee ist, dass du zwei Leiterbahnen spitz zulaufend eng
zusammenführst. Auf der einen erzeugst du ein hochfrequentes Signal, auf
der anderen samplest du das gleichgerichtete Signal (Diode nach GND,
dann zum ADC reicht aus).
Mittels Korrellation zum erzeugten HF-Signal kannst du die kapazitive
Einkopplung herausfiltern (schafft ein AVR nicht ganz in Echtzeit) und
übrig bleibt das -nach heutigem Wissen vollkommen zufällige-
Tunnelsignal.
... wrote:
> All die Vorschläge, einen Timer bis zu einem "zufälligen" Ereignis> hochzuzählen, gehen etwas an der Realität vorbei. Mit wieviel MHz> arbeitet ein AVR, 8MHz? Dann braucht er ca. 500 Sekunden, um bis 2^32 zu> zählen. Geht man davon aus, dass das erste Ereignis in der ersten Minute> nach dem Booten eintritt, sind diese Zählerstände niemals nicht> gleichverteilt.
Das sehe ich ganz genau so.
Wenn Du wirklich riesige 32 Bit brauchst (wozu auch immer), dann mußt Du
notgedrungen stunden- oder tagelang irgendwas externes zufälliges
messen. Alles andere ist nur Lügen in die eigene Tasche.
Nimm nen Pseudo-Zufallsgenerator, dessen nächster Startwert im EEPROM
abgelegt wird und der erste Startwert wird durch nen 1-Wire-Adresschip
erzeugt.
Peter
Für das Schieberegister hab ich mal in der McMos-Tabelle nachgeschaut:
http://www.mikrocontroller.net/attachment/13236/Pseudozufall.png
sie reicht bis 2hoch34.
Der einfachste brauchbare Pseudozufallsgenerator maximaler Länge wäre
damit ein 33-Bit-Schieberegister mit EXOR am 13. und 33. Ausgang, (die
34 oder 32 brauchen ein EXOR mit 4 Eingängen). Peters Vorschlag wäre
damit machbar.
@Bri
Du hast recht, da viele Einflüsse auf die -nicht ideale- Messung
einwirken, tendiert die Verteilung in Richtung Gausskurve, allerdings
mit asymmetrischen Ausläufern. Eine einfache Transformation erzeugt
daraus wieder eine Gleichverteilung. Von der Genauigkeit, mit der die
-empirisch ermittelte- pdf bekannt ist, hängt natürlich ab, wie gut die
Forderung nach Gelichverteilung letztlich erfüllt ist.
@Peter
Das tagelange warten kann man sich sparen, wenn man den Benutzer nach
dem Start auffordert z.B. 4x kurz nacheinander eine Taste zu drücken und
aus der Zeit zwischen zwei Ereignissen jeweils 8bit bekommt. Allerdings
sind solche Verfahren manipulierbar, wenn ein "Angreifer" den Taster
mechatronisch auslöst. Selbst bei einigen MHz Zählrate.
sag ich doch, zum Beispiel mit Peters Vorschlag
> Nimm nen Pseudo-Zufallsgenerator, dessen nächster Startwert im EEPROM> abgelegt wird und der erste Startwert wird durch nen 1-Wire-Adresschip> erzeugt.
Was ist ein 1-Wire-Adresschip? Verknüpft der irgendwelche Daten aus dem
Speicher? Leute, informiert euch mal über grundlegende Zahlentheorie,
wenn ihr zu solchen Themen antwortet. Was ist an der generierten Folge
aus Peters Schieberegister zufälliger als diese 1-Wire-Adresschip-Zahl?
Entweder die 1-Wire-Adresschip-Zahl IST zufällig, dann hat ChristophK
seinen Seed, oder die ganze Schieberegisterfolge ist es auch nicht.
Christoph Kessler, bist du der OP ChrisophK?
nein, das ist ein anderer
Die 1-wire-Chips von Dallas/Maxim http://www.maxim-ic.com enthalten ab
Werk jeder eine individuelle Adresse, deshalb könnte man das als
Startwert benutzen, die ist quasi zufällig und wiederholt sich nie. Ist
auf jeden Fall weniger aufwendig als einen Geiegerzähler einzubauen. Die
eigentliche Funktion des Chips wird garnicht ausgenutzt.
Lieber Christoph Kessler,
ChristophK schrieb
>Ich suche nach einer Möglichkeit, beim Einschalten des AVR (tiny2313)>eine (32 bit) Zufallszahl zu ermitteln
Es geht nicht darum, dass jedes aufgebaute Gerät dem AVR eine neue
Seriennummer liefert, sondern dass dieser bei jedem NEUEN Einschalten
eine NEUE Zufallzahl bekommt. Ansonsten kann ChristophK beim
Programmieren des AVR ein paar mal würfeln und hat eine hervorragend
zufällige Seriennummer. Aber ich sehe schon, man könnte 2^32 Adresschips
benutzen, die nacheinander abgefragt werden.
Wie schon andere geschrieben haben, die Antworten von Christoph
Kessler&Co darf man nicht nach Inhalt, sondern nur nach Quantität
bewerten. So gesehen werten sie diese Foren ungemein auf. Warum nur habe
ich den Verdacht, dass viele Hilfesuchende besser beraten wären, wenn
Kessler&Co nur 1% ihrer Beiträge abschicken und stattdessen mal ein
kleines bisschen nachdenken, was eigentlich gefragt wurde?
... wrote:
> ... und stattdessen mal ein> kleines bisschen nachdenken, was eigentlich gefragt wurde?
Da hat sich aber jemand ganz schön in die Nesseln gesetzt.
Du bist nämlich mit Abstand bisher derjenige, der am wenigsten
nachgedacht hat.
Schon ganz richtig, daß Du anonym bleibst.
Mit einem zufälligen Startwert ist ein Pseudo-Zufall verdammt nahe am
echten Zufall.
Deshalb spielen sie ja auch eine so große Rolle in der Praxis.
Die 1Wire Chips liefern eine weltweit einmalige 48Bit-Nummer.
Die restlichen 16 Bits kann man also noch mit dem Pseudozufall exoren.
Peter
Wie gut muss die Qualität des Zufallsgenerators sein? Geht es um
kryptographische Verfahren, steht du bei allen Verfahren zunächst vor
dem Problem, erstens diese Qualität vorneweg zu beweisen, zweitens sie
im Betrieb auch langfristig sicherzustellen und zu überprüfen. Das
dürfte bei allen physikalischen Verfahren ein recht interessanter Aspekt
sein. Denn beispielsweise Verfahren, die auf Rauschen basieren, besitzen
u.U. Fehlerquellen, die, ohne dass dies im Bettieb ersichtlich ist,
irgendwann an Qualität verlieren lassen.
Auch kann relevant sein, inwiefern Beeinflussung von Aussen bedacht
werden muss. Irgendwelche thermischen- oder Antenneneffekte
beispielsweise sind darauf naturgemäss empfindlich.
Sind die Randbedingungen nicht ganz so kritisch, kann eine individuelle
Pseudozufallsfolge auch interessant sein, solange nur deren Startpunkt
individuell ist. Da käme beispielsweise eine solche in einfachem Tiny
mit permanentem Batteriebetrieb in Frage, der den Hauptcontroller bei
dessen Start mit der Seed versorgt. Dieser Tiny ist dann "ab Werk"
individuell. Das ist zwar streng genommen kein bischen zufällig, aber in
der Praxis u.U. einfacher und sicherer als analoge Verfahren.
@Peter: 1-Wire-Chips sorgen für Individualität, aber nicht für Zufall.
Die Qualität von Pseudozufallszahlen steht und fällt mit dem
Anfangswert. Ist der immer der gleiche, ist es auch die Sequenz. Wenn
dann noch ein Zusammenhang besteht, zwischen dem Einschalten des
Controllers und dem Zeitpunkt zu dem die Zufallszahl genutzt wird, hält
sich der Zufall in recht engen Grenzen.
Was dabei allerdings helfen könnte: Der interne R/C-Oszillator,
unkalibriert. Nachteil: Muss man die Qualität mathematisch erfassen,
muss man eine ziemlich Halde von Tinys durchprobieren.
Einfachste und anpruchsloseste Variante: Pseudozufallszahl mit EEPROM
als Zwischenspeicher, Startwert "ab Werk" individualisiert. Dank EEPROM
begrenzte Lebensdauer, aber 100000x dürfte oft ausreichen. Nur sollte
dann bei den Einschaltvorgängen kein zyklisches Raster drin sein.
>@Peter: 1-Wire-Chips sorgen für Individualität, aber nicht für Zufall.>Die Qualität von Pseudozufallszahlen steht und fällt mit dem>Anfangswert. Ist der immer der gleiche, ist es auch die Sequenz.
Ja, leider ist das den Christoph Ks und pedas schon zu hoch. Schade,
dass sich hier aufgrund dolcher Beiträge keine sinnvolle Diskussion
entwickeln kann.
Man man immer dieser gegenseitige aufeinader rumgehacke und wem was zu
hoch ist ... muß sowas sein?
Der Thread ersteller hat sich ja leider nicht wirklich gemeldet was er
nun wirklich haben will..
Trozallem was spricht dagegen sons Serienummerchip zu nehmen, und den
lezten Wert der ermittelt wurde im EEProm zu speichern?
Dann hat
a) jeder AVR nen anderen (zufälligen) Startwert
b) beim Einschalten wird halt der Alte wert mit der Serienummer ver XOR
und man hat eine neune Zufälligen Startwert bei jedem einschalten.
Das ist das praktikabelste es sei den irgenwas spricht dagegen weil noch
irgenwelche anderen Randbedingungen gelten müssen.
Was bringt der Seriennummerchip denn dabei? Statt dessen kannst du
genausogut jeden ausgelieferten Controller am Werk mit einem
individuellen Startwert im EEPROM ausstatten. Und eine dafür brauchbare
Quelle liefert jedes Linux als /dev/random.
Zum Thema Seriennummer sowie Zufallsgenerator.
Fast jeder Kontroller, der Ausgeliefert wird, hat eine
Produkt-ID, eine Seriennummer, sowie eine Zufallszahl (seed).
Die Produkt-ID ist dafür da, um den Seed bei Produktautentifizierungen
zu machen, um sich ev. gegenseitig zu authentisieren. Weiters wird sie
Für Updates usw. gebraucht. Die Seriennummer hat gewisse Funktionalität
bez. timeoutzeiten, usw. Sie wird einfach als datum, zeit,prod_id,rand
zusammengesetzt und ist garantiert eindeutig, wobei man daraus auch
hashes und CRC für übdates und verschiedene Features rausholt.
Hinzu kommen noch einige bytes error-correction code sowie checksum.
Die Produkt-ID ist teil der 32bit Seriennummer, hat aber eine gesonderte
Behandlung. Weiters hat jeder Kontroller einen eigenen 32bit Seed für
einen
den randomgenerator. Bei den meisten Systemen reicht es aus, durch
externes
timing, wie startwert des Timers, oder timeout des WDT beim start, oder
...
usw eine 8-12 bit zahl rauszubekommen, die einfach die iterazionen sowie
einen kleinen Teil des seeds ausmachen, also z.b.
bei Starten checksum über Ram machen, der mit einem hardcodeten init
(getestet,verifiziert) startet, nicht mit 0, das ist meistens fatal.
Dann lass diesen 8bit checksum den random timer x mal laufen,
welcher zuvor mit der 32bit seed initialisiert wurde.
wenn er fertig ist, nimm noch einen timer, der irgenwo vor sich hinläuft
und extrahiere da auch eine 8bit zahl. Nun hast du einen hardcodeten
seed,
einen generierten, normalerweise 16bit, den du dann mit den zwei 8bit
werten
und ein bisschen mischen von bits, ev mit einigen xor iterationen des
bereits x-mal durchgelaufenen random algorithm und dann hast du eine
neue Seed, die bei jedem Start anders ist, ohne eeprom.
Damit hast du im Prinzip drei Seeds, die Serial-number, die
Random-number,
sowie die generierte. Du kannst sie dann abwechselnd nehmen, oder auch
z.b. mit bestimmten events das Random iterieren, um keine Sequenz zu
generieren. Der Grund des Random-numer, zusätzlich zur Produktnumber
ist,
daß diese Geheim ist, d.h. nur der Hersteller kennt die Assotiation
zwischen Random und Seriennummer, sodaß sichere Authentifizierungen für
Features usw. gemacht werden können, ohne Probleme zu haben, wenn die
Nummer bekannt werden, sowie daß jedes Gerät eine von einem HW-RNG
erzeugten Seed, welche zuvor auf Statistische Verteilung getestet wurde,
hat. Viele PC Motherboards haben HW-RNG. Auch kann keiner dann mit
hilfe der Seriennummer den Seed errechnen.
Ich hatte Peters Vorschlag genau so verstanden, wie es jetzt nochmal
vorgeschlagen wurde: Der allererste Wert wird irgendwoher genommen, ob
1-wire-Chip oder Linux random völlig egal, und dann speichert der AVR
öfters mal eine der ständig neu erzeugten Pseudozufallszahlen im EEPROM
ab, um die zuletzt vor dem Ausschalten abgespeicherte als Startwert beim
nächsten Einschalten zu benutzen.
Was noch stört: das Schieberegister hat zwar 33 Bit, aber
aufeinanderfolgende Werte sind ja um je eine Stelle verschoben die alte
Zahl, also wirklich neu ist erst jede 32. Zahl
Die Random Funktion hat nichts mit 32bit schieberegister zu tun, wo
nur ein paar stellen verschoben werden. (im weitesten sinne, bestimmt
aber nicht so einfach wi oben fälschlicherweise angedeutet.)
Ein beispiel unten:
Weiters ist, wenn du dauernd seed wechselst, die Funktion garantiert
nicht
mehr random, sondern richtig Vorhersehbar. !!! Teste es mal.
Das einzige, was man tun kann, ist die Sequenz ein paar mal intern zu
erhöhen, oder mehrere Randoms gleichzeitig zu verwenden, und
intervallieren, sodaß die Sequenz nicht mehr ersichtlich wird, muß dann
aber auch getestet werden usw.
[C]
static long s1 = 1;
static long s2 = 1;
#define MODMULT(a, b, c, m, s) q = s/a; s = b*(s-a*q)-c*q; if (s < 0) s
+= m;
double combinedLCG(void)
{
long q, z;
MODMULT(53668, 40014, 12211, 2147483563L, s1)
MODMULT(52774, 40692, 3791, 2147483399L, s2)
z = s1 - s2;
if (z < 1)
z += 2147483562;
return z * 4.656613e-10;
}
void initLCG(long init_s1, long init_s2)
{
s1 = init_s1;
s2 = init_s2;
}
[/]
Ich stimme Peter voll zu und verstehe das Problem nicht warum alles so
kompliziert gesehen wird.
Wenn man 2 Shiftregister benutzt dann muß man nur beim Reset des AVRs
einen Seed aus dem EEPROM laden. Mit diesem Seed wird 1. LFSR gestartet
und dann mit diesem ein neuer Seed berechnet. Dieser ersetzt den alten
im EEPROM.
Jetzt hat man schonmal eine Pseudo-Zufallsfolge die sich bei jedem Reset
des AVRs kontinuierlich entwickelt. Das ist normalerweise exakt die
gleiche Sequenz die sich ergeben würde wenn man diesen LFSR nur einmalig
initialisiert und dann ständig neue Werte sequientiell erzeugt.
Ein zweiter LFSR mit einem anderen Polynom als der erste wird nun mit
diesem Seed gefüttert und produziert den Zufall für den laufenden
Betrieb.
Das ganze Vorgehen hat nur Vorteile gegenüber jeder Hardware Lösung:
1.) es ist mathematisch beweisbar
2.) es ist mit bekannten Seed / Polynomen reproduzierbar, und damit
letztendlich auch technisch beweisbar Verfahrenssicher
3.) die Komplexität der Seeds/Polynome/math. Verfahren kann fast
beliebig erhöht werden, auf alle Fälle so enorm hoch das bei unbekannten
Parametern der erzeugte Zufallsstrom nicht mehr von echten Zufall zu
unterscheiden ist. Das bedeutet es wird kryptographisch sicher.
Ein HW RNG hat immer ein gewaltiges Problem, man kann nicht die
Startparameter beeinflussen noch kennt man diese. Das bedeutet mit einem
HW RNG können wir keine exakt gleiche Sequenz von Zufall erzeugen. Wir
können also Nichts real reproduzieren, noch das Verfahren auf andere
Medien übertragen um es als korrekt zu verifizieren.
Es ist also ein leichtes eine einfache Behauptung aufzustellen: "Beweise
mir das dein HW RNG, der auf einer Diode/Radioaktivem Zerfall oder
sonstwas basiert, wirklich Zufall produziert !" Diese Frage kann man mit
einem HW RNG nicht mathematisch sicher beantworten, weil ein HW RNG
nicht reproduzierbaren Zufall erzeugt.
Bei einem guten Pseudo-RNG ist das aber enorm einfach. Man kennt die
Formel, man kennt die benutzten Seeds und schwups kann man das auf einem
AVR, auf dem PC, mit einem Taschenrechner, auf dem Blatt Papier oder
sogar im Kopf nachrechnen. Es würde bei allen Wegen immer das gleiche
Resultat rauskommen. Ergo: es entsteht Verfahrenssicherheit weil wir
alles reproduzieren können und auf alle Parameter Einfluß nehmen können.
Die Frage ob man nun als Aussenstehender nun in der Lage ist aus dem
Zufallstrom irgendwas "Pseudo-zufälliges" zu erkennen, also ob der
Zufall nicht wirklich zufällig ist, kann man nun per purer Mathematik
und den Parametern wie Seeds, Polynome, Verfahren und Zahlenbereiche
vorrausberechnen. Dh. mit entsprechend gut gewählten Parametern kann man
einen Pseudozufall nicht mehr von echtem Zufall unterscheiden !
Gruß Hagen
>Ein HW RNG hat immer ein gewaltiges Problem, man kann nicht die>Startparameter beeinflussen noch kennt man diese. Das bedeutet mit einem>HW RNG können wir keine exakt gleiche Sequenz von Zufall erzeugen.
Wenn du mit HN RWG echte Zufallszahlengeneratoren (basierend auf z.B.
radioaktivem Zerfall wie von '...' angedeutet) meinst, so sind genau die
eben zufällig! Weiters sind Generatoren wie von dir erwähnt, die
reproduzierbare Folgen erzeugen, kein bißchen zufällig. Weiters hat ein
Angreifer mit einer einzigen solchen Zufallszahl oder einem daraus
generierten verschlüsselten Textsegment jegliche Verschlüsselung in
deinem System ohne jedwede Anstrengung zunichte gemacht.
>Wir können also Nichts real reproduzieren,
Weiters hast du ein Realitätsproblem. Weiters gehörst du sicher zu den
Leuten, die, falls die Welt nicht die modellierte Klimakatastrophe
mitmacht, der Meinung ist, dass mit der Welt etwas nicht stimmt.
Physikalisch zufällige Prozesse sind zufällig! Natürlich kann man dies
nicht beweisen, sonst gäbe es in der Quantenmechanik nicht die Theorie
der versteckten Parameter. Weiters kannst du aich die
Schieberegisterzufälligkeit nur für Spielzeugfolgen beweisen, indem du
die ganze Folge durchrödelst. Weiters siehst du alt aus, wenn du z.B. 10
Jahre lang jede Nanosekunde eine neue Zufallszahl brauchst, einen
solchen Generator wirst du kaum in weniger als 10 Jahren "mathematisch
beweisen können".
Weiters finde ich das Wort weiters ziemlich furchtbar, vor allem, wenn
jemand sich angewöhnt, es alle 1-2 Sätze irgendwo einzuwerfen.
Fra ncisca
>>Wenn du mit HN RWG echte Zufallszahlengeneratoren (basierend auf z.B.>>radioaktivem Zerfall wie von '...' angedeutet) meinst, so sind genau die>>eben zufällig!
Ja, auf diese Aussage habe ich schon gewartet ;)
Dann beweise das doch mal !
Und bitte beweise mir das der Zufall den wir mit einer noch zu
vereinbarenden Hardware zu einem bestimmmten Zeitpunkt erzeugt haben
auch wirklich Zufall war !
Du machst da nämlich einen Denkfehler. Echter Zufall ist nur deshalb
echter Zufall weil wir annehmen das die zugrunde liegenden physkalischen
Prozesse für niemenden reproduzierar sind. Weil wir zb. nich die
Startparameter die beim Urknall vorlagen oder eben die dahinterliegenden
Prozesse nicht exakt kennen. Desweiteren nehmen wir einfach an das wir
das alles auch in Zukunft nicht kennen könen. Also alles Annahmen,
Vermutungen aber keinerlei wirkliche Beweise -> Wissen.
Ich kann dir aber beweisen das ich mit einem einfachen Feuerzeug an zb.
deiner Diode die ein Zufallsrauschen erzeugt physikalisch die
Eigenschaften dieses Zufalls direkt beeinflussen und manipulieren kann.
Kannst du mit deiner Hardware nun wirklich sicherstellen das zu jedem
Zeitpunkt mit jeder Kopie deines Gerätes auch wirklich Zufall produziert
wird ? Nein, kannst du nicht. Du wirst also immer noch mathematische
Verfahren hintendrab setzen, um zb. die Entropie des Zufalls zu
verbesseren, um ihn mathem. beweisbar sicher zu machen wirst du eine
kypto. Hashfunktion hintendran setzten. Und vielleicht wirst du dir dann
sagen, wozu die fu..ing Hardware noch wenn ich gleich einen sehr guten
Pseudo-RNG benutzen kann der bei für den Benutzer unbekannten
Startwerten eine Zahlenfolge erzeugt die mathematisch/statistisch
betrachtet exakt identisch zu echten Zufall ist. Zumindestens aus der
begrenzten Sichtweise und Lebenszeit der Menschheit betrachtet ?
Gruß Hagen
>>Weiters hat ein>>Angreifer mit einer einzigen solchen Zufallszahl oder einem daraus>>generierten verschlüsselten Textsegment jegliche Verschlüsselung in>>deinem System ohne jedwede Anstrengung zunichte gemacht.
dummes Gelaber. Sehr viele kryptographische Verfahren besieren heute auf
Stromverschlüsselungen. Das sind nichts anderes als
Pseudo-Zufallsgeneratoren. Diese wurden mathematisch bewiesen als sicher
eingestuft, eben weil es praktisch nicht möglich ist deren Zufallsfolgen
vorherzusagen. Logisch, sonst wären sie ja sinnlos in der Kryptographie.
Du widersprichst mit deiner Aussage der heutigen Lehrmeinung und dem
annerkannten Wissen der Mathematik.
Denken wir mal so wie du weiter !
Wir müssen also echten Zufall benutzen um Nachrichten sicher zu
schützen. Ähm, echter Zufall ist nicht reproduzierbar. Wie willst du
dann die Schlüssel erzeugen, sie sicher im Netz übertragen, sie
ebenfalls sicher schützen ohne Sicherheitsverlust ? Komme mir nicht mit
dem OTP -> One Time Pad. Ja, das ist das mathematisch bewiesenermaßen
sicherste Verfahren und basiert auf echten Zufallsschlüsseln. Allerdings
absolut unpraktiabel, eben auf Grund der Schlüsselverteilung.
Wird damit zwar leicht OffTopic, allerdings zeigt dies sehr schön einen
wichtigen Sachverhalt. Ich diskutiere hier nicht über philosophische
Dinge, so wie du, sondern schlage praktisch realiserbare, praktisch
verifizierbare und reproduzierbare Methoden vor, die zusätzlich noch
einfach in Software zu lösen sind. Jeder Programmierer kann diese
umsetzen und leicht verifizieren indem er sie auf anderer Hardware mit
identischen Verfahren und gleichen Startbedinungen reproduzieren kann.
Das ist das was du jeden Tag machst: Wenn irgendwas mehrmals
funktioniert dann hast du irgendwas reproduziert, wiederholt und somit
eine Verfahrenssicherheit. Wir diskutieren also nicht mehr nur über den
Zufallsgenerator, sondern auch über dessen Implementierung, Testphase
und dem Beweis das das auch immer sauber funktioniert.
Der einzigste Unterschied zwischem "echten/natürlichem" Zufall und
künstlich produziertem besteht darin ob wir die benutzten Seeds kennen
oder in Zukunft eventuell kennen könnten.
Würden wir theoretisch betrachtet alle Ereignisse im Universum seit dem
Urknall wissen so würden wir auch deinen echten Zufall reproduzieren
können. Vorrausgesetzt unser System "Universum" ist insich absolut
geschlossen. Wovon fast alle Wissenschaftler ausgehen. In diesem Moment
wäre dein achso echter Zufall absolut identisch zu Pseudo-Zufall.
Der Vorteil besteht darin das wir bei Pseudo-Zufall alle Eigenschaften
des Systemes kennen und mathematisch beweisen können. Auch logisch, da
alle diese Generatoren reine Gebilde der Mathematik sind, also von
Menschen in allen Einzelheiten erdacht wurden. In der Physik sind wir
quasi nur Beobachter und haben nur die Chance hinter die Zusammenhänge
per Beobachtung zu kommen. Und das ist auch der Grund warum wir an
Grenzen stoßen müssen wie die Heisenbergsche Unschärfe Relation oder auf
Quanteneffekte. Aus diesem "Unwissen" heraus und der "Vermutung" das es
kein Lebewesen jemals schaffen könnte mehr Erkenntniss zu erlangen als
wir selber, könen wir behaupten das echter Zufall nicht reproduzierbar,
also berechnenbar sein wird. Diese Annahme ist unbewiesen und sehr naiv,
ergo: HW-RNG stützen sich im Grunde auf Halbwissen. Jede Erkentiss mehr
die wir in der Physik erlangen wird also auch dazu führen das immer mehr
HW-RNG-Typen quasi vorhersagbar oder zumindestens ungeeignet werden. Das
kann bei auf purer Mathematik basierenden und einmal bewiesenen
Pseudo-RNGs nur in einem Falle eintreten: nämlich wenn man grundlegende
Axiome unserer Mathematik widerlegen würde. Das bedeutet dann aber auch
das fast immer die gesammte Mathematik zusammenbrcht wie ein Kartenhaus.
Das ist in den letzten Jahrunderten der Mathematik meines Erachtens
nicht eingetreten.
Gruß Hagen
Ja die reine Mathematik mit ihren sauberen Modellen ist viel präziser
als die reale Welt mit ihren Dreckeffekten.
Ich bezweifle wie gesagt, dass der Geigerzähler gleichverteilte Zahlen
liefert, weil zum Beispiel die Röhre nach einem Ereignis für ein paar
Mikrosekunden "blind" ist, deshalb werden diese kleinen Zahlen nicht
vorkommen.
Ein hochempfindliches Mikrophon mit Verstärkungsfaktor um die 100000 und
dann schmitttriggern und damit einen Interrupt triggern und die
zeitlichen Abstände nutzen (50Hz unbedingt wegfiltern). Die Ergebnisse
werden vll Ähnlichkeiten aufweisen aber ganz klar nie gleich sein..
Alternativ eignet sich das Rauschen eines Transistors dafür, dann kann
man evtl. auf den 50Hz filter verzichten.
MfG,
Markus
Nein nein, der ChristophK bin ich :)
Nicht Christoph Kessler.
Das mit dem Hochzaehlen hatte ich ja schon erwaehnt, dass das nicht so
einfach geht. (Dauer). Aber wie waer's denn, wenn ich 4 bytes
nacheinander bis 256 zaehlen lasse. Das ginge ja viel schneller. Also
reduziert sich das Problem doch schon mal auf die Forderung, eine
moeglichst gleichverteilte 8-bit Zufallszahl zu generieren. (wobei der
zeitl. Zwischenraum zwischen den 4 Einzelermittlungen natuerlich
unkorreliert sein sollte.
Christoph
Die vier Byte müssen dann aber von vier statistisch voneinander
unabhängigen Ereignissen stammen, wenn derselbe Timer oder was auchimmer
sie auslöst sind sie nicht unabhängig
da hatte oben schon ... verspottet:
> Holzi sagt bestimmt gleich, dann lassen wir eben einen zweiten Zähler> mit der halben Frequenz laufen und haben zwei unabhängige 16-Bit Zahlen> in Bruchteilen einer Sekunde...
Bei Kryptographie gibt es keine Alternative zu ECHTEN Zufallszahlen.
Egal wie toll euer PRNG-Algorithmus ist, wo 32 Bit Entropie reingehen,
da kommen maximal 32 Bit Entropie raus, und das ist nicht ausreichend um
einen Schlüssel zu erzeugen oder einen Stromchiffre-Generator zu
initialisieren.
Geigerzähler: dass man nicht die Zeit zwischen zwei Impulsen einfach als
Zufallszahl nehmen kann ist offensichtlich. Aber wenn zwischen den
Impulsen in der Größenordnung von 100.000 Zählschritte vergehen und man
das modulo 2 nimmt sieht die Sache schon anders aus.
Hallo Andreas,
Sind die Impulse eines Geigerzählers wenigstens gleichverteilt? Mir
scheint es doch extrem selten, dass sie z.B. mal eine ganze Minute
ausbleiben, während Abstände in Sekunden normal sind. Rein gefühlsmäßig
würde ich auf eine irgendwie (asymetrisch) glockenförmige Kurve tippen.
Das weiße Rauschen ist ja auch Fiktion, jedes natürliche Rauschen geht
zu hohen Frequenzen hin gegen Null
> Die vier Byte müssen dann aber von vier statistisch voneinander> unabhängigen Ereignissen stammen, wenn derselbe Timer oder was auchimmer> sie auslöst sind sie nicht unabhängig
Entschuldige, das schrieb ich doch (Ausrufezeichen) (Nichtkorreliertheit
zwischen den Einzelmessungen).
Christoph (K)
Wie die Zeit zwischen dem Impulsen verteilt ist - keine Ahnung, aber
wenn man mit hoher Auflösung zählt und nur ein paar Bit von jedem
Zählwert verwendet spielt das ja kaum eine Rolle.
Ein GM-Zählrohr ist Gott sei dank kein Zufallsgenerator, sondern ist und
bleibt ein Sensor zum detektieren von Radioaktiver Strahlung. Da die
natürliche Hintergrundstrahlung in Deutschland um den Faktor 1000
Schwanken kann ist klar, das du damit unterschiedliche Ergebnisse an
unterschiedlichen Orten bekommen würdest. Einfaches Beispiel auf einem
Berg hast du immer erhöhte Höhenstrahlung. Dazu kommen natürliche
Schwankungen (Sonnenaktivität etc.). Neben der von Christop
beschriebenen Totzeit haben GM Zählrohre auch einen Eigeneffekt - also
Impulse deren Ursache nicht in ionisierender Strahlung liegt. Dieser
wird in der Regel vom Hersteller angegeben. Ich vermute das zur
„Labormäßigen Zufallsgenerierung“ der Zerfall eines einzelnen Isotops
(definierter Masse) verwendet wird der entweder die Hintergrundstrahlung
deutlich überlagert, oder besser noch das nur die Strahlung dieses
bestimmten Isotops ausgewertet wird. Mit entsprechender Laborausrüstung
ist das kein Problem da der Energiebereich der Strahlung dem Isotop
zugeordnet werden kann (siehe Gamma-Spektroskopie). In wieweit das dem
eigentlich Fragendem oder sonst jemandem hier nützt wage ich zu
bezweifeln – aber diese Diskussion ist ja ohnehin schon längs in Theorie
und .... abgeglitten.
Gruß
Danke für die Aufklärung. Ist also nicht so einfach mit dem
naturbelassenen Zufall. Auch das niedrigste Bit eines ADC halte ich
nicht für zufällig genug, das kann gut zu einer Seite hin tendieren. Der
Vorschlag von Andreas klingt aber gut, irgendwelche (mittlere? das
modulo2 hab ich nicht verstanden) Bits aus so einer nicht idealen
naturerzeugten Zahl zu benutzen.
Man muss generell so vorgehen, daß man eine Eingangsgöße findet, die zu
einem gleichverteilten (= 50:50) Fall führt und diesen entsprecht oft
aufsummiert. Nimmt man z.B. Speicherinhalte her, so kann man diese
aufsummieren und auf gerade/ungerade prüfen. Um es sicher zu machen,
invertiert man jede zweite Adresse, damit sich keine Pegel-Präferenzen
durchsetzen. Somit hat man nach dem Ersten Durchlauf zunmindest ein bit,
das zu 100% zufällig ist und 50:50 links und rechts liegt. Nun summiert
man mehrere solcher Einheiten auf (z.B. 10.000 Werte) um eine
Normalverteilung um (10.000 x 0,5) = 5000 zu erhalten. Dies führ man
zweimal parallel durch, bildet die Differenz und hat einen extrem
empfindlichen Wert, der durch Weglassen der oberen Hälfte der Bits
limitiert wird. Dies sorgt indirekt dafür, daß man dieselbe Architketur
erhält wie bei einem exhten Zufallszähler, der genügend häufig hat
überlaufen können (8 Bits , 256 x übergelaufen, sodaß Gleichverteilung
herrscht). Der Zähler besteht nur hier aus dunteren Bits - der Überlauf
sind die oberen Bis.
Die unteren Bits, bringen wie gesagt, die gleichverteilte Zufallszahl ->
hier wäre es wegen ca 4096 -> 12/2 = 6 Bits. Mit mehreren solcher
Architekturen erhält man dann 12,18 etc Bits.
>>Bei Kryptographie gibt es keine Alternative zu ECHTEN Zufallszahlen.
Falsch. Es gibt keine Alternative zu Pseudo-RNGs. Denn Kryptographie
muss sich sicher sein und das geht nur mit Dingen die man zu 100%
mathematisch als sicher beweisen kann.
>>Egal wie toll euer PRNG-Algorithmus ist, wo 32 Bit Entropie reingehen,>>da kommen maximal 32 Bit Entropie raus, und das ist nicht ausreichend um>>einen Schlüssel zu erzeugen oder einen Stromchiffre-Generator zu>>initialisieren.
Stimmmt absolut, aber wer redet davon das ein 32Bit RNG kryptographisch
sicher ist ? Vergleicht man Soft-RNGs mit HW-RNGs so vereinfacht man
erstmal diese Analyse indem man davon ausgeht das beide Verfahren die
gleiche mathematische Komplexität besitzen, also NP-vollständige
Probleme darstellen. Der einzigste Unterschied in der Sicherheit besteht
dann darin das man die Startparameter kennt oder nicht. Das Wissen um
diese Startparameter bei Soft-RNGs macht diese dann sicherer. Denn je
nach Verteilung dieser Startparameter == Schlüsselverteilung gibt es
Personenkreise die diesen RNG quasi reproduzieren können und andere die
es mathematisch beweisbar nicht können. RNGs stellen in der
Kryptographie eine Algortihmenklassse dar die die gleichen Anforderungen
erfüllen muß wie zb. symmetrische/asymmetrische Verschlüsselungen oder
die Einweg-Algorithmen. Bei allen diesen Verfahren konstruiert man
immmer eine Funktion=Formel die mit einem Geheimnis direkt berechnenbar
sind, aber ohne dieses nicht mehr praktikabel invertierbar sein dürfen.
Die Schranken ab wann nun ein solches Verfahren sicher sein muß
definieren sich dann im Aufwand,technologisch wie auch zeitlich, um eine
Invertierung ohne Startparameter hinzubekommen. Das Mittel um diese
Schranken hochzusetzen ist die Schlüsselgröße in Bits und die
Verarbeitungsbreite in Bits intern im Algorithmus, sprich die
Zahlengrößen mit dennen man rechnen muß.
Und da sind 32 Bit bei weitem nicht ausreichend. Das trifft aber auch
auf einen HW-RNG zu. Denn wenn ich mit diesem nur 32Bit Passwörter
erzeuge dann sind diese ebenfalls nicht vor Brute Force Attacken sicher.
Das bedeutet das das nachfolgende Prozessing solcher Schlüssel ebenfalls
minimal 128 Bit breit sein muß. Wenn dies insich schon notwendig ist so
kann man auch einen Soft-RNG mit 128 Bit Komplexität benutzen und
erreicht eine höhere Sicherheit als mit einem HW-RNG, da wir nun exakte
Beweise durchführen können.
Es geht also garnicht darum ob ein HW-RNG sicherer wäre, als Quelle von
Zufall, sondern es geht darum bei welchem der uns zur Verfügung
stehenden Verfahren können wir am meisten beeinflussen, wissen wir am
meisten und können mit dem geringsten Aufwand das System als wirklich
sicher beweisen.
Kryptographie ist also eine Wissenschaft die versucht mathematisch
beweisbare unfaire Systeme zu konstruieren, der Geheimnisträger bestimmt
was der Nicht-Geheimnissträger machen kann, und das muß absolut
beweisbar unknackbar sein.
Kryptographie ist pure Mathematik, und jede Benutzung von nicht
eindeutig beweisbaren Mitteln (eben aus der Physik) macht einen echten
mathem. Beweis zur Sicherheit des Systemes unmöglich.
Ich rede hier also nicht mehr davon welcher Zufall der beste als
Verfahren sein sollte, sondern wie man vorgehen muß, in seiner logischen
Argumentation, wenn man ein sicheres System konstruieren und beweisen
muß. Und HW-RNGs machen angewendet in der Kryptographie alle
nachflogenden Bemühungen von vornherein zu nichte da sie eine Variable
in das System einschleusen die nicht mehr im Rahmen der Kryptographie
beweisbar ist.
Bricht man dieses Wissen nun runter so ergibt sich:
1.) es gibt RNGs in Software die statistisch betrachtet genausoguten
Zufall produzieren wie echte RNGs.
2.) es gibt RNGs die wir als Menschen konstruiert haben und die durch
schlaue Köpfe per math. Beweisen und Analysen als sehr gut eingestuft
sind, bzw. gleichguten Zufall erzeugen
3.) es gibt RNGs die reproduzierbare Ergebnisse liefern können.
Also warum zum Teufel, frage ich mich, sollte man noch HW-RNGs benutzen
wenn man mit Pseudo-RNGs das gleiche Resultat viel besser erreichen kann
?
Die Antwort: weil bei gleicher Komplexität der Verfahren aus unserem
heutigen Wissenstand heraus wir
a.) eine MCU benötigen die mit unendlich großen Zahlen rechnen können
muß, wenn wir Soft-RNGs benutzen wollen
b.) eine simple Diode als HW-RNG eine NP-vollständige Zufallsfolge
erzeugen kann ohne das wir eine MCU benötigen die selber NP-vollständige
Probleme berechnen kann (was es ja praktisch nicht geben kann).
Stellt sich nur die Frage warum benötigt man so guten Zufall ?
Für einen stinknormalen elektronischen Würfel, für ein Game auf dem AVR
benötigt man sowas nicht. Da reichen 32 Bit Komplexität egal ob Software
oder Hardware vollkommen aus. Aber wir benötigen nach Möglichkeit ein
Verfahren das zu Testzwecken immer die gleichen Zufallsfolgen erzeugen
kann, einfach um eine reproduzierbare Simulation unserer Software
durchführen zu können. Und das geht mit HW-RNGs nicht.
Per logischer Analyse kann man also feststellen das man fast nie echten
Zufall benötigt, sondern ganz andere Anforderungen viel mehr ins Gewicht
fallen.
Einen echten (physikalsichen) Zufall benötigt man nur zwingend in
physikalischen Prozessen/Experimenten die die gleiche Eigenschaften
haben müssen wie das Untersuchungsobjekt. Also eigentlich nur bei der
Untersuchung von physikalischen Prozessen. Dort ist ein Pseudo-RNG fehl
am Platz. Aber ansonsten ?!?
Gruß Hagen
Ich versuche einfach nicht mehr, dich zu überzeugen, dass nur
physikalische Zufallsgeneratoren zuverlässig für kryptographische Zwecke
sind. Es wäre aber auch wünschenswert, dass du dein Zehntelwissen
(Halbwissen wäre übertrieben) nicht duch Wiederholung als fundiert
darzustellen versuchst.
>1.) es gibt RNGs in Software die statistisch betrachtet genausoguten>Zufall produzieren wie echte RNGs.
KEINE der RNGs mit logischen Verknüpfungen wurde als zuverlässig
"bewiesen". Sie werden nur nach und nach mittels ICA (Independent
Component Analysis, Verallgemeinerung der Hauptkomponentenanalyse)
falsifiziert.
>2.) es gibt RNGs die wir als Menschen konstruiert haben und die durch>schlaue Köpfe per math. Beweisen und Analysen als sehr gut eingestuft>sind, bzw. gleichguten Zufall erzeugen
Nein. Oder basieren diese Beweise auch auf oft genug wiederholten
Behauptungen?
>3.) es gibt RNGs die reproduzierbare Ergebnisse liefern können.
Ja. Z.B. x(i+1)=x(i). Nicht optimale Zufallseigenschaften, aber gut
reproduzierbar. Vorausgesetzt man kennt den Startwert. Aber da der ja so
schwer herauszufinden ist, wäre dies soch ein guter Kandidat für deine
Kryptographie. Mannomann.
@ ... (Gast)
Informiere dich bitte über
- BBS-RNG, Blum Blum Shub Generator oder auf deutsch den Quadratischen
Reste Generator
- den Micalli Schnorr Generator
beides sind zahlentheoretische Pseudo Zufallsgeneratoren die mathem.
bewiesen wurden, vollständig wohlgemerkt. Natürlich sind es nur die
bekanntesten Vertreter kryptographisch relevanter PRNGs. Ein andere sehr
guter Vorschlag stammt von B.Schneier und heist YARROW, dieser benutzt
Hashfunktionen.
Im Gegensatz zu dir versuche ich nämlich nicht durch argumentative
Tricks eine grundsätzlich falsche Meinung richtiger darzustellen.
Wir reden von der allgemeinen Klasse der Pseudo Zufallsgeneratoren, und
wenn du nur die "KEINE der RNGs mit logischen Verknüpfungen.." als
einzigste Klasse von solchen Generatoren kennst, ausgerechnet diejenige
Gruppe der PRNGs die schon immer nur Krücken waren, dann ist das ein
stark begrenztes Sichtfeld.
Ein guter, und auch mit begrenztem Wissen begreifbarer, Einstieg in zb.
den BBS Generator ist das Buch
"Angewandte Kryptographie" von B.Schneier ISBN 3-89319-854-7
weitergehend und tiefgreifender behandlen
"Handbook of applied Cryptography", Menezes, van Oorschot, Vanstone ISBN
0-8493-8523-7
"A Course in Computational Algebraic Number Theory", Henri Cohen, ISBN
0-387-55640-0
die Theorie. Die letzteren beiden sind leider nur in englisch verfügbar.
Ansonsten kann ich auch noch ne Menge PostScripts mit zb. Dissertationen
und akademsichen Abhandlungen zur Verfügung stellen. Diese sind meist
wesentlich moderner und neueste Forschungsergebnisse, allerdings immer
englisch und natürlich nur noch mit mathm. Kenntnissen verständlich.
Gruß Hagen
PS: auch in D.Kuth's Standardwerk kann man einiges nachlesen. Alledings
bekommt man dieses nur noch beim Trödler. Die deutsche Übersetzung vom
Kapitel "Arithmetics" gibts aber noch. ISBN 3-540-66745-8
Hagen,
kann man die von Dir genannten Generatoren in einem einfachen
Mikrocontroller unterbringen, wie die Anfangsfrage ja war, oder ist der
Speicherbedarf oder Rechenaufwand zu groß?
Beachtlicher Umgangston, wenn professionelle Besserwisser
aufeinanderstoßen ... ;-)
Ohne es den Kontrahenten gleichtun zu wollen, nur folgendes zur
Richtigstellung:
1. "HW-RNG stützen sich im Grunde auf Halbwissen." Es ist ein
verbreiteter Irrtum (eher: Wunschdenken), dass der "Zufall" der
Quantenphysik nur vorläufigen Charakter hat, bis neuere Erkenntnisse ihn
erklären bzw. bis die vollständigen Eingangsparameter bekannt sind. Aber
in Wirklichkeit ist es Konsens, dass dieser "Zufall" physikalisches
Prinzip ist, dass Qunanteneffekte unabhängig vom zur Verfügung stehenden
Wissen nicht voraussagbar sein können. Dessen ist man sich so sicher,
dass man es für Quantenverschlüsselungsverfahren einsetzt. Kommt bei
schnöden physikalischen Zufallszahlengeneratoren aber ebenso zum Einsatz
(wenn sie denn auf diese Prinzipien aufsetzen) und das lässt sich dort
auch mathematisch/physikalisch beweisen.
2. Weder physikalische noch mathematische Zufallszahlengeneratoren
liegen "ab Werk" in einer Form vor, wie man sie z.B. für
kryptographische Verfahren benötigt. In beiden Fällen werden die
Ausgangsdaten des RNG noch mathematisch behandelt, um die benötigte
Zufallsverteilung zu erhalten. Eher absurd, hier das eine Verfahren
gegen das andere ausspielen zu wollen.
3. Kein kryptographisches Verfahren wurde durch zu schwache
physikalische Zufallsquellen geknackt (etwa, weil jemand raffinierte
physiologische Erkenntnisse über den zeitlichen Abstand zweier
Tastendrücke gewonnen hätte, die zur Seed-Bildung in Kryptosoftware
benutzt worden wäre. Sondern, weil mathematische Verfahren in der
Kryptographie eben doch nicht mathematisch bewiesen unumkehrbar sind.
Während niemand ernsthaft mit dem Zusammenbruch der Quantenphysik durch
neue Erkenntnisse rechnet, kann man nicht ausschließen, dass neue
Erkenntnisse über Primazahleigenschaften nicht plötzlich große Teile des
Standes der Technik in der Kryptographie obsolet machen.
Also: die Diskussion um die Beschaffenheit des RNG geht am eigentlichen
Problem vorbei. Sowohl für physikalische wie für numerische Verfahren
stehen jeweils beweisbar sichere Quellen zur Verfügung. Klar haben
numerische Verfahren einen Vorteil durch die Reproduzierbarkeit und
physikalische durch die einfachere Realisierbarkeit am µC, aber für
einen Glaubenskrieg unter selbsternannten Sicherheitsexperten taugt das
absolut nicht.
>3. Kein kryptographisches Verfahren wurde durch zu schwache>physikalische Zufallsquellen geknackt (etwa, weil jemand raffinierte>physiologische Erkenntnisse über den zeitlichen Abstand zweier>Tastendrücke gewonnen hätte,
Solche Verfahren wurden vermutlich nicht geknackt, weil sie nie
ernsthaft eingesetzt wurden.
>Sondern, weil mathematische Verfahren in der>Kryptographie eben doch nicht mathematisch bewiesen unumkehrbar sind.
Wie z.B. die WEP-Verschlüsselung? Wurde je bahauptet, dass die sicher
wäre?
>Während niemand ernsthaft mit dem Zusammenbruch der Quantenphysik durch>neue Erkenntnisse rechnet, kann man nicht ausschließen, dass neue>Erkenntnisse über Primazahleigenschaften nicht plötzlich große Teile des>Standes der Technik in der Kryptographie obsolet machen.
Dafür braucht es keine neuen Erkenntnisse über Primazahleigenschaften,
sondern ein einfacher 1000-Qubit-Quantencomputer (wenn es ihn denn in
ein paar Jahrzehnten gibt) entschlüsselt jeden RSA-Schlüssel in
Nullkommanichts.
@ Christoph:
ja kann man und wird sogar auch. Du kannst im Grunde jeden guten
Verschlüsselungsalgo. in einen RNG umwandeln, zb. AES. Oder du benutzt
wie beim YARROW eine Hashfunktion. Jede Crypto Karte kann dies, zb. die
alten BasicCards basierten auf 8Bit-AVRs.
@ Kragenplatzer (Gast)
Frage: Wie entstehen die zufälligen Quanteneffekte ? Laut meinem Wissen
entstehen sie weil der Zusammenhang zwischen "Ursache und Wirkung" also
die Kausalität für einen Beobachter nicht mehr gilt. Das heist man kommt
an eine Grenze in der quasi die Physik unscharf wird. Aber bisher wurde
eben nur bewiesen das unsere Möglichkeit der Beobachtung unscharf wird,
wir sehen also aus unserem Blickwinkel heraus nur das sich unsere
gewohnte Physik auflösst. Das heist aber noch lange nicht das sie es
auch wirklich tut, das es keine Kausaltitäten hinter der uns nicht mehr
erfassbaren Umwelt gibt. Und wir werden es niemals so richtig
experimentel wissen können. Das besagt ja die Heisenbergsche Theorie,
wie auch die Quantenphysik. Wir stoßen an eine Grenze die wir nicht
überschreiten können. Diese Grenze ist eine Wissensgrenze. Dh. wenn wir
daraus Zufall erzeugen dann wissen wir eben nicht welche tatsächlichen
Eigenschaften er hat.
Wenn nun ein Verfahren der Mathematik geknackt wurde dann hat das 2
mögliche Ursachen:
1.) es lag nie ein starker Beweis vor das das Verfahren wirklich sicher
ist. Siehe eben WEP Verschlüsselungen, das schon vor seiner Einführung
stark kritisiert wurde.
2.) durch neues Wissen hat man Methoden entwickelt die nun ein bis dato
schwer lösbares Problem einfacher lösbar werden lässt.
Das ist gut so, denn nun wissen wir das alle Verfahren die wir benutzt
haben unsicher sein müssen und werden sie durch neue ersetzen. Dh. durch
unseren Wissens-schaffens-Prozess in der Mathrematik erlangen wir auch
eine Sicherheit in der Kryptographie (solange Wissen frei ist
wohlgemerkt, aber das ist Politik).
>>Dafür braucht es keine neuen Erkenntnisse über Primazahleigenschaften,>>sondern ein einfacher 1000-Qubit-Quantencomputer (wenn es ihn denn in>>ein paar Jahrzehnten gibt) entschlüsselt jeden RSA-Schlüssel in>>Nullkommanichts.
Tja das sind solche Aussagen die ich nicht sonderlich mag.
Mit einem hypotetischem Quantencomputer lassen sich tatsächlich alle RSA
Schlüsel die man heute benutzt in Nullkommanichtds knacken. Und? Dann
benutzen wir RSA Schlüssel die so groß sind das sie eben nicht mehr in
NullKommanNichts knackbar sind. Ja, ich weiß ein Quantencomputer ist
superparellel und lösst alles in NullKommaNichts. Also auch die Frage
wer sind wird, was wollen wir, wer ist Gott usw. usw. wozu dann noch
irgendwas verschlüsseln ?
Wichtig ist doch nur eines: Der mathematische Aufwand einen RSA
Schlüssel zu erzeugen ist um vieles weniger komplex als diesen Schlüssel
knacken zu wollen. Das ist ja die Basis jedes Verfahrens der
Kryptographie. Man kennt zwei Wege eine Berechnung durchzuführen. Einen
leichten sehr schnellen wenn man ein Geheimnis kennt und einen super
schweren Weg das gleiche zu erreichen. Das heist die Komplexität, also
der Aufwand, unterscheidet sich mathem. beweisbar enorm. Natürlich
immer nur ausgehend vom aktuellen Wissensstand, das ist logisch. Nun,
auch mit einem hypothetischen Quantencomputer wird sich an diesen
Komplexitäten nichts ändern können.
Die Annahme das ein Quantencomputer alles ohne Aufwand in
NullKommaNichts berechnen kann ist nämlich falsch. Das wäre nämlich
gleichzusetzen mit einer Singularität, 0 Energie rein -> unendlich
Energie raus oder umgekehrt. Ergo, auch ein Quantencomputer benötigt
Resourcen und diese sind in einem geschlossenen System wie unser
Universum immer begrenzt und nicht unendlich.
Das sind aber alles Betrachtungen die unendlich weit von 8 Bit AVRs
entfernt sind und damit so ziemlich offtopic. Meine Standpunkte habe ich
lang und breit dargelegt ;) Wenn sollte man einen separaten Thread in
Allgemeines aufmachen.
Gruß Hagen
Hübsch, wie sich hier über Verschlüsselungen gestritten wird.
Dabei hat der Fragesteller mit keinem Wort erwähnt, was er mit der
32Bit-Zahl überhaupt machen will.
Von Verschlüsselung war nie die Rede.
In der Bundeswehr hatten sie früher mal einen Paßwortgenerator mit
hunderten von Rauschdioden, ein riesen Schrank.
Die Bedienung war aber so umständlich und der Output so gering, daß nur
die allerwichtigsten Dienststellen mit einem täglichen Paßwort versorgt
werden konnten.
Das Ding war daher nur wenige Jahre in Betrieb.
Danach wurde auf stinknormale Rechner mit Softwaregeneratoren
umgestellt.
Soviel zum Thema natürliche Zufallsquellen.
Peter
>>3. Kein kryptographisches Verfahren wurde durch zu schwache>>physikalische Zufallsquellen geknackt (etwa, weil jemand raffinierte>>physiologische Erkenntnisse über den zeitlichen Abstand zweier>>Tastendrücke gewonnen hätte,>Solche Verfahren wurden vermutlich nicht geknackt, weil sie nie>ernsthaft eingesetzt wurden.
Das ist absolut üblich, die für die Schlüsselerzeugung nötige Entropie
auf diese Art zu gewinnen!
>>Sondern, weil mathematische Verfahren in der>>Kryptographie eben doch nicht mathematisch bewiesen unumkehrbar sind.>Wie z.B. die WEP-Verschlüsselung? Wurde je bahauptet, dass die sicher>wäre?
Welches Verfahren ist denn bitte schön von der RNG bis zum fertigen Code
bewiesenermaßen sicher? "Bewiesen" ist etwas anderes als "nach heutigem
Kenntnisstand nur durch Brute-Force zu knacken)!
>Dafür braucht es keine neuen Erkenntnisse über Primazahleigenschaften,>sondern ein einfacher 1000-Qubit-Quantencomputer (wenn es ihn denn in>ein paar Jahrzehnten gibt) entschlüsselt jeden RSA-Schlüssel in>Nullkommanichts.
Mag sein, ist mir egal. Die neue Erkenntnis über Primzahleigenschaften
kann aber schon morgen vorliegen, nicht erst in ein paar Jahrzehnten.
>Wir stoßen an eine Grenze die wir nicht>überschreiten können. Diese Grenze ist eine Wissensgrenze.
Eben. Und das reicht. Denn diese Grenze ist keine weiter verschiebbare
wie jene mathematischen Grenzen, auf die wir trauen.
>1.) es lag nie ein starker Beweis vor das das Verfahren wirklich sicher>ist. Siehe eben WEP Verschlüsselungen, das schon vor seiner Einführung>stark kritisiert wurde.>2.) durch neues Wissen hat man Methoden entwickelt die nun ein bis dato>schwer lösbares Problem einfacher lösbar werden lässt.
Die Grenze verstehe ich nicht. "Ein starker Beweis" umfasst für mich den
Beweis, dass es keine alternativen Methoden geben kann, mit denen sich
das Problem weiter vereinfacht.
Und, worauf ich hinaus wollte: davon ist man betroffen, egal ob man auf
physikalische RNG setzt oder nicht (pathologische Ausnahme wie immer das
One-Time Pad).
>Das ist gut so, denn nun wissen wir das alle Verfahren die wir benutzt>haben unsicher sein müssen und werden sie durch neue ersetzen.
Was insbesondere im Bereich der Signaturen natürlich ein Problem
darstellt: wenn sich eine Methode mit Ihrer Entdeckung bereits ausnutzen
lässt (und nicht erst mit der übernächsten Hardwaregeneration), lässt
sich die Echtheit eines Vertrages ja schon nicht mehr beweisen, um ihn
mit einem neuen Verfahren bestätigen zu können.
>Frage: Wie entstehen die zufälligen Quanteneffekte ? Laut meinem Wissen>entstehen sie weil der Zusammenhang zwischen "Ursache und Wirkung" also>die Kausalität für einen Beobachter nicht mehr gilt. Das heist man kommt>an eine Grenze in der quasi die Physik unscharf wird.
Ich denke hier setzt dein von ... festgestelltes Zehntelwissen ein.
>Aber bisher wurde>eben nur bewiesen das unsere Möglichkeit der Beobachtung unscharf wird,
In der Physik wird nichts bewiesen, sondern nur Hypothesen mit einer
gewissen Wahrscheinlichkeit verifiziert.
>wir sehen also aus unserem Blickwinkel heraus nur das sich unsere>gewohnte Physik auflösst. Das heist aber noch lange nicht das sie es>auch wirklich tut, das es keine Kausaltitäten hinter der uns nicht mehr>erfassbaren Umwelt gibt. Und wir werden es niemals so richtig>experimentel wissen können.>Das besagt ja die Heisenbergsche Theorie,>wie auch die Quantenphysik.
nein.
>Wir stoßen an eine Grenze die wir nicht>überschreiten können. Diese Grenze ist eine Wissensgrenze. Dh. wenn wir>daraus Zufall erzeugen dann wissen wir eben nicht welche tatsächlichen>Eigenschaften er hat.
Die Zufallsverteilungen sind, wenn man die Axiome der Quantenmechanik
voraussetzt, berechenbar. Und die Axiome wurden tausendfach verifiziert,
z.B. in TeraByte von Daten am Cern.
>Mit einem hypotetischem Quantencomputer lassen sich tatsächlich alle RSA>Schlüsel die man heute benutzt in Nullkommanichtds knacken. Und? Dann>benutzen wir RSA Schlüssel die so groß sind das sie eben nicht mehr in>NullKommanNichts knackbar sind.
Und was sagst du dazu, dass für einen QC das Finden und das Knacken
eines RSA-Codes Probleme gleicher ORdnung sind?
>Wichtig ist doch nur eines: Der mathematische Aufwand einen RSA>Schlüssel zu erzeugen ist um vieles weniger komplex als diesen Schlüssel>knacken zu wollen.
Was ist ein "mathematischer Aufwand"?? Wenn du ihn in Operationen wie
Summe und Multiplikation misst, lass dir gesagt sein, dass ein QC im
Fall der Primzahlfaktorisierung um so viel effzienter ist, wie diese
Faktorisierung "aufwendiger" ist als der Primzahltest zur Generierung.
Und nein, der QC ist keine Maschine zur Suche nach der Frage zu 42, aber
im Fall von Primzahlfaktorisierung wurde seine Effizienz mathematisch
BEWIESEN! http://en.wikipedia.org/wiki/Shor's_algorithm>Das ist ja die Basis jedes Verfahrens der>Kryptographie. Man kennt zwei Wege eine Berechnung durchzuführen. Einen>leichten sehr schnellen wenn man ein Geheimnis kennt und einen super>schweren Weg das gleiche zu erreichen. Das heist die Komplexität, also>der Aufwand, unterscheidet sich mathem. beweisbar enorm. Natürlich>immer nur ausgehend vom aktuellen Wissensstand, das ist logisch.>Nun,>auch mit einem hypothetischen Quantencomputer wird sich an diesen>Komplexitäten nichts ändern können.
Föllig flasch!
Sieh mal ein winziges Stück über deinen mathematischen Tellerrand, und
du wirst wahnsinnig viel interessante Physik entdecken. Auch viel weiter
entfernt erstreckt sich immer noch das Reich der Physik. Und wenn du
bereit bist, noch viel viel weiter in der Welt des Wissens zu reisen,
kommst du irgendwann zu den Grundzügen der Chemie, dann der Biologie,
und schließlich kämst du im wirklichen Leben an. Öh, äh, ok ich verstehe
warum du vor deinem Bücherregal stehen bleibst, da weiß man, was man
hat.
>Die Annahme das ein Quantencomputer alles ohne Aufwand in>NullKommaNichts berechnen kann ist nämlich falsch. Das wäre nämlich>gleichzusetzen mit einer Singularität, 0 Energie rein -> unendlich>Energie raus oder umgekehrt. Ergo, auch ein Quantencomputer benötigt>Resourcen und diese sind in einem geschlossenen System wie unser>Universum immer begrenzt und nicht unendlich.
Wie lautet der schöne Spruch? Diskutiere nie mit einem Idioten. Erst
zieht er dich auf sein Niveau herab, und dann schlägt er dich mit
Erfahrung.
Auch wenn ... unberechtigterweise die Pseudozufallsgeneratoren
verurteilt, hat er es bei der Beurteilung deines Argumentationsstils
ganz gut getroffen.
Hagen Re wrote:
>>>Bei Kryptographie gibt es keine Alternative zu ECHTEN Zufallszahlen.>> Falsch.
...
> "Angewandte Kryptographie" von B.Schneier ISBN 3-89319-854-7
S. 482:
"Für manche Anwendungen sind kryptographisch sichere
Pseudozufallsfolgengeneratoren nicht gut genug. Oft braucht man in der
Kryptographie echte Zufallszahlen. Das wichtigste Beispiel dafür ist die
Erzeugung von Schlüsseln."
Wie gesagt: egal wie gut deine Algorithmen sind, wenn du einen Schlüssel
erzeugen willst brauchst du IMMER echten Zufall, da führt kein Weg dran
vorbei.
>> "Angewandte Kryptographie" von B.Schneier ISBN 3-89319-854-7>S. 482:>"Für manche Anwendungen sind kryptographisch sichere>Pseudozufallsfolgengeneratoren nicht gut genug. Oft braucht man in der>Kryptographie echte Zufallszahlen. Das wichtigste Beispiel dafür ist die>Erzeugung von Schlüsseln."
Den Ausschnitt verstehe ich so nicht. "Für manche Anwendungen sind
kryptographisch sichere Pseudozufallsfolgengeneratoren nicht gut genug."
impliziert doch, dass Pseudozufallsfolgengeneratoren für Kryptographie
ausreichen können. "Oft braucht man in der Kryptographie echte
Zufallszahlen." besagt für mich das Gegenteil.
>- BBS-RNG, Blum Blum Shub Generator oder auf deutsch den Quadratischen>Reste Generator>- den Micalli Schnorr Generator>beides sind zahlentheoretische Pseudo Zufallsgeneratoren die mathem.>bewiesen wurden, vollständig wohlgemerkt.
Was ist der Mathematische Beweis eines Zufallsgenerators?
Wird bewiesen, dass die Zahlenfolge die maximale Periode besitzt? Wenn
ja, was sagt der Beweis über die Zufälligkeit aus? Dann wäre ja auch
x->x+1 modulo 2^32 ein geeigneter 32-Bit RNG.
Wird bewiesen, dass Gleichverteilung, Varianz etc. den Vorgaben
entsprechen? Wie wird ausgeschlossen, dass das zugrundeliegende Muster
nicht für bestimmte Anwendungen die Zufälligkeit zunichte macht?
Wird bewiesen, dass die Rekonstruktion des Algorithmus aus der
Zahlenfolge NP-vollständig ist? Dies wäre der einzig interessante
Beweis. Wenn ja, wie sieht das Beweisprinzip aus?
>Wird bewiesen, dass die Rekonstruktion des Algorithmus aus der>Zahlenfolge NP-vollständig ist? Dies wäre der einzig interessante>Beweis. Wenn ja, wie sieht das Beweisprinzip aus?
Genau. Unter der gleichen Annahme, die der RSA-Kodierung zugrundeliegt,
dass das Faktorisieren eines n-stelligen Produktes aus zwei Primzahlen
eine Komplexität größer als O(n^k) für jedes k besitzt, ist die
Vorhersage der nächsten Pseudozufallszahl aus allen vorherigen Zahlen
von gleicher Komplexität. Über Gleichverteilung usw. macht der Beweis
ersteinmal keine Aussage.
Wenn Hagen dies als Beweis eines RNG definiert, ist der RNG also
bewiesen. Qed.
Bernd
Korrekt. Und die "pseudozufällige Gleichverteilung" entsteht dadurch das
man zb. in modulare Ringen arbeitet. Wenn man nicht die Kardinalität
dieser Menge faktorisieren kann, die 1 oder 2 Primzahlen die als Modul
benutzt werden, dann entsteht eine gleichverteilte aber nicht
vorhersagbare noch zurückrechenbare Folge von Bits, wenn man einfach
immer ein Register modulo rechnet. Das wird sehr oft schon impliziert
und als trivial erachtet und deshalb nicht explizit beschrieben.
Wobei man hier abhängig vom Verfahren analysieren muß. Die Folge der
Zahlen ist also so komplex das sie statistisch betrachtet identisch mit
echtem Zufall ist (aus mathematischer Sicht), nur eben mit dem Vorteil
das derjenige der alle Startparameter kennt diese Folge eben doch
vorausberechnen/zurückberechnen kann. In diesem Moment habe wir das was
wir suchen: ein absichtlich unfaires System.
Gruß Hagen
Man rechnet dabei eben nicht f(x) = x +1, das wäre idiotisch. Sondern
immer Multiplikativ zb. f(x) == x^y mod N. Bei der Operation x^y erzeugt
man ein Element eines modularen Ringes das immer größer als N ist. Mit
der modulo Operation erzeugt man dann ein dazu in diesem Ring
kongruentes Element. Man muß nun aber das Modul N faktoriesieren können
damit man dies Folge f(x) berechnen kann. Wenn diese Faktorisation aber
praktikabel undurchführbar ist, wohlgemerkt nach heutigem
Wissens-/Technologie Stand, dann ist das beweisbar sicher. Wichtig dabei
ist dann eben der Punkt das wir exakt wissen woher unsere
pseudo-Zufallsfolge stammt, welche Mathematik zugrunde liegt und das man
das beweisen kann.
Gruß Hagen
>S. 482:>"Für manche Anwendungen sind kryptographisch sichere>Pseudozufallsfolgengeneratoren nicht gut genug. Oft braucht man in der>Kryptographie echte Zufallszahlen. Das wichtigste Beispiel dafür ist die>Erzeugung von Schlüsseln."
Diese Aussage ist ja auch korrekt, das bestreitet ja keiner. Die Frage
ist unter welchem Betrachtungsstandpunkt das stimmt. In einem offenen
System kann man keinen sicheren PRNG benutzen da man ja die geheimen
Startparameter nicht schützen kann. Dann muß man notgedrungen echten
Zufall benutzen, da dieser nicht geschützt werden muß. In einem
abgechlossenen und "einbruch sicheren" System erübrigt sich diese
Forderung aber, und man sollte dann meiner Meinung nach eben sichere
PRNGs benutzen.
Gruß Hagen
Hagen Re wrote:
>>S. 482:>>"Für manche Anwendungen sind kryptographisch sichere>>Pseudozufallsfolgengeneratoren nicht gut genug. Oft braucht man in der>>Kryptographie echte Zufallszahlen. Das wichtigste Beispiel dafür ist die>>Erzeugung von Schlüsseln.">> Diese Aussage ist ja auch korrekt, das bestreitet ja keiner. Die Frage> ist unter welchem Betrachtungsstandpunkt das stimmt. In einem offenen> System kann man keinen sicheren PRNG benutzen da man ja die geheimen> Startparameter nicht schützen kann. Dann muß man notgedrungen echten> Zufall benutzen, da dieser nicht geschützt werden muß. In einem> abgechlossenen und "einbruch sicheren" System erübrigt sich diese> Forderung aber, und man sollte dann meiner Meinung nach eben sichere> PRNGs benutzen.
Und was verwendet man als Startparameter für diese PRNGs? Genau:
Zufallszahlen. Echte Zufallszahlen. Du kannst das drehen und wenden wie
du willst, um den Zufall kommst du nicht herum.
Und um das nochmal zu betonen: du kannst keine 32 Bit langen
Zufallszahlen als Startparameter verwenden und daraus z.B. einen 128 Bit
langen Schlüssel erzeugen. Die Unsicherheit die ein Angreifer über den
Schlüssel hat kann nie größer werden als das was du an ECHTEM Zufall in
die Erzeugung reinsteckst.
>Und was verwendet man als Startparameter für diese PRNGs? Genau:>Zufallszahlen. Echte Zufallszahlen.
In dem Zusammenhang habe ich eine Frage zur Praxis des RSA-Verfahrens
bzw. des BBS-Generators, deren Theorie mir halbwegs bekannt ist. Beide
benötigen ein Paar p,q mittelgroßer (im Vergleich zu pq) Primzahlen. Wie
werden diese erzeugt?
Wählt man Zufallszahlen im gewünschten Wertebereich von p und q, solange
bis z.B. der Miller-Rabin-Test ergibt, dass sie prim sind? Kann man die
Wahl der Zufallszahlen intelligenter gestalten als bloss z.B. gerade
Kandidaten ohne MR-Test zu verwerfen?
Und wie findet man Zufallskandidaten für p und q? Ohne ein Paar p,q zu
haben kann man kein BBS- oder ähnlich sicheres Verfahren anwenden, um
eine Folge von Kandidaten zu berechnen (Henne-Ei-Problem). Braucht man
also eine große Menge echte Zufallszahlen, bis man ein Paar p,q gefunden
hat?
Und ist es ratsam, aus einem Schlüsselpaar (wenn also eine Henne bzw. Ei
existiert) neue zu generieren? Schlüssel KÖNNEN mit sehr viel Rechenzeit
geknackt werden, und dann wären alle abgeleiteten Schlüssel ebenfalls
unsicher, nicht?
Bernd
Eigentlich spielt es ja keine Rolle, was der OP mit seiner 32bit
Zufallszahl machen wollte. Vielleicht hätten's auch 16bit getan. Er ist
jedenfalls überwältigt, von der Kaskade von Beiträgen, die seine
unscheinbare Frage ausgelöst hat. Eine kryptographische Anwendung steht
jedenfalls nicht dahinter.
ChristophK wünscht schöne Weihnachten und eine besinnliche Zeit zwischen
den Jahren.
Timer starten (Presc 1), WDT starten (auf genügend hohe Zeit stellen);
beim Interrupt des WDTs den Timer Wert holen! WDT läuft auf einem
eigenen Oszillator -> fertisch! Ob sie für deine Anwendung gut genug
sind, weiß ich nicht!
>WDT läuft auf einem eigenen Oszillator -> fertisch
Schon mal ausprobiert? Du meinst nicht, dass die Oszillatoren
hinreichend stabil sind, dass der Timerwert immer in einem sehr engen
Wertebereich landet? Vor allem wenn er 32 UNABHAENGIGE bits braucht.
Anderer Vorschlag: vom AVR per ethernetmodul folgenden Text an
www.mikrocontroller.net/topic/new schicken:
Betreff "C Compiler kaputt"
Text "Ich habe meinen Compiler auf deutsche Bedienung eingestellt, aber
dieses Programm
>int main(){printf("Hello world");}
produziert immer noch englischen Text. Was ist am Compiler kaputt?"
Erste Anwort abwarten (30-60sec) und die eingehenden Zeichen zu 4 Byte
verknüpfen.
Wolfgang wrote:
> Timer starten (Presc 1), WDT starten (auf genügend hohe Zeit stellen);> beim Interrupt des WDTs den Timer Wert holen! WDT läuft auf einem> eigenen Oszillator -> fertisch! Ob sie für deine Anwendung gut genug> sind, weiß ich nicht!
Hätt ich auch so gemacht. Zwecks "Gleichverteilung" etc:
einfach 32 mal durchführen, und jedes mal nur das LSB verwenden.
Danach kann man die 32Bit als Startwert für einen PRNG verwenden.
/Ernst
wenn du mit 8MHz unterwegs bist, dann braucht der Timer ca. 32us für
einen Durchlauf! Wenn du den WDT auf 32ms stellst, dann sind das ca.
1000 Durchläufe! Da es verschiedene Oszillatoren sind mit verschiedenen
Toleranzen wie auch Temperaturabhängigkeiten, schauts so aus, als ob
sehr brauchbare Zahlen herauskommen! Man kann das aber sicher auch noch
verbessern, wie eben schon erwähnt nur gewisse Bits verwenden;
aufrechnen; nur als Basis für einen PRNG verwenden, usw....
>dann sind das ca. 1000 Durchläufe!
äh, unterbrich mich, wenn ich was falsches schreibe. Das heißt wenn die
Oszillatoren relativ zueinander von einem Start zum nächsten um 1%
auseinanderdriften (was sehr hoch gegriffen ist), ändert sich das
Ergebnis um ca. 10, wohlwollend aufgerundet also 4 verwertbare Bits. Und
dann wartest du 10min, damit du die nächsten 4 "Zufallsbits" erhältsts,
gut macht schon einmal 8 Bits. Nun hat sich die Temperatur eingeregelt,
beide Oszillatoren haben ein festes Frequenzverhältnis, und wo kommen
die restlichen 24 Bits her?
Suchen ein Mikrocontrollerprogrammierer, ein reiner Mathematiker und ein
Ingenieur eine Zufallszahl...
Der Tiny2313 hat keinen A/D-Wandler, gelle? Also brauche ich
wahrscheinlich etwas mehr externe Bauelemente, aber es sollte doch mit
einem Bauelement, das Rauschen produziert (Zenerdiode, Rauschdiode?)
und einer S/H-Schaltung möglich sein, Zählerwerte von 0 bis 255 zu
produzieren. Die Werte für die drei weiteren Bytes wären statistisch
unabhängig. Bleibt nur die Aufgabe, den Analogteil der Schaltung so zu
gestalten, daß sich keine Häufung der S/H-Werte am Nullpunkt oder am
Maximum bildet.