序言
本文是一个图文故事,旨在让陷于密码学苦海的同胞们生动地理解 :
1、非对称加密
2、关于公钥
3、关于私钥
4、散列函数
5、消息摘要
6、数字签名
7、数字证书
8、证书机构
等密码学和信息安全体系的基础概念的地位与作用。
图文故事
1、 鲍勃有两把钥匙,一把是公钥,另一把是私钥。
2、 鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。
3、苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。
4、鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
5、鲍勃给苏珊回信,决定采用”数字签名”。他写完后先用Hash函数,生成信件的摘要(digest)。
6、然后,鲍勃使用私钥,对这个摘要加密,生成”数字签名”(signature)。
7、鲍勃将这个签名,附在信件下面,一起发给苏珊。
8、苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。
9、苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
10、复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成”数字签名”,写信给苏珊,让苏珊用假的鲍勃公钥进行解密。
11、后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找”证书中心”(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成”数字证书”(Digital Certificate)。
12、鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。
13、 苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明”数字签名”是否真的是鲍勃签的。
Https应用
1、下面,我们看一个应用”数字证书”的实例:https协议。这个协议主要用于网页加密。
2、 首先,客户端向服务器发出加密请求。
3、服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。
4、客户端(浏览器)的”证书管理器”,有”受信任的根证书颁发机构”列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。
5、如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。
6、如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。
总结
(1) 概念解释
回顾文章开头指出的概念,下面将给出结合本文的解释:
1、非对称加密:避免了对称加密技术产生庞大的密钥的弊端,实际应用于加密(传输)对称密钥等短信息(因效率太慢)。
2、关于公钥:公钥用于客人给主人写信时加密信件,以及客人收到回件时验证数字签名。
3、关于私钥:私钥用于主人查看(公钥)加密过的来件,以及回复信件时加密信件的消息摘要(而不是直接加密长篇的信件)。
4、散列函数:如MD5、SHA等哈希算法,用于生成消息摘要,目的在于防止信件(消息)内容被篡改(“雪崩效应”:如果信件内容稍有篡改,哈希值将大变)。
5、消息摘要:对信件(消息)内容进行散列函数计算,生成固定长度的简短摘要。
6、数字签名:数字签名是私钥加密消息摘要后的产物,用于证实信件(消息)的发送方的身份。
7、数字证书:数字证书是证书机构颁发给用户的,里头包含用户的公钥。该公钥和其他相关信息(有效期等)一起被证书颁发机构的私钥加密了,形成数字证书,用于证明某公钥确实属于某用户。
8、证书机构:相当于权威的公安局(信用无人质疑),给公民颁发身份证(数字证书)。用于证明用户的公钥的可信性(不被伪造)。证书机构将自己的公钥公示天下,用自己的私钥加密每个已注册的合法用户的公钥,形成数字证书并颁发给用户。
(2) 验证思想
先来回忆下数字签名:
解密过程:
假设B给A发了一封信(里头含有 数字签名+数字证书),用户A在核实收到的信件确实原封不动地来源于用户B,而不是源于坏人C发的(或者被他更改过)时,需要经历以下几步:
1、验证数字证书——核实证书来源,获取用户公钥
使用证书机构(权威的公安局)提供的公钥(已公示天下),验证信件里头的数字证书,获得发件者合法的真实公钥(核实了证书的来源,确实是B的证书没错了)——因为证书机构(说话可信的公安机关)可以通过此证书告诉A,此证属于B,并且它的公钥为XXXXXXXXXX;
2、验证数字签名——核实发件者身份,以及信息完整性
(1)核实发件者身份
接下来咱们就用上面获得B的公钥,去尝试验证信件里头的数字签名(数字签名是信件里头除了数字证书以外,附带的第二个证件),如果能成功验证则可确认信件确实是B发的(前面的一步只证实了信件里头的数字证书记录的确实是B的并且获取了B的公钥,但是并未核实此信件一定是B发的,可能是别人发的,附加了B的证书而已嘛);
(2)核实内容完整性(真实性)
证明了是B发的以后,咱们就开始证明信件正文内容是否被篡改过了。此时就需要用到信件里头(除了数字证书以外)的另一个签证了——数字签名(还记得不,数字签名是B用她的私钥加密她的原始信件的消息摘要形成的)。所以此处我们只需要用B的公钥验证数字证书,并且将得到的结果与信件正文的消息摘要(自己计算一遍,采用的Hash算法在数字证书中有记录)比较一下是否一致,如果一致,证明没有被篡改。
至此,A就完整地验证了此信件确实是B发的,并且内容内容没被人修改过,可以完全信任,放心阅读。