Utilia

Bcrypt-framleiðandi og athugun

Búðu til bcrypt-tætigildi með kostnaðarstuðli frá 4 til 14, athugaðu lykilorð gegn tætigildi og sjáðu útgáfu, kostnað, salt og tætigildið sjálft.

Búa til tætigildi úr lykilorði

Athuga lykilorð gegn tætigildi

Hvernig á að búa til bcrypt-tætigildi úr lykilorði

  1. Undir Búa til tætigildi úr lykilorði slærðu inn Lykilorð. Teljari sýnir lengd þess í UTF-8-bætum og varar þig við þegar það fer yfir 72 bæti.
  2. Veldu Kostnaðarstuðull (4–14). Línan fyrir neðan sýnir fjölda umferða, til dæmis 10 → 2^10 = 1 024 umferðir.
  3. Smelltu á Búa til tætigildi. Framvindustika fylgir vinnunni og síðan er áfram nothæf á meðan hún keyrir. Þegar henni er lokið sýnir verkfærið tímann sem tók og Bcrypt-tætigildi, tilbúið til afritunar.
  4. Tætigildið er brotið upp í hluta sína: Útgáfa, Kostnaður, Salt (22 stafir) og Tætigildi (31 stafur).

Til að athuga lykilorð gegn tætigildi slærðu inn lykilorðið, límir tætigildið inn (tætigildið sem þú bjóst til rétt áðan fyllist sjálfkrafa út) og smellir á Athuga lykilorð. Niðurstaðan segir hvort þau passi saman. Hakaðu við Fela lykilorð til að fela bæði lykilorðsreitina.

Tætingin fer fram í vafranum þínum með bcryptjs-safninu, sem er aðeins hlaðið inn þegar þú þarft það fyrst. Hvorki lykilorð né tætigildi eru send neitt.

Hvernig bcrypt virkar

bcrypt (Provos og Mazières, 1999) er lykilorðatætifall byggt á Blowfish-dulritinu. Ólíkt SHA-256 er það viljandi hægt og hægðin er stillanleg: kostnaðarstuðullinn er veldi af tveimur, svo hvert +1 tvöfaldar vinnuna. Kostnaður 10 þýðir 1 024 endurtekningar af kostnaðarsömum lyklaundirbúningi, kostnaður 12 þýðir 4 096. Þessi hægð skiptir varla máli þegar notandi skráir sig inn, en hún gerir það mun dýrara að brjóta upp stolinn gagnagrunn með þrotlausri leit.

Tætigildi eins og $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy skiptist svona:

  • $2b$: útgáfan. $2a$ og $2y$ (PHP) eru samhæfð og hægt er að athuga þau hér. $2x$ merkir tætigildi úr gamalli gallaðri útfærslu og er hafnað.
  • 10: kostnaðarstuðullinn.
  • Næstu 22 stafir: slembið 128 bita salt í sérstöku Base64-stafrófi bcrypt (./A-Za-z0-9).
  • Síðustu 31 stafirnir: 184 bita niðurstaðan.

Þar sem saltið er slembið og geymt í tætigildinu gefur sama lykilorðið tvö mismunandi tætigildi ef það er tætt tvisvar, og bæði staðfestast rétt. Þess vegna er lykilorð athugað með staðfestingaraðgerð en ekki með því að bera tætigildi saman.

Að velja kostnað

Veldu hæsta kostnað sem netþjónninn þinn ræður við en haltu innskráningu hraðri, yfirleitt um fjórðungur úr sekúndu á hvert tætigildi. OWASP mælir með lágmarkskostnaði 10 fyrir bcrypt. Vafrar keyra bcrypt í JavaScript, sem er nokkrum sinnum hægara en innfædd útfærsla á netþjóni: frá kostnaði 12 varar verkfærið við að tæting geti tekið eina til nokkrar sekúndur og hvert aukaskref tvöfaldar tímann. Vinnunni er skipt í stuttar sneiðar svo síðan frýs ekki.

Fyrir ný kerfi kýs OWASP nú Argon2id, en bcrypt er enn ásættanlegt þar sem Argon2id er ekki í boði.

72 bæta takmarkið

bcrypt notar aðeins fyrstu 72 bæti lykilorðsins og allt eftir það er hunsað án viðvörunar. Bæti eru ekki stafir: séríslenskur stafur tekur 2 bæti í UTF-8 og emoji tekur 4. Tvö löng lykilorð sem deila fyrstu 72 bætunum gefa sama tætigildið. Bætateljarinn varar þig við þegar lykilorð er of langt. Sum kerfi fortæta löng lykilorð (til dæmis með HMAC-SHA256 og svo Base64) áður en bcrypt tekur við. Ef þú gerir það skaltu aldrei senda hrá tvíundarútkomu, því núllbæti myndi stytta lykilorðið í mörgum útfærslum.

Algengar spurningar

Af hverju fæ ég mismunandi tætigildi í hvert sinn fyrir sama lykilorð?

Hvert tætigildi fær nýtt slembið salt sem er geymt inni í tætigildinu. Hnappurinn Athuga lykilorð les saltið og kostnaðinn úr tætigildinu og reiknar það aftur, þannig að allar útgáfur staðfestast.

Er hægt að snúa bcrypt-tætigildi við?

Nei. bcrypt er einstefnufall. Eina leiðin til að endurheimta lykilorð er að giska á það og tæta hverja ágiskun, en einmitt það gerir kostnaðarstuðullinn hægvirkt.

Hvaða kostnaðarstuðul ætti ég að nota?

Að minnsta kosti 10, og meira ef netþjónninn þinn er enn nógu hraður. Mældu á raunverulegum vélbúnaði þínum: tíminn sem sýndur er hér endurspeglar JavaScript í vafranum þínum, sem er yfirleitt hægara en netþjónn.

Eru $2a$, $2b$ og $2y$ tætigildi skiptanleg?

Fyrir lykilorð undir 256 bætum gefa þær sömu niðurstöðu og þetta verkfæri athugar allar þrjár. $2b$ lagaði lengdarvilla í útfærslu OpenBSD og $2y$ er PHP-heiti réttrar útfærslu.

Er óhætt að slá inn raunverulegt lykilorð hér?

Allt keyrir á tækinu þínu og engu er hlaðið upp eða vistað. Fyrir raunverulega reikninga er samt góð venja að prófa með sýnishorni af lykilorði frekar en lykilorði sem þú notar í raun.