什么是数字签名?
1.
鲍勃有两把钥匙,一把是公钥,另一把是私钥。
2.
鲍勃把公钥给了他的朋友----帕蒂,道格,苏珊----每人一把。
3.
苏珊写信给鲍勃,用鲍勃的公钥加密,达到保密效果。
4.
鲍勃收到信后,用私钥解密,看到信件的内容。
5.
鲍勃给苏珊回信,写完后用Hash函数,生成信件摘要(digest)。
6.
然后鲍勃用私钥加密这个摘要生成"数字签名"(signature)。
7.
鲍勃把签名附在信下,一起发给苏珊。
8.
苏珊收到信后,取下数字签名,用鲍勃的公钥解密,得到信的摘要。这证明这封信是鲍勃发出的。
9.
苏珊再次使用信件本身Hash函数,将得到的结果与上一步得到的摘要进行比较。如果两者一致,就证明这封信没有修改。
10.
复杂的情况出现了。道格想欺骗苏珊。他偷偷用了苏珊的电脑,用公钥换了鲍勃的公钥。因此,他可以冒充鲍勃,给苏珊写信。
11.
苏珊发现她不确定公钥是否真的属于鲍勃。她想出了一个办法,让鲍勃找到它"证书中心"(certificate authority,简称CA),认证公钥。证书中心用自己的私钥加密鲍勃的公钥,并生成一些相关信息"数字证书"(Digital Certificate)。
12.
鲍勃拿到数字证书后,就可以放心了。以后给苏珊写信,只要在签字的同时附上数字证书。
13.
苏珊收信后,用CA公钥解开数字证书,就可以拿到鲍勃真正的公钥,然后就可以证明了"数字签名"鲍勃真的签了吗?
14.
下面我们来看看一个应用。"数字证书"的实例:https协议。这个协议主要用于网页加密。
15.
首先,客户端向服务器发出加密请求。
16.
服务器用自己的私钥加密网页后,与自己的数字证书一起发送给客户端。
17.
客户端(浏览器)"证书管理器",有"信任的根证书颁发机构"列表。根据此列表,客户端将检查解开数字证书的公钥是否在列表中。
18.
如果数字证书中记录的网站与您正在浏览的网站不一致,则表明该证书可能被冒用,浏览器将发出警告。
19.
如果该数字证书不是由信任机构颁发的,浏览器将发出另一个警告。
20.
如果数字证书可靠,客户可以使用证书中的服务器公钥加密信息,然后与服务器交换加密信息。