Criptografía basada en identidad SM9 (IBC)

SM9 es el miembro basado en identidad del conjunto SM chino: cualquier cadena — una dirección de correo, un número de teléfono, el número de serie de un dispositivo — funciona directamente como clave pública, y un Centro de Generación de Claves emite las claves privadas correspondientes. Esta es una página de explicación de solo lectura: cómo funcionan paso a paso el IBE y la IBS, cómo se compara la criptografía basada en identidad con los certificados PKI y los parámetros oficiales de la curva.
Calculadora prevista. Una calculadora SM9 en el navegador figura en la hoja de ruta de la familia criptográfica — la maquinaria de emparejamiento (la torre de cuerpos de extensión Fp12, el bucle de Miller, la exponenciación final) es un núcleo propio. Mientras tanto, las páginas hermanas calculan SM2, SM3 y SM4 por completo en su navegador.
¿Qué es SM9?
En una frase: SM9 es el estándar nacional chino de criptografía basada en identidad (GB/T 38635.1/.2-2020, sucesor de la serie GM/T 0044-2016): la clave pública es una cadena de identidad como bob@example.com, la clave privada correspondiente la emite un Centro de Generación de Claves (KGC) de confianza, y la matemática que lo hace posible es un emparejamiento bilineal sobre una curva BN de 256 bits.

La criptografía de clave pública convencional (RSA, SM2, ECC) responde a la pregunta «¿es esta realmente la clave de Bob?» con certificados: una jerarquía de CA avala que cierto bloque de clave con aspecto aleatorio pertenece a Bob. La criptografía basada en identidad invierte esto: el propio nombre es el material de clave. Cualquiera que conozca la dirección de correo de Bob puede cifrarle o verificar sus firmas sin descargar nada — sin directorio de certificados, sin validación de cadena de confianza. El precio es un tercero de confianza que puede derivar todas las claves privadas, y una matemática mucho más pesada. SM9 es la instanciación estandarizada china de ese intercambio.

Los participantes: quién tiene qué
PapelQué es
Identidad (ID)Cualquier cadena de bytes, p. ej. bob@example.com, usada directamente como clave pública. Debe ser canónica: exacta byte a byte, sin dos grafías de la misma persona.
KGCCentro de Generación de Claves: guarda la clave privada maestra, verifica a quién pertenece una identidad y emite la clave privada de usuario correspondiente.
Pares de claves maestrosDos pares independientes: firma (secreto ks, público Ppub-s = [ks]P2) y cifrado (secreto ke, público Ppub-e = [ke]P1). Observe la asimetría deliberada: una clave pública maestra vive en G2 y la otra en G1.
Clave privada de usuarioUn punto sobre la curva, derivado de la ID por el KGC. La clave de firma dsA vive en G1; la clave de descifrado deB vive en G2.
hidUn identificador de función de un byte que se mezcla en cada derivación de claves, de modo que una misma identidad produce claves criptográficamente independientes para firma, cifrado e intercambio de claves.
H1, H2, KDFFunciones auxiliares basadas en SM3 (GB/T 32905): correspondencias de hash a entero y la función de derivación de claves.
Emparejamiento eEl emparejamiento bilineal R-ate e: G1 × G2 → GT sobre la curva BN de 256 bits definida más abajo. El motor algebraico de todo el esquema.
Cómo funciona el cifrado basado en identidad (IBE) de SM9

Alice quiere enviar un secreto a bob@example.com — posiblemente antes de que Bob se haya inscrito nunca en el KGC:

1. Alice deriva ella misma la clave pública de Bob: QB = [H1(IDB ‖ hid, N)]P1 + Ppub-e. Sin búsqueda en directorios, sin descargar certificados — le bastan la cadena de identidad y la clave maestra pública.
2. Efímero: un r aleatorio; calcule el punto C1 = [r]QB.
3. Emparejamiento: g = e(Ppub-e, P2), y después w = gr.
4. Claves: K = KDF(C1 ‖ w ‖ IDB, klen) (basada en SM3), dividida en K1 (clave de envoltura) y K2 (clave MAC).
5. Enmascarar: C2 = el mensaje combinado mediante XOR (o cifrado) con K1; C3 = MAC(K2, C2). El cifrado agrupa C1, C3 y C2.
6. Bob, cuando se inscribe: el KGC verifica que realmente es bob@example.com y emite deB = [ke·(H1(IDB ‖ hid, N) + ke)-1]P2. Después calcula w′ = e(C1, deB), reconstruye la misma K, comprueba el MAC y desenmascara el mensaje.

Por qué funciona: por bilinealidad, e(C1, deB) = e([r(H1+ke)]P1, [ke/(H1+ke)]P2) = e(P1, P2)r·ke = w — exactamente el valor que Alice incorporó a la KDF. La parte elegante es el paso 6: el cifrado no necesita inscripción previa. Alice puede sellar un mensaje hoy; Bob solo puede abrirlo después de demostrar su identidad ante el KGC. La generación de claves diferida es la característica distintiva del IBE.

