Γεννήτρια κατακερματισμού SM3

Υπολογισμός αποτυπωμάτων SM3 — GB/T 32905-2016, το κινεζικό εθνικό πρότυπο κρυπτογραφικού κατακερματισμού — κειμένου ή αρχείων εξ ολοκλήρου στο πρόγραμμα περιήγησης. Απλό SM3 ή HMAC-SM3 με κλειδί, έξοδος hex ή Base64, με παράλληλη γραμμή SHA-256 για σύγκριση. Τίποτα δεν μεταφορτώνεται.
ΑλγόριθμοςΠέψη
SM3–
SHA-256 (λωρίδα σύγκρισης, μόνο πηγή κειμένου)–
Λεπτομέρειες–
Διασταύρωση από τη γραμμή εντολών — το αποτύπωμα που εκτυπώνει αυτή η σελίδα για ένα αρχείο ταιριάζει με το openssl dgst -sm3 file.bin (OpenSSL 1.1.1+) και gmssl dgst -sm3 file.bin byte προς byte. Για HMAC-SM3: openssl dgst -sm3 -hmac <key> με κλειδί κειμένου.
Αυτοέλεγχος
Επανεκτελεί τη μηχανή της σελίδας έναντι των επίσημων διανυσμάτων του παραρτήματος Α του GB/T 32905-2016, των διανυσμάτων HMAC-SM3 του GB/T 15852.2 (ISO/IEC 9797-2), μιας σταδιακής εκτέλεσης σε τμήματα των 1000 bytes, και των δύο δειγματοληπτικών συνόλων, της λωρίδας Base64 έναντι του δικού του κωδικοποιητή του προγράμματος περιήγησης, και των αρνητικών διαδρομών (λανθασμένο hex κλειδί πρέπει να απορρίπτεται). Τίποτα δεν αποστέλλεται πουθενά.
Τι είναι το SM3;
Σε μία πρόταση: το SM3 είναι ο κρυπτογραφικός κατακερματισμός του κινεζικού εθνικού οργανισμού προτύπων — κατακερματισμός Merkle–Damgård 256 bit στην ίδια δομική οικογένεια με το SHA-256, αλλά με δικές του αρχικές τιμές, σταθερές γύρου, Boolean συναρτήσεις και επέκταση μηνύματος 68 λέξεων, δημοσιευμένος ως GM/T 0004-2012 και αργότερα ως GB/T 32905-2016.
SM3 έναντι SHA-256 με μια ματιά
ΠλευράSM3SHA-256
Μέγεθος αποτυπώματος / μπλοκ / λέξης256 / 512 / 32 bit256 / 512 / 32 bit
Γύροι συμπίεσης6464
Επέκταση μηνύματοςW[0..67] + παράγωγο W'[0..63], μετάθεση P1W[0..63] με περιστροφές σ0/σ1
Σταθερές γύρουδύο σταθερές T0..15=0x79CC4519, T16..63=0x7A879D8A, περιστρεφόμενες κατά j64 σταθερές K[0..63]
Boolean συναρτήσειςΕναλλαγή FF/GG στον γύρο 16Ch/Maj σε όλο
Σειρά bytesbig-endianbig-endian
Δημοσιεύτηκε2010 (GM/T 0004-2012· GB/T 32905-2016)2001 (FIPS 180-2)
Διεθνές καθεστώςπεριλαμβάνεται στο ISO/IEC 10118-3:2018FIPS 180-4

Ο ίδιος σκελετός, διαφορετικοί μύες: και οι δύο αλγόριθμοι τεμαχίζουν το μήνυμα σε μπλοκ των 512 bit και εκτελούν 64 γύρους ανάμειξης πάνω σε οκτώ καταχωρητές των 32 bit, αλλά κάθε σταθερά, κάθε ποσό περιστροφής και το βήμα επέκτασης μηνύματος διαφέρουν, οπότε παράγουν εντελώς άσχετα αποτυπώματα για την ίδια είσοδο. Το SM3("abc") είναι 66c7f0f4...8f4ba8e0 ενώ το SHA-256("abc") είναι ba7816bf...f20015ad — δοκιμή και των δύο με το κουμπί Δείγμα.

Σημαίνει το «εθνικό πρότυπο» ασφαλέστερο;

