【IPSec】IKEv2 握手:IKE_SA_INIT 与 IKE_AUTH
内容提要
本文介绍IKEv2协议架构,聚焦初始握手:IKE_SA_INIT协商加密套件与DH密钥,IKE_AUTH完成身份认证并建立首个Child SA。对比PSK与证书认证,说明Cookie抗DoS机制,并与WireGuard对照。强调四条消息即可完成建链,延迟差异主要来自证书验证等环节。
延伸解读
四条消息的延迟真相
IKEv2 用两个交换共四条消息完成建链,但这不等于比 WireGuard 慢一倍。首个 Child SA 已在 IKE_AUTH 中捎带,额外 RTT 通常来自证书验证、EAP 或 NAT 探测,而非消息计数本身。理解这一点有助于避免仅凭握手轮次判断协议性能。
PSK 与证书的运维权衡
PSK 配置简单,但密钥分发与轮换在大规模场景下是负担;证书引入 PKI 信任锚、CRL/OCSP 和 SAN 匹配等额外故障面,却也是合规审计常要求的部分。WireGuard 将信任锚留在带外,而 IKEv2 将 PKI 接入协议,选择需结合运维能力与审计需求。
Cookie 机制的边界
Cookie 用于抗地址伪造 DoS,在分配昂贵 DH 状态前验证对端可达性,但它不替代身份认证,也无法防止已通过检查的对端耗尽 CPU。与 WireGuard 的静默丢弃不同,IKEv2 的 Cookie 机制挂在有状态机上,理解其边界有助于正确配置抗 DoS 策略。
Q&A
IKEv2 初始握手包含哪两个交换,各自的作用是什么?
IKEv2 初始握手包含 IKE_SA_INIT 和 IKE_AUTH 两个交换。IKE_SA_INIT 用于协商加密套件、交换 DH 公钥和 Nonce,并派生保护后续 IKE 消息的密钥;IKE_AUTH 用于认证对端身份,并通常同时建立首个 Child SA。
IKE_SA_INIT 交换中主要包含哪些载荷,它们各自的作用是什么?
IKE_SA_INIT 交换包含 SA(提议列表,协商加密、PRF、完整性、DH 组等)、KE(DH 公钥)、Ni/Nr(Nonce),以及可选的 CERTREQ(证书请求)。SA 用于协商算法,KE 用于密钥交换,Nonce 用于抗重放和密钥派生,CERTREQ 提示可接受的证书权威。
IKE_AUTH 交换中 AUTH 载荷是如何计算的?PSK 和证书认证有何区别?
AUTH 载荷是对特定八位组串(包含对方 IKE_SA_INIT 消息、Nonce 等)进行签名或 PRF 计算的结果。PSK 认证使用预共享密钥派生密钥计算 PRF,配置简单但密钥分发和轮换困难;证书认证使用数字签名,需要 PKI 支持,信任锚、CRL/OCSP 等是额外故障面,但更适合大规模部署。
IKEv2 中的 Cookie 机制是如何工作的?它有什么作用?
当响应方资源压力大时,可对 IKE_SA_INIT 返回 COOKIE Notify,要求发起方携带 Cookie 重发。目的是在分配昂贵的 DH 状态前,验证对端能接收发往其声称地址的包,从而抗地址伪造 DoS。但 Cookie 不替代身份认证,也不能防止已通过检查的对端耗尽 CPU。
IKEv2 与 WireGuard 在握手上有哪些主要区别?
IKEv2 使用两个交换(4 条消息)建立 IKE SA 和首个 Child SA,身份认证支持 ID + PSK/证书/EAP 等,算法通过 SA 载荷协商,未认证探测可选 Cookie 或有状态错误 Notify。WireGuard 使用 1-RTT 握手,身份基于静态公钥(可选 PSK),算法固定,未认证包默认静默。
IKEv2 握手需要多少条消息?为什么说它不一定比 WireGuard 慢?
IKEv2 初始握手需要 4 条消息(两个交换)。虽然消息数多于 WireGuard 的 1-RTT,但 Child SA 已在第二次交换中捎带,额外延迟主要来自证书验证、EAP 或 NAT 探测,而不是消息计数本身。