Passwort-Hashing: Hoher Schutz vor Passwortdiebstahl
15 Milliarden gestohlene Passwörter liegen laut Forbes im Darknet. Selbst lange, zufällige Zeichenfolgen schützen nicht genug, wenn Cyberkriminelle an ihren Speicherort kommen. Passwort-Hashing-Algorithmen erhöhen die Sicherheit, indem sie jedes Passwort in einen Code übersetzen, der sich nicht zurückverwandeln lässt. In unserem Artikel erklären wir, wie Passwort-Hashing funktioniert und was Sie dabei beachten müssen.
Was ist Passwort-Hashing?
Eröffnen wir ein neues Konto in einem Online-Shop, speichert die Webseite das von uns festgelegte Passwort auf ihrem Server. Auch Unternehmen bewahren Intranet-Passwörter meist lokal auf. Diese Notwendigkeit, Passwörter zu speichern, ist nicht ungefährlich. Hackt jemand den Server, erhält er leicht Zugang zu unseren Passwörtern.
Manche Websites speichern alle Passwörter verschlüsselt. Das verbessert zweifellos die Sicherheit, ist jedoch gegen Hacker nur bedingt wirksam. Das Problem: Ein Verschlüsselungsalgorithmus benötigt immer einen Schlüssel, um die Daten wieder zu entschlüsseln. Der Schlüssel muss ebenfalls auf dem Server aufbewahrt werden, was ihn bei einem Datenleck anfällig für Missbrauch macht.
Passwort-Hashing-Verfahren wandeln dagegen das Passwort in einen „String“ (Zeichenfolge) mit einer festen Länge um. Aus qwertz wird beispielsweise mit dem SHA-256 Algorithmus d482ba4b7d3218f3e841038c407ed1f94e9846a4dd68e56bab7718903962aa98. Das ist eine Folge aus 64 hexadezimalen Zeichen, wobei jedes Zeichen 4 Bit an Speicherplatz benötigt.
Während bei einer Verschlüsselung der private Schlüssel auf dem Server liegt, speichert die Webseite beim Hashen nur den finalen Hash
Anders als bei einer Verschlüsselung handelt es sich bei dem Algorithmus um eine Einwegfunktion. Das bedeutet, dass es unmöglich ist, aus dem String das ursprüngliche Passwort abzuleiten. In diesem Sinne funktioniert das Hashing wie ein Fingerabdruck: Man kann einen Fingerabdruck mit einem anderen vergleichen und sich damit legitimieren. Es ist aber unmöglich, von einem Fingerabdruck auf eine Person schließen, wenn er nicht in einer Datenbank gespeichert ist.
Mit diesem Online-Tool können Sie ausprobieren, wie verschiedene Algorithmen aus der SHA- und Keccak-Familie Wörter und Sätze in Hash verwandeln.
Wie funktioniert Passwort-Hashing?
Loggen wir uns auf einer Webseite ein, die Passwort-Hashing nutzt, finden folgende Schritte statt:
- 1.
Bei der ersten Anmeldung legen wir ein Passwort fest. Die Webseite hasht es und speichert nur den Hash.
- 2.
Loggen wir uns zu einem späteren Zeitpunkt ein, geben wir das unverschlüsselte Passwort ein.
- 3.
Die Hash-Funktion berechnet wieder den Hash und vergleicht ihn mit dem gespeicherten.
- 4.
Stimmen die Hash-Werte überein, sind wir eingeloggt.
- 5.
Verlieren oder vergessen wir das Passwort, müssen wir über einen E-Mail-Link oder andere Verfahren (beispielsweise SMS) ein neues generieren. Die Webseite kann aus dem gespeicherten Hash das alte Passwort nicht wiederherstellen.
Wie macht eine gute Hash-Funktion aus?
Die ersten Hash-Algorithmen stammen aus den Siebzigern, inzwischen existieren viele davon. Alle müssen folgende Eigenschaften besitzen:
Einwegfunktion – bei einer Einwegfunktion lässt sich das Argument nicht anhand des Funktionswerts berechnen. Lassen wir beispielsweise den Satz Die Sonne scheint mit dem SHA-256 Algorithmus hashen, ergibt das 9fb513b651378b3b59e3adbeabcb8ebb21f236afffbcae5cf47fbee8797856c8. Es ist unmöglich, von dieser Zeichenfolge auf den ursprünglichen Satz zu schließen.
Deterministisch – geben wir unseren Beispielsatz mehrere Male in die Hash-Funktion ein, erhalten wir immer das gleiche Ergebnis. Das sorgt dafür, dass man sich bei einer korrekten Passworteingabe immer einloggen kann. Leicht unterschiedliche Eingaben, beispielsweise Die Sone scheint, ergeben dagegen eine komplett unterschiedliche Zeichenfolge, in diesem Fall 308e81d0f9c0c92628d76da22851c6c60a06d2cae037ce378331639a773f4e09. Brute-Force-Angriffe, bei denen Hacker Passwörter erraten und Variationen ausprobieren, werden dadurch unwahrscheinlicher.
Ergebnisse mit gleichem Format – bei der Hash-Funktion SHA-256 ergeben alle Eingaben ungeachtet ihrer Länge einen 256-Bit String. Generell haben alle mit dem gleichen Algorithmus gehashten Passwörter die gleiche Länge, egal wie das ursprüngliche Passwort aussieht
Kollisionsresistent – zwei verschiedene Eingaben sollten nie dasselbe Ergebnis liefern (Kollision). In der Praxis ist kein Hashing-Algorithmus 100 % kollisionsresistent, da die Anzahl der Outputs maximal a^b beträgt (a= Anzahl der möglichen Zeichen; b=Länge der Zeichenfolge), während die Input-Werte unendlich sind. Es reicht jedoch aus, wenn die Wahrscheinlichkeit für eine Kollision sehr gering ist.
Gängige Hash-Funktionen, die eine hohe Sicherheit bieten, sind beispielsweise SHA-3, SHA-256 und SHA-512, BCrypt, PBKDF2, Argon2 und Scrypt.
Was sind gesalzene und gepfefferte Passwörter?
Selbst Passwort-Hashing verhindert nicht jeden unbefugten Zugriff. Laut einer Studie der Cybersecurity-Experten von ID Agent verwenden Millionen Nutzer ihr Fußballteam, ihre Lieblingsband oder häufige Vornamen als Passwörter für ihre Accounts. Um die zu erraten, müssen Hacker nur durch die Social Media-Accounts ihrer Opfer stöbern. Alternativ hashen sie einen beliebten Begriff samt leichten Variationen und testen die Ergebnisse auf hunderttausend Accounts (umgekehrte Brute-Force-Angriffe).
Um dieses Problem zu lösen, fügen manche Webseiten jedem Passwort eine Zeichenfolge hinzu, bevor es gehasht wird. Man spricht dann von gesalzenen Passwörtern (Englisch: salted passwords). Das Salz wird wie der Hash auf dem Server gespeichert. Es gibt einzigartige Salze (unique salts), bei denen jeder Nutzer eine eigene Zeichenfolge hat, sowie Salze, die bei allen Nutzern angewendet werden. Erstere bieten eine höhere Sicherheit.
Pfeffer funktioniert ähnlich wie Salz, indem man eine Zeichenfolge an das ursprüngliche Passwort anhängt. Anders als Salz ist Pfeffer nicht in der Datenbank des Webseitenservers gespeichert, sondern hartkodiert. Bei einem Datendiebstahl sind damit keine Konten gefährdet. Auf der anderen Seite verwendet man die gleiche Zeichenfolge für alle Nutzer, die damit leichter zu erraten ist.
Sowohl das Salz als auch der Hash werden auf dem Server gespeichert.
Ist Passwort-Hashing hundertprozentig sicher?
Selbst gesalzene und gepfefferte Passwörter sowie die besten Hash-Algorithmen schützen unsere Daten nicht hundertprozentig. Mit diesen Strategien sind Hacker trotzdem erfolgreich:
Bei klassischen Brute-Force-Angriffen oder Wörterbuchangriffen generieren sie Millionen von gehashten Passwörtern und vergleichen sie mit den auf dem Server gespeicherten Hash-Werten. Stimmen zwei überein, haben sie das ursprüngliche Passwort identifiziert.
Im Darknet verkaufen Kriminelle zu diesem Zweck Tabellen mit bereits generierten oder gestohlenen Hash-Werten. Sogenannte Rainbow Tables (Regenbogentabellen) ermöglichen eine strukturierte Suche nach dem zu einem bestimmten Hash passenden Passwort und sind viel schneller als Brute-Force-Angriffe.
Selbst gesalzene Passwörter bieten keine totale Sicherheit, da bei einem Datenklau auch die Salze in die Hände der Cyberkriminellen fallen.
Fazit
Passwort-Hashing ist eine gängige Lösung, um Passwörter sicher auf Servern aufzubewahren. Die Hash-Algorithmen sorgen dafür, dass Hacker selbst im Falle eines erfolgreichen Serverangriffs nur wertlose Zeichenfolgen erhalten. Das Salzen und Pfeffern von Passwörtern erhöht die Sicherheit zusätzlich.
Lassen sich die Passwörter allerdings leicht erraten, sind Brute-Force-Angriffe mithilfe von Datenbanken mitunter erfolgreich. Zudem haben Hacker in der Vergangenheit bestimmte Hash-Algorithmen entlarvt. Starke Passwörter und aktuelle Algorithmen bleiben somit der beste Schutz vor Datendiebstahl.