Zufall & Entropie
Erstmal einfach — Was meinen wir mit Entropie?
Entropie ist ein schickes Wort für „wie schwer ist das zu erraten?". Eine Münze hat 1 Bit Entropie (Kopf oder Zahl), ein Würfel etwa 2,58 Bit, ein zufälliges 8-Zeichen-Passwort aus Kleinbuchstaben rund 37 Bit.
Je mehr Bits, desto mehr Versuche braucht ein Angreifer. Pro Bit verdoppelt sich der Aufwand.
Krypto steht und fällt mit echtem Zufall: Schlüssel, Nonces, Salts, Initialisierungsvektoren — alles davon muss unvorhersagbar sein. Schlechter Zufall ist die häufigste Ursache praktischer Krypto-Brüche — nicht zerbrochene Algorithmen.
Häufiger Denkfehler — „Passwort123!“ sieht doch komplex aus?
Sieht so aus, ist es nicht. Diese Rechnung hier geht von zufälligen Zeichen aus. Echte Passwörter folgen Mustern: Worte, dann ein paar Ziffern, dann ein Sonderzeichen. Angreifer nutzen Wörterbuch-Angriffe, die genau diese Muster ausprobieren — die effektive Entropie eines „kreativen" Passworts ist oft um Größenordnungen niedriger als das, was die Rechnung oben anzeigt.
Daher: lieber vier zufällige Worte („richtig pferd batterie heftklammer", ~44 Bit) oder ein Passwort-Manager mit generierten Passwörtern (~80–100 Bit). Komplexitätsregeln à la „mindestens 1 Sonderzeichen" sind weitgehend Sicherheitstheater.
Warum eigentlich? — Warum braucht Krypto so viel Zufall?
Praktisch jedes moderne Verfahren braucht frische Zufallswerte:
- Schlüssel — sonst sind sie ratbar.
- Nonces / IVs (in AES-GCM, CTR) — derselbe Nonce mit demselben Schlüssel kann ganze Nachrichten leaken.
- Salts beim Passwort-Hashing — damit gleiche Passwörter nicht gleiche Hashes ergeben.
- Ephemerale Schlüssel in Diffie-Hellman — für Forward Secrecy.
Tiefer rein — Echter vs. pseudo-Zufall
Computer sind deterministisch — sie können von Natur aus keinen Zufall erzeugen. Lösung: man sammelt Entropie aus unvorhersagbaren physikalischen Quellen (Maus, Tastatur-Timing, Festplatten-Jitter, Hardware-RNG in modernen CPUs) und füttert damit einen kryptografischen PRNG (CSPRNG), der daraus beliebig viele „zufällige" Bytes generiert.
Beispiel: /dev/urandom unter Linux, BCryptGenRandom unter Windows, crypto.getRandomValues() im Browser. Nutze niemals Math.random() für Sicherheit — das ist ein einfacher PRNG, dessen interner Zustand nach wenigen Ausgaben rekonstruierbar ist.
Geschichte — Berühmte Zufalls-Disaster
- Debian OpenSSL 2008: Ein Patch entfernte aus Versehen die Entropie-Sammlung. Zwei Jahre lang erzeugte Debian SSL-Schlüssel aus nur 32.768 möglichen Werten — trivial knackbar.
- PlayStation 3 (2010): Sony nutzte für ECDSA-Signaturen denselben Zufallswert k immer wieder. Aus zwei Signaturen ließ sich der private Schlüssel direkt ausrechnen — Konsole komplett geöffnet.
- Bitcoin-Wallets: Mehrere frühe Wallet-Apps nutzten schwachen Zufall — Coins wurden gezielt geleert.