Перейти к содержимому
ecdsa.com
РекомендуемаяКороткая форма Вейерштрасса

P-256

P-256 (secp256r1, prime256v1) — самая распространённая эллиптическая кривая: её используют TLS, X.509, ES256 в JOSE, WebAuthn и DNSSEC.

P-256 — кривая в короткой форме Вейерштрасса y² = x³ + ax + b над 256-битным простым полем с 256-битной подгруппой простого порядка и кофактором 1; оценочный уровень стойкости — 128 бит. Статус: рекомендуется для новых систем.

P-256 — кривая y² = x³ − 3x + b в короткой форме Вейерштрасса над полем по модулю простого числа p = 2^256 − 2^224 + 2^192 + 2^96 − 1; особый вид этого числа позволяет быстро выполнять приведение по модулю. Группа кривой имеет простой порядок (кофактор 1) около 2^256, что даёт примерно 128 бит стойкости. У одной и той же кривой три названия: P-256 (NIST, JOSE, COSE), secp256r1 (SEC 2, TLS) и prime256v1 (ANSI X9.62, OpenSSL).

Открытый ключ — это точка: 65 байт в несжатом виде (0x04 ‖ x ‖ y) или 33 байта в сжатом. Подпись ECDSA занимает 64 байта в формате raw r ‖ s (JOSE, WebCrypto) и обычно 70–72 байта в DER (X.509, TLS, OpenSSL, assertion в WebAuthn). Путаница между этими двумя кодировками — одна из самых частых ошибок совместимости, а конвертер DER ⇄ raw преобразует одну в другую.

Аппаратная поддержка широкая: Secure Enclave от Apple создаёт только ключи P-256, а ключи безопасности FIDO2 и платформенные аутентификаторы обычно создают ключи доступа на P-256 (алгоритм COSE −7, ES256). Как и у других кривых NIST, коэффициент b получен из seed с помощью SHA-1, а откуда взялся этот seed, не задокументировано; это одна из причин, по которым некоторые разработчики протоколов предпочитают Curve25519. Слабостей в самой P-256 при этом не найдено.

Названия в стандартах

СтандартНазвание
NIST FIPS 186-5 / SP 800-186P-256
SEC 2secp256r1
ANSI X9.62prime256v1
JOSE / COSEP-256
SSHnistp256

Идентификаторы объектов

Параметры кривой

256-битное простое поле · примерно 128-битная стойкость

Простой модуль поля p
0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff
Коэффициент a
0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc
Коэффициент b
0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b
Координата x базовой точки
0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296
Координата y базовой точки
0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5
Порядок n базовой точки
0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551
Кофактор h
0x1
Seed
0xc49d360886e704936a6678e1139d26b7819f7e90

Где используется

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

Идентификаторы в реестрах

Поддерживаемые группы TLS
secp256r1 0x0017SecP256r1MLKEM512 0x11E9SecP256r1MLKEM768 0x11EBSecP256r1Kyber768Draft00 0x639A
Схемы подписи TLS
ecdsa_secp256r1_sha256 0x0403
Алгоритмы JOSE
ES256HPKE-0HPKE-0-KEHPKE-7HPKE-7-KE
Кривые JWK
P-256
Алгоритмы COSE
ESP256 -9
Эллиптические кривые COSE
P-256 1
Методы обмена ключами SSH
ecdh-sha2-nistp256gss-nistp256-sha256-*mlkem768nistp256-sha256
Алгоритмы открытых ключей SSH
ecdsa-sha2-nistp256x509v3-ecdsa-sha2-nistp256
Номера алгоритмов DNSSEC
ECDSAP256SHA256 13
Идентификаторы KEM в HPKE
DHKEM(P-256, HKDF-SHA256) 0x0010DHKEM(CP-256, HKDF-SHA256) 0x0013MLKEM768-P256 0x0050

Стандарты и ссылки

Все кривые