SHA-256 vs SHA-512: melyik hash függvényt válasszuk?

A SHA-256 és a SHA-512 egyaránt a SHA-2 családhoz tartozik, amelyet az NSA tervezett és a NIST szabványosított. Bármely adatból fix méretű lenyomatot állítanak elő, és ma biztonságosnak tekintik őket. A különbség a lenyomat méretében, az architektúrától függő teljesítményben és néhány biztonsági részletben rejlik. Íme, melyiket válasszuk és miért.

A SHA-2 család

A SHA-2 több változatot foglal magában (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256), amelyek ugyanazt a szerkezetet osztják, de a szavak és a lenyomat méretében különböznek. A szám a lenyomat méretét jelzi bitekben: a SHA-256 256 bitet állít elő (64 hexadecimális karakter), a SHA-512 512 bitet (128 karakter).

Ezeket a lenyomatokat kiszámíthatja a hash generátorunkkal, vagy felismerhet egy algoritmust egy lenyomatból a hash azonosítóval. Ne keverje össze az MD5-tel, amely biztonsági szempontból elavult (lásd a MD5 vs SHA-256 összehasonlításunkat).

SHA-256

A SHA-256 32 bites szavakkal dolgozik és 256 bites lenyomatot állít elő. Ez a világ legelterjedtebb hash függvénye: TLS tanúsítványok, Bitcoin aláírások, fájlok integritásának ellenőrzése, git. Rövidebb lenyomata praktikussá teszi a tárolásra, megjelenítésre és továbbításra.

  • Lenyomat: 256 bit, 64 hexadecimális karakter
  • Szavak: 32 bit, optimális a 32 bites platformokon és a beágyazott rendszereken
  • Elterjedtség: a legszélesebb, univerzális támogatás

SHA-512

A SHA-512 64 bites szavakkal dolgozik és 512 bites lenyomatot állít elő. Ellentmondásos módon egy modern 64 bites processzoron gyakran gyorsabb a SHA-256-nál nagy mennyiségek esetén, mert körönként több adatot dolgoz fel. Hosszabb lenyomata nagyobb biztonsági tartalékot is kínál.

  • Lenyomat: 512 bit, 128 hexadecimális karakter
  • Szavak: 64 bit, optimális a 64 bites architektúrákon
  • Natív ellenállás: a SHA-512 nem sebezhető a hosszkiterjesztéses támadással szemben, ha a csonkított változatait használjuk (SHA-512/256)

Összehasonlító táblázat

Szempont SHA-256 SHA-512
Lenyomat mérete256 bit (64 hex)512 bit (128 hex)
Szavak mérete32 bit64 bit
Sebesség 64 bites CPU-nGyakran jobb
Sebesség 32 biten / beágyazottJobbLassabb
Biztonsági tartalékNagyon magasMég magasabb
HosszkiterjesztésSebezhetőSebezhető (kivéve csonkított változatok)
ElterjedtségUniverzálisSzéles

Teljesítmény

A teljesítmény az architektúrától függ. Egy 64 bites szerveren vagy laptopon a SHA-512 20-50 %-kal felülmúlhatja a SHA-256-ot nagy fájlokon, mert iterációnként nagyobb blokkokat dolgoz fel. Egy 32 bites mikrokontrolleren vagy korlátozott környezetben a SHA-256 visszanyeri az előnyt.

A gyakorlatban kis bemenetek esetén (egy jelszó, egy azonosító) a különbség elhanyagolható. Csak jelentős mennyiségeknél vagy magas átviteli sebességnél válik mérhetővé.

Mikor melyiket válasszuk

Válassza a SHA-256-ot, ha

  • Maximális kompatibilitást és kompakt formátumot céloz
  • Beágyazott rendszereket, IoT-t vagy 32 bites platformokat céloz
  • Fájlok integritását ellenőrzi vagy tanúsítványokat ír alá
  • Egy rövid lenyomat megkönnyíti a megjelenítést és a tárolást

Válassza a SHA-512-t, ha

  • Nagy mennyiségeket hashel 64 bites szervereken
  • A lehető legszélesebb biztonsági tartalékot szeretné
  • SHA-512/256-ot használ a hosszkiterjesztéssel szembeni ellenálláshoz, miközben megtartja a 256 bitet

Fontos: egyik sem alkalmas jelszavak hashelésére. Ehhez használjon bcryptet vagy Argon2-t, amelyeket lassúnak és sózottnak terveztek.

Ajánlás

Általános használatra a SHA-256 az alapértelmezett választás: univerzálisan támogatott, kompakt, bőven biztonságos. Válassza a SHA-512-t, ha nagy mennyiségeket hashel 64 bites hardveren, vagy ha további biztonsági tartalékot szeretne. Jelszavak tárolásához pedig forduljon egy dedikált függvényhez, mint az Argon2id, soha ne csak a SHA-2-höz.

Gyakori kérdések

Biztonságosabb-e a SHA-512 a SHA-256-nál?

A SHA-512 hosszabb lenyomatának köszönhetően nagyobb elméleti biztonsági tartalékot kínál, de a SHA-256 már így is messze a jelenlegi támadások hatókörén kívül van. Szinte minden felhasználásra mindkettő biztonságosnak tekinthető.

Miért lehet a SHA-512 gyorsabb a SHA-256-nál?

Mert 64 bites szavakat kezel és körönként nagyobb blokkokat dolgoz fel. Egy natív 64 bites processzoron ez ellensúlyozza a többletköltséget, és gyakran gyorsabbá teszi nagy mennyiségeken. 32 biten ennek az ellenkezője igaz.

Hashelhetek jelszavakat SHA-256-tal vagy SHA-512-vel?

Nem, ez hiba lenne. Ezek a függvények gyorsak, ezért könnyen támadhatók nyers erővel. Használjon bcryptet vagy Argon2id-t, amelyek szándékosan lassúak és sót tartalmaznak.

Mi az a SHA-512/256?

Ez a SHA-512, amelynek lenyomata 256 bitre van csonkítva, eltérő inicializálási értékekkel. Egy 256 bites lenyomatot, a SHA-512 64 biten mért sebességét és a hosszkiterjesztéses támadással szembeni natív ellenállást kapjuk.