Generátor a overovač bcrypt hashov
Premeňte heslo na $2b$ bcrypt hash, alebo skontrolujte heslo proti hashu, ktorý už máte. Hashovanie beží vo Web Workeri vo vašom prehliadači — nič z toho, čo napíšete, sa nikam neodosiela.
Nevkladajte skutočné produkčné heslo do žiadneho online nástroja — ani do tohto.
Vstup
Heslo a cost
Pre každý hash sa žrebuje nová 16-bajtová soľ, takže rovnaké heslo zakaždým vráti iný hash. To je zmysel soli, nie chyba.
Cost 10 znamená 2^10 = 1,024 kôl prípravy kľúča. Každý krok nahor zdvojnásobí prácu — útočníkovi s ukradnutým súborom hesiel aj vášmu vlastnému serveru pri každom jednom prihlásení. Väčšina produkčných systémov sa pohybuje medzi 10 a 12.
Všetky tri prefixy dávajú pre heslá kratšie než 72 bajtov identické bajty hashu; líši sa len označenie. Vstavaná funkcia crypt() v PHP $2b$ nepozná, takže $2b$ hash v password_verify() ticho zlyhá. Pre PHP zvoľte $2y$.
Hashovanie beží vo Web Workeri vnútri tejto karty. Heslo sa nikdy neodosiela Wespneru ani nikomu inému — nie je tu žiadna požiadavka, ktorá by ho odoslala.
Výsledok
bcrypt hash
Stlačte „Vygenerovať hash“.
Cost, merané tu
Čo vás toto nastavenie stojí
Odhad: jeden hash sa odmeria v tejto karte pri cost 8 a všetky ostatné hodnoty sa z neho dopočítajú zdvojnásobovaním. Číslo určuje váš hardvér a prehliadač.
Tie čísla sú jedno vlákno JavaScriptu. Skutočný útočník púšťa natívny kód na regáli GPU a je o rády rýchlejší — presne pre tú priepasť musí byť cost faktor nepohodlný, nie pohodlný. Rovnaký posuvník zároveň určuje, koľko CPU spáli každé vaše vlastné prihlásenie.
Čítanie reťazca
Čo znamená tých 60 znakov
$2b$12$LQv3c1yqBWVHxkd0LHAkCOYUtYgBuLIjrsGrDUgYqZbY7d0RfPbtq
Oba bloky používajú vlastnú base64 abecedu bcryptu, ktorá začína ./ a číslice dáva nakoniec — nie je to štandardný base64 a dekódovať ho ako base64 dá zlé bajty. To a rozdelenie 22/31 je rýchly spôsob, ako overiť, že reťazec naozaj je bcrypt hash a nie niečo, čo tak len vyzerá.
Voľba algoritmu
bcrypt, scrypt alebo Argon2?
Tento nástroj je zámerne len pre bcrypt. Tu je, kedy je bcrypt správnou odpoveďou a kedy nie.
Pomalý zámerne, ale opiera sa len o čas CPU a pevné 4 KB pamäte. GPU a FPGA ho paralelizujú oveľa lepšie než novšie návrhy. Stále je to úplne slušná voľba, podporuje ho úplne všetko a jeho limit 72 bajtov na heslo je jeho najprekvapivejšou ostrou hranou.
Pridáva laditeľnú pamäťovú náročnosť, takže útočník potrebuje RAM na každý pokus, nielen jadrá. Lacno paralelizovať ho je ťažšie než bcrypt.
Víťaz Password Hashing Competition 2015 a to, čo dnes OWASP odporúča pre nové systémy: oddelené parametre pre čas, pamäť a paralelizmus, pričom variant id odoláva útokom cez GPU aj postrannými kanálmi. Ak začínate na zelenej lúke a vaša platforma ho má, použite ho. Ak udržiavate niečo, čo už ukladá $2y$ hashe, bcrypt s rozumným cost faktorom nie je havária — prehashujte pri ďalšom prihlásení.
Dôkaz
Skontrolujte túto stránku proti publikovaným testovacím vektorom
Hashovací nástroj, ktorý chce byť dôveryhodný, by mal ísť overiť. Toto sú referenčné bcrypt vektory používané implementáciami odvodenými z OpenBSD; stránka každý z nich prepočíta z jeho vlastnej soli a porovná znak po znaku, potom zahashuje a znova overí jednorazové heslo pri dvoch cost faktoroch.
Dávka spúšťa 6 publikovaných vektorov a dva obojsmerné testy.
Prevádzkuješ vlastný herný server?
Herné servery Wespner s DDoS ochranou, NVMe diskami a aktiváciou do pár minút.