一、产生的原因
HTTP是一个超文本传输的协议,它用于传输客户端与服务器端的数据,但是HTTP存在三个问题,传输过程中内容很容易被窃取;不能对传输对方的身份进行效验,会有伪装的可能;没有办法保证报文的完整性,内容和容易被篡改。所以就产生了HTTPS来解决这些问题。
二、HTTPS在HTTP基础上进行的升级
对于传输过程中内容很容易被窃取的问题,HTTPS选择进行加密的方式保护数据;对于不能对传输对方的身份进行效验,会有伪装的可能的问题,HTTPS利用证书来确定对方的身份;对于没有办法保证报文的完整性,内容和容易被篡改的问题,HTTPS给出了完整性保护的措施。
三、加密的分类
加密主要分为两类
- 对称加密
对称加密是存在一个共享秘钥,我们对信息的加密和解密都是通过着同一个秘钥进行的,也就是我们用一把钥匙既可以开锁又可以上锁。对称加密因为他只有一把共享秘钥,所以对数据的加密和解密的效率都是非常的高的,但是对称加密存在一个问题就是我们会再网络之间传送这一把钥匙,但是它很容易就被截获了,所以就是也是存在不安全因素的。 - 非对称加密
非对称加密是有一对钥匙,一把公钥一把私钥,公钥的作用是对数据进行加密,私钥的作用是对数据进行解密,他们各自只能干加密解密中的一个事情。非对称加密的特点就是解决了我们对称加密中一把钥匙在网路之间传递的危险, 因为我们只将公钥发送给客户端,他只能对数据进行加密,而私钥是我们是服务器端自己保存的,所以就是不对外暴露的,那么显而易见,公钥被截获了他也没什用,因为没有拿到私钥也看不到真正的信息。但是非对称加密也存在自己的问题,就是非对称加密的效率比较慢,执行速度没有对称加密来得快。
四、HTTPS的加密方式
我们刚总结了对称加密和非对称加密的优缺点,那么我们就总结一下就是对称加密快,但是有安全隐患,非对称加密解决了安全隐患但是速度慢。而HTTPS就很机智,他用了两种加密方式进行配合,既保证了安全性,又在安全的基础上让执行速度尽量的快起来了。
五、证书
HTTPS通过证书来验证对方的身份,这个过程就是有一个第三方给服务器端提前颁发一个证书来证明身份,那么在数据传输的时候,服务器端的浏览器会先自动检验证书的有效性,然后再进行数据传输。这样就有效的保证了传输方的身份。
六、HTTPS交互的完整流程
- 客户端先给服务器端发送链接请求
- 服务器端先利用非对称加密,生成一对秘钥,带着第三方颁发的证书和公钥一起发送给客户端
- 客户端检查证书的有效性
- 证书有效客户端会利用对称机密生成一个共享秘钥
- 客户端先用共享秘钥对传输的数据进行加密,然后再用非对称加密生成的公钥对共享秘钥进行加密,发送给客户端
- 客户端拿到加密的数据后先用自己的私钥把公钥的那一层加密打开,拿到共享秘钥,然后再用共享秘钥将数据解密,拿到真实数据
- 之后进行数据传输的时候直接传输用共享秘钥进行加密后的数据即可
七、总结
HTTPS的加密方式选择了对称机密和非对称加密两种方式的结合,因为服务器端拿到共享秘钥的过程不可能被截获并解密的,所以这时候共享秘钥对我们来说就是安全且性能较高的,这样的方式不仅保证了数据的安全性,也是保证性能的一种方式。同时因为我们加密解密用的是一把钥匙,如果数据不完整加密解密就会失败,这样也保证了数据的完整性,解决了HTTP存在的第三个问题。