Page 441 - 《软件学报》2025年第10期
P. 441

4838                                                      软件学报  2025  年第  36  卷第  10  期


                 以仅统计这些运算指令的总条数来评估计算开销, 不需要单独统计每种指令. 下面以采用                            AVX2  指令集实现的版
                 本为例, 统计了    uBlock  算法加密过程中每个模块需要的运算指令条数和占比, 包括数据编排、轮密钥加、S                           盒、
                 线性变换   B、PL/PR  这  5  个模块.
                    表  6–表  8  统计了  uBlock  算法每个模块在不同切片表示法下平均每分组需要的运算指令条数, 用于分析寄存
                 器数量减少对加密计算复杂度的影响, 每分组需要的运算指令条数通过“单次调用需要的运算指令条数/单次加密
                 处理的分组数”来计算. 通过理论分析可以看出, 随着需要的寄存器数量减少                        (r 增加), 轮密钥加和    S  盒的开销不
                 变, 数据编排部分开销降低, 线性变换          B  的开销先不变后增加, PL/PR      模块开销先增高后降低. 从总共的运算指令
                 条数上看, 趋势是先增高, 然后降低, 然后再升高.


                           表 6 uBlock-128/128  每个模块在不同比特切片表示下平均每分组需要的运算指令条数

                            表示法      数据编排      轮密钥加        S盒     线性变换B       PL/PR模块     总计
                             r=1       13         0.5     1.125      1.5         0        76.5
                             r=2       11         0.5     1.125      1.5        1.5       96.5
                             r=4        9         0.5     1.125       2         1.5       100.5
                             r=8        7         0.5     1.125     2.375       0.5       86.5
                             r=16       5         0.5     1.125      3.5        0.5       100.5
                          注: uBlock-128/128单次加密需要分别调用上述模块2、17、16、16、16次

                           表 7 uBlock-128/256  每个模块在不同比特切片表示下平均每分组需要的运算指令条数

                            表示法      数据编排      轮密钥加        S盒     线性变换B       PL/PR模块     总计
                             r=1       13         0.5     1.125      1.5         0        101.5
                             r=2       11         0.5     1.125      1.5        1.5       133.5
                             r=4        9         0.5     1.125       2         1.5       141.5
                             r=8        7         0.5     1.125     2.375       0.5       122.5
                             r=16       5         0.5     1.125      3.5        0.5       145.5
                          注: uBlock-128/256单次加密需要分别调用上述模块2、25、24、24、24次

                           表 8 uBlock-256/256  每个模块在不同比特切片表示下平均每分组需要的运算指令条数

                            表示法      数据编排       轮密钥加       S盒     线性变换B       PL/PR模块     总计
                             r=1       30         1        2.25      3           0       211.0
                             r=2       26         1        2.25      3           3       275.0
                             r=4       22         1        2.25      3          9.5      423.0
                             r=8       18         1        2.25      4           3       283.0
                             r=16      14         1        2.25     4.75         1       245.0
                             r=32      10         1        2.25      7           1       291.0
                          注: uBlock-256/256单次加密需要分别调用上述模块2、25、24、24、24次

                    表  9  给出了  PL/PR  模块需要的指令条数相对于整个加密过程的占比, 用于分析制约性能的主要模块, 模块需
                 要的指令条数占比通过“该模块需要的指令条数/单次加解密需要的指令条数”来计算. 通过表                                 9  的数据可知,
                 PL/PR  模块的开销随着寄存器数量的减少会急剧增大, 当               r=4  时, uBlock-256/256  算法  50%  的运算指令都用于计
                 算该模块, 说明此时      PL/PR  模块制约着整个算法的性能. 但寄存器数量减少到一个临界值后, 运算指令占比便会
                 急剧降低, uBlock-128/128  和  uBlock-128/256  的临界值是  r=8, 即  128/8=16  个寄存器; uBlock-256/256  的临界值是
                 r=16, 也是  256/16=16  个寄存器.
                    本文提出的切片优化方法关键在于减少寄存器数量, 间接减少了访存指令的条数, 但会增加一些运算指令
                 的条数. 第  5  节实验中将会说明, 本文的       FBS-uBlock  方法有效地减少了     uBlock  算法比特切片优化时的访存指令
                 条数.
   436   437   438   439   440   441   442   443   444   445   446