bcrypt
Was ist bcrypt?
bcryptAdaptive Passwort-Hashfunktion auf Basis der Blowfish-Chiffre mit einstellbarem Kostenfaktor, 1999 von Provos und Mazières entworfen.
bcrypt ist ein 1999 von Niels Provos und David Mazières veröffentlichtes Passwort-Hashing-Verfahren (USENIX-Papier „A Future-Adaptable Password Scheme"), das einen modifizierten Blowfish-Key-Schedule („EksBlowfish") verwendet, um aus einem gesalzenen Passwort einen 192-Bit-Hash abzuleiten. Die aufwändige Key-Setup-Phase verschränkt Salt und Passwort durch wiederholte Key-Expansions und verschlüsselt anschließend die konstante Zeichenkette „OrpheanBeholderScryDoubt" 64-mal. Über den Kostenparameter — den log2 der Anzahl an Key-Setup-Runden — können Verteidiger den Arbeitsfaktor anheben, während sich die Hardware verbessert; ein Kostenfaktor von 12 bedeutet 2^12 = 4096 Iterationen.
Eine prägende Eigenheit ist die harte 72-Byte-Eingabegrenze von bcrypt: Alles jenseits von Byte 72 wird stillschweigend abgeschnitten. Dies verursachte den Okta-AD/LDAP-Vorfall der delegierten Authentifizierung im Oktober 2024, bei dem Okta einen Cache-Schlüssel erzeugte, indem es userId + username + password per bcrypt hashte; bei Benutzern mit einem Benutzernamen von 52 oder mehr Zeichen fiel das Passwort hinter die 72-Byte-Grenze und wurde ignoriert, sodass ein zuvor zwischengespeicherter Zugang die Authentifizierung bestehen konnte. Die Lehre: lange Eingaben vor bcrypt vorhashen (z. B. SHA-256 und dann Base64) oder eine Funktion ohne diese Grenze verwenden.
Der kleine, feste Speicherbedarf von bcrypt macht es zudem schwächer als speicherharte Entwürfe gegen GPU/ASIC-Cracking. Mit Kostenfaktor >= 12 bleibt es akzeptabel, doch OWASP empfiehlt für neue Systeme inzwischen Argon2id (oder scrypt).
flowchart TD
P[Password + 128-bit salt] --> T{Input > 72 bytes?}
T -->|Yes| TR[Bytes 73+ silently truncated]
T -->|No| K
TR --> K[EksBlowfish key setup]
K --> C[Cost: repeat key schedule 2^cost times]
C --> E["Encrypt 'OrpheanBeholderScryDoubt' x64"]
E --> H["$2b$12$salt + 184-bit digest"]● Beispiele
- 01
Django und Spring Security speichern Benutzerpasswörter standardmäßig mit bcrypt und Kostenfaktor 12.
- 02
Ein typischer bcrypt-Hash beginnt mit $2b$12$, gefolgt von 22 Zeichen Salt und 31 Zeichen Digest.
● Häufige Fragen
Was ist bcrypt?
Adaptive Passwort-Hashfunktion auf Basis der Blowfish-Chiffre mit einstellbarem Kostenfaktor, 1999 von Provos und Mazières entworfen. Es gehört zur Kategorie Kryptografie der Cybersicherheit.
Was bedeutet bcrypt?
Adaptive Passwort-Hashfunktion auf Basis der Blowfish-Chiffre mit einstellbarem Kostenfaktor, 1999 von Provos und Mazières entworfen.
Wie schützt man sich gegen bcrypt?
Schutzmaßnahmen gegen bcrypt kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für bcrypt?
Übliche alternative Bezeichnungen: EksBlowfish-Hash, Provos-Mazières-bcrypt.