SM3 kivonatgenerátor

SM3-kivonatok számítása — GB/T 32905-2016, a kínai nemzeti kriptográfiai kivonatolási szabvány — szövegekre vagy fájlokra teljesen a böngészőben. Sima SM3 vagy kulcsolt HMAC-SM3, hex vagy Base64 kimenet, mellette SHA-256 sávval az összehasonlításhoz. Semmi nincs feltöltve.
AlgoritmusEmésztés
SM3–
SHA-256 (összehasonlító sáv, csak szövegforrás)–
Részletek–
Parancssori ellenőrzés — az oldal által egy fájlhoz kiírt kivonat bájtról bájtra egyezik az openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) és a gmssl dgst -sm3 file.bin eredményével. HMAC-SM3-hoz: openssl dgst -sm3 -hmac <key> szöveges kulccsal.
Önteszt
Újrafuttatja az oldal motorját a hivatalos GB/T 32905-2016 A. függelék vektorai ellen, a GB/T 15852,2 (ISO/IEC 9797-2) HMAC-SM3 vektorait, egy darabolt 1000 bájtos inkrementális futást, mindkét mintakészletet, a Base64 sávot a böngésző saját kódolójához mérve, valamint a negatív eseteket (a hibás hex kulcsot el kell utasítani). Semmi nincs elküldve sehova.
Mi az SM3?
Egy mondatban: az SM3 a kínai nemzeti szabványügyi testület kriptográfiai kivonata — 256 bites Merkle–Damgård kivonat, amely szerkezetileg a SHA-256-tal azonos családba tartozik, de eltérő kezdőértékekkel, körkonstansokkal, logikai függvényekkel és 68 szavas üzenetkiterjesztéssel, GM/T 0004-2012 és később GB/T 32905-2016 néven publikálva.
SM3 vs SHA-256 egy pillantásra
SzempontSM3SHA-256
kivonat / blokk / szó méret256 / 512 / 32 bit256 / 512 / 32 bit
tömörítési körök6464
üzenetkiterjesztésW[0..67] + származtatott W'[0..63], P1 permutációW[0..63] σ0/σ1 forgatásokkal
körkonstansokkét konstans T0..15=0x79CC4519, T16..63=0x7A879D8A, j szerint forgatva64 konstans K[0..63]
logikai függvényekFF/GG váltás a 16. körbenCh/Maj mindenütt
bájtsorrendnagy-endiannagy-endian
Közzétéve2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
nemzetközi állapotszerepel az ISO/IEC 10118-3:2018-banFIPS 180-4

Azonos váz, más izmok: mindkét algoritmus 512 bites blokkokra bontja az üzenetet, és nyolc 32 bites regiszteren 64 környi keverést futtat, de minden konstans, minden forgatási mennyiség és az üzenetkiterjesztési lépés különbözik, így ugyanarra a bemenetre teljesen eltérő kivonatot adnak. Az SM3("abc") értéke 66c7f0f4...8f4ba8e0, míg a SHA-256("abc") értéke ba7816bf...f20015ad — mindkettő a Minta gombbal kipróbálható.

Jelent-e a „nemzeti szabvány” biztonságosabbat?

Nem — és nem is ez a feladata. Az SM3 a SHA-256-hoz hasonló biztonságot nyújt: 256 bites kivonat, ismert gyakorlati ütközési vagy előkép-támadás nincs. Az SM3 azért létezik, mert csomag-függetlenséget és szabályozási megfelelést biztosít: a kínai kereskedelmi kriptográfiai előírások (商用密码, „SM”) a hazai csomagot írják elő a tanúsított szektorokban — bank, kormányzat, távközlési infrastruktúra —, így az egész verem (kivonat, aláírás, rejtjelező) egy nemzeti szabványalkotási folyamat hatáskörébe tartozik, nem külföldiébe. Ezen a kontextuson kívül az SM3 és a SHA-256 erőben felcserélhető; az SM3-at akkor válasszuk, ha a partner, a szabályozó vagy a protokoll (például TLS 1.3 az RFC 8998 SM-csomagokkal) ezt kéri.

Hol helyezkedik el az SM3 az SM-csomagban
  • SM3 (ez az oldal) — a kivonat. Ez az SM2-aláírásokban is a kivonat (a ZA érték), és az SM2-titkosítás KDF-je.
  • SM4 — a 128 bites blokk-rejtjelező (az „AES nemzetivé tett” változatára gondolható), ECB/CBC az e család SM4-oldalán.
  • SM2 — az sm2p256v1 görbe feletti elliptikus görbés aláírási és titkosítási algoritmus, SM3-ra építve.
  • SM9 — identitásalapú kriptográfia: az e-mail-címe a nyilvános kulcsa.
Gyakori hibák
  • Jelszavak hashelése SM3-mal. Az SM3 gyors általános célú kivonat, mint a SHA-256 — GPU-n másodpercenként milliárdnyi találgatás. Jelszótároláshoz a bcrypt, scrypt, Argon2id vagy PBKDF2 való, amelyek a Jelszókivonat-generátorban érhetők el.
  • Feltételezés, hogy a régi C1C2C3 sorrend számít itt. A titkosszöveg-sorrend SM2-téma; az SM3-nak nincs ilyen csavarja. Kimenete mindig 32 bájt.
  • A GM/T 0004-2012 és a GB/T 32905-2016 összekeverése. Ugyanaz az algoritmus, ugyanazok a tesztvektorok — a GM/T az iparági szabványkiadvány, a GB/T a nemzeti. Az ISO/IEC 10118-3:2018 is tartalmazza.
  • Bizalom, de ellenőrzés. Az oldal önellenőrzése a szabvány függelékvektorait futtatja le; ha nem azt írja, hogy „0 sikertelen”, a kimenetben nem szabad megbízni.
GYIK

Elérhető az SM3 az OpenSSL-ben? Igen — az OpenSSL 1.1.1-től: openssl dgst -sm3 file, a HMAC a -hmac kapcsolóval. A GmSSL (a kínai elágazás) régebb óta tartalmazza. Ehhez az oldalhoz egyik sem kell: az algoritmus a böngészőben fut.

Mire való a HMAC-SM3? Üzenethitelesítésre: olyan kivonat, amely azt is igazolja, ki küldte, mert csak a megosztott kulcs birtokosai állíthatják elő. A GB/T 15852,2 / ISO/IEC 9797-2 szabványosítja. A kulcs bármilyen hosszú lehet; 64 bájt felett előbb kivonatolják.

Miért nem mutat a fájlsáv SHA-256 összehasonlítást? Az összehasonlítás a böngésző beépített WebCrypto egylépéses kivonatát használja, amelyhez a teljes bemenetnek a memóriában kell lennie — szövegnél rendben van, egy darabokban streamelt 200 MB-os fájlnál nem. Az SM3 inkrementálisan számolódik, és itt nincs ilyen korlátja.

Kérhető a kivonat Base64-ben? Igen — a kimeneti formátum választóval. Minden eredmény mindkét sávja másolható vagy letölthető kis szöveges jelentésként.