深入解析Shin哈希函数及其改进版本的密码分析
1. Shin哈希函数基础
Shin哈希函数在每一轮采用不同的常量,具体如下:
- 第1轮采用常量 (K_1 = 0x0)
- 第2轮采用常量 (K_2 = 0x5a827999)
- 第3轮采用常量 (K_3 = 0x6ed9eba1)
- 第4轮采用常量 (K_4 = 0x8f1bbcdc)
每一轮会使用不同的布尔函数进行按位运算:
- 第1轮:(f_0(x_1, x_2, x_3, x_4, x_5) = (x_1 \land x_2) \oplus (x_3 \land x_4) \oplus (x_2 \land x_3 \land x_4) \oplus x_5)
- 第2轮:(f_1(x_1, x_2, x_3, x_4, x_5) = x_2 \oplus ((x_4 \land x_5) \lor (x_1 \land x_3)))
- 第3轮:(f_2(x_1, x_2, x_3, x_4, x_5) = x_1 \oplus (x_2 \land (x_1 \oplus x_4)) \oplus (((x_1 \land x_4) \oplus x_3) \lor x_5))
- 第4轮:再次使用 (f_0)
其步骤函数的变换形式为:
设 (T_{i,j}(j = 0, 1, \cdots, 4)) 为第 (i) 步的输入,则
- (T_{i,0} = (f(T_{i,0}, T_{i,1}, T_{i,2}, T_{i,3}, T_{i,4}) + X_i + K) \ll s)
- (T_{i,1}