Generátor a ověřovač bcrypt hashů
Proměňte heslo v $2b$ bcrypt hash, nebo zkontrolujte heslo proti hashi, který už máte. Hashování běží ve Web Workeru ve vašem prohlížeči — nic z toho, co napíšete, se nikam neodesílá.
Nevkládejte skutečné produkční heslo do žádného online nástroje — ani do tohoto.
Vstup
Heslo a cost
Pro každý hash se losuje nová 16bajtová sůl, takže stejné heslo pokaždé vrátí jiný hash. To je smysl soli, ne chyba.
Cost 10 znamená 2^10 = 1,024 kol přípravy klíče. Každý krok nahoru zdvojnásobí práci — útočníkovi s ukradeným souborem hesel i vašemu vlastnímu serveru při každém jednom přihlášení. Většina produkčních systémů se pohybuje mezi 10 a 12.
Všechny tři prefixy dávají pro hesla kratší než 72 bajtů identické bajty hashe; liší se jen označení. Vestavěná funkce crypt() v PHP $2b$ nezná, takže $2b$ hash v password_verify() tiše selže. Pro PHP zvolte $2y$.
Hashování běží ve Web Workeru uvnitř této záložky. Heslo se nikdy neodesílá Wespneru ani nikomu jinému — není tu žádný požadavek, který by ho odeslal.
Výsledek
bcrypt hash
Stiskněte „Vygenerovat hash“.
Cost, měřeno zde
Co vás toto nastavení stojí
Odhad: jeden hash se změří v této záložce při cost 8 a všechny ostatní hodnoty se z něj dopočítají zdvojnásobováním. Číslo určuje váš hardware a prohlížeč.
Ta čísla jsou jedno vlákno JavaScriptu. Skutečný útočník pouští nativní kód na regálu GPU a je o řády rychlejší — přesně kvůli té propasti musí být cost faktor nepohodlný, ne pohodlný. Stejný posuvník zároveň určuje, kolik CPU spálí každé vaše vlastní přihlášení.
Čtení řetězce
Co znamená těch 60 znaků
$2b$12$LQv3c1yqBWVHxkd0LHAkCOYUtYgBuLIjrsGrDUgYqZbY7d0RfPbtq
Oba bloky používají vlastní base64 abecedu bcryptu, která začíná ./ a číslice dává nakonec — není to standardní base64 a dekódovat ji jako base64 dá špatné bajty. To a rozdělení 22/31 je rychlý způsob, jak ověřit, že řetězec opravdu je bcrypt hash a ne něco, co tak jen vypadá.
Volba algoritmu
bcrypt, scrypt nebo Argon2?
Tento nástroj je záměrně jen pro bcrypt. Tady je, kdy je bcrypt správnou odpovědí a kdy ne.
Pomalý záměrně, ale opírá se jen o čas CPU a pevné 4 KB paměti. GPU a FPGA ho paralelizují mnohem lépe než novější návrhy. Pořád je to naprosto slušná volba, podporuje ho úplně všechno a jeho limit 72 bajtů na heslo je jeho nejpřekvapivější ostrou hranou.
Přidává laditelnou paměťovou náročnost, takže útočník potřebuje RAM na každý pokus, nejen jádra. Levně paralelizovat je ho těžší než bcrypt.
Vítěz Password Hashing Competition 2015 a to, co dnes OWASP doporučuje pro nové systémy: oddělené parametry pro čas, paměť a paralelismus, přičemž varianta id odolává útokům přes GPU i postranními kanály. Pokud začínáte na zelené louce a vaše platforma ji má, použijte ji. Pokud udržujete něco, co už ukládá $2y$ hashe, bcrypt s rozumným cost faktorem není havárie — přehashujte při dalším přihlášení.
Důkaz
Zkontrolujte tuto stránku proti publikovaným testovacím vektorům
Hashovací nástroj, který chce být důvěryhodný, by měl jít ověřit. Toto jsou referenční bcrypt vektory používané implementacemi odvozenými z OpenBSD; stránka každý z nich přepočítá z jeho vlastní soli a porovná znak po znaku, pak zahashuje a znovu ověří jednorázové heslo při dvou cost faktorech.
Dávka spouští 6 publikovaných vektorů a dva obousměrné testy.
Provozuješ vlastní herní server?
Herní servery Wespner s DDoS ochranou, NVMe disky a aktivací do pár minut.