Bcrypt vs Argon2: melyik jelszókivonat 2026-ban
A Bcrypt és az Argon2 a két szókivonat függvénye ma a leggyakrabban használt jelszavak. Mindkettőt lassúnak és ellenállónak tervezték Brute force támadások, ellentétben az MD5-tel vagy az SHA-256-tal, amelyek felépítésüknél fogva gyorsak. Argon2a 2015-ben megnyerte a Password Hashing Competition versenyt, és most az OWASP által ajánlott választás új alkalmazásokhoz. A Bcrypt továbbra is kiváló, kiforrott és széles körben támogatott választás. Ezt Ez a cikk pontosan leírja a különbségeket, hogy segítsen dönteni.
Miért más a jelszókivonat?
Az olyan klasszikus kriptográfiai kivonatokat, mint az SHA-256, úgy tervezték, hogy gyors legyen: kivonatolni szeretnénk GB adat másodpercenként. Jelszavak esetén ez a tulajdonság az alapértelmezett: támadó amely lekéri a felhasználói táblát másodpercenként több milliárd jelszót tesztelhet a GPU. A jelszó-kivonatoló funkció (PHF) éppen ellenkezőleg, arra törekszik legyen:
- Felépítés szerint lassú, állítható költségparaméterrel
- Sós, a szivárványtáblák és a több fiók elleni párhuzamos támadások megakadályozására
- Speciális hardverekkel szembeni ellenállás (GPU, FPGA, ASIC) a versenygyorsítás korlátozása érdekében
A só és költség paraméter együtt a hash-sel, általában egyetlen karakterláncban tárolódik
$algo$params$sel$hash formátumú. Ez lehetővé teszi, hogy a költségek idővel növekedjenek anélkül
kényszeríti a régi hashek azonnali migrációját.
Bcrypt: 1999, Blowfish, költség paraméter
A Bcrypt-et Niels Provos és David Mazières tervezte az OpenBSD számára 1999-ben.
a Blowfish titkosítási algoritmuson alapul, amely kihasználja a magas inicializálási költséget.
táblázatok. A Bcrypt egyetlen paramétert tesz közzé, a cost-t (vagy a rounds-t), amely meghatározza a
iterációk száma 2^költség formában. A költség 1-gyel történő növelése megduplázza a számítási időt.
Tipikus kimeneti formátum:
$2y$12$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
| | | |
| | költség = 12 só + hash a base64-ben
| változat (2y = openbsd)
algo bcrypt
A Bcrypt 72 bájtra korlátozza a bevitelt: a hosszabb jelszó csendben csonkolódik, ami ismert csapda. A szokásos megoldás az SHA-256-os előzetes kivonatolás, majd előtte a base64 kódolás bcrypt, de ez problémás null byte-okat jelenthet egyes implementációkban. Az Argon2 nem rendelkezik ezzel a határértékkel.
Argon2: 2015, PHC győztes, 3 változat
Az Argon2t Alex Biryukov, Daniel Dinu és Dmitry Khovratovich tervezte. Megvan júliusban megnyerte a Jelszókivonat-versenyt 2015, és az RFC 9106 szabvány szerint (2021). Az Argon2 három paramétert tesz közzé:
- Memóriaköltség (
m): a felhasznált memória mennyisége, KiB-ban - Időköltség (
t): az iterációk száma a memóriablokkon - Paralelizmus (
p): párhuzamos szálak száma
Az Argon2 három változatban létezik:
- Argon2d: adatfüggő memóriahozzáférés. Ellenállóbb a GPU-támadásokkal szemben, de érzékeny az oldalcsatornás támadásokra (időzítés, gyorsítótár).
- Argon2i: adatfüggetlen memóriahozzáférés. Ellenáll az oldalsó csatornáknak, valamivel kevésbé ellenáll a GPU támadásoknak.
- Argon2id: hibrid, i módban indul, majd d módba vált. Alapértelmezés szerint az RFC 9106 és az OWASP által ajánlott.
Az OWASP által 2026-ban az Argon2id számára javasolt paraméterek: m=19456 KiB (19 MiB),
t=2, p=1. Tipikus kimeneti formátum:
$argon2id$v=19$m=19456,t=2,p=1$c2VsX2FsZWF0b2lyZQ$aGFzaF9jYWxjdWxl
| | | | |
| | base64 só paraméterei base64 hash
| verziót
algo argon2id
Miért ajánlott az Argon2id?
A speciális berendezésekkel szembeni ellenállás ma a döntő kritérium. A Bcrypt keveset használ memória (~4 KiB), amely lehetővé teszi a csúcskategóriás GPU számára több százezer hash tesztelését másodpercenként. Az Argon2id memóriakemény: több MiB memóriát kényszerít ki kísérletenként drasztikusan csökkenti a GPU-n elérhető párhuzamosságot, és dedikált ASIC-k tervezését teszi lehetővé gazdaságilag veszteséges.
Az Argon2id hibrid üzemmódja emellett védelmet nyújt az oldalcsatornás támadások ellen a számítás első felében. Ez a kombináció igazolja a helyét alapértelmezett ajánlás az OWASP-től, NIST SP 800-63B (2024-es verzió óta) és RFC 9106.
Összehasonlító táblázat
| Kritérium | Bcrypt | Argon2id |
|---|---|---|
| Év | 1999 | 2015 |
| Szabványosítás | De facto, USENIX 1999 | RFC 9106 (2021) |
| Paraméterek | költség | memória, idő, párhuzamosság |
| Felhasznált memória | ~4 KiB | Konfigurálható (~19 MiB ajánlott) |
| Kemény memória | Nem | Igen |
| GPU-ellenállás | Közepes | Erős |
| Oldalcsatorna ellenállás | Jó (állandó idő) | Jó (azonosító mód) |
| Beviteli korlát | 72 bájt | Nincs |
| OWASP 2026. évi ajánlás | Elfogadható | Preferált |
| Az ökoszisztéma érettsége | Nagyon széles | Kb. 2018 óta széles |
Teljesítmény és támadásokkal szembeni ellenállás
Egy modern szerveren a 12 költségű titkosítás körülbelül 250 ms-t vesz igénybe, és egy argon2id paraméterekkel Az OWASP körülbelül 100-300 ms géptől függően. Nem az abszolút idő a kritérium: ami számít, az az Ön költsége (egy számítás, bejelentkezésenként egyszer) és a támadóé (milliárdok) közötti arány számítások a GPU-n a dump megtöréséhez).
Egy RTX 4090-en a hashcat körülbelül 200 000 bcrypt/s-ot ér el 12 költség mellett, néhány tucathoz képest több ezer argon2id 19 MiB-on. Ugyanerre a szerveroldali számítási időre az Argon2id lelassul a támadó 5-10-szer nagyobb, mint a bcrypt, és a szakadék egyre nő a hírrel generációs GPU-k.
PHP példák
A PHP támogatja a deux nativementet a password_hash() és a password_verify() segítségével
depuis PHP 7.2 pour Argon2i (et 7.3 pour Argon2id). A PHP konstrukciója választható és formátumban
automatizálás.
Bcrypt
$hash = password_hash($jelszó, PASSWORD_BCRYPT, ['költség' => 12]);
$ok = jelszó_ellenőrzés($jelszó, $hash);
if (password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 12])) {
$hash = password_hash($jelszó, PASSWORD_BCRYPT, ['költség' => 12]);
}
Argon2id
$opts = [
'memória_költsége' => 19456, // 19 MiB
'time_cost' => 2,
'szálak' => 1,
];
$hash = password_hash($jelszó, PASSWORD_ARGON2ID, $opts);
$ok = jelszó_ellenőrzés($jelszó, $hash);
if (password_needs_rehash($hash, PASSWORD_ARGON2ID, $opts)) {
$hash = password_hash($jelszó, PASSWORD_ARGON2ID, $opts);
}
Vous pouvez générer ou identifier des hashs de tous type avec notre Generateur de hash et notre hash azonosítója.
Ajánlás
2026-ban új alkalmazás esetén válassza az Argon2id beállítást
OWASP mint alapvonal (m=19456, t=2, p=1), a következőnek megfelelően módosítandó
célidő (általában 250-500 ms). Ha egy meglévő alkalmazást tart fenn bcrypt formátumban, akkor az
nincs sürgős az áttelepítés: a 12 vagy annál nagyobb költségű bcrypt biztonságos marad 2026-ban is. Használja ki a
password_needs_rehash() a következő bejelentkezéskor a felhasználók fokozatos migrálásához
eszközöket az Argon2id felé.
Feltétlenül kerülje az MD5, SHA-1 és csupasz SHA-256 jelszavakat (lásd a MD5 és SHA-256 összehasonlítása). Ezen algoritmusok egyike sem erre a célra készült.
Gyakran ismételt kérdések
A Bcrypt továbbra is biztonságos 2026-ban?
Igen, feltéve, hogy elegendő költséget használ (12 minimum, 14, ha lehetséges). A Bcrypt nem rendelkezik ismert kriptográfiai hiba. Egyetlen gyengesége az Argon2id-hez képest a kis helyigénye memória, ami jobban elérhetővé teszi a GPU és FPGA támadások számára.
Állítsanak át egy bcrypt adatbázist az Argon2id-re?
Nem sürgősen. A fokozatos migráció a password_needs_rehash() segítségével
ajánlott: minden sikeres bejelentkezéskor újra kivonatolja a jelszót az Argon2id-ben. végén
néhány hónap múlva az aktív felhasználók többsége migrációra kerül, és kényszerítheti a
visszaállítás alvó fiókokhoz.
Mi a megfelelő számú szál az Argon2id számára?
Az OWASP alapértelmezés szerint a p=1 beállítást ajánlja. A p növelése semmit sem tesz, ha az Ön
webszerver már sok kérést dolgoz fel párhuzamosan, és bonyolítja a hangolást. Prioritás
inkább az m (memória) növelése, amely a GPU ellenállásának fő karja.
Mi az a „titkos visszafejtő”?
Nincs bcrypt visszafejtő: a funkció felépítésénél fogva egyirányú. Az eszközöket akik azt állítják, hogy „dekódolják” a titkosítást, csak jelszavas szótárakat tesztelnek áramlatok a hash ellen. Ez pontosan ugyanaz, mint egy támadónak az asztalod.
Argon2i vagy Argon2id?
Argon2id jelszavakhoz minden esetben. Az Argon2i valamivel több biztonságos az oldalcsatornákkal szemben, de gyengébb a GPU támadásokkal szemben. Argon2id kombinálja mindkettő előnyeit, és az RFC 9106 kifejezetten ajánlja a jelszókivonatoláshoz.
A só mellett borsot is adjunk hozzá?
A só az alkalmazások túlnyomó többségéhez elegendő. Egy paprika (az alapon kívül tárolt titkos kulcs és HMAC-ként használják a hash előtt) egy réteget ad hozzá adatbázis-szivárgás esetén az alkalmazáskiszolgáló veszélyeztetése nélkül. Az Argon2id nem natívan biztosítja, annak lennie kell tárcsázza manuálisan.