Ist Ihr Passwort in einem Datenleck?
Ein Datenleck ist das, was passiert, wenn die Passwortdatenbank eines Dienstes ins Freie entkommt — und ein Leak-Korpus ist die Sammlung von Passwörtern, die aus Hunderten solcher Entweichungen geerntet wurden, indexiert, sodass jeder fragen kann, ob ein bestimmtes Passwort darunter ist. Wenn Ihres darunter ist, besitzen Angreifer es bereits: Es liegt in Wortlisten, die automatisch gegen jede Anmeldeseite probiert werden, die sie erreichen können. Dieser Artikel erklärt, wie die Prüfung funktioniert, ohne das Passwort je preiszugeben, was eine Zahl von “52 Millionen Mal gefunden” wirklich bedeutet, warum “nicht gefunden” kein Freibrief ist und warum Sie ein Passwort niemals in einen Chatbot einfügen dürfen, um zu fragen, ob es sicher ist. Um die Prüfung auszuführen, nutzen Sie die Passwort-Leak-Prüfung.
Was ein Leak-Korpus ist
Jedes größere Leck hinterlässt denselben Rückstand: eine Datenbank mit Benutzernamen und Passwörtern, meist als Hashes gespeichert, aus den Systemen eines Unternehmens herauskopiert und weitergereicht, verkauft oder veröffentlicht. Einzeln sind diese Datenbanken der Beweis für das Versagen eines Unternehmens; zusammengenommen, dedupliziert und indexiert, werden sie zu etwas anderem — einer Volkszählung der Passwörter, die Menschen tatsächlich verwenden. Der Pwned-Passwords-Korpus von Have I Been Pwned, den die Prüfung dieser Site abfragt, enthält über eine Milliarde Passwörter aus Hunderten von Lecks und wächst jedes Mal, wenn ein neues Leck auftaucht. Es ist keine Liste schwacher Passwörter, die von Theoretikern zusammengestellt wurde. Es ist ein Verzeichnis der Passwörter, die echte Menschen gewählt, eingetippt und verloren haben.
Deshalb ist der Korpus ein so unbarmherziger Spiegel. Ein Passwort, das Sie in fünf Sekunden erfunden haben — ein Name plus ein Geburtsjahr, eine Sportmannschaft plus ein Ausrufezeichen, ein Tastaturlauf mit einer Ziffer am Ende — wurde sehr wahrscheinlich von Tausenden anderer Menschen in exakt derselben Form erfunden, und wenn einer von ihnen es bei einem kompromittierten Dienst verwendet hat, ist es im Korpus. Angreifer raten Passwörter nicht eines nach dem anderen, wie ein Mensch es tun würde. Sie betreiben Credential Stuffing: Sie nehmen eine Liste geleakter Benutzername-Passwort-Paare oder eine Wortliste geleakter Passwörter und probieren sie automatisch aus, Millionen von Versuchen pro Stunde, gegen Anmeldeseiten überall. Ein Passwort im Korpus ist ein Passwort, das bereits auf der Liste steht.
Wie die Fünf-Zeichen-Prüfung funktioniert
Ein Passwort gegen eine Datenbank mit einer Milliarde Einträgen zu prüfen, klingt so, als müsste man das Passwort an jemanden senden — und jahrelang war das der ehrliche Einwand gegen jeden Leak-Prüfdienst. Die Lösung ist ein Trick namens k-Anonymität, und er ist einfach genug, um ihn in einem Satz zu sagen: Der Dienst erfährt nie, nach welchem Passwort Sie gefragt haben, weil er nie genug davon sieht, um es zu unterscheiden. Ihr Passwort wird im Browser mit SHA-1 gehasht und erzeugt einen 40-stelligen Fingerabdruck. Nur die ersten 5 Zeichen dieses Fingerabdrucks werden an Have I Been Pwned gesendet. Der Dienst liefert alle Fingerabdruck-Suffixe zurück, die diese 5 Zeichen teilen — typischerweise etwa achthundert — und Ihr Browser sucht sein eigenes Suffix lokal in dieser Liste, auf Ihrem Gerät.
Fünf Zeichen ist die tragende Zahl. Ein 5-stelliger Hex-Präfix hat etwa eine Million möglicher Werte, sodass jeder Präfix in einem Korpus mit einer Milliarde Einträgen von ungefähr tausend Passwörtern geteilt wird — genug Ähnliche, dass der Dienst Ihr Passwort nicht identifizieren kann, und wenige genug, dass die Antwort in eine einzige kleine Antwort passt. Nichts über das Passwort selbst überquert das Netzwerk: nicht das Passwort, nicht sein vollständiger Hash, nicht einmal ein Hinweis auf seine Länge. Dasselbe Design ist der Grund, warum die Prüfung kein Konto, keinen API-Schlüssel und kein nennenswertes Ratenlimit braucht und warum die Antworten wochenlang zwischengespeichert werden können: Die Antwort für einen Präfix ist für jeden, der fragt, dieselbe. Die Passwort-Leak-Prüfung auf dieser Site implementiert genau dieses Modell, im Browser, wobei der Hash lokal berechnet wird, bevor irgendetwas gesendet wird.
Was “N-mal gefunden” bedeutet — und was zu tun ist
Eine Zahl über null bedeutet, dass das Passwort so oft in Lecks gesehen wurde, und die Zahl ist ein direktes Maß dafür, wie früh es probiert werden wird. Eine Zahl in Millionenhöhe — “password” selbst wurde mehr als fünfzig Millionen Mal gesehen — bedeutet, dass das Passwort zu den allerersten Vermutungen bei jedem Credential-Stuffing-Lauf gehört und überall dort geändert werden sollte, wo es verwendet wird, beginnend mit den Konten, die die anderen schützen: zuerst E-Mail, dann Banking, dann Passwort-Wiederherstellungspfade. Auch eine kleine Zahl ist kein Freispruch. Schon ein einziges Auftreten bedeutet, dass das Passwort in der Wortliste eines Angreifers steht, und es ist in der Regel auch ein Zeichen dafür, dass das Passwort einem erratbaren Muster folgt — demselben Muster, das Tausende von Ähnlichen neben ihm in den Korpus gebracht hat.
Die Lösung ist bei jeder Zahl dieselbe: Ersetzen Sie das Passwort durch ein einmaliges, das Sie nirgendwo sonst verwendet haben, und bewahren Sie es in einem Passwort-Manager auf, statt in Ihrem Kopf. Das menschliche Gedächtnis ist der Grund, warum es wiederverwendete Passwörter gibt — niemand kann sich hundert verschiedene zufällige Zeichenketten merken — und ein Manager ist das Werkzeug, das Einmaligkeit erschwinglich macht. Erzeugen Sie den Ersatz mit dem Passwort-Generator, speichern Sie ihn im Manager und ändern Sie dann das Passwort bei jedem Dienst, bei dem das alte verwendet wurde, beginnend mit denen, die es einem Angreifer erlauben würden, die anderen zurückzusetzen. Wenn dasselbe Passwort mehrere Konten schützte, behandeln Sie alle als offengelegt: Angreifer probieren ein geleaktes Passwort gegen jeden Dienst, den sie erreichen können, nicht nur gegen den, aus dem es geleakt ist.
Was “nicht gefunden” nicht bedeutet
Eine Zahl von null ist eine gute Nachricht mit einer strengen Grenze. Sie bedeutet, dass das Passwort in den Lecks, die dieser Korpus kennt, nicht gesehen wurde — nicht mehr. Sie bedeutet nicht, dass das Passwort stark ist: Ein kurzes Passwort, das aus einem Wörterbuchwort und einer Ziffer gebaut ist, kann im Korpus fehlen und trotzdem innerhalb von Minuten durch einen Rateangriff fallen, denn Raten braucht nicht, dass das Passwort zuerst geleakt ist. Sie bedeutet nicht, dass das Passwort sicher ist: Lecks brauchen Monate oder Jahre, um aufzutauchen, und ein Passwort, das in einem ungemeldeten Leck liegt, ist für jeden Korpus unsichtbar, bis zu dem Tag, an dem es das nicht mehr ist. Und sie bedeutet nicht, dass ein wiederverwendetes Passwort in Ordnung ist: Ein Passwort, das auf zehn Sites verwendet wird, ist ein Leck davon entfernt, alle zehn zu verlieren, was auch immer die heutige Zahl sagt.
Die ehrliche Art, eine Null zu lesen, ist als eine bestandene Prüfung von mehreren. Das Passwort ist nicht als geleakt bekannt — das ist wissenswert, und es ist das Einzige, was die Prüfung Ihnen sagen kann. Ob es außerdem lang genug, zufällig genug und an genau einem Ort verwendet ist, ist eine separate Frage, und die Prüfung kann sie nicht beantworten. Der Standard, an dem es sich festzuhalten lohnt, ist der in der unten aufgeführten NIST-Leitlinie für memorierte Geheimnisse: Länge vor Komplexitätsregeln bevorzugen, niemals periodische Änderungen um ihrer selbst willen verlangen und neue Passwörter in dem Moment, in dem sie gewählt werden, gegen Leak-Korpora prüfen — genau die Prüfung, die dieser Artikel beschreibt. Ein Passwort, das lang, zufällig, einmalig und nicht gefunden ist, ist ein gutes Passwort. Entfernen Sie eine dieser vier Eigenschaften, und die Null bedeutet nicht mehr viel.
Fügen Sie ein Passwort niemals in einen Chatbot ein
Die gefährlichste Art, “Ist mein Passwort sicher?” zu fragen, ist, das Passwort in einen Chatbot oder KI-Assistenten einzufügen und ihn direkt zu fragen. Ein Chat behält ein Transkript: Ihr Passwort würde auf den Servern eines anderen gespeichert, gemäß dessen Aufbewahrungsrichtlinie aufbewahrt, zum Trainieren oder Feintunen von Modellen verwendet und möglicherweise wörtlich zurückzitiert — in einer späteren Antwort, an eine völlig andere Person. Dasselbe gilt für jede Website, die Sie bittet, ein Passwort in ihr Formular einzugeben und verspricht, es zu beurteilen: Es sei denn, die Seite hasht das Passwort lokal und zeigt Ihnen den Mechanismus, wie die Prüfung auf dieser Site, gehen Sie davon aus, dass das Passwort gesendet, gespeichert und protokolliert wird. Eine Leak-Prüfung lohnt sich genau deshalb, weil sie durchgeführt werden kann, ohne das Geheimnis jemandem zu übergeben — und in dem Moment, in dem Sie das Geheimnis in einen Chat einfügen, um danach zu fragen, haben Sie genau die Exposition geschaffen, die die Prüfung erkennen soll.
Die Regel lässt sich verallgemeinern. Passwörter, API-Schlüssel, Tokens und private Schlüssel sind alles Dinge, die niemals in roher Form in einen Chat, ein Ticket, einen Forenbeitrag oder ein geteiltes Dokument getippt werden dürfen — weshalb diese Site auch einen Secret Redactor hat, um sie vor dem Teilen aus Texten zu entfernen, und einen begleitenden Artikel über das Schwärzen von Geheimnissen vor dem Einfügen. Wenn ein Geheimnis wirklich den Besitzer wechseln muss, senden Sie es über einen Secrets-Manager oder einen ablaufenden Einmal-Link, in einem separaten Kanal als die Diskussion. Und wenn Sie wissen müssen, ob ein Passwort geleakt ist, nutzen Sie den Mechanismus, der für die Frage gebaut wurde: Hashen Sie lokal, senden Sie fünf Zeichen und gleichen Sie den Rest auf Ihrem eigenen Gerät ab. Das ist die ganze Prüfung, und es ist die einzige Form der Frage, die sich nicht selbst beantwortet, indem sie ein neues Leck erzeugt.