IPSec VPN 国密协议详解:GM/T 0022 与 GM/T 0023 的握手流程、消息格式与密钥体系

协议详解 · 2026-06-05

概述

IPSec VPN 是工作在网络层的虚拟专用网络技术,通过密码技术在公共网络(如互联网)中构建安全隧道,为上层应用提供保密性、完整性、身份鉴别和抗重放攻击等安全保护。与 SSL VPN 不同,IPSec VPN 对应用层协议完全透明,保护的是主机之间或网段之间的整条通信链路。

国密 IPSec VPN 协议由两项行业标准定义:

标准编号标准名称对应国家标准主要内容
GM/T 0022-2014IPSec VPN 技术规范GB/T 36968-2018协议流程、密钥交换、安全报文格式
GM/T 0023-2014IPSec VPN 网关产品规范产品功能、性能、安全、检测要求
这两项标准是在 RFC 4301(安全架构)、RFC 4302(AH)、RFC 4303(ESP)、RFC 4308(IKEv2)等国际标准基础上,进一步明确了 SM2、SM3、SM4 商用密码算法的支持方式,增加了双证书机制,并扩展了对 IPv6 网络环境的支持。

协议架构

整体框架

IPSec VPN 的协议架构由两大核心组件构成:

  • IKE(Internet Key Exchange)协议:负责协商安全关联(SA),建立和管理密钥材料。对应 GM/T 0022 和 RFC 4308(IKEv2)。
  • AH(Authentication Header)协议:提供数据源身份鉴别、完整性校验和抗重放保护,但不提供保密性。对应 GM/T 0022 和 RFC 4302。
  • ESP(Encapsulating Security Payload)协议:提供保密性、数据源身份鉴别、完整性校验和抗重放保护。可单独使用,也可与 AH 嵌套使用。对应 GM/T 0022 和 RFC 4303。

与 RFC 标准的映射关系

IPSec 组件RFC 标准GM/T 0022 对应章节国密扩展
IPSec 架构RFC 4301第 4 章增加 IPv6 支持
AH 协议RFC 4302第 5 章SM3 用于 ICV 计算
ESP 协议RFC 4303第 6 章SM4 用于数据加密
IKEv2 协议RFC 4308第 7 章SM2 用于签名和密钥交换
加密算法RFC 4309第 6.1 节SM4-CBC/GCM
NAT 穿越RFC 4306第 8 章保持与国际标准一致

IKE 握手流程

GM/T 0022-2014 定义的 IKE 握手流程遵循 IKEv2 的基本框架,但在算法支持、证书格式和密钥计算方面进行了国密适配。整个握手过程分为两个阶段。

第一阶段:IKE_SA_INIT

国密适配要点:

  • 密钥交换算法:使用 SM2 椭圆曲线密钥交换协议替代传统的 Diffie-Hellman。KE 载荷中包含 SM2 公钥和随机数。
  • 伪随机函数(PRF):使用 HMAC-SM3 作为 PRF,替代 RFC 4308 中定义的 HMAC-SHA 系列。
  • 加密算法:SK_e 使用 SM4 算法保护后续消息。
  • 完整性算法:SK_a 使用 HMAC-SM3 保护消息完整性。

第二阶段:IKE_AUTH

身份鉴别方式:

GM/T 0022-2014 规定身份鉴别必须采用数字证书方式,不再支持预共享密钥(PSK)方式。AUTH 载荷的计算方式:

CODE
AUTH = Sign(SK_pi, <IDi | CERTi | ... )

签名算法为 SM2 数字签名算法,签名数据包含身份标识、证书和协商参数。

子 SA 协商(CREATE_CHILD_SA)

子 SA 协商用于建立实际的 IPSec 数据保护通道,也可用于密钥更新(Rekey)。

安全报文协议

AH 协议(认证头)

AH 协议提供数据源身份鉴别、完整性校验和抗重放保护。在国密场景下,完整性校验值(ICV)使用 SM3 算法计算。

ICV 计算范围:

CODE
ICV = SM3(ESP/AH 载荷 | 填充 | 填充长度 | 下一个头 | SPI | 序列号)

注意:ICV 字段本身在计算时置零。

ESP 协议(封装安全载荷)

ESP 协议提供保密性、数据源身份鉴别、完整性校验和抗重放保护。在国密场景下,数据加密使用 SM4 算法。

SM4 加密模式:

GM/T 0022-2014 支持以下 SM4 工作模式:

模式说明适用场景
CBC密码分组链接模式通用数据加密
GCM伽罗瓦/计数器模式需要认证加密的场景

封装模式

IPSec VPN 支持两种封装模式:

隧道模式(必备):

CODE
┌──────────┬──────────┬──────────────────────────────┐
│ 新 IP 头  │ ESP/AH 头 │     原始 IP 数据包(加密)     │
└──────────┴──────────┴──────────────────────────────┘
适用于网关到网关、主机到网关的场景。原始 IP 地址被完全隐藏。

传输模式(可选):

