大家好呀,我卡卡博士今天来安利一下ECDSA算法,也就是椭圆曲线数字签名算法。
首先我们了解一下,什么是数字签名。
什么是数字签名?
在现实工作与生活中,我们一般使用签名的方式表达对一份重要文件的认可,而其他人通过识别你的签名,来确定你是否已确认/同意这份文件。
但是通过临摹等方式,有些人可以伪造出相似度达99%的字迹,假装你的签名,这时候非专业人员可能无法分辨出,是否为你本人所签署。
而数字签名就是对现实签名以电子的方式实现,它不仅可以完全达到现实签名的特点,甚至能够做的更好。数字签名的主要作用就是,数字签名的主要作用就是保证了数据的有效性(验证是谁发的)、完整性(证明信息没有被篡改,而这是手写签名不具备的功能)以及抗抵赖性(人们不能否认自己发送信息的行为和内容)。
与手写的签名不同,数字签名与被签名信息有着很强的关联,对输入信息的轻微改动,都会产生完全不同的数字签名。
一般来说,数字签名不会对信息直接进行加密,而是选择对信息的Hash值(Hash值是根据信息内容计算出来的一个指定长度数字,可以验证数据传递的完整性)进行加密,并把加密结果附加到被签名的信息后面。
用户如果需要确定信息的完整性或真实性,可对原Hash值进行解密,得出第一个Hash值,再对接收到的信息使用Hash函数得出第二个Hash值,将两个Hash值进行对比,如果相同,说明收到的内容确实来自合法用户,并且在传输过程中没有被篡改。
如今,常用的数字签名算法有基于RSA的数字签名、DSA、ECDSA等,我们今天就要谈谈基于椭圆曲线密码学的ECDSA算法。
什么是ECDSA?
ECDSA,全称为椭圆曲线数字签名算法,主要用于对数据(比如一个文件)创建数字签名,以保障信息在传递和使用过程中的完整性、真实性和不可抵赖性。
ECDSA 是基于椭圆曲线密码(ECC,Eliptic Curve Cryptography)的数字签名算法,即使用基于ECC的公钥密码算法对信息的Hash值进行加密。
ECDSA的优势
那么同为数字签名,为什么现在ECDSA成为了新潮?
因为它是目前已知的公钥体制中,加密强度最高的一种。相较于目前最为普及的RSA算法,ECDSA算法使用更短的密钥,就可以实现和密钥长度数倍于自己的RSA相同的安全性能。
以下是ECC和RSA安全性比较:
随着安全等级的增加,当前加密法的密钥长度也会成急剧增加,而 ECC 密钥长度 却只是成线性增加。
以下是ECC和RSA速度比较:
通过两者的对比可以得出,ECDSA算法与RSA算法相比,具有以下优势:
a.在相同密钥长度下,安全性能更高。例如,160位ECDSA已经与1024位的RSA有着相同的安全强度。
b.计算量小,处理速度快。在私钥的处理速度上(解密和签名),ECC远比RSA快得多。
c.存储空间占用小。ECC的密钥尺寸和系统参数与RSA相比要小得多, 占用的存储空间更小,占用带宽更少,因此ECDSA非常适用于移动互联网。
如果要说ECDSA算法有什么缺点的话,那就是:理论难以理解,实现技术复杂。
那么我们来探讨一下ECDSA的原理,看看到底有多么“折磨人”吧~
ECDSA的原理
首先,需要注意ECDSA的两个词:Curve(曲线)与 Algorithm(算法),这意味着ECDSA基本上是基于数学原理的,而且涉及非常复杂的数学原理。
既然ECDSA的原理这么复杂,我们今天也说得够多了,具体的原理我们下期再见吧~