2013-04-24 101 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上一个点P椭圆曲线。新的私钥的公钥是pubkey = privkey * G,或者:

EC_POINT_mul(group, pubkey, privkey, NULL, NULL, ctx); 

order和发电机点G的值是曲线的参数以及创建和设置group(一个EC_GROUP对象)时设置。

0

ECDSA私钥 - 只是一个数字,是基点的顺序。 您可以添加两个私钥(即数字),减少求和求模基点顺序,并将基点指数赋给该顺序。 但为什么你需要这个?

+0

用于密钥的分裂密钥零信任生成。 privateA + privateB == publicA + publicB。不过,我不会按照你的回答。你是指什么基点的顺序? – 2013-04-24 22:15:23

+0

基点的顺序是,嗯,只是基点的顺序:)或者,曲线的顺序,椭圆曲线点的顺序,不知道它有什么othar同义词。将基点G加到它自己N次(其中N是次序),将产生相同的点G. – 2013-04-25 08:29:26