Was ist ein Zahlengenerator?
Ein Zahlengenerator ist ein Prozess, Algorithmus oder ein physikalisches Gerät, das eine Zahlenfolge erzeugt, deren Werte weder von der empfangenden Person noch vom empfangenden System vollständig vorhergesagt werden können. Die Ausgabe kann eine einzelne Zahl oder eine beliebig lange Folge sein, die aus einem definierten Bereich, einer Verteilung oder einem Regelsatz stammt. Zahlengeneratoren finden Anwendung in der Informatik, Statistik, Kryptographie, Spieleentwicklung, wissenschaftlichen Simulationen und alltäglichen Entscheidungsprozessen und gehören damit zu den am weitesten verbreiteten Werkzeugen der modernen Mathematik und Ingenieurwissenschaften.
Der entscheidende Unterschied liegt zwischen echter Zufälligkeit und deren rechnerischer Annäherung . Die meisten Zahlengeneratoren in Software erzeugen keine wirklich zufälligen Ergebnisse – es handelt sich um deterministische Algorithmen, deren Ausgabe so statistisch unvorhersehbar ist, dass sie sich in der Praxis meist wie Zufall verhält. Eine kleinere Gruppe von Generatoren nutzt hingegen echte physikalische Unsicherheiten, um Zahlen zu erzeugen, die kein Algorithmus reproduzieren könnte. Es ist von enormer Bedeutung zu wissen, welchen Typ man verwendet, denn die Folgen einer falschen Generatorwahl reichen von fehlerhaften Forschungsergebnissen bis hin zu katastrophalen Sicherheitslücken.
Warum Zahlengeneratoren wichtig sind
Zahlengeneratoren bilden eine grundlegende Infrastruktur in einer Vielzahl von Bereichen. Ihre Qualität bestimmt unmittelbar die Gültigkeit der Ergebnisse in jedem Bereich.
- Kryptografie und Sicherheit: Verschlüsselungsschlüssel, Sitzungstoken, Nonces und Einmalpasswörter müssen aus Quellen generiert werden, deren Vorhersage rechnerisch unmöglich ist. Ein schwacher Generator kann Millionen von Nutzern Angriffen aussetzen. Die Debian-OpenSSL-Schwachstelle von 2008, verursacht durch eine unbeabsichtigte Reduzierung der Entropie beim Seeding, machte private Schlüssel erratbar und kompromittierte Server weltweit.
- Wissenschaftliche Simulation: Monte-Carlo-Methoden, die in Physik, Finanzwesen, Klimamodellierung und Wirkstoffforschung Anwendung finden, nutzen große Folgen von Zufallszahlen, um Lösungen für analytisch nicht lösbare Probleme zu approximieren. Die statistische Qualität des Zufallszahlengenerators beeinflusst die Genauigkeit der Simulation direkt.
- Statistische Stichproben: Umfrageforschung, klinische Studien und Qualitätskontrollprüfungen sind auf die Zufallsauswahl angewiesen, um sicherzustellen, dass die Stichproben die Grundgesamtheit unverzerrt repräsentieren. Ein Generator mit versteckten Mustern kann bestimmte Ergebnisse systematisch ausschließen und somit Schlussfolgerungen entwerten.
- Glücksspiel und Spielbetrieb: Fairness bei Kartenspielen, Lotterien, Spielautomaten und Online-Casinos hängt rechtlich und ethisch von der unvorhersehbaren Generierung von Zufallszahlen ab. Aufsichtsbehörden in den meisten Ländern fordern zertifizierte Zufallszahlengeneratoren.
- Prozedurale Inhaltsgenerierung: Videospiele generieren Terrain, Dungeons, Feindverhalten und Beute mithilfe von initialisierten pseudozufälligen Sequenzen, wodurch aus kompaktem Code riesige, abwechslungsreiche Welten geschaffen werden können.
- Alltägliche Entscheidungen: Ob die Auswahl eines Gewinners bei einer Verlosung, die Zuweisung von Schülern zu Gruppen, das zufällige Erstellen einer Playlist oder die Auswahl eines Restaurants – Zahlengeneratoren ermöglichen unparteiische Entscheidungsfindung in jeder Größenordnung.
Die zwei grundlegenden Arten von Zahlengeneratoren
Jeder Zahlengenerator gehört zu einer von zwei großen Kategorien, die sich durch die Quelle seiner Unvorhersagbarkeit unterscheiden.
Pseudozufallszahlengeneratoren (PRNGs)
Ein Pseudozufallszahlengenerator (PRNG) ist ein deterministischer Algorithmus, der einen Startwert, den sogenannten Seed , verwendet und wiederholt eine mathematische Funktion anwendet, um eine Zahlenfolge zu erzeugen. Bei gleichem Seed erzeugt ein PRNG stets exakt dieselbe Folge. Diese Folge ist im streng mathematischen Sinne nicht zufällig – sie wird vollständig durch den Seed bestimmt –, besteht aber statistische Zufälligkeitstests und eignet sich für die meisten nicht-kryptografischen Anwendungen.
Der Kernmechanismus besteht in der Verwaltung eines internen Zustands , eines Bitblocks, der in jedem Schritt transformiert wird. Die Ausgabe wird aus diesem Zustand abgeleitet, und der Zustand wird aktualisiert, bevor die nächste Ausgabe generiert wird. Die Länge der Sequenz vor ihrer Wiederholung wird als Periode bezeichnet. Ein guter Pseudozufallszahlengenerator (PRNG) hat eine so lange Periode, dass Wiederholungen in der Praxis nie auftreten.
Gängige PRNG-Algorithmen sind:
- Linearer Kongruenzgenerator (LCG): Einer der ältesten und einfachsten Pseudozufallszahlengeneratoren (PRNGs), der die Formel X <sup>n+1</sup> = (aX<sup> n +c</sup>) mod m verwendet. Schnell und einfach zu implementieren, aber mit bekannten Schwächen wie kurzen Perioden und erkennbaren Mustern in höheren Dimensionen. Wurde in vielen frühen Programmiersprachen verwendet und ist noch heute in einigen Standardbibliotheken zu finden.
- Mersenne Twister (MT19937): Dieser 1997 entwickelte Zufallszahlengenerator ist der am weitesten verbreitete in gängigen Programmiersprachen wie Python, Ruby, PHP und R. Er hat eine Periode von 2<sup> 19937 </sup> − 1, besteht praktisch alle statistischen Tests und ist schnell. Allerdings ist er nicht kryptografisch sicher – die Kenntnis von 624 aufeinanderfolgenden Ausgaben genügt, um seinen gesamten internen Zustand zu rekonstruieren und alle zukünftigen Ausgaben vorherzusagen.
- Xorshift und Xoshiro/Xoroshiro: Eine Familie schneller, moderner Pseudozufallszahlengeneratoren (PRNGs), die auf bitweisen XOR- und Schiebeoperationen basieren. Xoshiro256** und Xoroshiro128+ sind aufgrund ihrer Geschwindigkeit, geringen Zustandsgröße und hervorragenden statistischen Eigenschaften in Spiele-Engines und im numerischen Rechnen beliebt.
- PCG (Permuted Congruential Generator): Eine neuere Familie von Generatoren, die eine lineare Kongruenzbasis mit einer Permutationsausgabefunktion kombiniert. PCG-Generatoren sind schnell, statistisch exzellent und unterstützen mehrere unabhängige Datenströme, wodurch sie sich gut für parallele Simulationen eignen.
Echte Zufallszahlengeneratoren (TRNGs)
Ein echter Zufallszahlengenerator erzeugt seine Ausgabe aus einem physikalischen Prozess, der tatsächlich unvorhersehbar ist – einem Prozess, der von der Quantenmechanik, thermischem Rauschen oder anderen Quellen physikalischer Entropie bestimmt wird. Da die Quelle nichtdeterministisch ist, liefern zwei Durchläufe mit identischen Einstellungen dennoch unterschiedliche Ausgaben. Echte Zufallszahlengeneratoren können nicht so programmiert werden, dass sie eine bestimmte Sequenz reproduzieren. Dies ist sowohl ihre Stärke als auch, in manchen Kontexten, eine Einschränkung.
Zu den Quellen physikalischer Entropie, die in TRNGs verwendet werden, gehören:
- Thermisches Rauschen: Die zufällige Bewegung von Elektronen in einem Widerstand erzeugt Spannungsschwankungen, die abgetastet und digitalisiert werden können. Dies ist eine der häufigsten Quellen für Hardware-Entropie.
- Radioaktiver Zerfall: Der Zeitpunkt der Teilchenemissionen einer radioaktiven Probe ist fundamental quantenmechanisch und unvorhersehbar. Geigerzähler, die an Computer angeschlossen sind, können diese Entropie erfassen.
- Photonische Quanteneffekte: Geräte, die Photonen aufspalten und ihren Weg messen, nutzen die Quantenüberlagerung, um Bits mit nachweisbarer Zufälligkeit zu erzeugen. Kommerzielle Quanten-Zufallszahlengeneratoren (QRNGs) sind mittlerweile erhältlich.
- Atmosphärisches Rauschen: Dienste wie RANDOM.ORG erfassen Hochfrequenzrauschen aus der Atmosphäre, digitalisieren es und stellen die resultierenden Zahlen über das Internet bereit. Dies ist ein TRNG (Telephone Random Number Generator), der als Dienst angeboten wird.
- Betriebssystem-Entropiepools: Moderne Betriebssysteme sammeln Entropie aus Hardware-Interrupts, Festplattenlaufzeiten, Netzwerkpaket-Ankunftszeiten und Benutzereingaben (Tastatureingaben, Mausbewegungen). Unter Linux ist dieser Pool über
/dev/randomund/dev/urandomzugänglich; unter Windows über die CryptGenRandom-API.
Kryptografisch sichere Pseudozufallszahlengeneratoren (CSPRNGs)
Eine dritte Kategorie schließt die Lücke zwischen PRNGs und TRNGs. Ein kryptografisch sicherer Pseudozufallszahlengenerator ist ein PRNG, der mit einer echten Entropiequelle initialisiert wird und so konzipiert ist, dass seine Ausgabe selbst für einen Angreifer mit erheblichen Ressourcen rechnerisch nicht von echter Zufälligkeit zu unterscheiden ist. Die Kenntnis eines beliebigen Teils seiner Ausgabe erlaubt keine Vorhersage vergangener oder zukünftiger Werte.
Beispiele hierfür sind:
- ChaCha20: Ein Stromchiffre, der als CSPRNG in modernen Betriebssystemen und kryptografischen Bibliotheken verwendet wird, einschließlich Linux'
/dev/urandomseit Kernel 4.8. - Fortuna: Ein von Bruce Schneier und Niels Ferguson entworfener CSPRNG, der sich kontinuierlich aus mehreren Entropiequellen neu initialisiert und dadurch resistent gegen Angriffe zur Kompromittierung des Zustands ist.
- HMAC-DRBG und CTR-DRBG: Deterministische Zufallsbitgeneratoren, standardisiert durch NIST (SP 800-90A), die in kryptografischen Bibliotheken und Hardware-Sicherheitsmodulen weit verbreitet sind.
So funktioniert ein Zahlengenerator: Schritt für Schritt
Obwohl die Implementierungen variieren, folgen die meisten Zahlengeneratoren einem gemeinsamen Funktionsmuster.
- Initialisierung: Der Generator legt seinen internen Zustand fest. Bei einem PRNG bedeutet dies, einen Startwert zu akzeptieren – häufig die aktuelle Systemzeit, eine vom Benutzer eingegebene Ganzzahl oder Bytes aus einer Entropiequelle. Bei einem TRNG beinhaltet dieser Schritt die Aktivierung der physikalischen Messhardware.
- Zustandstransformation: Der Generator wendet seine mathematische Kernfunktion auf den aktuellen Zustand an und erzeugt so einen neuen Zustand. Beim Mersenne-Twister geschieht dies durch eine Twist-Operation auf einem 624-elementigen Array von 32-Bit-Ganzzahlen. Bei einem linearen Kongruenzgenerator handelt es sich um eine einfache Multiplikation, Addition und Modulo-Operation.
- Ausgabeextraktion: Ein Teil des neuen Zustands – oder eine Funktion davon – wird extrahiert und als Ausgabewert zurückgegeben. Dieser Schritt beinhaltet häufig zusätzliches Mischen oder Temperieren, um die statistischen Eigenschaften zu verbessern.
- Bereichszuordnung: Die Rohausgabe, typischerweise eine große Ganzzahl oder eine Bitfolge, wird auf den gewünschten Bereich abgebildet. Bei einer Zahl zwischen 1 und 100 wird die Rohausgabe mittels Division oder Modulo-Arithmetik skaliert. Hierbei ist Vorsicht geboten: Eine einfache Modulo-Reduktion führt zu Verzerrungen, wenn der Ausgabebereich nicht gleichmäßig in den Ausgaberaum des Generators teilbar ist.
- Wiederholung: Die Schritte 2 bis 4 werden für jede weitere angeforderte Zahl wiederholt. Der Zustand entwickelt sich kontinuierlich weiter und erzeugt den nächsten Wert in der Sequenz.
Schlüsseleigenschaften, die die Generatorqualität definieren
Nicht alle Zahlengeneratoren sind gleich. Die folgenden Eigenschaften werden verwendet, um sie zu bewerten und zu vergleichen.
| Eigentum | Was es bedeutet | Warum das wichtig ist |
|---|---|---|
| Zeitraum | Die Länge der Sequenz vor ihrer Wiederholung | Kurze Perioden verursachen Wiederholungen in langen Simulationen und führen so zu Korrelationen. |
| Gleichmäßigkeit | Jeder mögliche Ausgabewert tritt im Laufe der Zeit gleich häufig auf. | Nicht-uniforme Ausgabeverzerrungen bei Stichproben, Spielen und Simulationen |
| Unabhängigkeit | Die Kenntnis vergangener Ergebnisse liefert keine Informationen über zukünftige Ergebnisse. | Korrelierte Ergebnisse entwerten statistische Tests und ermöglichen Vorhersageangriffe |
| Unvorhersehbarkeit | Ein Beobachter kann zukünftige Werte nicht aus vergangenen Ergebnissen ableiten. | Unerlässlich für kryptografische Anwendungen; irrelevant für reproduzierbare Simulationen. |
| Reproduzierbarkeit | Derselbe Samen erzeugt immer dieselbe Sequenz | Erforderlich für Debugging, wissenschaftliche Reproduzierbarkeit und prozedurale Generierung |
| Geschwindigkeit | Wie schnell der Generator Leistung erzeugt | Hochdurchsatzsimulationen benötigen möglicherweise Milliarden von Zahlen pro Sekunde. |
| Staatsgröße | Wie viel Speicherplatz der interne Zustand belegt | Beeinträchtigt die Eignung für eingebettete Systeme und parallele Ausführung |
Statistische Tests von Zahlengeneratoren
Da Pseudozufälligkeit eine statistische Eigenschaft und keine mathematische Garantie ist, werden Generatoren mithilfe standardisierter Testreihen evaluiert, die nach erkennbaren Mustern suchen.
- NIST Statistical Test Suite (SP 800-22): Fünfzehn Tests zu Häufigkeit, Blockhäufigkeit, Läufen, längsten Läufen, Rang binärer Matrizen, Spektralanalyse (DFT), überlappenden Templates, universeller statistischer Komplexität, linearer Komplexität, serieller Komplexität, approximativer Entropie, kumulativen Summen, zufälligen Exkursionen und Varianten zufälliger Exkursionen. Erforderlich für kryptografische Zertifizierungen.
- Diehard-Tests: Entwickelt von George Marsaglia, eine Testbatterie, darunter der Geburtstagsabstandstest, der Test überlappender Permutationen und der Squeeze-Test. Historisch einflussreich; heute weitgehend überholt.
- TestU01: Eine umfassende C-Bibliothek, entwickelt an der Universität Montreal, mit drei Hauptbatterien – SmallCrush, Crush und BigCrush – wobei BigCrush die anspruchsvollste ist. Der Mersenne Twister scheitert an mehreren BigCrush-Tests; Xoshiro256** und PCG bestehen alle.
- PractRand: Eine moderne Testsuite, die in der Lage ist, sehr lange Sequenzen (Terabytes an Ausgabedaten) zu verarbeiten, um subtile, weitreichende Korrelationen zu erkennen, die kürzere Tests übersehen.
Ein Generator, der alle Tests einer bestimmten Testreihe besteht, ist nicht zwangsläufig zufällig – es ist lediglich bewiesen, dass ihm die spezifischen Muster fehlen, nach denen diese Tests suchen. Diese Unterscheidung ist grundlegend: Statistische Tests liefern einen Qualitätsnachweis, keinen mathematischen Beweis für Unvorhersagbarkeit.
Wie man einen Zahlengenerator effektiv einsetzt: Strategie und praktische Taktiken
Um einen Zufallszahlengenerator effektiv zu nutzen, definieren Sie vor der Generierung den Bereich und die Anzahl der Zahlen, wählen Sie den passenden Generatortyp für Ihren Anwendungsfall (echter Zufall vs. Pseudozufallsgenerator) und stellen Sie sicher, dass das Tool die statistischen Anforderungen Ihrer Aufgabe erfüllt. Die meisten Fehler entstehen durch falsche Einstellungen, wiederholte Ausgaben, wenn Eindeutigkeit erforderlich ist, und die Verwendung eines minderwertigen Generators für sicherheitsrelevante Anwendungen.
Schritt-für-Schritt-Strategie für die Erzielung der richtigen Ergebnisse
Schritt 1: Definieren Sie Ihren Bereich und Ihre Parameter
Bevor Sie ein Werkzeug benutzen, notieren Sie genau, was Sie benötigen. Ungenaue Angaben führen zu nutzlosen Ergebnissen. Geben Sie Folgendes an:
- Minimalwert: Die niedrigste Zahl, die in Ihrer Ausgabe akzeptabel ist (z. B. 1, 0 oder eine negative Zahl).
- Maximalwert: Die höchste zulässige Zahl (z. B. 100, 1000 oder ein benutzerdefinierter Höchstwert)
- Anzahl: Wie viele Zahlen Sie in einer einzelnen Ziehung benötigen.
- Eindeutigkeitsanforderung: Sind Duplikate zulässig oder darf jede Zahl nur einmal vorkommen?
- Zahlentyp: Nur ganze Zahlen oder Dezimalzahlen mit einer festgelegten Anzahl von Dezimalstellen
- Sortierung: Ob die Ausgabe sortiert, gemischt oder in der ursprünglichen Reihenfolge belassen werden soll.
Das Überspringen dieses Schrittes ist die häufigste Ursache für Zeitverschwendung. Wer bei einer Verlosung vergisst, Duplikate zu deaktivieren, riskiert, dieselbe Losnummer zweimal zu ziehen und von vorne beginnen zu müssen.
Schritt 2: Wählen Sie den passenden Generator für Ihren Zweck
Nicht alle Zahlengeneratoren sind gleichwertig. Die folgende Tabelle ordnet gängige Anwendungsfälle dem jeweils passenden Generatortyp zu.
| Anwendungsfall | Empfohlener Generatortyp | Hauptanforderung |
|---|---|---|
| Lotterieziehungen, Verlosungen, Werbegeschenke | Echtes Zufallsrauschen (hardwarebasiertes oder atmosphärisches Rauschen) | Öffentlich überprüfbar, unvoreingenommen |
| Statistische Stichproben, Forschung | Kryptografisch sicherer PRNG oder echter Zufall | Gleichmäßige Verteilung, Reproduzierbarkeit optional |
| Kryptografische Schlüssel, Passwörter, Token | Kryptografisch sicherer PRNG (CSPRNG) | Unvorhersagbarkeit, entropiegetrieben |
| Spielmechaniken, Simulationen | Standard-PRNG (Mersenne Twister, Xoshiro) | Geschwindigkeit, Wiederholbarkeit mit einem Saatgut |
| Unterricht, Aktivitäten im Klassenzimmer | Jeder einfache PRNG oder Online-Tool | Benutzerfreundlichkeit, ansprechendes Design |
| A/B-Testing, Zufallszuweisung | PRNG mit festem Startwert für Reproduzierbarkeit | Prüfbarkeit, konsistente Wiederholungen |
| PIN-Codes, Prüfnummern | CSPRNG | Keine vorhersehbaren Muster |
Schritt 3: Das Tool korrekt konfigurieren
Öffnen Sie den gewünschten Generator und stellen Sie alle verfügbaren Parameter ein, bevor Sie auf „Generieren“ klicken. Verwenden Sie nicht die Standardeinstellungen, es sei denn, Sie haben überprüft, ob diese Ihren Anforderungen entsprechen. Gängige Konfigurationsfelder sind:
- Bereichsfelder: Geben Sie Ihr Minimum und Maximum explizit ein, auch wenn die Standardwerte korrekt erscheinen.
- Feld „Anzahl“: Legen Sie die genaue Anzahl der benötigten Ausgaben fest.
- Eindeutig/Keine Wiederholung: Aktivieren Sie diese Option für Ziehungen, bei denen jede Zahl nur einmal vorkommen darf.
- Formatoptionen: Wählen Sie, ob die Ergebnisse als Liste, durch Kommas getrennt oder in einer Tabelle angezeigt werden sollen.
- Startwerteingabe (fortgeschritten): Um reproduzierbare Ergebnisse in Forschung oder Tests zu erzielen, geben Sie einen festen Startwert ein und protokollieren Sie ihn.
Schritt 4: Ausgabe generieren und validieren
Verwenden Sie die Ausgabe nach der Generierung nicht sofort. Führen Sie eine kurze Validierung durch:
- Bestätigen Sie, dass alle Zahlen innerhalb des von Ihnen angegebenen Bereichs liegen.
- Prüfen Sie auf Duplikate, falls Eindeutigkeit erforderlich war.
- Prüfen Sie, ob die Anzahl mit Ihrer Anfrage übereinstimmt.
- Für Forschungszwecke sollte eine einfache Häufigkeitsprüfung über mehrere Chargen hinweg durchgeführt werden, um Verteilungsanomalien zu erkennen.
- Aus Sicherheitsgründen sollten die Rohdaten niemals in einer unsicheren Umgebung angezeigt oder protokolliert werden.
Schritt 5: Ergebnisse aufzeichnen und dokumentieren
Für jede formale Verwendung – Wettbewerbe, Forschung, Audits – muss der Generierungsvorgang dokumentiert werden. Notieren Sie das verwendete Tool, die URL oder Softwareversion, Datum und Uhrzeit, die eingegebenen Parameter und das Ergebnis. Dadurch entsteht ein Prüfpfad, der im Streitfall Schutz bietet. Einige Online-Dienste, wie z. B. RANDOM.ORG, stellen für jeden Generierungsvorgang speziell zu diesem Zweck ein Zertifikat oder einen Zeitstempel aus.
Praktische Taktiken für spezifische Szenarien
Eine Tombola oder Lotterie auf dem Jahrmarkt veranstalten
- Weisen Sie allen Teilnehmern vor der Generierung fortlaufende Nummern zu (1 bis N, wobei N die Gesamtzahl der Einträge ist).
- Verwenden Sie einen echten Zufallsgenerator, keinen PRNG, damit das Ergebnis nicht aus einem Startwert (Seed) abgeleitet werden kann.
- Generieren Sie das Dokument vor Zeugen oder zeichnen Sie den Bildschirm auf, um Streitigkeiten zu vermeiden.
- Wenn mehrere Gewinner gezogen werden, aktivieren Sie die Einstellung „Keine Wiederholung“, damit dieselbe Person nicht zweimal gewinnen kann.
- Veröffentlichen Sie bitte die vollständigen Parameter zusammen mit dem Ergebnis, damit jeder überprüfen kann, ob die Auslosung fair war.
Zahlen für die statistische Forschung generieren
- Entscheiden Sie im Voraus, ob Sie eine Gleichverteilung, Normalverteilung oder eine andere Verteilung benötigen – die meisten Standardgeneratoren erzeugen nur Gleichverteilungen.
- Verwenden Sie einen festen Startwert, wenn Sie reproduzierbare Ergebnisse bei mehreren Durchläufen desselben Experiments benötigen.
- Generieren Sie eine größere Stichprobe als unbedingt erforderlich und verwerfen Sie dann Werte außerhalb Ihres Zielbereichs, anstatt neu zu würfeln, um Verzerrungen zu vermeiden.
- Prüfen Sie Ihre Stichprobe mit einem Chi-Quadrat-Anpassungstest oder einem Kolmogorov-Smirnov-Test, wenn die Qualität der Zufälligkeit für Ihre Schlussfolgerungen von Bedeutung ist.
Sichere Token und Codes erstellen
- Verwenden Sie stets einen kryptografisch sicheren Zufallszahlengenerator (CSPRNG). In Python verwenden Sie `secrets.randbelow()` oder `secrets.token_hex()` . In JavaScript verwenden Sie `crypto.getRandomValues()` . Verwenden Sie aus Sicherheitsgründen niemals `Math.random()`.
- Generieren Sie Token mit ausreichend Entropie für Ihr Bedrohungsmodell – eine 6-stellige numerische PIN hat nur etwa 20 Bit Entropie, was für alles, was über eine einfache Verifizierung mit geringem Risiko hinausgeht, unzureichend ist.
- Vermeiden Sie die Generierung von Codes, die einander ähnlich sehen (z. B. 000001, 000002) – verwenden Sie einen großen Bereich, um Enumerationsangriffe zu verhindern.
- Die generierten Token werden gehasht und nicht im Klartext gespeichert.
Verwendung von Zahlengeneratoren in Spielen und Simulationen
- Wählen Sie einen PRNG-Algorithmus, der hinsichtlich Geschwindigkeit und Periodenlänge geeignet ist – der Mersenne Twister hat eine Periode von 2 19937 −1 und eignet sich daher für lange Simulationen.
- Verwenden Sie für den Start Ihres PRNG eine Quelle mit hoher Entropie (Systemtakt kombiniert mit Hardwarerauschen), um identische Sequenzen bei wiederholten Ausführungen zu vermeiden.
- Um Fairness im Mehrspielermodus zu gewährleisten, werden die Zahlen serverseitig generiert und erst dann enthüllt, nachdem alle Spieler ihre Züge ausgeführt haben (ein Commit-Reveal-Schema).
- Log-Seeds, die im Playtesting verwendet werden, damit Sie exakte Spielzustände zum Debuggen reproduzieren können.