以下文字是自己基于理解整理的一些要点:
一、网络安全传输的三大问题
1、信息保密性
2、信息完整性
3、身份正确性
二、加解密方法
1、对称加密:
加解密用同一个秘钥
2、非对称加密:
包含两个秘钥:公钥 私钥
公钥加密只能用私钥解密
私钥加密只能用公钥解密
三、对称加密
优点:(1)、性能高
缺点:(1)、无法解决秘钥同步过程中被劫持的问题,除非线下进行秘钥的同步,但是在互联网中,线下操作几乎是不可能的
四、非对称加密
在发送公钥的过程中,也会有第三方劫持的问题,劫持问题描述:
(1)、服务端发送公钥给客户端,被第三方劫持到公钥,第三方将服务端公钥保存,并将自己的公钥发送给客户端。
(2)、客户端拿到的是第三方的公钥,对数据进行加密后,发送数据。
(3)、第三方劫持客户端发送的信息,用自己的私钥进行解密,这样数据就泄露了。同时,第三方用保存下来的服务端的公钥将数据加密,再传给服务端。
这个过程中,服务端和客户端都认为自己和对方进行了正常的通信,但是却浑然不知,数据已经被泄漏了
五、数字证书
为了解决上述公钥的安全传输及服务端身份验证,提出了数字证书的概念。
数字证书由第三方权威证书机构(CA)签发,数字证书就相当于人的身份证,一人一证,不可篡改。
数字证书的使用流程如下:
1、服务商(比如腾讯,阿里,百度等)向第三方权威证书机构(CA)申请数字证书。
2、CA会通过线上线下各种方式确认申请者的身份,确认无误之后,给服务商颁发一个证书。
证书中主要的一些信息:
身份信息:服务商的身份(域名),服务商的公钥,授权机构(CA)等
加密信息:对身份信息进行hash操作(比如MD5),得到一个hash值,然后用CA的私钥对这个hash值进行加密,将加密信息也放到证书中
这样服务商就得到了一个被权威机构签名的数字证书(所谓的签名,就是用私钥对信息进行加密)
3、每一个操作系统或者浏览器都会内置第三方权威证书机构(CA)的证书(也叫根证书,我的理解,里面最重要的是有CA的公钥),不需要用户再临时安装,也避免了临时安装需要走网络带来的其他网络安全问题。
4、客户端向服务商请求信息时,服务商先把自己的数字证书发送过来。
5、客户端拿到服务商的数字证书,查看里面的授权机构(CA)
(1)、如果本地没有这个CA,则表明是非权威的CA颁发的证书,可予以拒绝。
(2)、如果本地有这个CA,则用CA的公钥对加密信息进行解密得到hash值,同时用MD5等hash算法对证书中的身份信息也进行一次hash计算,如果两个hash值一样,说明证书和对方身份确实是真实的,这样我们就可以放心的使用证书里面的服务商的公钥了。
所以综上,我自己的理解,数字证书一方面验证了服务商的真实身份,另一方面我们可以安全的拿到服务商的公钥。
六、安全的拿到对方的公钥之后,我们就有多种选择进行安全通信了。
1、使用非对称加密传输对称秘钥,然后使用对称秘钥进行数据的传输(保证数据加解密的性能,一般都是用这种方式)
2、直接使用非对称加密进行数据传输(性能比较慢)
(1)、单向非对称加密传输
(2)、双向非对称加密传输