Kryptografie založená na identitě SM9 (IBC)

SM9 je člen sady SM založený na identitě: libovolný řetězec — e-mailová adresa, telefonní číslo, sériové číslo zařízení — funguje přímo jako veřejný klíč a Key Generation Centre vydává odpovídající soukromé klíče. Tato stránka je čistě vysvětlující: jak IBE a IBS fungují krok za krokem, jak se kryptografie založená na identitě srovnává s certifikáty PKI a oficiální parametry křivky.
Kalkulačka je plánovaná. Kalkulačka SM9 v prohlížeči je na plánu kryptografické rodiny — mechanika párování (rozšíření polí Fp12, Millerova smyčka, finální exponenciace) je samostatné jádro. Mezitím sourozenecké stránky počítají SM2, SM3 a SM4 plně ve vašem prohlížeči.
Co je SM9?
Stručně: SM9 je čínská národní norma pro kryptografii založenou na identitě (GB/T 38635.1/.2-2020, nástupce řady GM/T 0044-2016): veřejný klíč je řetězec identity, například bob@example.com, odpovídající soukromý klíč vydává důvěryhodné Key Generation Centre (KGC) a matematika, která to umožňuje, je bilineární párování na 256bitové křivce BN.

Konvenční kryptografie s veřejným klíčem (RSA, SM2, ECC) odpovídá na otázku „je to opravdu Bobův klíč?“ certifikáty: hierarchie CA potvrzuje, že určitý náhodně vypadající blob klíče patří Bobovi. Kryptografie založená na identitě to obrací: samotné jméno je materiál klíče. Kdokoli, kdo zná Bobovu e-mailovou adresu, mu může šifrovat nebo ověřovat podpisy bez stahování čehokoli — žádný adresář certifikátů, žádná validace řetězce důvěry. Cenou je důvěryhodná třetí strana, která může odvodit každý soukromý klíč, a mnohem těžší matematika. SM9 je standardizovaná čínská realizace tohoto kompromisu.

Obsazení: kdo co drží
RoleCo to je
Identita (ID)Libovolný řetězec bajtů, např. bob@example.com, použitý přímo jako veřejný klíč. Musí být kanonický: přesný bajt po bajtu, žádné dva zápisy téže osoby.
KGCKey Generation Centre: drží hlavní soukromý klíč, ověřuje, komu identita patří, a vydává odpovídající soukromý klíč uživatele.
Páry hlavních klíčůDva nezávislé páry: podepisování (tajný ks, veřejný Ppub-s = [ks]P2) a šifrování (tajný ke, veřejný Ppub-e = [ke]P1). Všimněte si záměrné asymetrie: jeden hlavní veřejný klíč žije v G2, druhý v G1.
Soukromý klíč uživateleBod na křivce odvozený z ID pomocí KGC. Podpisový klíč dsA žije v G1; dešifrovací klíč deB žije v G2.
hidJednobajtový identifikátor funkce mísený do každého odvození klíče, takže jedna identita dává kryptograficky nezávislé klíče pro podepisování, šifrování a výměnu klíčů.
H1, H2, KDFPomocné funkce založené na SM3 (GB/T 32905): mapování hash-to-integer a funkce pro odvození klíče.
Párování ePárování R-ate e: G1 × G2 → GT nad 256bitovou křivkou BN definovanou níže. Algebraický motor celého schématu.
Jak funguje šifrování založené na identitě SM9 (IBE)

Alice chce poslat tajnou zprávu bob@example.com — případně dříve, než se Bob kdy zaregistroval u KGC:

1. Alice si odvodí veřejný klíč Boba sama: QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Žádné vyhledávání v adresáři, žádné stahování certifikátu — potřebuje jen řetězec identity a veřejný hlavní klíč.
2. Efemérní část: náhodné r; vypočtěte bod C1 = [r]QB.
3. Párování: g = e(Ppub-e, P2), pak w = gr.
4. Klíče: K = KDF(C1 ‖ w ‖ IDB, klen) (na SM3), rozdělené na K1 (obalovací klíč) a K2 (klíč MAC).
5. Maska: C2 = zpráva XOR s (nebo šifrovaná pod) K1; C3 = MAC(K2, C2). Šifrotext spojuje C1, C3 a C2.
6. Bob, kdykoli se zaregistruje: KGC ověří, že je skutečně bob@example.com, a vydá deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Potom vypočte w′ = e(C1, deB), sestaví stejné K, ověří MAC a odmaskuje zprávu.

Proč to funguje: díky bilinearitě e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — přesně ta hodnota, kterou Alice zahrnula do KDF. Elegantní část je krok 6: šifrování nevyžaduje předchozí registraci. Alice může zprávu zapečetit dnes; Bob ji může otevřít až poté, co prokáže identitu KGC. Odložené generování klíčů je znakem IBE.

Jak fungují podpisy založené na identitě SM9 (IBS)

Alice podepisuje zprávu M svým podpisovým klíčem dsA:

