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érete | 256 bit (64 hex) | 512 bit (128 hex) |
| Szavak mérete | 32 bit | 64 bit |
| Sebesség 64 bites CPU-n | Jó | Gyakran jobb |
| Sebesség 32 biten / beágyazott | Jobb | Lassabb |
| Biztonsági tartalék | Nagyon magas | Még magasabb |
| Hosszkiterjesztés | Sebezhető | Sebezhető (kivéve csonkított változatok) |
| Elterjedtség | Univerzális | Szé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.