Cómo funcionan las firmas basadas en identidad (IBS) de SM9

Alice firma un mensaje M con su clave de firma dsA:

1. g = e(P1, Ppub-s); r aleatorio; w = gr.
2. h = H2(M ‖ w, N); l = (r − h) mod N (vuelva a intentarlo con un r nuevo si l = 0).
3. S = [l]dsA. La firma es el par (h, S).

Cualquiera que conozca la identidad de Alice la verifica sin ningún certificado:

4. P = [H1(IDA ‖ hid, N)]P2 + Ppub-s; u = e(S, P); w′ = u · gh.
5. La firma es válida exactamente cuando H2(M ‖ w′, N) = h.

De nuevo, la bilinealidad cierra el ciclo: u = e(P1,P2)l·ks y gh = e(P1,P2)ks·h, así que w′ = e(P1,P2)ks·(l+h) = e(P1,P2)ks·r = w.

Basado en identidad frente a basado en certificados (IBE frente a PKI)

Esta es la decisión que de verdad importa al elegir SM9. Ambos mundos le dan cifrado de clave pública y firmas; difieren en dónde reside la confianza:

AspectoPKI / certificados (mundo SM2, RSA)Basado en identidad (SM9)
Clave pública de bob@…Un bloque de 65 o más bytes dentro de un certificado, obtenido de un directorio o del propio destinatarioLa propia cadena bob@example.com; el verificador calcula la clave a partir de ella
Raíz de confianzaUna jerarquía de CA; cada cadena debe validarse hasta una raízUna clave pública maestra del KGC para todo el dominio
¿Cifrar antes de que el destinatario tenga clave?No — primero necesita su certificado válidoSí — cifre ahora; él se inscribe y descifra después
Clave privada generada porEl propio equipo o dispositivo del usuario (a menudo nunca sale de él)El KGC, de forma centralizada, a partir de la identidad
Depósito de claves (key escrow)Ninguno por diseñoInherente: el KGC puede derivar la clave privada de cada usuario
RevocaciónCRL / OCSP por certificadoNo hay equivalente; la práctica habitual incorpora ventanas de validez en la ID (p. ej. bob@example.com|2026), de modo que las claves caducan por construcción
Coste por operaciónAritmética ECC sencilla — rápidaUn emparejamiento bilineal — órdenes de magnitud más lento que una multiplicación escalar
EstándaresX.509 / RFC 5280; SM2 bajo GB/T 32918GB/T 38635.1/.2-2020 (antes GM/T 0044-2016)
Hábitat naturalInternet abierta: TLS, firma de código, PKI generalEcosistemas cerrados: la mensajería de un banco, el correo de una agencia, la identidad de flotas o dispositivos — donde una autoridad central es aceptable y el cifrado sin inscripción compensa

Regla práctica: SM9 le ofrece gestión de claves sin certificados a cambio de depósito de claves y matemáticas más lentas. Si no puede aceptar a un tercero que pueda leerlo todo o suplantar a cualquiera, quédese con certificados SM2; si el objetivo es el cifrado sin inscripción dentro de una organización, SM9 es exactamente esa herramienta.

Parámetros del sistema SM9 (curva BN oficial de 256 bits)

El conjunto de parámetros de GB/T 38635.1-2020 (también en GM/T 0044.5-2017). Son valores de referencia de solo lectura — la autocomprobación de abajo vuelve a comprobar cada constante de esta página frente a valores verificados de forma independiente:

