SSL/TLS协议
SSL/TLS简介
SSL(安全套接层)最初在1994年创建,作为http的扩展,后来逐步发展为独立协议,并更新了三个版本(v1.0、v2.0、v3.0),后来在v3.0基础上标准化了该协议,并命名为TLS(传输层安全协议v1.0)。因此,TLS可以理解为SSL协议的升级版。
SSL/TLS协议提供的服务主要有:
- 身份认证:认证用户和服务器,确保数据发送到正确的客户机和服务器
- 机密性:加密数据以防止数据中途被窃取
-
HHTP和HTTPS

HTTP主要有以下不足: 使用明文通信,内容可能会被窃听和随意篡改
- 不验证通信双方身份,有可能遭遇伪装
- 无法证明报文的完整性,内容可能遭到篡改
为了解决这些不足,HTTPS 多了以下特性:
- TLS/SSL内容加密
- 数字证书(CA)验明身份,防范中间人攻击
- MD5、SHA-1等散列值方法防止信息篡改
注意: HTTPS 相对于 HTTP 性能上差点,因为多了 SSL/TLS 的几次握手和加密解密的运算处理,但是加密解密的运算处理已经可以通过特有的硬件来加速处理。
下面是二者的主要区别:
- HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
- HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
- HTTP 的端口号是 80,HTTPS 的端口号是 443。
HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
SSL握手流程
SL/TLS 协议基本流程:
客户端向服务器索要并验证服务器的公钥
- 双方协商生产会话秘钥
- 双方采用会话秘钥进行加密通信
前两步是 SSL/TLS 的建立过程,即 TLS 握手阶段。SSL/TLS 的握手阶段涉及四次通信,如下图:
SSL/TLS 协议建立的详细流程:
ClientHello
首先,由客户端向服务器发起加密通信请求,也就是 ClientHello 请求。在这一步,客户端主要向服务器发送以下信息:
- 客户端支持的 SSL/TLS 协议版本,如 TLS 1.2 版本。
- 客户端生产的随机数,后面用于生成会话秘钥条件之一。
-
SeverHello
服务器收到客户端请求后,向客户端发出响应,即 SeverHello。服务器回应的内容有如下内容:
确认 SSL/ TLS 协议版本,若浏览器不支持该版本则关闭加密通信。
- 服务器生产的随机数,也是后面用于生产会话秘钥条件之一。
- 确认的密码套件列表,如 RSA 加密算法。
-
客户端回应
客户端收到服务器的回应之后,首先通过浏览器或者操作系统中的 CA 公钥,确认服务器的数字证书的真实性。如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使用它加密报文,向服务器发送如下信息:
一个随机数,该随机数会被服务器公钥加密。
- 加密通信算法改变通知,表示随后的信息都将用会话秘钥加密通信。
- 客户端握手结束通知,表示客户端的握手阶段已经结束,同时把之前所有内容的发生的数据做个摘要,用来供服务端校验。
注意: 上面的随机数是整个握手阶段的第三个随机数,会发给服务端,所以这个随机数客户端和服务端都是一样的。服务器和客户端有了这三个随机数,就按照用双方协商的加密算法各自生成本次通信的会话秘钥。
服务器的最后回应
服务器收到客户端的第三个随机数后,通过协商的加密算法,服务器计算出本次通信的会话秘钥。然后,向客户端发送最后的信息:
- 加密通信算法改变通知,表示随后的信息都将用会话秘钥加密通信。
- 服务器握手结束通知,表示服务器的握手阶段已经结束,同时把之前所有内容的发生的数据做个摘要,用来供客户端校验。
至此,整个 SSL/TLS 的握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的 HTTP 协议,只不过用会话秘钥加密内容。
IPsec协议
IPsec简介
IPsec(Internet Protocol Security),是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。IPsec是一整套协议包而不只是一个单独的协议, IPsec协议把多种安全技术集合到一起,从而建立起一个安全、可靠的网络层隧道。在IPsec安全体系结构中包括了3个最基本的协议:
- AH(Authentication Header):协议为IP包提供信息源验证和完整性保证
- ESP(Encapsulating Security Payload):协议提供加密保证
- 密钥管理协议(IKE):提供双方交流时的共享安全信息
AH协议
Authentication Header,即验证头部协议,AH协议提供无连接的完整性、数据源认证和抗重放保护服务(不提供保密性服务)。AH协议使用消息认证码(采用MAC算法)对IP数据进行认证。MAC算法与hash算法类似,实际上是hash算法的演进版本,它可以检测出对IP报文的任何修改,通过这个来保证IP包的完整性和可靠性,通信双方必须采用相同的MAC算法和密钥(保证统一)。下面是AH报文头:
AH协议有两种工作模式:传出模式和隧道模式。
传出模式:
隧道模式:
ESP协议
ESP提供数据保密、无连接完整性、抗重播服务以及数据包/数据流加密服务。ESP使用消息认证码(MAC)提供认证服务,ESP大都采用对称密码体制加密数据,这是因为公钥密码系统的运算量要比对称密钥系统大得多(更好的保证保密性)。下面是ESP报文格式:
AH合ESP的对比:
IKE协议
参考:[https://cshihong.github.io/2019/04/03/IPSec-VPN%E4%B9%8BIKE%E5%8D%8F%E8%AE%AE%E8%AF%A6%E8%A7%A3/
](https://cshihong.github.io/2019/04/03/IPSec-VPN%E4%B9%8BIKE%E5%8D%8F%E8%AE%AE%E8%AF%A6%E8%A7%A3/)
