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