IPSec 协议族

IPSec

IPSec (Internet Protocol Security、互联网安全协议) 协议族是 IETF(Internet Engineering Task Force)制定的一系列协议,它为 IP 数据报提供了高质量的、可互操作的、基于密码学的安全性

IPSec 组成

  • IKE (Internet Key Exchange,因特网密钥交换)
    IKE 协议是一种基于 UDP 的应用层协议,为 AH、ESP 操作所需的安全关联 (SA) 提供算法、数据包和密钥参数。IKE 混合了 ISAKMP(Internet Security Association and Key Management Protocol)、Oakley 协议和 SKEME 协议这三个协议
    • ISAKMP 定义 IKE SA 的建立过程
    • Oakley 和 SKEME 协议的核心是 DH(Diffie-Hellman)算法,主要用于在 Internet 上安全地分发密钥、验证身份,以保证数据传输的安全性。IKE SA 和 IPSec SA 需要的加密密钥和验证密钥都是通过 DH 算法生成的,它还支持密钥动态刷新
  • AH (Authentication Header、认证头)
    AH 协议用来对 IP 报文进行数据源认证和完整性校验,即用来保证传输的 IP 报文的来源可信和数据不被篡改,但它并不提供加密功能。AH 协议在每个数据包的标准 IP 报文头后面添加一个 AH 报文头,AH 协议对报文的完整性校验的范围是整个 IP 报文
  • ESP (Encapsulating Security Payload、封装安全载荷)
    ESP 协议除了对 IP 报文进行数据源认证和完整性校验以外,还能对数据进行加密。ESP 协议在每一个数据包的标准IP报头后方添加一个 ESP 报文头,并在数据包后方追加一个 ESP 尾(ESP Trailer 和 ESP Auth data)。ESP 协议在传输模式下的数据完整性校验范围不包括 IP 头,因此它不能保证 IP 报文头不被篡改

AH 和 ESP 可以单独使用,也可以同时使用。AH 和 ESP 同时使用时,报文会先进行 ESP 封装,再进行 AH 封装;IPsec 解封装时,先进行 AH 解封装,再进行 ESP 解封装

IPSec 报文

IPSec 封装分为两种模式:

  • 传输模式:AH 或 ESP 被插入到 IP 头之后但在所有传输层协议之前,或所有其他 IPSec 协议之前
  • 隧道模式:AH 或 ESP 插在原始 IP 头之前,另外生成一个新 IP 头放到 AH 或 ESP 之前

AH 报头

AH 报头试图保护 IP 数据报的所有字段,但在传输 IP 分组的过程中要发生变化的字段就只能被排除在外

  • Next Header : 下一个头,表示认证头报头之后的下一个报头类型
  • Payload Len : 载荷长度
  • Reserved : 保留位
  • Security Parameters Index (SPI) : 用于给报文接收端识别 SA
  • Sequence Number : 序列号,每发送一个报文,计数加 1,防止重放攻击
  • Integrity Check Value (ICV) : 完整性检查,长度必须为 32 比特的整数倍

ESP 报头

  • Security Parameters Index (SPI) : 用于给报文接收端识别 SA
  • Sequence Number : 序列号,每发送一个报文,计数加 1,防止重放攻击
  • Payload data : 载荷数据
  • Padding : 填充位
  • Pad Length : 填充位长度
  • Next Header : 下一个头,表示认证头报头之后的下一个报头类型
  • Integrity Check Value (ICV) : 完整性检查,长度必须为 32 比特的整数倍

AH 和 ESP 组合

ISAKMP 报文

  • IKE_AS Initiator’s SPI : 发送者用来唯一标识一个 IKE 安全联盟,该值不能设置为 0
  • IKE_AS Responder’s SPI : 应答者用来唯一标识一个 IKE 安全联盟,对于 IKE 初始交互的消息该值必须为 0,其他消息不能为 0
  • Next Payload : 下一个头,表示认证头报头之后的下一个报头类型
  • Version : IKE 版本
    • MjVer : 大版本
    • MnVer : 小版本
  • Exchange Type : 类型
    • 0-33 : RESERVED
    • 34 : IKE_SA_INIT
    • 35 : IKE_AUTH
    • 36 : CREATE_CHILD_SA
    • 37 : INFORMATIONAL
    • 38-239 : RESERVED TO IANA
    • 240-255 : Reserved for private use
  • Flags : 标志位
    • 0-2bit : X(reserved)
    • 3 bit : I(nitiator)
    • 4 bit : V(ersion)
    • 5 bit : R(esponse)
    • 6-7 bit : X(reserved)
  • Message ID : 消息标识符,用来对请求消息和呼应消息的匹配,以便控制丢弃消息的重复发送
  • Length : 整个数据的长度
  • Next Payload : 下一个头,表示认证头报头之后的下一个报头类型
  • Critical : 如果发送者想让接收者在无法识别当前一个负载的 Next Payload 域是能够跳过此域,可将此位置 0。如果接收者能够识别负载的类型代码,则忽略此位
  • Reserved : 保留位
  • Payload Length : 当前负载的长度,包括通用负载的头部

IPSec 工作原理

  1. 识别 “感兴趣流”
    发送方根据五元组等信息和 IPSec 策略判断报文是否要通过 IPSec 隧道传输,通过隧道的流量被称为 “感兴趣流”
  2. 建立 SA (Security Association,协商安全联盟)
    双方协商使用的安全协议、封装方式、加密和验证算法、密钥等。通信双方会先建立 IKE SA (用于身份验证和密钥交换),再建立 IPSec SA
  3. 数据传输
    为保证传输的安全性,会通过 AH 或 ESP 协议对数据进行加密和校验
  4. 隧道拆除
    数据交换完成会话结束后,通信双方的隧道在空闲时间达到老化值后自动删除

注意事项

IPsec 中 IKE 协议采用 UDP 500 端口发起和响应协商,因此需要放通 UDP 500 端口。另外,在 IPsec NAT 穿越场景下,还需要放开 UDP 4500 端口
而 AH 和 ESP 属于网络层协议,需要配置安全策略放开 AH (协议号 51) 和 ESP (协议号 50) 服务

相关文档

Huawei-IPSec

rfc4302

rfc4303

rfc4306

曹世宏-IKEv1详解

曹世宏-IKEv2详解

上一篇
下一篇