Definition Salt Was ist ein Salt?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Peter Schmitz

Salts kommen zum Einsatz, um Angriffe auf gehashte Passwörter beispielsweise durch Rainbow Tables zu erschweren. Es handelt sich um eine zufällige Zeichenkette, die vor dem Hashing dem Klartextpasswort hinzugefügt wird. Die erzeugten Hash-Werte unterscheiden sich von den ohne Salt erzeugten Hash-Werten und sind über eine Rainbow-Tabelle nicht mehr zu ermitteln.

Firmen zum Thema

Ein Salt ist eine zufällige Zeichenkette, die zum Schutz vor Angriffen auf Passwörter genutzt wird.
Ein Salt ist eine zufällige Zeichenkette, die zum Schutz vor Angriffen auf Passwörter genutzt wird.
(Bild: gemeinfrei / Pixabay )

Salt, im Englischen Salz, ist eine zufällige Zeichenkette, die für kryptographische Hashfunktionen zum Einsatz kommt. Typischer Anwendungsbereich ist das Hashing von Passwörtern. Mit Hilfe von Salts und dem Hashing werden Angriffe auf gehashte Passwörter beispielsweise über Rainbow-Tabellen verhindert. Rainbow-Tabellen beinhalten eine Vielzahl von vorberechneten Paaren bestehend aus Passwort und zugehörigem Hash-Wert. Angreifern wird das einfache Ermitteln von Passwörtern über diese Tabellen durch die Verwendung eines Salts beim Hashing quasi "versalzen".

Die mit Salts versehenen und gehashten Passwörter werden teilweise als Salted Passwords (gesalzene Passwörter) bezeichnet. Das Salting fügt eine zufällig erzeugte Zeichenkette dem Passwort hinzu, bevor es über eine Hashfunktion zu einem Hash-Wert verwandelt wird. Nur Hash-Wert und Salt und nicht das Klartextpasswort sind in der Datenbank gespeichert. Die Verwendung von Salts erhöht den Schutz der gehashten Passwörter. Als zusätzliche Schutzmaßnahmen können weitere Methoden wie das Hashing mit einem Pepper zum Einsatz kommen.

Einsatz von Salts für die Hashfunktion von Passwörtern

Zur Anmeldung und zur Authentifizierung bei Web-Diensten, Anwendungen oder auf Rechnern werden in der Regel eindeutige Kombinationen aus Username und Passwort verwendet. Zum Schutz der Passwörter sollen diese niemals im Klartext übertragen oder auf den IT-Systemen gespeichert werden. Aus diesem Grund wird vor der Speicherung des Passworts und beim Authentifizierungsvorgang das Hashing angewandt. Das Hashing verwandelt das Passwort in einer Einwegfunktion in einen eindeutigen Hash-Wert. Das Ermitteln des Passworts aus dem Hash-Wert in Rückwärtsrichtung ist nicht möglich. Jede Veränderung des Passworts erzeugt einen anderen eindeutigen Hash-Wert. Nur die Hash-Werte werden auf den IT-Systemen gespeichert. Für das Hashing angewandte kryptographische Verfahren sind beispielsweise BLAKE oder SHA-2. Beim Anmeldevorgang kommt wieder die Hashfunktion zum Einsatz. Der bei der Anmeldung erzeugte Hash-Wert wird mit dem gespeicherten Hash-Wert verglichen.

Das Hashing schützt leider nicht vor dem Ermitteln von Passwörtern über sogenannte Rainbow-Tabellen. Für den Aufbau von Rainbow-Tabellen werden viele Klartextpasswörter (beispielsweise aus Wörterbüchern oder aus Listen oft genutzter Passwörter) gehasht und als Kombination aus Klartextpasswort und zugehörigem Hash-Wert gespeichert. Ein Angreifer kann durch das Vergleichen eines vorliegenden oder gestohlenen Hash-Werts mit einem Hash-Wert aus der Tabelle das Klartextpasswort eines Users herausfinden. Für die verschiedenen Hash-Verfahren existieren große Rainbow-Tabellen mit vielen möglichen Passwörtern, wodurch effiziente Passwortangriffe ermöglicht werden.

Ein Salt schützt genau vor dieser Angriffsmethode. Indem vor dem Anwenden der Hashfunktion dem Klartextpasswort eine zufällig erzeugte Zeichenkette angefügt wird, ist über vorgefertigte Rainbow-Tabellen kein Rückschluss mehr auf das eigentliche Passwort möglich. Die Tabellen müssten auch die Hash-Werte für alle möglichen Kombinationen von Salts und Klartextpasswörtern enthalten.

Weitere Schutzmaßnahmen vor Passwortangriffen

Zusätzlich zum Salt lassen sind weitere Schutzmaßnahmen vor Passwortangriffen ergreifen. Beliebt ist die Nutzung von Pepper (Pfeffer). Ein Pepper ist wie ein Salt eine zufällige Zeichenkette, die beim Hashing dem Klartextpasswort angehängt wird. Allerdings ist ein Pepper im Gegensatz zu einem Salt getrennt von den Login-Daten und dem Hash-Wert an einem sicheren Ort gespeichert. Beim Diebstahl der Hash-Werte bleibt das Pepper dem Angreifer unbekannt.

(ID:47614381)

Über den Autor