Sicherheitsleitfaden
Warum Math.random für Passwörter unsicher ist
Erfahren Sie, warum Math.random für UI-Effekte geeignet ist, aber nicht für Passwörter, Reset-Codes, Tokens oder andere sicherheitskritische Geheimnisse.
Zusammenfassung
Math.random() ist eine allgemeine JavaScript-Pseudo-Zufallsfunktion. Sie ist nützlich für Animationen, zufälliges UI-Verhalten, Beispiele, Spiele und Simulationen. Sie ist nicht für kryptografische Sicherheit spezifiziert und sollte nicht zur Generierung von Passwörtern, Reset-Codes, API-Geheimnissen, Signierschlüsseln oder Wiederherstellungs-Tokens verwendet werden.
Das Problem
Ein Passwortgenerator benötigt Unvorhersagbarkeit gegenüber einem Angreifer, nicht nur Werte, die für einen Benutzer abwechslungsreich aussehen. Math.random() bietet keine browserstandardisierte kryptografische Sicherheitsgarantie, und Implementierungen können zwischen verschiedenen Engines variieren.
Die sicherere Browser-Option
Moderne Browser bieten crypto.getRandomValues() über die Web Crypto API. PwdGen verwendet diese Schnittstelle und das Rejection-Sampling, das eine verzerrte Zeichenauswahl vermeidet. Falls diese API nicht verfügbar ist, ist das sichere Verhalten, die Generierung zu stoppen und die Kompatibilitätsanforderung zu erklären.
Wie man einen Generator überprüft
Durchsuchen Sie den Quellcode nach Math.random. Ein seriöser Passwortgenerator sollte es nicht für Passwortzeichen verwenden. Es kann in der Dokumentation auftauchen, die erklärt, warum es unsicher ist, aber nicht im Generierungspfad.
Detaillierte Anleitung
Diese Anleitung konzentriert sich darauf, warum Math.random für Passwörter und Geheimnisse ungeeignet ist. Sie richtet sich an Entwickler, Studenten und Tool-Nutzer, die prüfen, ob ein Generator sichere Zufälligkeit verwendet. Das praktische Ziel ist es, keine dramatische Sicherheitsbehauptung aufzustellen, sondern eine Passwortgewohnheit zu wählen, die den Alltag übersteht: Anmeldeformulare, Passwortmanager, mobile Tastaturen, Account-Wiederherstellung, gemeinsam genutzte Geräte und gelegentliche Dienste mit seltsamen Validierungsregeln. Eine sichere Empfehlung ist nur nützlich, wenn eine reale Person sie konsequent befolgen kann.
Der sicherste Ausgangspunkt ist Zufälligkeit plus Einzigartigkeit. Zufälligkeit bedeutet, dass der Wert aus einem großen Raum durch eine kryptografisch geeignete Zufallsquelle ausgewählt wird, nicht aus einem Geburtstag, einem Haustiernamen, einem Tastaturmuster oder einem Lieblingszitat erfunden. Einzigartigkeit bedeutet, dass dasselbe Passwort nirgendwo anders verwendet wird. Ein langes, aber wiederverwendetes Passwort kann nach einem einzigen unabhängigen Datenleck schnell versagen, während ein einzigartiges, zufälliges Passwort den Schaden auf das einzelne Konto begrenzt, in dem es verwendet wurde.
Für dieses Thema ist eine praktische Voreinstellung crypto.getRandomValues mit Rejection-Sampling anstelle von Math.random. Sie können diese Voreinstellung mit dem Web Crypto API-Leitfaden anwenden und den endgültigen Wert dann in einem vertrauenswürdigen Passwortmanager speichern. PwdGen generiert Werte lokal im Browser mit Web Crypto; das generierte Passwort wird nicht an einen PwdGen-Server gesendet. Dieses lokale Design reduziert die Server-Exposition, schützt aber nicht vor jeder Bedrohung. Eine bösartige Browser-Erweiterung, ein kompromittiertes Gerät, eine Phishing-Seite oder unsichere Zwischenablage-Handhabung können ein Geheimnis dennoch offenlegen, nachdem es generiert wurde.
Die häufigsten zu vermeidenden Probleme sind vorhersagbare Pseudo-Zufallssequenzen, Modulo-Bias, benutzerdefinierte Zufallsfunktionen und Demo-Code, der in die Produktion kopiert wurde. Diese Probleme sind wichtig, weil Angreifer selten jedes mögliche Passwort brute-forcen müssen, wenn menschliche Gewohnheiten ihnen eine Abkürzung bieten. Credential Stuffing, Phishing, geleakte Passwortlisten und Account-Wiederherstellungsmissbrauch sind oft realistischer als eine rein mathematische Suche. Deshalb kombiniert der beste Rat Passwortqualität mit Kontrollen auf Kontenebene wie MFA, Passkeys, Wiederherstellungscode-Speicherung und regelmäßige Überprüfung der Wiederherstellungs-E-Mail- oder Telefon-Einstellungen.
Verwenden Sie diese Checkliste, wenn Sie die Empfehlung umsetzen:
- Verwenden Sie Math.random nicht für Passwörter.
- Verwenden Sie Web Crypto in Browsern.
- Verwenden Sie Node crypto oder ein geprüftes Paket in CLI-Code.
- Testen Sie auf versehentlichen Fallback-Code.
Wenn eine Website die ideale Einstellung ablehnt, erzwingen Sie das Passwort nicht von Hand in ein schwächeres Muster. Passen Sie jeweils eine Variable an. Wenn Symbole abgelehnt werden, aktivieren Sie Großbuchstaben, Kleinbuchstaben und Zahlen und erhöhen Sie die Länge. Wenn eine maximale Länge niedrig ist, verwenden Sie die größte akzeptierte Länge und stellen Sie sicher, dass der Wert einzigartig ist. Wenn ein Passwort laut vorgelesen, ausgedruckt oder auf einem Fernseh- oder Router-Bildschirm eingegeben werden muss, erwägen Sie, verwirrende Zeichen auszuschließen und die Länge zu erhöhen, um das kleinere Alphabet auszugleichen.
Denken Sie schließlich an die Grenzen von Passwort-Ratschlägen. Ein starkes Passwort ist eine Verteidigungsschicht, keine Garantie. Es kann keine Phishing-Seite sicher machen, Malware beheben oder einen Dienst kompensieren, der Anmeldedaten schlecht speichert. Die nützliche Gewohnheit ist langweilig, aber beständig: Generieren Sie einen einzigartigen Wert, speichern Sie ihn sicher, schützen Sie den Wiederherstellungspfad und ersetzen Sie ihn schnell, wenn Sie einen Verdacht auf Offenlegung haben.
Ein sicherer nächster Schritt
Nachdem Sie diesen Leitfaden gelesen haben, führen Sie eine kleine Konto-Überprüfung durch, anstatt alles auf einmal zu reparieren. Wählen Sie das Konto, das die meisten Probleme verursachen würde, wenn es übernommen würde, bestätigen Sie, dass sein Passwort einzigartig ist, und überprüfen Sie die Wiederherstellungs-E-Mail, das Wiederherstellungstelefon, die MFA-Methode und die Speicherung von Backup-Codes. Wenn ein Teil dieser Kette schwach ist, verbessern Sie diesen Teil, bevor Sie zu Konten mit geringerem Risiko übergehen. Diese Reihenfolge hält die Arbeit überschaubar und schützt die Konten, die Angreifer am wahrscheinlichsten als Sprungbrett nutzen. Für die Frage, warum Math.random für Passwörter unsicher ist, ist das beste Ergebnis eine wiederholbare Gewohnheit: lokal generieren, sorgfältig speichern und Wiederverwendung vermeiden.
Häufig gestellte Fragen
Ist Math.random jemals in Ordnung?
Ja, für visuelle Effekte, Simulationen und gewöhnliche UI-Zufälligkeit, aber nicht für Anmeldedaten oder Sicherheits-Tokens.
Was sollten Passwortgeneratoren stattdessen verwenden?
Sie sollten eine kryptografische Zufallsquelle wie crypto.getRandomValues() im Browser verwenden.
Greift PwdGen auf Math.random zurück?
Nein. Wenn Web Crypto nicht verfügbar ist, zeigt PwdGen eine Kompatibilitätswarnung an und generiert keine Passwörter mit Math.random().