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

Кофактор

Отношение h = #E / n числа точек эллиптической кривой к простому порядку n подгруппы, используемой в криптографии: 1 для P-кривых NIST и secp256k1, 8 для Curve25519, 4 для Curve448.
Другие написанияcurve cofactorsmall subgroup

Когда h больше 1, у кривой есть малые подгруппы, поэтому точка, полученная от другой стороны, может лежать вне подгруппы простого порядка. Протоколы решают эту проблему умножением на кофактор (кофакторный вариант Диффи — Хеллмана в SP 800-56A), приведением (clamping) секретных скаляров к числам, кратным кофактору (X25519, Ed25519), проверкой принадлежности подгруппе или абстракцией с простым порядком, например ristretto255 или decaf448 (RFC 9496).

Реальные ошибки: в 2017 году проблема с кофактором в CryptoNote позволяла получить для одного выхода Monero несколько действительных образов ключа (key images), что до исправления могло открыть путь к двойной трате. Реализации проверки EdDSA, которые по-разному выбирают между проверкой с кофактором и без него (RFC 8032, § 5.1.7 допускает оба варианта), принимают разные наборы специально подобранных подписей, а это важно для систем консенсуса.

У кривых Вейерштрасса с кофактором 1 этих проблем нет, и это одна из причин, по которым кривые простого порядка остаются популярными в протоколах, где нужна простая групповая семантика, например в многосторонних вычислениях и проверяемых случайных функциях.

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

Все термины