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 при этом не найдено.