Kryptografia oparta na tożsamości SM9 (IBC)

SM9 to członek chińskiego pakietu SM oparty na tożsamości: dowolny ciąg — adres e-mail, numer telefonu, numer seryjny urządzenia — działa bezpośrednio jako klucz publiczny, a Centrum Generowania Kluczy wystawia pasujące klucze prywatne. To strona wyłącznie objaśniająca: jak krok po kroku działają IBE i IBS, jak kryptografia oparta na tożsamości porównuje się z certyfikatami PKI oraz oficjalne parametry krzywej.
Kalkulator zaplanowany. Kalkulator SM9 działający w przeglądarce jest w planie rodziny narzędzi kryptograficznych — maszyneria parowania (rozszerzenie ciał Fp12, pętla Millera, potęgowanie końcowe) to osobne jądro. Tymczasem strony pokrewne w całości liczą SM2, SM3 i SM4 w przeglądarce.
Czym jest SM9?
W jednym zdaniu: SM9 to chiński krajowy standard kryptografii opartej na tożsamości (GB/T 38635.1/.2-2020, następca serii GM/T 0044-2016): klucz publiczny jest ciągiem tożsamości, np. bob@example.com, odpowiadający mu klucz prywatny wystawia zaufane Centrum Generowania Kluczy (KGC), a matematyką, która to umożliwia, jest parowanie dwuliniowe na 256-bitowej krzywej BN.

Konwencjonalna kryptografia klucza publicznego (RSA, SM2, ECC) odpowiada na pytanie „czy to naprawdę klucz Boba?” certyfikatami: hierarchia CA poręcza, że określony losowo wyglądający blob kluczowy należy do Boba. Kryptografia oparta na tożsamości odwraca to: sama nazwa jest materiałem kluczowym. Każdy, kto zna adres e-mail Boba, może zaszyfrować do niego lub zweryfikować jego podpisy bez pobierania czegokolwiek — bez katalogu certyfikatów, bez walidacji łańcucha zaufania. Cena to zaufana trzecia strona, która może wyprowadzić każdy klucz prywatny, oraz znacznie cięższa matematyka. SM9 to ustandaryzowana chińska realizacja tej wymiany.

Obsada: kto co posiada
RolaCzym jest
Tożsamość (ID)dowolny ciąg bajtów, np. bob@example.com, używany wprost jako klucz publiczny. Musi być kanoniczny: dokładny bajt po bajcie, bez dwóch zapisów tej samej osoby.
KGCCentrum Generowania Kluczy: przechowuje główny klucz prywatny, weryfikuje, do kogo należy tożsamość, i wydaje pasujący klucz prywatny użytkownika.
Pary kluczy głównychDwie niezależne pary: podpisywanie (sekret ks, publiczny Ppub-s = [ks]P2) i szyfrowanie (sekret ke, publiczny Ppub-e = [ke]P1). Zwróć uwagę na celową asymetrię: jeden klucz główny publiczny żyje w G2, drugi w G1.
Klucz prywatny użytkownikapunkt na krzywej wyprowadzony z ID przez KGC. Klucz podpisujący dsA żyje w G1; klucz deszyfrujący deB w G2.
hidjednobajtowy identyfikator funkcji mieszany w każdym wyprowadzeniu klucza, dzięki czemu jedna tożsamość daje kryptograficznie niezależne klucze do podpisu, szyfrowania i uzgadniania kluczy.
H1, H2, KDFFunkcje pomocnicze oparte na SM3 (GB/T 32905): odwzorowania hash-do-liczby i funkcja wyprowadzania klucza.
Parowanie eParowanie dwuliniowe R-ate e: G1 × G2 → GT nad 256-bitową krzywą BN zdefiniowaną poniżej. Silnik algebraiczny całego schematu.
Jak działa szyfrowanie oparte na tożsamości SM9 (IBE)

Alicja chce wysłać sekret do bob@example.com — być może zanim Bob kiedykolwiek zarejestrował się w KGC:

