Generator ng Bcrypt

5 sa 2 mga rating

Ang Generator ng Bcrypt ay isang libreng tool na gumagawa ng bcrypt hash mula sa anumang string para sa ligtas na pag-iimbak ng password.

Ano ang bcrypt, at ligtas pa rin ba itong gamitin?

Ang bcrypt ay isang algorithm sa pag-hash ng password na katanggap-tanggap pa ring gamitin kapag nakatakda ang angkop na cost, bagama't mas madalas nang piliin ang Argon2id para sa mga bagong system. Dinisenyo nina Niels Provos at David Mazières ang bcrypt noong 1999. Ginamit nila ang proseso ng key scheduling ng Blowfish cipher upang sadyang gawing magastos ang bawat pagtatangkang manghula ng password.

One-way ang hashing. Kaya sinusuri ng application ang password sa pamamagitan ng pag-hash sa ipinasok na posibleng password gamit ang mga nakaimbak na parameter, sa halip na kunin ang orihinal. Hindi tulad ng mga general-purpose algorithm gaya ng SHA-3, gumagawa ang bcrypt ng kumpleto at fixed-length na encoded record na naglalaman ng bersyon, cost, salt at checksum.

Ang karaniwang bcrypt record ay may 60 ASCII character. Kumakatawan ang checksum nito sa 184 bit at lumalabas bilang 31 character sa sariling Base64-style encoding ng bcrypt. Hindi itinuturing na cryptographically broken ang bcrypt, pero may limitasyon ito dahil sa edad ng disenyo nito: hanggang 72 input byte lang ang pinoproseso ng mga tradisyonal na implementation. Nagbibigay din ang Argon2id ng memory-hard na proteksiyong wala sa bcrypt.

Paano gamitin ang Generator ng Bcrypt?

Ilagay ang string na kailangang i-hash, patakbuhin ang generator, at kopyahin ang value na makikita sa result field na Bcrypt Hash. Itago ang buong resulta sa halip na ang huling checksum lang ang kunin.

  1. Gamitin ang eksaktong password o test string, kasama ang tamang laki ng mga titik, espasyo at bantas.
  2. Gawin ang bcrypt result.
  3. Kopyahin ang lahat ng 60 character, kasama ang version marker at cost sa simula.
  4. I-save ang resulta sa password-hash column ng iyong database.
  5. Kapag nag-sign in ang user, gamitin ang bcrypt verification function ng iyong platform. Huwag gumawa ng panibagong hash at direktang paghambingin ang text.

Karaniwang gumagamit ang bcrypt ng bagong random salt para sa bawat hash. Dahil dito, maaaring makagawa ng dalawang magkaibang record kapag dalawang beses na i-hash ang parehong input, at parehong mabe-verify ang mga ito laban sa input na iyon. Normal ito at pinipigilan nitong magkaroon ng magkaparehong nakaimbak na value ang magkakaparehong password.

Sa server isinasagawa ang proseso. Ipinapadala ang iyong input sa server sa pamamagitan ng HTTPS at hindi ito iniimbak. Kung totoong password sa production ang gagamitin, suriin muna kung naaayon sa patakaran sa seguridad ng iyong organisasyon ang paglalagay nito sa anumang third-party na online service.

Maaari bang i-decrypt o ibalik sa orihinal ang bcrypt hash?

Hindi. Hindi maaaring i-decrypt ang bcrypt hash dahil hindi ito encrypted na data at wala itong decryption key. Sa praktika, inaatake ito sa pamamagitan ng paghula sa mga posibleng password at pag-verify sa bawat hula laban sa nakaimbak na hash.

Pinababagal ng bcrypt ang panghuhulang ito gamit ang configurable na cost. Gayunman, hindi nito kayang gawing ligtas ang maikli, karaniwan o dati nang na-leak na password, at maaari pa ring matukoy ng determinadong attacker ang mahihinang input. Pinipigilan ng salt ang muling paggamit ng attacker sa iisang precomputed table para sa maraming account. Pero hindi lihim ang salt at kasama ito sa nakaimbak na record.

