ECDSA密钥
Posted 子龙_w
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ECDSA密钥相关的知识,希望对你有一定的参考价值。
ECDSA密钥
一、对称加密算法
指加密和解密使用相同密钥的加密算法。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括DES、3DES、AES、DESX、Blowfish、、RC4、RC5、RC6。
二、非对称加密算法
指加密和解密使用不同密钥的加密算法,也称为公私钥加密,公钥是公开的,私钥是私有的。
1.公钥加密,私钥解密:
当Alice给Bob写信,不希望信件被别人解读,可以使用Bob公开的公钥对信件加密。Bob收到信件后,用自己的私钥解密即可。
2.私钥签名,公钥验证:
当Alice给Bob写信,希望证明是Alice自己写的信,而不是伪造的信件,可以使用Alice自己的私钥进行签名。Bob收到信件后,用Alice的公钥验证签名即可。
常见的非对称加密算法:RSA、DSA、ECC、Diffie-Hellman、El Gamal。
三、ECC(Elliptic Curve Cryptosystems)
ECC椭圆曲线加密算法相比于RSA来说,可以用比RSA更短的密钥长度达到与其相同的安全程度,一般认为160位的椭圆曲线密钥提供的安全强度与1024位RSA密钥相当。
四、ECDSA
ECDSA椭圆曲线数字签名算法是DSA作用于椭圆曲线的一个变种算法,Secp256k1是ECDSA曲线的参数,也是比特币选择的特定椭圆曲线。
公钥其实是secp256k1椭圆曲线的一个坐标点,即(x,y)形式,用16进制表示是:
(9e377b88660311e038b2928f429f5d86bfd4da457cc879d7d8bbeced5473fa2e,
baec5bed260c762e715fa0f333283757dbce71114278a3efdef9416c7c7c09ea)
1.未压缩公钥
前缀04 + x坐标 + y坐标
049e377b88660311e038b2928f429f5d86bfd4da457cc879d7d8bbeced5473fa2ebaec5bed260c762e715fa0f333283757dbce71114278a3efdef9416c7c7c09ea
2.压缩公钥
前缀03 + x(如果y是奇数),前缀02 + x(如果y是偶数)
baec5…c7c09ea从最后一位0xa来看,是偶数,所以压缩公钥是:
039e377b88660311e038b2928f429f5d86bfd4da457cc879d7d8bbeced5473fa2e
组合 ECDSA 密钥
【中文标题】组合 ECDSA 密钥【英文标题】:Combining ECDSA keys 【发布时间】:2013-04-24 17:10:45 【问题描述】:如何将两个 ECDSA 私钥/公钥对合二为一?我知道它是通过 openssl 中的模块化添加完成的,我只是不明白它是如何工作的。谁能给我解释一下?
【问题讨论】:
【参考方案1】:你可以通过添加两个私钥来做到这一点
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对象)时设置。
【讨论】:
【参考方案2】:ECDSA 私钥 - 只是一个数字,基点的顺序。 您可以只添加两个私钥(即数字),减少和模基点顺序,并将基点取幂到这个顺序。 但是你为什么需要这个呢?
【讨论】:
用于密钥的拆分密钥零信任生成。私有A + 私有B == 公共A + 公共B。不过,我不听从你的回答。基点的顺序是什么意思? 基点的顺序是,嗯,只是基点的顺序:) 或者,曲线的顺序,椭圆曲线点组的顺序,不知道它有什么其他同义词。基点 G 与自身相加 N 次(其中 N 是阶数),将产生相同的点 G。以上是关于ECDSA密钥的主要内容,如果未能解决你的问题,请参考以下文章