Warum password.es dein Passwort nirgendwohin schickt

Veröffentlicht am von David Carrero

„Wir speichern dein Passwort nicht“ auf eine Webseite zu schreiben kostet exakt so viel wie jeder andere Satz: nichts. Das ist eine Behauptung, keine Garantie. Wer die Wahrheit sagt, schreibt sie genauso hin wie wer lügt, und von deiner Seite des Bildschirms aus sehen beide Sätze identisch aus.

Das ist das Grundproblem jeder Website, die ein Passwort verlangt, um es zu „analysieren“. Selbst wenn der Dienst tadellos ist — sauberer Code, gute Absichten, anständige Leute —, du hast keine Möglichkeit, das zu wissen. Der Server ist eine geschlossene Kiste. Du schickst das Empfindlichste hinein, was du hast, und vertraust darauf, dass drüben genau das passiert, was man dir versprochen hat.

Und ein Detail wird dabei gern übersehen: Ein Versprechen, nichts zu speichern, schützt auch nicht vor dem, was gar nicht in der Hand dessen liegt, der es gibt. Ein ehrlicher Server kann Logs haben, die nie jemand durchgesehen hat, einen Proxy dazwischen, ein automatisches Backup, einen neuen Mitarbeiter oder schlicht einen schlechten Tag. Das Passwort hat deinen Rechner bereits verlassen. Was danach passiert, liegt außerhalb deiner Reichweite — und oft genug auch außerhalb seiner.

Die einzige Antwort, die niemand glauben muss

Die Lösung ist nicht, besser zu versprechen. Sie ist, die Daten nicht zu brauchen.

Wenn dein Passwort den Browser nie verlässt, wird die Frage „Was machen die damit?“ gegenstandslos. Es gibt kein „die“. Es gibt keinen Server, der es empfängt, keine Logs, in denen es auftaucht, kein Backup, das es enthält, und keinen Angestellten, der es lesen könnte. Vertrauen wird nicht besser verwaltet: Es fällt als Problem weg.

Genau das macht password.es. Der Passwort-Checker analysiert deine Eingabe in deinem eigenen Browser, mit deinem eigenen Prozessor. Der Text, den du tippst, reist nirgendwohin, weil es kein Ziel gibt, wohin er reisen könnte.

Woher der Zufall kommt

Der Generator folgt derselben Logik. Für ein zufälliges Passwort braucht man Zufall, und den bekommt man auf zwei Wegen: Man fragt einen Server oder man fragt den Browser. Den Server zu fragen wäre absurd: Er kennte das Passwort dann vor dir.

Also fragen wir den Browser, mit crypto.getRandomValues(). Das ist die Standard-API der Webplattform für kryptografischen Zufall — die, die es genau dafür gibt, im Gegensatz zu Math.random(), das zum Mischen von Spielkarten taugt und für nichts, was jemandem mit ernsthaftem Interesse standhalten muss. Den Zufall erzeugt der Browser selbst, auf deinem Rechner. Wir sind daran nicht beteiligt: Das Ergebnis erscheint auf deinem Bildschirm und bleibt dort.

Wie du es nachprüfst, ohne mir zu glauben

Alles bisher Gesagte ist vorerst genau das: ein Text, geschrieben von denselben Leuten, die die Seite gebaut haben. Also von genau jener Sorte, der ich dir zu misstrauen empfohlen habe. Glaub mir also nicht. Sieh nach.

Öffne die Entwicklertools deines Browsers — F12, oder Cmd+Option+I auf einem Mac —, geh auf den Reiter Netzwerk (Network), lass ihn offen und ruf den Passwort-Checker auf. Du siehst die Seite laden. Jetzt leer die Liste, klick ins Passwortfeld und tipp los.

Das wirst du sehen, und hier ist Genauigkeit angebrachter als Verkaufsprosa:

  • Beim Klick ins Feld wird eine Anfrage ausgelöst. Das ist nicht dein Passwort — du hast ja noch nichts getippt —, sondern die Bibliothek, die die Analyse macht: eine Datei namens zxcvbn-de.min.js, die die Wortlisten, Namen, Tastaturmuster und bekannten Passwörter enthält, gegen die verglichen wird. Sie wird von password.es geladen, sobald du das Feld berührst, damit sie da ist, während du tippst. Sie kommt von derselben Domain, ist eine statische Datei und für alle gleich, die diese Seite öffnen — die Site hat mehrere Sprachversionen, und diese hier lädt die deutsche.
  • Ab da bleibt die Liste stehen, egal was du tippst. Ein Buchstabe, zwanzig, löschen, neu anfangen, einen langen Text einfügen. Null Anfragen. Der Zähler rührt sich nicht. Das Wörterbuch liegt bereits in deinem Browser, und die Suche läuft gegen den Arbeitsspeicher deines Rechners.

