Technik

Echter Zufall gegen Pseudozufall verständlich erklärt

Wie Math.random und Crypto.getRandomValues Zufallszahlen erzeugen, was Seed und Determinismus bedeuten und wann welche Methode im Browser genügt.

Lesezeit 7 Min. Aktualisiert 08.06.2026 4 Quellen Jan-Tristan Rudat Jan-Tristan Rudat
Inhalt

Wenn ein Browser eine Zufallszahl ausspuckt, sieht das für den Nutzer immer gleich aus. Unter der Haube gibt es aber zwei grundverschiedene Wege, wie diese Zahl entsteht. Der eine berechnet sie aus einer Formel, der andere zapft eine physikalische Rauschquelle an. Der Unterschied ist nicht akademisch, er entscheidet darüber, ob deine Zufallszahlen für ein Würfelspiel taugen oder ob sie ein Passwort schützen dürfen. In diesem Ratgeber trenne ich die beiden Welten sauber und zeige, wann welche im Browser zum Einsatz kommt.

Pseudozufall, Berechnung statt Würfel

Ein Pseudozufallszahlen-Generator, kurz PRNG, ist im Kern ein Algorithmus. Er bekommt einen Startwert, den Seed, und leitet daraus Schritt für Schritt eine lange Zahlenfolge ab. Jede neue Zahl ergibt sich deterministisch aus dem internen Zustand des Generators. Das Ergebnis sieht zufällig aus, statistisch ist es gleichverteilt und ohne erkennbares Muster, aber es ist berechnet, nicht gewürfelt.

Der entscheidende Punkt: Kennst du den Seed und den Algorithmus, kannst du die komplette Folge vorhersagen oder reproduzieren. Das ist mal Segen, mal Fluch. In Tests willst du genau das, denn mit festem Seed läuft ein Programm bei jedem Durchlauf identisch ab. Für Sicherheit ist es das Aus, denn was reproduzierbar ist, ist angreifbar.

In JavaScript ist Math.random der eingebaute PRNG. Er liefert eine Fließkommazahl zwischen 0 (inklusive) und 1 (exklusive). Die meisten Generatoren skalieren diesen Wert dann auf den gewünschten Bereich, etwa indem sie ihn mit der Bereichsbreite multiplizieren und die Untergrenze addieren. Der Browser bestimmt selbst, welchen konkreten Algorithmus und welchen Seed er nutzt, der Entwickler hat darauf keinen Einfluss.

Echter Zufall, wenn die Physik würfelt

Echter Zufall kommt nicht aus einer Formel, sondern aus der physikalischen Welt. Quellen sind etwa thermisches Rauschen in Halbleitern, das Timing radioaktiver Zerfälle oder atmosphärisches Rauschen, wie es Dienste wie RANDOM.ORG nutzen. Solche Prozesse gelten nach heutigem Verständnis als grundsätzlich unvorhersehbar. Es gibt keinen Seed, aus dem sich die Folge nachrechnen ließe.

Moderne Betriebssysteme sammeln solches Rauschen in einem Entropie-Pool und stellen daraus Zufall für Anwendungen bereit. Im Browser greift Crypto.getRandomValues auf genau diese Quelle zu. Streng genommen ist das oft ein kryptografisch sicherer PRNG, der aus echter physikalischer Entropie geseedet und ständig nachgespeist wird. Für die Praxis verhält er sich wie echter Zufall: nicht vorhersehbar und nicht reproduzierbar.

Die Frage ist nie, ob Zufall echt aussieht, sondern ob ein Angreifer ihn vorausberechnen kann.

— Jan-Tristan Rudat, AKARA Solutions

Math.random gegen Crypto.getRandomValues im Vergleich

Beide APIs stehen in jedem modernen Browser bereit, lösen aber unterschiedliche Probleme. Die folgende Tabelle stellt die Eigenschaften gegenüber.

