Inputvalidierung von Passwörtern, Hashing, Rainbow Tables und Salting

Bei einem Passwort will man den Benutzer geradezu ermuntern, viele Sonderzeichen zu verwenden. Kann das zu einer Sicherheitslücke führen?

Nein. Ein Passwort wird in der Realität als erstes in einen Hash umgewandelt und niemals als Plaintext in der Datenbank gespeichert. Ob der Benutzer dann ein „script“ oder „onload“ in seinem Passwort hat, ist nicht wichtig, da es nie zur Ausführung kommt.

Ein Passwort gehasht sieht dann vielleicht so aus: YTM0NZomIzI2OTsmIzM0NTueYQ==

Eine Hashfunktion ist eine Einwegfunktion. Der Hashwert kann also nie in das Passwort zurückgeführt werden. Dies ist auch der Grund, warum auf allen Internetseiten ein zufälliges, neues Passwort erstellt wird, wenn man sein altes Passwort vergessen hat. Gibt der Benutzer sein Passwort ein, wird es ebenfalls gehasht und mit dem gespeicherten Hash in der Datenbank verglichen.

Wenn nun ein Angreifer eine Tabelle mit Passwörtern ergattert hat, kann er alle möglichen Passwörter hashen und dann den Hash mit der Tabelle vergleichen. Beziehungsweise nimmt er nicht alle möglichen Kombinationen, sondern verwendet dafür eine sogenannte Rainbow Table, auf der die meistgenutzten Passwörter stehen. Der Angreifer hasht also ein Passwort der Rainbow Table nach dem anderen und schaut, ob der Hash in seiner geklauten Tabelle vorkommt.

Um es einem Angreifer nun zusätzlich schwer zu machen, kann man ihm die Suppe gehörig versalzen (Brüllwitz). Der Benutzer gibt ein Passwort ein und an dieses Passwort hängen wir noch einen sogenannten „Salt“, bevor wir das alles verhashen und in der Tabelle speichern. So wird aus aus dem Passwort „MeineEhefrau“ zum Beispiel „MeineEhefrau))%*ç%kkkk“. So wird das Anwenden einer Rainbow Table enorm erschwert.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit deinem WordPress.com-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s