Stanford ist angetreten um .. ja, was eigentlich?

Auf www.pwdhash.com/ wird eine Methode vorgestellt, um das eigene Passwort vor der Webseite, die man aufruft, zu verschleiern.

Ja, und? Wofür ist das gut?

Naiv gesehe scheint es eine ziemlich gute Idee zu sein, was die Leute da vorstellen. Und auch ein bequemer Weg.

Leider funktioniert die Sache nicht wie gedacht. Und hier stehen die Gründe:

Das Ganze kommt jetzt etwas negativ daher. Die Idee von pwdhash ist an sich ganz brauchbar! Und sie ist nicht böse, wie einige andere Ideen (z. B. LastPass). Nur leider haben die Leute mal wieder einige typischen Fehler in ihrer Idee, weshalb sie nicht funktionieren kann.

Also: An sich brauchbar. Aber nicht praktikabel.

So ist das halt leider mit vielen Dingen auf der Welt.

Warum pwdhash kein Mittel ist

Worum geht es überhaupt?
  • Geht es um Sicherheit? Ja, ein wenig.
  • Geht es darum, einen Passwort-Safe überflüssig zu machen? Nein.
  • Geht es darum, die Bequemlichkeit zu erhöhen? Jein.
  • Geht es darum, vor Webseiten das verwendete Passwort zu verstecken? Ja!
  • Geht es darum, dass das jeder verwenden kann? Leider nicht.
Genau hier haben wir den Knackpunkt:

  • PwdHash ist eine Methode, um zu verhindern, dass Webseiten das eigene Passwort erkennen.
  • Dazu bauen die Jungs ein FireFox-Plugin, um genau das zu bewerkstellingen.
  • Außerdem stellen sie - falls FireFox nicht verwendbar ist - ein Tool bereit, um das verschleierte Passwort zu errechnen.
Sieht eigentlich so weit ganz gut aus. Wären da nicht einige Fehler im Konzept:

  • Das Verfahren funktioniert nur mit FireFox (inzwischen auch mit Opera und Chrome) aver nicht mit IE, und nicht auf Fremdrechnern.
  • Das Hash-Verfahren ist für alle Anwender dasselbe. D. h. der Site-Namen wird per Passwort gescramblet (MD5) und daraus ein neues Passwort generiert. Aus der gleichen Domain und demselben Passwort wird also immer dasselbe Passwort für alle Benutzer. Ein schwaches Passwort bleibt also schwach. Ein von vielen genutztes Passwort bleibt also genau dasselbe. Automatisierte Passwortknacker wie Crack können dieses Verfahren also ebenso anwenden.
  • Das Verfahren schützt nicht vor Keyloggern (nur vor JavaScript Password Stealern, die Lücke dürfte allerdings inzwischen gefixt sein).
  • Das Verfahren ist kompliziert, zu kompliziert um es z. B. meinem 10 jährigen Sohn beizubringen.
  • Die Webseiten der Leute hat einen Fehler, ist JavaScript abgeschaltet wird das Passwort im Klartext an pwdhash.com gesendet!

Der letzte Fehler ist ziemlich drastisch!

Wenn man also mal vergisst, JavaScript einzuschalten (bei mir ist es regelmäßig aus), dann sendet man unter Umständen das Passwort an diese Leute. Zwar geht es per SSL über die Leitung, aber trotzdem kommt es auf deren Server an!

Und ein ziemlicher weiterer Fehler ist vorhanden

Wenn man sich schon einmal angewöhnt hat, überall nur ein Passwort zu verwenden, wird man das zu oft tun. Einfach weil der Gewöhnungseffekt schlecht ist.

Ich jedenfalls bringe meinem Sohn (bald 11 Jahre alt) bei, überall ein anderes Passwort zu verwenden und es sich zu merken. Das klappt eigentlich ganz gut. Dazu braucht er eigentlich nix großartig weiteres, als einen Stift und sein Filofax, das er eh für seine Hausaufgabennotizen usw. benötigt.

Die grundlegende Idee ist gut

Es wäre durchaus wünschenswert, wenn das W3C einen Standard vorgesehen hätte, dass Browser ein Passwortfeld haben, das die Passwörter verschlüsselt an die eigentliche Webseite überträgt, so dass das Passwort selber gar nicht über die Leitung geht und jede Webseite ein anderes Passwort sieht.

Dies könnte gegen naives Phishing helfen, die Phisher könnten die TAN bzw. die PIN nicht abfragen, da sie den Host der Bank nicht emulieren könnten und somit das PIN-Feld nicht abfragen könnten.

Damit der Benutzer daran gewöhnt ist, müsste der Browser eine spezielle Funktion haben, über die man die PIN oder die TAN eingibt. Diese Funktion müsste standadisiert sein, also bei allen Browsern identisch aussehen, damit der Benutzer verwirrt ist, wenn sie mal anders aussieht, stutzt und evtl. nachfragen kann.

Aber so lange es nicht so ist, lohnt diese Technik leider nicht.

PwdHash hilft leider überhaupt nicht

