Zufallszahlen: Pseudozufall und echter Zufall
Kurz: Computer sind deterministisch, deshalb erzeugen sie Zufall meist mit einer Rechenvorschrift (Pseudozufall). Echter Zufall kommt aus physikalischen Quellen wie Rauschen, Zeitmessung oder Radioaktivität.
Genauer: Ein Pseudozufallsgenerator (PRNG) startet mit einem Startwert (Seed) und berechnet daraus eine Zahlenfolge, die zufällig aussieht, aber vollständig vorherbestimmt ist. Wer den Seed und das Verfahren kennt, kann alles vorhersagen. Für Spiele und Simulationen reicht das, für Kryptografie nicht.
Im Detail
- PRNG: Mersenne Twister, Xorshift, PCG. Schnell, gut verteilt, aber vorhersagbar.
- CSPRNG: Kryptografisch sicherer Generator (ChaCha20, AES-CTR, HMAC-DRBG). Selbst bei Kenntnis früherer Ausgaben nicht vorhersagbar, gespeist mit echter Entropie.
- TRNG (echter Zufall): Elektrisches Rauschen, thermisches Rauschen, Jitter von Uhren, Zeitpunkte von Tastendrücken, spezielle Chip-Befehle (
RDRANDbei Intel/AMD). - Betriebssystem: Linux sammelt Entropie und stellt
/dev/urandomundgetrandom()bereit, WindowsBCryptGenRandom. - Verwendung: Passwörter, Schlüssel, Sitzungs-Tokens, Salt: immer CSPRNG. Würfeln im Spiel, Mischen von Karten: PRNG genügt.
- Fehler:
Math.random()für Tokens zu nutzen ist eine bekannte Sicherheitslücke. - Beispiel aus der Praxis: Cloudflare und die Lavalampen (LavaRand).
Siehe auch: zufallswerte, Zufall und Runden in vielen Programmiersprachen