Paramètres (SEC 2 §2.4.1) : p = 2²⁵⁶ − 2³² − 977, a = 0, b = 7, cofacteur 1, ordre du groupe juste inférieur à 2²⁵⁶. Sa structure particulière fournit un endomorphisme calculable efficacement (GLV) qui accélère la multiplication scalaire. Identifiants : OID 1.3.132.0.10, JOSE crv secp256k1 avec alg ES256K (RFC 8812), COSE −47. Elle n’est proposée ni dans TLS 1.3, ni dans WebCrypto, ni par la Secure Enclave d’Apple, ni dans la plupart des profils par défaut des HSM.
La NIST SP 800-186, annexe H.2, autorise secp256k1 « pour les applications liées à la blockchain ». Cette courbe sert aux signatures ECDSA et Schnorr BIP-340 de Bitcoin, aux transactions Ethereum, aux signatures personal_sign et EIP-712 (65 octets avec un octet de récupération v) et aux événements Nostr.
Les bibliothèques génériques y sont lentes : Node.js 26 avec OpenSSL 3.6.5 signe environ 6500 messages secp256k1 par seconde, contre environ 68 800 pour P-256 sur le même cœur d’Apple M4 Max, car OpenSSL n’a pas de code optimisé pour secp256k1. Utilisez libsecp256k1 (la bibliothèque en temps constant de Bitcoin Core) ou @noble/curves, qui, en JavaScript pur, exécute secp256k1 aussi vite que sa P-256. Les conventions des blockchains, comme la règle low-S et la récupération de la clé publique, diffèrent de l’ECDSA générique ; consultez la comparaison avec P-256.