Blog Tech Passwort vergessen!

Mai 2021

Passwort vergessen!

Passwörter richtig verschlüsseln

Lesezeit: 4 Minuten

Zwei Haende halten Smartphones

Schon wieder das Passwort vergessen?

Letztens habe ich mich nach langer Zeit mal wieder bei einem Dienst angemeldet, den ich mittlerweile eigentlich schon fast vergessen hatte. Beziehungsweise ich wollte mich anmelden. Denn das erste Problem war, dass ich mich an meine Login Informationen erinnern musste. An die korrekte E-Mail-Adresse konnte ich mich – zugegeben nach etwas Ausprobieren und ein paar Fehlversuchen – noch erinnern, doch beim Passwort war  einfach nur Leere in meinem Kopf.

Ok, dann muss ich es wohl zurücksetzen. Auf den entsprechenden Link geklickt, E-Mail angegeben, kurz gewartet, auf den Link in der E-Mail geklickt, und schon kann ich wieder ein neues Passwort vergeben. So läuft es zumindest normalerweise ab und so werden es die meisten wohl auch kennen. Aber wie Sie es sich schon denken können: hier stimmt etwas nicht.

Im nächsten Schritt erschien eine Schaltfläche mit der Aufschrift „Ihr Passwort anfordern“. Nach einem Klick und nach ein paar Sekunden Wartezeit wurde mir per E-Mail mein altes Passwort zugesendet. Et voilà, ich kann mich wieder einloggen. Also ist doch alles wieder paletti, oder?

Haaaaalt! Stopp! Das darf so nicht sein! Die Website sollte mein Passwort eigentlich aber gar nicht wissen können. Wenn die Entwickler da auch nur ein kleines bisschen aufgepasst hätten, wäre das unmöglich. Das wieso und weshalb erklären wir Ihnen im Folgenden:

Verschlüsseltes Passwort = Kartoffelpuffer mit Salz

Normalerweise speichern Server unsere Passwörter „gehasht“ und „gesalted“. Beim sogenannten hashen wird eine Eingabe irgendeiner Art genommen, bei Bedarf aufgeteilt, und dann auf Basis eines komplexen mathematischen Prozesses so mit sich selbst „zerhäckselt“ (engl. to hash), so dass der Ursprungswert am Ende des Prozesses nicht mehr zu erkennen ist.

Je nach Algorithmus kann man noch ein zweites Geheimnis hinzufügen, welches das Ganze dann noch mal sicherer macht. Das nennt man dann den Salt und dieser schützt vor den sogenannten Rainbow Tables (Mathematiker haben hin und wieder sehr kreative Ideen).

Bei den Regenbogentabellen handelt es sich um Datenstrukturen, die eine schnelle und effiziente Suche nach der ursprünglichen Zeichenfolge (also unserem Passwort) ermöglichen sollen. Eine Suche über eine Rainbow Table ist erheblich schneller als mit Brute-Force-Methoden (ineffizientes Vorgehen durch Ausprobieren).

Einige Algorithmen fügen hier und da noch ein paar weitere Schritte oder Parameter hinzu, aber im Groben und Ganzen funktionieren alle in etwa nach diesem Schema. So soll gewährleistet werden, dass außer dem User selbst, wirklich niemand anderes das eigentliche Passwort kennen kann.

Der Server speichert für einen User das Resultat des Hashens und den Salt in Klartext neben dem Benutzernamen (meist die E-Mail-Adresse). Das Salt bezeichnet hierbei eine zufällig gewählte Zeichenfolge, die an den gegebenen Klartext (Benutzername und/oder E-Mail-Adresse) vor dessen weiterer Verarbeitung angehängt wird. Durch diese Erhöhung der Unordnung, auch Entropie genannt, wird nochmals die Sicherheit gesteigert.

Bei jedem Anmeldeversuch wird nun aus dem eingegebenen Passwort und dem Salt der Hash berechnet und mit dem gespeicherten verglichen. Stimmen sie überein, wird man eingeloggt. Das Wichtige an dem ganzen Prozess ist, dass es so gut wie unmöglich ist, das Hashen rückgängig zu machen. Ähnlich wie es quasi unmöglich ist, die ursprüngliche Kartoffel aus den Einzelstücken eines Kartoffelpuffers (engl. hash brown) zusammenzusetzen.

Es gibt hier unterschiedliche Methoden, um die sprichwörtliche Kartoffel zu schneiden. Ältere Methoden wie MD5 könnte man mit Bratkartoffeln vergleichen: Schwierig, aber an einem freien Nachmittag definitiv machbar! Modernere Algorithmen wie bcrypt machen dann aus der Kartoffel eher Kartoffelbrei.

Warum so kompliziert? Und warum so viele Kartoffelanalogien?

Die zweite Frage ist einfach zu beantworten: es ist gerade Mittagszeit und ich habe Hunger.

Also nun zur ersten Frage: Wieso ist der Prozess so kompliziert? Die Antwort ist simpel: Selbst wenn die Datenbank mit den sensiblen User Daten (inklusive Passwörter) kompromittiert wird und so in die falschen Hände gerät, können die Angreifer nichts mit den Passwörtern anfangen. Selbst die modernsten Großrechner, welche extra dafür gebaut werden, Verschlüsselungen zu knacken, können ohne weitere Anhaltspunkte gut gehashte Passwörter nicht in absehbarer Zeit knacken.

Wenn mir also dieser Dienst mein Passwort zusenden kann, dann heißt das entweder, dass die Entwickler dort magische Rechner haben, die modernste kryptographische Algorithmen in wenigen Minuten knacken können, oder sie haben mein Passwort einfach im Klartext in ihrer Datenbank gespeichert. Da das Wissen und die Technik, die hinter ersterem stecken müsste, deutlich lukrativer wäre, als das jetzige Geschäftsmodell, welches darin liegt, mir Filmempfehlungen zu geben, vermute ich also eher letzteres. Ich sollte meinen Account bei diesem Dienst definitiv löschen.