Waltraut: Es! Ist! Unsicher!

Beitrag lesen

Inwieweit kann man an die Daten kommen wenn ich sie nicht Hashe?

Das ist die falsche Frage. Wenn du Daten nicht im Klartext benötigst (wie eben ein Passwort), dann speichere sie nicht im Klartext. Im Auto schnallst du dich schließlich auch an, obwohl du dir ziemlich sicher bist, niemals im Leben gegen einen Baum zu fahren.

Dass eine Datenbank gegen Fremdzugriffe sicher sei, haben schon ganz andere gedacht; Meldungen über den Verlust von Kundendaten gehen regelmäßig durch die einschlägige Presse. Zuletzt traf es einen größeren Versandhändler namens Pollin, dem wohl eine sechsstellige Zahl an Datensätzen entfleuchte. Und wie es um deine Kenntnisse in Sachen Sicherheit steht, solltest du deinem fehlgeschlagenen Versuch, ein Login-Formular zu basteln, sehen.

Füge Benutzernamen und Passwort zu einem Wert zusammen, bilde eine Prüfsumme (Neudeutsch Hash) drüber, das Ganze gerne auch drei Dutzend mal hintereinander, und speichere das Ergebnis bzw. vergleiche es mit der gespeicherten Prüfsumme.

Warum die Prüfsumme aus Name und Passwort? Weil vorberechnete Prüfsummentabellen existieren, in denen für alle möglichen und viele unmögliche Wörter die Prüfsummen schon eingetragen sind – braucht man nur reingucken, schon hat man das Passwort zur Prüfsumme. Der Aufwand für solche Tabellen ist riesig, war aber machbar. Der Aufwand, für Kombinationen aus Wörten und allen erdenklichen Namen (oder anderen Werten, etwa der E-Mail-Adresse) Prüfsummen vorauszuberechnen, ist hingegen zu groß. Statt Namen oder Adresse wird auch irgendein Zufallswert genutzt, der muss dann allerdings nochmal extra gespeichert werden, Nutzername oder Adresse liegen hingegen schon vor. Dieser Vorgang wird "salzen" genannt (für ganz echte Experten: "salt").

Aus dem gleichen Grund –den Aufwand für vorberechnete Tabellen so groß wie möglich zu machen– wird die Summenbildung gerne etliche Male mit sich selbst wiederholt: Zuerst Passwort und Kombinationswert verbinden, Prüfsumme aus der Kombination bilden. Dann die entstandene Prüfsumme mit dem Kombinationswert verbinden und wieder die Prüfsumme bilden, dies x-mal wiederholen. Beim Anlegen oder Anmelden bedeuten solche Wiederholungen nur den Bruchteil einer Sekunde Verzögerung. Soll eine Tabelle für Abermillionen Passwörter vorausberechnet werden, summieren sich diese Bruchteile hingegen zu einer gigantischen Wartezeit.