Beispiel für Passwort Hashing im Code

Passwort Hashing & Salted Password Hashing

Einfache Verschlüsselungen reichen bei Passwörtern vor allem bei Online-Plattformen nicht aus. Eine Alternative stellen hier Passwort-Hashing und „salted Passwords“ dar. Was Sie zu diesem Thema wissen müssen und warum auch diese Verfahren nicht der Weisheit letzter Schluss sind, lesen Sie hier.

2020-11-12

Logo

Passwörter sind beliebte Angriffsziele von Cyberattacken und so begehrt wie personenbezogene Daten. Dieses Problem bekommen nicht nur Online-Shops zu spüren, aber hier werden Passwörter von Kund:innen vermehrt das Ziel von Hacker:innen. Um solche Angriffe abzuwehren, gibt es verschiedene Methoden. Eine sehr effektive ist das Abspeichern von Passwörtern als verkürzt schlicht „salted Passwords“ genannt. Aber was genau bedeutet das? Und was ist Passwort-Hashing?

 

Was ist Passwort-Hashing?

Das sog. Paswort-Hashing dient einem erhöhten Datenschutz und wandelt Passwörter (PW) in einer Art und Weise in festgelegte Zeichen- und Symbolfolgen um, die es auch Hacker:innen, die sich Zugriff zu einem Firmensystem verschaffen, nicht ohne weiteres ermöglicht, diese auszulesen. Werden Kennwörter hingegen als Klartext in einem Firmensystem gespeichert, können sie ohne Umstände missbraucht werden.  

Generell können Passwörter auf drei verschiedene Weisen gespeichert werden:

  • als Klartext

  • verschlüsselt

  • als Hash.

Bei herkömmlichen Verschlüsselungen besteht die Gefahr, dass PW und alle anderen verschlüsselten Daten, die mit Hilfe eines bestimmten Schlüssels verschlüsselt wurden, mit dem gleichen Schlüssel auch wieder ent-schlüsselt werden können. Gelangt der Verschlüsselungs-Code in die falschen Hände, dann können alle verschlüsselten Dateien damit wieder lesbar gemacht werden. Verschlüsselungen funktionieren also in zwei Richtungen.

Der Unterschied zu Verschlüsselungen besteht bei Passwörtern, die mit einer Hash-Funktion erstellt wurden, darin, dass diese PW, sobald sie einmal in einen Hash umgewandelt wurden, nicht mehr zurückgewandelt werden können. Ein Passwort-Hashing-Verfahren mittels kryptologischer Hash-Funktion ist also ein One-Way-Ticket. Und das hat viele Vorteile.

 

Vorteile von Passwort-Hashing und „salted Passwords“

Sie können sich Hashes bzw. gehashte Passwörter ungefähr wie Fingerabdrücke vorstellen: Sie helfen, eine Person zu identifizieren, wenn man den passenden Abdruck hat. Aber wenn man nur irgendwo einen Fingerabdruck findet, kann die Person, zu der er gehört, nicht ohne Weiteres identifiziert werden – es sei denn, dieser Abdruck wurde schon einmal gesehen. Das klingt ein wenig wie eine stressige, digitale Version von Aschenputtel (wem gehört dieser Hash?), ist in der Praxis aber relativ einfach nachzuvollziehen: Unternehmen können sehen, dass User:innen sich mit dem richtigen Passwort eingeloggt haben, indem sie das im Login-Fenster eingegebene Passwort, das automatisch in einen Hash umgewandelt wird, mit dem davon gespeicherten Hash abgleichen. Der Vorteil: Das Unternehmen kennt das eigentliche Passwort nicht, sondern nur den Hash und es hat auch keine Möglichkeit, aus dem Hash das Passwort zu entschlüsseln (das Passwort-Hashing-Verfahren ist, wie oben bereits angesprochen, nicht umkehrbar). Schritt für Schritt funktioniert diese Methode wie folgt:

  • Ein:e Nutzer:in registriert sich auf einer Onlineplattform, z.B. einem Online-Shop

  • Das eingegebene PW wird automatisch von der Datenbank des Online-Shops gehashed. Nur der Hash wird gespeichert.

  • Beim erneuten Einloggen des / der Nutzer:in wird das eingegebene PW wieder automatisch gehashed. Der Hash wird mit dem auf der Plattform gespeicherten Hash abgeglichen.

  • Stimmten beide Hashes überein, kann sich der / die User:in einloggen. Wenn nicht, wird eine Fehlermeldung versandt. Das eigentliche Passwort ist der Plattform dabei nicht bekannt.

