Κρυπτογραφία βασισμένη σε ταυτότητα SM9 (IBC)

Το SM9 είναι το μέλος της κινεζικής σουίτας SM που βασίζεται σε ταυτότητα: οποιαδήποτε συμβολοσειρά — διεύθυνση email, αριθμός τηλεφώνου, σειριακός αριθμός συσκευής — λειτουργεί απευθείας ως δημόσιο κλειδί, και ένα Κέντρο Δημιουργίας Κλειδιών εκδίδει τα αντίστοιχα ιδιωτικά κλειδιά. Αυτή είναι σελίδα μόνο ανάγνωσης: πώς λειτουργούν βήμα προς βήμα τα IBE και IBS, πώς συγκρίνεται η κρυπτογραφία βασισμένη σε ταυτότητα με τα πιστοποιητικά PKI, και οι επίσημες παράμετροι καμπύλης.
Προγραμματισμένος υπολογιστής. Ένας υπολογιστής SM9 στο πρόγραμμα περιήγησης είναι στον οδικό χάρτη της οικογένειας κρυπτογραφίας — ο μηχανισμός ζευγών (πύργος επεκτάσεων πεδίου Fp12, βρόχος Miller, τελική εκθετοποίηση) είναι πυρήνας από μόνος του. Στο μεταξύ οι αδελφές σελίδες υπολογίζουν πλήρως στο πρόγραμμα περιήγησης τα SM2, SM3 και SM4.
Τι είναι το SM9;
Σε μία πρόταση: το SM9 είναι το κινεζικό εθνικό πρότυπο για την κρυπτογραφία βασισμένη σε ταυτότητα (GB/T 38635.1/.2-2020, διάδοχος της σειράς GM/T 0044-2016): το δημόσιο κλειδί είναι μια συμβολοσειρά ταυτότητας όπως η bob@example.com, το αντίστοιχο ιδιωτικό κλειδί εκδίδεται από ένα αξιόπιστο Κέντρο Δημιουργίας Κλειδιών (KGC), και τα μαθηματικά που το κάνουν να λειτουργεί είναι ένα διγραμμικό ζεύγος σε καμπύλη BN 256 bit.

Η συμβατική κρυπτογραφία δημοσίου κλειδιού (RSA, SM2, ECC) απαντά στο ερώτημα «είναι αυτό πραγματικά το κλειδί του Bob;» με πιστοποιητικά: μια ιεραρχία CA εγγυάται ότι ένα συγκεκριμένο κλειδί τυχαίας όψης ανήκει στον Bob. Η κρυπτογραφία βασισμένη σε ταυτότητα αντιστρέφει αυτή τη λογική: το ίδιο το όνομα είναι το υλικό του κλειδιού. Όποιος γνωρίζει τη διεύθυνση email του Bob μπορεί να κρυπτογραφήσει προς αυτόν ή να επαληθεύσει τις υπογραφές του χωρίς να ανακτήσει τίποτα — χωρίς κατάλογο πιστοποιητικών, χωρίς επικύρωση αλυσίδας εμπιστοσύνης. Το τίμημα είναι ένας έμπιστος τρίτος που μπορεί να παράγει κάθε ιδιωτικό κλειδί, και πολύ βαρύτερα μαθηματικά. Το SM9 είναι η τυποποιημένη κινεζική υλοποίηση αυτής της ανταλλαγής.

