SM9 identitetsbaseret kryptografi (IBC)

SM9 er det identitetsbaserede medlem af den kinesiske SM-pakke: enhver streng — en e-mailadresse, et telefonnummer, et enheds-serienummer — virker direkte som offentlig nøgle, og et Key Generation Centre udsteder de tilsvarende private nøgler. Dette er en skrivebeskyttet forklaringsside: hvordan IBE og IBS virker trin for trin, hvordan identitetsbaseret kryptografi sammenlignes med PKI-certifikater, og de officielle kurveparametre.
Lommeregner planlagt. En SM9-lommeregner i browseren er på køreplanen for kryptofamilien — parringsmaskineriet (Fp12-udvidelsesfeltetårnet, Miller-løkken, slutteksponentiering) er en kerne for sig selv. Indtil da beregner søstersiderne SM2, SM3 og SM4 fuldt ud i browseren.
Hvad er SM9?
I én sætning: SM9 er den kinesiske nationale standard for identitetsbaseret kryptografi (GB/T 38635.1/.2-2020, efterfølger til GM/T 0044-2016-serien): den offentlige nøgle er en identitetsstreng såsom bob@example.com, den tilsvarende private nøgle udstedes af et betroet Key Generation Centre (KGC), og matematikken, der gør det muligt, er en bilineær parring på en 256-bit BN-kurve.

Konventionel offentlig-nøgle-kryptografi (RSA, SM2, ECC) besvarer spørgsmålet "er dette virkelig Bobs nøgle?" med certifikater: et CA-hierarki bekræfter, at en bestemt tilfældig-udseende nøgleblok tilhører Bob. Identitetsbaseret kryptografi vender det om: navnet selv er nøglematerialet. Enhver, der kender Bobs e-mailadresse, kan kryptere til ham eller verificere hans signaturer uden at hente noget — ingen certifikatkatalog, ingen validering af tillidskæden. Prisen er en betroet tredjepart, der kan udlede hver private nøgle, og langt tungere matematik. SM9 er den standardiserede kinesiske implementering af den afvejning.

Rollerne: hvem der har hvad
RolleHvad det er
Identitet (ID)Enhver bytestreng, fx bob@example.com, brugt direkte som offentlig nøgle. Den skal være kanonisk: byte for byte, ingen to stavemåder af samme person.
KGCKey Generation Centre: holder hovedprivatnøglen, verificerer, hvem en identitet tilhører, og udsteder den tilsvarende brugerprivatnøgle.
HovednøgleparTo uafhængige par: signering (hemmelig ks, offentlig Ppub-s = [ks]P2) og kryptering (hemmelig ke, offentlig Ppub-e = [ke]P1). Bemærk den bevidste asymmetri: den ene hovedoffentlige ligger i G2, den anden i G1.
Brugerens private nøgleEt punkt på kurven, afledt af ID'et af KGC. Signeringsnøglen dsA ligger i G1; dekrypteringsnøglen deB ligger i G2.
hidEn etbytes funktionsidentifikator blandet ind i hver nøgleafledning, så én identitet giver kryptografisk uafhængige nøgler til signering, kryptering og nøgleudveksling.
H1, H2, KDFSM3-baserede hjælpefunktioner (GB/T 32905): hash-til-heltal-afbildninger og nøgleafledningsfunktionen.
Parring eR-ate-bilineær-parringen e: G1 × G2 → GT over 256-bit BN-kurven defineret nedenfor. Den algebraiske motor i hele skemaet.
Sådan virker SM9 identitetsbaseret kryptering (IBE)

Alice vil sende en hemmelighed til bob@example.com — muligvis før Bob nogensinde har tilmeldt sig hos KGC:

1. Alice udleder selv Bobs offentlige nøgle: QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Intet opslag i en katalog, intet certifikathentning — identitetsstrengen og den offentlige hovednøgle er alt, hun har brug for.
2. Midlertidig: tilfældig r; beregn punktet C1 = [r]QB.
3. Parring: g = e(Ppub-e, P2), derefter w = gr.
4. Nøgler: K = KDF(C1 ‖ w ‖ IDB, klen) (SM3-baseret), opdelt i K1 (indpakningsnøgle) og K2 (MAC-nøgle).
5. Maskering: C2 = beskeden XOR'et med (eller krypteret under) K1; C3 = MAC(K2, C2). Ciphertexten samler C1, C3 og C2.
6. Bob, når han tilmelder sig: KGC verificerer, at han virkelig er bob@example.com, og udsteder deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Han beregner derefter w′ = e(C1, deB), genskaber den samme K, kontrollerer MAC'en og demaskerer beskeden.

Hvorfor det virker: ved bilinearitet er e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — præcis den værdi, Alice foldede ind i KDF'en. Det elegante er trin 6: kryptering kræver ingen forudgående tilmelding. Alice kan forsegle en besked i dag; Bob kan kun åbne den, efter at have bevist sin identitet over for KGC. Udskudt nøglegenerering er IBE's særlige egenskab.

