Criptografia bazată pe identitate SM9 (IBC)

SM9 este membrul bazat pe identitate al suitei SM chineze: orice șir — o adresă de e-mail, un număr de telefon, un serial de dispozitiv — funcționează direct ca cheie publică, iar un Centru de generare a cheilor emite cheile private corespunzătoare. Aceasta este o pagină explicativă, doar de citit: cum funcționează IBE și IBS pas cu pas, cum se compară criptografia bazată pe identitate cu certificatele PKI și parametrii oficiali ai curbei.
Calculator planificat. Un calculator SM9 rulat în browser este pe foaia de parcurs a familiei criptografice — mecanismul de asociere (turnul de extinderi Fp12, bucla Miller, exponențiera finală) este un nucleu în sine. Între timp, paginile conexe calculează SM2, SM3 și SM4 integral în browser.
Ce este SM9?
Într-o propoziție: SM9 este standardul național chinez pentru criptografia bazată pe identitate (GB/T 38635.1/.2-2020, succesorul seriei GM/T 0044-2016): cheia publică este un șir de identitate precum bob@example.com, cheia privată corespunzătoare este emisă de un Centru de generare a cheilor (KGC) de încredere, iar matematica ce face asta posibilă este o asociere biliniară pe o curbă BN de 256 de biți.

Criptografia cu cheie publică convențională (RSA, SM2, ECC) răspunde la întrebarea „este aceasta cheia lui Bob?” prin certificate: o ierarhie CA garantează că un anumit obiect de cheie, aparent aleatoriu, aparține lui Bob. Criptografia bazată pe identitate inversează asta: numele însuși este materialul cheii. Oricine cunoaște adresa de e-mail a lui Bob îi poate cripta mesaje sau îi poate verifica semnăturile fără să preia nimic — fără director de certificate, fără validare de lanț de încredere. Prețul este o terță parte de încredere care poate deriva fiecare cheie privată și o matematică mult mai grea. SM9 este instanța chineză standardizată a acestui compromis.

Actorii: cine deține ce
RolCe este
Identitate (ID)Orice șir de octeți, de ex. bob@example.com, folosit direct ca cheie publică. Trebuie să fie canonic: exact octet cu octet, fără două ortografii ale aceleiași persoane.
KGCCentrul de generare a cheilor: deține cheia privată master, verifică cui aparține o identitate și emite cheia privată corespunzătoare utilizatorului.
Perechi de chei masterDouă perechi independente: semnare (secret ks, public Ppub-s = [ks]P2) și criptare (secret ke, public Ppub-e = [ke]P1). Se observă asimetria intenționată: o cheie master publică trăiește în G2, cealaltă în G1.
Cheia privată a utilizatoruluiUn punct pe curbă, derivat din ID de către KGC. Cheia de semnare dsA trăiește în G1; cheia de decriptare deB trăiește în G2.
hidUn identificator de funcție de un octet amestecat în fiecare derivare de cheie, astfel încât o identitate produce chei criptografic independente pentru semnare, criptare și schimb de chei.
H1, H2, KDFFuncții auxiliare bazate pe SM3 (GB/T 32905): aplicații de hash către întreg și funcția de derivare a cheii.
Asocierea eAsocierea biliniară R-ate e: G1 × G2 → GT peste curba BN de 256 de biți definită mai jos. Motorul algebric al întregii scheme.
Cum funcționează criptarea bazată pe identitate (IBE) SM9

Alice vrea să trimită un secret lui bob@example.com — eventual înainte ca Bob să se fi înscris vreodată la KGC:

1. Alice calculează singură cheia publică a lui Bob: QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Fără căutare în director, fără preluare de certificat — îi trebuie doar șirul de identitate și cheia publică master.
2. Efemer: r aleatoriu; se calculează punctul C1 = [r]QB.
3. Asocierea: g = e(Ppub-e, P2), apoi w = gr.
4. Chei: K = KDF(C1 ‖ w ‖ IDB, klen) (bazat pe SM3), împărțit în K1 (cheie de învelire) și K2 (cheie MAC).
5. Mască: C2 = mesajul XOR-at cu (sau criptat sub) K1; C3 = MAC(K2, C2). Textul cifrat grupează C1, C3 și C2.
6. Bob, la înscriere: KGC verifică faptul că el chiar este bob@example.com și emite deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Apoi calculează w′ = e(C1, deB), reconstruiește aceeași K, verifică MAC-ul și demascarea mesajului.

De ce funcționează: prin biliniaritate, e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — exact valoarea pe care Alice a introdus-o în KDF. Partea elegantă este pasul 6: criptarea nu necesită înscriere prealabilă. Alice poate sigila un mesaj astăzi; Bob îl poate deschide doar după ce și-a dovedit identitatea la KGC. Generarea amânată a cheii este trăsătura definitorie a IBE.

Cum funcționează semnăturile bazate pe identitate (IBS) SM9

Alice semnează un mesaj M cu cheia sa de semnare dsA:

