SHA-256 vs SHA-512: kurią maišos funkciją pasirinkti?

SHA-256 ir SHA-512 abi priklauso SHA-2 šeimai, kurią sukūrė NSA ir standartizavo NIST. Jos sukuria fiksuoto dydžio santrauką iš bet kokių duomenų ir šiandien laikomos saugiomis. Skirtumas slypi santraukos dydyje, našume priklausomai nuo architektūros ir keliose saugumo detalėse. Štai kurią rinktis ir kodėl.

SHA-2 šeima

SHA-2 apjungia kelias variacijas (SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256), kurios dalijasi ta pačia struktūra, bet skiriasi žodžių ir santraukos dydžiu. Skaičius nurodo santraukos dydį bitais: SHA-256 sukuria 256 bitus (64 šešioliktainius simbolius), SHA-512 sukuria 512 (128 simbolius).

Šias santraukas galite apskaičiuoti su mūsų maišos generatoriumi arba atpažinti algoritmą pagal santrauką su maišos identifikatoriumi. Nepainiokite su MD5, pasenusiu saugumo požiūriu (žr. mūsų palyginimą MD5 vs SHA-256).

SHA-256

SHA-256 dirba su 32 bitų žodžiais ir sukuria 256 bitų santrauką. Tai labiausiai paplitusi maišos funkcija pasaulyje: TLS sertifikatai, Bitcoin parašai, failų vientisumo tikrinimas, git. Trumpesnė santrauka daro ją patogią saugoti, rodyti ir perduoti.

  • Santrauka: 256 bitai, 64 šešioliktainiai simboliai
  • Žodžiai: 32 bitai, optimalu 32 bitų platformose ir įterptinėse sistemose
  • Plitimas: didžiausias, universalus palaikymas

SHA-512

SHA-512 dirba su 64 bitų žodžiais ir sukuria 512 bitų santrauką. Priešingai intuicijai, šiuolaikiniame 64 bitų procesoriuje ji dažnai yra greitesnė nei SHA-256 dideliems kiekiams, nes apdoroja daugiau duomenų per ratą. Ilgesnė santrauka taip pat suteikia didesnę saugumo atsargą.

  • Santrauka: 512 bitų, 128 šešioliktainiai simboliai
  • Žodžiai: 64 bitai, optimalu 64 bitų architektūrose
  • Natūralus atsparumas: SHA-512 nėra pažeidžiama ilgio pratęsimo atakos, kai naudojamos jos sutrumpintos variacijos (SHA-512/256)

Palyginimo lentelė

Kriterijus SHA-256 SHA-512
Santraukos dydis256 bitai (64 hex)512 bitų (128 hex)
Žodžių dydis32 bitai64 bitai
Greitis 64 bitų CPUGerasDažnai didesnis
Greitis 32 bitų / įterptinėseDidesnisLėtesnis
Saugumo atsargaLabai didelėDar didesnė
Ilgio pratęsimasPažeidžiamaPažeidžiama (išskyrus sutrumpintas variacijas)
PlitimasUniversalusPlatus

Našumas

Našumas priklauso nuo architektūros. 64 bitų serveryje ar nešiojamajame kompiuteryje SHA-512 gali pranokti SHA-256 20-50 % dideliems failams, nes apdoroja didesnius blokus per iteraciją. 32 bitų mikrovaldiklyje ar ribotoje aplinkoje SHA-256 atgauna pranašumą.

Praktikoje, mažoms įvestims (slaptažodžiui, identifikatoriui) skirtumas yra nereikšmingas. Jis tampa pamatuojamas tik dideliems kiekiams ar aukštam pralaidumui.

Kada rinktis vieną ar kitą

Rinktis SHA-256, kai

  • Siekiate maksimalaus suderinamumo ir kompaktiško formato
  • Taikote įterptinėms sistemoms, IoT ar 32 bitų platformoms
  • Tikrinate failų vientisumą ar pasirašote sertifikatus
  • Trumpa santrauka palengvina rodymą ir saugojimą

Rinktis SHA-512, kai

  • Maišote didelius kiekius 64 bitų serveriuose
  • Norite kuo platesnės saugumo atsargos
  • Naudojate SHA-512/256, kad atsispirtumėte ilgio pratęsimui išlaikydami 256 bitus

Svarbu: nei viena iš jų netinka slaptažodžiams maišyti. Tam naudokite bcrypt ar Argon2, sukurtus būti lėtais ir su druska.

Rekomendacija

Bendram naudojimui SHA-256 yra numatytasis pasirinkimas: universaliai palaikomas, kompaktiškas, pakankamai saugus. Rinkitės SHA-512, jei maišote didelius kiekius 64 bitų aparatinėje įrangoje arba jei norite papildomos saugumo atsargos. O slaptažodžiams saugoti kreipkitės į specialią funkciją, tokią kaip Argon2id, niekada ne į SHA-2 vieną.

Dažnai užduodami klausimai

Ar SHA-512 saugesnis nei SHA-256?

SHA-512 siūlo didesnę teorinę saugumo atsargą dėl ilgesnės santraukos, bet SHA-256 jau gerokai nepasiekiamas dabartinėms atakoms. Beveik visiems naudojimo atvejams abi laikomos saugiomis.

Kodėl SHA-512 gali būti greitesnis nei SHA-256?

Nes jis valdo 64 bitų žodžius ir apdoroja didesnius blokus per ratą. Natyviame 64 bitų procesoriuje tai kompensuoja papildomas sąnaudas ir dažnai daro jį greitesnį dideliems kiekiams. 32 bituose yra atvirkščiai.

Ar galiu maišyti slaptažodžius su SHA-256 ar SHA-512?

Ne, tai būtų klaida. Šios funkcijos yra greitos, todėl lengvai atakuojamos brutaliąja jėga. Naudokite bcrypt ar Argon2id, kurie sąmoningai lėti ir integruoja druską.

Kas yra SHA-512/256?

Tai SHA-512, kurio santrauka sutrumpinta iki 256 bitų, su skirtingomis inicializavimo reikšmėmis. Gaunate 256 bitų santrauką, SHA-512 greitį 64 bituose ir natūralų atsparumą ilgio pratęsimo atakai.