SM2 es la curva elíptica china de 256 bits, que se usa con los algoritmos de firma y de intercambio de claves SM2 y con el hash SM3.
SM2 es una curva de Weierstrass corta y² = x³ + ax + b sobre un campo primo de 256 bits, con un subgrupo de orden primo de 256 bits y cofactor 1; su nivel de seguridad estimado es de 128 bits. Estado: segura, pero regional o de nicho.
La curva es y² = x³ − 3x + b sobre p = 2^256 − 2^224 − 2^96 + 2^64 − 1; la publicó en 2010 la Oficina de Administración Estatal de Criptografía Comercial de China (OSCCA) y se estandarizó como GB/T 32918. OpenSSL la llama SM2 y TLS la incluye como curveSM2.
El algoritmo de firma SM2 no es ECDSA: el firmante primero calcula el hash de un identificador de usuario y de la clave pública para obtener un valor Z_A que se antepone al mensaje, y la ecuación de firma es distinta, así que una clave SM2 no puede comprobarse con un verificador ECDSA. El RFC 8998 lleva SM2 y SM3 a TLS 1.3 (grupo 41, esquema de firma sm2sig_sm3), y el RFC 9563, a DNSSEC como algoritmo 17.