1. g = e(P1, Ppub-s); r aleatoriu; w = gr.
2. h = H2(M ‖ w, N); l = (r − h) mod N (se reia cu un r nou dacă l = 0).
3. S = [l]dsA. Semnătura este perechea (h, S).

Oricine cunoaște identitatea lui Alice o verifică fără niciun certificat:

4. P = [H1(IDA ‖ hid, N)]P2 + Ppub-s; u = e(S, P); w′ = u · gh.
5. Semnătura este validă exact atunci când H2(M ‖ w′, N) = h.

Din nou, biliniaritatea închide bucla: u = e(P1,P2)l·ks și gh = e(P1,P2)ks·h, deci w′ = e(P1,P2)ks·(l+h) = e(P1,P2)ks·r = w.

Bazată pe identitate vs bazată pe certificate (IBE vs PKI)

Aceasta este decizia care contează de fapt când se alege SM9. Ambele lumi oferă criptare cu cheie publică și semnături; diferă prin unde se află încrederea:

AspectPKI / certificate (SM2, lumea RSA)Bazată pe identitate (SM9)
Cheia publică a lui bob@…Un bloc de 65+ octeți în interiorul unui certificat, preluat dintr-un director sau de la destinatar însușiȘirul bob@example.com în sine; verificatorul calculează cheia din el
Rădăcina de încredereO ierarhie CA; fiecare lanț trebuie validat până la o rădăcinăO singură cheie publică master KGC pentru întregul domeniu
Criptare înainte ca destinatarul să aibă o cheie?Nu — mai întâi îi trebuie certificatul validDa — se criptează acum; el se înscrie și decriptează mai târziu
Cheia privată generată deCalculatorul sau dispozitivul propriu al utilizatorului (adesea nu îl părăsește niciodată)KGC, centralizat, din identitate
Custodia cheilorNimic prin designInerent: KGC poate deriva cheia privată a fiecărui utilizator
RevocareCRL-uri / OCSP per certificatNiciun echivalent; practica obișnuită încorporează ferestre de valabilitate în ID (de ex. bob@example.com|2026), astfel încât cheile expiră prin construcție
Costul per operațieAritmetică ECC simplă — rapidăO asociere biliniară — cu ordine de mărime mai lentă decât o înmulțire scalară
StandardeX.509 / RFC 5280; SM2 conform GB/T 32918GB/T 38635.1/.2-2020 (anterior GM/T 0044-2016)
Habitatul naturalInternetul deschis: TLS, semnarea de cod, PKI generalEcosisteme închise: mesageria unei bănci, e-mailul unei agenții, identitatea flotei/dispozitivelor — acolo unde o autoritate centrală este acceptabilă și criptarea fără înscriere își plătește costul

Regula de bază: SM9 oferă gestionarea cheilor fără certificate, la prețul custodiei cheilor și al matematicii mai lente. Dacă nu se poate accepta o terță parte care poate citi totul sau falsifica pe oricine, se rămâne la certificatele SM2; dacă scopul este criptarea fără înscriere în interiorul unei organizații, SM9 este exact instrumentul potrivit.

Parametrii de sistem SM9 (curba BN oficială de 256 de biți)

Setul de parametri din GB/T 38635.1-2020 (și din GM/T 0044.5-2017). Acestea sunt valori de referință doar de citit — autotestul de mai jos reverifică fiecare constantă de pe această pagină față de valori verificate independent:

