2021SC@SDUSC
目录
一、ECDSA介绍
ECDSA的全名是Elliptic Curve DSA,即椭圆曲线DSA。它是Digital Signature Algorithm (DSA)应用了椭圆曲线加密算法的变种。椭圆曲线算法的原理很复杂,但是具有很好的公开密钥算法特性,通过公钥无法逆向获得私钥。
与ECDSA相关的几个概念:
私钥:一个秘密号码,只有生成它的人知道。私钥本质上是一个随机生成的数字。在比特币中,一个人的私钥与区块链可以花这笔钱。在比特币中,私钥是单个无符号256位整数(32字节)。
公钥:与私钥相对应,但不需要保密的数字。公钥可以从私钥计算,但反之亦然。公钥可以用来确定签名是否是真实的(换句话说,用正确的密钥生成),而不需要泄露私钥。
ECDSA算法的两个优点:
1.在已知公钥的情况下,无法推导出该公钥对应的私钥。
2.可以通过某些方法来证明某人拥有一个公钥所对应的私钥,而此过程不会暴露关于私钥的任何信息。
ESCDA处理的实际上是消息的哈希值,而不是消息本身。哈希函数是可选择的,但这个哈希函数必须是一个
密码学安全的哈希函数。消息的哈希值需要截取一个固定的长度 Ln ,这个长度是 n (子群的阶)的二进制位数。截取后的哈希值是一个整数,我们记为 z。
ECDSA签名流程:
- 在 {1,2.......,n-1}随机选择一个整数
k( n
是子群的阶)
- 计算点 P=kG (其中 G是子群的基点)
- 计算 r=xp mod n(其中 xp是 P 点的横坐标)
- 如果 r=0 ,就重新选择一个k,然后再尝试一次同样的流程
- 计算
(其中dA 是Alice的私钥, k^n-1是 k在模n下的乘法逆元)
- 如果 s=0,就重新选择一个 k 然后再尝试一次同样的流程
二元组(r,s)就是消息的签名
在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。对于一般椭圆曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。与大数分解问题及有限域上离散对数问题相比,椭圆曲线离散对数问题的求解难度要大得多。因此,在相同安全程度要求下,椭圆曲线密码较其他公钥密码所需的密钥规模要小得多。
ECDSA优点证明:
1.在已知公钥的情况下,无法推导出该公钥对应的私钥。
假设随机取一个0-256位之间的值x,计算x*P,最后的结果一定会落在曲线上的一点。假设该点为X,在公开X以及具体曲线的方程的情况下,能否反推出最初的随机值x?
证:寻找x的过程只能通过暴力计算,