SHA-256 vs. SHA-512: jakou hashovací funkci zvolit?

SHA-256 i SHA-512 patří obě do rodiny SHA-2, navržené NSA a standardizované NIST. Produkují otisk pevné velikosti z libovolných dat a dnes jsou považovány za bezpečné. Rozdíl spočívá ve velikosti otisku, ve výkonu podle architektury a v několika detailech bezpečnosti. Zde je, kterou zvolit a proč.

Rodina SHA-2

SHA-2 sdružuje několik variant (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256), které sdílejí stejnou strukturu, ale liší se velikostí slov a otisku. Číslo udává velikost otisku v bitech: SHA-256 produkuje 256 bitů (64 hexadecimálních znaků), SHA-512 produkuje 512 (128 znaků).

Tyto otisky můžete vypočítat naším generátorem hashů nebo rozpoznat algoritmus podle otisku pomocí identifikátoru hashů. Nezaměňujte s MD5, zastaralou z hlediska bezpečnosti (viz naše srovnání MD5 vs. SHA-256).

SHA-256

SHA-256 pracuje se slovy o 32 bitech a produkuje otisk o 256 bitech. Je to nejrozšířenější hashovací funkce na světě: TLS certifikáty, podpisy Bitcoinu, ověřování integrity souborů, git. Její kratší otisk ji činí praktickou k ukládání, zobrazování a přenosu.

  • Otisk: 256 bitů, 64 hexadecimálních znaků
  • Slova: 32 bitů, optimální na 32bitových platformách a ve vestavěných systémech
  • Rozšíření: nejširší, univerzální podpora

SHA-512

SHA-512 pracuje se slovy o 64 bitech a produkuje otisk o 512 bitech. Proti intuici je na moderním 64bitovém procesoru často rychlejší než SHA-256 pro velké objemy, protože zpracuje více dat za kolo. Její delší otisk nabízí také vyšší bezpečnostní rezervu.

  • Otisk: 512 bitů, 128 hexadecimálních znaků
  • Slova: 64 bitů, optimální na 64bitových architekturách
  • Nativní odolnost: SHA-512 není zranitelná vůči útoku prodloužením délky, používají-li se její zkrácené varianty (SHA-512/256)

Srovnávací tabulka

Kritérium SHA-256 SHA-512
Velikost otisku256 bitů (64 hex)512 bitů (128 hex)
Velikost slov32 bitů64 bitů
Rychlost na 64bitovém CPUDobráČasto vyšší
Rychlost na 32 bitech / vestavěnéVyššíPomalejší
Bezpečnostní rezervaVelmi vysokáJeště vyšší
Prodloužení délkyZranitelnáZranitelná (kromě zkrácených variant)
RozšířeníUniverzálníŠiroké

Výkon

Výkon závisí na architektuře. Na 64bitovém serveru či notebooku může SHA-512 překonat SHA-256 o 20 až 50 % u velkých souborů, protože zpracuje větší bloky na iteraci. Na 32bitovém mikrokontroléru nebo v omezeném prostředí získává výhodu zpět SHA-256.

V praxi je u malých vstupů (heslo, identifikátor) rozdíl zanedbatelný. Měřitelným se stává až u značných objemů nebo vysokých propustností.

Kdy zvolit jednu či druhou

Zvolte SHA-256, když

  • Cílíte na maximální kompatibilitu a kompaktní formát
  • Míříte na vestavěné systémy, IoT nebo 32bitové platformy
  • Ověřujete integritu souborů nebo podepisujete certifikáty
  • Krátký otisk usnadňuje zobrazení a ukládání

Zvolte SHA-512, když

  • Hashujete velké objemy na 64bitových serverech
  • Chcete co nejširší bezpečnostní rezervu
  • Používáte SHA-512/256, abyste odolali prodloužení délky a zároveň zachovali 256 bitů

Důležité: ani jedna z obou není vhodná pro hashování hesel. K tomu použijte bcrypt nebo Argon2, navržené tak, aby byly pomalé a osolené.

Doporučení

Pro obecné použití je SHA-256 výchozí volbou: univerzálně podporovaná, kompaktní, dostatečně bezpečná. Zvolte SHA-512, pokud hashujete velké objemy na 64bitovém hardwaru nebo chcete dodatečnou bezpečnostní rezervu. A pro ukládání hesel se obraťte na vyhrazenou funkci jako Argon2id, nikdy na samotnou SHA-2.

Časté dotazy

Je SHA-512 bezpečnější než SHA-256?

SHA-512 nabízí vyšší teoretickou bezpečnostní rezervu díky delšímu otisku, ale SHA-256 je již dávno mimo dosah současných útoků. Pro téměř všechna použití jsou obě považovány za bezpečné.

Proč může být SHA-512 rychlejší než SHA-256?

Protože manipuluje se slovy o 64 bitech a zpracuje větší bloky za kolo. Na nativním 64bitovém procesoru to kompenzuje dodatečnou cenu a často ji činí rychlejší u velkých objemů. Na 32 bitech je to naopak.

Mohu hashovat hesla pomocí SHA-256 nebo SHA-512?

Ne, byla by to chyba. Tyto funkce jsou rychlé, tedy snadné k útoku hrubou silou. Použijte bcrypt nebo Argon2id, které jsou záměrně pomalé a obsahují sůl.

Co je SHA-512/256?

Je to SHA-512, jejíž otisk je zkrácen na 256 bitů, s odlišnými inicializačními hodnotami. Získáte otisk o 256 bitech, rychlost SHA-512 na 64 bitech a nativní odolnost vůči útoku prodloužením délky.