Pular para o conteúdo
ecdsa.com
RecomendadaWeierstrass curta

P-521

A P-521 (secp521r1) é a maior das curvas do NIST sobre campos primos, definida sobre o primo de Mersenne 2^521 − 1 — 521 bits, não 512.

P-521 é uma curva na forma curta de Weierstrass y² = x³ + ax + b sobre um campo primo de 521 bits com um subgrupo de ordem prima de 521 bits e cofator 1; o nível de segurança estimado é de 256 bits. Status: recomendada para sistemas novos.

A P-521 é y² = x³ − 3x + b sobre o campo do primo de Mersenne 2^521 − 1, o que transforma a redução modular em um deslocamento e uma adição. A ordem do grupo dela é um primo de 521 bits, o que dá cerca de 256 bits de segurança.

O tamanho incomum é uma armadilha para as implementações: as coordenadas e as chaves privadas ocupam 66 bytes, uma assinatura ECDSA bruta tem 132 bytes, e o ES512 do JOSE significa P-521 com SHA-512, embora os dois nomes sugiram 512 bits (RFC 7518 §3.4). Um código que preenche ou trunca para 64 bytes produz chaves e assinaturas que outras bibliotecas rejeitam.

Ela está registrada para o TLS (secp521r1, não marcada como recomendada pela IANA), o JOSE, o COSE (ES512, ESP512) e o SSH (ecdsa-sha2-nistp521), mas as implantações escolhem principalmente a P-256 ou a P-384, que são mais rápidas.

Nomes nos padrões

PadrãoNome
NIST FIPS 186-5 / SP 800-186P-521
SEC 2secp521r1
JOSE / COSEP-521
SSHnistp521

Identificadores de objeto

Parâmetros de domínio

campo primo de 521 bits · cerca de 256 bits de segurança

Primo p do campo
0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Coeficiente a
0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
Coeficiente b
0x51953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00
Coordenada x do ponto base
0xc6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66
Coordenada y do ponto base
0x11839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650
Ordem n do ponto base
0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409
Cofator h
0x1
Semente
0xd09e8800291cb85396cc6717393284aaa0da64ba

Usada em

  • TLS 1.3
  • X.509
  • JOSE (ES512)
  • COSE (ES512, ESP512)
  • SSH (ecdsa-sha2-nistp521)

Identificadores em registros

Grupos suportados do TLS
secp521r1 0x0019
Esquemas de assinatura do TLS
ecdsa_secp521r1_sha512 0x0603
Algoritmos JOSE
ES512HPKE-2HPKE-2-KE
Curvas JWK
P-521
Algoritmos COSE
ESP512 -52
Curvas elípticas COSE
P-521 3
Métodos de troca de chaves SSH
ecdh-sha2-nistp521gss-nistp521-sha512-*
Algoritmos de chave pública SSH
ecdsa-sha2-nistp521x509v3-ecdsa-sha2-nistp521
Identificadores de KEM do HPKE
DHKEM(P-521, HKDF-SHA512) 0x0012DHKEM(CP-521, HKDF-SHA512) 0x0015

Padrões e referências

Todas as curvas