Οι πρωταγωνιστές: ποιος κατέχει τι
ΡόλοςΤι είναι
Ταυτότητα (ID)Οποιαδήποτε ακολουθία bytes, π.χ. bob@example.com, που χρησιμοποιείται απευθείας ως δημόσιο κλειδί. Πρέπει να είναι κανονική: ακριβής byte προς byte, χωρίς δύο γραφές του ίδιου προσώπου.
KGCΚέντρο Δημιουργίας Κλειδιών: κατέχει το κύριο ιδιωτικό κλειδί, ελέγχει σε ποιον ανήκει μια ταυτότητα και εκδίδει το αντίστοιχο ιδιωτικό κλειδί χρήστη.
Ζεύγη κύριων κλειδιώνΔύο ανεξάρτητα ζεύγη: υπογραφής (μυστικό ks, δημόσιο Ppub-s = [ks]P2) και κρυπτογράφησης (μυστικό ke, δημόσιο Ppub-e = [ke]P1). Σημειώστε την σκόπιμη ασυμμετρία: το ένα κύριο δημόσιο ζει στο G2, το άλλο στο G1.
Ιδιωτικό κλειδί χρήστηΈνα σημείο της καμπύλης, παραγόμενο από την ταυτότητα από το KGC. Το κλειδί υπογραφής dsA ζει στο G1· το κλειδί αποκρυπτογράφησης deB ζει στο G2.
hidΈνα αναγνωριστικό συνάρτησης ενός byte που αναμιγνύεται σε κάθε παραγωγή κλειδιού, ώστε μία ταυτότητα να δίνει κρυπτογραφικά ανεξάρτητα κλειδιά για υπογραφή, κρυπτογράφηση και ανταλλαγή κλειδιών.
H1, H2, KDFΒοηθητικές συναρτήσεις βασισμένες σε SM3 (GB/T 32905): αντιστοιχίσεις κατακερματισμού σε ακέραιο και η συνάρτηση παραγωγής κλειδιών.
Ζεύγος eΤο διγραμμικό ζεύγος R-ate e: G1 × G2 → GT πάνω στην καμπύλη BN 256 bit που ορίζεται παρακάτω. Η αλγεβρική μηχανή ολόκληρου του σχήματος.
Πώς λειτουργεί η κρυπτογράφηση βασισμένη σε ταυτότητα SM9 (IBE)

Η Alice θέλει να στείλει ένα μυστικό στο bob@example.com — ίσως πριν ο Bob εγγραφεί ποτέ στο KGC:

1. Η Alice παράγει μόνη της το δημόσιο κλειδί του Bob: QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Χωρίς αναζήτηση καταλόγου, χωρίς λήψη πιστοποιητικού — η συμβολοσειρά ταυτότητας και το δημόσιο κύριο κλειδί είναι ό,τι χρειάζεται.
2. Εφήμερο: τυχαίο r· υπολογισμός του σημείου C1 = [r]QB.
3. Ζεύγος: g = e(Ppub-e, P2), και έπειτα w = gr.
4. Κλειδιά: K = KDF(C1 ‖ w ‖ IDB, klen) (βασισμένο στο SM3), διαχωρισμένο σε K1 (κλειδί περιτυλίγματος) και K2 (κλειδί MAC).
5. Μάσκα: C2 = το μήνυμα XOR με (ή κρυπτογραφημένο με) K1· C3 = MAC(K2, C2). Το κρυπτογράφημα συνδυάζει τα C1, C3 και C2.
6. Ο Bob, όποτε εγγράφεται: το KGC επαληθεύει ότι πράγματι πρόκειται για τον bob@example.com και εκδίδει deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Στη συνέχεια υπολογίζεται το w′ = e(C1, deB), ανακατασκευάζεται το ίδιο K, ελέγχεται το MAC και αποκαλύπτεται το μήνυμα.

Γιατί λειτουργεί: λόγω διγραμμικότητας, e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — ακριβώς η τιμή που ενσωμάτωσε η Alice στο KDF. Το κομψό σημείο είναι το βήμα 6: η κρυπτογράφηση δεν χρειάζεται προηγούμενη εγγραφή. Η Alice μπορεί να σφραγίσει ένα μήνυμα σήμερα· ο Bob μπορεί να το ανοίξει μόνο αφού αποδείξει την ταυτότητά του στο KGC. Η αναβαλλόμενη δημιουργία κλειδιού είναι το χαρακτηριστικό γνώρισμα του IBE.

Πώς λειτουργούν οι υπογραφές βασισμένες σε ταυτότητα SM9 (IBS)

