Mật mã dựa trên định danh SM9 (IBC)

SM9 là thành viên dựa trên định danh của bộ SM Trung Quốc: mọi chuỗi — địa chỉ email, số điện thoại, số seri thiết bị — dùng trực tiếp làm khóa công khai, và một Trung tâm Sinh khóa cấp khóa riêng tương ứng. Đây là trang giải thích chỉ đọc: cách IBE và IBS hoạt động từng bước, mật mã dựa trên định danh so với chứng chỉ PKI, và các tham số đường cong chính thức.
Máy tính đã lên kế hoạch. Một máy tính SM9 chạy trên trình duyệt nằm trong lộ trình họ mật mã — bộ máy ghép cặp (tháp mở rộng trường Fp12, vòng lặp Miller, lũy thừa cuối) là một nhân riêng. Trong lúc chờ, các trang liên quan tính đầy đủ SM2, SM3 và SM4 trong trình duyệt của bạn.
SM9 là gì?
Trong một câu: SM9 là tiêu chuẩn quốc gia Trung Quốc cho mật mã dựa trên định danh (GB/T 38635.1/.2-2020, kế thừa loạt GM/T 0044-2016): khóa công khai chính là một chuỗi định danh như bob@example.com, khóa riêng tương ứng do một Trung tâm Sinh khóa (KGC) đáng tin cấp, và toán học làm việc này khả thi là một ghép cặp song tuyến trên đường cong BN 256-bit.

Mật mã khóa công khai thông thường (RSA, SM2, ECC) trả lời câu hỏi "đây có thật là khóa của Bob không?" bằng chứng chỉ: một hệ phân cấp CA bảo chứng rằng một khối khóa trông ngẫu nhiên nào đó thuộc về Bob. Mật mã dựa trên định danh lật ngược điều này: chính cái tên là vật liệu khóa. Bất kỳ ai biết địa chỉ email của Bob đều có thể mã hóa cho Bob hoặc xác minh chữ ký của Bob mà không cần lấy gì — không thư mục chứng chỉ, không kiểm tra chuỗi tin cậy. Cái giá là một bên thứ ba đáng tin có thể suy ra mọi khóa riêng, và toán học nặng hơn nhiều. SM9 là hiện thân chuẩn hóa của Trung Quốc cho sự đánh đổi đó.

Dàn nhân vật: ai giữ gì
Vai tròĐây là gì
Định danh (ID)Một chuỗi byte bất kỳ, ví dụ bob@example.com, dùng trực tiếp làm khóa công khai. Nó phải chuẩn: đúng từng byte, không có hai cách viết cho cùng một người.
KGCTrung tâm Sinh khóa: giữ khóa riêng chủ, xác minh một định danh thuộc về ai, và cấp khóa riêng người dùng tương ứng.
Cặp khóa chủHai cặp độc lập: ký (bí mật ks, công khai Ppub-s = [ks]P2) và mã hóa (bí mật ke, công khai Ppub-e = [ke]P1). Lưu ý sự bất đối xứng có chủ ý: một khóa chủ công khai nằm trong G2, khóa kia trong G1.
Khóa riêng người dùngMột điểm trên đường cong, được KGC suy ra từ ID. Khóa ký dsA nằm trong G1; khóa giải mã deB nằm trong G2.
hidMột định danh hàm một byte được trộn vào mọi dẫn xuất khóa, nên một định danh tạo ra các khóa độc lập về mật mã cho ký, mã hóa và trao đổi khóa.
H1, H2, KDFCác hàm phụ trợ dựa trên SM3 (GB/T 32905): ánh xạ băm-sang-số nguyên và hàm dẫn xuất khóa.
Ghép cặp eGhép cặp song tuyến R-ate e: G1 × G2 → GT trên đường cong BN 256-bit định nghĩa bên dưới. Bộ máy đại số của toàn bộ lược đồ.
Mã hóa dựa trên định danh (IBE) SM9 hoạt động thế nào

Alice muốn gửi một bí mật cho bob@example.com — có thể trước khi Bob từng đăng ký với KGC:

