SM9 identitetsbaserad kryptografi (IBC)

SM9 är den identitetsbaserade medlemmen i den kinesiska SM-sviten: vilken sträng som helst — en e-postadress, ett telefonnummer, ett enhetsserienummer — fungerar direkt som publik nyckel, och ett nyckelgenereringscenter utfärdar motsvarande privata nycklar. Det här är en skrivskyddad förklaringssida: hur IBE och IBS fungerar steg för steg, hur identitetsbaserad kryptografi jämförs med PKI-certifikat, och de officiella kurvparametrarna.
Räknare planerad. En SM9-räknare i webbläsaren finns på krypto-familjens färdplan — parningsmaskineriet (Fp12-utvidgningsfälttornet, Miller-loopen, slutlig exponentiering) är en egen kärna. Tills dess beräknar systersidorna SM2, SM3 och SM4 helt i webbläsaren.
Vad är SM9?
Med en mening: SM9 är den kinesiska nationella standarden för identitetsbaserad kryptografi (GB/T 38635.1/.2-2020, efterföljare till GM/T 0044-2016-serien): den publika nyckeln är en identitetssträng som bob@example.com, motsvarande privat nyckel utfärdas av ett betrott nyckelgenereringscenter (KGC), och matematiken som gör detta möjligt är en bilinjär parning på en 256-bitars BN-kurva.

Konventionell publik-nyckel-kryptografi (RSA, SM2, ECC) besvarar frågan "är detta verkligen Bobs nyckel?" med certifikat: en CA-hierarki intygar att en viss slumpmässigt utseende nyckelklump tillhör Bob. Identitetsbaserad kryptografi vänder på detta: namnet självt är nyckelmaterialet. Vem som helst som känner till Bobs e-postadress kan kryptera till Bob eller verifiera Bobs signaturer utan att hämta något — ingen certifikatkatalog, ingen kontroll av förtroendekedjan. Priset är en betrodd tredje part som kan härleda varje privat nyckel, och mycket tyngre matematik. SM9 är den standardiserade kinesiska implementeringen av den avvägningen.

Rollerna: vem som håller vad
RollVad den är
Identitet (ID)Vilken byte-sträng som helst, t.ex. bob@example.com, används direkt som publik nyckel. Den måste vara kanonisk: byte för byte exakt, inga två stavningar av samma person.
KGCNyckelgenereringscenter: håller huvudprivatnyckeln, verifierar vilken identitet som tillhör vem och utfärdar motsvarande användarens privata nyckel.
HuvudnyckelparTvå oberoende par: signering (hemligheten ks, publik Ppub-s = [ks]P2) och kryptering (hemligheten ke, publik Ppub-e = [ke]P1). Notera den avsiktliga asymmetrin: den ena huvudpubliken finns i G2, den andra i G1.
Användarens privata nyckelEn punkt på kurvan, härledd från ID:t av KGC. Signeringsnyckeln dsA finns i G1; dekrypteringsnyckeln deB finns i G2.
hidEn en-byte funktionsidentifierare blandad in i varje nyckelhärledning, så att en identitet ger kryptografiskt oberoende nycklar för signering, kryptering och nyckelutbyte.
H1, H2, KDFSM3-baserade hjälpfunktioner (GB/T 32905): mappningar från hash till heltal och nyckelhärledningsfunktionen.
Parning eR-ate-bilinjär-parningen e: G1 × G2 → GT över 256-bitars BN-kurvan som definieras nedan. Den algebraiska motorn i hela schemat.
Hur SM9 identitetsbaserad kryptering (IBE) fungerar

Alice vill skicka en hemlighet till bob@example.com — möjligen innan Bob någonsin registrerat sig hos KGC:

1. Alice härleder själv Bobs publika nyckel: QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Ingen katalogsökning, ingen certifikathämtning — identitetssträngen och den publika huvudnyckeln är allt som behövs.
2. Temporär: slumpmässigt r; beräkna punkten C1 = [r]QB.
3. Parning: g = e(Ppub-e, P2), sedan w = gr.
4. Nycklar: K = KDF(C1 ‖ w ‖ IDB, klen) (SM3-baserad), delas i K1 (omslagsnyckel) och K2 (MAC-nyckel).
5. Maskering: C2 = meddelandet XOR:at med (eller krypterat under) K1; C3 = MAC(K2, C2). Chiffertexten paketerar C1, C3 och C2.
6. Bob, vid registreringen: KGC verifierar att Bob verkligen är bob@example.com och utfärdar deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Bob beräknar sedan w′ = e(C1, deB), bygger upp samma K, kontrollerar MAC:en och avmaskerar meddelandet.

Varför det fungerar: genom bilinjäritet gäller e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — exakt det värde Alice vek in i KDF:en. Det eleganta är steg 6: kryptering kräver ingen förregistrering. Alice kan försluta ett meddelande idag; Bob kan bara öppna det efter att ha bevisat identiteten för KGC. Uppskjuten nyckelgenerering är IBE:s signaturegenskap.

