Page 42 - 《软件学报》2025年第10期
P. 42
米瑞琪 等: 基于 Kyber 公钥加密的高效认证密钥交换协议 4439
上述 cookie 方案使用在 DTLS [19] 和 IKEv2 [20] 中. 但该 cookie 机制存在 3 个主要缺点. 首先, 为了尽可能避免暴
露服务器, 原则上, 不应当给任何不能确认身份的包回应任何消息. 在服务器高负载的情况下, 如果给收到的每个
消息都发送 cookie 回复会破坏这个特性. 第 2 个问题是, cookie 不应以明文发送, 因为中间人可能会利用它发送伪
造的信息, 引导消息的发送者和中间人握手. 第 3 个问题是, 攻击者可以给发起者发送大量的虚假 cookie, 随后发
起者会使用这些虚假的 cookie 计算消息的 MAC, 这样计算出来的 MAC 值是无效的, 但是会大量消耗发起者的计
算资源.
为解决这个问题, 我们采用了双 MAC 机制 [15] (以下用 msg.mac 1 和 msg.mac 2 指代) 解决了上述 3 个问题. 针
对第 1 个问题, 无论是否处于高负载状态下, 发送的每一条消息都必须包含一个 MAC 值, 记作 msg.mac 1 . 发起者
使用响应者的公钥作为计算 msg.mac 1 的密钥, 这意味着发起者至少能够确定响应者的身份. 只有发送有效的
msg.mac 1 才能引发响应者的 cookie 响应. 尽管响应者的公钥并非保密的值, 但是在保证服务的隐秘性的要求下,
能够算出正确的 msg.mac 1 的响应者的公钥能够证明消息的发起方知道响应者的存在. 从而可以保证握手确实在
发起者和响应者之间进行.
为了解决第 2 个问题, 可以使用 AEAD 加密 cookie. AEAD 的加密密钥为响应者的公钥. 在拒绝服务攻击模
型中, 这些大多是公开的值已经足够满足我们的目的. 如果存在中间人利用该 cookie 进行欺诈, 如果接收者身份
(公钥) 不正确则无法对 cookie 解密, 从而可以识别出恶意发送的 cookie. 当响应者负载过高时, 只接受包含 msg.mac 2
的消息. msg.mac 2 的运算使用安全传输的 cookie 作为 MAC 的密钥. 总的来说, 响应者在计算 msg.mac 1 与 msg.mac 2
并将其与消息中接收到的 MAC 进行比较后, 必须拒绝带有无效 msg.mac 1 的消息, 并且在负载过高时也可能会拒
绝带有无效 msg.mac 2 的消息. 如果响应者收到一个带有有效 msg.mac 1 但无效 msg.mac 2 的消息, 并且处于负载状
态, 它可以回应一个包含 cookie 的回复消息.
最后, 为了解决第 3 个问题, 即攻击者可能给发起者发送大量的虚假 cookie, 欺骗发起者会使用这些虚假的
cookie 计算消息的 MAC, 这样计算出来的 MAC 值是无效的, 攻击者可能通过这种方式对发起者进行 DDoS 攻击.
为了解决这个问题, WireGuard 采用的解决方案是使用 AEAD 加密 cookie 的时候, 将 AEAD 的“附加数据”字段设
定为 msg.mac 1 . cookie 回复消息中 cookie 对初始消息的第 1 个 MAC (msg.mac 1 ) 进行额外认证. 如果攻击者没有站
在中间人位置, 由于 cookie 的计算中, 使用 AEAD 的关联数据部分绑定了初始消息, 攻击者无法向发起者发送大
量无效的 cookie 回复消息阻止发起者使用正确的 cookie 进行认证. 对于处于中间人位置的攻击者 (可以任意改变
或阻止消息传输), 阻止 cookie 的方法是直接去掉 cookie 回应从而阻止发起者和响应者之间建立连接. 此外, 在
msg.mac 1 和 msg.mac 2 的运算中, 可以不包含对消息中密文的 MAC 运算. 发起者给响应者发送的消息中, 包含使用
响应者公钥计算的密文 ct 1 , 响应者给发起者发送的消息中, 包含使用发起者临时公钥计算密文 ct 2 和发起者公钥
ct 3 . 计算上千字节的杂凑值本身是个非常耗时的行为, 计算密文的杂凑值耗时几乎占据计算整个握手消
计算密文
息的一半. 因此, 这种做法可以极大地提升 Kyber-PFS-AKE 的计算性能. 这种做法不会影响会话密钥的安全性, 这
是因为在 Kyber-PFS-AKE 的协议设计中包含对密文的解密和重加密校验. 重加密校验会检出无效的密文, 并拒绝
无效的 zero 值, 因此无效密文会被拒绝. 验证 MAC 的过程可以和重加密校验并行完成, 消息中其他内容 (如:
time,ltk) 长度均非常短 (32 字节), 对其进行 MAC 计算耗时很短.
4 算法安全性分析
本节给出 Kyber-PFS-AKE 协议在 eCK-PFS-PSK 模型下的安全性证明概述. 我们参照在 eCK-PFS-PSK 模型
下的 AKE 的证明, 基于游戏跳跃 (game hop) 给出了 Kyber-PFS-AKE 的安全性证明. 因篇幅有限, 证明过程中, 情
况 (case) 和游戏 (game) 的详细内容可以查阅本文的电子附件 https://blog.csdn.net/weixin_38238086.
s
Kyber-PFS-AKE 的证明将证明分为 3 种情况讨论, 假设敌手选中用于测试随机性的会话为 π , 敌手需要判断
i
s
s
π , 3 π 会话是否具有匹配的会话.
挑战者返回给他的比特串是均匀随机选取的, 还是会话 i 种情况的区分是 i
1) 情况 1: π 为发起者的会话, 不存在与之匹配的会话 (意味着敌手在另一端欺骗发起者完成会话并协商出会
s
i