1. Alice tự suy ra khóa công khai của Bob: QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Không tra cứu thư mục, không lấy chứng chỉ — chuỗi định danh và khóa chủ công khai là tất cả những gì Alice cần.
2. Tạm thời: r ngẫu nhiên; tính điểm C1 = [r]QB.
3. Ghép cặp: g = e(Ppub-e, P2), rồi w = gr.
4. Khóa: K = KDF(C1 ‖ w ‖ IDB, klen) (dựa trên SM3), tách thành K1 (khóa bọc) và K2 (khóa MAC).
5. Che: C2 = thông điệp XOR với (hoặc được mã hóa dưới) K1; C3 = MAC(K2, C2). Bản mã gói C1, C3 và C2 lại.
6. Bob, mỗi khi đăng ký: KGC xác minh Bob thật sự là bob@example.com và cấp deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Sau đó Bob tính w′ = e(C1, deB), dựng lại cùng K, kiểm tra MAC và gỡ che thông điệp.

Vì sao nó hoạt động: theo tính song tuyến, e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — đúng giá trị Alice đã gộp vào KDF. Phần thanh lịch là bước 6: mã hóa không cần đăng ký trước. Alice có thể niêm phong một thông điệp hôm nay; Bob chỉ mở được sau khi chứng minh định danh với KGC. Sinh khóa trì hoãn là đặc điểm chữ ký của IBE.

Chữ ký dựa trên định danh (IBS) SM9 hoạt động thế nào

Alice ký một thông điệp M bằng khóa ký dsA của Alice:

1. g = e(P1, Ppub-s); r ngẫu nhiên; w = gr.
2. h = H2(M ‖ w, N); l = (r − h) mod N (thử lại với r mới nếu l = 0).
3. S = [l]dsA. Chữ ký là cặp (h, S).

Bất kỳ ai biết định danh của Alice đều xác minh được mà không cần chứng chỉ nào:

4. P = [H1(IDA ‖ hid, N)]P2 + Ppub-s; u = e(S, P); w′ = u · gh.
5. Chữ ký hợp lệ khi và chỉ khi H2(M ‖ w′, N) = h.

Một lần nữa tính song tuyến khép vòng: u = e(P1,P2)l·ks và gh = e(P1,P2)ks·h, nên w′ = e(P1,P2)ks·(l+h) = e(P1,P2)ks·r = w.

Dựa trên định danh so với dựa trên chứng chỉ (IBE so với PKI)

Đây là quyết định thực sự quan trọng khi chọn SM9. Cả hai thế giới đều cho bạn mã hóa khóa công khai và chữ ký; khác nhau ở niềm tin nằm ở đâu:

Khía cạnhPKI / chứng chỉ (thế giới SM2, RSA)Dựa trên định danh (SM9)
Khóa công khai của bob@…Một khối 65+ byte nằm trong chứng chỉ, lấy từ thư mục hoặc chính người nhậnChính chuỗi bob@example.com; bên kiểm chứng tính khóa từ nó
Gốc tin cậyMột hệ phân cấp CA; mọi chuỗi phải hợp lệ đến một gốcMột khóa công khai chủ KGC cho cả miền
Mã hóa trước khi người nhận có khóa?Không — trước hết bạn cần chứng chỉ hợp lệ của BobCó — mã hóa ngay; Bob đăng ký và giải mã sau
Khóa riêng người dùng được sinh bởiMáy tính hoặc thiết bị của chính người dùng (thường không bao giờ rời khỏi nó)KGC, tập trung, từ định danh
Ký quỹ khóaKhông có theo thiết kếVốn có: KGC có thể suy ra mọi khóa riêng của người dùng
Thu hồiCRL / OCSP cho mỗi chứng chỉKhông có tương đương; thực hành thường là nhúng cửa sổ hiệu lực vào ID (ví dụ bob@example.com|2026) để khóa hết hạn theo cấu trúc
Chi phí mỗi thao tácSố học ECC thuần — nhanhMột ghép cặp song tuyến — chậm hơn phép nhân vô hướng nhiều bậc độ lớn
Tiêu chuẩnX.509 / RFC 5280; SM2 theo GB/T 32918GB/T 38635.1/.2-2020 (trước đây GM/T 0044-2016)
Môi trường tự nhiênInternet mở: TLS, ký mã, PKI tổng quátHệ sinh thái khép kín: nhắn tin của một ngân hàng, email của một cơ quan, định danh đội xe/thiết bị — nơi một cơ quan trung ương được chấp nhận và mã hóa không cần đăng ký mang lại lợi ích

