想象一下,数字世界就像一座繁忙的城市,每一条发送的消息都像是一封密封的信件。为了保护这些信件的安全,我们使用一种叫做“加密”的特殊锁,并为了确保没有人篡改它们,我们附上了一个独特的蜡封,称为“标签”。其中最流行的方法之一是被称为 GCM(伽罗瓦/计数器模式)的系统。把 GCM 想象成一个高科技邮局,它不仅给你的信件上锁,还用一个数学指纹对其进行盖章。这个指纹是使用一个秘密的“哈希密钥”创建的,这个密钥是一个只有发送者和接收者才知道的特殊数字。如果信件到达时指纹匹配,大家就知道它是真实的。如果指纹错误,信件就会被拒绝。这个系统广泛应用于各个领域,从你的 Wi-Fi 到安全的银行转账,因此保护好那个秘密哈希密钥至关重要。如果坏人偷走了那个密钥,他们就可以伪造自己的信件,欺骗邮局让其认为这些信件是真的。
研究员沈耀宾(Yaobin Shen)最近的一篇笔记探讨了这种系统在某些设置下存在的一个非常具体且有些异常的漏洞。该论文关注一个微小的细节:“随机值”(nonce)。在 GCM 的世界里,随机值就像是一个唯一的序列号或一次性密码,必须对每一封发送的信件都是不同的。它确保了即使你发送两次相同的消息,锁和封印看起来也会完全不同。该论文调查了如果有人无意中——或故意地——使用一个“零长度”的随机值会发生什么,这本质上是一个里面空无一物的空盒子。虽然该系统的一些官方规则手册(特别是 ISO/IEC 版本)允许使用这种空盒子,但其他版本(如 NIST 版本)则严格禁止这样做,要求至少包含一点数据。沈的工作表明,如果你遵循允许空盒子的规则,一个聪明的攻击者可以利用这个空盒子来破解封印背后的数学逻辑。
论文展示了一个巧妙的技巧:攻击者通过仅仅观察一条使用该空随机值加密的消息,就可以解开一个复杂的数学谜题,从而恢复出秘密哈希密钥。这就像是一个小偷注意到,当你用一个空的钥匙孔锁门时,锁扣合的声音揭示了万能钥匙的形状。一旦攻击者得到了这把钥匙,他们就可以伪造任何他们想要的任何消息。他们可以制造带有完美封印的假信件,而系统会接受这些信件为真实的。作者指出,这种攻击专门针对那些允许空随机值的系统版本,但在要求非空随机值的版本面前则会完全失效。这篇论文不仅仅是暗示这可能发生;它提供了一种清晰的、循序渐进的方法,展示了在这种特定场景下数学是如何崩溃的,证明了“空盒子”在某些实现方式中是一个危险的弱点。
技术摘要:关于零长度 Nonce 对 GCM 和 GMAC 影响的说明
问题陈述
本文探讨了在 Galois/Counter Mode (GCM) 及其特化形式 GMAC 中,由于处理零长度 Nonce(随机数)而引发的一个特定漏洞。尽管 GCM 和 GMAC 已被广泛部署为认证加密和消息认证码方案,但其安全规范在不同标准之间存在差异。NIST 版本明确规定 Nonce 必须至少为 1 bit 长。相比之下,ISO/IEC 版本(具体为 ISO/IEC 9797-3 和 ISO/IEC 19772)允许 Nonce 为变长字符串,且未强制执行最小长度限制,从而允许使用零长度字符串(记作 {})。作者研究了在 ISO/IEC 框架下使用此类零长度 Nonce 的安全后果。
方法论
本文提出了一种利用 Nonce 为空时 GHASH 函数数学特性的密钥恢复攻击。该攻击在两种场景下运行:一种是选择明文设置(攻击者可以使用零长度 Nonce 向加密预言机发起查询),另一种是特定的已知密文设置(攻击者观察到与零长度 Nonce 对应的有效加密)。
攻击流程如下:
- 初始化: 当 Nonce N 为零长度字符串时,初始化向量 Y0 计算为 GHASH(H,{},{})。根据 GHASH 的定义,这导致结果为 0n⋅H,即等于 0n。
- 标签生成: 认证标签 T 的生成方式为 T=GHASH(H,A,C)⊕EK(Y0)。由于 Y0=0n,则 EK(Y0) 变为 EK(0n),该值被定义为哈希密钥 H。
- 方程构建: 标签方程简化为 T=GHASH(H,A,C)⊕H。鉴于 A(关联数据)和 C(密文)是已知的,且 T 是可观测的,该方程变为关于未知变量 H(哈希密钥)的三次多项式。
- 密钥恢复: 通过求解该三次多项式,攻击者可以恢复哈希密钥 H。
- 伪造: 一旦恢复了 H,只要重复使用该零长度 Nonce,攻击者即可为任何关联数据和消息对伪造任意密文和标签。此外,通过满足线性关系 GHASH(H,A′,C′)⊕T′=GHASH(H,A1,C1)⊕T1,攻击者还可以使用之前观察到的任何 Nonce 来伪造消息。
论文还指出,该攻击可能对机密性产生部分影响。如果恢复的哈希密钥允许攻击者为伪造的查询计算 EK(Y0′),并且在 Y0′ 与用于加密另一个消息的计数器之间发生计数器碰撞,则攻击者可以恢复相应的明文块。
主要贡献与结果
- 攻击向量: 本文展示了一种简单且实用的攻击,仅需通过一次带有零长度 Nonce 的加密查询,即可恢复 GCM/GMAC 的秘密哈希密钥 H。
- 标准差异: 本研究强调了 NIST 与 ISO/IEC 规范之间的关键分歧。该攻击仅对遵循 ISO/IEC 标准(允许零长度 Nonce)的实现有效,而对强制执行至少 1 bit Nonce 长度的 NIST 合规实现无效。
- 后果: 恢复哈希密钥会导致认证机制的完全失效,从而允许伪造任意密文(在 GCM 中)或消息(在 GMAC 中)。
意义与主张
本文声称,证明了 ISO/IEC 规范中允许零长度 Nonce 会产生一种破坏 GCM 和 GMAC 安全性的漏洞。其重要性在于,这种攻击仅需极少量的数据(单次查询)即可恢复作为该方案安全基础组件的内部哈希密钥。
作者对于攻击范围保持了审慎的态度,明确指出该攻击仅适用于 ISO/IEC 版本,无法应用于 NIST 版本。本文并不声称破解了底层分组密码或 GCM 在使用长度 ≥1 bit 的 Nonce 时的通用安全性。相反,它旨在针对 ISO/IEC 标准中特定参数选择的警告。作者指出,若干实际应用中的实现似乎接受零长度 Nonce,但他并未公开识别这些实现,而是选择独立通知受影响的各方,以避免立即被利用。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。