Bcrypt vs Argon2: liema password hash fl-2026
BcryptuArgon2huma ż-żewġ funzjonijiet tal-hash tal-kelma l-aktar passwords użati llum. It-tnejn huma ddisinjati biex ikunu bil-mod u reżistenti Attakki tal-forza bruta, b'differenza MD5 jew SHA-256 li huma veloċi bil-kostruzzjoni. Argon2a rebaħ il-Password Hashing Competition fl-2015 u issa hija l-għażla rakkomandata mill-OWASP għal applikazzjonijiet ġodda. Bcrypt jibqa’ għażla eċċellenti, matura u appoġġjata b’mod wiesa’. Dan Dan l-artikolu jispjega d-differenzi preċiżament biex jgħinek tiddeċiedi.
Għaliex hash tal-password huwa differenti
Hash kriptografiku klassiku bħal SHA-256 huwa ddisinjat biex ikun mgħaġġel: irridu nagħtu hash GB ta' dejta kull sekonda. Għall-passwords, din il-proprjetà hija default: attakkant li tirkupra l-tabella ta 'l-utenti tiegħek tista' tittestja biljuni ta 'passwords kull sekonda fuq a GPU. Funzjoni ta 'hashing tal-password (PHF), għall-kuntrarju, tfittex li tkun:
- Bil-mod mill-kostruzzjoni, b'parametru tal-ispiża aġġustabbli
- Mielħa, biex jipprevjenu tabelli tal-qawsalla u attakki paralleli fuq kontijiet multipli
- Reżistenti għal ħardwer speċjalizzat (GPU, FPGA, ASIC) biex tillimita t-tħaffif kontradittorju
Il-parametru tal-melħ u tal-ispiża huma maħżunamal-hash, fi string waħda tipikament
tal-forma $algo$params$sel$hash. Dan jippermetti li l-ispiża tiżdied maż-żmien mingħajr
seħħ migrazzjoni immedjata ta 'hashes qodma.
Bcrypt: 1999, Blowfish, parametru tal-ispiża
Bcrypttfassal minn Niels Provos u David Mazières għal OpenBSD fl-1999. Huwa
ibbażat fuq l-algoritmu tal-kriptaġġ Blowfish, li minnu jisfrutta l-ispiża għolja tal-inizjalizzazzjoni tal
tabelli. Bcrypt jesponi parametru wieħed, kost (jew rounds), li jiddefinixxi l-
numru ta' iterazzjonijiet fil-forma 2^spiża. Iż-żieda fl-ispiża b'1 tirdoppja l-ħin tal-kalkolu.
Format tal-output tipiku:
$2y$12$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
| | | |
| | spiża = 12 melħ + hash fil-bażi64
| varjant (2y = openbsd)
algo bcrypt
Bcrypt jillimita l-input għal 72 bytes: password itwal hija maqtugħa skiet, li hija nassa magħrufa. Is-soluzzjoni tas-soltu hija li pre-hash ma SHA-256 imbagħad base64 encode qabel bcrypt, iżda dan jista' jintroduċi bytes nulli problematiċi fuq xi implimentazzjonijiet. Argon2 m'għandux dan il-limitu.
Argon2: 2015, rebbieħ tal-PHC, 3 varjanti
Argon2tfassal minn Alex Biryukov, Daniel Dinu u Dmitry Khovratovich. Huwa għandu rebaħ il-Password Hashing Competition f'Lulju 2015 u hija standardizzata minn RFC 9106 (2021). Argon2 jesponi tliet parametri:
- Kost tal-memorja (
m): kwantità ta' memorja użata, f'KiB - Kost tal-ħin (
t): numru ta’ iterazzjonijiet fuq il-blokka tal-memorja - Paralleliżmu (
p): numru ta' ħjut paralleli
Argon2 jeżisti fi tliet varjanti:
- Argon2d: aċċess għall-memorja li jiddependi mid-dejta. Aktar reżistenti għall-attakki tal-GPU, iżda suxxettibbli għall-attakki tal-kanali tal-ġenb (timing, cache).
- Argon2i: aċċess għall-memorja indipendenti mid-dejta. Reżistenti għall-kanali tal-ġenb, kemmxejn inqas reżistenti għall-attakki tal-GPU.
- Argon2id: ibridu, jibda fil-mod i imbagħad jaqleb għall-mod d. Rakkomandat awtomatikamentminn RFC 9106 u OWASP.
Il-parametri rakkomandati mill-OWASP fl-2026 għal Argon2id: m=19456 KiB (19 MiB),
t=2, p=1. Format tal-output tipiku:
$argon2id$v=19$m=19456,t=2,p=1$c2VsX2FsZWF0b2lyZQ$aGFzaF9jYWxjdWxl
| | | | |
| | parametri tal-melħ base64 base64 hash
| verżjoni
algo argon2id
Għaliex Argon2id huwa rakkomandat
Ir-reżistenza għal tagħmir speċjalizzat illum hija l-kriterju deċiżiv. Bcrypt juża ftit memorja (~ 4 KiB), li tippermetti GPU high-end biex tittestja mijiet ta 'eluf ta' hashes kull sekonda. Argon2id huwa iebsa għall-memorja: seħħ diversi MiB ta 'memorja għal kull tentattiv inaqqas drastikament il-paralleliżmu li jista 'jinkiseb fuq GPU u jagħmel id-disinn ta' ASICs dedikati ekonomikament mhux profittabbli.
Il-mod ibridu ta' Argon2id jipprovdi wkoll protezzjoni kontra attakki fuq il-kanali tal-ġenb matul l-ewwel nofs tal-kalkolu. Hija din il-kombinazzjoni li tiġġustifika l-post tagħha rakkomandazzjoni awtomatika minn OWASP, NIST SP 800-63B (minn ir-reviżjoni 2024) u RFC 9106.
Tabella ta' tqabbil
| Kriterju | Bcrypt | Argon2id |
|---|---|---|
| Sena | 1999 | 2015 |
| Standardizzazzjoni | De facto, USENIX 1999 | RFC 9106 (2021) |
| Parametri | ispiża | memorja, ħin, paralleliżmu |
| Memorja użata | ~4 KiB | Konfigurabbli (~19 MiB rakkomandati) |
| Bil-memorja | Le | Iva |
| Reżistenza tal-GPU | Moderata | Qawwija |
| Reżistenza tal-kanal tal-ġenb | Tajjeb (ħin kostanti) | Tajjeb (modalità id) |
| Limitu tad-dħul | 72 bytes | Xejn |
| Rakkomandazzjoni tal-OWASP 2026 | Aċċettabbli | Ippreferut |
| Maturità tal-ekosistema | Wesa' ħafna | Wesa' mill-~2018 |