SM9 identitetsbasert kryptografi (IBC)

SM9 er det identitetsbaserte medlemmet i den kinesiske SM-pakken: en hvilken som helst streng — en e-postadresse, et telefonnummer, et enhetsserienummer — fungerer direkte som offentlig nøkkel, og et nøkkelgenereringssenter utsteder de tilhørende private nøklene. Dette er en skrivebeskyttet forklaringsside: hvordan IBE og IBS fungerer steg for steg, hvordan identitetsbasert kryptografi sammenlignes med PKI-sertifikater, og de offisielle kurveparametrene.
Kalkulator planlagt. En SM9-kalkulator i nettleseren står på veikartet for kryptofamilien — paringsmaskineriet (utvidelsesfelt-tårnet Fp12, Miller-løkken, endelig eksponentiering) er en kjerne for seg selv. I mellomtiden beregner søskensidene SM2, SM3 og SM4 fullt ut i nettleseren.
Hva er SM9?
Kort fortalt: SM9 er den kinesiske nasjonale standarden for identitetsbasert kryptografi (GB/T 38635.1/.2-2020, etterfølger til GM/T 0044-2016-serien): den offentlige nøkkelen er en identitetsstreng som bob@example.com, den tilhørende private nøkkelen utstedes av et betrodd nøkkelgenereringssenter (KGC), og matematikken som gjør dette mulig, er en bilineær paring på en 256-bit BN-kurve.

Konvensjonell offentlig-nøkkel-kryptografi (RSA, SM2, ECC) besvarer spørsmålet «er dette virkelig Bobs nøkkel?» med sertifikater: et CA-hierarki bekrefter at en bestemt tilfeldig utseende nøkkelklump tilhører Bob. Identitetsbasert kryptografi snur dette: navnet selv er nøkkelmaterialet. Hvem som helst som kjenner Bobs e-postadresse kan kryptere til ham eller verifisere signaturene hans uten å hente noe — ingen sertifikatkatalog, ingen validering av tillitskjeden. Prisen er en betrodd tredjepart som kan avlede hver private nøkkel, og mye tyngre matematikk. SM9 er den standardiserte kinesiske utgaven av den avveiningen.

Rollene: hvem som har hva
RolleHva det er
Identitet (ID)En hvilken som helst byte-streng, f.eks. bob@example.com, brukt direkte som offentlig nøkkel. Den må være kanonisk: byte for byte, ingen to skrivemåter for samme person.
KGCNøkkelgenereringssenter: holder hovedprivatnøkkelen, verifiserer hvem en identitet tilhører, og utsteder den tilhørende brukerens private nøkkel.
HovednøkkelparTo uavhengige par: signering (hemmelig ks, offentlig Ppub-s = [ks]P2) og kryptering (hemmelig ke, offentlig Ppub-e = [ke]P1). Legg merke til den bevisste asymmetrien: én hovedoffentlig nøkkel ligger i G2, den andre i G1.
Brukerens private nøkkelEt punkt på kurven, avledet fra ID-en av KGC. Signeringsnøkkelen dsA ligger i G1; dekrypteringsnøkkelen deB ligger i G2.
hidEn én-byte funksjonsidentifikator blandet inn i hver nøkkelavledning, slik at én identitet gir kryptografisk uavhengige nøkler for signering, kryptering og nøkkelutveksling.
H1, H2, KDFSM3-baserte hjelpefunksjoner (GB/T 32905): hash-til-heltall-avbildninger og nøkkelavledningsfunksjonen.
Paring eR-ate-den bilineære paringen e: G1 × G2 → GT over 256-bit BN-kurven definert under. Den algebraiske motoren i hele ordningen.
Slik fungerer SM9 identitetsbasert kryptering (IBE)

Alice vil sende en hemmelighet til bob@example.com — kanskje før Bob noensinne har registrert seg hos KGC:

1. Alice avleder selv Bobs offentlige nøkkel: QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Ingen katalogoppslag, ingen sertifikathenting — identitetsstrengen og den offentlige hovednøkkelen er alt som trengs.
2. Midlertidig: tilfeldig r; beregn punktet C1 = [r]QB.
3. Parring: g = e(Ppub-e, P2), deretter w = gr.
4. Nøkler: K = KDF(C1 ‖ w ‖ IDB, klen) (SM3-basert), delt i K1 (innpakningsnøkkel) og K2 (MAC-nøkkel).
5. Maskering: C2 = meldingen XOR-et med (eller kryptert under) K1; C3 = MAC(K2, C2). Chifferteksten samler C1, C3 og C2.
6. Bob, når Bob registrerer seg: KGC verifiserer at Bob virkelig er bob@example.com og utsteder deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Bob beregner deretter w′ = e(C1, deB), gjenskaper den samme K, kontrollerer MAC-en og låser opp meldingen.