MethodeQuelleVorhersehbarGeschwindigkeitTypischer Einsatz
Math.randomPseudozufall (PRNG)ja, bei bekanntem Zustandsehr hochSpiele, Animationen, einfache Ziehungen
Crypto.getRandomValueskryptografisch sicherneinhochTokens, Passwörter, Schlüssel, Salts
Physikalischer Dienstechtes Rauschenneinniedrig (Netzwerk)externe Audits, Hardware-Entropie

Math.random ist die schnelle Alltagslösung. Sie ist mehr als ausreichend, solange das Ergebnis keinen Schaden anrichtet, wenn jemand es vorhersagt. Sobald aber ein Geheimnis auf dem Spiel steht, führt kein Weg an Crypto.getRandomValues vorbei. Diese Methode füllt einen typisierten Array mit kryptografisch sicheren Werten und ist genau für sicherheitsrelevante Aufgaben gebaut.

Wie sicher fühlt sich der Unterschied an

Der praktische Unterschied lässt sich grob veranschaulichen, indem man betrachtet, wie viel Aufwand nötig wäre, um die nächste Zahl vorherzusagen. Die folgende Darstellung ist illustrativ und stellt relative Größenordnungen dar, keine gemessenen Werte.

Relativer Aufwand, die nächste Zahl vorherzusagen (illustrativ) Fester Seed bekannt 1 Index Math.random Zustand 12 Index Crypto.getRandomValues 95 Index
Illustrative Skala: Je höher der Balken, desto unrealistischer ist eine Vorhersage. Crypto-Werte gelten praktisch als nicht vorhersagbar.

Die Grafik macht den Sprung deutlich. Ist der Seed eines PRNG bekannt, ist die Folge trivial nachzurechnen. Selbst ohne bekannten Seed bleibt ein PRNG-Zustand prinzipiell rekonstruierbar. Bei einer kryptografisch sicheren Quelle dagegen ist eine Vorhersage nach heutigem Stand praktisch ausgeschlossen, weil keine ausnutzbare Struktur in der Folge steckt.

0 bis 1

Wertebereich von Math.random (1 exklusive)

2008

Crypto-API in Browsern verfügbar seit etwa

256 Bit

Typische Entropie für sichere Tokens

Vom Bereich 0 bis 1 zur gewünschten Zufallszahl

Beide APIs liefern zunächst Rohzufall, nicht direkt die Zahl, die du im Generator siehst. Math.random gibt eine Fließkommazahl zwischen 0 und 1 zurück, Crypto.getRandomValues füllt einen Array mit ganzzahligen Werten. Den Schritt zur gewünschten Bereichszahl erledigt eine kleine Umrechnung: Der Rohwert wird auf die Bereichsbreite skaliert und um die Untergrenze verschoben. Aus 0 bis 1 wird so etwa 1 bis 49.

Bei dieser Umrechnung lauert eine subtile Falle, der sogenannte Modulo-Bias. Wer eine große Zufallszahl naiv per Restwert auf einen kleinen Bereich abbildet, bevorzugt leicht die unteren Werte, wenn der Bereich nicht glatt aufgeht. Ein sorgfältig gebauter Generator gleicht das aus, indem er ungünstige Rohwerte verwirft und neu zieht. Das Ergebnis bleibt damit sauber gleichverteilt, egal welche der beiden Quellen darunter arbeitet.

Was Entropie mit Vorhersehbarkeit zu tun hat

Hinter der Frage echt oder pseudo steckt ein einziger Begriff: Entropie. Sie misst, wie viel echte Unvorhersehbarkeit in einer Quelle steckt. Ein PRNG erzeugt keine neue Entropie, er verteilt nur die Entropie seines Seeds über eine lange Folge. Ist der Seed knapp, etwa nur die aktuelle Uhrzeit, lässt sich die ganze Folge mit überschaubarem Aufwand durchprobieren.

Eine kryptografisch sichere Quelle wird dagegen aus einem großen, ständig nachgefütterten Entropie-Pool des Betriebssystems gespeist. Mausbewegungen, Tastatur-Timings, Festplatten-Latenzen und Hardware-Rauschen fließen dort zusammen. Diese Vielfalt ist der Grund, warum ein Angreifer den nächsten Wert nicht vorausberechnen kann: Er müsste den gesamten physikalischen Zustand des Systems kennen, und das ist praktisch ausgeschlossen.

