Pular para o conteúdo
ecdsa.com

secp256k1

A curva elíptica de Koblitz de 256 bits y² = x³ + 7 (SEC 2), escolhida pelo Bitcoin e também usada no Ethereum e no Nostr, com cerca de 128 bits de segurança.
Também escrito comosecp256k1 curveBitcoin curveK-256

Parâmetros (SEC 2 §2.4.1): p = 2²⁵⁶ − 2³² − 977, a = 0, b = 7, cofator 1, ordem do grupo logo abaixo de 2²⁵⁶. A estrutura especial oferece um endomorfismo de cálculo eficiente (GLV), que acelera a multiplicação escalar. Identificadores: OID 1.3.132.0.10, JOSE crv secp256k1 com alg ES256K (RFC 8812), COSE −47. Ela não é oferecida no TLS 1.3, no WebCrypto, no Secure Enclave da Apple nem na maioria dos perfis padrão de HSMs.

O NIST SP 800-186, apêndice H.2, permite a secp256k1 “para aplicações relacionadas a blockchain”. É a curva das assinaturas ECDSA e Schnorr (BIP-340) do Bitcoin, das transações do Ethereum, das assinaturas personal_sign e EIP-712 (65 bytes, com um byte de recuperação v) e dos eventos do Nostr.

Bibliotecas genéricas são lentas com ela: o Node.js 26 com OpenSSL 3.6.5 assina cerca de 6.500 mensagens secp256k1 por segundo, contra cerca de 68.800 com P-256 no mesmo núcleo de um Apple M4 Max, porque o OpenSSL não tem código otimizado para a secp256k1. Use a libsecp256k1 (a biblioteca de tempo constante do Bitcoin Core) ou a @noble/curves, que, em JavaScript puro, executa a secp256k1 tão rápido quanto a P-256 da própria biblioteca. As convenções de blockchain, como low-S e a recuperação da chave pública, diferem das do ECDSA genérico; veja a comparação com a P-256.

Padrões e referências

Todos os termos