Kriptografi Berbasis Identitas SM9 (IBC)

SM9 adalah anggota berbasis identitas dari rangkaian SM Tiongkok: string apa pun — alamat surel, nomor telepon, nomor seri perangkat — langsung berfungsi sebagai kunci publik, dan Key Generation Centre menerbitkan kunci privat yang cocok. Ini adalah halaman penjelasan saja: bagaimana IBE dan IBS bekerja langkah demi langkah, bagaimana kriptografi berbasis identitas dibandingkan dengan sertifikat PKI, dan parameter kurva resmi.
Kalkulator direncanakan. Kalkulator SM9 sisi-browser ada dalam peta jalan keluarga kriptografi — mesin pairing (menara medan ekstensi Fp12, loop Miller, eksponensiasi akhir) adalah kernel tersendiri. Sementara itu halaman sibling menghitung SM2, SM3, dan SM4 sepenuhnya di browser.
Apa itu SM9?
Dalam satu kalimat: SM9 adalah standar nasional Tiongkok untuk kriptografi berbasis identitas (GB/T 38635.1/.2-2020, penerus seri GM/T 0044-2016): kunci publik adalah string identitas seperti bob@example.com, kunci privat yang cocok diterbitkan oleh Key Generation Centre (KGC) tepercaya, dan matematika yang membuat ini bekerja adalah pairing bilinear pada kurva BN 256-bit.

Kriptografi kunci publik konvensional (RSA, SM2, ECC) menjawab pertanyaan "apakah ini benar-benar kunci Bob?" dengan sertifikat: hierarki CA menjamin bahwa blob kunci acak tertentu milik Bob. Kriptografi berbasis identitas membalik hal ini: nama itu sendiri adalah materi kunci. Siapa pun yang mengetahui alamat surel Bob dapat mengenkripsi untuknya atau memverifikasi tanda tangannya tanpa mengambil apa pun — tanpa direktori sertifikat, tanpa validasi rantai kepercayaan. Harganya adalah pihak ketiga tepercaya yang dapat menurunkan setiap kunci privat, dan matematika yang jauh lebih berat. SM9 adalah implementasi standar Tiongkok dari pertukaran itu.

Para pemain: siapa memegang apa
PeranApa itu
Identitas (ID)String byte apa pun, misalnya bob@example.com, digunakan langsung sebagai kunci publik. Harus kanonik: tepat byte demi byte, tanpa dua ejaan untuk orang yang sama.
KGCKey Generation Centre: menyimpan kunci privat master, memverifikasi milik siapa suatu identitas, dan menerbitkan kunci privat pengguna yang cocok.
Pasangan kunci masterDua pasangan independen: penandatanganan (rahasia ks, publik Ppub-s = [ks]P2) dan enkripsi (rahasia ke, publik Ppub-e = [ke]P1). Perhatikan asimetri yang disengaja: satu master publik berada di G2, yang lain di G1.
Kunci privat penggunaSebuah titik pada kurva, diturunkan dari ID oleh KGC. Kunci penandatanganan dsA berada di G1; kunci dekripsi deB berada di G2.
hidPengenal fungsi satu byte yang dicampurkan ke setiap derivasi kunci, sehingga satu identitas menghasilkan kunci yang independen secara kriptografis untuk penandatanganan, enkripsi, dan pertukaran kunci.
H1, H2, KDFFungsi pembantu berbasis SM3 (GB/T 32905): pemetaan hash-ke-bilangan bulat dan fungsi derivasi kunci.
Pairing ePairing bilinear R-ate e: G1 × G2 → GT atas kurva BN 256-bit yang didefinisikan di bawah. Mesin aljabar dari seluruh skema.
Cara kerja enkripsi berbasis identitas (IBE) SM9

Alice ingin mengirim rahasia ke bob@example.com — mungkin sebelum Bob pernah mendaftar ke KGC:

