SHA-256 vs SHA-512: ktorú hašovaciu funkciu zvoliť?
SHA-256 aj SHA-512 patria do rodiny SHA-2, ktorú navrhla NSA a štandardizoval NIST. Vytvárajú odtlačok s pevnou veľkosťou z akýchkoľvek údajov a dnes sa považujú za bezpečné. Rozdiel spočíva vo veľkosti odtlačku, vo výkone podľa architektúry a v niekoľkých bezpečnostných detailoch. Tu je, ktorú zvoliť a prečo.
Rodina SHA-2
SHA-2 zoskupuje viacero variantov (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256), ktoré zdieľajú rovnakú štruktúru, ale líšia sa veľkosťou slov a odtlačku. Číslo udáva veľkosť odtlačku v bitoch: SHA-256 vytvára 256 bitov (64 šestnástkových znakov), SHA-512 vytvára 512 (128 znakov).
Tieto odtlačky môžete vypočítať naším generátorom hašu alebo rozpoznať algoritmus z odtlačku pomocou identifikátora hašu. Nezamieňať s MD5, ktorý je z bezpečnostného hľadiska zastaraný (pozri naše porovnanie MD5 vs SHA-256).
SHA-256
SHA-256 pracuje so slovami s 32 bitmi a vytvára odtlačok s 256 bitmi. Je to najrozšírenejšia hašovacia funkcia na svete: certifikáty TLS, podpisy Bitcoinu, overovanie integrity súborov, git. Jeho kratší odtlačok ho robí praktickým na ukladanie, zobrazovanie a prenos.
- Odtlačok: 256 bitov, 64 šestnástkových znakov
- Slová: 32 bitov, optimálne na 32-bitových platformách a vo vstavaných systémoch
- Rozšírenie: najširšie, univerzálna podpora
SHA-512
SHA-512 pracuje so slovami s 64 bitmi a vytvára odtlačok s 512 bitmi. Protiintuitívne je na modernom 64-bitovom procesore pri veľkých objemoch často rýchlejšia ako SHA-256, pretože spracuje viac údajov na jedno kolo. Jeho dlhší odtlačok ponúka aj vyššiu bezpečnostnú rezervu.
- Odtlačok: 512 bitov, 128 šestnástkových znakov
- Slová: 64 bitov, optimálne na 64-bitových architektúrach
- Natívna odolnosť: SHA-512 nie je zraniteľná voči útoku predĺžením dĺžky pri použití jeho skrátených variantov (SHA-512/256)
Porovnávacia tabuľka
| Kritérium | SHA-256 | SHA-512 |
|---|---|---|
| Veľkosť odtlačku | 256 bitov (64 hex) | 512 bitov (128 hex) |
| Veľkosť slov | 32 bitov | 64 bitov |
| Rýchlosť na 64-bitovom CPU | Dobrá | Často vyššia |
| Rýchlosť na 32 bitoch / vstavané | Vyššia | Pomalšia |
| Bezpečnostná rezerva | Veľmi vysoká | Ešte vyššia |
| Predĺženie dĺžky | Zraniteľná | Zraniteľná (okrem skrátených variantov) |
| Rozšírenie | Univerzálne | Široké |
Výkon
Výkon závisí od architektúry. Na 64-bitovom serveri alebo notebooku môže SHA-512 prekonať SHA-256 o 20 až 50 % pri veľkých súboroch, pretože spracuje väčšie bloky na iteráciu. Na 32-bitovom mikrokontroléri alebo v obmedzenom prostredí preberá výhodu SHA-256.
V praxi je pri malých vstupoch (heslo, identifikátor) rozdiel zanedbateľný. Merateľným sa stáva až pri veľkých objemoch alebo vysokých priepustnostiach.
Kedy zvoliť jednu alebo druhú
Zvoľte SHA-256, keď
- Smerujete k maximálnej kompatibilite a kompaktnému formátu
- Cielite na vstavané systémy, IoT alebo 32-bitové platformy
- Overujete integritu súborov alebo podpisujete certifikáty
- Krátky odtlačok uľahčuje zobrazovanie a ukladanie
Zvoľte SHA-512, keď
- Hašujete veľké objemy na 64-bitových serveroch
- Chcete čo najširšiu možnú bezpečnostnú rezervu
- Používate SHA-512/256 na odolnosť voči predĺženiu dĺžky pri zachovaní 256 bitov
Dôležité: ani jedna z nich nie je vhodná na hašovanie hesiel. Na to použite bcrypt alebo Argon2, ktoré sú navrhnuté tak, aby boli pomalé a solené.
Odporúčanie
Na všeobecné použitie je SHA-256 predvolenou voľbou: univerzálne podporovaný, kompaktný, dostatočne bezpečný. Zvoľte SHA-512, ak hašujete veľké objemy na 64-bitovom hardvéri alebo ak chcete dodatočnú bezpečnostnú rezervu. A na ukladanie hesiel sa obráťte na vyhradenú funkciu ako Argon2id, nikdy na samotnú SHA-2.
Časté otázky
Je SHA-512 bezpečnejšia ako SHA-256?
SHA-512 ponúka vyššiu teoretickú bezpečnostnú rezervu vďaka svojmu dlhšiemu odtlačku, ale SHA-256 je už ďaleko mimo dosahu súčasných útokov. Pre takmer všetky použitia sa obe považujú za bezpečné.
Prečo môže byť SHA-512 rýchlejšia ako SHA-256?
Pretože manipuluje so slovami s 64 bitmi a spracuje väčšie bloky na jedno kolo. Na natívnom 64-bitovom procesore to vyrovná dodatočné náklady a robí ju často rýchlejšou pri veľkých objemoch. Na 32 bitoch je to naopak.
Môžem hašovať heslá pomocou SHA-256 alebo SHA-512?
Nie, bola by to chyba. Tieto funkcie sú rýchle, teda ľahko napadnuteľné hrubou silou. Použite bcrypt alebo Argon2id, ktoré sú zámerne pomalé a obsahujú soľ.
Čo je SHA-512/256?
Je to SHA-512, ktorej odtlačok je skrátený na 256 bitov, s odlišnými inicializačnými hodnotami. Získa sa odtlačok s 256 bitmi, rýchlosť SHA-512 na 64 bitoch a natívna odolnosť voči útoku predĺžením dĺžky.