Dieser Unterschied ist der ganze Punkt. Es geht nicht darum, darauf zu vertrauen, dass die Anfrage dein Passwort nicht mitnimmt — es gibt keine Anfrage. Man muss nichts interpretieren und keinen Code verstehen; es reicht, auf einen Zähler zu schauen, der nicht hochgeht.

Die vollständige Inventur, samt Schwachstellen

Wenn das Argument „prüf es nach“ lautet, wäre es reichlich merkwürdig, das zu verschweigen, was du beim Nachprüfen finden würdest. Die ehrliche Inventur von password.es:

Keine Analytics. Kein Google Analytics, keine dezente Alternative, kein Pixel. Es gab eins, es wurde von allen Seiten entfernt. Keine Cookies. Die Seite setzt keine. Eines wird allerdings in deinem Browser abgelegt: ob du das helle oder dunkle Theme bevorzugst, im lokalen Speicher deines eigenen Geräts. Es wird nirgendwohin geschickt, und du kannst es aus denselben Entwicklertools heraus löschen. Keine Registrierung, keine Konten, keine Formulare: Es gibt keine Stelle, an der du Daten hinterlassen könntest, selbst wenn du wolltest.

Und der Haken, denn es gibt einen: Die Seite lädt beim Aufruf zwei Schriftarten von Googles Servern. Das heißt, Google sieht, dass jemand mit deiner IP eine Seite dieser Domain geladen hat — wie auf unzähligen anderen Websites auch. Es sieht nicht, was du tippst — diese Anfrage passiert vorher und wiederholt sich nicht —, aber es ist eine Anfrage an einen Dritten, du wirst sie in genau diesem Netzwerk-Reiter sehen, und es ergäbe keinerlei Sinn, dir zu sagen, du sollst die Entwicklertools öffnen, und sie gleichzeitig zu verschweigen. Sie steht auf der Liste der Dinge, die zu beheben sind.

Warum wir das erzählen

Wir hätten „null Anfragen, vollständige Privatsphäre“ schreiben und uns zurücklehnen können. Es hätte besser geklungen und wäre im Detail falsch gewesen: Es gibt eine Wörterbuch-Anfrage und es gibt die Schriftarten. Ein Argument, das zusammenfällt, sobald jemand es überprüft, war nie ein Argument — es war Werbung.

Die genaue Fassung ist weniger rund und hält der Prüfung stand: Was du tippst, verlässt deinen Browser nicht, und das siehst du in dreißig Sekunden mit einem Werkzeug, das du längst installiert hast.

Und Achtung, denn das kommt als allgemeines Kriterium zu dir zurück. Wenn dich das nächste Mal irgendeine Website nach deinem Passwort fragt, egal wofür, öffne diesen Reiter und schau, ob bei jedem Tastendruck eine Anfrage auftaucht. Wenn ja, ist dein Passwort weg. Egal, was die Datenschutzerklärung behauptet, wie hübsch das Schlosssymbol am Formular ist oder wie seriös die Firma wirkt. Und wenn dir die Seite das fertig analysierte Passwort nach einem drehenden Rädchen präsentiert, weißt du, wo es zwischendurch war.

Die Regel, über die in der Sicherheit am wenigsten geredet wird, handelt gar nicht von Passwörtern, sondern von Überprüfung. Vertrauen ist gut. Nachsehen ist besser, und hier kostet es nichts.


Quellen: die Architektur von password.es selbst, überprüfbar mit den Entwicklertools jedes Browsers — der Passwort-Checker lädt beim Fokussieren des Feldes die Analyse-Bibliothek mit ihren Listen (zxcvbn-de.min.js) von der eigenen Domain und sendet während des Tippens keine einzige Anfrage · crypto.getRandomValues(), die Standard-API der Web Crypto API für kryptografischen Zufall · der Code der Site enthält keine Analytics, keine Pixel und keine Cookies; das einzige lokal gespeicherte Datum ist die Theme-Präferenz · die Schriftarten werden von Google Fonts ausgeliefert.

← Zurück zum Blog