1. Alice menurunkan sendiri kunci publik Bob: QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Tanpa pencarian direktori, tanpa pengambilan sertifikat — string identitas dan kunci master publik adalah semua yang ia perlukan.
2. Sementara: r acak; hitung titik C1 = [r]QB.
3. Pairing: g = e(Ppub-e, P2), lalu w = gr.
4. Kunci: K = KDF(C1 ‖ w ‖ IDB, klen) (berbasis SM3), dipecah menjadi K1 (kunci pembungkus) dan K2 (kunci MAC).
5. Masker: C2 = pesan di-XOR dengan (atau dienkripsi di bawah) K1; C3 = MAC(K2, C2). Ciphertext menggabungkan C1, C3, dan C2.
6. Bob, setiap kali ia mendaftar: KGC memverifikasi bahwa ia benar-benar bob@example.com dan menerbitkan deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Ia kemudian menghitung w′ = e(C1, deB), membangun ulang K yang sama, memeriksa MAC, dan membuka masker pesan.

Mengapa ini bekerja: dengan bilinearitas, e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — persis nilai yang dilipat Alice ke dalam KDF. Bagian yang elegan adalah langkah 6: enkripsi tidak memerlukan pendaftaran sebelumnya. Alice dapat menyegel pesan hari ini; Bob hanya dapat membukanya setelah membuktikan identitasnya kepada KGC. Pembuatan kunci yang ditunda adalah fitur utama IBE.

Cara kerja tanda tangan berbasis identitas (IBS) SM9

Alice menandatangani pesan M dengan kunci penandatanganannya dsA:

1. g = e(P1, Ppub-s); r acak; w = gr.
2. h = H2(M ‖ w, N); l = (r − h) mod N (ulangi dengan r baru jika l = 0).
3. S = [l]dsA. Tanda tangannya adalah pasangan (h, S).

Siapa pun yang mengetahui identitas Alice memverifikasinya tanpa sertifikat apa pun:

4. P = [H1(IDA ‖ hid, N)]P2 + Ppub-s; u = e(S, P); w′ = u · gh.
5. Tanda tangan valid tepat ketika H2(M ‖ w′, N) = h.

Sekali lagi bilinearitas menutup lingkaran: u = e(P1,P2)l·ks dan gh = e(P1,P2)ks·h, sehingga w′ = e(P1,P2)ks·(l+h) = e(P1,P2)ks·r = w.

Berbasis identitas vs berbasis sertifikat (IBE vs PKI)

Ini adalah keputusan yang benar-benar penting saat memilih SM9. Kedua dunia memberi Anda enkripsi kunci publik dan tanda tangan; keduanya berbeda dalam di mana kepercayaan berada:

AspekPKI / sertifikat (dunia SM2, RSA)Berbasis identitas (SM9)
Kunci publik bob@…Blob 65+ byte di dalam sertifikat, diambil dari direktori atau dari penerima sendiriString bob@example.com itu sendiri; verifikator menghitung kunci darinya
Akar kepercayaanHierarki CA; setiap rantai harus tervalidasi hingga ke rootSatu kunci publik master KGC untuk seluruh domain
Enkripsi sebelum penerima memiliki kunci?Tidak — Anda memerlukan sertifikatnya yang valid terlebih dahuluYa — enkripsi sekarang; ia mendaftar dan mendekripsi nanti
Kunci privat pengguna dibuat olehMesin atau perangkat pengguna sendiri (sering kali tidak pernah meninggalkannya)KGC, secara terpusat, dari identitas
Escrow kunciTidak ada secara desainMelekat: KGC dapat menurunkan setiap kunci privat pengguna
PencabutanCRL / OCSP per sertifikatTidak ada padanan; praktik biasanya menyematkan jendela masa berlaku dalam ID (mis. bob@example.com|2026) sehingga kunci kedaluwarsa secara konstruksi
Biaya per operasiAritmetika ECC biasa — cepatPairing bilinear — berkali-kali lebih lambat daripada perkalian skalar
StandarX.509 / RFC 5280; SM2 di bawah GB/T 32918GB/T 38635.1/.2-2020 (sebelumnya GM/T 0044-2016)
Habitat alamiInternet terbuka: TLS, penandatanganan kode, PKI umumEkosistem tertutup: pesan satu bank, surel satu lembaga, identitas armada/perangkat — tempat otoritas pusat dapat diterima dan enkripsi tanpa pendaftaran terbayar

