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

EdDSA (алгоритм подписи на кривых Эдвардса)

Схема подписи типа Schnorr на скрученных кривых Эдвардса, описанная в RFC 8032 и одобренная в FIPS 186-5; два её стандартных варианта — Ed25519 и Ed448.
Другие написанияEdwards-curve Digital Signature AlgorithmPureEdDSA

Закрытый ключ — это seed (32 байта для Ed25519, 57 для Ed448). Его хеш даёт секретный скаляр s и префикс; при подписании вычисляются nonce r = H(prefix ‖ M), R = r·B, challenge k = H(R ‖ A ‖ M) и S = (r + k·s) mod L, а подпись — это R ‖ S (64 байта для Ed25519, 114 для Ed448; RFC 8032, § 5.1.6 и § 5.2.6). Nonce вычисляется из ключа и сообщения, поэтому EdDSA не нуждается в случайности при подписании и не может повторить nonce для разных сообщений.

PureEdDSA (Ed25519, Ed448) подписывает само сообщение и читает его дважды; HashEdDSA (Ed25519ph, Ed448ph) вместо этого подписывает дайджест SHA-512 или SHAKE256; Ed25519ctx и Ed448 принимают строку контекста длиной до 255 байт для разделения доменов. EdDSA и HashEdDSA (§ 7.8) одобрены в FIPS 186-5, § 7.

Проверка подписи устроена менее единообразно, чем подписание. RFC 8032, § 5.1.7, требует, чтобы S было меньше порядка группы L, и допускает как уравнение с кофактором [8][S]B = [8]R + [8][k]A', так и уравнение без кофактора, а библиотеки по-разному обрабатывают точки малого порядка и кодировки, отличные от канонической формы. Поэтому системы консенсуса фиксируют один набор правил, например ZIP 215 в Zcash.

Идентификаторы: OID в X.509 — 1.3.101.112 (Ed25519) и 1.3.101.113 (Ed448) из RFC 8410; значения alg в JOSE — Ed25519 и Ed448 из RFC 9864, который объявляет устаревшим полиморфный EdDSA из RFC 8037; в COSE — −19 и −53 (и более старый −8); в TLS 1.3 — ed25519 (0x0807) и ed448 (0x0808); в SSH — ssh-ed25519. NIST IR 8547 (черновик) предлагает запретить EdDSA после 2035 года.

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

Все термины