对 Hamsi - 256 的改进代数攻击
1. 后过滤步骤及复杂度
对于每个解,需要逐个评估剩余的 (28 - \alpha) 个未分析的输出位,并将输出与 (h_{i}^{*}) 的对应值进行比较。若输出位的值与目标位的值不匹配,则舍弃该解。
每个解预计评估 2 个额外的位。评估一个位需要对前 2 轮的 16 个输入线性多项式进行评估,再加上 S 盒和异或评估所需的 35 个额外位操作。由于特殊的变量选择,线性多项式非常稀疏,每次评估大约需要 3 个位操作。因此,2 次评估总共需要 (2(35 + 3×16) = 166) 个位操作。
后过滤总共需要约 (166×2^{|V| - \alpha}) 个位操作。后过滤后剩余的解的数量约为 (2^{|V| - 28})。若 (|V| < 28),平均每个系统预计解的数量少于 1 个。后过滤后运行压缩函数所需的时间可忽略不计。
2. 寻找分析位的良好序列
为了最小化攻击的复杂度,需要找到一个良好的分析位序列(长度为 (\alpha))。由于可能的序列众多,穷举搜索最优序列的成本过高,因此采用启发式算法。具体步骤如下:
1. 给定 28 个潜在分析位的依赖关系,穷举搜索 3 个分析位的最优序列,使查询算法及其分析的复杂度之和最小。该步骤涉及对 ( \frac{28!}{25!}<2^{14.5}) 个序列进行穷举搜索,假设 (|V| < 25),复杂度约为 (2^{19.5}) 个位操作,通过更巧妙的方式考虑序列,可将复杂度降低到约 (2^{18.5})。
2. 通过迭代搜索下一个分析位 (i) 来填充序列中剩余的 (28 - 3 = 25) 个位,使添
超级会员免费看
订阅专栏 解锁全文
37

被折叠的 条评论
为什么被折叠?