Sehen wir uns die möglichen Angriffswege an, sehen wir, dass PwdHash an sich gar nicht hilft:

  • Hilft nicht gegen Phishing: Banken usw. setzen das Verfahren nicht ein, weil der Anwender es nicht verwenden könnte.
  • Schützt nicht gegen Keylogger: Das Passwort wird weiterhin über die Tastatur eingegeben.
  • Schützt nicht gegen böse Webseiten: Diese können in ihr Formular einen Keylogger einbauen, d. h. das Passwort-Feld abfragen während es eingegeben wird. Nein, das kann man auch nicht verhindern, ich baue einfach ein Passwort-Feld nach, das so aussieht als wäre es eines, aber in Wirklichkeit keines ist. Damit greift das Tool dann nicht. Es schützt zwar das (versteckt angezeigte) Passwortfeld, aber das Feld, in das ich wirklich tippe eben nicht.
  • Schützt nicht gegen Snooping: Wenn mir jemand über die Schulter schaut während ich das Passwort tippe, wird das ebensowenig geschützt.
  • Schützt nicht gegen Replay: Das gehashte Passwort ist immer gleich, bekomme ich das (z. B. in den GET-Parametern eines Gateways) mitgeloggt, dann kann ich es verwenden. Ich weiß zwar das Passwort nicht, das der User eingegeben hat, aber das ist ja ansich auch egal, den Dienst kann ich trotzdem nutzen, da ich das Passwort habe, das der Dienst sieht.
Wogegen es hilft:

  • Naive JavaScript password stealing. Dies dürfte inzwischen entweder abgestellt sein (XSS) bzw. ist mit einem etwas komplexeren Angriff leicht wiederzuerlangen. Das Passwort-Feld hat aber eben mit dem übertragenen Passwort nichts zu tun, somit scheitert der sehr naive Ansatz. Greife ich also auf dem Passwortfeld an, komme ich trotzdem nicht rein - bis ich das Hash-Verfahren mitteste. Greife ich auf dem Wert des Passwortfeldes an, dann sehe ich nur den Hash-Wert, habe dann also das Passwort das auch der Dienst sieht. Viel hilft es also nicht, eher wenig bis gar nicht. Es macht die Sachen nur komplzierter, vor allem für den Anwender.
  • Master-Password-Compromizing: Es schützt dagegen, dass naive Anwender auf vielen Webseiten überall dieselben Passworte verwenden, und diese Webseiten also mit den Informationen sich woanders einloggen können. Allerdings gilt das nur für Webseiten, denen man vertrauen kann. Webseiten, dennen man nicht vertrauen kann haben andere Methoden, um an das Passwort zu kommen. Somit erstreckt sich der Schutz gegen Unfälle, in denen die Webseiten ihre Daten verlieren und so Cracker an die Passwortinformation kommen um evtl. andere Webservices damit aufzubrechen. Aber darf man in solch einem Fall den Aufwand auf die Seite des Anwenders verlagern? Ich meine, natürlich nicht. Besser ist hier Anwendererziehung, die den Leuten beibringt, Passworte mit verschiedenen Sicherheitsklassen zu verwenden, so dass der Umfang der Kompromittierung eingedämmt wird. Die Alternative ist zu kompliziert, da das Verfahren ja nur ein Randverfahren sein kann und somit nicht hinreichend schützt.
  • Phishing-Sites: Da das Passwort von der Domain abhängt, kann ein normaler Phisher das Passwort nicht abphishen. Mit XSS oder weniger naiven Angriffen (z. B. manipulierter hosts.txt oder SSL-Root-Zertifikaten) hilft es nicht.
Wobei man aufpassen muss:

  • AOL, Oracle, T-Online und viele Große wie Banken sind geradezu legendär darin, den Login zu verändern, und zwar bei der Domain! Hat man den Leuten endlich über jahrzehntelanges intensives Training beigebracht, doch bitte genau die Domain zu prüfen und wieder zu prüfen, kommt es dann bei gerade den großen Firmen zu dem Hyper-GAU dass sie ihre login-Domain ändern. Erziehung perdü, reset, zurück auf Start! Mit PWDHASH passiert aber dann, dass das Passwort nicht mehr stimmt weil die Domain gewechselt wurde. Autsch.
Also zusammengefasst:

  • Wenn man das Verfahren permanent verwendet könnte es einen gewissen Bereich in der Passwortsicherheit verbessern. Aber dazu muss der Anwender extrem viel Disziplin üben (z. B. das Tool immer verwenden und immer parat haben). Der Aufwand für diese Disziplin ist IMHO höher als der Aufwand, ggf. mal andere Passworte zu verwenden und in einem Passwort-Safe nachzuschlagen.
  • Die gängige Praxis, das Passwort im Browser zu speichern, ist einfach viel bequemer als PwdHash. Denn wenn das Plugin nicht zur Verfügung steht (Handy, IE, was auch immer) steigt der Aufwand bis man es nicht mehr verwenden kann.
  • Der erreichte Sicherheitsgewinn ist marginal. Dagegen steht der eher ziemliche Aufwand.
  • Und noch ein Tool das die Sache komplizierter macht.
Der Ansatz ist also ganz nett, aber leider eben nicht brauchbar. Schade eigentlich.

-Tino, 2009-05-14, Update 2011-06-09