Dass das Passwort selbst der jeweiligen Online-Plattform nicht bekannt ist, hat vor allem folgenden Vorteil: Wird sie Opfer eines Cyber-Angriffs, dann können die Diebe zwar die Hashes stehlen, diese aber nicht ohne weiteres verwenden. Wären die Passwörter als Klartext oder „nur“ verschlüsselt gespeichert worden, wäre die Verwendung der gestohlenen PW sehr viel einfacher möglich gewesen.

Da viele Menschen leider nach wie vor ein und dasselbe Passwort für viele Onlinedienste verwenden und nicht auf sichere Passwörter setzen, kann ein solcher Angriff schnell fatale Folgen haben. Benutzt ein Unternehmen hingegen gehashte Passwörter oder gar gehashte Passwörter, die dazu noch pro Nutzer:in individuell „gesalzen“ werden (mehr dazu im folgenden Abschnitt), können Cyberattacken oftmals abgewendet oder zumindest erheblich verlangsamt werden.

 

Wie funktioniert Passwort-Hashing?

Passwörter werden mittels eines Passwort-Hashing-Verfahrens in eine festgelegte Codefolge mit zufälligen Zahlen und Buchstaben umgewandelt. Passwörter, die mit dem Secure Hash Algorithm umgewandelt wurden, haben beispielsweise eine Länge von 160 Bit, die meist als 40-stellige Hexadezimalzahl ausgegeben wird. Die Generierung von Hashes läuft also automatisiert über einen Hash-Algorithmus ab und solche Hash-Generatoren sind in der Lage, viele tausend Passwörter pro Minute zu generieren. Die Hashes unterscheiden sich dabei je nach verwendetem Algorithmus. Ein sehr häufiger Hash-Algorithmus ist skrypt oder der neuere Argon2. Diese Algorithmen „strecken“ Hashes zudem (Key Stretching) und erschweren so Brute Force Attacken, indem sie diese deutlich verlangsamen. Eine weitere, sehr beliebte (da schnelle) kryptographische Hashfunktion ist MD5 (Message-Digest Algorithm 5). Diese MD5-Funktion gilt aber allgemein als nicht mehr sehr sicher, da sie in verhältnismäßig kurzer Zeit zu knacken ist.

Leider sind aber auch Hashes nicht uncrackbar. Hacker:innen versuchen automatisiert mittels Brute-Force-Attacken, jedes nur erdenklich mögliche Passwort zu berechnen: Solche Angriffe sind darauf ausgelegt, alle potenziellen Lösungen durchzuprobieren, bis die korrekte gefunden ist. So kann die Hash-Funktion systematisch ausgehebelt werden. Das hört sich kompliziert und nach viel Arbeit an, aber ein moderner GPU kann eine solche Aktion mit 292 Millionen Hashes / Sekunde versuchen – das sind eine Menge möglicher Passwörter!

 

„Salted Passwords“ – gesalzene Passwörter

Ein weiteres Problem bei Hashes besteht darin, dass bei identischen Passwörtern gleiche Hashes generiert werden. Mittels des gleichen Hash-Algorithmus wird ein und dasselbe Passwort immer zum gleichen Hash. Hierzu gibt es von Angreifer:innen gerne genutzte bereits vordefinierten Hashlisten, die die häufigsten Passwörter und die dazugehörigen Hashes abbilden. Diese Listen nennt man auch Rainbow Tables. Das ist insofern problematisch, da Menschen dazu neigen, die gleichen Passwörter für unterschiedliche Accounts zu verwenden – auf der Liste der 2019 am Häufigsten benutzten Passwörter belegten den ersten und zweiten Platz „123456“und „123456789“. Romantiker:innen müssen stark sein, denn „iloveyou“ belegt nur den achten Platz.

