kryptografischer, eindeutiger Zufallszahlengenerator ;)
-
Hm, also angenommen ich hab so einen Generator. Dann würde ich den erstmal so lange laufen lassen, bis ne Zahl kommt, die ich schonmal hatte. Damit hab ich ne Liste aller Zahlen, die er liefern kann. Wenn jetzt eine Zahl rauskommt, dann weiß ich genau wo in der Liste der Generator gerade steht, denn jede Zahl kommt nur einmal vor. Damit kann ich in der Liste nachschaun, was als nächstes kommt. So ein Teil ist also prinzipiell nicht sicher.
MfG Jester
-
Genau deshalb müsste der Generator mit einem geheimen Schlüssel initialisiert werden.
(der Schlüssel fliesst also in irgendeiner Form in den seed value ein)
Die Bedingung ist lediglich, dass ich *ohne* den Schlüssel die Folge nicht vorhersagen kann.
-
hmm.. so auf anhieb würde ichs so machen (pseudocode):
Array vecZeichen; // fülle das ding mit allen ziechen die verwenden werden dürfen Array vecResult; for(int i=0;i<lenght;i++) { RAND_MAX = vecZeichen.size()-1; int iZeichen = rand(); ZEICHEN c = vecZeichen[iZeichen]. vecZeichen.Remove(iZeichen); vecResult.add(c); }
wenn vecZeichen.size() null wird musst ihn natürlich wieder nachfüllen.
-
Suche mal bei Wikipedia nach BBS (Blum Blum Shub). Das ist ein einfacher Zufallszahlengenerator, der 0 und 1 Bitfolgen produziert. Die Periodizität liegt auch bei etwa 2^32. Halt je nach Zahlenbereich.
-
Weiß ja nicht wie viele Zahlen du brauchst aber wenn es nur wenige sind, dann mach es über Mausbewegung oder miss die Zeiten zwischen zwei Tastaturanschlägen. Dass is auf jeden Fall zufälliger als irgendein Zufallszahlengenerator
-
Lies Dir mal durch, was er haben will.
-
CMatt:
Bei der Methode muss ich tatsächlich alle Zeichen des Wertebereichs vorrätig haben.
Das sind mir zuviel.
Am besten wäre es, wenn nur der letzte ausgespuckte Wert (und evtl der Schlüssel) gespeichert werden müsste, um daraus den nächsten zu berechnen.mwoidt:
jo, les nochmal von vorne.
Es geht nicht wirklich um Zufall sondern um Unvorhersagbarkeit+Eindeutigkeit.RainerSp:
nach erstem überfliegen bringt BBS die nötige Unvorhersagbarkeit.
Aber wie garantier ich die Eindeutigkeit? bzw. wo liest du die Periodizität da raus?
-
Wenn ich die Zahl 2^23-1 habe, weiß ich aber genau, dass die nächste 2^32 sein wird
und kann ich unter dieser annahme nicht den geheimen Schlüssel herausbekommen?
-
SirLant schrieb:
Wenn ich die Zahl 2^23-1 habe, weiß ich aber genau, dass die nächste 2^32 sein wird
und kann ich unter dieser annahme nicht den geheimen Schlüssel herausbekommen?Ich behaupte mal: NEIN!
Schließlich gibt es noch (2^23-2)!≈('ne ganze Menge) verschiedene Möglichkeiten, die 2^23-2 verbleibenden Werte zu kombinieren...
-
scrontch schrieb:
CMatt:
RainerSp:
nach erstem überfliegen bringt BBS die nötige Unvorhersagbarkeit.
Aber wie garantier ich die Eindeutigkeit? bzw. wo liest du die Periodizität da raus?Ich habe leider die Quelle nicht mehr gefunden. Zur Not mußt du selber mal nachrehcnen
Eben habe ich aber noch gelesen, daß die notwendige Sicherheit erst mit einem sehr großen Produkt zweier Primzahlen kommt. Aber für Security by Obscurity reicht es auf jeden Fall.
Gruß,Rainer.