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
Év19992015
SzabványosításDe facto, USENIX 1999RFC 9106 (2021)
Paraméterekköltségmemória, idő, párhuzamosság
Felhasznált memória~4 KiBKonfigurálható (~19 MiB ajánlott)
Kemény memóriaNemIgen
GPU-ellenállásKözepesErős
Oldalcsatorna ellenállásJó (állandó idő)Jó (azonosító mód)
Beviteli korlát72 bájtNincs
OWASP 2026. évi ajánlásElfogadhatóPreferált
Az ökoszisztéma érettségeNagyon szélesKb. 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.