ElementValoare
CurbăCurba Barreto–Naehrig (BN) E: y2 = x3 + b peste Fp, b = 05
Parametrul curbei t60000000 0058F98A
Numărul prim al corpului pB6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
Ordinul grupului NB6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
Parametrizarep = 36t4 + 36t3 + 24t2 + 6t + 1; N = 36t4 + 36t3 + 18t2 + 6t + 1
Cofactor1
Gradul de încorporare k12 (turnul de câmpuri Fp → Fp2 → Fp4 → Fp12)
AsociereAsocierea R-ate e: G1 × G2 → GT, toate cele trei grupuri de ordin N
Generatorul G1 P1 (pe E)x = 93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD
y = 21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616
Generatorul G2 P2 (pe răsucirea E′: y2 = x3 + 5·u peste 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
(elemente Fp2 scrise c0 + c1·u)
Hash / KDFH1, H2 și KDF sunt construite pe SM3 (GB/T 32905-2016); hid este un identificator de funcție de un octet ales de KGC
Unde se află SM9 în suita SM
  • SM9 (această pagină) — perturbatorul gestionării cheilor: identități în loc de certificate, KGC în loc de ierarhia CA.
  • SM3 — hash-ul; H1/H2/KDF ale SM9 sunt construite pe el. Digesturile se calculează pe pagina SM3.
  • SM4 — cifrul bloc care cifrează de obicei datele în volum mare cu cheia produsă de KDF-ul SM9. Se încearcă pe pagina SM4.
  • SM2 — omologul din lumea certificatelor: aceleași sarcini (semnare, criptare) cu ECC obișnuit și un PKI în spate. Calculator complet pe pagina SM2.
Notă de conformitate: SM9 este o alegere de independență a suitei și de gestionare a cheilor pentru implementări chineze reglementate, cu o rezistență comparabilă cu alte sisteme de ~128 de biți. Lansările în producție trebuie să trateze cheia master a KGC drept bijuteria coroanei — de obicei păstrată într-un HSM, împărțită între mai mulți administratori sau ambele.
Concepții greșite frecvente
  • „Identitatea este cheia publică, deci oricine îmi poate decripta e-mailul.” Nu — oricine poate cripta pentru identitate și verifica semnăturile venite de la ea; doar deținătorul cheii private emise de KGC poate decripta sau semna. KGC verifică cine este de fapt Bob înainte să-i predea deB.
  • Ignorarea custodiei cheilor. O cheie master KGC compromisă înseamnă că atacatorul poate deriva în tăcere fiecare cheie privată a utilizatorilor — decriptare totală și uzurpare totală a identității pentru domeniu. Aceasta este intenționat (așa funcționează criptografia bazată pe identitate), nu o defecțiune de corectat. Se atenuează operațional: HSM, KGC cu prag, împărțit între entități, jurnale stricte de audit pentru emitere.
  • Presupunerea că șirul de identitate este tolerant. Se face hash exact, octet cu octet: Bob@Example.COM, bob@example.com și " bob@example.com" sunt trei chei publice diferite, cu trei chei private diferite. Un format canonic trebuie fixat înainte de implementare — și se ia în calcul adăugarea unei ferestre de valabilitate pentru revocare.
  • „Curbă de 256 de biți, deci securitate de 256 de biți.” Criptografia bazată pe asociere nu se scalează ca ECC simplu: atacurile funcționează în câmpurile enorme Fp12/Fp6, unde se aplică algoritmii de calcul al indicilor (sub-exponențiali). Analizele publicate plasează curbele BN de 256 de biți în jurul clasei de securitate de ~100–128 de biți, iar cercetătorii au propus parametri BN mai mari pentru SM9 (de ex. „Searching BN Curves for SM9”, 2019). Se tratează SM9 ca fiind aproximativ în clasa AES-128 — solid, dar nu o fortăreață de 256 de biți.
  • Așteptarea să existe în OpenSSL. OpenSSL implementează SM2/SM3/SM4, dar nu are SM9. Stive open-source funcționale includ GmSSL și Bouncy Castle.
Întrebări frecvente

Este SM9 o invenție chinezească? Conceptul nu este: Shamir a propus criptografia bazată pe identitate în 1984, iar Boneh–Franklin (2001) a construit primul IBE practic bazat pe asociere. SM9 (GM/T 0044-2016, apoi GB/T 38635.1/.2-2020) este instanțierea standard națională a Chinei din această descendență.

De ce nu există un calculator SM9 pe această pagină? Spre deosebire de SM2/SM3/SM4, SM9 are nevoie de o asociere biliniară: un turn de extinderi Fp12, o buclă Miller și o exponențiere finală — câteva mii de linii de cod atent scris pentru numere mari. Este pe foaia de parcurs a familiei; până atunci această pagină documentează algoritmul, iar paginile conexe calculează restul suitei în browser.

Poate SM9 înlocui SM2, SM3 și SM4? Nu — rezolvă probleme diferite. SM9 înlocuiește infrastructura de certificate, nu primitivele: intern se bazează pe SM3 pentru hash și derivarea cheilor, iar cheia în volum mare învelită comandă de obicei SM4. SM2 rămâne răspunsul atunci când este necesară responsabilitatea de tip certificat fără custodia cheilor.

Ce este exact hid? Un identificator de funcție de un octet (ales și publicat de KGC) care se amestecă în fiecare hash H1. Deoarece cheile de semnare, cheile de criptare și cheile de schimb hashează identitatea împreună cu valori hid diferite, o cheie de utilizator scursă compromite doar acea funcție.

Cum se revocă identitățile? Nu există un mecanism CRL în SM9. Practica standard: expirarea se include în identitatea însăși (bob@example.com|2026-Q4), astfel încât cheile trebuie reemise periodic, iar KGC pur și simplu încetează să emită pentru identitățile revocate.

Unde este folosit efectiv SM9? În sectoarele chinezești reglementate — bancar, guvernamental și mesagerie industrială — de obicei în ecosisteme închise, unde o singură autoritate este acceptabilă și criptarea către o adresă de e-mail acum, înscrierea utilizatorului mai târziu merită costul asocierii.

Autotest
Aceasta este o pagină doar de citit, așa că autotestul verifică pagina în sine: fiecare constantă de curbă afișată mai sus este reverificată față de valori verificate independent (numerele p prim și ordinul N recalculate din parametrizarea BN, ambii generatori (pe curbă, cu ordinul N)), numerele standardului, invarianții șablonului (fără DOCTYPE, marcaj de build), legăturile încrucișate și prezența secțiunii FAQ.