ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Luffa算法的各种密码分析方法全面盘点

Luffa算法的各种密码分析方法全面盘点

Luffa算法的各种密码分析方法全面盘点

Luffa是 NIST SHA-3 竞赛第二轮候选算法之一,其设计融合了变种 sponge 结构与并行置换。尽管未能进入最终评选,但其组件在约减轮数下被发现了多种密码分析弱点。以下按攻击类型对 Luffa 的主要密码分析方法进行系统盘点。


🔓伪攻击(Pseudo-Attacks)

伪攻击假设攻击者能控制或修改初始值(IV),而非标准安全模型。Jia 等人系统研究了 Luffa 的伪碰撞、伪第二原像与伪原像攻击。

伪碰撞与伪第二原像
由于 Luffa 的消息注入函数MI
是线性的,求其逆可轻易构造伪碰撞对。对 Luffa‑256,仅需改变 5 比特的 IV 即可获得伪碰撞和伪第二原像;Luffa‑384 需改变 7 比特,Luffa‑512 需 12 比特差分。

伪原像

  • Luffa‑224/256:给定哈希值,仅需2次迭代即可得到伪原像。
  • Luffa‑384:需约264次迭代与267字节内存(扩展广义生日攻击)。
  • Luffa‑512:复杂度升至2128次迭代与2132字节内存。

这些伪攻击可直接转化为 NMAC 的相关密钥伪造攻击。


📈高阶差分攻击与零和区分器

Watanabe等人对 Luffa v1 的非线性置换Qj进行了代数次数分析,发现其增长慢于理想置换。

区分器结果

  • 利用一个块消息,可构造最多7/8步Luffa v1 的区分器,攻击需2216条消息。
  • Aumasson 与 Meier 提出的零和攻击(高阶差分的应用)原需281输入,经优化后可降至233。

对 Luffa v2 的适用性
Luffa v2在末轮强制增加了一个空白轮,使代数次数不低于 256,因此高阶差分攻击不威胁完整轮数的 Luffa v2。


🔄旋转攻击

针对 Luffa 置换的旋转特性,研究者定义了“旋转对”,并证明了“与”“或”运算对旋转关系的等效性。

区分攻击结果

  • 3轮 Luffa 置换难以抵抗旋转攻击,区分算法的计算复杂度仅为216。
  • 该攻击属于区分攻击,不直接恢复密钥或构造碰撞,但表明约减轮数下置换的随机性不足。

💥回弹攻击(Rebound Attack)的变种

Khovratovich等人针对 Luffa v2 组件开发了改进的回弹方法,包括构建截断差分路径、多入站阶段差分搜索以及通过线性系统快速求解。

主要成果

  • 对7/8轮Luffa‑256 构造了非平凡半自由起始碰撞,时间复杂度2104,内存2102。
  • 对 Luffa v2 的完整置换给出了更高效的区分器,采用“先短测全样本、再长测子集”的模型,能显著快于随机置换找到差分路径的右对。

这是首次对 Luffa v1 置换以外的组件进行分析。


⚔️中间相遇攻击(Meet-in-the-Middle)

Luffa的链式结构中,消息注入函数与置换的组合可被中间相遇攻击利用。

攻击思路
寻找前两个块的部分碰撞(内部碰撞),从而构造更长的消息碰撞。该攻击对约减轮数的 Luffa 有效,但对完整轮数未发现严重威胁。

复杂度
攻击约需2w-1wnb
次操作,其中w为并行分支数,nb为分支宽度。对 Luffa‑256(w=3),复杂度约为2170量级,未突破安全边界。


🧩内部碰撞与半自由起始碰撞

内部碰撞
Luffa的安全性依赖于消息注入函数抗内部碰撞的能力。研究者提出了多种通用攻击寻找内部碰撞,但均未对完整 Luffa 构成实际威胁。

半自由起始碰撞

  • 对任意轮数的 Luffa,半自由起始碰撞复杂度为2256⋅w-1/w。
  • 对Luffa‑512,该复杂度可降至2204.8。
  • 对7/8轮 Luffa‑256,回弹攻击将半自由起始碰撞复杂度降至2104(时间)与2102(内存)。

🧬滑动攻击(Slide Attack)

Luffa的最终化过程包含重复的空白迭代,可能遭受滑动攻击。官方支持文档分析了滑动攻击对最终化阶段的影响,但未发现对完整算法的实际威胁。


🛡️其他攻击与通用分析

暴力碰撞与固定 IV 碰撞
对4/8步Luffa‑256 v2,使用精细消息修改技术,可在复杂度290
下找到固定初始向量的碰撞。这是首个针对固定 IV 的碰撞分析。

随机性区分
对8轮完整置换,存在非随机性区分器,复杂度为2224
。

侧信道攻击
官方文档评估了侧信道攻击的抵抗力,Luffa 的 S 盒实现需注意时序泄露防护。


💎总结

攻击类型

目标

轮数/变体

复杂度

实际威胁

伪碰撞/伪第二原像

哈希函数

完整(控制 IV)

极低(5‑12 比特 IV 改变)

仅相关密钥模型

伪原像

哈希函数

完整

Luffa‑256: 2 次迭代;Luffa‑512:2128

仅伪设置

高阶差分区分器

置换

7/8 步 (v1)

2216消息

不威胁完整轮

零和区分器

置换

约减轮

233‑281

不威胁完整轮

旋转区分攻击

置换

3 轮

216

仅约减轮

回弹攻击

压缩函数

7/8 轮 (v2)

2104时间 /2102内存

不威胁完整轮

中间相遇

链式结构

约减轮

≈2170(Luffa‑256)

不威胁完整轮

内部碰撞

链式结构

通用

未突破安全边界

无实际威胁

固定 IV 碰撞

哈希函数

4/8 步 (v2)

290

仅约减轮

滑动攻击

最终化

---

未发现实际威胁

无实际威胁

总体评价:Luffa 在完整轮数下对所有已知攻击均保持了足够的安全裕度。上述攻击绝大多数针对约减轮数或伪/半自由起始模型,其复杂度远高于暴力搜索,未能对标准安全目标(抗碰撞、抗原像)构成实际威胁。Luffa 的结构设计——尤其是 v2 中增加的空白轮——有效抵御了高阶差分等代数攻击,但其消息注入函数的线性特性在伪设置下较为脆弱。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进