Password-Hashing ist ein grundlegender Aspekt der Passwortsicherheit und hat die Speicherung von Passwörtern von Klartext zu verschlüsselten Hashes transformiert. Dieser Artikel untersucht die Entwicklung des Passwort-Hashing, von frühen Algorithmen wie MD5 und SHA-1 bis hin zu den sichereren Methoden, die heute empfohlen werden, und schließt mit der Bedeutung der Verwendung zufälliger Passwörter für jede Website.
Bevor wir tiefer in die Geschichte und Entwicklung des Passwort-Hashings eintauchen, ist es wichtig zu verstehen, was Hashing ist. Hash-Funktionen, die Methoden, die das Hashing durchführen, sind dafür ausgelegt, beliebige Datenstränge oder "Eingaben" zu nehmen und eine Zeichenkette fester Länge zu erzeugen, die typischerweise als "Hash" bekannt ist. Dieser Prozess hat mehrere Schlüsselmerkmale, die ihn besonders nützlich für Sicherheitszwecke machen.
Ein entscheidendes Merkmal von Hash-Funktionen ist ihre Empfindlichkeit gegenüber Änderungen der Eingabe. Dies wird als Lawineneffekt bezeichnet. Sogar eine minimale Änderung der Eingabe—wie das Ändern eines einzelnen Zeichens in einem Passwort—führt zu einem völlig anderen Hash. Zum Beispiel sehen die Hashes für die Zeichenketten "password1" und "password2" völlig unterschiedlich aus, obwohl der einzige Unterschied zwischen den beiden Eingaben das letzte Zeichen ist. Dieses Merkmal ist entscheidend für die Aufrechterhaltung der Datenintegrität, da es nahezu unmöglich ist, die ursprüngliche Eingabe allein aus dem Hash abzuleiten.
Darüber hinaus sind Hash-Funktionen Einwegfunktionen. Das bedeutet, dass sie so konzipiert sind, dass es rechnerisch unpraktikabel ist, sie umzukehren. Die Ausgabe (der Hash) enthält keine spezifischen Daten über die Eingabe, die es jemandem ermöglichen würden, die ursprünglichen Daten ohne außergewöhnlichen Rechenaufwand zu rekonstruieren. Die einzig praktikable Methode, einen Hash "umzukehren", ist eine Methode namens Brute-Forcing, bei der jede mögliche Kombination der ursprünglichen Daten erneut gehasht wird, bis ein übereinstimmender Hash gefunden wird.
In den frühen Tagen der digitalen Sicherheit wurden MD5 (Message-Digest-Algorithmus 5) und SHA-1 (Secure Hash Algorithm
Während Hash-Funktionen darauf ausgelegt sind, schnell und effizient zu sein, kann dieses Merkmal für die Passwortsicherheit nachteilig sein, da es Brute-Force-Angriffe erleichtert. Passwortbasierte Schlüsselableitungsfunktionen (PBKDFs), wie PBKDF2, bcrypt und scrypt, sind dazu konzipiert, diese Angriffe zu bekämpfen, indem sie ein Salt hinzufügen (um Rainbow-Table-Angriffe zu verhindern) und eine Technik namens Key-Stretching anwenden. Key-Stretching verlangsamt den Hashing-Prozess absichtlich, was unbefugte Zugriffsversuche erheblich erschweren kann.
Mit dem Fortschritt der Cybersicherheit wurden die Unzulänglichkeiten früher Hashing-Algorithmen wie MD5 und SHA-1 deutlich, was die Entwicklung von Algorithmen speziell für die Passwortsicherheit zur Folge hatte, wie bcrypt, scrypt und Argon2, auch bekannt als Passwortbasierte Schlüsselableitungsfunktionen (PBKDFs).
Laut OWASP sind die empfohlenen Algorithmen für Passwort-Hashing bcrypt, scrypt und Argon2. Diese werden bevorzugt aufgrund ihrer robusten Verteidigung gegen Brute-Force-Angriffe und ihrer eingebauten Mechanismen für Salt und Key-Stretching.
bcrypt ist eine Passwort-Hashing-Funktion, die aus dem Blowfish-Cipher abgeleitet ist. Es verwendet ein Salt, um sich gegen Rainbow-Table-Angriffe zu schützen, und verwendet einen Kostenparameter, um die Berechnungszeit (und damit die Schwierigkeit) der Hash-Erzeugung zu erhöhen. Dieser Kostenfaktor ist einstellbar und ermöglicht, den Algorithmus an Hardware-Verbesserungen anzupassen.
Hauptparameter:
OWASP empfiehlt, einen Arbeitsfaktor von 10 oder mehr mit einer Passwortgrenze von 72 Bytes zu verwenden.
scrypt ist so konzipiert, dass es sowohl speicher- als auch zeitintensiv ist, um großangelegte, maßgeschneiderte Hardware-Angriffe zu widerstehen. Es kann so konfiguriert werden, dass eine bestimmte Menge Speicher erforderlich ist und es enthält ebenfalls ein Salt und eine Iterationszahl, ähnlich wie PBKDF2.
Hauptparameter:
OWASP empfiehlt, einen Mindest-CPU/Memory-Kostenparameter von (2^17), eine Mindestblockgröße von 8 (1024 Bytes) und einen Parallelisierungsparameter von 1 zu verwenden.
Argon2, der Gewinner des Password Hashing Competition im Jahr 2015, gibt es in zwei Varianten: Argon2d und Argon2i. Argon2d ist optimiert für Umgebungen, in denen die Bedrohung durch Seitenkanalangriffe gering ist, während Argon2i optimiert ist, um Seitenkanalangriffe zu widerstehen. Es enthält auch Schlüsselelemente von sowohl bcrypt als auch scrypt.
Hauptparameter:
OWASP empfiehlt, Argon2id mit einer Mindestkonfiguration von 19 MiB Speicher, einer Iterationszahl von 2 und 1 Grad an Parallelität zu verwenden.
Angesichts der sich ständig weiterentwickelnden Natur von Sicherheitsbedrohungen und Gegenmaßnahmen ist es entscheidend, mit den neuesten Praktiken in der Passwortsicherheit auf dem Laufenden zu bleiben. Für die aktuellsten und umfassendsten Empfehlungen verweisen Sie bitte auf die OWASP Password Storage Cheat Sheet auf der offiziellen Website von OWASP. Stellen Sie sicher, dass Sie diese Richtlinien regelmäßig überprüfen, um sich an die besten Praktiken in der Cybersicherheit anzupassen.
Während der Einsatz moderner Hashing-Algorithmen von entscheidender Bedeutung ist, spielt auch die Art und Weise, wie Passwörter erstellt und verwaltet werden, eine wichtige Rolle bei der Aufrechterhaltung der Sicherheit. Zufällige Passwörter für jede Website sind aufgrund mehrerer Faktoren unerlässlich:
Vom MD5 und SHA-1 zu modernen Algorithmen wie bcrypt und Argon2 hat das Passwort-Hashing bedeutende Veränderungen durchgemacht. Angesichts sich weiterentwickelnder Cyber-Bedrohungen sind die Nutzung moderner Hashing-Algorithmen und die Gewährleistung zufälliger, einzigartiger Passwörter für jede Website wichtige Praktiken zur Sicherung der Online-Sicherheit. Diese Strategien verhindern nicht nur die Kompromittierung einzelner Konten, sondern stärken auch insgesamt die Sicherheitslage gegen zunehmend ausgeklügelte Angriffe.