Eine Pseudozufallszahl ist eine spezielle Zahl, die von einem speziellen Generator generiert wird. Der deterministische Zufallsbitgenerator (PRNG), auch als deterministischer Zufallsbitgenerator (DRBG) bekannt, ist ein Algorithmus zum Erzeugen einer Folge von Zahlen, deren Eigenschaften sich den Eigenschaften von Zufallszahlenfolgen annähern. Die erzeugte PRNG-Sequenz ist nicht wirklich zufällig, da sie vollständig durch einen Startwert bestimmt wird, der als PRNG-Startwert bezeichnet wird, der wirklich zufällige Werte enth alten kann. Mit Hardware-Zufallszahlengeneratoren können zwar eher zufällige Folgen erzeugt werden, aber Pseudo-Zufallszahlengeneratoren sind in der Praxis wichtig für die Geschwindigkeit der Zahlengenerierung und deren Reproduzierbarkeit.
Bewerbung
PRNGs sind zentral für Anwendungen wie Simulation (zB für Monte Carlo), elektronische Spiele (zB für prozedurale Generierung) und Kryptografie. Kryptografische Anwendungen erfordern, dass die Ausgabedie Daten waren aus früheren Informationen nicht vorhersagbar. Es sind komplexere Algorithmen erforderlich, die nicht die Linearität einfacher PRNGs erben.
Allgemeine Geschäftsbedingungen
Gute statistische Eigenschaften sind eine zentrale Voraussetzung für die Erlangung eines PRNG. Im Allgemeinen ist eine sorgfältige mathematische Analyse erforderlich, um sicherzustellen, dass der RNG Zahlen generiert, die nahe genug an der Zufallszahl liegen, um für die beabsichtigte Verwendung geeignet zu sein.
John von Neumann warnte davor, PRNG als echten Zufallsgenerator falsch zu interpretieren und scherzte: "Jeder, der arithmetische Methoden zur Generierung von Zufallszahlen in Betracht zieht, befindet sich sicherlich in einem Zustand der Sünde."
Verwenden
PRNG kann aus einem beliebigen Anfangszustand gestartet werden. Es wird immer dieselbe Sequenz erzeugen, wenn es mit diesem Zustand initialisiert wird. Die PRNG-Periode ist wie folgt definiert: Maximum über alle Anfangszustände der Länge des sich nicht wiederholenden Sequenzpräfixes. Die Periode wird durch die Anzahl der Zustände begrenzt, die normalerweise in Bits gemessen wird. Da sich die Periodenlänge potenziell mit jedem hinzugefügten „Status“-Bit verdoppelt, ist es einfach, PRNGs mit Perioden zu erstellen, die für viele praktische Anwendungen groß genug sind.
Wenn der interne Zustand des PRNG n Bits enthält, kann seine Periode nicht mehr als 2n Ergebnisse betragen, es ist viel kürzer. Für einige PRNGs kann die Dauer berechnet werden, ohne den gesamten Zeitraum zu umgehen. Typisch sind Schieberegister mit linearer Rückkopplung (LFSRs).sind so gewählt, dass sie Perioden gleich 2n − 1 haben.
Lineare Kongruenzgeneratoren haben Perioden, die mit Faktorisierung berechnet werden können. Obwohl das PPP seine Ergebnisse wiederholt, nachdem sie das Ende des Zeitraums erreicht haben, bedeutet ein wiederholtes Ergebnis nicht, dass das Ende des Zeitraums erreicht wurde, da sein interner Zustand größer sein kann als der Ausgang; dies ist besonders offensichtlich für PRNGs mit Einzelbitausgabe.
Mögliche Fehler
Fehler, die von defekten PRNGs gefunden werden, reichen von subtilen (und unbekannten) bis hin zu offensichtlichen. Ein Beispiel ist der RANDU-Zufallszahlenalgorithmus, der seit Jahrzehnten auf Mainframes verwendet wird. Es war ein schwerwiegender Mangel, dessen Unzulänglichkeit jedoch lange Zeit unbemerkt blieb.
In vielen Bereichen sind Forschungsstudien, die Zufallsauswahl, Monte-Carlo-Simulationen oder andere auf RNG basierende Methoden verwendet haben, viel weniger zuverlässig, als dies das Ergebnis von GNPG von schlechter Qualität sein könnte. Auch heute ist manchmal Vorsicht geboten, wie die Warnung in der International Encyclopedia of Statistical Science (2010) belegt.
Erfolgreiche Fallstudie
Betrachten Sie zur Veranschaulichung die weit verbreitete Programmiersprache Java. Ab 2017 verlässt sich Java für sein PRNG immer noch auf den Linear Congruential Generator (LCG).
Verlauf
Der erste PRNG, der ernsthafte Probleme vermeidet und trotzdem ziemlich schnell läuft,war der Mersenne Twister (unten besprochen), der 1998 veröffentlicht wurde. Seitdem wurden andere hochwertige PRNGs entwickelt.
Aber die Geschichte der Pseudozufallszahlen endet hier nicht. In der zweiten Hälfte des 20. Jahrhunderts umfasste die Standardklasse von Algorithmen, die für PRNGs verwendet wurden, lineare kongruente Generatoren. Die Qualität des LCG war als unzureichend bekannt, bessere Methoden standen jedoch nicht zur Verfügung. Press et al. (2007) beschreiben das Ergebnis wie folgt: „Wenn alle wissenschaftlichen Arbeiten, deren Ergebnisse aufgrund von [LCGs und ähnlichen] zweifelhaft sind, aus den Bibliotheksregalen verschwinden würden, gäbe es in jedem Regal eine faustgroße Lücke.“
Die wichtigste Errungenschaft bei der Entwicklung von Pseudozufallsgeneratoren war die Einführung von Methoden, die auf linearer Rekurrenz in einem Feld mit zwei Elementen basieren; solche Oszillatoren sind mit linear rückgekoppelten Schieberegistern gekoppelt. Sie dienten als Grundlage für die Erfindung von Pseudozufallszahlensensoren.
Insbesondere die Erfindung von Mersen Twister aus dem Jahr 1997 vermied viele der Probleme früherer Generatoren. Der Mersenne Twister hat eine Periode von 219937−1 Iterationen (≈4,3 × 106001). Es wurde nachgewiesen, dass es in (bis zu) 623 Dimensionen (für 32-Bit-Werte) gleichmäßig verteilt ist und zum Zeitpunkt seiner Einführung schneller war als andere statistisch fundierte Generatoren, die Pseudozufallszahlenfolgen erzeugen.
Im Jahr 2003 stellte George Marsaglia eine Familie von Xorshift-Generatoren vor, die ebenfalls auf linearer Wiederholung basieren. Diese Generatoren sind extremsind schnell und - kombiniert mit einem nichtlinearen Betrieb - bestehen sie strenge statistische Tests.
Im Jahr 2006 wurde die WELL-Generatorfamilie entwickelt. WELL-Generatoren verbessern in gewisser Weise die Qualität von Twister Mersenne, die einen übermäßig großen Zustandsraum und eine sehr langsame Erholung von ihnen hat, wodurch Pseudozufallszahlen mit vielen Nullen erzeugt werden.
Kryptografie
PRNG, das für kryptografische Anwendungen geeignet ist, wird als kryptografisch sicheres PRNG (CSPRNG) bezeichnet. Die Voraussetzung für ein CSPRNG ist, dass ein Angreifer, der den Seed nicht kennt, nur einen marginalen Vorteil hat, wenn es darum geht, die Ausgabesequenz des Generators von einer zufälligen Sequenz zu unterscheiden. Mit anderen Worten, während ein PRNG nur bestimmte statistische Tests bestehen muss, muss ein CSPRNG alle statistischen Tests bestehen, die auf die Polynomzeit in der Seed-Größe beschränkt sind.
Obwohl der Beweis dieser Eigenschaft über das aktuelle Niveau der Theorie der Rechenkomplexität hinausgeht, kann ein starker Beweis erbracht werden, indem das CSPRNG auf ein Problem reduziert wird, das als schwierig gilt, wie die ganzzahlige Faktorisierung. Im Allgemeinen kann eine jahrelange Überprüfung erforderlich sein, bevor ein Algorithmus als CSPRNG zertifiziert werden kann.
Es hat sich gezeigt, dass die NSA wahrscheinlich eine asymmetrische Hintertür in den NIST-zertifizierten Dual_EC_DRBG-Pseudozufallszahlengenerator eingebaut hat.
PseudozufallsalgorithmenNummern
Die meisten PRNG-Algorithmen erzeugen Sequenzen, die durch einen von mehreren Tests gleichmäßig verteilt werden. Dies ist eine offene Frage. Es ist eines der zentralen Elemente in Theorie und Praxis der Kryptographie: Gibt es eine Möglichkeit, die Ausgabe eines hochqualitativen PRNG von einer wirklich zufälligen Sequenz zu unterscheiden? In dieser Einstellung weiß der Resolver, dass entweder ein bekannter PRNG-Algorithmus verwendet wurde (jedoch nicht der Status, mit dem er initialisiert wurde), oder dass ein echter Zufallsalgorithmus verwendet wurde. Er muss zwischen ihnen unterscheiden.
Die Sicherheit der meisten kryptografischen Algorithmen und Protokolle, die PRNGs verwenden, basiert auf der Annahme, dass es unmöglich ist, zwischen der Verwendung eines geeigneten PRNG und der Verwendung einer wirklich zufälligen Sequenz zu unterscheiden. Die einfachsten Beispiele für diese Abhängigkeit sind Stream-Chiffren, die meistens funktionieren, indem sie die Klartextnachricht weglassen oder mit einer PRNG-Ausgabe senden, wodurch der Chiffretext erzeugt wird. Das Entwerfen kryptografisch adäquater PRNGs ist äußerst schwierig, da sie zusätzliche Kriterien erfüllen müssen. Die Größe seiner Periode ist ein wichtiger Faktor für die kryptographische Eignung eines PRNG, aber nicht der einzige.
Ein frühes Computer-PRNG, das 1946 von John von Neumann vorgeschlagen wurde, ist als Methode der mittleren Quadrate bekannt. Der Algorithmus ist wie folgt: Nehmen Sie eine beliebige Zahl, quadrieren Sie sie, entfernen Sie die mittleren Ziffern der resultierenden Zahl als "Zufallszahl", und verwenden Sie diese Zahl dann als Startzahl für die nächste Iteration. Zum Beispiel ergibt das Quadrieren der Zahl 11111234321, was als 01234321 geschrieben werden kann, eine 8-stellige Zahl ist das Quadrat einer 4-stelligen Zahl. Dies ergibt 2343 als "Zufallszahl". Das Ergebnis der Wiederholung dieses Vorgangs ist 4896 und so weiter. Von Neumann verwendete 10-stellige Nummern, aber der Vorgang war derselbe.
Nachteile des "mittleren Quadrats"
Das Problem bei der "Mean Square"-Methode ist, dass sich alle Sequenzen irgendwann wiederholen, einige sehr schnell, zum Beispiel: 0000. Von Neumann wusste davon, aber er fand einen für seine Zwecke ausreichenden Ansatz und befürchtete, dass die mathematische "Korrekturen" würden die Fehler nur verbergen, anstatt sie zu entfernen.
Von Neumann fand Hardware-Zufalls- und Pseudo-Zufallszahlengeneratoren ungeeignet: Wenn sie die erzeugte Ausgabe nicht aufzeichnen, können sie später nicht auf Fehler überprüft werden. Wenn sie ihre Ergebnisse aufschreiben würden, würden sie den begrenzten verfügbaren Speicher des Computers und damit die Fähigkeit des Computers, Zahlen zu lesen und zu schreiben, erschöpfen. Wenn Zahlen auf Karten geschrieben würden, würde das Schreiben und Lesen viel länger dauern. Auf dem von ihm verwendeten ENIAC-Computer nutzte er die „Middle Square“-Methode und führte den Prozess des Gewinnens von Pseudozufallszahlen mehrere hundert Mal schneller durch als das Lesen von Zahlen aus Lochkarten.
Mean Square wurde inzwischen durch komplexere Generatoren ersetzt.
Innovative Methode
Eine neuere Innovation besteht darin, das mittlere Quadrat mit der Weil-Folge zu kombinieren. Diese Methode gewährleistet qualitativ hochwertige Produkte im Innerenlange Zeit. Es hilft, die besten Formeln für Pseudozufallszahlen zu erh alten.