58轮SHA - 1的代数密码分析
1. 代数消息修改算法
代数消息修改算法是寻找58轮SHA - 1碰撞的重要工具。其具体步骤如下:
1. 随机选择((a_1, a_2, \ldots, a_{16}) \in (\mathbb{F} 2^{32})^{16})。
2. 令(a \leftarrow (a_1, a_2, \ldots, a {16}))。
3. 求解代数方程组(CR(a)),其解对应控制位的赋值,这些赋值能验证所有受控多项式。
4. 求解代数方程组(SC(a)),其解对应半中性位和调整位的赋值,这些赋值能验证所有非受控多项式。
5. 根据前两个方程组的解更新(a)。
6. 返回(a)。
下面是该算法的mermaid流程图:
graph TD;
A[随机选择\((a_1, a_2, \ldots, a_{16}) \in (\mathbb{F}_2^{32})^{16}\)] --> B[令\(a \leftarrow (a_1, a_2, \ldots, a_{16})\)];
B --> C[求解\(CR(a)\)];
C --> D[求解\(SC(a)\)];
D --> E[根据解更新\(a\)];
E --> F[返回\(a\)];
2. 消息修改与纠错码解码的关系
设(S)是(F = (\mathbb{F} 2^{32})^{16})中所有满足关于({a