Saltar al contenido
ecdsa.com

secp256k1

La curva elíptica de Koblitz de 256 bits y² = x³ + 7 de SEC 2, elegida por Bitcoin y usada también por Ethereum y Nostr, con unos 128 bits de seguridad.
También se escribesecp256k1 curveBitcoin curveK-256

Parámetros (SEC 2 §2.4.1): p = 2²⁵⁶ − 2³² − 977, a = 0, b = 7, cofactor 1 y un orden del grupo justo por debajo de 2²⁵⁶. Su estructura especial ofrece un endomorfismo calculable de forma eficiente (GLV) que acelera la multiplicación escalar. Identificadores: OID 1.3.132.0.10, crv secp256k1 de JOSE con alg ES256K (RFC 8812) y COSE −47. No está disponible en TLS 1.3, WebCrypto, el Secure Enclave de Apple ni en la mayoría de los perfiles predeterminados de los HSM.

NIST SP 800-186, apéndice H.2, permite secp256k1 «para aplicaciones relacionadas con blockchain». Sobre ella funcionan las firmas ECDSA y Schnorr BIP-340 de Bitcoin, las transacciones de Ethereum, las firmas personal_sign y EIP-712 (65 bytes con un byte de recuperación v) y los eventos de Nostr.

Las bibliotecas genéricas son lentas con ella: Node.js 26 con OpenSSL 3.6.5 firma unos 6500 mensajes secp256k1 por segundo, frente a unos 68.800 con P-256 en el mismo núcleo de un Apple M4 Max, porque OpenSSL no tiene código optimizado para secp256k1. Usa libsecp256k1 (la biblioteca de tiempo constante de Bitcoin Core) o @noble/curves, que en JavaScript puro ejecuta secp256k1 tan rápido como su P-256. Las convenciones de blockchain, como low-S y la recuperación de la clave pública, difieren del ECDSA genérico; consulta la comparación con P-256.

Estándares y referencias

Todos los términos