常见问题
几年前,一个安全专家团队发表了一篇论文,描述了一种攻击场景,该场景能够破解使用预共享密钥 (Pre-Shared Key) 的 IKEv1 Aggressive Mode 连接,但这种攻击方法无法直接应用于具有相同预共享密钥的 IKEv1 Main Mode 连接。这导致了一个错误的假设,即与 Main Mode 相比,Aggressive Mode 从根本上来说是不安全的。然而,如果以中立的角度看待事实,这个说法并不成立。大多数人不知道的是,该攻击的一部分是使用“暴力破解”方法猜测预共享密钥 (PSK),而且只有当 PSK 选择得过于简单时,这种攻击才可能成功。PSK 仅仅是一个密码,就像任何密码一样,弱密码会导致安全性降低。只要 PSK 长度至少为 14 个字符(越多越好),包含小写字母、大写字母和数字,并且是随机生成的(这样就很难猜到它),并且在第一阶段使用 SHA1 或更安全的哈希算法(如果可能,我们建议使用 SHA-256),就没有理由认为 Aggressive Mode PSK 连接从根本上来说比 Main Mode PSK 连接不安全。如果您想确保万无一失,只需使用基于证书的身份验证即可,这样可以完全防止这种攻击。
技术背景:
预共享密钥 (PSK) 不是用于加密数据的密码,它仅用于身份验证,类似于用户使用密码登录网站。在第一阶段,双方必须向对方证明他们知道 PSK。这不能通过将密钥发送给另一方来实现,因为即使另一方以前不知道它,现在也会知道了。相反,双方必须计算一个数字(即哈希值),该数字基于它们已经交换的数据(这些数据每次建立连接时都会不同,以确保哈希值也每次都不同)以及 PSK 本身。只有这个哈希值才会发送到另一方,然后另一方必须执行相同的计算。如果它得到相同的结果,那么另一方也使用了相同的 PSK,因此知道它。然后,同样的操作会反向重复进行,但计算方式略有不同,以确保两个哈希值始终不同,因为将相同的值返回并不能证明任何事情。
Main Mode 和 Aggressive Mode 之间的简单区别在于,在 Main Mode 中,哈希值是加密传输的,因为用于生成双方安全会话密钥的关键交换过程(DH Exchange)已经完全完成,并且一旦双方拥有会话密钥,所有数据包都将仅以加密形式传输。而在 Aggressive Mode 中,哈希值是以未加密的形式传输的,因为此时关键交换尚未完成。因此,通过监听 Aggressive Mode 连接,攻击者可以获得哈希值以及计算该值所需的所有数据,除了 PSK 本身。但这并不能使攻击者破解连接;攻击者拥有足够的信息来开始搜索 PSK,例如使用所谓的“暴力破解”攻击(尝试所有可能的组合)或字典攻击(尝试从其他在线服务的泄露数据中获得的常用密码)。只有当 PSK 太弱以抵御这些攻击时,连接才可能最终被破解。因此,良好的且足够安全的 PSK 对于基于 PSK 的 VPN 连接的安全性至关重要。
然而,相同的攻击也可能发生在 Main Mode 连接上,但需要付出更多的努力。在 Main Mode 的情况下,仅仅监听流量是不够的;相反,需要进行所谓的“中间人” (MitM) 攻击,即攻击者必须能够拦截和操纵数据。通过 MitM 攻击,攻击者可以绕过加密,虽然这不足以访问 VPN,因为仍然需要 PSK,否则第一阶段将无法成功完成,但即使这样,攻击者也会获得哈希值以及计算它所需的所有数据,并可以使用与 Aggressive Mode 连接相同的方式尝试猜测 PSK。而且,如果攻击者已经能够拦截所有 VPN 流量(这是任何攻击场景的基本要求),那么很可能他也可以执行 MitM 攻击,并且在这种情况下,Main Mode 将不会提供任何额外的保护。
由 11 个随机字母数字字符组成的 PSK 的熵约为 64 位,这意味着有 2^64 个可能的取值。截至 2016 年,现代高端显卡每秒可以计算大约 10 亿个 SHA-256 哈希值。平均而言,需要尝试所有可能值的 50% 才能找到匹配项,这需要 292 年的时间。如果攻击者有 100 张这样的显卡,那么攻击“仅”需要大约 3 年时间。但是,当 PSK 有 14 个字符时,熵约为 80 位,即使只有一张显卡也需要 19,154,798 年。即使是 10,000 张显卡也不会充分缩短时间。而且永远不要忽视这种攻击的成本。与其说是购买显卡的成本,不如说是它们的功耗,当所有这些显卡以最大功率运行数年、数十年甚至几个世纪时,这会迅速增加数十亿美元的电力成本,仅仅是为了破解世界上一个 PSK 连接。此外,每次更改 PSK 时,攻击者都必须从头开始。因此,如果 PSK 仅每年更换一次,攻击者最多只有一年时间来找到它;即使对于弱密码来说,这也非常雄心勃勃。