Windows VPN Group24 与 MODP3072:你需要哪个组?
组号是注册表条目,不是按大小排的名次。把名称对应到它的参数,然后确认 Windows 参数能够表达哪些组。
Group24 和 MODP3072 都是密钥交换组的名称,它们并非强度不同的同一组。Group24 把 2048 位模数与 256 位素数阶子群组合在一起,而 MODP3072 是 3072 位的第 15 组。在指定了其中一个时选择另一个,是在改变需求而不是满足需求。有四个因素决定结果,其中没有一个需要相信看起来相似的名字。
编号是注册表条目,不是名次
IANA 按注册顺序为密钥交换组编号,所以更大的编号意味着更晚的注册表条目,而不是更强的组。第 14 组是 2048 位 MODP,第 15 组是 3072 位 MODP,第 24 组把 2048 位模数与 256 位素数阶子群组合在一起。把标识符读成大小排名,正好会产生把 24 当作更大的 15 的错误。名称只是标签,它背后的参数才是协商真正使用的东西。
| IANA group | What the group is | Expressible as Windows DHGroup | What a mismatch looks like |
|---|---|---|---|
| 14 | A 2048-bit finite-field modulus | Group14 | The gateway reports modp2048, which is the same group in other vocabulary |
| 15 | A 3072-bit finite-field modulus | Not in the documented enumeration | You cannot request it from this parameter; a gateway reporting modp3072 was configured elsewhere |
| 24 | A 2048-bit modulus with a 256-bit prime-order subgroup | Group24 | The gateway reports modp2048s256, so the two names differ while describing one group |
| 20 | The NIST P-384 curve | ECP384 | The gateway reports ecp384, and that 384 counts a field size rather than a modulus |
椭圆曲线组带来自己的困惑,因为曲线的位数描述的是域而不是模数。把 P-384 与 3072 位有限域组相比,仿佛这些数字衡量的是同一件事,什么也说明不了。
Windows 的枚举能表达什么
IKE 注册表和 Windows 客户端参数是两套词汇不同的接口。Microsoft 的 VpnClient cmdlet 参考 记载 DHGroup 接受 None、Group1、Group2、Group14、ECP256、ECP384 和 Group24。Group15 不在那份已记录的集合里,这意味着该参数无法表达你被要求的组。这是接口的限制,而不是关于协议支持哪些组的陈述。
提供未列出的拼写、整数或复制的策略字符串并不能扩展枚举。请查阅你实际部署的 Windows 版本的参考文档,如果该组不可用,诚实的结果是另一项已批准的策略或另一个客户端。
把 DHGroup、PfsGroup 和证书类型分开
DHGroup 为 IKE 密钥交换选择组,PfsGroup 则管后续受保护流量关联的前向保密。它们是不同的字段,所以正确设置一个并不能说明另一个。证书的 RSA 或 ECDSA 密钥是第三个属性,属于认证而不是临时交换。因此同一个配置文件可能在一层正确、在另一层错误,而成功的连接不会揭示是哪一层。
关于某种证书类型在每条 IKEv2 连接上强制使用 ECP 组的报告,描述的只是一种设置组合。它们并不确立协议规则,把它们当作规则正是局部怪癖变成策略的方式。
读取网关协商出的组
VpnClient 模块把 Set-VpnConnectionIPsecConfiguration 作为只写接口提供,主机上没有任何对应的 Get- cmdlet 能把该策略读回来。记录你应用的 DHGroup 和 PfsGroup 值,然后从网关读取交换实际使用了什么。请在新连接之后运行这些命令,而不是在复用旧关联的重连之后。
swanctl --list-sas
ipsec statusall
配置文件报告 Group24 而网关报告 modp2048s256 是一致的,因为那是两种词汇下的同一个组。网关报告 modp3072 而配置文件说是 Group24 则不一致,说明有一端没有执行你所认为的配置。证书那一行回答的是单独的认证问题,PFS 字段回答第三个问题。写合规说明之前先把三者对比清楚。
记录请求的组、协商出的组,以及接受或拒绝该设置的接口。审阅者需要的正是这三样,其中任何一项都无法从策略名称推断出来。