1. Alicja sama wylicza klucz publiczny Boba: QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Brak wyszukiwania w katalogu, brak pobierania certyfikatu — potrzebny jest tylko ciąg tożsamości i publiczny klucz główny.
2. Efemeryczny: losowe r; wylicz punkt C1 = [r]QB.
3. Parowanie: g = e(Ppub-e, P2), następnie w = gr.
4. Klucze: K = KDF(C1 ‖ w ‖ IDB, klen) (oparte na SM3), rozdzielone na K1 (klucz opakowujący) i K2 (klucz MAC).
5. Maska: C2 to wiadomość XOR-owana z (lub szyfrowana kluczem) K1; C3 = MAC(K2, C2). Szyfrogram łączy C1, C3 i C2.
6. Bob, przy każdej rejestracji: KGC weryfikuje, że to naprawdę bob@example.com, i wystawia deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Następnie oblicza w′ = e(C1, deB), odtwarza ten sam K, sprawdza MAC i odsłania wiadomość.

Dlaczego to działa: dzięki dwuliniowości e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — dokładnie ta wartość, którą Alicja wplotła w KDF. Elegancka część to krok 6: szyfrowanie nie wymaga wcześniejszej rejestracji. Alicja może zapieczętować wiadomość dziś; Bob może ją otworzyć dopiero po udowodnieniu tożsamości KGC. Odroczone generowanie klucza to cecha wyróżniająca IBE.

Jak działają podpisy oparte na tożsamości SM9 (IBS)

Alicja podpisuje wiadomość M swoim kluczem podpisującym dsA:

1. g = e(P1, Ppub-s); losowe r; w = gr.
2. h = H2(M ‖ w, N); l = (r − h) mod N (ponów z nowym r, jeśli l = 0).
3. S = [l]dsA. Podpis to para (h, S).

Każdy, kto zna tożsamość Alicji, weryfikuje podpis bez żadnego certyfikatu:

4. P = [H1(IDA ‖ hid, N)]P2 + Ppub-s; u = e(S, P); w′ = u · gh.
5. Podpis jest ważny dokładnie wtedy, gdy H2(M ‖ w′, N) = h.

Dwuliniowość znów domyka pętlę: u = e(P1,P2)l·ks oraz gh = e(P1,P2)ks·h, więc w′ = e(P1,P2)ks·(l+h) = e(P1,P2)ks·r = w.

Tożsamość a certyfikat (IBE a PKI)

To jest decyzja, która naprawdę ma znaczenie przy wyborze SM9. Oba światy dają szyfrowanie kluczem publicznym i podpisy; różnią się tym, gdzie mieszka zaufanie:

AspektPKI / certyfikaty (świat SM2, RSA)Oparta na tożsamości (SM9)
Klucz publiczny bob@…blob 65+ bajtów w certyfikacie, pobierany z katalogu lub od samego odbiorcySam ciąg bob@example.com; weryfikator oblicza z niego klucz
Korzeń zaufaniahierarchia CA; każdy łańcuch musi zostać zwalidowany aż do rootaJeden główny klucz publiczny KGC dla całej domeny
Szyfrować, zanim odbiorca ma klucz?Nie — najpierw potrzebny jest jego ważny certyfikatTak — zaszyfruj teraz; on rejestruje się i odszyfruje później
Klucz prywatny generowany przezWłasna maszyna lub urządzenie użytkownika (często nigdy go nie opuszcza)KGC, centralnie, na podstawie tożsamości
Depozyt kluczyBrak z założeniaZ konstrukcji: KGC może wyprowadzić klucz prywatny każdego użytkownika
UnieważnianieCRL / OCSP na certyfikatBrak odpowiednika; zwykła praktyka osadza okna ważności w ID (np. bob@example.com|2026), dzięki czemu klucze wygasają z założenia
Koszt operacjiZwykła arytmetyka ECC — szybkaparowanie dwuliniowe — o rzędy wielkości wolniejsze niż mnożenie skalarne
StandardyX.509 / RFC 5280; SM2 w ramach GB/T 32918GB/T 38635.1/.2-2020 (dawniej GM/T 0044-2016)
Naturalne środowiskoOtwarty internet: TLS, podpisywanie kodu, ogólne PKIzamknięte ekosystemy: przesyłanie wiadomości jednego banku, poczta jednej agencji, tożsamość floty/urządzeń — tam, gdzie akceptowalna jest centralna władza, a szyfrowanie bez rejestracji się opłaca