Hur SM9 identitetsbaserade signaturer (IBS) fungerar

Alice signerar ett meddelande M med sin signeringsnyckel dsA:

1. g = e(P1, Ppub-s); slumpmässigt r; w = gr.
2. h = H2(M ‖ w, N); l = (r − h) mod N (försök på nytt med ett nytt r om l = 0).
3. S = [l]dsA. Signaturen är paret (h, S).

Vem som helst som känner till Alices identitet verifierar signaturen utan något certifikat:

4. P = [H1(IDA ‖ hid, N)]P2 + Ppub-s; u = e(S, P); w′ = u · gh.
5. Signaturen är giltig exakt när H2(M ‖ w′, N) = h.

Bilinjäriteten sluter återigen loopen: u = e(P1,P2)l·ks och gh = e(P1,P2)ks·h, så w′ = e(P1,P2)ks·(l+h) = e(P1,P2)ks·r = w.

Identitetsbaserad kontra certifikatbaserad (IBE kontra PKI)

Detta är beslutet som faktiskt betyder något när SM9 väljs. Båda världarna ger publik-nyckel-kryptering och signaturer; de skiljer sig i var förtroendet bor:

AspektPKI / certifikat (SM2, RSA-världen)Identitetsbaserad (SM9)
Publik nyckel för bob@…Ett 65+ byte stort block inuti ett certifikat, hämtat från en katalog eller från mottagaren självSträngen bob@example.com själv; verifieraren beräknar nyckeln utifrån den
FörtroenderotEn CA-hierarki; varje kedja måste valideras upp till en rotEn KGC-huvudpublik nyckel för hela domänen
Kryptera innan mottagaren har en nyckel?Nej — giltigt certifikat krävs förstJa — kryptera nu; mottagaren registrerar sig och dekrypterar senare
Privat nyckel genererad avAnvändarens egen maskin eller enhet (lämnar ofta aldrig den)KGC, centralt, utifrån identiteten
Nyckelinlåsning (key escrow)Ingen per konstruktionInbyggd: KGC kan härleda varje användares privata nyckel
ÅterkallelseCRL:er / OCSP per certifikatIngen motsvarighet; vanlig praxis bäddar in giltighetsfönster i ID:t (t.ex. bob@example.com|2026) så att nycklar löper ut per konstruktion
Kostnad per operationVanlig ECC-aritmetik — snabbEn bilinjär parning — storleksordningar långsammare än en skalär multiplikation
StandarderX.509 / RFC 5280; SM2 enligt GB/T 32918GB/T 38635.1/.2-2020 (tidigare GM/T 0044-2016)
Naturlig miljöDet öppna internet: TLS, kodsignering, allmän PKISlutna ekosystem: ett bankmeddelandesystem, en myndighets e-post, flott-/enhetsidentitet — där en central auktoritet är acceptabel och registreringsfri kryptering lönar sig

Tumregel: SM9 ger certifikatfri nyckelhantering till priset av nyckelinlåsning och långsammare matematik. Om en tredje part som kan läsa allt eller förfalska vem som helst inte kan accepteras, stanna vid SM2-certifikat; om registreringsfri kryptering inom en organisation är målet är SM9 precis rätt verktyg.

SM9-systemparametrar (officiell 256-bitars BN-kurva)

Parameteruppsättningen från GB/T 38635.1-2020 (även i GM/T 0044.5-2017). Det här är skrivskyddade referensvärden — självtestet nedan kontrollerar på nytt varje konstant på sidan mot oberoende verifierade värden:

EgenskapVärde
KurvaBarreto–Naehrig (BN)-kurvan E: y2 = x3 + b över Fp, b = 05
Kurvparameter t60000000 0058F98A
Fältprimtal pB6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
Gruppordning NB6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
Parametriseringp = 36t4 + 36t3 + 24t2 + 6t + 1; N = 36t4 + 36t3 + 18t2 + 6t + 1
Kofaktor1
Inbäddningsgrad k12 (fälttornet Fp → Fp2 → Fp4 → Fp12)
ParningR-ate-parning e: G1 × G2 → GT, alla tre grupperna av ordning N
G1-generator P1 (på E)x = 93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD
y = 21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616
G2-generator P2 (på den vridna E′: y2 = x3 + 5·u över 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-element skrivna c0 + c1·u)
Hash / KDFH1, H2 och KDF bygger på SM3 (GB/T 32905-2016); hid är en en-byte funktionsidentifierare vald av KGC
Var SM9 hör hemma i SM-sviten
  • SM9 (denna sida) — nyckelhanteringens störande faktor: identiteter i stället för certifikat, KGC i stället för CA-hierarki.
  • SM3 — hashen; SM9:s H1/H2/KDF bygger på den. Beräkna sammandrag på SM3-sidan.
  • SM4 — blockchiffret som typiskt krypterar den bulkdata under nyckeln som SM9:s KDF producerar. Prova den på SM4-sidan.
  • SM2 — motsvarigheten i certifikatvärlden: samma uppgifter (signera, kryptera) med vanlig ECC och en PKI bakom. Fullständig räknare på SM2-sidan.