Όχι — και δεν είναι αυτή η δουλειά του. Το SM3 προσφέρει ασφάλεια συγκρίσιμη με το SHA-256: αποτύπωμα 256 bit, χωρίς γνωστές πρακτικές επιθέσεις σύγκρουσης ή προεικόνας. Ο λόγος ύπαρξης του SM3 είναι η ανεξαρτησία σουίτας και η κανονιστική συμμόρφωση: οι κινεζικοί κανονισμοί εμπορικής κρυπτογραφίας («SM») απαιτούν την εγχώρια σουίτα σε πιστοποιημένους τομείς — τραπεζική, δημόσια διοίκηση, υποδομές τηλεπικοινωνιών — ώστε ολόκληρη η στοίβα (κατακερματισμός, υπογραφή, κρυπτογράφηση) να ελέγχεται από μία εθνική διαδικασία προτύπων και όχι από ξένες. Εκτός αυτού του πλαισίου, το SHA-256 και το SM3 είναι ισοδύναμα σε ισχύ· επιλέγεται το SM3 όταν το ζητά ο αντισυμβαλλόμενος, ο ρυθμιστής ή το πρωτόκολλο (για παράδειγμα TLS 1.3 με τις σουίτες SM του RFC 8998).

Πού βρίσκεται το SM3 μέσα στη σουίτα SM
  • SM3 (αυτή η σελίδα) — ο κατακερματισμός. Είναι επίσης το αποτύπωμα μέσα στις υπογραφές SM2 (η τιμή ZA) και το KDF της κρυπτογράφησης SM2.
  • SM4 — ο κρυπτογράφος ομάδας 128 bit (αντίστοιχο του «AES εθνικό»), ECB/CBC στη σελίδα SM4 της ίδιας οικογένειας.
  • SM2 — ο αλγόριθμος υπογραφής και κρυπτογράφησης ελλειπτικής καμπύλης πάνω στην καμπύλη sm2p256v1, βασισμένος στο SM3.
  • SM9 — κρυπτογραφία βασισμένη σε ταυτότητα: η διεύθυνση email είναι το δημόσιο κλειδί.
Συνηθισμένα λάθη
  • Κατακερματισμός κωδικών πρόσβασης με SM3. Το SM3 είναι γρήγορος κατακερματισμός γενικής χρήσης, όπως το SHA-256 — δισεκατομμύρια εικασίες το δευτερόλεπτο σε GPU. Για αποθήκευση κωδικών χρησιμοποιούνται bcrypt, scrypt, Argon2id ή PBKDF2 από τη Γεννήτρια κατακερματισμού κωδικών.
  • Η παραδοχή ότι η παλαιά σειρά C1C2C3 έχει σημασία εδώ. Η σειρά κρυπτογραφήματος είναι θέμα του SM2· το SM3 δεν έχει τέτοια λεπτομέρεια. Η έξοδός του έχει πάντα 32 bytes.
  • Σύγχυση μεταξύ GM/T 0004-2012 και GB/T 32905-2016. Ο ίδιος αλγόριθμος, τα ίδια διανύσματα δοκιμής — το GM/T είναι η δημοσίευση του κλάδου, το GB/T η εθνική. Το ISO/IEC 10118-3:2018 το περιλαμβάνει επίσης.
  • Εμπιστοσύνη, αλλά επαλήθευση. Το αυτοτεστ αυτής της σελίδας αναπαράγει τα διανύσματα παραρτήματος του ίδιου του προτύπου· αν δεν αναφέρει «0 αποτυχίες», η έξοδος δεν πρέπει να εμπιστεύεται.
Συχνές ερωτήσεις

Υπάρχει το SM3 στο OpenSSL; Ναι — OpenSSL 1.1.1 και νεότερα: openssl dgst -sm3 file, HMAC μέσω -hmac. Το GmSSL (το κινεζικό fork) το έχει εδώ και περισσότερο καιρό. Αυτή η σελίδα δεν χρειάζεται κανένα από τα δύο: ο αλγόριθμος εκτελείται στο πρόγραμμα περιήγησης.

Σε τι χρησιμεύει το HMAC-SM3; Πιστοποίηση μηνύματος: αποτύπωμα που αποδεικνύει επίσης ποιος το έστειλε, επειδή μόνο όσοι έχουν το κοινό κλειδί μπορούν να το παράγουν. Τυποποιείται στα GB/T 15852.2 / ISO/IEC 9797-2. Το κλειδί μπορεί να έχει οποιοδήποτε μήκος· πάνω από 64 bytes κατακερματίζεται πρώτα.

Γιατί η λωρίδα αρχείου δεν δείχνει τη σύγκριση SHA-256; Η σύγκριση χρησιμοποιεί το ενσωματωμένο στο πρόγραμμα περιήγησης WebCrypto digest σε μία κλήση, που χρειάζεται ολόκληρη την είσοδο στη μνήμη — εντάξει για κείμενο, όχι για αρχείο 200 MB που διαβάζεται σε τμήματα. Το ίδιο το SM3 υπολογίζεται σταδιακά και δεν έχει τέτοιο όριο εδώ.

Είναι δυνατή η λήψη του αποτυπώματος ως Base64; Ναι — με τον επιλογέα Μορφή εξόδου. Και οι δύο λωρίδες κάθε αποτελέσματος μπορούν να αντιγραφούν ή να ληφθούν ως μικρή αναφορά κειμένου.