在上一篇博文【什么是信息摘要】结尾我给出了一个结论:“看来单纯的信息摘要技术还不能保证信息的完整性,即不能确定信息是否被篡改”,由此并引出了“数字签名”的概念。上一篇博文的地址在下面,没看的小伙伴可以看一下(大概耗时4分钟)。
什么是信息摘要?_韦_恩的博客-CSDN博客信息摘要就是原数据通过某个算法生成的一个固定长度的单向Hash散列值(PS:常用来生成信息摘要的算法有MD5与SHA算法)。固定长度得意思就是不论原文内容多大,其生成的信息摘要都是固定长度的。单向的意思是过程不可逆,即只能通过原始数据生成Hash散列值,而Hash散列值无法生成原始数据。这是因为Hash生成过程会对原始数据造成破坏。因此信息摘要不能用来做加密。但是他是不是就一无是处了呢?并不是! 相信看过我本专题【RSA原理1】的同学都不会陌生上面的图片,该图片就体现了信息摘要的作用,即用来https://blog.csdn.net/qq_42539194/article/details/128212173
目录
1.数字签名为什么能有效的证明信息没有被篡改?
2.什么是数字签名?
3.数字签名还有什么用?
4.关于数字签名的奇怪问题
1.数字签名为什么能有效的证明信息没有被篡改?
在上一篇博文中讲到一个例子:
当甲向乙发送一个数据A的同时也发送这个数据生成的信息摘要a,当乙收到甲发送的数据A时,利用这个数据A自己再生成一个信息摘要b,随后将自己生成的信息摘要b与甲发送过来的信息摘要a进行对比,利用信息摘要的特点可知,若a=b完全一致就代表信息没有被篡改。
但是若丙在中间截获数据A的时候也截获到了信息摘要a,并将他俩一起篡改后(改为信息C与信息摘要c)发送给乙,乙拿着C自己生成信息摘要d,很明显c一定等于d。那么乙就无法判断甲发送的数据是否被篡改了。
那么数字签名是如何保证的呢?很简单,用到了 非对称加密思想。甲用自己的私钥对数据的A的信息摘要a进行加密得到a1(这个过程叫做数字签名),随后将数据A与a1发送给乙;乙收到后先对数据A进行hash计算得到信息摘要b,随后用甲的公钥对a1进行解密得到了原信息摘要a,此时a与b相等与否就准确的证明了信息是否被篡改(这个过程叫数字签名验证)。完美的解决了此前说的问题。
试想一下,中间出现了丙截获了信息A与加密后的信息摘要a1,同时也获得了甲的公钥。于是乎丙把信息A改成了信息C,也生成了新的信息摘要c,但是因为丙没有甲的私钥,无法对自己生成的信息摘要c模拟甲进行数字签名。假设丙用自己的私钥对c进行数字签名。那由于公钥私钥的严格对应关系,乙收到信息后是无法用甲的公钥解密的,很明显就知道了信息被篡改了!
2.什么是数字签名?
通过1的例子我想大家已经知道了,所谓“数字签名”就是用信息发送者自己的私钥对信息摘要进行加密,对应的也就衍生出了“数字签名验证”,即接收者用发送者的公钥对加密数字签名的解密并得到原始信息摘要的过程。如图所示:
3.数字签名还有什么用?
身份认证:在数字签名中,用户的公钥是其身份的标志,当使用私钥签名时,如果接收方或验证方用其公钥进行验证并获通过,那么可以肯定,签名人就是拥有私钥的那个人,因为私钥只有签名人知道。
防止抵赖:数字签名即可以作为身份认证的依据,也可以作为签名者签名操作的证据。要防止接收者抵赖,可以在数字签名系统中要求接收者返回一个自己签名的表示收到的报文,给发送者或受信任第三方。如果接收者不返回任何消息,此次通信可终止或重新开始,签名方也没有任何损失,由此双方均不可抵赖。
防重放攻击:重放攻击(Replay Attacks),是计算机世界黑客常用的攻击方式,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。在数字签名中,如果采用了对签名报文加盖时戳等或添加流水号等技术,就可以有效防止重放攻击。
多重加密:手写签字的文件一旦丢失,文件信息就极可能泄露,但数字签名可以加密要签名的消息,只是要稍加改动。即用接收方的公钥加密,即可保证信息机密性。(数字信封)
4.关于数字签名的奇怪问题
问1:A向B发送消息,B如何知道消息是谁发送的?B知道了是A发送的消息,但是A抵赖怎么办?
为了防止这个问题的发生,A发送信息给B之前,会先用自己的私钥对信息加密,之后发送给B,B拿到消息后,使用A的公钥即可解密,这就证明了消息是A发送的。换句话说,B用谁的公钥解密成功了,就证明了消息是谁发送的。
问2:既然用的还是非对称加密技术,那为什么加密解密要改个名字叫数字签名与数字验证呢?
因为数字签名的发送的东西并不是保密的,网络中任何人都可以利用公钥进行解密。他只是确定身份用的。而传统的非对称加密往往传输的是保密的东西,所以叫加密解密更贴切。
问3:为什么是对信息摘要进行非对称加密解密,而不是对原始数据进行加密解密呢?
因为非对称加密解密技术并不适合对大量信息使用,因为其密钥太长、加密效率太低。而常用的信息摘要生成算法如MD5、SHA生成的散列值分别是128与160位的信息摘要,其体量较小,故对信息摘要进行非对称加密是合理的。