Reguła kciuka: SM9 daje zarządzanie kluczami bez certyfikatów kosztem depozytu kluczy i wolniejszej matematyki. Jeśli nie można zaakceptować trzeciej strony, która może przeczytać wszystko lub podszyć się pod każdego, pozostań przy certyfikatach SM2; jeśli celem jest szyfrowanie bez rejestracji wewnątrz jednej organizacji, SM9 jest dokładnie tym narzędziem.

Parametry systemu SM9 (oficjalna 256-bitowa krzywa BN)

Zestaw parametrów z GB/T 38635.1-2020 (także w GM/T 0044.5-2017). To wartości referencyjne tylko do odczytu — samotest poniżej sprawdza ponownie każdą stałą na tej stronie względem niezależnie zweryfikowanych wartości:

PozycjaWartość
Krzywakrzywa Barreto–Naehrig (BN) E: y2 = x3 + b nad Fp, b = 05
Parametr krzywej t60000000 0058F98A
Liczba pierwsza pola pB6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
Rząd grupy NB6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
Parametryzacjap = 36t4 + 36t3 + 24t2 + 6t + 1; N = 36t4 + 36t3 + 18t2 + 6t + 1
Kofaktor1
Stopień osadzenia k12 (wieża ciał Fp → Fp2 → Fp4 → Fp12)
Parowanieparowanie R-ate e: G1 × G2 → GT, wszystkie trzy grupy rzędu N
Generator G1 P1 (na E)x = 93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD
y = 21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616
Generator G2 P2 (na skręceniu 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
(elementy Fp2 zapisane jako c0 + c1·u)
Skrót / KDFH1, H2 i KDF są zbudowane na SM3 (GB/T 32905-2016); hid to jednobajtowy identyfikator funkcji wybierany przez KGC
Miejsce SM9 w pakiecie SM
  • SM9 (ta strona) — zakłócacz zarządzania kluczami: tożsamości zamiast certyfikatów, KGC zamiast hierarchii CA.
  • SM3 — funkcja skrótu; H1/H2 i KDF w SM9 są na niej zbudowane. Skróty oblicza się na stronie SM3.
  • SM4 — szyfr blokowy, który zwykle szyfruje duże dane pod kluczem wytworzonym przez KDF SM9. Wypróbuj go na stronie SM4.
  • SM2 — odpowiednik ze świata certyfikatów: te same zadania (podpis, szyfrowanie) zwykłą ECC i za nią infrastruktura PKI. Pełny kalkulator na stronie SM2.
Uwaga o zgodności: SM9 to wybór niezależności pakietu i zarządzania kluczami w regulowanych chińskich wdrożeniach, porównywalny siłą z innymi systemami ~128-bitowymi. Wdrożenia produkcyjne muszą traktować główny klucz KGC jako najcenniejszy zasób — zwykle trzyma się go w HSM, dzieli między kilku powierników albo robi jedno i drugie.
Typowe nieporozumienia
  • „Tożsamość jest kluczem publicznym, więc każdy może odszyfrować moją pocztę.” Nie — każdy może zaszyfrować do tożsamości i zweryfikować podpisy z niej pochodzące; tylko posiadacz klucza prywatnego wydanego przez KGC może deszyfrować lub podpisywać. KGC sprawdza, kim naprawdę jest Bob, zanim wyda deB.
  • Ignorowanie depozytu kluczy. Przejęty główny klucz KGC oznacza, że atakujący może po cichu wyprowadzić każdy klucz prywatny użytkownika — pełne deszyfrowanie i pełne podszywanie się w domenie. To zamierzone (tak działa kryptografia oparta na tożsamości), a nie błąd do załatania. Łagodzi się to operacyjnie: HSM, progowy KGC podzielony między podmioty, rygorystyczne logi audytu wydawania.
  • Zakładanie, że ciąg tożsamości jest wyrozumiały. Jest haszowany dokładnie bajt po bajcie: Bob@Example.COM, bob@example.com i " bob@example.com" to trzy różne klucze publiczne z trzema różnymi kluczami prywatnymi. Przed wdrożeniem ustal jeden kanoniczny format — i rozważ dołączanie okna ważności dla unieważnień.
  • „Krzywa 256-bitowa, więc 256-bitowe bezpieczeństwo.” Kryptografia oparta na parowaniu nie skaluje się jak zwykła ECC: ataki działają w ogromnych ciałach Fp12/Fp6, gdzie stosują się algorytmy indeksowe (poddwukładnicze). Opublikowane analizy umieszczają 256-bitowe krzywe BN w okolicy klasy bezpieczeństwa ~100–128 bitów, a badacze proponowali większe parametry BN dla SM9 (np. „Searching BN Curves for SM9”, 2019). Traktuj SM9 jako mniej więcej klasę AES-128 — solidną, ale nie twierdzę 256-bitową.
  • Oczekiwanie tego w OpenSSL. OpenSSL implementuje SM2/SM3/SM4, ale nie ma SM9. Działające otwarte stosy to GmSSL i Bouncy Castle.
FAQ

Czy SM9 to chiński wynalazek? Sama koncepcja nie: Shamir zaproponował kryptografię opartą na tożsamości w 1984 roku, a Boneh–Franklin (2001) zbudowali pierwsze praktyczne IBE oparte na parowaniu. SM9 (GM/T 0044-2016, potem GB/T 38635.1/.2-2020) to chińska, krajowo standardowa realizacja tej linii.

Dlaczego na tej stronie nie ma kalkulatora SM9? W przeciwieństwie do SM2/SM3/SM4 SM9 wymaga parowania dwuliniowego: wieży rozszerzeń ciał Fp12, pętli Millera i potęgowania końcowego — kilka tysięcy linii starannego kodu liczb wielkich. Jest w planie rodziny; do tego czasu ta strona opisuje algorytm, a strony pokrewne liczą resztę pakietu w przeglądarce.

Czy SM9 może zastąpić SM2, SM3 i SM4? Nie — rozwiązują różne problemy. SM9 zastępuje infrastrukturę certyfikatów, a nie prymitywy: wewnętrznie opiera się na SM3 do haszowania i wyprowadzania kluczy, a opakowany klucz masowy zwykle steruje SM4. SM2 pozostaje odpowiedzią, gdy wymagana jest odpowiedzialność w stylu certyfikatów bez depozytu kluczy.

Czym dokładnie jest hid? Jednobajtowym identyfikatorem funkcji (wybieranym i publikowanym przez KGC), mieszanym w każdym skrócie H1. Ponieważ klucze podpisujące, szyfrujące i uzgadniające klucze haszują tożsamość razem z różnymi wartościami hid, jeden wyciekły klucz użytkownika kompromituje tylko tę jedną funkcję.

Jak unieważnia się tożsamości? W SM9 nie ma mechanizmu CRL. Standardowa praktyka: osadzić termin ważności w samej tożsamości (bob@example.com|2026-Q4), tak aby klucze trzeba było okresowo wydawać na nowo, a KGC po prostu przestaje wydawać dla unieważnionych tożsamości.

Gdzie SM9 jest faktycznie używany? W regulowanych chińskich sektorach — bankowości, administracji i przesyłaniu wiadomości w przemyśle — zwykle w zamkniętych ekosystemach, gdzie jedna władza jest akceptowalna, a „szyfruj na adres e-mail dziś, zarejestruj użytkownika jutro” jest warte kosztu parowania.

Autotest
To strona tylko do odczytu, więc samotest weryfikuje samą stronę: każda pokazana tu stała krzywej jest sprawdzana ponownie względem niezależnie zweryfikowanych wartości (liczba pierwsza p i rząd N przeliczone z parametryzacji BN, oba generatory sprawdzone jako należące do krzywej o rzędzie N), numery normy, niezmienniki szablonu (bez DOCTYPE, znacznik wersji), powiązania krzyżowe i obecność FAQ.