Как я могу объединить два частных или открытых ключа ECDSA в один? Я знаю, что это сделано с модульным добавлением в openssl, я просто не понимаю, как это работает. Может ли кто-нибудь объяснить это мне?Сочетание ключей ECDSA
0
A
ответ
2
Вы можете сделать это путем добавления двух закрытых ключей,
privkey = privateA + privateB (mod order)
или, в OpenSSL код:
BN_mod_add_quick(privkey, privateA, privateB, order);
Здесь order
наименьшее число, где order = s - j
, так что sP = jP
для точки Р эллиптическая кривая. Открытый ключ вашего нового секретного ключа pubkey = privkey * G
, или:
EC_POINT_mul(group, pubkey, privkey, NULL, NULL, ctx);
Значение order
и генератор точка G
являются параметрами кривых и устанавливаются при создании и настройки group
(объекта EC_GROUP).
0
ECDSA закрытый ключ - это всего лишь номер, порядок базовой точки. Вы можете просто добавить два закрытых ключа (например, числа), уменьшив сумму по модулю базового точечного порядка и увеличив базовую точку до этого порядка. Но зачем вам это нужно?
Для ключей с ключом с нулевым доверием. privateA + privateB == publicA + publicB. Однако я не следую вашему ответу. Что значит порядок базовой точки? –
Порядок базовой точки есть, хмм, просто порядок базовой точки :) Или порядок порядка, порядок группы эллиптических точек кривой, а не какие синонимы у него есть. Базовая точка G, добавленная к себе N раз (где N - порядок), произведет ту же точку G. –