数字签名是什么

用一个小故事来梳理数字签名:

1,鲍勃有两把钥匙,一把公钥一把私钥。

2,鲍勃把公钥送给他的朋友,帕蒂,道格和苏珊每人一把。

3,苏珊想给鲍勃写一份保密的信,用鲍勃的公钥加密之后就可以达到保密的效果。

4,鲍勃收到之后,用鲍勃的私钥解密之后就可以看到信的内容,只要鲍勃的私钥不泄露,这封信就是绝对安全的。

5,鲍勃想写回信给苏珊,采用数字签名,先用Hash函数生成信件内容的摘要(MD5或者SHA算法)。

6,鲍勃用私钥对摘要进行加密,生成数字签名

7,鲍勃将这个签名,附在信件的下面,一起发给苏珊。


8,苏珊收到信件后,用鲍勃的公钥解密,得到新建的摘要,由此证明这个信件是鲍勃发的(因为只要用鲍勃的私钥加密的才能用鲍勃的公钥解密成功)。

9,苏珊在用HASH对信件本身内容求摘要,得出来的摘要如果和上一步解密后的摘要想同,就证明这个信的内容未被修改过。

10,如果道格想欺骗苏珊,偷偷拿走苏珊的电脑,用自己的公钥换走了鲍勃的公钥,此时苏珊实际拥有的是道格的公钥,但她还以为这是鲍勃的。所以道格就可以冒充鲍勃使用自己的私钥进行生成 数字签名,发给苏珊,苏珊用假的鲍勃的公钥进行解密。

11,后来苏珊觉得不对劲,她觉得她无法确认自己电脑上的公钥是鲍勃的,她想到一个方法,让鲍勃去找证书中心(certificate authority 简称 CA)对他的公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成数字证书(Digital Certificate)。

12,鲍勃拿到数字证书后,以后就放心了,以后再给苏珊写信的时候,只要在签名的同时,再附上数字证书就行了。

13,苏珊收到信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明数字签名是否真的是鲍勃了。

14,一个应用数字证书的案例:https协议,主要用于网页加密。

15,一个客户端向服务端发起一个加密请求。

16,服务端用自己的私钥加密网页之后,连同本身的数字证书一起发给客户端。

17,客户端(浏览器)的证书管理器,有“受信任的根证书颁发机构”列表,客户端会根据这个列表,查看解开数字证书的公钥是否在列表之内。

18,如果数字证书记录的网址,和你正在浏览的网址不一样,就说明这张证书可能被冒用,浏览器发出警告。

19,如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

20,如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。





原文地址:https://www.cnblogs.com/gaojf/p/12813417.html