Sådan virker SM9 identitetsbaserede signaturer (IBS)

Alice signerer en besked M med sin signeringsnøgle dsA:

1. g = e(P1, Ppub-s); tilfældig r; w = gr.
2. h = H2(M ‖ w, N); l = (r − h) mod N (forsøg igen med en frisk r, hvis l = 0).
3. S = [l]dsA. Signaturen er parret (h, S).

Enhver, der kender Alices identitet, verificerer den uden noget certifikat:

4. P = [H1(IDA ‖ hid, N)]P2 + Ppub-s; u = e(S, P); w′ = u · gh.
5. Signaturen er gyldig præcis når H2(M ‖ w′, N) = h.

Bilineariteten lukker sløjfen igen: u = e(P1,P2)l·ks og gh = e(P1,P2)ks·h, så w′ = e(P1,P2)ks·(l+h) = e(P1,P2)ks·r = w.

Identitetsbaseret kontra certifikatbaseret (IBE kontra PKI)

Dette er beslutningen, der faktisk betyder noget, når man vælger SM9. Begge verdener giver offentlig-nøgle-kryptering og signaturer; de adskiller sig i hvor tilliden ligger:

EgenskabPKI / certifikater (SM2, RSA-verdenen)Identitetsbaseret (SM9)
Offentlig nøgle for bob@…En 65+ byte blob inde i et certifikat, hentet fra en katalog eller fra modtageren selvSelve strengen bob@example.com; verifikatoren beregner nøglen ud fra den
TillidsrodEt CA-hierarki; hver kæde skal valideres op til en rodÉn KGC-hovedoffentlignøgle for hele domænet
Kryptér, før modtageren har en nøgle?Nej — han skal først have sit gyldige certifikatJa — krypter nu; han tilmelder sig og dekrypterer senere
Privat nøgle genereret afBrugerens egen maskine eller enhed (forlader ofte aldrig den)KGC, centralt, ud fra identiteten
Nøgle-escrowIngen ved designIboende: KGC kan udlede hver brugers private nøgle
TilbagekaldelseCRL'er / OCSP pr. certifikatIngen tilsvarende; almindelig praksis indlejrer gyldighedsvinduer i ID'et (fx bob@example.com|2026), så nøgler udløber konstruktionsmæssigt
Omkostning pr. operationAlmindelig ECC-aritmetik — hurtigEn bilineær parring — størrelsesordener langsommere end en skalarmultiplikation
StandarderX.509 / RFC 5280; SM2 under GB/T 32918GB/T 38635.1/.2-2020 (tidligere GM/T 0044-2016)
Naturligt habitatÅbent internet: TLS, kodesignering, almindelig PKILukkede økosystemer: én banks beskedtjeneste, ét agenturs e-mail, flåde-/enhedsidentitet — hvor en central myndighed er acceptabel, og tilmeldingsfri kryptering betaler sig

Tommelfingerregel: SM9 giver certifikatfri nøglehåndtering til prisen af nøgle-escrow og langsommere matematik. Kan man ikke acceptere en tredjepart, der kan læse alt eller forfalske hvem som helst, bliv ved SM2-certifikater; er det målet med tilmeldingsfri kryptering inden for én organisation, er SM9 præcis det værktøj.

SM9-systemparametre (officiel 256-bit BN-kurve)

Parametersættet fra GB/T 38635.1-2020 (også i GM/T 0044.5-2017). Det er skrivebeskyttede referenceværdier — selvtesten nedenfor kontrollerer hver konstant på denne side mod uafhængigt verificerede værdier:

PostVærdi
KurveBarreto–Naehrig (BN)-kurve E: y2 = x3 + b over Fp, b = 05
Kurveparameter t60000000 0058F98A
Feltprimtal pB6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
Gruppeorden NB6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
Parametriseringp = 36t4 + 36t3 + 24t2 + 6t + 1; N = 36t4 + 36t3 + 18t2 + 6t + 1
Kofaktor1
Indlejringsgrad k12 (feltetårn Fp → Fp2 → Fp4 → Fp12)
ParringR-ate-parring e: G1 × G2 → GT, alle tre grupper af orden 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å tvillingen E′: y2 = x3 + 5·u over 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-elementer skrevet c0 + c1·u)
Hash / KDFH1, H2 og KDF er bygget på SM3 (GB/T 32905-2016); hid er en etbytes funktionsidentifikator valgt af KGC
Hvor SM9 placerer sig i SM-pakken
  • SM9 (denne side) — nøglehåndteringens forstyrrer: identiteter i stedet for certifikater, KGC i stedet for en CA-hierarki.
  • SM3 — hashen; SM9's H1/H2/KDF er bygget på den. Beregn digests på SM3-siden.
  • SM4 — blokchifferet, der typisk krypterer de store datamængder under nøglen, SM9's KDF producerer. Prøv det på SM4-siden.
  • SM2 — modstykket i certifikatverdenen: de samme opgaver (signér, kryptér) med almindelig ECC og en PKI bag. Fuld lommeregner på SM2-siden.