Efterlevnadsnotering: SM9 är ett val för sviteoberoende och nyckelhantering för reglerade kinesiska installationer, jämförbart i styrka med andra ~128-bitarssystem. Produktionsutrullningar måste behandla KGC:s huvudnyckel som det största värdet — vanligtvis hållen i en HSM, uppdelad mellan flera förvaltare, eller både och.
Vanliga missuppfattningar
  • "Identiteten är den publika nyckeln, så vem som helst kan dekryptera min post." Nej — vem som helst kan kryptera till identiteten och verifiera signaturer från den; endast innehavaren av den KGC-utfärdade privata nyckeln kan dekryptera eller signera. KGC kontrollerar vem Bob verkligen är innan deB lämnas ut.
  • Att ignorera nyckelinlåsning (key escrow). En komprometterad KGC-huvudnyckel innebär att angriparen tyst kan härleda varje användares privata nyckel — total avkryptering och total utgivning för domänen. Detta är avsiktligt (så fungerar identitetsbaserad kryptografi), inte en brist att patcha. Begränsa operativt: HSM, tröskelbaserad KGC uppdelad mellan enheter, strikta utfärdandeloggar.
  • Att anta att identitetssträngen är förlåtande. Den hashas byte för byte: Bob@Example.COM, bob@example.com och " bob@example.com" är tre olika publika nycklar med tre olika privata nycklar. Frys ett kanoniskt format före utrullningen — och överväg att lägga till ett giltighetsfönster för återkallelse.
  • "256-bitars kurva, alltså 256-bitars säkerhet." Parningsbaserad kryptografi skalar inte som vanlig ECC: attacker verkar i de enorma Fp12/Fp6-fälten där index-calculus-algoritmer (subexponentiella) är tillämpliga. Publicerade analyser placerar 256-bitars BN-kurvor kring säkerhetsklassen ~100–128 bitar, och forskare har föreslagit större BN-parametrar för SM9 (t.ex. "Searching BN Curves for SM9", 2019). Betrakta SM9 som ungefär AES-128-klass — solid, men inte ett 256-bitars fäste.
  • Att förvänta sig det i OpenSSL. OpenSSL implementerar SM2/SM3/SM4 men har ingen SM9. Fungerande öppna källkodsstackar inkluderar GmSSL och Bouncy Castle.
Vanliga frågor

Är SM9 en kinesisk uppfinning? Konceptet är det inte: Shamir föreslog identitetsbaserad kryptografi 1984, och Boneh–Franklin (2001) byggde den första praktiska parningsbaserade IBE. SM9 (GM/T 0044-2016, sedan GB/T 38635.1/.2-2020) är Kinas nationella standardimplementering av den släktlinjen.

Varför finns ingen SM9-räknare på den här sidan? Till skillnad från SM2/SM3/SM4 kräver SM9 en bilinjär parning: ett Fp12-utvidgningsfälttorn, en Miller-loop och en slutlig exponentiering — flera tusen rader noggrann stor-tal-kod. Den finns på familjens färdplan; tills dess dokumenterar denna sida algoritmen, och systersidorna beräknar resten av sviten i webbläsaren.

Kan SM9 ersätta SM2, SM3 och SM4? Nej — de löser olika problem. SM9 ersätter certifikatinfrastrukturen, inte primitiverna: internt förlitar den sig på SM3 för hashning och nyckelhärledning, och den inlindade bulknyckeln driver typiskt SM4. SM2 är fortfarande svaret när certifikatliknande ansvarsskyldighet utan nyckelinlåsning krävs.

Vad är egentligen hid? En en-byte funktionsidentifierare (vald och publicerad av KGC) som blandas in i varje H1-hash. Eftersom signeringsnycklar, krypteringsnycklar och nyckelutbytesnycklar hashar identiteten tillsammans med olika hid-värden, komprometterar en läckt användarnyckel endast den funktionen.

Hur återkallas identiteter? Det finns ingen CRL-mekanism inne i SM9. Standardpraxis: bädda in utgångsdatum i själva identiteten (bob@example.com|2026-Q4) så att nycklar måste utfärdas om periodiskt, och låt KGC helt enkelt sluta utfärda för återkallade identiteter.

Var används SM9 faktiskt? I reglerade kinesiska sektorer — bank, myndigheter och branschmeddelanden — typiskt inom slutna ekosystem där en auktoritet är acceptabel och "kryptera till en e-postadress idag, registrera användaren imorgon" är värt parningskostnaden.

Självtest
Det här är en skrivskyddad sida, så självtestet verifierar själva sidan: varje kurvkonstant som visas ovan kontrolleras på nytt mot oberoende verifierade värden (primtalet p och ordningen N räknas om från BN-parametriseringen, båda generatorerna kontrolleras att de ligger på kurvan med ordning N), standardnumren, mallinvarianterna (ingen DOCTYPE, byggmarkör), korslänkar och att FAQ-avsnittet finns.