Page 222 - 《软件学报》2021年第9期
P. 222

2846                                 Journal of Software  软件学报 Vol.32, No.9,  September 2021

                                                                  (8)
                                                 (9)
             攻击的主要思想是:通过猜测第 9 轮轮密钥 RK 及第 8 轮轮密钥 RK 的部分比特,对密文进行部分解密后,
         观察第 7 轮输出的对应位置是否概率平衡来得到正确密钥.
                                                                 −m
             以 20~22 这 3 个高概率平衡位置为例,进行 N 次实验(其中,N=⎡C⋅p ⎤),每次实验的攻击步骤如下.
             •   第 1 步,选取 m 组明文,对每组明文进行如下操作:
                                                                                      16
                 (1)  对每组明文(其中,{p 5 ,p 8 ,p 9 ,p 10 ,p 11 ,p 26 ,p 27 ,p 28 ,p 29 ,p 30 ,p 35 ,p 42 ,p 50 ,p 51 ,p 61 ,p 63 }遍历{0,1} ,其余位置随
                                               16
                                                                            ,
                     机选定为常数,故一组明文包含 2 个明文)进行 9 轮加密,密文记为 CC                    1 ,...,C 2 − 1
                                                                                   16 ;
                                                                            0
                                                          (9)
                            (9)
                                                               (9)
                 (2)  猜测 RK 的 4 个密钥字(共 16 比特) RK     4 (9) ,RK 10  ,RK 11  ,RK 14 (9)  ,计算 Q ()i j  =  γ −  1 (64 ( )P  −  1  C ⊕  i  RK (9) ) ,
                                                                                              j
                     j∈{4,10,11,14};
                                           (8)
                                  (i)
                           i
                               −1
                 (3)  计算 T =P64 (Q ),猜测 RK 的一个密钥字 RK       (8)  ,计算 R =  i  S − 1 (T ⊕  i  RK 8 ) ;
                                                           5             5    5
                              16
                                  i
                 (4)  判断 t  =  ⊕ 2 − 1 R 是否为 0,j∈{20,21,22},若 t 20 ,t 21 ,t 22 均为 0,则给该组密钥( RK (9) ,RK (9) ,RK (9)  ,
                          j   = i  0  j                                              4   10   11
                      RK  (9) ,RK (8)  ,共 20 比特)计数器+1;
                        14   5
                                               20
             •   第 2 步,对 m 组明文重复上述过程,在 2 个计数器中,若某组密钥计数值与 m 相同,则将其视为该次实
                 验的候选密钥.
             统计 N 次实验候选密钥总数,其中正确密钥出现次数约为 C,与错误密钥相比具有一定的显著性,故正确密
         钥可唯一恢复.
         2.4   密钥恢复实验结果
             在 PC 机上,利用 Visual Studio  2010 编程模拟了密钥筛选过程.以 20~22 这 3 个高概率平衡位置为例,分析
         组数 m、显著度 C 与复杂度的关系.每种情形分别进行了 100 次实验.
             表 3 表明:随着组数的增加,错误密钥量越来越少,但数据复杂度越来越大.正确密钥量与显著度 C 基本一致.
                    Table 3    Relationship among group number m, key amount and complexity when C=2
                             表 3   固定 C=2,分析组数 m、密钥量以及复杂度之间的关系
                                     正确密钥量/个            错误密钥量/个              数据复杂度
                                                                                16
                       m=7              2.57                15.1            8×7×2 ≈2 21.81
                                                                                16
                       m=8              2.23                3.79            9×8×2 ≈2 22.17
                                                                                16
                       m=9              2.26                1.46            11×9×2 ≈2 22.63
                                                                                 16
                      m=10              2.22                1.11           13×10×2 ≈2 23.02
             表 4 表明:随着显著度 C 的增加,正确密钥与错误密钥相比越来越显著,但错误密钥整体个数也会相应有所
         增长,数据复杂度也随之增大.
                      Table 4   Relationship among saliency C, key amount, and complexity when m=7
                            表 4   固定 m=8,分析显著度 C、密钥量以及复杂度之间的关系
                                      正确密钥量/个            错误密钥量/个             数据复杂度
                                                                                16
                       C=2               2.23               3.79            9×8×2 ≈2 22.17
                                                                                 16
                       C=3               3.54               5.62            14×8×2 ≈2 22.81
                                                                                 16
                       C=4               5.78               9.92            23×8×2 ≈2 23.52
             以上两个表格中的实验结果,验证了通过控制组数 m 与显著度 C,概率积分分析方法可唯一恢复正确密钥.
         2.5   复杂度分析
             实际攻击时可根据表 5 从上到下(利用的平衡位置由多到少排序)对密钥字进行猜测,即攻击共需进行 10
                        (9)
         轮实验.表 5 中:RK 对应列粗体标注表示此密钥字经过前几轮猜测已经唯一确定;第 6 列给出了当使用 m 组明
                                                                                 (8)
         文进行攻击时,各次实验中除正确密钥外候选密钥量.经过 10 轮实验,可将表 5 中涉及的 RK 中 10 个密钥字和
            (9)
         RK 中 13 个密钥字共 92 比特密钥信息唯一确定.由于经过加密的明密对在 10 轮实验中可重复使用,故攻击的
                                                                                           16
                                       16
                                                                                              20
         数据复杂度选取最大组数,为 11×41×2 ≈2         42.17 .以表 5 中第 1 轮实验为例,其所需的时间复杂度为 9×8×2 ×2 ≈
   217   218   219   220   221   222   223   224   225   226   227