公钥、私钥、数字证书_解释

来源:互联网 发布:双翼软件官网 编辑:程序博客网 时间:2024/06/13 02:23

作者:David Youd

翻译:阮一峰  原文网址:

http://www.youdzone.com/signature.html

http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

其他扩展文章:

月光博客:为什么12306要安装根证书http://www.williamlong.info/archives/3461.html


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

其他:

如何保证公钥不被篡改?

答:将公钥放在数字证书中,只要证书是可信的,公钥就是可信的。

公钥加密计算量太大,如何减少耗用时间?

答:每一次对话(session),客户端和服务器都生成一个对话密钥(session key),用它来加密信息,由于“对话密钥”是对称加密,所以运算速度非常快,而服务器公钥只用于加密“对话密钥”本身,这样就减少了加密运算的消耗时间。

因此SSL/TLS协议的基本过程是:

1)客户端向服务器索要并验证公钥(握手阶段,明文)

2)双方协商生成“对话密钥”(握手阶段,明文)

3)双方采用“对话密钥”进行加密通信

握手阶段详解:


1)客户端发出请求(ClientHello)  并提供如下信息

a 支持的协议版本,例如TLS 1.0b 客户端生成的随机数,用于生成“对话密钥”c 支持的加密方法,例如RSA公钥加密c 支持的压缩方法

2)服务器回应(SeverHello)    包括如下信息

a 确认使用的加密通信协议版本,如果客户端与服务器支持版本不一致,服务器关闭加密通信b 服务器生成的随机数,用于生成“对话密钥”c 确认使用的加密方法d 服务器证书

3)客户端回应

客户端验证服务器证书,若证书问题,显示警告是否继续通信。

若证书安全,客户端从证书中提取公钥,向服务器发送如下信息:

a 随机数(用公钥加密,防止窃听)【第三个随机数,又称"pre-master key",三个随机数+加密方法 生成session key】b 编码改变通知,表示随后的信息都将用双方协商的加密方法和密钥传输c 客户端握手结束通知,表示客户端的握手阶段结束,同时包括hash值,供服务器校验

4)服务器回应
服务器生成 session key ,并发送如下信息:
a 编码改变通知,随后的信息都将使用双方协商的加密方法和密钥传输b 服务器握手结束通知,表示服务器的握手阶段结束,同时包括hash值,供客户端校验


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

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协议为例,了解数字证书的应用,主要用于web加密
 
15、首先,客户端向服务器发出加密请求。


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


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


 
18、如果数字证书记载的网址,与当前浏览的网址不一致,就说明该证书可能被毛用,浏览器发出警告。


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


 
20


 
总结:公钥和私钥是成对的,它们互相解密。
公钥加密,私钥解密。
私钥数字签名,公钥验证。

0 0
原创粉丝点击