In einem Satz
Ein Passwort-Generator erstellt eine Zeichenkette, die so zufällig ist, dass es für einen Computer praktisch unmöglich ist, sie zu erraten, selbst mit Milliarden von Versuchen pro Sekunde.
Welches Problem es löst
Wir Menschen sind wandelnde, sprechende, mustererkennende Maschinen. Wir sind super darin, Abkürzungen zu finden, Gesichter in Wolken zu sehen und uns an Melodien zu erinnern. Wir sind aber auch absolut grottenschlecht darin, Zufälligkeit zu erzeugen.
Wenn wir gebeten werden, ein Passwort zu erstellen, greift unser Gehirn auf Bekanntes zurück: Namen von Haustieren (fluffy1), wichtige Daten (MamaGeb65!), Lieblingssportvereine (GoPackGo2024) oder Tastaturmuster (qwerty12345). Wir denken, wir wären clever, wenn wir ein o durch eine 0 ersetzen oder ein Ausrufezeichen am Ende hinzufügen, aber wir folgen nur einem etwas komplexeren, aber immer noch vorhersagbaren Muster.
Das war in den Anfängen der Computerzeit noch in Ordnung. Aber als die Rechenleistung explodierte, automatisierten Angreifer das Ratespiel. Sie bauten Tools, um jedes Wort im Wörterbuch auszuprobieren (ein „Wörterbuchangriff“). Dann fügten sie Zahlen, gängige Ersetzungen und Sonderzeichen hinzu. Heute kann eine moderne GPU Milliarden von Versuchen pro Sekunde durchführen. Ein Passwort wie P@ssw0rd1! mag für einen Menschen komplex aussehen, aber für einen Computer ist es eine leichte Beute, die in Minuten, wenn nicht Sekunden, erraten werden kann.
Das Problem, das ein Passwort-Generator löst, ist das „menschliches Gehirn“-Problem. Er lagert die Aufgabe, einen geheimen Schlüssel zu erstellen, an eine Maschine aus, die keine Vorurteile, keine Lieblings-Haustiernamen und keine Vorstellung davon hat, was „zufällig aussieht“. Sie folgt einfach mathematischen Prinzipien, um eine Zeichenkette zu erzeugen, die für alle praktischen Zwecke reines Rauschen ist – und dieses Rauschen ist eine Symphonie für sicherheitsbewusste Entwickler.
Wie es unter der Haube funktioniert
Ein guter Passwort-Generator würfelt nicht einfach Buchstaben zusammen. Es ist ein sorgfältiger, kalkulierter Prozess, der auf dem mathematischen Konzept der Entropie beruht. Stell es dir wie eine High-Tech-Würfelmaschine vor.
Die geheime Zutat: Entropie
In der Kryptographie ist Entropie ein Maß für Unvorhersehbarkeit oder Zufälligkeit. Hohe Entropie bedeutet, ein Wert ist sehr schwer zu erraten; niedrige Entropie bedeutet, er ist vorhersagbar. Dein Geburtstag hat eine niedrige Entropie. Das Ergebnis von 100 Münzwürfen hat eine hohe Entropie.
Ein Passwort-Generator benötigt eine Quelle für hochwertige Zufälligkeit, um seine Arbeit zu erledigen. In einem modernen Webbrowser ist diese Quelle typischerweise die Web Crypto API, speziell eine Funktion wie crypto.getRandomValues(). Das ist nicht das Math.random() deines Opas. Anstatt einen einfachen, vorhersagbaren Algorithmus zu verwenden, greift sie auf den Entropie-Pool des Betriebssystems zu. Dieser Pool ist ein Kessel des Chaos, gerührt mit unvorhersehbaren Eingaben wie:
- Die genauen Zeitpunkte deiner Mausbewegungen und Klicks
- Der Rhythmus deiner Tastenanschläge
- Rauschen von Hardware-Geräten (wie dem Lüfter oder der Festplatte)
- Zeitliche Abstimmung von Netzwerkpaketen
Der Browser verwendet diesen kryptographisch sicheren Pseudozufallszahlengenerator (CSPRNG), um einen Strom von Zahlen zu erhalten, die für Sicherheitszwecke unvorhersehbar genug sind. Das ist das Rohmaterial für unser Passwort.
Den Zeichenvorrat zusammenstellen
Als Nächstes definiert der Generator das „Alphabet“, aus dem er wählen kann. Das ist nicht nur A-Z. Es ist der komplette Satz von Zeichen, den du erlaubt hast. Eine typische Konfiguration sieht so aus:
- Kleinbuchstaben:
abcdefghijklmnopqrstuvwxyz(26 Zeichen) - Großbuchstaben:
ABCDEFGHIJKLMNOPQRSTUVWXYZ(26 Zeichen) - Zahlen:
0123456789(10 Zeichen) - Sonderzeichen:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~(32 Zeichen)
Wenn du alle vier Sätze aktivierst, hat dein Zeichenvorrat (N) eine Größe von 26 + 26 + 10 + 32 = 94 möglichen Zeichen. Die Größe dieses Vorrats ist ein entscheidender Faktor für die Stärke des endgültigen Passworts.
Würfeln: Der Algorithmus
Mit einer Quelle für Zufallszahlen und einem Vorrat an Zeichen ist der Prozess überraschend einfach:
- Zufallszahl holen: Frage den CSPRNG nach einer Zufallszahl zwischen 0 und 93 (die Gesamtgröße unseres Zeichenvorrats minus eins).
- Zeichen auswählen: Verwende diese Zahl als Index, um ein Zeichen aus dem Vorrat auszuwählen. Wenn die Zufallszahl zum Beispiel
74ist und das 74. Zeichen in unserem Vorrat&ist, dann ist&das erste Zeichen unseres Passworts. - Wiederholen: Mache das immer wieder für die gewünschte Länge (
L) des Passworts.
Ein vereinfachtes JavaScript-ähnliches Beispiel könnte so aussehen:
function generatePassword(length, characterPool) {
let password = "";
const poolSize = characterPool.length;
// Get an array of random numbers in one go for efficiency
const randomValues = new Uint32Array(length);
window.crypto.getRandomValues(randomValues);
for (let i = 0; i < length; i++) {
// Use the random number to pick a character from the pool
const randomIndex = randomValues[i] % poolSize;
password += characterPool[randomIndex];
}
return password;
}
const allChars = "abc...XYZ...123...#$!..."; // Pool of 94 chars
const myStrongPassword = generatePassword(16, allChars);
// Result: something like "9k&vB$@p!Z*rE#wJ"
Der Schlüssel ist, eine Gleichverteilung sicherzustellen – jedes Zeichen im Vorrat muss die gleiche Chance haben, für jede Position im Passwort ausgewählt zu werden.
Stärke messen: Entropie in Bits
Wie stark ist also das Ergebnis? Wir messen es in „Bits an Entropie“. Die Formel lautet log₂(Gesamtkombinationen). Die Gesamtzahl der Kombinationen ist die Größe des Zeichenvorrats (N) hoch der Passwortlänge (L), also N^L.
Die Formel für die Entropie in Bits lautet: H = L * log₂(N)
Schauen wir uns an, wie sich das auswirkt.
| Länge (L) | Zeichensatz (N) | Kombinationen (N^L) | Entropie in Bits (H) | Zeit zum Knacken (bei 10¹² Versuchen/Sek.) |
|---|---|---|---|---|
| 8 | Nur Kleinbuchstaben (26) | 208 Milliarden | ~37,6 | Millisekunden |
| 8 | Alle Zeichen (94) | 6 Billiarden | ~52,4 | Minuten |
| 12 | Alle Zeichen (94) | 4,7 x 10²³ | ~78,7 | Tausende von Jahren |
| 16 | Alle Zeichen (94) | 3,7 x 10³¹ | ~104,9 | Billionen von Jahren |
| 24 | Alle Zeichen (94) | 2,3 x 10⁴⁷ | ~157,3 | Praktisch ewig |
Wie du siehst, fügt jedes Zeichen, das du zur Länge hinzufügst, nicht einfach nur Stärke hinzu – es multipliziert sie. Dieses exponentielle Wachstum ist der Grund, warum ein 16-stelliges Passwort nicht nur doppelt so stark ist wie ein 8-stelliges, sondern Abermilliarden Mal stärker. Das ist das mathematische Rückgrat der Passwortsicherheit.
Geschichten aus der Praxis
Die „Passwort123“-Kaskade
Eine Junior-Entwicklerin, nennen wir sie Alex, jonglierte für ein neues Projekt mit einem Dutzend Diensten: GitHub, ein Cloud-Server-Anbieter, ein Datenbankdienst und mehrere SaaS-Monitoring-Tools. Um es einfach zu halten, benutzte sie ein Passwort, das sie sich merken konnte: ProjektName2023!. Es fühlte sich sicher genug an. Eines Tages gab der obskure Forum-Software-as-a-Service, bei dem sie sich angemeldet hatte, um einen Bug zu verfolgen, ein Datenleck bekannt. Ihre Benutzerdatenbank, einschließlich gehashter Passwörter, wurde geleakt. Unglücklicherweise verwendeten sie einen schwachen Hashing-Algorithmus, und innerhalb von Stunden hatten Cracker die Hashes in Klartext zurückverwandelt. Angreifer führten dann automatisierte Skripte aus und probierten die geleakten E-Mail:Passwort-Kombinationen bei großen Diensten aus. Bei Alex' Account landeten sie einen Volltreffer. Ihr Passwort ProjektName2023! verschaffte ihnen Zugang zu ihrem Cloud-Anbieter und ihrem GitHub-Repo. Sie kopierten den Quellcode und die Kundendaten und löschten dann die Server.
Lektion: Passwort-Wiederverwendung ist eine tickende Zeitbombe. Ein Datenleck an einer Stelle wird zu einem Datenleck überall. Jeder Dienst benötigt ein einzigartiges, zufällig generiertes Passwort.
Der abgewehrte Brute-Force-Angriff
Ein Sysadmin namens Ben war dabei, einen neuen, öffentlich zugänglichen SSH-Server abzusichern. Dieser Server war ein verlockendes Ziel, und er wusste, dass er von Bots gescannt werden würde, sobald er online ging. Für den root-Benutzeraccount (den er sowieso für externe Logins deaktivieren wollte) versuchte er gar nicht erst, sich ein Passwort auszudenken. Er generierte eine 32-stellige Zeichenkette aus komplettem Kauderwelsch unter Verwendung aller Zeichensätze: etwas wie q#8v...G@z7. Eine Woche später, neugierig geworden, überprüfte er die Authentifizierungs-Logs des Servers. Er fand einen schrecklichen Anblick: Millionen von fehlgeschlagenen Anmeldeversuchen von IP-Adressen aus der ganzen Welt. Die Bots führten einen unerbittlichen Brute-Force-Angriff durch und probierten gängige Passwörter, Wörterbuchwörter und sequentielle Zeichen aus. Aber gegen seine 32-Zeichen-Festung waren sie wie Kieselsteine, die gegen einen Berg geworfen werden. Sie kamen nicht einmal in die Nähe.
Lektion: Deine erste Verteidigungslinie gegen automatisierte, wahllose Angriffe ist ein Passwort, das so komplex und lang ist, dass ein Brute-Force-Angriff mathematisch undurchführbar ist.
Der „leichte Sieg“ der Pentesterin
Maria, eine Penetrationstesterin, wurde beauftragt, die Sicherheit eines mittelständischen Unternehmens zu bewerten. Sie begann mit „Social Engineering“ und Aufklärung. Während sie bei einer Führung durch das Büro ging, beobachtete sie unauffällig die Arbeitsplätze der Leute. An der Seite eines Monitors klebte ein Post-it mit Winter2024$. Es gehörte jemandem aus der Buchhaltung. Dieses Passwort folgte dem klassischen „menschlichen“ Muster: ein gebräuchliches Wort, die aktuelle Jahreszeit/das Jahr und ein Symbol am Ende. Es war ein Passwort, das entwickelt wurde, um eine Richtlinie zu erfüllen (Muss einen Großbuchstaben, eine Zahl, ein Symbol enthalten), aber trotzdem einprägsam zu sein. Für Maria war es eine offene Tür. Sie benutzte es, um sich in die Finanzsoftware des Unternehmens einzuloggen und bewies damit, dass sie auf sensible Daten hätte zugreifen und diese manipulieren können.
Lektion: Selbst wenn sie eine Passwortrichtlinie befolgen, erstellen Menschen vorhersagbare Passwörter. Echte Zufälligkeit von einem Generator entfernt das menschliche Element, das oft das schwächste Glied ist.
Häufige Fehler und Fallstricke
- Einem zwielichtigen Generator vertrauen. Sei vorsichtig bei zufälligen Websites, die Passwortgenerierung anbieten. Eine bösartige Seite könnte jedes Passwort protokollieren, das sie erstellt. Halte dich an seriöse Open-Source-Tools oder solche, die vollständig in deinem Browser laufen, wo der Code nicht nach Hause telefonieren kann.
- Zufälligkeit für Einprägsamkeit opfern. Wenn du ein Passwort generierst und es dann „optimierst“, damit du es dir leichter merken kannst, hast du den ganzen Zweck zunichte gemacht. Du hast gerade das vorhersagbare menschliche Muster wieder eingeführt, das Angreifer ausnutzen.
- Den Zeichensatz ignorieren. Ein 20-stelliges Passwort nur aus Zahlen (
27182818284590452353) ist wesentlich schwächer als ein 12-stelliges Passwort mit Buchstaben, Zahlen und Symbolen. Die Größe des Zeichenvorrats (N) ist ein starker Multiplikator für die Stärke. - Das generierte Passwort unsicher speichern.
4tG!p$z#qR@...zu generieren ist Schritt eins. Schritt zwei ist, es sicher zu speichern. Es auf einen Post-it zu schreiben, es inpasswörter.txtauf deinem Desktop zu speichern oder es dir selbst per E-Mail zu schicken, ist sinnlos. Verwende einen vertrauenswürdigen Passwort-Manager. - Dein einziges „unknackbares“ Passwort wiederverwenden. Du generierst ein fantastisches, 25-stelliges Passwort. Du bist so stolz darauf, dass du es für deine E-Mail, deine Bank und deine sozialen Medien verwendest. In dem Moment, in dem einer dieser Dienste kompromittiert wird, ist dein „unknackbarer“ Schlüssel in den Händen von Angreifern und alle deine Konten sind verwundbar.
Warum du das auf dem Schirm haben solltest
Wenn du Code schreibst, verwaltest du Geheimnisse. Punkt. Ob es sich um einen Datenbank-Connection-String, einen API-Key für einen Drittanbieterdienst, ein Server-Login oder den Standard-Admin-Account für die App handelt, die du baust – du erstellst und handhabst ständig digitale Schlüssel.
Ein Entwickler sollte immer dann zu einem Passwort-Generator greifen, wenn er ein Geheimnis erstellen muss, das eine andere Maschine versuchen könnte zu erraten. Das menschliche Gehirn ist für Logik, Kreativität und Problemlösung da. Es ist nicht dafür gemacht, kryptographisch sichere Zufallszeichenketten zu erzeugen. Indem du Passwort-Generatoren verstehst und richtig einsetzt, ersetzt du eine große menschliche Schwäche durch mathematische Gewissheit. Es ist eine der einfachsten und effektivsten Sicherheitspraktiken, die du anwenden kannst. Es geht nicht nur darum, deine eigenen Konten zu schützen; es geht darum, von Grund auf sichere Systeme für deine Benutzer zu bauen.
Geh tiefer
- NIST Special Publication 800-63B: Die offiziellen Richtlinien des US National Institute of Standards and Technology zur digitalen Identität, einschließlich der modernen Herangehensweise an Passwortrichtlinien und -stärke.
- MDN Web Docs: The Web Crypto API: Ein Deep Dive in die im Browser eingebaute API für kryptographische Operationen, einschließlich
crypto.getRandomValues(). - OWASP Password Storage Cheat Sheet: Eine unverzichtbare Ressource des Open Web Application Security Project zum korrekten Umgang mit Passwörtern auf der Serverseite (nachdem du sie generiert hast).
- Wikipedia: Password strength: Ein gründlicher Überblick über die Konzepte, einschließlich Entropieberechnung und Brute-Force-Angriffsanalyse.
- Cloudflare: How we built a password generator: Ein großartiger Praxisbericht über die Überlegungen, die in die Entwicklung eines sicheren, hochwertigen Passwort-Generators einfließen.