Generátor hashu SM3

Výpočet odtlačkov SM3 — GB/T 32905-2016, čínsky národný kryptografický štandard hashovania — pre text alebo súbory úplne v prehliadači. Čistý SM3 alebo kľúčovaný HMAC-SM3, výstup v hex alebo Base64, s vedľajším pruhom SHA-256 na porovnanie. Nič sa nenahráva.
AlgoritmusŠtiepenie
SM3–
SHA-256 (porovnávacia vetva, len zdroj text)–
Podrobnosti–
Kontrola z príkazového riadku — odtlačok, ktorý táto stránka vypíše pre súbor, sa bajt po bajte zhoduje s openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) a gmssl dgst -sm3 file.bin. Pre HMAC-SM3: openssl dgst -sm3 -hmac <key> s textovým kľúčom.
Autotest
Znovu spustí engine stránky nad oficiálnymi vektormi prílohy A GB/T 32905-2016, vektormi GB/T 15852.2 (ISO/IEC 9797-2) pre HMAC-SM3, inkrementálnym behom po častiach po 1000 bajtoch, oboma vzorkovými súbormi, vetvou Base64 voči vlastnému kodéru prehliadača a negatívnymi cestami (chybný hex kľúč musí byť odmietnutý). Nič sa nikam neodosiela.
Čo je SM3?
Jednou vetou: SM3 je kryptografický hash čínskeho národného normalizačného orgánu — 256-bitový hash Merkle–Damgård v rovnakej štruktúrnej rodine ako SHA-256, ale s vlastnými počiatočnými hodnotami, konštantami kôl, booleovskými funkciami a rozšírením správy na 68 slov; publikovaný ako GM/T 0004-2012 a neskôr GB/T 32905-2016.
SM3 vs SHA-256 na prvý pohľad
AspektSM3SHA-256
veľkosť odtlačku / bloku / slova256 / 512 / 32 bitov256 / 512 / 32 bitov
kolá kompresie6464
rozšírenie správyW[0..67] + odvodené W'[0..63], permutácia P1W[0..63] s rotáciami σ0/σ1
konštanty kôldve konštanty T0..15=0x79CC4519, T16..63=0x7A879D8A, rotované o j64 konštánt K[0..63]
booleovské funkcieprepínanie FF/GG v 16. koleCh/Maj všade
poradie bajtovbig-endianbig-endian
Publikované2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
medzinárodný stavzahrnutý v ISO/IEC 10118-3:2018FIPS 180-4

Rovnaká kostra, iné svaly: oba algoritmy rozdeľujú správu na 512-bitové bloky a robia 64 kôl miešania nad ôsmimi 32-bitovými registrami, ale každá konštanta, každá veľkosť rotácie a krok rozširovania správy sa líšia, takže pre ten istý vstup dávajú úplne nesúvisiace odtlačky. SM3("abc") je 66c7f0f4...8f4ba8e0, kým SHA-256("abc") je ba7816bf...f20015ad — oba sa dajú vyskúšať tlačidlom Vzorka.

Znamená „národný štandard“ bezpečnejšie?

Nie — a nie je to jeho úloha. SM3 ponúka bezpečnosť porovnateľnú s SHA-256: odtlačok s 256 bitmi, nie sú známe praktické útoky na kolízie ani na preimage. Dôvod existencie SM3 je nezávislosť sady a regulačný súlad: čínske regulácie komerčnej kryptografie („SM“) vyžadujú domácu sadu v certifikovaných odvetviach — bankovníctve, štátnej správe, telekomunikačnej infraštruktúre — aby celý zásobník (hash, podpis, šifra) riadil jeden národný normalizačný proces, a nie zahraničné. Mimo tohto kontextu sú SHA-256 a SM3 silou zameniteľné; SM3 sa zvolí vtedy, keď ho vyžaduje protistrana, regulátor alebo protokol (napríklad TLS 1.3 so šifrovacími sadami SM podľa RFC 8998).

Kde je SM3 v rámci sady SM
  • SM3 (táto stránka) — hash. Tiež odtlačok v podpisoch SM2 (hodnota ZA) a KDF šifrovania SM2.
  • SM4 — 128-bitová bloková šifra (predstaviť si „AES národný“), ECB/CBC na stránke SM4 v tejto rodine.
  • SM2 — algoritmus podpisu a šifrovania s eliptickými krivkami nad krivkou sm2p256v1, postavený na SM3.
  • SM9 — kryptografia založená na identite: e-mailová adresa je verejný kľúč.
Časté chyby
  • Hashovanie hesiel cez SM3. SM3 je rýchly univerzálny hash ako SHA-256 — na GPU miliardy pokusov za sekundu. Na ukladanie hesiel sa použijú bcrypt, scrypt, Argon2id alebo PBKDF2 z Generátora hashov hesiel.
  • Predpoklad, že na staré poradie C1C2C3 tu záleží. Poradie šifrovaného textu je téma SM2; SM3 takúto zložitosť nemá. Jeho výstup má vždy 32 bajtov.
  • Zamieňanie GM/T 0004-2012 a GB/T 32905-2016. Rovnaký algoritmus, rovnaké testovacie vektory — GM/T je priemyselná publikácia, GB/T národná. ISO/IEC 10118-3:2018 ju tiež obsahuje.
  • Dôverovať, no overovať. Samotest na tejto stránke zopakuje vektory z príloh štandardu; ak nehlási „0 zlyhaní“, výstupu sa nedôveruje.
FAQ

Je SM3 dostupný v OpenSSL? Áno — OpenSSL 1.1.1 a novšie: openssl dgst -sm3 file, HMAC cez -hmac. GmSSL (čínska vetva) ho má dlhšie. Táto stránka nepotrebuje ani jedno: algoritmus beží v prehliadači.

Na čo slúži HMAC-SM3? Autentifikácia správ: odtlačok, ktorý zároveň dokazuje, kto ho odoslal, lebo ho dokáže vytvoriť len držiteľ zdieľaného kľúča. Štandardizovaný v GB/T 15852.2 / ISO/IEC 9797-2. Kľúč môže mať ľubovoľnú dĺžku; nad 64 bajtov sa najprv zahashuje.

Prečo vetva súboru nezobrazuje porovnanie so SHA-256? Porovnanie používa vstavaný jednorazový odtlačok WebCrypto prehliadača, ktorý potrebuje celý vstup v pamäti — v poriadku pre text, nie pre súbor 200 MB streamovaný po častiach. Samotný SM3 sa počíta priebežne a tu nemá takéto obmedzenie.

Dá sa odtlačok získať ako Base64? Áno — výber Formát výstupu. Obe vetvy každého výsledku sa dajú kopírovať alebo stiahnuť ako malá textová správa.