Η Alice υπογράφει ένα μήνυμα M με το κλειδί υπογραφής της dsA:

1. g = e(P1, Ppub-s)· τυχαίο r· w = gr.
2. h = H2(M ‖ w, N)· l = (r − h) mod N (επανάληψη με νέο r αν l = 0).
3. S = [l]dsA. Η υπογραφή είναι το ζεύγος (h, S).

Οποιοσδήποτε γνωρίζει την ταυτότητα της Alice την επαληθεύει χωρίς κανένα πιστοποιητικό:

4. P = [H1(IDA ‖ hid, N)]P2 + Ppub-s· u = e(S, P)· w′ = u · gh.
5. Η υπογραφή είναι έγκυρη ακριβώς όταν H2(M ‖ w′, N) = h.

Και πάλι η διγραμμικότητα κλείνει τον κύκλο: u = e(P1,P2)l·ks και gh = e(P1,P2)ks·h, οπότε w′ = e(P1,P2)ks·(l+h) = e(P1,P2)ks·r = w.

Βασισμένη σε ταυτότητα έναντι βασισμένης σε πιστοποιητικό (IBE έναντι PKI)

Αυτή είναι η απόφαση που έχει πραγματικά σημασία όταν επιλέγεται το SM9. Και οι δύο κόσμοι παρέχουν κρυπτογράφηση δημοσίου κλειδιού και υπογραφές· διαφέρουν ως προς πού βρίσκεται η εμπιστοσύνη:

ΠλευράPKI / πιστοποιητικά (κόσμος SM2, RSA)Βασισμένο σε ταυτότητα (SM9)
Δημόσιο κλειδί του bob@…Ένα blob 65+ bytes μέσα σε πιστοποιητικό, ανακτημένο από κατάλογο ή από τον ίδιο τον παραλήπτηΗ ίδια η συμβολοσειρά bob@example.com· ο επαληθευτής υπολογίζει το κλειδί από αυτήν
Ρίζα εμπιστοσύνηςΙεραρχία CA· κάθε αλυσίδα πρέπει να επικυρώνεται έως μια ρίζαΈνα δημόσιο κύριο κλειδί KGC για ολόκληρο τον τομέα
Κρυπτογράφηση πριν ο παραλήπτης έχει κλειδί;Όχι — χρειάζεται πρώτα το έγκυρο πιστοποιητικό τουΝαι — κρυπτογραφεί τώρα· ο παραλήπτης εγγράφεται και αποκρυπτογραφεί αργότερα
Ιδιωτικό κλειδί που παράγεται απόΗ μηχανή ή η συσκευή του ίδιου του χρήστη (συχνά δεν την εγκαταλείπει ποτέ)Το KGC, κεντρικά, από την ταυτότητα
Παρακαταθήκη κλειδιούΚανένα εκ σχεδιασμούΕγγενής: το KGC μπορεί να παράγει το ιδιωτικό κλειδί κάθε χρήστη
ΑνάκλησηCRL / OCSP ανά πιστοποιητικόΧωρίς αντίστοιχο· η συνήθης πρακτική ενσωματώνει παράθυρα ισχύος στην ταυτότητα (π.χ. bob@example.com|2026), ώστε τα κλειδιά να λήγουν εκ κατασκευής
Κόστος ανά πράξηΑπλή αριθμητική ECC — γρήγορηΈνα διγραμμικό ζεύγος — τάξεις μεγέθους βραδύτερο από έναν βαθμωτό πολλαπλασιασμό
ΠρότυπαX.509 / RFC 5280· SM2 βάσει GB/T 32918GB/T 38635.1/.2-2020 (προηγουμένως GM/T 0044-2016)
Φυσικό περιβάλλονΑνοιχτό internet: TLS, υπογραφή κώδικα, γενικό PKIΚλειστά οικοσυστήματα: η ανταλλαγή μηνυμάτων μιας τράπεζας, το email μιας υπηρεσίας, ταυτότητα στόλου/συσκευών — όπου μια κεντρική αρχή είναι αποδεκτή και η κρυπτογράφηση χωρίς εγγραφή αποφέρει οφέλη

