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

ECDH (протокол DH на эллиптических кривых)

Согласование ключей, при котором каждая сторона комбинирует свой закрытый ключ на эллиптической кривой с открытым ключом другой стороны и получает один и тот же общий секрет — координату x точки d_A·d_B·G.
Другие написанияElliptic Curve Diffie-HellmanECDH key agreementECC CDH

У каждой стороны есть закрытый скаляр d и открытая точка Q = d·G; обе вычисляют Z — координату x точки d_A·Q_B = d_B·Q_A. Z ещё не ключ: его пропускают через функцию формирования ключа, например HKDF (TLS 1.3), одношаговую KDF из SP 800-56C или Concat KDF (JOSE ECDH-ES). NIST SP 800-56A Rev. 3 определяет сам примитив и варианты схемы (эфемерный ключ с эфемерным, эфемерный со статическим и т. д.).

Получатель обязан проверить точку другой стороны: она лежит на кривой, не является бесконечно удалённой точкой и принадлежит нужной подгруппе (SP 800-56A, § 5.6.2.3). Без этой проверки возможны атаки с недопустимой кривой (invalid curve), которые извлекают статический закрытый ключ за несколько сотен запросов; в 2017 году они затронули ECDH-ES в нескольких библиотеках JOSE. Благодаря устройству X25519 проверка сводится к отказу от результата из одних нулей.

Эфемерные ключи (ECDHE) обеспечивают прямую секретность, и в TLS 1.3 используются только они; ECDH со статическим ключом получателя применяется в ECIES, JWE ECDH-ES и HPKE. Используемые группы — secp256r1, secp384r1, x25519 и x448. У ECDH и ECDSA общие кривые и форматы ключей, но SP 800-57, часть 1, рекомендует использовать каждый ключ только для одной цели. NIST IR 8547 (черновик) предлагает запретить ECDH после 2035 года; путь миграции — гибридные схемы, например X25519MLKEM768.

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

Все термины