Hvorfor det fungerer: ved bilinearitet er e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — nøyaktig verdien Alice foldet inn i KDF-en. Det elegante er steg 6: kryptering krever ingen forhåndsregistrering. Alice kan forsegle en melding i dag; Bob kan bare åpne den etter å ha bevist identiteten overfor KGC. Utsatt nøkkelgenerering er signaturtrekket til IBE.

Slik fungerer SM9 identitetsbaserte signaturer (IBS)

Alice signerer en melding M med sin signeringsnøkkel dsA:

1. g = e(P1, Ppub-s); tilfeldig r; w = gr.
2. h = H2(M ‖ w, N); l = (r − h) mod N (prøv på nytt med en ny r hvis l = 0).
3. S = [l]dsA. Signaturen er paret (h, S).

Hvem som helst som kjenner Alices identitet, verifiserer den uten noe sertifikat:

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

Igjen lukker bilinearitet sløyfen: 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.

Identitetsbasert vs sertifikatbasert (IBE vs PKI)

Dette er avgjørelsen som faktisk betyr noe når man velger SM9. Begge verdener gir offentlig-nøkkel-kryptering og signaturer; de skiller seg i hvor tilliten ligger:

AspektPKI / sertifikater (SM2, RSA-verdenen)Identitetsbasert (SM9)
Offentlig nøkkel for bob@…En 65+ byte stor klump inne i et sertifikat, hentet fra en katalog eller fra mottakeren selvSelve strengen bob@example.com; verifisereren beregner nøkkelen fra den
TillitsrotEt CA-hierarki; hver kjede må valideres helt opp til en rotÉn KGC-hovedoffentlig nøkkel for hele domenet
Kryptere før mottakeren har en nøkkel?Nei — man trenger først et gyldig sertifikatJa — krypter nå; mottakeren registrerer seg og dekrypterer senere
Privat nøkkel generert avBrukerens egen maskin eller enhet (forlater ofte aldri den)KGC, sentralt, fra identiteten
Nøkkelbeslag (key escrow)Ingen, med viljeIboende: KGC kan avlede hver brukers private nøkkel
TilbakekallingCRL-er / OCSP per sertifikatIngen tilsvarende; vanlig praksis legger gyldighetsvinduer inn i ID-en (f.eks. bob@example.com|2026) slik at nøklene utløper av konstruksjon
Kostnad per operasjonVanlig ECC-aritmetikk — raskEn bilineær paring — størrelsesordener tregere enn en skalarmultiplikasjon
StandarderX.509 / RFC 5280; SM2 under GB/T 32918GB/T 38635.1/.2-2020 (tidligere GM/T 0044-2016)
Naturlig habitatÅpent internett: TLS, kodesignering, generell PKILukkede økosystemer: ett banks meldingstjeneste, én etats e-post, flåte-/enhetsidentitet — der en sentral myndighet er akseptabel og registreringsfri kryptering lønner seg

Tommelfingerregel: SM9 gir sertifikatfri nøkkelhåndtering til prisen av nøkkelbeslag og tregere matematikk. Hvis man ikke kan akseptere en tredjepart som kan lese alt eller forfalske hvem som helst, bør man bli med SM2-sertifikater; er målet registreringsfri kryptering innenfor én organisasjon, er SM9 nettopp det verktøyet.

SM9-systemparametere (offisiell 256-bit BN-kurve)

Parametersettet fra GB/T 38635.1-2020 (også i GM/T 0044.5-2017). Dette er skrivebeskyttede referanseverdier — selvtesten nedenfor sjekker på nytt hver konstant på denne siden mot uavhengig verifiserte verdier:

ElementVerdi
KurveBarreto–Naehrig (BN)-kurve E: y2 = x3 + b over Fp, b = 05
Kurveparameter t60000000 0058F98A
Feltprimtall 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
Innbeddingsgrad k12 (feltetårn Fp → Fp2 → Fp4 → Fp12)
ParingR-ate-paring e: G1 × G2 → GT, alle tre gruppene av 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å tvillingkurven 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 én-byte funksjonsidentifikator valgt av KGC
Hvor SM9 passer inn i SM-pakken
  • SM9 (denne siden) — nøkkelhåndteringens disruptor: identiteter i stedet for sertifikater, KGC i stedet for CA-hierarki.
  • SM3 — hashen; SM9s H1/H2/KDF er bygget på den. Beregn digester på SM3-siden.
  • SM4 — blokkchifferen som typisk krypterer massedataene under nøkkelen SM9s KDF produserer. Prøv den på SM4-siden.
  • SM2 — motstykket i sertifikatverdenen: de samme oppgavene (signere, kryptere) med vanlig ECC og en PKI bak. Full kalkulator på SM2-siden.