Εμπειρικός κανόνας: το SM9 προσφέρει διαχείριση κλειδιών χωρίς πιστοποιητικά, στο τίμημα της παρακαταθήκης κλειδιού και βραδύτερων μαθηματικών. Αν δεν γίνεται αποδεκτός ένας τρίτος που μπορεί να διαβάσει τα πάντα ή να πλαστογραφήσει οποιονδήποτε, παραμένει κανείς στα πιστοποιητικά SM2· αν ο στόχος είναι κρυπτογράφηση χωρίς εγγραφή μέσα σε έναν οργανισμό, το SM9 είναι ακριβώς αυτό το εργαλείο.

Παράμετροι συστήματος SM9 (επίσημη καμπύλη BN 256 bit)

Το σύνολο παραμέτρων από το GB/T 38635.1-2020 (και στο GM/T 0044.5-2017). Πρόκειται για τιμές αναφοράς μόνο ανάγνωσης — το αυτοτεστ παρακάτω ελέγχει ξανά κάθε σταθερά αυτής της σελίδας έναντι επαληθευμένων τιμών:

ΣτοιχείοΤιμή
ΚαμπύληΚαμπύλη Barreto–Naehrig (BN) E: y2 = x3 + b πάνω από το Fp, b = 05
Παράμετρος καμπύλης t60000000 0058F98A
Πρώτος αριθμός πεδίου pB6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
Τάξη ομάδας NB6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
Παραμετροποίησηp = 36t4 + 36t3 + 24t2 + 6t + 1; N = 36t4 + 36t3 + 18t2 + 6t + 1
Συμπαράγοντας1
Βαθμός ενσωμάτωσης k12 (πύργος πεδίων Fp → Fp2 → Fp4 → Fp12)
ΖεύγοςΖεύγος R-ate e: G1 × G2 → GT, και οι τρεις ομάδες τάξης N
Γεννήτορας G1 P1 (στο E)x = 93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD
y = 21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616
Γεννήτορας G2 P2 (στο συστρεμμένο E′: y2 = x3 + 5·u πάνω από το Fp2, u2 = −2)xc0 = 37227552 92130B08 D2AAB97F D34EC120 EE265948 D19C17AB F9B7213B AF82D65B
xc1 = 85AEF3D0 78640C98 597B6027 B441A01F F1DD2C19 0F5E93C4 54806C11 D8806141
yc0 = A7CF28D5 19BE3DA6 5F317015 3D278FF2 47EFBA98 A71A0811 6215BBA5 C999A7C7
yc1 = 17509B09 2E845C12 66BA0D26 2CBEE6ED 0736A96F A347C8BD 856DC76B 84EBEB96
(στοιχεία Fp2 γραμμένα ως c0 + c1·u)
Κατακερματισμός / KDFΤα H1, H2 και το KDF βασίζονται στο SM3 (GB/T 32905-2016)· το hid είναι αναγνωριστικό συνάρτησης ενός byte που επιλέγει το KGC
Πού βρίσκεται το SM9 μέσα στη σουίτα SM
  • SM9 (αυτή η σελίδα) — ο ανατρεπτικός παράγοντας της διαχείρισης κλειδιών: ταυτότητες αντί για πιστοποιητικά, KGC αντί για ιεραρχία CA.
  • SM3 — ο κατακερματισμός· τα H1/H2/KDF του SM9 βασίζονται σε αυτόν. Υπολογισμός αποτυπωμάτων στη σελίδα SM3.
  • SM4 — ο κρυπτογράφος μπλοκ που συνήθως κρυπτογραφεί τα μαζικά δεδομένα με το κλειδί που παράγει το KDF του SM9. Δοκιμή στη σελίδα SM4.
  • SM2 — ο αντίστοιχος στον κόσμο των πιστοποιητικών: ίδιες εργασίες (υπογραφή, κρυπτογράφηση) με συνηθισμένη ECC και ένα PKI από πίσω. Πλήρης υπολογιστής στη σελίδα SM2.
