这次我们来学习https协议,来看看他如何提高安全性的。
https协议简介
我们知道http是一个字符串明文协议,通信容易被监听劫持,使用起来不安全,因此我们就像加密来提高安全性。
于是https协议诞生了。
https协议并不是一个新的协议,而是加密后的http协议,这里是s指的是ssl(Secure Sockets Layer 安全套接字协议)
那么https加密流程是什么呢?我们接着说。
https加密流程主要分为两个方面
1. 身份验证
2. 加密传输
接下来我们逐个来说
身份验证
身份验证是干嘛呢?
其实就是需要保证与你通信的服务器是否是你想通信的服务器,如果身份不明那势必没有安全一说。
比如我想访问淘宝,但是中间被黑客拦截,黑客伪装了淘宝服务器与我进行通信,那我就处于非常危险的情况之中。
那我们要如何认证呢?
思想:找一个第三方权威机构(双方都信任的)进行身份验证
实现:CA证书(电子认证服务)
需要被验证身份的一方去权威机构获取一个CA证书,里面包含权威机构信息、当前机构信息、有效期、公钥等等信息
在连接建立完毕通信前,需要被认证身份的一方将证书发送给对方。
对方收到证书,解析证书,得到各个元素
- 判断权威机构是否是自己信任的机构
- 判断现在与我通信的服务器是否是我想要通信的服务器
- 如果是,则向权威机构进行当前通信服务器的身份验证
- 验证通过后,再进行通信
加密传输
刚刚我们进行的是身份验证,不过就算身份验证通过,你也无法保证你的通信不被黑客监听窃取。
所以我们要对传输的数据进行加密,就算数据被劫持,他也无法对数据进行解密,也无法获取我们的通信数据。
加密过程分为三种:对称加密、非对称加密、混合加密
接下来我们逐个来看
对称加密
对称加密:通信双方采用相同的秘钥进行通信,使用相同的秘钥进行加解密
优点:加解密效率高
缺点:双方进行秘钥协商时,秘钥本身可能被劫持,安全度不高
非对称加密
非对称加密:加密和解密使用不同的秘钥,一方生成一对秘钥(公钥+私钥),使用公钥进行加密,私钥解密
公钥和私钥是通过RSA算法得到的,有兴趣的小伙伴可以去学习~
注意公钥和私钥是成对使用的,只有自己的私钥才能解开自己公钥加的密
通信时,把公钥传递给对方,对方发送数据时使用公钥进行加密,自己收到后使用私钥进行解密
就算中间数据被劫持,但他没有私钥无法解密,仍然是获取不了信息的。
举个栗子:
A和B通信,A生成一对秘钥,通信时A先把自己的公钥传输给B,然后B使用A的公钥对数据进行加密之后发送给A,最后A收到数据后用自己的私钥进行解密。
优点:安全性高
缺点:加解密效率低
混合加密
既然上述两种加密方法各有优劣,那我们就想把两者的优点结合起来,得到了混合加密的方法。
ssl加密采用的就是混合加密
过程:先试用非对称加密算法加密传输过程,传输过程中协商一个对称秘钥,之后的数据通信使用对称加密完成
这么做保证了对称秘钥的协商不会被劫持,往后通信使用对称加密,既保证安全,也保证了效率。
下面来个详细的图解