Was ist Bcrypt und warum es verwenden?
Bcrypt ist ein Passwort-Hashing-Algorithmus, der 1999 von Niels Provos und David Mazieres erstellt wurde. Im Gegensatz zu schnellen Hash-Funktionen wie MD5 oder SHA-256 ist Bcrypt absichtlich langsam, was Brute-Force-Angriffe rechenintensiv macht. Es generiert und bettet automatisch ein zufaelliges Salt in die Hash-Ausgabe ein und schuetzt so gegen vorberechnete Rainbow-Table-Angriffe. Der resultierende Hash-String enthaelt die Algorithmusversion, den Kostenfaktor, das Salt und den Hash in einem einzigen portablen Format.
Den Kostenfaktor verstehen
Der Kostenfaktor ist eine Ganzzahl zwischen 4 und 31, die die Anzahl der Schluesselexpansionsrunden als Potenz von 2 steuert. Ein Kostenfaktor von 10 fuehrt 1024 Runden durch, waehrend ein Kostenfaktor von 12 4096 Runden durchfuehrt. Da die Rechenleistung im Laufe der Zeit zunimmt, koennen Sie den Kostenfaktor erhoehen, um die Sicherheit aufrechtzuerhalten, ohne Ihre Hashing-Infrastruktur zu aendern. Die OWASP Foundation empfiehlt einen Mindestkostenfaktor von 10, wobei 12 ein guter Kompromiss zwischen Sicherheit und Benutzererfahrung fuer die meisten Webanwendungen ist.
Bcrypt-Hash-Format erklaert
Ein Bcrypt-Hash-String sieht so aus: $2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy. Das erste Segment ($2a$) identifiziert die Bcrypt-Version. Das zweite Segment ($10$) ist der Kostenfaktor. Die naechsten 22 Zeichen sind das base64-kodierte Salt, und die restlichen 31 Zeichen sind der base64-kodierte Hash. Dieses eigenstaendige Format bedeutet, dass Sie das Salt nie separat speichern muessen; es ist direkt in den Hash-String eingebettet.
Best Practices fuer Passwort-Hashing
Hashen Sie Passwoerter in Produktionssystemen immer serverseitig, niemals clientseitig. Verwenden Sie einen Kostenfaktor von mindestens 10 und benchmarken Sie Ihren Server, um den hoechsten Kostenfaktor zu finden, der die Anmeldezeit unter einer Sekunde haelt. Speichern Sie niemals Klartext-Passwoerter, auch nicht voruebergehend. Wenn Benutzer ihr Passwort aendern, generieren Sie einen komplett neuen Hash, anstatt den bestehenden zu aktualisieren. Erwaegen Sie die Migration zu Argon2id fuer neue Projekte, wenn Ihre Plattform es unterstuetzt, da es Speicherhaerte-Widerstand bietet.





