本文目录导读:

IPsec 中 IKE(Internet Key Exchange,互联网密钥交换)隧道的建立过程,通常被称为 IKEv1 或 IKEv2 的主模式/野蛮模式,其核心目的是在两端设备之间建立一个安全的、经过认证的通道,用以协商后续用于保护用户数据的 IPsec 安全联盟。
IKE 隧道分为两个阶段:
- 阶段1:建立 IKE 安全联盟(ISAKMP SA),这是保护协商过程本身的“管理通道”。
- 阶段2:建立 IPsec 安全联盟(IPsec SA),这是保护实际用户数据的“数据通道”。
下面以最常用的 IKEv1 主模式 为例,详细说明 IKE 隧道建立的具体步骤。
IKE 隧道建立过程详解
假设有两个 VPN 网关,我们称为 发起端(发起方/Iinitiator) 和 响应端(响应方/Responder)。
第一阶段:建立 IKE 安全联盟
目标:通过 3 对消息(共 6 个包),协商出一个安全的、加密和认证的 IKE 通道。
-
消息 1 和 2:策略协商
- 发起端发送:包含其支持的哈希算法(如SHA-256)、加密算法(如AES-256)、认证方法(如预共享密钥)、DH组(Diffie-Hellman Group,用于密钥交换)等提议。
- 响应端接收:检查并选择自己支持的、最匹配的算法,然后响应:确认选用的算法组合。
- 结果:双方就“如何保护IKE协商本身”达成一致。
-
消息 3 和 4:密钥交换
- 发起端:生成一个随机数(Nonce),并计算自己的DH公共值,将这两个值发送给对方。这里发送的是公开的随机数和DH公钥,不包含身份信息。
- 响应端:也生成自己的随机数和DH公共值,发回给发起端。
- 关键点:双方利用对方的DH公钥和自己的DH私钥,计算出共享密钥(SKEYID),这个密钥将用于后续所有加密和认证,此时双方已具备加密能力,但还没有互相认证身份。
-
消息 5 和 6:身份认证
- 发起端:使用之前计算出的SKEYID对自身的 身份标识(如IP地址、设备ID)和 认证数据(如预共享密钥的哈希值)进行加密,然后发送。
- 响应端:收到后,用SKEYID解密,验证发起端的身份和认证数据是否合法,如果合法,也用自己的身份和认证数据加密后回复。
- 发起端:收到后解密并验证响应端的身份。
- 结果:双方互相确认了身份,并建立了IKE SA,从此往后,这个通道是加密且认证的。
第一阶段完成标志:在两台设备上可以看到
ISAKMP SA、IKE Phase 1或IKE SA状态为Active(活跃)。
第二阶段:建立 IPsec 安全联盟
目标:在已建立的 IKE 通道内,协商具体如何保护用户数据(IPsec SA),此阶段通常由 快速模式 完成。
-
消息 1(协商提议)
- 发起端:通过第一阶段建立的加密隧道,发送一个 “协商提议”包括:
- 要保护的数据(感兴趣流,如源/目标子网192.168.1.0/24 <-> 10.0.0.0/24)。
- 采用的IPsec协议(AH或ESP)。
- 封装模式(隧道模式或传输模式)。
- 加密算法和认证算法(如ESP-AES256, ESP-SHA-HMAC)。
- 生存时间(SA何时过期)。
- 响应端:收到后,检查自己的策略,如果可以接受,则回复“同意”。
- 发起端:通过第一阶段建立的加密隧道,发送一个 “协商提议”包括:
-
消息 2(接受提议)
响应端接受提议,并生成自己的IPsec SA参数(如SPI号、新的随机数),所有内容仍然通过第一阶段隧道加密传输。
-
消息 3(确认)
- 发起端收到响应端的确认后,发送一个 确认包,这代表双方就保护数据的具体参数达成一致。
- 关键点:IPsec SA 在双方设备上生成并安装。
第二阶段完成标志:在设备上可以看到
IPsec SA状态为Active,用户数据(如Ping包、网页请求)可以被IPsec加密保护。
总结与对比
| 阶段 | 名称 | 主要任务 | 核心作用 | 结果产物 |
|---|---|---|---|---|
| 第一阶段 | 主模式(Main Mode) | 认证双方身份,协商加密和认证算法,生成共享密钥 | 建立安全的、经过认证的管理通道,用于保护第二阶段协商 | IKE SA(ISAKMP SA) |
| 第二阶段 | 快速模式(Quick Mode) | 在IKE SA的保护下,协商具体保护数据的参数(如子网、协议、SPI) | 协商IPsec安全策略,生成用于保护用户数据的密钥 | IPsec SA |
常见的变体:野蛮模式
除了主模式,IKEv1 还有 野蛮模式。
- 核心区别:主模式在消息1、2中不发送身份信息,身份在最后一步加密保护,野蛮模式则在消息1中就发送身份和DH公共值。
- 优点:建立速度快(只需3对消息)。
- 缺点:身份在网络上明文传输(易被嗅探),且需要地址信息先匹配(如IP地址)。
- 适用场景:远程访问(客户端地址不固定)、高延迟链路。
IKEv2 的改进
IKEv2 简化和改进了流程:
- 阶段数减少:本质上只有一次标准的、简短的交换。
- 内建抗拒绝服务攻击(Anti-DoS):在正式协商前,响应端会先发送一个Cookie给发起端,要求其确认身份,防止资源被伪发起端耗尽。
- 更少的消息交换:标准建立仅需4条消息(第一对用于策略和密钥交换,第二对用于身份认证和IPsec SA),之后,增加一个IPsec SA只需要1对消息。
举例说明
假设两个路由器:
- Router A (公网IP: 1.1.1.1, 内网: 192.168.1.0/24)
- Router B (公网IP: 2.2.2.2, 内网: 10.0.0.0/24)
-
A 发起:
“我想用AES256+SHA256+DH14+预共享密钥” -
B 回应:
“可以,就这个组合,这是我的公钥和随机数” -
A 回应:
“这是我的公钥和随机数,这是加密后的我的身份(IP1.1.1.1)和密码哈希” -
B 验证身份成功后,加密回复:
“这是我的身份(IP2.2.2.2)和密码哈希”- 至此,IKE SA建立成功。
-
A 通过加密通道发送:
“我想保护192.168.1.0/24和10.0.0.0/24之间的流量,用ESP隧道模式,AES256加密” -
B 同意:
“好的,这是我的SA参数” -
A 确认。
- 至此,IPsec SA建立成功。 后续
168.1.1 ping 10.0.0.1的流量将被加密传输。
- 至此,IPsec SA建立成功。 后续
希望这个详细的过程能帮助你理解 IKE 隧道是如何建立的。
标签: 隧道