Quy tắc ngón tay cái: SM9 mang lại quản lý khóa không cần chứng chỉ với cái giá là ký quỹ khóa và toán học chậm hơn. Nếu bạn không chấp nhận được một bên thứ ba có thể đọc mọi thứ hoặc giả mạo bất kỳ ai, hãy ở lại với chứng chỉ SM2; nếu mục tiêu là mã hóa không cần đăng ký trong một tổ chức, SM9 chính là công cụ đó.

Tham số hệ thống SM9 (đường cong BN 256-bit chính thức)

Bộ tham số từ GB/T 38635.1-2020 (cũng có trong GM/T 0044.5-2017). Đây là các giá trị tham chiếu chỉ đọc — phần tự kiểm tra bên dưới kiểm tra lại mọi hằng số trên trang này với các giá trị đã được xác minh độc lập:

MụcGiá trị
Đường congĐường cong Barreto–Naehrig (BN) E: y2 = x3 + b trên Fp, b = 05
Tham số t của đường cong60000000 0058F98A
Số nguyên tố trường pB6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
Cấp nhóm NB6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
Tham số hóap = 36t4 + 36t3 + 24t2 + 6t + 1; N = 36t4 + 36t3 + 18t2 + 6t + 1
Cofactor1
Bậc nhúng k12 (tháp trường Fp → Fp2 → Fp4 → Fp12)
Ghép cặpGhép cặp R-ate e: G1 × G2 → GT, cả ba nhóm đều có cấp N
Sinh nhóm G1 P1 (trên E)x = 93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD
y = 21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616
Sinh nhóm G2 P2 (trên đường xoắn E′: y2 = x3 + 5·u trên 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
(các phần tử Fp2 viết dưới dạng c0 + c1·u)
Hàm băm / KDFH1, H2 và KDF được xây trên SM3 (GB/T 32905-2016); hid là định danh hàm một byte do KGC chọn
SM9 nằm ở đâu trong bộ SM
  • SM9 (trang này) — kẻ phá vỡ quản lý khóa: định danh thay vì chứng chỉ, KGC thay vì hệ phân cấp CA.
  • SM3 — hàm băm; H1/H2/KDF của SM9 được xây trên nó. Tính bản tóm tắt ở trang SM3.
  • SM4 — mật mã khối thường mã hóa dữ liệu khối dưới khóa mà KDF của SM9 tạo ra. Thử trên trang SM4.
  • SM2 — đối tác thế giới chứng chỉ: cùng công việc (ký, mã hóa) với ECC thông thường và một PKI đứng sau. Máy tính đầy đủ ở trang SM2.
Lưu ý tuân thủ: SM9 là lựa chọn về tính độc lập của bộ và quản lý khóa cho các triển khai được quản lý của Trung Quốc, có độ mạnh tương đương các hệ thống khoảng 128-bit khác. Khi triển khai sản xuất phải coi khóa chủ KGC là báu vật — thường được giữ trong HSM, chia cho nhiều người được ủy thác, hoặc cả hai.
Những hiểu lầm phổ biến
  • "Định danh là khóa công khai, nên ai cũng giải mã được thư của tôi." Không — bất kỳ ai cũng có thể mã hóa cho định danh và xác minh chữ ký từ nó; chỉ người nắm khóa riêng do KGC cấp mới giải mã hoặc ký được. KGC kiểm tra Bob thật sự là ai trước khi trao deB.
  • Bỏ qua ký quỹ khóa. Khóa chủ KGC bị lộ nghĩa là kẻ tấn công có thể âm thầm suy ra mọi khóa riêng của người dùng — giải mã toàn bộ và mạo danh toàn bộ cho miền. Đây là thiết kế có chủ ý (đó là cách mật mã dựa trên định danh hoạt động), không phải lỗi để vá. Giảm thiểu về vận hành: HSM, KGC ngưỡng chia cho nhiều thực thể, nhật ký kiểm toán cấp phát nghiêm ngặt.
  • Giả định chuỗi định danh dễ tha thứ. Nó được băm đúng từng byte: Bob@Example.COM, bob@example.com và " bob@example.com" là ba khóa công khai khác nhau với ba khóa riêng khác nhau. Hãy cố định một định dạng chuẩn trước khi triển khai — và cân nhắc gắn thêm cửa sổ hiệu lực để thu hồi.
  • "Đường cong 256-bit, nên có độ an toàn 256-bit." Mật mã dựa trên ghép cặp không mở rộng như ECC thường: các tấn công hoạt động trong các trường Fp12/Fp6 khổng lồ, nơi các thuật toán index-calculus (dưới lũy thừa) áp dụng được. Các phân tích công bố đặt đường cong BN 256-bit quanh lớp an toàn ~100–128-bit, và các nhà nghiên cứu đã đề xuất tham số BN lớn hơn cho SM9 (ví dụ "Searching BN Curves for SM9", 2019). Hãy coi SM9 xấp xỉ lớp AES-128 — vững chắc, nhưng không phải pháo đài 256-bit.
  • Mong đợi nó có trong OpenSSL. OpenSSL triển khai SM2/SM3/SM4 nhưng không có SM9. Các ngăn xếp mã nguồn mở hoạt động gồm GmSSL và Bouncy Castle.
Câu hỏi thường gặp

SM9 có phải phát minh của Trung Quốc không? Khái niệm thì không: Shamir đề xuất mật mã dựa trên định danh năm 1984, và Boneh–Franklin (2001) xây IBE dựa trên ghép cặp thực dụng đầu tiên. SM9 (GM/T 0044-2016, rồi GB/T 38635.1/.2-2020) là hiện thân tiêu chuẩn quốc gia Trung Quốc của dòng dõi đó.

Vì sao trang này không có máy tính SM9? Không như SM2/SM3/SM4, SM9 cần một ghép cặp song tuyến: một tháp mở rộng trường Fp12, vòng lặp Miller và lũy thừa cuối — vài nghìn dòng mã số lớn cẩn thận. Nó nằm trong lộ trình họ; cho đến lúc đó trang này ghi lại thuật toán, còn các trang liên quan tính phần còn lại của bộ trong trình duyệt.

SM9 có thể thay SM2, SM3 và SM4 không? Không — chúng giải các bài toán khác nhau. SM9 thay hạ tầng chứng chỉ, không thay các nguyên thủy: bên trong nó dựa vào SM3 để băm và suy khóa, và khóa khối được bọc thường điều khiển SM4. SM2 vẫn là đáp án khi cần trách nhiệm kiểu chứng chỉ mà không có ký quỹ khóa.

Chính xác hid là gì? Một định danh hàm một byte (do KGC chọn và công bố) được trộn vào mọi băm H1. Vì khóa ký, khóa mã hóa và khóa trao đổi khóa băm định danh cùng các giá trị hid khác nhau, một khóa người dùng bị lộ chỉ làm hỏng đúng chức năng đó.

Định danh bị thu hồi như thế nào? Không có cơ chế CRL trong SM9. Thực hành chuẩn: nhúng hạn sử dụng vào chính định danh (bob@example.com|2026-Q4) để khóa phải được cấp lại định kỳ, và để KGC đơn giản ngừng cấp cho các định danh đã thu hồi.

SM9 thực sự được dùng ở đâu? Trong các lĩnh vực được quản lý ở Trung Quốc — ngân hàng, chính phủ và nhắn tin ngành — thường trong các hệ sinh thái khép kín nơi một cơ quan duy nhất được chấp nhận và "mã hóa tới một địa chỉ email hôm nay, đăng ký người dùng ngày mai" đáng với chi phí ghép cặp.

Tự kiểm tra
Đây là trang chỉ đọc, nên phần tự kiểm tra xác minh chính trang: mọi hằng số đường cong hiển thị ở trên được kiểm tra lại với các giá trị đã xác minh độc lập (số nguyên tố p và cấp N được tính lại từ tham số hóa BN, cả hai sinh nhóm được kiểm tra nằm trên đường cong với cấp N), các số tiêu chuẩn, bất biến mẫu (không có DOCTYPE, dấu hiệu bản dựng), liên kết chéo và sự hiện diện của mục hỏi đáp.