Die Lösung für dieses Problem der gleichlautenden Hashes bei gleichlautenden Passwörtern lautet: Salt. So werden aus gehashten Passwörtern (umgangssprachlich) sog. salted Passwords. Das Salt steht hier für eine willkürlich festgelegte Zahlen- und Ziffernkombination, die in die Erzeugung des Hash-Wertes mit einfließt – das Salt wird also zusammen mit dem PW in die Hash-Funktion gegeben und unterscheidet sich von Nutzer:in zu Nutzer:in. Dabei sollte darauf geachtet werden, dass die Salt-Zeichenkette so lange wie der Hash selbst ist, um möglichst sicher zu sein. Zudem sollte auch das Salt aus einem entsprechenden Generator stammen, damit es für jede:n Nutzer:in individuell und zufällig generiert wird. So werden identische Passwörter, die entsprechend denselben Hash haben, durch das Salt ein weiteres Mal individualisiert und können auch gehashed nicht als identische Passwörter erkannt werden.

Beispiel: Karl benutzt eines der beliebtesten Passwörter „iloveyou“. Mittels Verschlüsselung wird daraus:

  • Gehashtes Passwort: Hash(iloveyou)

  • Gehashtes Passwort mit Salt: Hash(iloveyou, po9485vmn33vgtzhb)

Auch Cindy benutzt dieses Passwort. Ihr gehashtes Passwort ist deswegen auch Hash(iloveyou). Da die Salt-Kombination aber eine individuelle Verschlüsselung ist, wird aus ihrem Kennwort Hash(iloveyou, n43870rsdfwenc3) – und damit unterscheidet sich ihr gehashtes und gesalzenes Passwort von Karls, obwohl sie ursprünglich das gleiche Passwort verwendet haben.

Durch diese Methode sind zumindest die Rainbow Tables nicht mehr anzuwenden. Einer groß angelegte Brute-Force-Attacke wird aber auch dieses Passwort nicht unbegrenzt standhalten, jedoch wird die Attacke so zumindest verlangsamt. Wird zudem ein Key Stretching Verfahren angewandt (das die Berechnung des Hashes aufwändiger macht), bedeutet das für Angreifer:innen einen nochmals größeren Zeitaufwand, das Kennwort zu knacken – damit wird ein Angriff unattraktiver.

Manche Systeme, die verstärkt auf Datensicherheit achten, wie beispielsweise Dropbox, setzen auf eine Kombination verschiedener Methoden: So werden hier gehashte Passwörter gesalzen und der Hash dann wiederum noch einmal verschlüsselt (um genau zu sein: PW - Hash - Hash mit anderem Algorithmus - Verschlüsselung). Dieser Schlüssel wird nicht auf der Plattform, sondern separat gespeichert.

Nutzerseitig bietet es sich zudem an, vom System zufällig generierte, schier unendlich lange Passwörter zu verwenden. Diese Passwörter kann sich zwar niemand merken, können aber in Passwort-Managern gespeichert werden. Diese Passwörter reduzieren die Brute-Force-anfälligen Schwachstellen enorm, konzentrieren sie aber auf eine einzige: Das Masterpasswort des Passwort-Managers. Wichtig zu erwähnen ist hier natürlich, dass dieses Master-Passwort separat aufbewahrt werden sollte und es natürlich möglichst lang und sicher sein sollte – also Finger weg von „1234567“ oder „iloveyou“!

Autorin: Kathrin Strauß
Artikel veröffentlicht am: 12.11.2020

Bitte beachten Sie: Allgemeine Beiträge können eine datenschutzrechtliche Beratung im Einzelfall nicht ersetzen. Für die Richtigkeit und Vollständigkeit unsere Blogbeiträge können wir keine Gewähr übernehmen. Inhalte beziehen sich immer auf die Rechts- und Faktenlage zum Zeitpunkt der Veröffentlichung und sind deshalb zum Zeitpunkt des Aufrufs möglicherweise nicht mehr aktuell.

In den von uns erstellten Artikeln, Leitfäden, Checklisten, Whitepaper und anderen Beiträgen wird aus Gründen der besseren Lesbarkeit das generische Maskulinum verwendet. Wir möchten betonen, dass sowohl weibliche als auch anderweitige Geschlechteridentitäten dabei ausdrücklich mitgemeint sind, soweit es für die Aussage erforderlich ist.

Aktuelle Beiträge zum Thema Datenschutz

Wir freuen uns auf Ihre Anfrage!

Telefon:

+49 89 / 250 039 220

Öffnungszeiten:

Mo. - Fr.: 09:00 - 18:00 Uhr