1. g = e(P1, Ppub-s); náhodné r; w = gr.
2. h = H2(M ‖ w, N); l = (r − h) mod N (při l = 0 opakujte s novým r).
3. S = [l]dsA. Podpis je dvojice (h, S).

Kdokoli, kdo zná identitu Alice, ji ověří bez jakéhokoli certifikátu:

4. P = [H1(IDA ‖ hid, N)]P2 + Ppub-s; u = e(S, P); w′ = u · gh.
5. Podpis je platný právě tehdy, když H2(M ‖ w′, N) = h.

Bilinearita opět uzavírá smyčku: u = e(P1,P2)l·ks a gh = e(P1,P2)ks·h, takže w′ = e(P1,P2)ks·(l+h) = e(P1,P2)ks·r = w.

Založené na identitě vs na certifikátech (IBE vs PKI)

Toto je rozhodnutí, na kterém při výběru SM9 skutečně záleží. Oba světy vám dávají šifrování s veřejným klíčem a podpisy; liší se v tom, kde leží důvěra:

AspektPKI / certifikáty (svět SM2, RSA)Založené na identitě (SM9)
Veřejný klíč bob@…Blob 65+ bajtů uvnitř certifikátu, stažený z adresáře nebo od příjemce samotnéhoSamotný řetězec bob@example.com; ověřovatel z něj klíč vypočítá
Kořen důvěryHierarchie CA; každý řetězec musí být ověřen až ke kořeniJeden hlavní veřejný klíč KGC pro celou doménu
Šifrovat dříve, než příjemce má klíč?Ne — nejprve potřebujete jeho platný certifikátAno — zašifrujte nyní; on se zaregistruje a dešifruje později
Soukromý klíč vygenerovalVlastní počítač nebo zařízení uživatele (často ho nikdy neopustí)KGC centrálně, z identity
Úschova klíčůZáměrně žádnéVlastně: KGC může odvodit soukromý klíč každého uživatele
OdvoláníCRL / OCSP na certifikátŽádný ekvivalent; běžná praxe vkládá platnost do ID (např. bob@example.com|2026), takže klíče expirují již svou konstrukcí
Cena na operaciProstá aritmetika ECC — rychláBilineární párování — řády pomalejší než skalární násobení
NormyX.509 / RFC 5280; SM2 podle GB/T 32918GB/T 38635.1/.2-2020 (dříve GM/T 0044-2016)
Přirozené prostředíOtevřený internet: TLS, podepisování kódu, obecná PKIUzavřené ekosystémy: messaging jedné banky, e-mail jednoho úřadu, identita zařízení/flotily — kde je přijatelný centrální úřad a šifrování bez registrace se vyplatí

Pravidlo palce: SM9 nabízí správu klíčů bez certifikátů za cenu úschovy klíčů a pomalejší matematiky. Pokud nemůžete přijmout třetí stranu, která umí číst vše nebo se vydávat za kohokoli, zůstaňte u certifikátů SM2; pokud je cílem šifrování bez registrace uvnitř jedné organizace, SM9 je přesně ten nástroj.

Systémové parametry SM9 (oficiální 256bitová křivka BN)

Sada parametrů z GB/T 38635.1-2020 (také v GM/T 0044.5-2017). Jsou to referenční hodnoty pouze pro čtení — autotest níže znovu ověří každou konstantu na této stránce proti nezávisle ověřeným hodnotám:

