Page 412 - 《软件学报》2024年第4期
P. 412
1990 软件学报 2024 年第 35 卷第 4 期
r 为 20 r ∈ {20,22,24,...,62} 中自由选择, 算法也可以将 2 轮看成一个合并轮, 其中
数 轮, 使用者可以根据需求在
−1
−1
算法轮结构包含 S 盒, 位置置换 Pslices 和 Psheets, 列混淆, 逆位置置换 Pslices 和 Psheets , 轮密钥加, 下面简述
算法轮结构的具体操作.
● S 盒: 将 256 比特划分为 64 个 4 比特的半字节立方体, 如图 2 所示; 并对每个半字节做 S 盒变换, 采用 2 种
不同的 S 盒, 当立方体索引为偶数时使用 S 0 , 索引为奇数时使用 S 1 , 其中 S 0 和 S 1 均为 4 比特到 4 比特的双射.
● 位置置换: 根据轮数 r 分别采用不同的位置置换 Pslices 和 Psheets, 其中 Pslices 和 Psheets 的操作层分别为
y,z 层 (如图 3 所示).
x,y 层和
51 55 59 63
35 39 43 47 63
19 23 27 31 47 62
3 7 11 15 31 46
15 61
3 7 11 15 30
45
14 60
2 6 10 14 29
44
13
1 5 9 13 28
y
12
0 4 8 12 z
x
图 2 Saturnin 算法排列状态
51 55 59 63 51 55 59 63
63 63
35 39 43 47 35 39 43 47
47 47
19 23 27 31 19 23 27 31
62 62
31 31
3 7 11 15 3 7 11 15
46 46
15 61 15 61
3 7 11 15 30 3 7 11 15 30
45 45
14 60 14 60
2 6 10 14 29 2 6 10 14 29
44 44
13 13
1 5 9 13 28 1 5 9 13 28 y
z
12 12
0 4 8 12 0 4 8 12
x
图 3 Saturnin 算法的 Pslices 和 Psheets 层
对 4 层进行相同的位置置换操作, 以一层为例, 结合轮数具体的操作为:
r mod 4 = 0 : 无操作 3 7 11 15 7 11 15 3 15 31 47 63 31 47 63 15
r mod 4 = 1 : Pslices 2 6 10 Pslices 10 14 2 6 14 30 46 Psheets 46 62 14
14 62 30
.
→ →
r mod 4 = 2 : 无操作 1 5 9 13 1 5 9 13 29 45 61 13 29
13 61 45
r mod 4 = 3 : Psheets 0 4 8 12 0 4 8 12 12 28 44 60 12 28 44 60
● 列混淆: 对立方体的全部 16 列作列变换, 使用的列混淆 MDS 矩阵 M 为:
α 2 α +α 1 1 1 0
2
0 0
2 2
1 α+1 α +1 0 0 1
α +α+1 0
.
M = , α =
2 2
1 1 α α +α 0 0 0
1
2
2
α +1 α +α+1 1 α+1 1 1 0 0
● 逆位置置换: 对经过列混淆操作后的位置置换根据轮数 r 做对应的逆位置置换, 有关轮密钥加和算法的详
细描述请参考文献 [16].
与 uBlock 算法类似, 我们对 Saturnin 算法进行积分区分器搜索时, 采用文献 [8] 的方法对 S 盒可分性传播的
MILP 建模, 对每个列混淆 MDS 矩阵 M ∈ F 16×16 的可分性传播, 则采用动态选取策略, 即算法 1 的框架构建 MILP
2