高级中间人原像攻击技术解析
1. MD4哈希函数攻击
1.1 MD4哈希函数基础
MD4哈希函数的工作流程是先对消息进行填充,使填充后的消息长度成为512的倍数。接着将填充后的消息分割成512位的块,并迭代地输入到压缩函数中。最终压缩的输出即为哈希值。压缩函数遵循Davies - Meyer结构,主要由消息调度和步骤函数两部分组成。
- 消息调度 :把512位的消息块分成16个32位的字,再通过置换将其扩展为48个,具体置换规则如下表所示:
| 原始索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
| 第一次置换 | 0 | 4 | 8 | 12 | 1 | 5 | 9 | 13 | 2 | 6 | 10 | 14 | 3 | 7 | 11 | 15 |
| 第二次置换 | 0 | 8 | 4 | 12 | 2 | 10 | 6 | 14 | 1 | 9 | 5 | 13 | 3 | 11 | 7 | 15 |
- 步骤函数 :以四个寄存器作为输入,按公式 $Q_i = (Q_{i - 4} + F_i(Q_{i - 1}, Q_{i - 2}, Q_{i - 3}) + M_{\pi(i)} + C_i) \ll r_i$($i = 0, \ldots, 47$)更新其中一个寄存器。其中,$C_i$ 和 $r_i$ 是预定义