Σημείωση συμμόρφωσης: το SM9 είναι επιλογή ανεξαρτησίας σουίτας και διαχείρισης κλειδιών για ρυθμιζόμενες κινεζικές εγκαταστάσεις, συγκρίσιμο σε ισχύ με άλλα συστήματα περίπου 128 bit. Οι παραγωγικές εγκαταστάσεις πρέπει να αντιμετωπίζουν το κύριο κλειδί του KGC ως τον σημαντικότερο πόρο — συνήθως φυλάσσεται σε HSM, μοιράζεται σε πολλούς εμπιστευτικούς ή και τα δύο.
Συνηθισμένες παρανοήσεις
  • «Η ταυτότητα είναι το δημόσιο κλειδί, άρα οποιοσδήποτε μπορεί να αποκρυπτογραφήσει το email κάποιου.» Όχι — οποιοσδήποτε μπορεί να κρυπτογραφήσει προς την ταυτότητα και να επαληθεύσει υπογραφές από αυτήν· μόνο ο κάτοχος του ιδιωτικού κλειδιού που εξέδωσε το KGC μπορεί να αποκρυπτογραφήσει ή να υπογράψει. Το KGC ελέγχει ποιος είναι πραγματικά ο Bob πριν δώσει το deB.
  • Αγνόηση της παρακαταθήκης κλειδιού. Ένα κλειδί KGC που έχει διαρρεύσει σημαίνει ότι ο επιτιθέμενος μπορεί να παράγει σιωπηλά το ιδιωτικό κλειδί κάθε χρήστη — πλήρη αποκρυπτογράφηση και πλήρη υποδύση για τον τομέα. Αυτό είναι σχεδιαστικό (έτσι λειτουργεί η κρυπτογραφία βασισμένη σε ταυτότητα), όχι ελάττωμα προς διόρθωση. Ο μετριασμός γίνεται επιχειρησιακά: HSM, κατανεμημένο KGC σε διαφορετικές οντότητες, αυστηρά αρχεία ελέγχου έκδοσης.
  • Η παραδοχή ότι η συμβολοσειρά ταυτότητας είναι ανεκτική. Κατακερματίζεται ακριβώς byte προς byte: το Bob@Example.COM, το bob@example.com και το " bob@example.com" είναι τρία διαφορετικά δημόσια κλειδιά με τρία διαφορετικά ιδιωτικά κλειδιά. Να καθοριστεί μία κανονική μορφή πριν από την ανάπτυξη· και να εξεταστεί η προσθήκη ενός παραθύρου ισχύος για ανάκληση.
  • «Καμπύλη 256 bit, άρα ασφάλεια 256 bit.» Η κρυπτογραφία βασισμένη σε ζεύγη δεν κλιμακώνεται όπως η απλή ECC: οι επιθέσεις λειτουργούν στα τεράστια πεδία Fp12/Fp6, όπου εφαρμόζονται αλγόριθμοι index-calculus (υποεκθετικοί). Οι δημοσιευμένες αναλύσεις τοποθετούν τις καμπύλες BN 256 bit στην τάξη ασφάλειας περίπου ~100–128 bit, και ερευνητές έχουν προτείνει μεγαλύτερες παραμέτρους BN για το SM9 (π.χ. «Searching BN Curves for SM9», 2019). Το SM9 αντιμετωπίζεται ως περίπου κατηγορία AES-128 — στέρεο, αλλά όχι φρούριο 256 bit.
  • Προσδοκία ότι υπάρχει στο OpenSSL. Το OpenSSL υλοποιεί το SM2/SM3/SM4 αλλά όχι το SM9. Ανοιχτές στοίβες που λειτουργούν είναι το GmSSL και το Bouncy Castle.
Συχνές ερωτήσεις

