Перейти к содержимому
ecdsa.com

ECDSA (алгоритм подписи на эллиптических кривых)

Вариант DSA на эллиптических кривых, описанный в FIPS 186-5 и SEC 1: подпись — пара целых чисел (r, s), которую вычисляют с помощью закрытого скаляра и нового секретного nonce (одноразового числа).
Другие написанияElliptic Curve Digital Signature AlgorithmECDSA signature

Ключи — закрытый скаляр d в диапазоне 1…n−1 и открытая точка Q = d·G, где G — базовая точка кривой, а n — её простой порядок. Чтобы подписать хеш z, подписант выбирает секретный nonce k, принимает за r координату x точки k·G по модулю n и вычисляет s = k⁻¹·(z + r·d) mod n; проверяющая сторона вычисляет u₁ = z·s⁻¹ и u₂ = r·s⁻¹ и проверяет, что координата x точки u₁·G + u₂·Q равна r (FIPS 186-5, § 6.4). Хеш усекается до битовой длины n, поэтому при SHA-512 с P-256 используются только его левые 256 бит.

Распространённые идентификаторы: в X.509 ecdsa-with-SHA256 — это 1.2.840.10045.4.3.2 (SHA-384: …4.3.3, SHA-512: …4.3.4); в JOSE — ES256, ES384, ES512 и ES256K; в COSE — −7, −35, −36 и −47; в TLS 1.3 — ecdsa_secp256r1_sha256 (0x0403). Обычные кривые — P-256, P-384, P-521 и, для блокчейнов, secp256k1.

Одна и та же подпись встречается в двух кодировках: формат raw r‖s фиксированной длины (64 байта для P-256; JOSE, WebCrypto, COSE) и ASN.1 DER SEQUENCE из двух INTEGER (70–72 байта для P-256; X.509, TLS, OpenSSL, Java). Для любой верной пары (r, s) проверку проходит и пара (r, n − s), поэтому блокчейны требуют подписей low-S.

Слабое место — nonce: повторный или слегка смещённый k раскрывает закрытый ключ, поэтому современные библиотеки выводят его детерминированно (RFC 6979, одобренный в FIPS 186-5, § 6.3.2) или дополняют случайностью (hedging). На одном ядре Apple M4 Max OpenSSL 3.6.5 создаёт около 87 000 подписей P-256 и выполняет около 29 000 проверок в секунду. NIST IR 8547 (первый публичный черновик) предлагает запретить ECDSA при любом уровне стойкости после 2035 года, потому что алгоритм Шора его взламывает.

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

Инструменты

Сравнения

Термины

Библиотеки

Кривые

Статьи

Рецепты

Ошибки

Все термины