SM3-tiivistegeneraattori

Laske SM3-tiivisteet — GB/T 32905-2016, Kiinan kansallinen kryptografinen tiivistestandardi — tekstille tai tiedostoille kokonaan selaimessa. Tavallinen SM3 tai avaimellinen HMAC-SM3, hex- tai Base64-tuloste, sivuttainen SHA-256-kaista vertailua varten. Mitään ei lähetetä.
AlgoritmiHajotus
SM3–
SHA-256 (vertailukaista, vain tekstilähde)–
Tiedot–
Komentorivin ristitarkistus — tämän sivun tulostama tiiviste tiedostolle vastaa komentoa openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) ja gmssl dgst -sm3 file.bin tavu tavulta. HMAC-SM3:lle: openssl dgst -sm3 -hmac <key> tekstiavaimella.
Itsetesti
Ajaa sivumoottorin uudelleen virallisia GB/T 32905-2016 liitteen A vektoreita vastaan, GB/T 15852.2 (ISO/IEC 9797-2) HMAC-SM3 -vektoreita vastaan, 1000 tavun paloina tehdyn inkrementaalisen ajon, molemmat näytealtaat, Base64-kaistan selaimen oman koodaimen vastaan sekä negatiiviset polut (virheellinen hex-avain on hylättävä). Mitään ei lähetetä minnekään.
Mikä SM3 on?
Yhdellä lauseella: SM3 on Kiinan kansallisen standardointielimen kryptografinen tiiviste — 256-bittinen Merkle–Damgård-tiiviste samaa rakennetta kuin SHA-256, mutta omilla alkuarvoillaan, kierrosvakioillaan, Boolen funktioillaan ja 68 sanan viestilaajennuksella; julkaistu nimellä GM/T 0004-2012 ja myöhemmin GB/T 32905-2016.
SM3 vs SHA-256 yhdellä silmäyksellä
NäkökulmaSM3SHA-256
Tiiviste / lohko / sanakoko256 / 512 / 32 bittiä256 / 512 / 32 bittiä
Puristuskierrokset6464
Viestin laajennusW[0..67] + johdettu W'[0..63], P1-permutaatioW[0..63] σ0/σ1-kierroilla
Kierrosvakiotkaksi vakiota T0..15=0x79CC4519, T16..63=0x7A879D8A, kierrettynä j:llä64 vakiota K[0..63]
Boolen funktiotFF/GG-vaihto kierroksella 16Ch/Maj kautta linjan
Tavujärjestysbig-endianbig-endian
Julkaistu2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
Kansainvälinen asemasisältyy ISO/IEC 10118-3:2018:aanFIPS 180-4

Sama runko, eri lihaksisto: molemmat algoritmit jakavat viestin 512-bittisiin lohkoihin ja ajavat 64 kierrosta sekoittamista kahdeksan 32-bittisen rekisterin yli, mutta jokainen vakio, jokainen kiertomäärä ja viestin laajennusvaihe eroavat, joten ne tuottavat täysin toisistaan riippumattomat tiivisteet samalle syötteelle. SM3("abc") on 66c7f0f4...8f4ba8e0, kun taas SHA-256("abc") on ba7816bf...f20015ad — kokeile molempia Näyte-painikkeella.

Tarkoittaako "kansallinen standardi" turvallisempaa?

Ei — eikä se ole sen tehtävä. SM3 tarjoaa turvan, joka on verrattavissa SHA-256:een: 256-bittinen tiiviste, ei tunnettuja käytännön törmäys- tai esikuva-hyökkäyksiä. SM3:n olemassaolon syy on sarjariippumattomuus ja sääntelyn vaatimustenmukaisuus: kiinalaiset kaupallisen kryptografian säännöt (商用密码, "SM") vaativat kotimaisen sarjan sertifioiduilla aloilla — pankkitoiminta, hallinto, teleinfrastruktuuri — jotta koko pino (tiiviste, allekirjoitus, salain) on yhden kansallisen standardointiprosessin hallinnassa eikä ulkomaisten. Sen ulkopuolella SHA-256 ja SM3 ovat vahvuudeltaan vaihdettavissa; valitse SM3, kun vastapuoli, sääntelijä tai protokolla (esimerkiksi TLS 1.3 RFC 8998 SM-salaussarjoilla) sitä vaatii.

Missä SM3 sijaitsee SM-sarjassa
  • SM3 (tämä sivu) — tiiviste. Myös SM2-allekirjoitusten sisällä oleva tiiviste (ZA-arvo) ja SM2-salauksen KDF.
  • SM4 — 128-bittinen lohkosalain (ajattele "AES kansallisena"), ECB/CBC tämän sarjan SM4-sivulla.
  • SM2 — elliptisen käyrän allekirjoitus- ja salausalgoritmi sm2p256v1-käyrällä, rakennettu SM3:n varaan.
  • SM9 — identiteettipohjainen kryptografia: sähköpostiosoite on julkinen avain.
Yleisiä virheitä
  • Salasanojen tiivistäminen SM3:lla. SM3 on nopea yleiskäyttöinen tiiviste kuten SHA-256 — miljardeja arvauksia sekunnissa GPU:lla. Salasanojen tallentamiseen käytä bcrypt-, scrypt-, Argon2id- tai PBKDF2-algoritmia Salasanatiivistegeneraattori-sivulta.
  • Oletus, että vanha C1C2C3-järjestys on tässä merkityksellinen. Salatekstin järjestys on SM2:n aihe; SM3:ssa ei ole sellaista. Sen tuloste on aina 32 tavua.
  • GM/T 0004-2012 ja GB/T 32905-2016 sekoittaminen. Sama algoritmi, samat testivektorit — GM/T on alan standardijulkaisu, GB/T kansallinen. ISO/IEC 10118-3:2018 sisältää sen myös.
  • Luota, mutta tarkista. Tämän sivun itsetesti toistaa standardin omat liitevektorit; jos se ei sano "0 epäonnistui", tulosteeseen ei pidä luottaa.
UKK

Onko SM3 saatavilla OpenSSL:ssä? Kyllä — OpenSSL 1.1.1 ja uudemmat: openssl dgst -sm3 file, HMAC -hmac-lipulla. GmSSL (kiinalainen haarautuma) on tukenut sitä pidempään. Tämä sivu ei tarvitse kumpaakaan: algoritmi toimii selaimessa.

Mihin HMAC-SM3 on tarkoitettu? Viestin todennukseen: tiiviste, joka todistaa myös lähettäjän, koska vain jaetun avaimen haltijat voivat tuottaa sen. Standardoitu nimellä GB/T 15852.2 / ISO/IEC 9797-2. Avain voi olla minkä pituinen tahansa; yli 64 tavun avain tiivistetään ensin.

Miksi tiedostokaista ei näytä SHA-256-vertailua? Vertailu käyttää selaimen sisäänrakennettua WebCrypto-yksittäistiivistettä, joka vaatii koko syötteen muistiin — sopii tekstille, mutta ei 200 Mt:n tiedostolle, joka suoratoistetaan paloina. SM3 itse lasketaan inkrementaalisesti eikä sillä ole tässä sellaista rajaa.

Voiko tiivisteen saada Base64-muodossa? Kyllä — tulosteen muoto -valitsimella. Kummankin tuloksen kaista voi kopioida tai ladata pienenä tekstiraporttina.