Είναι το SM9 κινεζική εφεύρεση; Η ιδέα όχι: ο Shamir πρότεινε κρυπτογραφία βασισμένη σε ταυτότητα το 1984, και οι Boneh–Franklin (2001) κατασκεύασαν την πρώτη πρακτική IBE βασισμένη σε ζεύγη. Το SM9 (GM/T 0044-2016, έπειτα GB/T 38635.1/.2-2020) είναι η κινεζική εθνική υλοποίηση αυτής της γενεαλογίας.

Γιατί δεν υπάρχει υπολογιστής SM9 σε αυτή τη σελίδα; Σε αντίθεση με το SM2/SM3/SM4, το SM9 χρειάζεται διγραμμικό ζεύγος: πύργο επέκτασης πεδίου Fp12, βρόχο Miller και τελική εκθετοποίηση — αρκετές χιλιάδες γραμμές προσεκτικού κώδικα μεγάλων αριθμών. Είναι στον οδικό χάρτη της οικογένειας· μέχρι τότε αυτή η σελίδα τεκμηριώνει τον αλγόριθμο, και οι αδελφές σελίδες υπολογίζουν το υπόλοιπο της σουίτας στο πρόγραμμα περιήγησης.

Μπορεί το SM9 να αντικαταστήσει το SM2, το SM3 και το SM4; Όχι — λύνουν διαφορετικά προβλήματα. Το SM9 αντικαθιστά την υποδομή πιστοποιητικών, όχι τα πρωτογενή στοιχεία: εσωτερικά βασίζεται στο SM3 για κατακερματισμό και παραγωγή κλειδιών, και το περιτυλιγμένο κλειδί μαζικών δεδομένων οδηγεί συνήθως σε SM4. Το SM2 παραμένει η απάντηση όταν απαιτείται λογοδοσία τύπου πιστοποιητικού χωρίς παρακαταθήκη κλειδιού.

Τι ακριβώς είναι το hid; Ένας αναγνωριστικός συνάρτησης ενός byte (επιλεγμένος και δημοσιευμένος από το KGC) που αναμιγνύεται σε κάθε κατακερματισμό H1. Επειδή τα κλειδιά υπογραφής, κρυπτογράφησης και ανταλλαγής κλειδιών κατακερματίζουν την ταυτότητα μαζί με διαφορετικές τιμές hid, ένα διαρρεύσαν κλειδί χρήστη θέτει σε κίνδυνο μόνο αυτή τη μία λειτουργία.

Πώς ανακαλούνται ταυτότητες; Δεν υπάρχει μηχανισμός CRL μέσα στο SM9. Συνήθης πρακτική: ενσωμάτωση της λήξης στην ίδια την ταυτότητα (bob@example.com|2026-Q4), ώστε τα κλειδιά να επανεκδίδονται περιοδικά, και το KGC απλώς παύει να εκδίδει για ανακληθείσες ταυτότητες.

Πού χρησιμοποιείται πραγματικά το SM9; Σε ρυθμιζόμενους κινεζικούς τομείς — τραπεζική, δημόσια διοίκηση και βιομηχανική ανταλλαγή μηνυμάτων — συνήθως μέσα σε κλειστά οικοσυστήματα όπου μία αρχή είναι αποδεκτή και το «κρυπτογράφησε σε μια διεύθυνση email σήμερα, εγγράψου τον χρήστη αύριο» αξίζει το κόστος των ζευγών.

Αυτοέλεγχος
Αυτή η σελίδα είναι μόνο για ανάγνωση, οπότε το αυτοτεστ ελέγχει τη σελίδα αυτή καθαυτή: κάθε σταθερά καμπύλης που εμφανίζεται παραπάνω ελέγχεται ξανά έναντι ανεξάρτητα επαληθευμένων τιμών (το p και το N ξαναυπολογίζονται από την παραμετροποίηση BN, και οι δύο γεννήτορες ελέγχονται ότι ανήκουν στην καμπύλη με τάξη N), τα πρότυπα νούμερα, οι αναλλοίωτες του προτύπου (χωρίς DOCTYPE, σήμανση build), οι διασυνδέσεις και η παρουσία των FAQ.