PoložkaHodnota
KřivkaBarretova–Naehrigova (BN) křivka E: y2 = x3 + b nad Fp, b = 05
Parametr křivky t60000000 0058F98A
Prvočíslo pole pB6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
Řád grupy NB6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
Parametrizacep = 36t4 + 36t3 + 24t2 + 6t + 1; N = 36t4 + 36t3 + 18t2 + 6t + 1
Kofaktor1
Vnořovací stupeň k12 (věž polí Fp → Fp2 → Fp4 → Fp12)
PárováníPárování R-ate e: G1 × G2 → GT, všechny tři grupy řádu N
Generátor G1 P1 (na E)x = 93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD
y = 21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616
Generátor G2 P2 (na kroucené křivce E′: y2 = x3 + 5·u nad 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
(prvky Fp2 zapsané c0 + c1·u)
Hash / KDFH1, H2 a KDF jsou postaveny na SM3 (GB/T 32905-2016); hid je jednobajtový identifikátor funkce zvolený KGC
Kde SM9 sedí v sadě SM
  • SM9 (tato stránka) — disruptor správy klíčů: identity místo certifikátů, KGC místo hierarchie CA.
  • SM3 — hash; H1/H2/KDF SM9 jsou na něm postavené. Otisky počítejte na stránce SM3.
  • SM4 — blokovou šifru, která typicky šifruje hromadná data pod klíčem, který produkuje KDF SM9. Vyzkoušejte ji na stránce SM4.
  • SM2 — protějšek ze světa certifikátů: stejné úlohy (podepisování, šifrování) s běžnou ECC a PKI za ním. Úplná kalkulačka na stránce SM2.
Poznámka k souladu: SM9 je volba nezávislosti sady a správy klíčů pro regulovaná čínská nasazení, srovnatelná silou s jinými systémy kolem 128 bitů. Produkční nasazení musí s hlavním klíčem KGC zacházet jako s nejcennějším majetkem — typicky je drží HSM, rozdělený mezi několik správců, nebo obojí.
Časté omyly
  • „Identita je veřejný klíč, takže kdokoli může číst mou poštu.“ Ne — kdokoli může šifrovat pro identitu a ověřovat podpisy z ní; pouze držitel soukromého klíče vydaného KGC může dešifrovat nebo podepisovat. KGC před vydáním deB ověří, kdo Bob skutečně je.
  • Ignorování úschovy klíčů. Kompromitovaný hlavní klíč KGC znamená, že útočník může tiše odvodit soukromé klíče každého uživatele — úplné dešifrování a úplné vydávání se za kohokoli v doméně. Je to záměrné (tak kryptografie založená na identitě funguje), ne chyba k záplatování. Zmírněte to provozně: HSM, prahové KGC rozdělené mezi subjekty, přísné auditní logy vydávání.
  • Předpoklad, že řetězec identity je shovívavý. Hashuje se bajt po bajtu: Bob@Example.COM, bob@example.com a " bob@example.com" jsou tři různé veřejné klíče se třemi různými soukromými klíči. Před nasazením zmrazte jeden kanonický formát — a zvažte připojení platnosti kvůli odvolání.
  • „256bitová křivka, tedy 256bitová bezpečnost.“ Kryptografie založená na párování se neškáluje jako prostá ECC: útoky pracují v obrovských polích Fp12/Fp6, kde platí algoritmy index-calculus (subexponenciální). Publikované analýzy zařazují 256bitové křivky BN zhruba do třídy 100–128 bitů bezpečnosti a výzkumníci navrhli větší parametry BN pro SM9 (např. „Searching BN Curves for SM9“, 2019). S SM9 zacházejte přibližně jako s AES-128 — solidní, ale ne 256bitová pevnost.
  • Očekávání, že to bude v OpenSSL. OpenSSL implementuje SM2/SM3/SM4, ale SM9 nemá. Funkční open-source zásobníky zahrnují GmSSL a Bouncy Castle.
Časté dotazy

Je SM9 čínský vynález? Koncept ne: Shamir navrhl kryptografii založenou na identitě v roce 1984 a Boneh–Franklin (2001) postavili první praktické IBE na párování. SM9 (GM/T 0044-2016, pak GB/T 38635.1/.2-2020) je čínská národní realizace této linie.

Proč na této stránce není kalkulačka SM9? Na rozdíl od SM2/SM3/SM4 SM9 potřebuje bilineární párování: věž rozšíření pole Fp12, Millerovu smyčku a finální exponenciaci — několik tisíc řádků pečlivého kódu pro velká čísla. Je na plánu rodiny; do té doby tato stránka dokumentuje algoritmus a sourozenecké stránky počítají zbytek sady v prohlížeči.

Může SM9 nahradit SM2, SM3 a SM4? Ne — řeší jiné problémy. SM9 nahrazuje infrastrukturu certifikátů, ne primitiva: interně se spoléhá na SM3 pro hashování a odvození klíče a obalený hromadný klíč typicky řídí SM4. SM2 zůstává odpovědí, když je potřeba odpovědnost ve stylu certifikátů bez úschovy klíčů.

Co přesně je hid? Jednobajtový identifikátor funkce (zvolený a zveřejněný KGC), který se mísí do každého hashe H1. Protože podpisové klíče, šifrovací klíče a klíče výměny hashují identitu s různými hodnotami hid, jeden uniklý uživatelský klíč kompromituje jen tu jednu funkci.

Jak se odvolávají identity? Uvnitř SM9 není mechanismus CRL. Běžná praxe: vložit expiraci do samotné identity (bob@example.com|2026-Q4), takže se klíče musí periodicky znovu vydávat, a KGC prostě přestane vydávat pro odvolané identity.

Kde se SM9 skutečně používá? V regulovaných čínských odvětvích — bankovnictví, státní správa a průmyslová komunikace — typicky uvnitř uzavřených ekosystémů, kde je přijatelný jeden úřad a „zašifrovat na e-mailovou adresu dnes, uživatele zaregistrovat zítra“ stojí za cenu párování.

Autotest
Tato stránka je jen pro čtení, takže autotest ověřuje samotnou stránku: každá zobrazená konstanta křivky je znovu zkontrolována proti nezávisle ověřeným hodnotám (prvočíslo p a řád N přepočítané z parametrizace BN, oba generátory ověřené na křivce s řádem N), čísla norem, invarianty šablony (bez DOCTYPE, značka sestavení), křížové odkazy a přítomnost FAQ.