2013-04-24 3 views
0

Как я могу объединить два частных или открытых ключа ECDSA в один? Я знаю, что это сделано с модульным добавлением в openssl, я просто не понимаю, как это работает. Может ли кто-нибудь объяснить это мне?Сочетание ключей ECDSA

ответ

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 закрытый ключ - это всего лишь номер, порядок базовой точки. Вы можете просто добавить два закрытых ключа (например, числа), уменьшив сумму по модулю базового точечного порядка и увеличив базовую точку до этого порядка. Но зачем вам это нужно?

+0

Для ключей с ключом с нулевым доверием. privateA + privateB == publicA + publicB. Однако я не следую вашему ответу. Что значит порядок базовой точки? –

+0

Порядок базовой точки есть, хмм, просто порядок базовой точки :) Или порядок порядка, порядок группы эллиптических точек кривой, а не какие синонимы у него есть. Базовая точка G, добавленная к себе N раз (где N - порядок), произведет ту же точку G. –