Vor kurzem sind bei einem deutschen Internetunternehmen Passworthashes "geklaut" worden. Wir haben im 1&1 Blog schon mehrfach über die richtige Wahl eines sicheren Passworts berichtet. Mit dem Tag der Passwortsicherheit erinnern IT-Unternehmen weltweit jährlich daran, wie wichtig sicher gewählte Passworte sind. Was es mit Passworthashes auf sich hat, wie diese zur Sicherheit beitragen und wo ihre Grenzen sind, erfahrt ihr in diesem Blogbeitrag zum Tag der Passwortsicherheit 2013.

Verschlüsselt oder gehashed?

Während es bei der Passwortverschlüsselung prinzipiell möglich (und auch gewollt) ist, den Klartext wiederherzustellen, hat Hashing die Eigenschaft, nur in eine Richtung zu verschlüsseln: ein Passworthash entspricht quasi einer komplex berechneten Prüfsumme, aus der sich das ursprüngliche Passwort nicht mehr berechnen oder ableiten lässt. Diese "Prüfsumme" ist nicht etwa nur eine einzige Zahl, sondern auch so triviale Passworte wie "password" werden dann zu etwas wie

5f4dcc3b5aa765d61d8327deb882cf995e884898da28047151d0e56f8dc6292773603d0d6aabbdd-
62a11ef721d1542d8$1$pFRi6TX3$Q8xoQIRmq09e1Sd8grC9f/

oder

$6$JHJwQGbVeVK6gFsx$xac0mq2uq.LoJDnfkaiig.P.4Yu8rgmIsLmBrX.MbmClKUdw9ND8me7X1rd-
X5wcIWD45CmqTva5ulmaZzQHQ7.

Ändert sich auch nur ein Zeichen, kommt dabei immer eine komplett andere Prüfsumme heraus.

Um einen Login mit gehashten Passworten zu prüfen, benötigt der Server keinen Schlüssel zur Entschlüsselung, sondern er berechnet das beim Login übermittelte Klartextpasswort nach dem gleichen Verfahren zu einer solchen Prüfsumme und vergleicht diese mit dem zuvor errechneten, gespeicherten Wert. Sind diese beiden Werte gleich, handelt es sich mit mathematisch hoher Wahrscheinlichkeit auch um das gleiche Passwort: der Zugang wird gewährt.

Daher sind gehashte Passwörter grundsätzlich Stand der Technik.

Geklaut und rohe Gewalt

Rein mathematisch ist das Hashing eine Einweg-Verschlüsselung: es gibt keinen Rückweg, mit dem man das ursprüngliche Passwort zurück-errechnen könnte. Von daher sollte ein Angreifer mit Passworthashes nichts anfangen können - soweit in der Theorie.

Gelangt ein Cracker an Passwort-Hashes, bleiben ihm trotzdem noch Ansatzpunkte, um aus den Daten Passworte zu ziehen.

Die meisten Passworte sind recht kurz – 6 bis 10 Zeichen. Probiert man etwa alle 8-stelligen Passworte durch, sind dies "nur" 218340105584896 Möglichkeiten (62^8). Auf den ersten Blick klingt das viel, in der Praxis können etwa auf heutigen Grafikkarten-Prozessoren mehrere Hundert Millionen Passworthashes pro Sekunde berechnet werden. Nach 1-2 Wochen wären einmal "alle möglichen" 8-stelligen Passworte durchgerechnet. Vergleicht man parallel die berechneten Werte mit den kopierten Passwort-Hashes, kommt man so zu einer Reihe gültiger Passworte. Speichert man die berechneten Informationen auch noch in einer Datenbank ab, kann man auf diese Daten immer wieder zugreifen und so auch zukünftige Passworte schnell auflösen. Was vor 10 Jahren noch unbezahlbare Speichermengen und Rechenzeit benötigte, rückt aber heute in greifbare Nähe.

Wörterbuchangriffe, Top-10-Passworte und das Salz

Wer als Angreifer noch schneller vorankommen möchte, lässt sich auch nur die Hashes von Wörterbucheinträgen vorberechnen: nach verschiedenen Untersuchungen sind viele Passworte immer noch einfache Worte und die "Top 10" besonders häufig verwendeter Passworte wie "password", "qwertz" und "12345678" werden immer noch von vielen Internetnutzern verwendet. Die "Erfolgsaussichten" des Angreifers sind also gar nicht so schlecht: er hat dann zwar nur die Passworte dieses geringen Prozentsatz an Internetnutzern, bei derartig unsicher gewählten Passworten ist aber auch die Wahrscheinlichkeit hoch, dass die Anwender das gleiche Passwort bei anderen Diensten verwenden und der Angreifer damit umso mehr Schaden treiben kann.

Um es dem Angreifer nicht mehr so leicht zu machen, "salzt" man als Dienstanbieter daher die Passwort-Hashes: bevor man das Passwort zur Prüfsumme verrechnet, ergänzt man das Passwort um einen für jedes Passwort zufälligen, aber im Klartext zu merkenden Anteil, den "Salt".

Statt etwa der Prüfsumme für "passwort" wird dann die Prüfsumme für "G8FFQtjVXgPmoVFxpasswort" berechnet und "G8FFQtjVXgPmoVFx" als "Salz" dieser Prüfsumme im Klartext gespeichert. Bei einem Loginversuch wird dieser im Klartext bekannte Salt wieder vor das übertragene Passwort gestellt und wie gewohnt die Prüfsumme gebildet - passt es, ist auch das gehashte Passwort korrekt. Für jeden Passwort-Hash wird dabei ein zufälliger Salt-Wert bestimmt und verwendet; es reicht also nicht aus, dass ein Angreifer "alle Passworte" für einen bestimmten Salt-Wert berechnet.

Durch dieses "Salting" wird der in der Prüfsumme verrechnete "Passworttext" deutlich länger, damit steigt auch die Menge theoretisch zu berechnender Passworte und der Aufwand (CPU-Zeit, Speicherplatz, etc.) für den Angreifer. Verwendet man etwa 16 Zeichen "Salt" und erlaubt Buchstaben und Zahlen, sind das für ein einziges Klartextpasswort 62^16=47672401706823533450263330816 mögliche Varianten von Passworthashes, die ein Angreifer vorab berechnet haben müsste, um es schnell wiederfinden zu können.

Dieser erhöhte Aufwand macht sich bemerkbar: vor einigen Monaten wurden bei Evernote ca. 50 Millionen gesalzene, gehashte Passworte entwendet, aber bislang nur wenige Passworte errechnet. Zum Vergleich: die 6,5 Millionen ungesalzenen, gehashten Passworte vom Einbruch bei Linkedin im letzten Jahr konnten innerhalb weniger Tage fast vollständig geknackt werden.

Ziel: Zeit gewinnen.

Alle diese Passwort-Sicherungsmassnahmen treiben letztlich nur den Aufwand in die Höhe, den ein Angreifer benötigt, um an Klartextpassworte zu gelangen. Diese Passwortsicherungsmassnahmen sind letztlich eine reine Notfallvorsorge und nicht etwa die einzige Sicherheitsmassnahme. Als Diensteanbieter gewinnt man mit diesen Passwort-Sicherungsmassnahmen einige Wochen, Monate oder Jahre an Zeit, in denen man passend zur jeweiligen Sicherheitslücke die Sicherungsmassnahmen verbessert, betroffene Kunden informiert werden und diese Kunden ihre Passworte ändern können.