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
   407   408   409   410   411   412   413   414   415   416   417