Utilia

Bcrypt räsigeneraator ja kontrollija

Loo bcrypt räsi kuluteguriga 4–14, kontrolli parooli olemasoleva räsi vastu ning vaata räsi versiooni, kulutegurit, soola ja kokkuvõtet. Töötab brauseris.

Loo parooli räsi

Kontrolli parooli räsi vastu

Kuidas parooli bcryptiga räsida

  1. Kirjuta jaotises Loo parooli räsi väljale Parool oma parool. Loendur näitab selle pikkust UTF-8 baitides ja hoiatab, kui see ületab 72 baiti.
  2. Vali Kulutegur (4–14). Allolev rida näitab voorude arvu, näiteks 10 → 2^10 = 1024 vooru.
  3. Klõpsa nuppu Loo räsi. Edenemisriba näitab tööd ja leht jääb kasutatavaks. Kui töö on tehtud, näitab tööriist kulunud aega ja kopeerimiseks valmis väljundit Bcrypt räsi.
  4. Räsi jaotatakse osadeks: Versioon, Kulutegur, Sool (22 märki) ja Räsi (31 märki).

Et kontrollida parooli räsi vastu, kirjuta parool, kleebi räsi (äsja loodud räsi täidetakse automaatselt) ja klõpsa nuppu Kontrolli parooli. Tulemus ütleb, kas need vastavad teineteisele. Märgi Peida paroolid, et mõlema paroolivälja varjata.

Räsimine toimub sinu brauseris teegiga bcryptjs, mis laaditakse alles esimesel vajadusel. Ühtegi parooli ega räsi ei saadeta kuhugi.

Kuidas bcrypt töötab

bcrypt (Provos ja Mazières, 1999) on Blowfishi šifril põhinev paroolide räsimisfunktsioon. Erinevalt SHA-256-st on see tahtlikult aeglane ja aeglust saab reguleerida: kulutegur on kahe aste, seega iga +1 kahekordistab töö. Kulutegur 10 tähendab 1024 kulukat võtmeseadistuse kordust, kulutegur 12 aga 4096. Sisselogimisel see aeglus peaaegu ei loe, kuid varastatud andmebaasi jõuga murdmine muutub palju kallimaks.

Räsi nagu $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy loetakse nii:

  • $2b$: versioon. $2a$ ja $2y$ (PHP) on ühilduvad ja neid saab siin kontrollida; $2x$ tähistab vana vigase teostuse räsisid ja seda ei aktsepteerita.
  • 10: kulutegur.
  • Järgmised 22 märki: juhuslik 128-bitine sool bcrypti enda Base64-tähestikus (./A-Za-z0-9).
  • Viimased 31 märki: 184-bitine tulemus.

Kuna sool on juhuslik ja salvestatud räsi sisse, annab sama parooli kaks korda räsimine kaks erinevat räsi ning mõlemad kontrollitakse õigesti. Seepärast kontrollitakse parooli kontrollfunktsiooniga, mitte räsisid võrreldes.

Kuluteguri valik

Vali kõrgeim kulutegur, mida sinu server endale lubab, hoides sisselogimise kiire, tavaliselt umbes veerand sekundit räsi kohta. OWASP soovitab bcryptile vähemalt kuluteguri 10. Brauserid jooksutavad bcrypti JavaScriptis, mis on mitu korda aeglasem kui serveri natiivne teostus: alates kuluteguri 12 hoiatab tööriist, et räsimine võib võtta ühest kuni mitme sekundini, ja iga lisasamm kahekordistab aja. Töö jagatakse lühikesteks lõikudeks, seega leht ei hangu.

Uute süsteemide jaoks eelistab OWASP nüüd Argon2id-d; bcrypt on endiselt vastuvõetav seal, kus Argon2id ei ole saadaval.

72-baidine piirang

bcrypt kasutab parooli esimesest 72 baidist; kõik sellele järgnev ignoreeritakse vaikselt. Baidid ei ole märgid: täpitäht võtab UTF-8-s 2 baiti ja emoji 4. Kaks pikka parooli, mille esimesed 72 baiti on samad, annavad sama räsi. Baitide loendur hoiatab, kui parool on liiga pikk. Mõned süsteemid räsivad pikad paroolid enne bcrypti eelnevalt (näiteks HMAC-SHA256 ja seejärel Base64); kui teed nii, ära anna edasi toorbinaarseid kokkuvõtteid, sest nullbait lõpetaks paljudes teostustes parooli enneaegselt.

Korduma kippuvad küsimused

Miks annab sama parool iga kord erineva räsi?

Iga räsi saab uue juhusliku soola, mis salvestatakse räsi sisse. Nupp Kontrolli parooli loeb räsist soola ja kulutegurid ning arvutab räsi uuesti, seega kontrollitakse kõik versioonid õigesti.

Kas bcrypt räsi saab dekrüpteerida?

Ei. bcrypt on ühesuunaline funktsioon. Parooli saab taastada ainult arvates ja iga arvamust räsides, ning just seda kulutegur aeglaseks teebki.

Millist kulutegurit peaksin kasutama?

Vähemalt 10 ja rohkem, kui sinu server püsib piisavalt kiire. Mõõda tegelikul tootmisriistvaral: siin näidatud aeg peegeldab JavaScripti sinu brauseris, mis on tavaliselt serverist aeglasem.

Kas $2a$, $2b$ ja $2y$ räsid on omavahel asendatavad?

Alla 256 baidi pikkuste paroolide korral annavad need sama tulemuse ja tööriist kontrollib kõiki kolme. $2b$ parandas OpenBSD teostuse pikkuse ülevoolu vea ning $2y$ on PHP nimi korrektsele teostusele.

Kas siia on turvaline päris parooli sisestada?

Kõik töötab kohapeal ja midagi ei saadeta ega salvestata. Päris kontode puhul on siiski hea tava testida näidisparooliga, mitte sellega, mida päriselt kasutad.