PFS 的作用
PFS(Perfect Forward Secrecy,完美前向安全)让阶段二的子 SA 密钥独立于阶段一重新派生:即使阶段一的密钥后来泄露,也无法反推出历史会话的密钥。代价是每次重协商都要多做一次 DH 交换,计算开销上升。两端需要同时启用,且 DH 组必须一致。
基本信息
| 作用 | 子 SA 密钥独立派生,提升前向安全性 |
|---|---|
| 配置位置 | crypto map 或 ipsec profile 下的 set pfs |
| 一致性要求 | 两端同时启用,且使用的 DH 组相同 |
| 核对方式 | show crypto ipsec sa 中的 PFS 字段 |
| 常用组 | group14(2048 位 MODP)、group19(ECP 256) |
典型使用场景
- 安全基线要求前向安全:启用 PFS 并统一两端组号
- 对端协商排障:阶段一正常而阶段二反复失败
- 设备性能有限:评估 PFS 带来的额外 DH 计算开销
- 合规审计:提供两端均已启用 PFS 的配置证据
- 调整 SA 生命周期时同步复核 PFS 设置
配置与核对
配置与核对
crypto map CMAP 10 ipsec-isakmp
set peer 203.0.113.2
set transform-set TS
set pfs group14 # 阶段二重新派生密钥,用 group14
!
crypto ipsec profile PROF
set pfs group14
!
show crypto ipsec sa | include PFS # 核对实际协商到的 PFS 状态排查要点
| 现象 | 含义 | 排查方向 |
|---|---|---|
| 阶段一通、阶段二失败 | PFS 不一致或组号不匹配 | 核对两端 PFS 开关与组号 |
| 两端配置相同仍失败 | 实现间对分组处理存在差异 | 按对接要求统一配置并抓包确认 |
| SA 频繁重协商 | PFS 叠加了过短的 SA 生命周期 | 在安全与开销之间重新平衡 |
部分实现允许一端启用、另一端不启用并协商成功,但实际保障与设计预期不符;配置评审应以两端协商结果为依据,而不是只看单端配置。
PFS 的组号不要求与阶段一的组一致,但两端必须相同;把这两个组混为一谈,是阶段二失败最常见的误判原因。
启用 GCM 类加密算法时,部分平台对完整性算法的配置方式与 HMAC 不同,改动前先确认版本支持情况,避免配出无效组合。
阶段二的重新协商由流量或生命周期触发,PFS 生效的时机是在子 SA 重建时:配置改完可以等一次重协商或主动清除 SA 来验证,只盯配置文件容易误判已经生效。