Saltar al contenido
ecdsa.com

Cofactor

El cociente h = #E / n entre el número de puntos de una curva elíptica y el orden primo n del subgrupo que se usa en criptografía: 1 para las curvas P de NIST y secp256k1, 8 para Curve25519 y 4 para Curve448.
También se escribecurve cofactorsmall subgroup

Cuando h es mayor que 1, la curva contiene subgrupos pequeños, así que un punto que aporta la otra parte puede quedar fuera del subgrupo de orden primo. Los protocolos lo resuelven multiplicando por el cofactor (Diffie–Hellman con cofactor en SP 800-56A), ajustando (clamping) los escalares secretos a múltiplos del cofactor (X25519, Ed25519), comprobando la pertenencia al subgrupo o usando una abstracción de orden primo como ristretto255 o decaf448 (RFC 9496).

Errores reales: en 2017, el problema del cofactor de CryptoNote permitía que una sola salida de Monero produjera varias imágenes de clave válidas, lo que podría haber hecho posible el doble gasto hasta que se corrigió. Los verificadores de EdDSA que discrepan sobre las comprobaciones con cofactor y sin cofactor (el RFC 8032 §5.1.7 permite ambas) aceptan conjuntos distintos de firmas construidas por un adversario, algo que importa en los sistemas de consenso.

Las curvas de Weierstrass con cofactor 1 no tienen ninguno de estos problemas, y esa es una de las razones por las que las curvas de orden primo siguen siendo populares en protocolos que necesitan una semántica de grupo sencilla, como la computación multiparte y las funciones aleatorias verificables.

Estándares y referencias

Todos los términos