Saltar al contenido
ecdsa.com
RecomendadaWeierstrass corta

P-256

P-256 (secp256r1, prime256v1) es la curva elíptica más extendida: la usan TLS, X.509, JOSE ES256, WebAuthn y DNSSEC.

P-256 es una curva de Weierstrass corta y² = x³ + ax + b sobre un campo primo de 256 bits, con un subgrupo de orden primo de 256 bits y cofactor 1; su nivel de seguridad estimado es de 128 bits. Estado: recomendada para sistemas nuevos.

P-256 es la curva de Weierstrass corta y² = x³ − 3x + b sobre el primo p = 2^256 − 2^224 + 2^192 + 2^96 − 1, cuya forma especial permite una reducción rápida. Su grupo tiene orden primo (cofactor 1) de unos 2^256, lo que da aproximadamente 128 bits de seguridad. La misma curva lleva tres nombres: P-256 (NIST, JOSE, COSE), secp256r1 (SEC 2, TLS) y prime256v1 (ANSI X9.62, OpenSSL).

Una clave pública es un punto: 65 bytes en formato sin comprimir (0x04 ‖ x ‖ y) o 33 bytes en formato comprimido. Una firma ECDSA ocupa 64 bytes como r ‖ s en bruto (JOSE, WebCrypto) y normalmente de 70 a 72 bytes en DER (X.509, TLS, OpenSSL, aserciones de WebAuthn); confundir las dos codificaciones es uno de los errores de interoperabilidad más comunes, y el conversor DER ⇄ raw convierte de una a otra.

La compatibilidad en hardware es amplia: el Secure Enclave de Apple solo crea claves P-256, y las llaves de seguridad FIDO2 y los autenticadores de plataforma suelen crear llaves de acceso P-256 (algoritmo COSE −7, ES256). Como en las demás curvas NIST, b se derivó con SHA-1 de una semilla cuyo origen no está documentado, y esa es una de las razones por las que algunos diseñadores de protocolos prefieren Curve25519; no se ha encontrado ninguna debilidad en P-256.

Nombres en los estándares

EstándarNombre
NIST FIPS 186-5 / SP 800-186P-256
SEC 2secp256r1
ANSI X9.62prime256v1
JOSE / COSEP-256
SSHnistp256

Identificadores de objeto

Parámetros de dominio

campo primo de 256 bits · seguridad de unos 128 bits

Primo del campo p
0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff
Coeficiente a
0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc
Coeficiente b
0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b
Punto base x
0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296
Punto base y
0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5
Orden n del punto base
0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551
Cofactor h
0x1
Semilla
0xc49d360886e704936a6678e1139d26b7819f7e90

Se usa en

  • TLS 1.3
  • X.509 / Web PKI
  • JOSE (ES256)
  • COSE (ES256, ESP256)
  • SSH (ecdsa-sha2-nistp256)
  • DNSSEC (algorithm 13)
  • WebAuthn / passkeys
  • Apple Secure Enclave

Identificadores en registros

Grupos admitidos de TLS
secp256r1 0x0017SecP256r1MLKEM512 0x11E9SecP256r1MLKEM768 0x11EBSecP256r1Kyber768Draft00 0x639A
Esquemas de firma de TLS
ecdsa_secp256r1_sha256 0x0403
Algoritmos JOSE
ES256HPKE-0HPKE-0-KEHPKE-7HPKE-7-KE
Curvas JWK
P-256
Algoritmos COSE
ESP256 -9
Curvas elípticas COSE
P-256 1
Métodos de intercambio de claves SSH
ecdh-sha2-nistp256gss-nistp256-sha256-*mlkem768nistp256-sha256
Algoritmos de clave pública SSH
ecdsa-sha2-nistp256x509v3-ecdsa-sha2-nistp256
Números de algoritmo DNSSEC
ECDSAP256SHA256 13
Identificadores KEM de HPKE
DHKEM(P-256, HKDF-SHA256) 0x0010DHKEM(CP-256, HKDF-SHA256) 0x0013MLKEM768-P256 0x0050

Estándares y referencias

Todas las curvas