PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) ist eine genormte Funktion, um von einem Passwort einen Schlüssel abzuleiten, der in einem symmetrischen Verfahren eingesetzt werden kann. PBKDF2 ist Bestandteil der Public-Key Cryptography Standards der RSA-Laboratorien (PKCS #5),<ref>PKCS #5: Password-Based Cryptography Standard. Standard der RSA-Laboratorien. In: rsa.com. Archiviert vom Vorlage:IconExternal am 15. Juni 2013; abgerufen am 4. Juni 2024 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> wurde im September 2000 auch von der Internet Engineering Task Force im RFC 2898 veröffentlicht<ref name="TaskForce">Vorlage:RFC-Internet</ref> und im Dezember 2010 offiziell vom National Institute of Standards and Technology (NIST) empfohlen.<ref>Meltem Sönmez Turan, Elaine Barker, William Burr, Lily Chen: Recommendation for Password-Based Key Derivation. Part 1: Storage Applications. (PDF; 129 kB) NIST (englisch).</ref> Der Standard wurde inzwischen überarbeitet und als RFC 8018 im Januar 2017 veröffentlicht.<ref>Vorlage:RFC-Internet</ref>
PBKDF2 wird jedoch nicht nur zum Erzeugen von Schlüsseln für eine anschließende symmetrische Verschlüsselung, sondern oft auch für passwort-basierte Authentifizierung benutzt.
“It is expected that the password-based key derivation functions may find other applications than just the encryption and message authentication schemes defined here. […] Another application is password checking, where the output of the key derivation function is stored (along with the salt and iteration count) for the purposes of subsequent verification of a password.”
„Es wird erwartet, dass die Passwort-basierten Schlüsselableitungsfunktionen andere Anwendungen neben den hier definierten Verschlüsselungs- und Nachrichtenauthentifizierungsverfahren finden werden. […] Eine weitere Anwendung ist die Passwortüberprüfung, wobei die Ausgabe der Schlüsselableitungsfunktion (zusammen mit dem Salt und dem Iterationszähler) für die anschließende Passwortverifizierung gespeichert wird.“
Die Ableitung
Auf das Passwort wird eine pseudozufällige Funktion, wie zum Beispiel eine kryptologische Hashfunktion oder ein HMAC, zusammen mit einem Saltwert angewendet. Die Funktion wird danach mehrmals erneut auf das Passwort angewendet, unter Verwendung des vorherigen Ergebnisses als Saltwert. Diese Verkettung erschwert es, per Brute-Force-Methode aus dem Schlüssel auf das ursprüngliche Passwort zu schließen. Durch die Verwendung von Salt wird zusätzlich der Einsatz von Rainbow Tables stark erschwert. Durch Erhöhung der Anzahl der Durchgänge kann die Funktion auch der steigenden Leistung von Computern angepasst werden.
Anwendungen von PBKDF2
- Wi-Fi Protected Access (WPA und WPA2)
- EncFS (Linux, FreeBSD und Mac OS X) ab Version 1.5.0
- WinZip-AES-Verschlüsselung<ref>AES Encryption Information: Encryption Specification AE-1 and AE-2 – Notes. In: winzip.com. Abgerufen am 4. Juni 2024 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
- VeraCrypt (Windows, Linux und Mac OS X)
- GRUB2 (boot loader)
- LUKS
- Boxcryptor<ref>Die wichtigsten technischen Fragen zu Boxcryptor. In: boxcryptor.com. Archiviert vom Vorlage:IconExternal am 20. Februar 2017; abgerufen am 4. Juni 2024.</ref>
- MediaWiki ab Version 1.24.0<ref>Mark Hershberger, Markus Glaser: MediaWiki 1.24.0 released. In: lists.wikimedia.org. 27. November 2014, abgerufen am 4. Juni 2024 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
- Django<ref>Password management in Django – How Django stores passwords. In: docs.djangoproject.com. Abgerufen am 4. Juni 2024 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
- Bitwarden<ref>What encryption is being used? | Bitwarden Help & Support. In: bitwarden.com. Abgerufen am 4. Juni 2024 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
- S-Trust (Dokumenten- und Passwort-Manager der Sparkasse)<ref>Die wichtigsten Informationen zu S-Trust. Abgerufen am 2. September 2024.</ref>
Kritik und Alternativen
PBKDF2 gilt als anfällig für Angriffe mit spezieller Hardware wie Grafikprozessoren (GPU), Field Programmable Gate Arrays (FPGA) und anwendungsspezifischen integrierten Schaltungen (ASIC).<ref>Markus Dürmuth, Tim Güneysu, Markus Kasper, Christof Paar, Tolga Yalcin, Ralf Zimmermann: Evaluation of Standardized Password-Based Key Derivation against Parallel Processing Platforms. In: Computer Security – ESORICS 2012. Springer-Verlag, Berlin / Heidelberg 2012, ISBN 978-3-642-33166-4, S. 716–733.</ref><ref><templatestyles src="Webarchiv/styles.css" />Algorithms, key size and parameters report. 2014. ( vom 17. Oktober 2015 im Internet Archive; PDF; 1,6 MB) European Union Agency for Network and Information Security, S. 53.</ref> Durch die geringe Speicheranforderung kann die Funktion preiswert in entsprechender Hardware implementiert und so Wörterbuchangriffe oder Brute-Force-Methoden parallel ausgeführt werden. Diese Angriffsfläche gilt, wenn auch aufgrund der moderaten Speicheranforderungen weniger dramatisch, ebenfalls für bcrypt. Eine Schlüsselableitungsfunktion, die auch gegen Angriffe mit spezieller Hardware schützen soll, ist die Funktion Scrypt, die als Internet-Draft publiziert wurde, sowie das neuere Argon2.
Weblinks
- Implementierung in JavaScript auf anandam.name
- Empfehlung des NIST auf nist.gov
Einzelnachweise
<references />