对Hamsi - 256的改进代数攻击
1. Moebius变换及复杂度分析
对数组应用Moebius变换,可得到包含多项式对所有 $2^{32}$ 种可能输入值评估结果的数组。各步骤复杂度如下:
- 步骤1 :需要 $\sum_{i = 0}^{6} \binom{32}{i} \approx 2^{20}$ 次压缩函数评估。
- 步骤2 :需要 $\sum_{i = 0}^{6} 2^{i} \binom{32}{i} < 2^{26}$ 次位操作。
- 步骤3 :可与步骤2结合,直接将系数写入数组,无需额外工作。
- 步骤4 :朴素实现需要 $32 \cdot 2^{31}$ 次位操作。但在实际情况中,初始数组只有约 $2^{20}$ 个非零值,其位置已知且代表汉明重量至多为6的所有向量。Moebius变换各迭代复杂度如下:
- 第 $j$ 次迭代($0 \leq j \leq 25$)复杂度为 $\min(2^{31}, 2^{j} \sum_{i = 0}^{6} \binom{31 - j}{i})$。
- 第 $j$ 次迭代($26 \leq j \leq 31$)复杂度为 $2^{31}$。
所有迭代的总复杂度小于 $7 \cdot 2^{32}$。也可使用基于格雷码的多项式枚举算法,其复杂度与基于Moebius变换的算法相近,但更复杂。
假设一次Hamsi - 256压缩函数的直接评估需要约10500次位操作,步骤4是最耗时的步骤,主导了算法的复杂度。分析不
超级会员免费看
订阅专栏 解锁全文
32

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