Merknad om samsvar: SM9 er et valg om suiteuavhengighet og nøkkelhåndtering for regulerte kinesiske installasjoner, sammenlignbar i styrke med andre ~128-bit-systemer. Produksjonsutrullinger må behandle hovednøkkelen til KGC som familiens kronjuvel — typisk holdt i en HSM, delt mellom flere forvaltere, eller begge deler.
Vanlige misforståelser
  • «Identiteten er den offentlige nøkkelen, så hvem som helst kan dekryptere e-posten min.» Nei — hvem som helst kan kryptere til identiteten og verifisere signaturer fra den; bare innehaveren av den KGC-utstedte private nøkkelen kan dekryptere eller signere. KGC sjekker hvem Bob virkelig er før deB utleveres.
  • Å ignorere nøkkelbeslag (key escrow). En kompromittert hovednøkkel i KGC betyr at angriperen stille kan avlede hver brukers private nøkkel — total dekryptering og total utgivelse for domenet. Dette er med vilje (slik identitetsbasert kryptografi fungerer), ikke en feil som skal lappes. Reduser risikoen operasjonelt: HSM, terskel-KGC delt mellom enheter, strenge revisjonslogger for utstedelse.
  • Å anta at identitetsstrengen er tilgivende. Den hashes byte for byte: Bob@Example.COM, bob@example.com og " bob@example.com" er tre ulike offentlige nøkler med tre ulike private nøkler. Frys ett kanonisk format før utrulling — og vurder å legge til et gyldighetsvindu for tilbakekalling.
  • «256-bit-kurve, altså 256-bit sikkerhet.» Paringsbasert kryptografi skalerer ikke som vanlig ECC: angrep fungerer i de enorme Fp12/Fp6-feltene der indeksberegning (subeksponentielle) algoritmer gjelder. Publiserte analyser plasserer 256-bit BN-kurver rundt sikkerhetsklassen ~100–128 bit, og forskere har foreslått større BN-parametere for SM9 (f.eks. «Searching BN Curves for SM9», 2019). Behandle SM9 som omtrent AES-128-klassen — solid, men ikke en 256-bit festning.
  • Å forvente det i OpenSSL. OpenSSL implementerer SM2/SM3/SM4, men har ingen SM9. Fungerende åpen kildekode-stakker inkluderer GmSSL og Bouncy Castle.
Ofte stilte spørsmål

Er SM9 en kinesisk oppfinnelse? Konseptet er det ikke: Shamir foreslo identitetsbasert kryptografi i 1984, og Boneh–Franklin (2001) bygget den første praktiske paringsbaserte IBE. SM9 (GM/T 0044-2016, deretter GB/T 38635.1/.2-2020) er Kinas nasjonale standardiserte utgave av denne linjen.

Hvorfor finnes det ingen SM9-kalkulator på denne siden? I motsetning til SM2/SM3/SM4 trenger SM9 en bilineær paring: et Fp12-utvidelsesfelt-tårn, en Miller-løkke og en endelig eksponentiering — flere tusen linjer nøye tallkode. Den står på veikartet for familien; inntil da dokumenterer denne siden algoritmen, og søskensidene beregner resten av pakken i nettleseren.

Kan SM9 erstatte SM2, SM3 og SM4? Nei — de løser ulike problemer. SM9 erstatter sertifikatinfrastrukturen, ikke primitivene: internt er den avhengig av SM3 for hashing og nøkkelavledning, og den innpakkede massenøkkelen styrer typisk SM4. SM2 er fortsatt svaret når sertifikatlignende ansvarlighet uten nøkkelbeslag kreves.

Hva er egentlig hid? En én-byte funksjonsidentifikator (valgt og publisert av KGC) som blandes inn i hver H1-hash. Fordi signeringsnøkler, krypteringsnøkler og nøkkelutvekslingsnøkler hasher identiteten sammen med ulike hid-verdier, kompromitterer én lekket brukernøkkel bare den ene funksjonen.

Hvordan tilbakekalles identiteter? Det finnes ingen CRL-mekanisme i SM9. Vanlig praksis: bygg utløpsdato inn i selve identiteten (bob@example.com|2026-Q4) slik at nøklene må utstedes på nytt med jevne mellomrom, og la KGC ganske enkelt slutte å utstede for tilbakekalte identiteter.

Hvor brukes SM9 egentlig? I regulerte kinesiske sektorer — bank, offentlig forvaltning og industrimeldinger — typisk i lukkede økosystemer der én myndighet er akseptabel, og «krypter til en e-postadresse i dag, registrer brukeren i morgen» er verdt paringskostnaden.

Selvtest
Dette er en skrivebeskyttet side, så selvtesten verifiserer selve siden: hver kurvekonstant som vises ovenfor sjekkes på nytt mot uavhengig verifiserte verdier (primtallet p og orden N beregnet på nytt fra BN-parametriseringen, begge generatorene kontrollert på kurven med orden N), standardnumrene, malinvariantene (ingen DOCTYPE, byggemarkør), kryssreferanser og tilstedeværelse av FAQ.