Welche Methoden gibt es zur sicheren Passwortspeicherung?
- Einführung
- Hashing von Passwörtern
- Salting – Schutz gegen Rainbow-Table-Angriffe
- Verwendung von Workfaktoren durch Key-Derivation-Functions
- Bcrypt
- Argon2
- PBKDF2
- Zusätzliche Sicherheitsmaßnahmen
- Vermeidung unsicherer Vorgehensweisen
- Fazit
Einführung
Die sichere Speicherung von Passwörtern ist ein zentraler Bestandteil in der Entwicklung sicherer Anwendungen. Ziel ist es, dass Passwörter auch im Fall eines Datenlecks oder Angriffs nicht im Klartext preisgegeben werden können. Daher werden verschiedene kryptografische Verfahren und bewährte Methoden eingesetzt, um Passwörter vor unbefugtem Zugriff zu schützen.
Hashing von Passwörtern
Das grundsätzliche Prinzip zur sicheren Speicherung von Passwörtern ist das Hashing. Dabei wird aus dem Klartextpasswort mit Hilfe einer Einweg-Hashfunktion ein fester Hashwert erzeugt, der nicht ohne Weiteres zurückgerechnet werden kann. Spezielle kryptografische Hashfunktionen wie SHA-256 eignen sich grundsätzlich, sind aber für Passwort-Hashing allein nicht ausreichend, da sie sehr schnell berechnet werden können und damit anfällig für Brute-Force-Angriffe sind.
Salting – Schutz gegen Rainbow-Table-Angriffe
Um Angriffe mit vorgerechneten Hashwerten (Rainbow-Table-Angriffe) zu erschweren, fügt man jedem Passwort vor dem Hashen einen sogenannten Salt hinzu. Ein Salt ist ein eindeutiger, zufälliger Wert, der für jedes Passwort individuell generiert wird. Dieser Wert wird mit dem Klartextpasswort kombiniert und anschließend gehasht. Dadurch wird sichergestellt, dass auch identische Passwörter unterschiedliche Hashwerte erhalten und vorgefertigte Rainbow Tables” wirkungslos sind.
Verwendung von Workfaktoren durch Key-Derivation-Functions
Moderne und sichere Passwortspeicherung verwendet sogenannte Key-Derivation-Functions (KDFs), die speziell dafür entwickelt wurden, das Hashing mit einem einstellbaren Aufwand zu versehen. Diese Verfahren verlangsamen die Hash-Berechnung gezielt, um Brute-Force-Angriffe zu erschweren. Beispiele dafür sind Bcrypt, Argon2 und PBKDF2. Diese Algorithmen nutzen neben Salt auch sogenannte Iterationen oder Memory-Hardness, um die Berechnung aufwendig zu gestalten. Dies erschwert Angriffe mit hohem Rechenaufwand und reduziert somit das Risiko erfolgreicher Passwortknacker-Angriffe.
Bcrypt
Bcrypt gehört zu den am weitesten verbreiteten und bewährten Methoden zur Passwortspeicherung. Dieser Algorithmus basiert auf dem Blowfish-Symmetric-Encryption-Algorithmus und unterstützt die automatische Generierung von Salts. Außerdem kann die Rechenintensität durch den sogenannten Workfactor (oder Cost-Faktor) definiert werden, wodurch zukünftige Hardware-Leistungssteigerungen berücksichtigt werden können.
Argon2
Argon2 ist der Gewinner des Password Hashing Competition und gilt als state-of-the-art in der Passwortsicherung. Es ist flexibel konfigurierbar, wobei sowohl Rechenzeit als auch benötigter Speicher angepasst werden können. Argon2 bietet verschiedene Varianten, die speziell auf unterschiedliche Angriffsarten optimiert sind (Argon2d, Argon2i, Argon2id) und ist somit sehr resistent gegen verschiedene Angriffsformen.
PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) ist eine weit verbreitete Methode, die iteratives Hashing mit einem Salt kombiniert. Es wird häufig in älteren Systemen oder Standards wie PKCS #5 verwendet. Die Iterationszahl kann parametriert werden, um die Belastung zu erhöhen und damit Brute-Force-Angriffe zu erschweren. Allerdings gilt PBKDF2 als weniger modern und weniger sicher als Bcrypt oder Argon2, insbesondere wegen fehlender Memory-Hardness.
Zusätzliche Sicherheitsmaßnahmen
Neben der reinen Passwortspeicherung sollten weitere Praktiken beachtet werden. Beispielsweise ist es wichtig, dass Salts ausreichend lang und zufällig sind. Zudem sollten Passworthashes in sicheren Datenbanken mit Zugriffskontrollen gespeichert werden. In manchen Systemen wird empfohlen, die Hashwerte zusätzlich mit einem geheimen Schlüssel (Pepper) zu kombinieren, der getrennt vom Datenbanksystem aufbewahrt wird, um zusätzlich die Angreifbarkeit zu reduzieren.
Vermeidung unsicherer Vorgehensweisen
Es ist äußerst unsicher, Passwörter einfach im Klartext zu speichern oder sie nur mit einfachen Hashfunktionen wie MD5 oder SHA-1 zu hashen. Diese Verfahren sind veraltet und statistisch leicht angreifbar. Auch das mehrfach einfache Hashen (z.B. SHA256 mehrere Male hintereinander) ist weniger effektiv als der Einsatz spezialisierter KDFs, da diese speziell auf Sicherheitsanforderungen bei Passwörtern abgestimmt sind.
Fazit
Zur sicheren Passwortspeicherung gehören technisch robuste Verfahren wie die Anwendung von KDFs mit Salting und ausreichendem Workfactor. Empfohlen werden moderne Algorithmen wie Argon2 oder Bcrypt, die speziell für Passwort-Hashing entwickelt wurden. Dadurch wird das Risiko von Kompromittierungen und das erfolgreiche Durchführen von Offline-Angriffen deutlich verringert.
