In diesem Artikel
Was ist Zufallszahlengenerierung?
Zufallszahlengenerierung ist der Vorgang, Zahlen zu erzeugen, die sich nicht im Voraus vorhersagen lassen. Computer sind deterministische Maschinen – ohne externe Eingaben können sie keine echte Zufälligkeit erzeugen. Unterschiedliche Verfahren liefern unterschiedliche Qualitäten von Zufälligkeit, was für Sicherheitsanwendungen enorm wichtig ist.
Echte Zufallszahlengeneratoren (TRNGs) gewinnen Entropie aus physikalischen Vorgängen: Mausbewegungen, Tastaturanschlägen, Ankunftszeiten von Netzwerkpaketen oder speziellen Hardwaresensoren. Pseudozufallszahlengeneratoren (PRNGs) nutzen mathematische Algorithmen, die mit Entropie initialisiert werden, um Folgen zu erzeugen, die zufällig erscheinen.
So werden Zufallszahlen erzeugt
CheckTown verwendet den kryptografisch sicheren Zufallszahlengenerator des Browsers.
- Entropiequelle – nutzt window.crypto.getRandomValues(), das aus der Entropie auf Betriebssystemebene schöpft
- Bereichsabbildung – bildet rohe Zufallswerte verzerrungsfrei auf Ihren angegebenen Min-/Max-Bereich ab
- Stapelerzeugung – erzeugen Sie mehrere Zahlen auf einmal für Listen, Arrays oder Massenanforderungen
Kostenlos testen – keine Registrierung erforderlich
Zufallszahlen erzeugen →Wann sich ein Zufallszahlengenerator lohnt
Die Zufallszahlengenerierung hat zahlreiche Anwendungen in Entwicklung, Tests und Statistik.
- Tests – erzeugen Sie zufällige Testdaten, um Fixtures zu füllen oder Testdatenbanken zu befüllen
- Stichproben – wählen Sie Zufallsstichproben aus Datensätzen für statistische Analysen oder die Zuordnung in A/B-Tests
- Spiele und Simulationen – erzeugen Sie unvorhersehbare Eingaben für Simulationen, Spiele oder Lotterien
Häufig gestellte Fragen
Was ist der Unterschied zwischen Math.random() und crypto.getRandomValues()?
Math.random() verwendet einen schnellen PRNG, der beim Start initialisiert wird. Er eignet sich für Simulationen und Spiele, aber nicht für Sicherheitszwecke. crypto.getRandomValues() nutzt den CSPRNG (kryptografisch sicherer PRNG) des Betriebssystems, der sich zum Erzeugen von Tokens, Schlüsseln und anderen sicherheitsrelevanten Werten eignet. Verwenden Sie für Sicherheitszwecke stets crypto.getRandomValues().
Kann ich Zufallszahlen für kryptografische Schlüssel verwenden?
Ja, aber nur, wenn sie mit einem CSPRNG erzeugt wurden. Zufallszahlen von Math.random() oder ähnlichen nicht-kryptografischen PRNGs sind bei bekanntem Seed und ausreichend vielen Ausgabewerten vorhersehbar. Kryptografische Schlüssel, Tokens, Salts und Nonces müssen mit kryptografisch sicherer Zufälligkeit erzeugt werden.
Was ist Modulo-Bias und wie wirkt er sich auf Zufallszahlenbereiche aus?
Modulo-Bias tritt auf, wenn ein Zufallswert mit dem Operator % auf einen Bereich abgebildet wird. Ist der Wertebereich der Zufallszahl nicht gleichmäßig durch die Bereichsgröße teilbar, treten manche Werte häufiger auf als andere. Bildet man zum Beispiel 0–255 mit % 10 auf 0–9 ab, erscheinen 0–5 etwas häufiger. CheckTown verwendet Rejection Sampling, um diese Verzerrung zu vermeiden.