Generator skrótów SM3

Oblicz skróty SM3 — GB/T 32905-2016, chiński krajowy standard funkcji skrótu kryptograficznego — tekstu lub plików, w całości w przeglądarce. Zwykły SM3 lub HMAC-SM3 z kluczem, wyjście hex lub Base64, z obok ustawionym pasem SHA-256 do porównania. Nic nie jest wysyłane.
AlgorytmTrawienie
SM3–
SHA-256 (pas porównawczy, tylko źródło tekstowe)–
Szczegóły–
Weryfikacja krzyżowa z wiersza poleceń — skrót, który ta strona wypisuje dla pliku, zgadza się bajt po bajcie z openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) i gmssl dgst -sm3 file.bin. Dla HMAC-SM3: openssl dgst -sm3 -hmac <key> z kluczem tekstowym.
Autotest
Uruchamia ponownie silnik strony na oficjalnych wektorach z dodatku A GB/T 32905-2016, wektorach HMAC-SM3 z GB/T 15852.2 (ISO/IEC 9797-2), przyrostowym przebiegu w częściach po 1000 bajtów, obu pulach przykładów, pasie Base64 porównanym z własnym koderem przeglądarki oraz ścieżkach negatywnych (źle sformatowany klucz hex musi zostać odrzucony). Nic nie jest nigdzie wysyłane.
Czym jest SM3?
W jednym zdaniu: SM3 to funkcja skrótu chińskiego krajowego organu normalizacyjnego — skrót 256-bitowy Merkle–Damgårda z tej samej rodziny strukturalnej co SHA-256, ale z własnymi wartościami początkowymi, stałymi rundy, funkcjami boolowskimi i rozszerzeniem wiadomości na 68 słów, opublikowany jako GM/T 0004-2012, a później GB/T 32905-2016.
SM3 a SHA-256 w skrócie
AspektSM3SHA-256
rozmiar skrótu / bloku / słowa256 / 512 / 32 bity256 / 512 / 32 bity
rundy kompresji6464
rozszerzenie wiadomościW[0..67] + wyprowadzone W'[0..63], permutacja P1W[0..63] z rotacjami σ0/σ1
stałe rundydwie stałe T0..15=0x79CC4519, T16..63=0x7A879D8A, rotowane o j64 stałe K[0..63]
funkcje boolowskieprzełączenie FF/GG w rundzie 16Ch/Maj w całości
kolejność bajtówbig-endianbig-endian
Opublikowany2010 (GM/T 0004-2012; GB/T 32905-2016)2001 (FIPS 180-2)
status międzynarodowyzawarte w ISO/IEC 10118-3:2018FIPS 180-4

Ten sam szkielet, inne mięśnie: oba algorytmy dzielą wiadomość na bloki 512-bitowe i wykonują 64 rundy mieszania na ośmiu rejestrach 32-bitowych, ale każda stała, każda wartość rotacji i krok rozszerzenia wiadomości się różnią, więc dają zupełnie niezwiązane skróty dla tego samego wejścia. SM3("abc") to 66c7f0f4...8f4ba8e0, a SHA-256("abc") to ba7816bf...f20015ad — wypróbuj oba przyciskiem Przykład.

Czy „standard narodowy” oznacza bezpieczniejszy?

Nie — i to nie jest jego zadanie. SM3 oferuje bezpieczeństwo porównywalne z SHA-256: skrót 256-bitowy, bez znanych praktycznych ataków kolizyjnych czy preimage. Powodem istnienia SM3 jest niezależność pakietu i zgodność z przepisami: chińskie przepisy dotyczące komercyjnej kryptografii (商用密码, „SM”) wymagają krajowego pakietu w certyfikowanych sektorach — bankowości, administracji, infrastrukturze telekomunikacyjnej — tak aby cały stos (skrót, podpis, szyfr) kontrolował jeden krajowy proces normalizacyjny, a nie zagraniczne. Poza tym kontekstem SHA-256 i SM3 są wymienne pod względem siły; wybierz SM3, gdy druga strona, regulator lub protokół (na przykład TLS 1.3 z zestawami szyfrów SM z RFC 8998) go wymaga.

Miejsce SM3 w pakiecie SM
  • SM3 (ta strona) — funkcja skrótu. Także skrót wewnątrz podpisów SM2 (wartość ZA) oraz KDF szyfrowania SM2.
  • SM4 — 128-bitowy szyfr blokowy (pomyśl „AES w wersji krajowej”), ECB/CBC na stronie SM4 tej rodziny.
  • SM2 — algorytm podpisu i szyfrowania na krzywej eliptycznej sm2p256v1, zbudowany na SM3.
  • SM9 — kryptografia oparta na tożsamości: adres e-mail jest kluczem publicznym.
Typowe błędy
  • Haszowanie haseł przez SM3. SM3 to szybka funkcja skrótu ogólnego przeznaczenia, jak SHA-256 — miliardy prób na sekundę na GPU. Do przechowywania haseł użyj bcrypt, scrypt, Argon2id lub PBKDF2 z Generatora skrótów haseł.
  • Zakładanie, że stara kolejność C1C2C3 ma tu znaczenie. Kolejność szyfrogramu to temat SM2; SM3 nie ma takiej komplikacji. Jego wyjście to zawsze 32 bajty.
  • Mylenie GM/T 0004-2012 z GB/T 32905-2016. Ten sam algorytm, te same wektory testowe — GM/T to publikacja branżowa, GB/T krajowa. ISO/IEC 10118-3:2018 też go zawiera.
  • Ufaj, ale weryfikuj. Samotest tej strony odtwarza własne wektory z dodatku standardu; jeśli nie pokazuje „0 niezaliczonych”, nie ufaj wynikowi.
FAQ

Czy SM3 jest w OpenSSL? Tak — OpenSSL 1.1.1 i nowszy: openssl dgst -sm3 file, HMAC przez -hmac. GmSSL (chiński fork) ma go dłużej. Ta strona nie potrzebuje żadnego z nich: algorytm działa w przeglądarce.

Do czego służy HMAC-SM3? Do uwierzytelniania wiadomości: skrót, który dowodzi też, kto go wysłał, bo tylko posiadacze wspólnego klucza mogą go wytworzyć. Ustandaryzowany w GB/T 15852.2 / ISO/IEC 9797-2. Klucz może mieć dowolną długość; ponad 64 bajty najpierw się haszuje.

Dlaczego pas plików nie pokazuje porównania z SHA-256? Porównanie używa wbudowanego w przeglądarkę jednorazowego skrótu WebCrypto, który wymaga całego wejścia w pamięci — w porządku dla tekstu, nie dla pliku 200 MB przesyłanego w częściach. Sam SM3 jest liczony przyrostowo i nie ma tu takiego limitu.

Czy mogę uzyskać skrót w Base64? Tak — selektor Format wyjścia. Oba pasy każdego wyniku można skopiować lub pobrać jako mały raport tekstowy.