目录
一、为什么要对数据进行加密?
二、什么是加密和解密?
三、加密方式
对称加密
非对称加密
四、数据摘要(数据指纹)
五、数字签名
六、探究保证双方通信安全的的加密方案
1、只使用对称加密
2、只使用非对称加密
3、双方都是用非对称加密
4、非对称加密+对称加密
CA认证
5、非对称加密+对称加密+证书认证
证书的构成
证书认证过程
HTTPS是应用层协议,它是基于加密解密机制对HTTP协议安全方面的改善。
一、为什么要对数据进行加密?
由于HTTP协议都是按照文本的方式明文传输的,这些数据会经过路由器、wife热点、通信服务运营商等多个物理节点,这就可能导致数据在传输的过程中被中间人窃取、篡改的风险,因此需要对数据进行加密解密以确保用户信息安全。
对应的网络协议栈如下图:
不论是发送方发送数据或者接收方接收数据双方都要经过应用层的SSL加密解密层。
二、什么是加密和解密?
加密就是把明文(要传输的数据)经过转化变为密文;解密就是把密文经过转化还原为明文。
在加密和解密的过程中往往需要一个或多个中间数据,这种数据就是密钥,密钥分为对称密钥和非对称密钥。
三、加密方式
对称加密
信息的发送方和接收方使用同一个密钥对信息进行加密和解密。
加解密速度快,适合对大数据量进行加密解密。
一个简单的对称加密:假定发送端进行一个异或运算:7^5=2,5是就是密钥,7是明文,2是密文;接收端收到密文后利用密钥5对其进行解密,2^5=7,最终得到明文7。
非对称加密
需要两个密钥进行加密和解密,分别是公开密钥(public,简称公钥)和私有密钥(private,简称私钥)。
加密算法复杂安全性高,没有对称密钥加解密速度快,效率低。
非对称加密要用到公钥和私钥两个配对密钥,但是加解密速度非常慢。
通过公钥对明文加密变成密文,私钥对密文解密变成明文。
也可以反着来:通过私钥对明文加密变成密文,公钥对明文解密变成明文。
如上图公钥m是作为明文发送给B的,因此有可能被泄漏放入风险,但是私钥m'不可能被泄漏,因此只有A能对B发来的密文解密获取明文!
四、数据摘要(数据指纹)
基本原理是利用MD5算法(Hash函数)对数据进行运算,生成一串固定长度的字符串(具有唯一性),数据指纹不是一种加密机制,用来数据指纹判断数据是否被篡改过。
五、数字签名
数据摘要被加密后就是数据签名。
数字签名是非对称加密技术与数字摘要技术的应用。
六、探究保证双方通信安全的的加密方案
1、只使用对称加密
由于对称加密是双方使用同一个密钥进行加密解密,因此在通信双方建立连接时client会将密钥传输给server,此时密钥相当于明文,黑客会窃取该密钥,后面的加密通信就形同虚设了,变得毫无意义,因此这种方案不可取。
2、只使用非对称加密
如果服务器用它的私钥加密数据传给浏览器,那么浏览器用公钥可以解密它,而这个公钥是一开始通过明文传输给浏览器的,若这个公钥被黑客获取到了,那黑客就能用该公钥解密服务器传来的信息了。
3、双方都是用非对称加密
该方案和只使用非对称加密的而结果一样。
4、非对称加密+对称加密
上面的情景叫做中间人攻击(Man In The MiddleAttack,简称 ”MIMT攻击“ )。
由于该加密方案会导致客户端生成的对称密钥被中间人窃取,导致通信双方发送的信息被泄漏,无法保证安全。
这种方案问题的问题是什么?客户端无法确认含有公钥的数据报文(密文)有没有被中间人篡改后发来的,就是上图1,2步骤中间人将服务端的公钥s篡改成了自己的公钥m然后发给客户端。
CA认证
CA是一个证书认证机构为公司(服务端)提供证书。服务端在使用HTTPS协议之前,要向CA机构申请一份数字证书。该证书由明文信息(申请方即服务端的公钥,申请方的域名等信息)和数字签名组成。当客户端浏览器与服务端握手协商密钥时,服务端把该证书传输给浏览器,浏览器从该证书里获取服务端公钥,通过证书中的数字签名就可以判断服务端公钥是否被中间人篡改,这样就保证了中间人无法窃取服务端的公钥了,证书就相当一个服务端的身份证。
5、非对称加密+对称加密+证书认证
证书的构成
数字签名+明文信息,最重要的是服务端的公钥。
证书认证过程
这样就可以保证服务端的公钥在通信双方密钥协商时不被中间人替换成自己的公钥。中间人也就无法获取客户端的对称密钥了,因此就无法窃取客户端和服务端通信的数据了,保证通信的安全性。