Aturan praktis: SM9 memberi Anda manajemen kunci tanpa sertifikat dengan harga escrow kunci dan matematika yang lebih lambat. Jika Anda tidak dapat menerima pihak ketiga yang dapat membaca segalanya atau memalsukan siapa pun, tetaplah dengan sertifikat SM2; jika enkripsi tanpa pendaftaran dalam satu organisasi adalah tujuannya, SM9 adalah alat yang tepat.

Parameter sistem SM9 (kurva BN 256-bit resmi)

Himpunan parameter dari GB/T 38635.1-2020 (juga dalam GM/T 0044.5-2017). Ini adalah nilai referensi hanya-baca — self-test di bawah memeriksa ulang setiap konstanta di halaman ini terhadap nilai yang terverifikasi independen:

ItemNilai
KurvaKurva Barreto–Naehrig (BN) E: y2 = x3 + b atas Fp, b = 05
Parameter kurva t60000000 0058F98A
Bilangan prima medan pB6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
Orde grup NB6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
Parametrisasip = 36t4 + 36t3 + 24t2 + 6t + 1; N = 36t4 + 36t3 + 18t2 + 6t + 1
Kofaktor1
Derajat embedding k12 (menara medan Fp → Fp2 → Fp4 → Fp12)
PairingPairing R-ate e: G1 × G2 → GT, ketiga grup berorde N
Generator G1 P1 (pada E)x = 93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD
y = 21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616
Generator G2 P2 (pada twist E′: y2 = x3 + 5·u atas 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
(elemen Fp2 ditulis c0 + c1·u)
Hash / KDFH1, H2, dan KDF dibangun di atas SM3 (GB/T 32905-2016); hid adalah pengenal fungsi satu byte yang dipilih oleh KGC
Di mana SM9 berada dalam rangkaian SM
  • SM9 (halaman ini) — pengganggu manajemen kunci: identitas sebagai ganti sertifikat, KGC sebagai ganti hierarki CA.
  • SM3 — hash; H1/H2/KDF SM9 dibangun di atasnya. Hitung digest di halaman SM3.
  • SM4 — cipher blok yang biasanya mengenkripsi data besar di bawah kunci yang dihasilkan KDF SM9. Coba di halaman SM4.
  • SM2 — padanan dunia sertifikat: pekerjaan yang sama (tanda tangan, enkripsi) dengan ECC biasa dan PKI di belakangnya. Kalkulator lengkap ada di halaman SM2.
Catatan kepatuhan: SM9 adalah pilihan independensi rangkaian dan manajemen kunci untuk penerapan Tiongkok yang diatur, sebanding dalam kekuatan dengan sistem sekitar 128-bit lainnya. Peluncuran produksi harus memperlakukan kunci master KGC sebagai harta paling berharga — biasanya disimpan di HSM, dibagi di antara beberapa pemegang amanah, atau keduanya.
Kesalahpahaman umum
  • "Identitas adalah kunci publik, jadi siapa pun bisa mendekripsi surel pemiliknya." Tidak — siapa pun dapat mengenkripsi ke identitas dan memverifikasi tanda tangan darinya; hanya pemegang kunci privat yang diterbitkan KGC yang dapat mendekripsi atau menandatangani. KGC memeriksa siapa Bob sebenarnya sebelum menyerahkan deB.
  • Mengabaikan escrow kunci. Kunci master KGC yang dikompromikan berarti penyerang dapat diam-diam menurunkan setiap kunci privat pengguna — dekripsi total dan peniruan total untuk domain. Ini disengaja (begitulah cara kerja kriptografi berbasis identitas), bukan cacat yang bisa ditambal. Mitigasi secara operasional: HSM, KGC ambang yang dibagi antar entitas, log audit penerbitan yang ketat.
  • Mengira string identitas itu pemaaf. String itu di-hash secara tepat byte demi byte: Bob@Example.COM, bob@example.com, dan " bob@example.com" adalah tiga kunci publik berbeda dengan tiga kunci privat berbeda. Bekukan satu format kanonik sebelum penerapan — dan pertimbangkan untuk menambahkan jendela masa berlaku untuk pencabutan.
  • "Kurva 256-bit, jadi keamanan 256-bit." Kriptografi berbasis pairing tidak berskala seperti ECC biasa: serangan bekerja di medan Fp12/Fp6 yang besar tempat algoritma index-calculus (sub-eksponensial) berlaku. Analisis yang dipublikasikan menempatkan kurva BN 256-bit di sekitar kelas keamanan ~100–128-bit, dan peneliti telah mengusulkan parameter BN yang lebih besar untuk SM9 (mis. "Searching BN Curves for SM9", 2019). Perlakukan SM9 sekitar kelas AES-128 — kokoh, tetapi bukan benteng 256-bit.
  • Mengharapkannya ada di OpenSSL. OpenSSL mengimplementasikan SM2/SM3/SM4 tetapi tidak memiliki SM9. Tumpukan open-source yang berfungsi mencakup GmSSL dan Bouncy Castle.
FAQ

Apakah SM9 penemuan Tiongkok? Konsepnya bukan: Shamir mengusulkan kriptografi berbasis identitas pada 1984, dan Boneh–Franklin (2001) membangun IBE berbasis pairing praktis pertama. SM9 (GM/T 0044-2016, lalu GB/T 38635.1/.2-2020) adalah implementasi standar nasional Tiongkok dari garis keturunan itu.

Mengapa tidak ada kalkulator SM9 di halaman ini? Tidak seperti SM2/SM3/SM4, SM9 memerlukan pairing bilinear: menara ekstensi medan Fp12, loop Miller, dan eksponensiasi akhir — beberapa ribu baris kode bilangan besar yang hati-hati. Ini ada dalam peta jalan keluarga; hingga saat itu halaman ini mendokumentasikan algoritmanya, dan halaman sibling menghitung sisa rangkaian di browser.

Dapatkah SM9 menggantikan SM2, SM3, dan SM4? Tidak — mereka memecahkan masalah yang berbeda. SM9 menggantikan infrastruktur sertifikat, bukan primitifnya: secara internal ia bergantung pada SM3 untuk hashing dan derivasi kunci, dan kunci massal yang dibungkus biasanya menggerakkan SM4. SM2 tetap menjadi jawaban ketika akuntabilitas gaya sertifikat tanpa escrow kunci diperlukan.

Apa sebenarnya hid itu? Sebuah pengenal fungsi satu byte (dipilih dan dipublikasikan oleh KGC) yang dicampurkan ke setiap hash H1. Karena kunci penandatanganan, kunci enkripsi, dan kunci pertukaran kunci meng-hash identitas bersama nilai hid yang berbeda, satu kunci pengguna yang bocor hanya mengompromikan satu fungsi itu.

Bagaimana identitas dicabut? Tidak ada mekanisme CRL di dalam SM9. Praktik standarnya: sematkan masa berlaku di dalam identitas itu sendiri (bob@example.com|2026-Q4) sehingga kunci harus diterbitkan ulang secara berkala, dan biarkan KGC berhenti menerbitkan untuk identitas yang dicabut.

Di mana SM9 benar-benar digunakan? Di sektor Tiongkok yang diatur — perbankan, pemerintahan, dan pesan industri — biasanya di dalam ekosistem tertutup tempat satu otoritas dapat diterima dan "enkripsi ke alamat surel hari ini, daftarkan pengguna besok" sepadan dengan biaya pairing.

Uji mandiri
Ini adalah halaman hanya-baca, jadi self-test memverifikasi halaman itu sendiri: setiap konstanta kurva yang ditampilkan di atas diperiksa ulang terhadap nilai yang terverifikasi independen (bilangan prima p dan orde N dihitung ulang dari parametrisasi BN, kedua generator diperiksa berada di kurva dengan orde N), nomor standar, invarian templat (tanpa DOCTYPE, penanda build), tautan silang, dan keberadaan FAQ.