Wireshark数据包分析实战:HTTPS加解密过程

01 引言成哥在Wireshark系列实战案例中,分析过多种网络问题,但唯独没有涉及到应用层HTTPS协议的相关内容 。
今天通过wireshark捕获HTTPS数据包,来给大家讲解一下HTTPS的加解密过程 。
我们先从HTTP协议说起 。
02 HTTP协议HTTP协议(超文本传输协议)是一种客户端与Web服务器之间进行应用层通信的协议,主要用于WWW服务 。
客户端和web服务器端的之间通信为明文传输,数据直接交互,不存在任何安全性 。如下图所示:

Wireshark数据包分析实战:HTTPS加解密过程

文章插图
 
通过捕获HTTP的数据包,可以看到HTTP会话中的Cookie和各种id信息 。如下图所示:
Wireshark数据包分析实战:HTTPS加解密过程

文章插图
 
HTTP虽然优点众多,但是其明文传输的缺点,就足以致命 。从2017年开始,Chrome 浏览器已把采用 HTTP 协议的网站标记为不安全网站,后续基本所有浏览器厂商都做了相同的标记 。
HTTP协议的不安全问题,催生了HTTPS协议的产生 。
03 HTTPS协议为了增强HTTP协议的安全性,网景公司设计出了能够对HTTP协议进行安全加密的传输方法,即在TCP/IP协议的传输层和应用层之间新增了一层安全套接层 。并将SSL和HTTP协议相结合,以实现安全的HTTP数据传输 。这就是HTTPS协议,即"HTTP over SSL"或者"HTTP Secure" 。
早期SSL是HTTPS使用的标准协议,之后IETF在SSL 3.0的基础之SSL进行标准化 。形成传输层安全,即TLS 。但它们本质上是相同的,我们可以合称TLS/SSL 。
HTTP和HTTPS的区别如下图所示:
Wireshark数据包分析实战:HTTPS加解密过程

文章插图
 
从图中可以看出,HTTP协议和HTTPS协议主要的差别就是是否存在TLS/SSL层 。即HTTPS协议= HTTP协议+SSL/TLS协议,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,然后使用HTTP对加密后的数据进行传输 。
04 密钥算法在介绍HTTPS协议的加解密过程前,先要学一些密码学的知识 。
(1)几个基本概念
明文:指的是未经过加密的原始数据 。
密文:通过对明文进行加密操作后得到的数据 。
密钥:一种参数,通过在加解密算法中使用该参数,可对明文进行加密,或者对密文进行解密 。同时,密钥分为对称密钥与非对称密钥两种,分别应用在对称密钥算法和非对称密钥算上 。
(2)对称密钥算法
使用相同密钥和算法进行加解密运算的算法叫做对称密钥算法 。示意图如下所示:
Wireshark数据包分析实战:HTTPS加解密过程

文章插图
 
对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密 。
常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA 。
【Wireshark数据包分析实战:HTTPS加解密过程】(3)非对称密钥算法
非对称密钥算法对比对称密钥算法,其安全性更好 。
使用对称密钥算法通信的双方使用的是相同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解 。而非对称密钥算法的双方两个不同的密钥,即公钥和私钥,且二者成对出现 。示意图如下:
Wireshark数据包分析实战:HTTPS加解密过程

文章插图
 
私钥被自己保存,不能对外泄露 。公钥指的是公共的密钥,任何人都可以获得该密钥 。用公钥或私钥中的任何一个进行加密,用另一个进行解密 。
非对称密钥算法的主流协议是RSA,需要给每个参与者产生一对密钥 。共享私钥到服务器,严格保障私钥的安全性 。
(4)SSL加解密解决方案
SSL加解密过程中同时使用到对称密钥和非对称密钥 。如下图所示 。
加密过程:重要文件使用对称密钥加密(速度快,长度不增加),形成加密文件 。然后使用接收方的公钥将对称密钥加密,保证对称密钥传输时的安全性 。然后将加密文件和加密的对称密钥发送给接收方 。
解密过程:接收方通过私钥将对称密钥解密,获得对称密钥,然后对加密文件进行解密,获取重要文件 。
05 HTTPS协议加解密过程成哥前文说,HTTPS协议= HTTP协议+SSL/TLS协议 。HTTP协议传输过程较为简单,这里不做介绍 。我们来看看SSL/TLS协议的加解密过程 。
在浏览器访问腾讯网,通过wireshark软件捕获到的SSL/TLS数据包如下,可以看到完整的SSL/TLS加密通信过程,如下图所示:
Wireshark数据包分析实战:HTTPS加解密过程


推荐阅读