数字签名
数字签名是通过一个单项函数(hash函数)对要传送的信息进行处理,得到一个用于认证信息来源并核实信息在传递过程中是否发生变化的一个字符串。数字签名提供了对信息来源的确定并能检测信息是否被篡改。
今天看了一篇关于数字签名具体过程介绍,感觉特别好就保存一下。
我们都知道数字签名是非对称加密技术的一个具体应用,它采用私钥加密,采用公钥验证的方式。这里依然记住Bob和他的小伙伴来帮助我们理解。
1. Bob有两把钥匙,一把私钥、一把公钥。
2. Bob把公钥发送给他的小伙伴们---Pat,Doug,Susan。
3. Susan要给Bob写一封保密的信,她写完之后,用Bob的公钥进行加密,再发送给Bob就可以了,就能达到保密的效果。
4. Bob收到信后,用私钥解密,就可以看到Susan写的信的内容了。只要Bob的私钥不泄露,这份信就是安全的。即使别人窃取了这封信,也无法加密。
5. Bob给Susan回信,他决定使用数字签名。他写完后先用Hash函数,生成信件的摘要(digest)
6. 然后Bob使用自己的私钥,对这个摘要进行加密,生成“数字签名”(signature)
7. 然后Bob将这个签名,附在信件的下面,一起发给Susan。
8. Susan收到信后,取下数字签名,用Bob的公钥解密,得到信件摘要,由此证明这封信是Bob发的。
9. Susan在对这封信本身使用Hash函数,将得到的结果与上一步得到的摘要进行对比,如果两者一致,就说明这封信没有被修改过。
10. 复杂的情况出现了。Doug想欺骗Susan,他偷偷使用了Susan的电脑,用自己的公钥换走了Bob的公钥。此时,苏珊实际拥有的是Doug的公钥,但是还以为这是Bob的公钥。因此,Doug就可以冒充Bob,用自己的私钥做成"数字签名",写信给Susan,让Susan用假的Bob公钥进行解密。
11. 后来,Susan感觉不对劲,发现自己无法确定公钥是否真的属于Bob。她想到了一个办法,要求Bon去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对Bob的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)
12. Bob拿到数字证书之后就放心了,以后再给Susan写信,只要在签名的同时,在附上数字证书就可以了。
13. Susan收信后,用CA的公钥解开数字证书,就可以拿到Bob真实的公钥了,然后就能证明"数字签名"是否真的是Bob签的。
此过程加上图片,就非常好理解了。