ElementoValor
CurvaCurva de Barreto–Naehrig (BN) E: y2 = x3 + b sobre Fp, b = 05
Parámetro de la curva t60000000 0058F98A
Primo del cuerpo pB6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
Orden del grupo NB6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
Parametrizaciónp = 36t4 + 36t3 + 24t2 + 6t + 1; N = 36t4 + 36t3 + 18t2 + 6t + 1
Cofactor1
Grado de inmersión k12 (torre de cuerpos Fp → Fp2 → Fp4 → Fp12)
EmparejamientoEmparejamiento R-ate e: G1 × G2 → GT, los tres grupos de orden N
Generador de G1 P1 (sobre E)x = 93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD
y = 21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616
Generador de G2 P2 (sobre la torcida E′: y2 = x3 + 5·u sobre 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
(elementos de Fp2 escritos c0 + c1·u)
Hash / KDFH1, H2 y la KDF se construyen sobre SM3 (GB/T 32905-2016); hid es un identificador de función de un byte que elige el KGC
Dónde está SM9 dentro del conjunto SM
  • SM9 (esta página) — el elemento que revoluciona la gestión de claves: identidades en lugar de certificados, KGC en lugar de una jerarquía de CA.
  • SM3 — el hash; las funciones H1/H2/KDF de SM9 se construyen sobre él. Calcule resúmenes en la página de SM3.
  • SM4 — el cifrado de bloque que normalmente cifra los datos masivos con la clave que produce la KDF de SM9. Pruébelo en la página de SM4.
  • SM2 — la contrapartida del mundo de certificados: las mismas funciones (firmar, cifrar) con ECC corriente y una PKI detrás. Calculadora completa en la página de SM2.
Nota de cumplimiento: SM9 es una elección de independencia del conjunto y de gestión de claves para despliegues chinos regulados, comparable en fortaleza a otros sistemas de unos 128 bits. Los despliegues en producción deben tratar la clave maestra del KGC como la joya de la corona — normalmente guardada en un HSM, repartida entre varios fideicomisarios, o ambas cosas.
Ideas erróneas habituales
  • «La identidad es la clave pública, así que cualquiera puede descifrar mi correo». No — cualquiera puede cifrar para la identidad y verificar firmas de ella; solo el titular de la clave privada emitida por el KGC puede descifrar o firmar. El KGC comprueba quién es realmente Bob antes de entregar deB.
  • Ignorar el depósito de claves. Si se compromete la clave maestra del KGC, el atacante puede derivar en silencio todas las claves privadas de los usuarios — descifrado total y suplantación total para el dominio. Esto es por diseño (así funciona la criptografía basada en identidad), no es un fallo que parchear. Mitíguelo operativamente: HSM, KGC con umbral repartido entre entidades, registros de auditoría de emisión estrictos.
  • Suponer que la cadena de identidad es tolerante. Se hashea exacta byte a byte: Bob@Example.COM, bob@example.com y " bob@example.com" son tres claves públicas distintas con tres claves privadas distintas. Fije un formato canónico antes del despliegue — y considere añadir una ventana de validez para la revocación.
  • «Curva de 256 bits, así que seguridad de 256 bits». La criptografía basada en emparejamientos no escala como la ECC sencilla: los ataques funcionan en los campos enormes Fp12/Fp6, donde se aplican algoritmos de cálculo de índices (subexponenciales). Los análisis publicados sitúan las curvas BN de 256 bits en torno a la clase de seguridad de 100–128 bits, y los investigadores han propuesto parámetros BN más grandes para SM9 (p. ej. «Searching BN Curves for SM9», 2019). Trate SM9 como de la clase de AES-128 aproximadamente — sólido, pero no una fortaleza de 256 bits.
  • Esperarlo en OpenSSL. OpenSSL implementa SM2/SM3/SM4 pero no tiene SM9. Las pilas de código abierto que sí lo incluyen son GmSSL y Bouncy Castle.
Preguntas frecuentes

¿Es SM9 un invento chino? El concepto no: Shamir propuso la criptografía basada en identidad en 1984, y Boneh–Franklin (2001) construyó el primer IBE práctico basado en emparejamientos. SM9 (GM/T 0044-2016, después GB/T 38635.1/.2-2020) es la instanciación de estándar nacional chino de esa línea.

¿Por qué no hay en esta página una calculadora de SM9? A diferencia de SM2/SM3/SM4, SM9 necesita un emparejamiento bilineal: una torre de cuerpos de extensión Fp12, un bucle de Miller y una exponenciación final — varios miles de líneas de código cuidadoso con números grandes. Está en la hoja de ruta de la familia; mientras tanto, esta página documenta el algoritmo y las páginas hermanas calculan el resto del conjunto en el navegador.

¿Puede SM9 sustituir a SM2, SM3 y SM4? No — resuelven problemas distintos. SM9 sustituye la infraestructura de certificados, no las primitivas: internamente depende de SM3 para el hash y la derivación de claves, y la clave masiva envuelta suele usar SM4. SM2 sigue siendo la respuesta cuando se requiere responsabilidad al estilo de certificados sin depósito de claves.

¿Qué es exactamente hid? Un identificador de función de un byte (elegido y publicado por el KGC) que se mezcla en cada hash H1. Como las claves de firma, de cifrado y de intercambio hashean la identidad junto con valores hid distintos, una clave de usuario filtrada compromete solo esa función.

¿Cómo se revocan las identidades? SM9 no tiene un mecanismo CRL propio. La práctica estándar: incorporar la caducidad en la propia identidad (bob@example.com|2026-Q4) para que las claves deban reemitirse periódicamente, y que el KGC simplemente deje de emitir para las identidades revocadas.

¿Dónde se usa realmente SM9? En sectores chinos regulados — banca, administración y mensajería industrial — normalmente dentro de ecosistemas cerrados donde una sola autoridad es aceptable y «cifrar hoy para una dirección de correo, inscribir al usuario mañana» compensa el coste del emparejamiento.

Autocomprobación
Es una página de solo lectura, así que la autocomprobación verifica la propia página: cada constante de curva mostrada arriba se vuelve a comprobar frente a valores verificados de forma independiente (el primo p y el orden N recalculados a partir de la parametrización BN, ambos generadores comprobados sobre la curva con orden N), los números del estándar, los invariantes de la plantilla (sin DOCTYPE, marca de compilación), los enlaces cruzados y la presencia de las preguntas frecuentes.