Heb je het echt over Blowfish het encryptie algoritme, of heb je het op Blowfish's cipher gebaseerde hashing algoritme genaamd Bcrypt?
encryptie IS NIET hashing
Bcrypt is een traag hashing algoritme omdat het ontworpen is voor het hashen van wachtwoorden. Bij het hashing van wachtwoorden wil je een traag algoritme gebruiken.
Heb het over Bcrypt ja, het encrypten van passwords daarmee. Viel me op dat de strings ook van een random lengte zijn dus dat lijkt me ook veiliger als Sha1. Voor mijn wachtwoorden staat $2y$ voor die strings, dat schijnt de laatste versie te zijn. Maar het is dus wel een goede methode? Of raad je wat anders aan.
Het is een goede methode zolang de cost waarde ($2y$04$... is het laagst en $2y$31$... het hoogst, 12 of 13 is waarschijnlijk waar je voor de hardware van vandaag op uit zult komen) zo insteld dat een hash ergens tussen de 100 en 300 miniseconden duurt...
Telkens wanneer je naar een andere server verhuist zul je moeten bepalen of de cost nog goed ingesteld staat.
Een te lage cost en je hebt weer een snel algoritme, wat je niet wilt wanneer je wachtwoorden wilt hashen.
Een te hoge cost en mensen kunnen je site plat gooien door je login formulier te spammen omdat het hashen te veel tijd en rekenkracht kost.
Bebruik de PHP functie password_hash() om makkelijk wachtwoorden te hashen met Bcrypt.
password_verify() gebruik je dan om een wachtwoord met de hash die in de database opgeslagen staat te vergelijken.
Oke ik gebruik de functie crypt en password verify gebruik ik inderdaad al. Workload staat op 12 bij mij. Kwam alleen wel laatst tegen een foutmelding aan dat een oudere php versie dit niet ondersteund, is dan wel weer jammer. Volgens mij echt pas vanaf php 5.5+
Dos, wat zou jij ervan zeggen als je die kosten dan deels in eigen hand neemt, bijvoorbeeld door een variant van usleep(300) of sleep(1) in de login te zetten? Die kost wel een PHP-proces en RAM-geheugen, maar nauwelijks CPU-tijd. Dan zou dat efficiënter zijn dan een CPU-tijd vretend algoritme, maar is het effect hetzelfde.
Als je naar de documentatie van password_hash() gaat kun je onder "See Also" een php (userland) implementatie vinden die voor PHP 5.3.7 en hoger werkt.
@Ward, dan vertraag je alleen online attacks. Door een traag algoritme te nemen vertraag je online EN offline attacks.
Hackers hebben van Adobe, LinkedIn en nog andere grote bedrijven de weten te hacken de database met versleutelde/gehashde wachtwoorden weten te bemachtigen. Wees niet naïef door te denken dat online attacks vertragen voldoende is als je serieus bent over de wachtwoorden van je gebruikers veilig opslaan.