Paano basahin ang resulta ng bcrypt

Karaniwang sumusunod ang bcrypt result sa modular crypt format. Ang isang halimbawang anyo nito ay $2y$12$[22-character salt][31-character checksum]. Paglalarawan lamang ito ng format at hindi hash ng isang tinukoy na password.

Bahagi Karaniwang haba Gamit
Version marker 4 na character Tinutukoy ang variant ng bcrypt, gaya ng $2y$ o $2b$.
Cost 3 character Itinatala ang dalawang digit na cost na sinusundan ng separator.
Salt 22 character Ini-encode ang 128-bit na random salt.
Checksum 31 character Ini-encode ang 184-bit na bcrypt checksum.

Panatilihing magkakasama ang mga bahaging ito. Kapag binago ang isang character, pinutol ang value o inimbak ito sa column na masyadong maikli, karaniwang mabibigo ang verification. Maaaring magkaiba ang version marker sa mga compatible na library. Kaya dapat gumamit ang mga application ng mga subok na password API sa halip na sila mismo ang mag-parse at bumuo muli ng record.

Kailan dapat gamitin ang bcrypt?

Gamitin ang bcrypt sa pag-hash ng password sa mga system na sinusuportahan na ito, lalo na kung mahalaga ang compatibility sa kasalukuyang database o framework. Sadyang mabagal at salted ang bcrypt, kaya hindi ito angkop bilang general-purpose file checksum o deduplication identifier.

  • Mga angkop na gamit ang mga password ng application, migration testing, pagsusuri sa laki ng database field at paggawa muli ng development environment na compatible sa bcrypt.
  • Gamitin ang Argon2id sa halip para sa bagong password system kung sinusuportahan ito ng platform at mapapamahalaan nang maayos ang mga memory setting nito.
  • Gamitin ang SHA-3 sa halip para sa file integrity, content fingerprint o deduplication. Gumagawa ang SHA-3/384 generator at Generator ng SHA-3/512 ng mga general-purpose digest, hindi ng mga password record.
  • Huwag gamitin ang bcrypt para sa digital signature, message authentication, encryption o pag-iimbak ng data na kailangan pang mabawi sa hinaharap.

Itinuturing na input data ang mga espasyo, bantas at numero, kaya hindi binabalewala ang mga ito. Ini-encode muna bilang mga byte ang mga character na may accent at mga hindi Latin na character bago patakbuhin ang bcrypt. Dahil dito, kailangang gumawa ang parehong system ng eksaktong magkakaparehong byte, kabilang ang paggamit ng pare-parehong character encoding at Unicode normalisation. Lalong mahalaga rito ang limitasyong 72 byte dahil maaaring gumamit ng mahigit isang byte ang isang Unicode character. Posibleng i-hash ang walang lamang input, pero walang makabuluhang proteksiyon laban sa panghuhula ang isang password na walang laman.

Mga madalas itanong

Gaano kalaking espasyo sa database ang kailangan ng bcrypt hash?

Maglaan ng hindi bababa sa 60 ASCII character para sa karaniwang bcrypt record. Makakatulong ang bahagyang mas malapad na field para sa paglipat sa ibang password algorithm sa hinaharap, samantalang hindi kailangan ang binary column para sa karaniwang encoded form.

Maaari bang ilipat sa bcrypt ang mga dati nang SHA password hash?

Hindi maaaring gawing bcrypt hash ng orihinal na password ang isang kasalukuyang SHA digest kung hindi alam ang password na iyon. Sa karaniwang paraan ng migration, vine-verify muna ang lumang hash sa susunod na pag-sign in ng user. Pagkatapos, hina-hash gamit ang bcrypt o Argon2id ang ibinigay na password at ipinapalit ang bagong hash sa lumang record.

Bago mag-save ng resulta, tiyaking nakopya ang buong 60-character na value, hindi ito pinuputol ng database field, at sinusuportahan ng tatanggap na application ang version marker na nasa record.

Mga sikat na tool