Bcrypt generatorius ir tikrintuvas
Sukurk bcrypt maišą su 4–14 sudėtingumo koeficientu, patikrink slaptažodį pagal esamą maišą ir pamatyk jos versiją, druską ir rezultatą.
Slaptažodžio maiša
- Versija
- Sudėtingumas
- Druska (22 simboliai)
- Maiša (31 simbolis)
Slaptažodžio ir maišos patikra
- Versija
- Sudėtingumas
- Druska (22 simboliai)
- Maiša (31 simbolis)
Kaip sukurti slaptažodžio maišą su bcrypt
- Skiltyje Slaptažodžio maiša įrašyk Slaptažodis. Skaitiklis rodo jo ilgį UTF-8 baitais ir įspėja, kai jis viršija 72 baitus.
- Pasirink Sudėtingumo koeficientas (4–14). Eilutė žemiau rodo ratų skaičių, pavyzdžiui, 10 → 2^10 = 1 024 ratai.
- Spustelėk Generuoti maišą. Eigos juosta seka darbą, o puslapis ir toliau veikia. Baigus įrankis parodo sugaištą laiką ir Bcrypt maiša, paruoštą kopijuoti.
- Maiša išskaidoma į dalis: Versija, Sudėtingumas, Druska (22 simboliai) ir Maiša (31 simbolis).
Norint patikrinti slaptažodį pagal maišą, įrašyk slaptažodį, įklijuok maišą (ką tik sugeneruota įrašoma automatiškai) ir spustelėk Tikrinti slaptažodį. Rezultatas parodo, ar jie atitinka. Pažymėk Slėpti slaptažodžius, kad abu slaptažodžio laukai būtų užmaskuoti.
Maiša skaičiuojama tavo naršyklėje su bcryptjs biblioteka, kuri įkeliama tik tada, kai jos pirmą kartą prireikia. Joks slaptažodis ar maiša niekur nesiunčiama.
Kaip veikia bcrypt
bcrypt (Provos ir Mazières, 1999) yra slaptažodžių maišos funkcija, pagrįsta Blowfish šifru. Skirtingai nei SHA-256, ji sąmoningai lėta, o jos lėtumą galima reguliuoti: sudėtingumo koeficientas yra dvejeto laipsnis, todėl kiekvienas +1 padvigubina darbo kiekį. Sudėtingumas 10 reiškia 1 024 brangaus rakto paruošimo iteracijas, o 12 – 4 096. Vartotojui prisijungiant tas lėtumas vos justi, bet pavogtą duomenų bazę atspėti brutalia jėga tampa gerokai brangiau.
Maiša, pavyzdžiui, $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy, skaitoma taip:
$2b$: versija.$2a$ir$2y$(PHP) yra suderinamos ir čia tikrinamos;$2x$žymi maišas iš senos klaidingos realizacijos ir yra atmetama.10: sudėtingumo koeficientas.- Kiti 22 simboliai: atsitiktinė 128 bitų druska bcrypt savo Base64 abėcėle (
./A-Za-z0-9). - Paskutiniai 31 simbolis: 184 bitų rezultatas.
Kadangi druska atsitiktinė ir saugoma maišoje, to paties slaptažodžio maiša du kartus duoda skirtingus rezultatus, ir abu patikrinami teisingai. Todėl slaptažodį reikia tikrinti patikros funkcija, o ne lyginant maišas.
Sudėtingumo pasirinkimas
Rinkis didžiausią sudėtingumą, kurį gali sau leisti serveris išlaikydamas greitą prisijungimą, paprastai apie ketvirtį sekundės vienai maišai. OWASP rekomenduoja bcrypt bent 10 sudėtingumą. Naršyklės bcrypt vykdo JavaScript, kuris kelis kartus lėtesnis už vietinę serverio realizaciją: nuo 12 sudėtingumo įrankis įspėja, kad maišymas gali trukti nuo vienos iki kelių sekundžių, o kiekvienas papildomas žingsnis laiką padvigubina. Darbas dalijamas į trumpus gabalus, todėl puslapis nesustoja.
Naujoms sistemoms OWASP dabar teikia pirmenybę Argon2id, o bcrypt vis dar tinka ten, kur Argon2id nėra.
72 baitų riba
bcrypt naudoja tik pirmuosius 72 baitus slaptažodžio; viskas po to tyliai ignoruojama. Baitai nėra simboliai: raidė su diakritiku UTF-8 užima 2 baitus, o jaustukas – 4. Du ilgi slaptažodžiai, kurių pirmieji 72 baitai sutampa, duoda tą pačią maišą. Baitų skaitiklis įspėja, kai slaptažodis per ilgas. Kai kurios sistemos prieš bcrypt iš anksto sumaišo ilgus slaptažodžius (pavyzdžiui, HMAC-SHA256, tada Base64); jei taip darai, niekada nepaduok neapdorotų dvejetainių maišų, nes daugelyje realizacijų nulinis baitas anksti nutrauktų slaptažodį.
Dažnai užduodami klausimai
Kodėl tas pats slaptažodis kaskart duoda skirtingą maišą?
Kiekviena maiša gauna naują atsitiktinę druską, kuri saugoma pačioje maišoje. Mygtukas Tikrinti slaptažodį nuskaito druską ir sudėtingumą iš maišos ir perskaičiuoja ją, todėl patikrinamos visos versijos.
Ar bcrypt maišą galima iššifruoti?
Ne. bcrypt yra vienpusė funkcija. Vienintelis būdas atkurti slaptažodį – jį atspėti ir sumaišyti kiekvieną spėjimą, o būtent tai sudėtingumo koeficientas padaro lėtą.
Kokį sudėtingumo koeficientą rinktis?
Bent 10, o daugiau, jei serveris lieka pakankamai greitas. Matuok savo gamybinėje įrangoje: čia rodomas laikas atspindi JavaScript tavo naršyklėje, kuris paprastai lėtesnis už serverį.
Ar $2a$, $2b$ ir $2y$ maišos keičiamos viena kita?
Slaptažodžiams iki 256 baitų jos duoda tą patį rezultatą, o šis įrankis tikrina visas tris. $2b$ ištaisė ilgio perpildymo klaidą OpenBSD realizacijoje, o $2y$ yra PHP pavadinimas teisingai realizacijai.
Ar saugu čia rašyti tikrą slaptažodį?
Viskas vyksta vietoje, nieko nesiunčiama ir nesaugoma. Vis dėlto tikroms paskyroms geriau išbandyti su pavyzdiniu slaptažodžiu, o ne su tuo, kurį naudoji.
Susiję įrankiai
- Maišos generatorius (MD5, SHA-256) Sukurk teksto ar bet kokio dydžio failų MD5, SHA-1, SHA-256 ir SHA-512 maišas ir patikrink kontrolines sumas. Viskas vyksta tavo naršyklėje.
- Slaptažodžių generatorius Nemokamas slaptažodžių generatorius kuria stiprius atsitiktinius 4–128 simbolių slaptažodžius tavo naršyklėje su saugiu RNG. Niekas nesaugoma ir nesiunčiama.
- Slaptažodžio stiprumo tikrinimas Patikrink, kaip stiprus tavo slaptažodis: įvertis, numatomas laužimo laikas keturiais atakos scenarijais ir patarimai. Viskas tikrinama tavo naršyklėje.
- HMAC generatorius Apskaičiuok HMAC-SHA1, SHA-256, SHA-384 ar SHA-512 su tekstiniu, hex ar Base64 raktu, gauk hex ir Base64 išvestį ir patikrink webhook parašą naršyklėje.