CODE
┌──────────┬──────────┬──────────────────────────────┐
│ 原始 IP 头 │ ESP/AH 头 │     上层协议数据(加密)      │
└──────────┴──────────┴──────────────────────────────┘
仅用于主机到主机的端到端通信,保留原始 IP 地址。

双证书机制

GM/T 0022-2014 的一个核心特性是强制要求双证书支持。在国密 PKI 体系中,每个用户持有两张证书:

证书类型用途密钥管理
签名证书身份鉴别、数字签名用户自行生成密钥对
加密证书密钥协商中的对称密钥加密保护密钥管理中心(KMC)生成并托管
关键规则:

  • 在 IKE 第一阶段的密钥交换中,必须使用加密证书的公钥对交换数据进行加密保护,不能使用签名证书的公钥。
  • 身份鉴别(AUTH 载荷的签名)使用签名证书的私钥。
  • 这一设计确保了加密密钥的可托管性(满足合规审计需求),同时签名密钥由用户自主控制(保证不可否认性)。

密钥体系

GM/T 0022-2014 定义了三层密钥体系结构:

密钥生命周期:

密钥层生成方式更新周期存储位置
设备密钥初始化时生成按证书有效期(通常 1-3 年)密码模块安全存储
工作密钥IKE 第一阶段派生IKE SA 生存期(通常数小时)内存
会话密钥IKE 第二阶段派生IPSec SA 生存期(通常数小时或按流量)内存

NAT 穿越

GM/T 0022-2014 支持 NAT 穿越(NAT-T),当 IPSec 通信路径中存在 NAT 设备时,ESP 报文被封装在 UDP 4500 端口报文中传输:

CODE
┌──────────┬──────────┬──────────┬──────────────────────┐
│  IP 头    │ UDP 头    │ ESP 头    │  加密载荷             │
│          │ :4500    │          │                      │
└──────────┴──────────┴──────────┴──────────────────────┘

NAT 穿越检测在 IKE 交换中通过 NAT_DETECTION_SOURCE_IP 和 NAT_DETECTION_DESTINATION_IP 载荷完成。检测到 NAT 后,后续所有报文自动切换为 UDP 封装模式。

安全策略数据库

IPSec VPN 的安全策略由 SPD(Security Policy Database)和 SAD(Security Association Database)管理:

SPD(安全策略数据库):

CODE
┌──────┬──────────────┬──────────────┬──────────┬──────────┐
│ 优先级 │  源地址范围   │  目的地址范围  │  协议    │  动作     │
├──────┼──────────────┼──────────────┼──────────┼──────────�
│  1   │ 10.0.1.0/24  │ 10.0.2.0/24  │   ANY    │ PROTECT  │
│  2   │ 10.0.1.0/24  │ 10.0.3.0/24  │   TCP    │ PROTECT  │
│  3   │ 0.0.0.0/0    │ 0.0.0.0/0    │   ANY    │ BYPASS   │
└──────┴──────────────┴──────────────┴──────────┴──────────┘
  • PROTECT:匹配的流量需要 IPSec 保护,触发 IKE 协商或查找已有 SA。
  • BYPASS:匹配的流量直接放行,不做任何处理。
  • DISCARD:匹配的流量直接丢弃。
SAD(安全关联数据库):

CODE
┌───────┬──────────┬──────────┬──────────┬──────────┬──────────┐
│  SPI   │  源地址   │  目的地址  │  协议    │  加密算法 │  完整性算法│
├───────┼──────────┼──────────┼──────────┼──────────┼──────────┤
│ 0x1234 │ 10.0.1.1 │ 10.0.2.1 │   ESP    │ SM4-CBC  │ HMAC-SM3 │
│ 0x5678 │ 10.0.1.2 │ 10.0.2.2 │   ESP    │ SM4-GCM  │  (内置)   │
└───────┴──────────┴──────────┴──────────┴──────────┴──────────┘

与 SSL VPN 的对比

维度IPSec VPN (GM/T 0022)SSL VPN (GM/T 0024)
工作层次网络层(L3)应用层与传输层之间(L4-L5)
保护粒度主机/网段级应用/端口级
透明性对应用完全透明需要应用集成
部署模式网关到网关、端到网关端到站到网关到网关
密钥体系三层(设备/工作/会话)三层(设备/预主/工作)
身份鉴别必须数字证书支持证书+动态口令等
典型场景站点间互联、远程接入移动办公、Web 应用接入
对应标准GM/T 0022-2014GM/T 0024-2014

参考来源

  • GM/T 0022-2014《IPSec VPN 技术规范》
  • GM/T 0023-2014《IPSec VPN 网关产品规范》
  • GB/T 36968-2018《信息安全技术 IPSec VPN 技术规范》
  • RFC 4301: Security Architecture for the Internet Protocol
  • RFC 4302: IP Authentication Header
  • RFC 4303: IP Encapsulating Security Payload (ESP)
  • RFC 4308: Cryptographic Suites for IPsec
  • GM/T 0002-2012《SM2 椭圆曲线公钥密码算法》
  • GM/T 0004-2012《SM3 密码杂凑算法》
  • GM/T 0001-2012《SM4 分组密码算法》

相关实践