Wann welche Methode im Browser genügt

Die Entscheidung lässt sich auf eine einzige Frage zuspitzen: Würde es schaden, wenn jemand das nächste Ergebnis kennt? Lautet die Antwort nein, ist Pseudozufall die richtige, weil schnellere Wahl. Lautet sie ja, gehört die Aufgabe in die Crypto-API.

Für die Ziehungen auf zufallszahlen-generieren.de bedeutet das konkret: Lottozahlen, Würfel und Verlosungen im privaten oder vereinsinternen Rahmen sind mit Pseudozufall bestens bedient. Niemand kann den internen Zustand des Generators auslesen, und das Ergebnis hat keine sicherheitskritische Bedeutung. Sobald aus einer Zufallszahl aber ein Geheimnis wird, etwa ein generiertes Passwort, sollte die kryptografisch sichere Quelle ran.

Worauf es bei der Wahl wirklich ankommt

Pseudozufall und echter Zufall sind keine Konkurrenten, sondern Werkzeuge für verschiedene Jobs. Pseudozufall ist schnell, reproduzierbar und für Spiele, Animationen und alltägliche Ziehungen völlig ausreichend. Echter beziehungsweise kryptografisch sicherer Zufall ist unvorhersehbar und gehört überall dort hin, wo eine erratene Zahl Schaden anrichten könnte. Die saubere Trennung dieser beiden Welten erspart dir die zwei klassischen Fehler: einen schwerfälligen Krypto-Aufruf für ein harmloses Würfelspiel und, weit gefährlicher, einen vorhersagbaren PRNG für ein echtes Geheimnis. Wer die Leitfrage nach dem möglichen Schaden stellt, trifft die Wahl in Sekunden.

Häufige Fragen

Was ist der Unterschied zwischen echtem und pseudozufälligem Zufall?

Pseudozufall stammt aus einem Algorithmus, der aus einem Startwert eine berechenbare Zahlenfolge ableitet. Echter Zufall stammt aus physikalischen Quellen wie thermischem Rauschen, die sich nicht vorhersagen lassen. Pseudozufall ist schnell und reproduzierbar, echter Zufall ist unvorhersehbar.

Ist Math.random echter Zufall?

Nein. Math.random ist ein Pseudozufallszahlen-Generator. Er liefert für die meisten Spiele, Animationen und einfache Ziehungen völlig ausreichende Zahlen, eignet sich aber nicht für Sicherheitszwecke wie Passwörter oder Tokens.

Wann brauche ich Crypto.getRandomValues?

Immer wenn die Zahlen nicht vorhersagbar sein dürfen, etwa für Sitzungs-Tokens, Passwörter, Salts oder Schlüssel. Crypto.getRandomValues nutzt eine kryptografisch sichere Quelle des Betriebssystems.

Was bedeutet Seed bei Pseudozufall?

Der Seed ist der Startwert des Algorithmus. Bei gleichem Seed entsteht exakt dieselbe Zahlenfolge. Das ist für reproduzierbare Tests nützlich, macht den Generator aber vorhersehbar und damit für Sicherheit ungeeignet.

Reicht Pseudozufall für eine Verlosung?

Für die meisten Verlosungen und Gewinnspiele ja, solange niemand den internen Zustand des Generators kennt und manipulieren kann. Bei hohen Geldwerten oder rechtlicher Relevanz ist eine kryptografisch sichere Quelle die sicherere Wahl.

Quellen

Jan-Tristan Rudat

Über die Autorenschaft

Jan-Tristan Rudat

Redakteur zufallszahlen-generieren.de

Themengebiet: Echter und Pseudo-Zufall, Anwendungsfälle

Mehr über Jan-Tristan Rudat →

Verwandte Artikel

Jetzt Zufallszahl generieren

Bereich und Anzahl wählen, die Zufallszahlen erscheinen sofort, ohne Anmeldung.

Zum Generator
Anzeige
Anzeige
Anzeige
Anzeige