SHA-256 vs SHA-512: katero zgoščevalno funkcijo izbrati?
SHA-256 in SHA-512 obe spadata v družino SHA-2, ki jo je zasnovala NSA in standardiziral NIST. Iz katerih koli podatkov ustvarita izvleček fiksne velikosti in danes veljata za varni. Razlika je v velikosti izvlečka, zmogljivosti glede na arhitekturo in nekaj varnostnih podrobnostih. Tukaj je, katero izbrati in zakaj.
Družina SHA-2
SHA-2 združuje več različic (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256), ki delijo isto strukturo, a se razlikujejo po velikosti besed in izvlečka. Številka označuje velikost izvlečka v bitih: SHA-256 ustvari 256 bitov (64 šestnajstiških znakov), SHA-512 pa 512 (128 znakov).
Te izvlečke lahko izračunate z našim generatorjem zgoščevalnih vrednosti ali prepoznate algoritem iz izvlečka z identifikatorjem zgoščevalnih vrednosti. Ne zamenjujte z MD5, ki je za varnost zastarel (glejte našo primerjavo MD5 vs SHA-256).
SHA-256
SHA-256 deluje na 32-bitnih besedah in ustvari 256-bitni izvleček. To je najbolj razširjena zgoščevalna funkcija na svetu: certifikati TLS, podpisi Bitcoina, preverjanje celovitosti datotek, git. Njen krajši izvleček je priročen za shranjevanje, prikaz in prenos.
- Izvleček: 256 bitov, 64 šestnajstiških znakov
- Besede: 32-bitne, optimalne na 32-bitnih platformah in vgrajenih sistemih
- Razširjenost: največja, univerzalna podpora
SHA-512
SHA-512 deluje na 64-bitnih besedah in ustvari 512-bitni izvleček. Protiintuitivno je na sodobnem 64-bitnem procesorju za velike količine pogosto hitrejša od SHA-256, ker obdela več podatkov na krog. Njen daljši izvleček ponuja tudi večjo varnostno rezervo.
- Izvleček: 512 bitov, 128 šestnajstiških znakov
- Besede: 64-bitne, optimalne na 64-bitnih arhitekturah
- Naravna odpornost: SHA-512 ni ranljiva za napad s podaljšanjem dolžine pri uporabi okrnjenih različic (SHA-512/256)
Primerjalna tabela
| Merilo | SHA-256 | SHA-512 |
|---|---|---|
| Velikost izvlečka | 256 bitov (64 hex) | 512 bitov (128 hex) |
| Velikost besed | 32 bitov | 64 bitov |
| Hitrost na 64-bit CPE | Dobra | Pogosto boljša |
| Hitrost na 32-bit / vgrajenih | Boljša | Počasnejša |
| Varnostna rezerva | Zelo visoka | Še višja |
| Podaljšanje dolžine | Ranljiva | Ranljiva (razen okrnjenih različic) |
| Razširjenost | Univerzalna | Široka |
Zmogljivost
Zmogljivost je odvisna od arhitekture. Na 64-bitnem strežniku ali prenosniku lahko SHA-512 prekosi SHA-256 za 20 do 50 % pri velikih datotekah, ker na iteracijo obdela večje bloke. Na 32-bitnem mikrokrmilniku ali v omejenem okolju prevzame prednost SHA-256.
V praksi je za majhne vnose (geslo, identifikator) razlika zanemarljiva. Merljiva postane šele pri velikih količinah ali visokih pretokih.
Kdaj izbrati eno ali drugo
Izberite SHA-256, kadar
- Ciljate na največjo združljivost in kompakten format
- Ciljate na vgrajene sisteme, IoT ali 32-bitne platforme
- Preverjate celovitost datotek ali podpisujete certifikate
- Krajši izvleček olajša prikaz in shranjevanje
Izberite SHA-512, kadar
- Zgoščujete velike količine na 64-bitnih strežnikih
- Želite čim večjo varnostno rezervo
- Uporabljate SHA-512/256 za odpornost na podaljšanje dolžine ob ohranitvi 256 bitov
Pomembno: nobena od obeh ni primerna za zgoščevanje gesel. Za to uporabite bcrypt ali Argon2, zasnovana, da sta počasna in soljena.
Priporočilo
Za splošno uporabo je SHA-256 privzeta izbira: univerzalno podprta, kompaktna, povsem varna. Odločite se za SHA-512, če zgoščujete velike količine na 64-bitni strojni opremi ali želite dodatno varnostno rezervo. Za shranjevanje gesel pa se obrnite na namensko funkcijo, kot je Argon2id, nikoli zgolj na SHA-2.
Pogosta vprašanja
Ali je SHA-512 varnejši od SHA-256?
SHA-512 ponuja višjo teoretično varnostno rezervo zaradi daljšega izvlečka, vendar je SHA-256 že zdaj daleč zunaj dosega trenutnih napadov. Za skoraj vse primere uporabe veljata obe za varni.
Zakaj je lahko SHA-512 hitrejši od SHA-256?
Ker upravlja 64-bitne besede in na krog obdela večje bloke. Na nativnem 64-bitnem procesorju to izravna dodatni strošek in ga pogosto naredi hitrejšega pri velikih količinah. Na 32-bitnem sistemu je obratno.
Ali lahko zgoščujem gesla s SHA-256 ali SHA-512?
Ne, to bi bila napaka. Ti funkciji sta hitri, zato ju je lahko napasti z grobo silo. Uporabite bcrypt ali Argon2id, ki sta namenoma počasna in vključujeta sol.
Kaj je SHA-512/256?
To je SHA-512, katerega izvleček je okrnjen na 256 bitov, z drugačnimi začetnimi vrednostmi. Dobimo 256-bitni izvleček, hitrost SHA-512 na 64 bitih in naravno odpornost na napad s podaljšanjem dolžine.