Bcrypt

Bcrypt je funkce pro jednosměrné šifrování hesel. Je postavena na šifrování Blowfish, což je symetrická bloková šifra proti které stále není známá žádná efektivní metoda prolomení. Ovšem Bcrypt, zašifruje heslo jednosměrně. Na rozdíl třeba třeba od MD5 anebo SHA nefunguje dokonce ani útok hrubou silou anebo rainbow table.

Za Bcrypt stojí Niels Provos a David Mazières.  Poprvé jej prezentovali na USENIX 1999. Využili šifru Blowfish a předělali jí na Eksblowfish (expensive key schedule Blowfish). Při šifrování je střídavě využíván salt a heslo (záleží na počtu iterací). Výsledkem je umělé zpomalení šifrování, které eliminuje nebezpečí prolomení hrubou silou. Tedy pomocí Bcrypt můžete „škálovat“ obtížnost hesla, což předpokládá narůstající výpočetní výkon hardware.

V současné době se Bcrypt považuje za jednu z nejbezpečnějších hashovacích funkcí pro ukládání hesel. S tím jak roste výpočetní výkon na ní postupně přechází stále více společností, většinou ty které používaly dnes už zastaralé hashovací funkce jako MD5 anebo SHA-1. Tedy zde to je nutnost.

Na Bcrypt spoléhá například Dropbox, Foursquare, Linode, Mall.cz, Reddit, Twitter anebo Slevomat. Implementace přitom není nijak složitá. Bcrypt můžete použít přímo v PHP a to už od verze 5.3.7 pomocí funkce crypt(). Od PHP 5.5 jsou k dispozici funkce password_hash  a password_verify.

Jen pro zajímavost standardně využívá PHP celkem 10 iterací, což se hashuje nějakých 80 milisekund. 17 iterací už by trvalo přes 10 vteřin.

 

Share Button

Tento článek byl byl přečten 2815 krát

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *