Cryptographie basée sur l’identité SM9 (IBC)

SM9 est le membre basé sur l’identité de la suite SM chinoise : n’importe quelle chaîne — une adresse e-mail, un numéro de téléphone, un numéro de série d’appareil — sert directement de clé publique, et un centre de génération de clés délivre les clés privées correspondantes. Il s’agit d’une page d’explication en lecture seule : le fonctionnement pas à pas de l’IBE et de l’IBS, la comparaison de la cryptographie basée sur l’identité avec les certificats PKI, et les paramètres officiels de la courbe.
Calculateur prévu. Un calculateur SM9 côté navigateur figure sur la feuille de route de la famille cryptographique — la mécanique des couplages (tour d’extensions Fp12, boucle de Miller, exponentiation finale) constitue un noyau à part entière. En attendant, les pages sœurs calculent entièrement dans votre navigateur SM2, SM3 et SM4.
Qu’est-ce que SM9 ?
En une phrase : SM9 est la norme nationale chinoise de cryptographie basée sur l’identité (GB/T 38635.1/.2-2020, successeur de la série GM/T 0044-2016) : la clé publique est une chaîne d’identité telle que bob@example.com, la clé privée correspondante est délivrée par un centre de génération de clés (KGC) de confiance, et les mathématiques qui rendent cela possible sont un couplage bilinéaire sur une courbe BN de 256 bits.

La cryptographie à clé publique classique (RSA, SM2, ECC) répond à la question « cette clé est-elle vraiment celle de Bob ? » par des certificats : une hiérarchie d’AC atteste qu’un bloc de clé d’apparence aléatoire appartient à Bob. La cryptographie basée sur l’identité inverse le raisonnement : le nom lui-même sert de matériau de clé. Quiconque connaît l’adresse e-mail de Bob peut lui chiffrer un message ou vérifier ses signatures sans rien récupérer — ni annuaire de certificats, ni validation de chaîne de confiance. Le prix est un tiers de confiance qui peut dériver toutes les clés privées, et des mathématiques beaucoup plus lourdes. SM9 est l’instanciation chinoise normalisée de ce compromis.

Les acteurs : qui détient quoi
RôleCe que c’est
Identité (ID)Une chaîne d’octets quelconque, par ex. bob@example.com, utilisée directement comme clé publique. Elle doit être canonique : exacte octet pour octet, sans deux graphies pour la même personne.
KGCCentre de génération de clés : détient la clé privée maîtresse, vérifie à qui appartient une identité, et délivre la clé privée utilisateur correspondante.
Paires de clés maîtressesDeux couples indépendants : signature (secret ks, public Ppub-s = [ks]P2) et chiffrement (secret ke, public Ppub-e = [ke]P1). Notez l’asymétrie délibérée : une clé maîtresse publique vit dans G2, l’autre dans G1.
Clé privée utilisateurUn point de la courbe, dérivé de l’ID par le KGC. La clé de signature dsA vit dans G1 ; la clé de déchiffrement deB vit dans G2.
hidUn identifiant de fonction d’un octet, mélangé à chaque dérivation de clé, pour qu’une même identité produise des clés cryptographiquement indépendantes pour la signature, le chiffrement et l’échange de clés.
H1, H2, KDFFonctions auxiliaires fondées sur SM3 (GB/T 32905) : applications de hachage vers un entier et fonction de dérivation de clés.
Couplage eLe couplage bilinéaire R-ate e: G1 × G2 → GT sur la courbe BN de 256 bits définie ci-dessous. Le moteur algébrique de l’ensemble du schéma.
Fonctionnement du chiffrement basé sur l’identité SM9 (IBE)

Alice veut envoyer un secret à bob@example.com — peut-être avant que Bob ne se soit jamais inscrit auprès du KGC :

1. Alice calcule elle-même la clé publique de Bob : QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Ni recherche dans un annuaire, ni récupération de certificat — la chaîne d’identité et la clé maîtresse publique suffisent.
2. Éphémère : r aléatoire ; calcul du point C1 = [r]QB.
3. Couplage : g = e(Ppub-e, P2), puis w = gr.
4. Clés : K = KDF(C1 ‖ w ‖ IDB, klen) (fondée sur SM3), découpée en K1 (clé d’enveloppe) et K2 (clé MAC).
5. Masquage : C2 = le message XORé avec (ou chiffré sous) K1 ; C3 = MAC(K2, C2). Le chiffré regroupe C1, C3 et C2.
6. Bob, à chaque inscription : le KGC vérifie qu’il est bien bob@example.com et délivre deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Il calcule ensuite w′ = e(C1, deB), reconstruit la même K, vérifie le MAC et démasque le message.

Pourquoi ça fonctionne : par bilinéarité, e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — exactement la valeur qu’Alice a intégrée à la KDF. La partie élégante est l’étape 6 : le chiffrement ne demande aucune inscription préalable. Alice peut sceller un message aujourd’hui ; Bob ne peut l’ouvrir qu’après avoir prouvé son identité au KGC. La génération de clés différée est la caractéristique propre de l’IBE.

Fonctionnement des signatures basées sur l’identité SM9 (IBS)

Alice signe un message M avec sa clé de signature dsA :

1. g = e(P1, Ppub-s) ; r aléatoire ; w = gr.
2. h = H2(M ‖ w, N) ; l = (r − h) mod N (recommencer avec un r neuf si l = 0).
3. S = [l]dsA. La signature est le couple (h, S).

Quiconque connaît l’identité d’Alice la vérifie sans aucun certificat :

4. P = [H1(IDA ‖ hid, N)]P2 + Ppub-s ; u = e(S, P) ; w′ = u · gh.
5. La signature est valide exactement lorsque H2(M ‖ w′, N) = h.

La bilinéarité referme la boucle : u = e(P1,P2)l·ks et gh = e(P1,P2)ks·h, donc w′ = e(P1,P2)ks·(l+h) = e(P1,P2)ks·r = w.

Basé sur l’identité ou sur certificat (IBE contre PKI)

C’est la décision qui compte vraiment lorsqu’on choisit SM9. Les deux mondes offrent le chiffrement à clé publique et les signatures ; ils diffèrent par l’endroit où réside la confiance :

AspectPKI / certificats (monde SM2, RSA)Basé sur l’identité (SM9)
Clé publique de bob@…Un bloc de 65 octets ou plus dans un certificat, récupéré depuis un annuaire ou auprès du destinataire lui-mêmeLa chaîne bob@example.com elle-même ; le vérificateur calcule la clé à partir d’elle
Racine de confianceUne hiérarchie d’AC ; chaque chaîne doit être validée jusqu’à une racineUne seule clé publique maîtresse du KGC pour tout le domaine
Chiffrer avant que le destinataire ait une clé ?Non — il vous faut d’abord son certificat valideOui — chiffrez maintenant ; il s’inscrit et déchiffre plus tard
Clé privée générée parLa propre machine ou appareil de l’utilisateur (souvent elle ne le quitte jamais)Le KGC, de façon centralisée, à partir de l’identité
Séquestre de clésAucune par conceptionInhérent : le KGC peut dériver la clé privée de chaque utilisateur
RévocationLCR / OCSP par certificatAucun équivalent ; la pratique courante intègre des fenêtres de validité dans l’ID (par ex. bob@example.com|2026) pour que les clés expirent par construction
Coût par opérationArithmétique ECC simple — rapideUn couplage bilinéaire — des ordres de grandeur plus lent qu’une multiplication scalaire
NormesX.509 / RFC 5280 ; SM2 sous GB/T 32918GB/T 38635.1/.2-2020 (anciennement GM/T 0044-2016)
Milieu naturelInternet ouvert : TLS, signature de code, PKI généraleÉcosystèmes fermés : messagerie d’une banque, e-mail d’une administration, identité de flotte ou d’appareils — là où une autorité centrale est acceptable et où le chiffrement sans inscription est rentable

Règle empirique : SM9 offre une gestion des clés sans certificat, au prix d’un séquestre de clés et de mathématiques plus lentes. Si vous ne pouvez pas accepter un tiers capable de tout lire ou d’usurper n’importe qui, restez sur les certificats SM2 ; si le chiffrement sans inscription au sein d’une même organisation est le but, SM9 est exactement cet outil.

Paramètres système SM9 (courbe BN officielle de 256 bits)

Le jeu de paramètres de GB/T 38635.1-2020 (également dans GM/T 0044.5-2017). Ce sont des valeurs de référence en lecture seule — l’autotest ci-dessous revérifie chaque constante de cette page par rapport à des valeurs vérifiées indépendamment :

ÉlémentValeur
CourbeCourbe de Barreto–Naehrig (BN) E: y2 = x3 + b sur Fp, b = 05
Paramètre de courbe t60000000 0058F98A
Premier du corps pB6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
Ordre du groupe NB6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
Paramétragep = 36t4 + 36t3 + 24t2 + 6t + 1; N = 36t4 + 36t3 + 18t2 + 6t + 1
Cofacteur1
Degré d’immersion k12 (tour de corps Fp → Fp2 → Fp4 → Fp12)
CouplageCouplage R-ate e : G1 × G2 → GT, les trois groupes d’ordre N
Générateur de G1 P1 (sur E)x = 93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD
y = 21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616
Générateur de G2 P2 (sur la torsion E′ : y2 = x3 + 5·u sur 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
(éléments de Fp2 écrits c0 + c1·u)
Hachage / KDFH1, H2 et la KDF sont bâties sur SM3 (GB/T 32905-2016) ; hid est un identifiant de fonction d’un octet choisi par le KGC
Où se situe SM9 dans la suite SM
  • SM9 (cette page) — le bouleversement de la gestion des clés : des identités à la place des certificats, un KGC à la place d’une hiérarchie d’AC.
  • SM3 — le hachage ; les H1/H2/KDF de SM9 sont bâtis dessus. Calculez les empreintes sur la page SM3.
  • SM4 — le chiffrement par blocs qui chiffre en général les données volumineuses sous la clé produite par la KDF de SM9. Essayez-le sur la page SM4.
  • SM2 — l’équivalent du monde des certificats : mêmes usages (signer, chiffrer) avec une ECC ordinaire et une PKI derrière. Calculateur complet sur la page SM2.
Note de conformité : SM9 est un choix d’indépendance de la suite et de gestion des clés pour les déploiements chinois réglementés, de robustesse comparable à d’autres systèmes d’environ 128 bits. Les déploiements en production doivent traiter la clé maîtresse du KGC comme le bien le plus précieux — généralement conservée dans un HSM, partagée entre plusieurs dépositaires, ou les deux.
Idées reçues courantes
  • « L’identité est la clé publique, donc n’importe qui peut déchiffrer mon courrier. » Non — n’importe qui peut chiffrer pour l’identité et vérifier les signatures qui en émanent ; seul le détenteur de la clé privée délivrée par le KGC peut déchiffrer ou signer. Le KGC vérifie qui est réellement Bob avant de lui remettre deB.
  • Ignorer le séquestre de clés. Une clé maîtresse de KGC compromise signifie que l’attaquant peut dériver en silence la clé privée de chaque utilisateur — déchiffrement total et usurpation totale pour le domaine. C’est voulu par conception (c’est ainsi que fonctionne la cryptographie basée sur l’identité), ce n’est pas un défaut à corriger. Atténuez-le opérationnellement : HSM, KGC à seuil réparti entre plusieurs entités, journaux d’audit stricts des délivrances.
  • Supposer que la chaîne d’identité est souple. Elle est hachée octet pour octet : Bob@Example.COM, bob@example.com et " bob@example.com" sont trois clés publiques différentes, avec trois clés privées différentes. Figez un format canonique avant le déploiement — et envisagez d’ajouter une fenêtre de validité pour la révocation.
  • « Courbe de 256 bits, donc sécurité de 256 bits. » La cryptographie fondée sur les couplages ne passe pas à l’échelle comme l’ECC classique : les attaques opèrent dans les immenses corps Fp12/Fp6 où s’appliquent les algorithmes de calcul d’indices (sous-exponentiels). Les analyses publiées situent les courbes BN de 256 bits autour de la classe de sécurité ~100 à 128 bits, et des chercheurs ont proposé des paramètres BN plus grands pour SM9 (par ex. « Searching BN Curves for SM9 », 2019). Considérez SM9 comme de la classe AES-128 — solide, mais pas une forteresse de 256 bits.
  • S’attendre à le trouver dans OpenSSL. OpenSSL implémente SM2/SM3/SM4 mais n’a pas SM9. Des piles open source fonctionnelles incluent GmSSL et Bouncy Castle.
FAQ

SM9 est-il une invention chinoise ? Le concept ne l’est pas : Shamir a proposé la cryptographie basée sur l’identité en 1984, et Boneh–Franklin (2001) a construit le premier chiffrement IBE pratique fondé sur les couplages. SM9 (GM/T 0044-2016, puis GB/T 38635.1/.2-2020) est l’instanciation, au niveau de norme nationale, de cette lignée en Chine.

Pourquoi n’y a-t-il pas de calculateur SM9 sur cette page ? Contrairement à SM2/SM3/SM4, SM9 exige un couplage bilinéaire : une tour d’extensions Fp12, une boucle de Miller et une exponentiation finale — plusieurs milliers de lignes de code soigneux sur grands nombres. Il figure sur la feuille de route de la famille ; en attendant, cette page documente l’algorithme, et les pages sœurs calculent le reste de la suite dans le navigateur.

SM9 peut-il remplacer SM2, SM3 et SM4 ? Non — ils résolvent des problèmes différents. SM9 remplace l’infrastructure de certificats, pas les primitives : en interne il s’appuie sur SM3 pour le hachage et la dérivation de clés, et la clé de données enveloppée pilote en général SM4. SM2 reste la réponse lorsqu’une responsabilité de type certificat, sans séquestre de clés, est exigée.

Qu’est-ce qui est exactement haché ? Un identifiant de fonction d’un octet (choisi et publié par le KGC) qui est mélangé à chaque hachage H1. Comme les clés de signature, de chiffrement et d’échange de clés hachent l’identité avec des valeurs hid différentes, une clé utilisateur divulguée ne compromet que cette seule fonction.

Comment révoquer une identité ? SM9 n’a pas de mécanisme de LCR interne. Pratique courante : intégrer l’expiration dans l’identité elle-même (bob@example.com|2026-Q4) pour que les clés soient réémises périodiquement, et laisser simplement le KGC cesser de délivrer pour les identités révoquées.

Où SM9 est-il réellement utilisé ? Dans les secteurs chinois réglementés — banque, administration et messagerie professionnelle — en général au sein d’écosystèmes fermés où une seule autorité est acceptable et où « chiffrer aujourd’hui pour une adresse e-mail, inscrire l’utilisateur demain » vaut le coût du couplage.

Autotest
Il s’agit d’une page en lecture seule, donc l’autotest vérifie la page elle-même : chaque constante de courbe affichée ci-dessus est revérifiée par rapport à des valeurs vérifiées indépendamment (le premier p et l’ordre N recalculés à partir du paramétrage BN, les deux générateurs vérifiés sur la courbe avec l’ordre N), les numéros de norme, les invariants du modèle (pas de DOCTYPE, marqueur de build), les liens croisés et la présence de la FAQ.