Overensstemmelsesnote: SM9 er et valg af pakke-uafhængighed og nøglehåndtering til regulerede kinesiske installationer, sammenlignelig i styrke med andre ~128-bit-systemer. Produktionsudrulninger skal behandle KGC'ens hovednøgle som kronjuvelen — typisk holdt i en HSM, delt mellem flere betroede parter, eller begge dele.
Almindelige misforståelser
  • "Identiteten er den offentlige nøgle, så hvem som helst kan dekryptere min post." Nej — enhver kan kryptere til identiteten og verificere signaturer fra den; kun indehaveren af den KGC-udstedte private nøgle kan dekryptere eller signere. KGC kontrollerer, hvem Bob virkelig er, før den udleverer deB.
  • At ignorere nøgle-escrow. En kompromitteret KGC-hovednøgle betyder, at angriberen stille kan udlede hver brugers private nøgle — total dekryptering og total udgivelse for domænet. Det er med vilje (det er sådan identitetsbaseret kryptografi virker), ikke en fejl, der skal rettes. Afbødes operationelt: HSM, tærskel-KGC delt mellem enheder, strenge udstedelseslogs.
  • At antage, at identitetsstrengen er tilgivende. Den hashes byte for byte: Bob@Example.COM, bob@example.com og " bob@example.com" er tre forskellige offentlige nøgler med tre forskellige private nøgler. Frys ét kanonisk format før udrulning — og overvej at tilføje et gyldighedsvindue til tilbagekaldelse.
  • "256-bit kurve, altså 256-bit sikkerhed." Parringsbaseret kryptografi skalerer ikke som almindelig ECC: angreb virker i de enorme Fp12/Fp6-felter, hvor indeksberegnings-(subeksponentielle) algoritmer gælder. Offentliggjorte analyser placerer 256-bit BN-kurver omkring ~100–128-bit sikkerhedsklassen, og forskere har foreslået større BN-parametre for SM9 (fx "Searching BN Curves for SM9", 2019). Behandl SM9 som nogenlunde AES-128-klassen — solid, men ikke en 256-bit fæstning.
  • At forvente det i OpenSSL. OpenSSL implementerer SM2/SM3/SM4, men har ingen SM9. Fungerende open source-stakke inkluderer GmSSL og Bouncy Castle.
Ofte stillede spørgsmål

Er SM9 en kinesisk opfindelse? Konceptet er ikke det: Shamir foreslog identitetsbaseret kryptografi i 1984, og Boneh–Franklin (2001) byggede den første praktiske parringsbaserede IBE. SM9 (GM/T 0044-2016, derefter GB/T 38635.1/.2-2020) er Kinas nationalstandardiserede implementering af den linje.

Hvorfor er der ingen SM9-lommeregner på denne side? I modsætning til SM2/SM3/SM4 kræver SM9 en bilineær parring: et Fp12-udvidelsesfeltetårn, en Miller-løkke og en slutteksponentiering — flere tusinde linjer omhyggelig stor-tal-kode. Det er på køreplanen for familien; indtil da dokumenterer denne side algoritmen, og søstersiderne beregner resten af pakken i browseren.

Kan SM9 erstatte SM2, SM3 og SM4? Nej — de løser forskellige problemer. SM9 erstatter certifikatinfrastrukturen, ikke primitiverne: internt bygger den på SM3 til hashing og nøgleafledning, og den indpakkede datanøgle driver typisk SM4. SM2 er stadig svaret, når certifikatlignende ansvarlighed uden nøgle-escrow kræves.

Hvad er hid præcis? En etbytes funktionsidentifikator (valgt og offentliggjort af KGC), der blandes ind i hver H1-hash. Fordi signeringsnøgler, krypteringsnøgler og nøgleudvekslingsnøgler hasher identiteten sammen med forskellige hid-værdier, kompromitterer én lækket brugernøgle kun den ene funktion.

Hvordan tilbagekaldes identiteter? Der findes ingen CRL-mekanisme inde i SM9. Standardpraksis: indlejr udløb i selve identiteten (bob@example.com|2026-Q4), så nøgler skal udstedes igen periodisk, og lad KGC blot holde op med at udstede til tilbagekaldte identiteter.

Hvor bruges SM9 faktisk? I regulerede kinesiske sektorer — bank, stat og brancheformidling — typisk inde i lukkede økosystemer, hvor én myndighed er acceptabel, og "krypter til en e-mailadresse i dag, tilmeld brugeren i morgen" er omkostningen ved parringen værd.

Selvtest
Dette er en skrivebeskyttet side, så selvtesten verificerer selve siden: hver kurvekonstant vist ovenfor kontrolleres mod uafhængigt verificerede værdier (primtallet p og orden N genberegnet ud fra BN-parametriseringen, begge generatorer kontrolleret på kurven med orden N), standardnumrene, skabelonens invarianter (ingen DOCTYPE, build-markør), krydslinks og tilstedeværelsen af FAQ.