定义
IPSec是IETF(Internet Engineering Task Force)制定的一组开放的网络安全协议。它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合,包括认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)两个安全协议、密钥交换和用于验证及加密的一些算法等。
通过这些协议,在两个设备之间建立一条IPSec隧道。数据通过IPSec隧道进行转发,实现保护数据的安全性。
基本框架:
安全协议
IPSec使用认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)两种IP传输层协议来提供认证或加密等安全服务。
-
AH协议
AH仅支持认证功能,不支持加密功能。AH在每一个数据包的标准IP报头后面添加一个AH报文头,如封装模式所示。AH对数据包和认证密钥进行Hash计算,接收方收到带有计算结果的数据包后,执行同样的Hash计算并与原计算结果比较,传输过程中对数据的任何更改将使计算结果无效,这样就提供了数据来源认证和数据完整性校验。AH协议的完整性验证范围为整个IP报文。
-
ESP协议
ESP支持认证和加密功能。ESP在每一个数据包的标准IP报头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾(ESP Trailer和ESP Auth data),如封装模式所示。与AH不同的是,ESP将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但ESP没有对IP头的内容进行保护,除非IP头被封装在ESP内部(采用隧道模式)。
AH和ESP协议的简单比较如表1所示。
安全特性 | AH | ESP |
---|---|---|
协议号 | 51 | 50 |
数据完整性校验 | 支持(验证整个IP报文) | 支持(传输模式:不验证IP头,隧道模式:验证整个IP报文) |
数据源验证 | 支持 | 支持 |
数据加密 | 不支持 | 支持 |
防报文重放攻击 | 支持 | 支持 |
IPSec NAT-T(NAT穿越) | 不支持 | 支持 |
从表中可以看出两个协议各有优缺点,在安全性要求较高的场景中可以考虑联合使用AH协议和ESP协议。
报文头结构
AH报文头结构
AH报文头结构如图1所示;AH报文头字段含义如表2所示。
字段 |
长度 |
含义 |
---|---|---|
下一头部 |
8比特 |
标识AH报文头后面的负载类型。传输模式下,是被保护的上层协议(TCP或UDP)或ESP协议的编号;隧道模式下,是IP协议或ESP协议的编号。 说明:当AH与ESP协议同时使用时,AH报文头的下一头部为ESP报文头。 |
负载长度 |
8比特 |
表示以32比特为单位的AH报文头长度减2,缺省为4。 |
保留字段 |
16比特 |
保留将来使用,缺省为0。 |
SPI |
32比特 |
IPSec安全参数 |