Page 413 - 《软件学报》2025年第7期
P. 413

3334                                                       软件学报  2025  年第  36  卷第  7  期


                                                          0
                                                              0
                                       β 1 ⊕β 3 =F d−2 (F d−3 (...F 1 (x )⊕ x ⊕k 1 ...)⊕ x 0 d−3  ⊕k d−3 )
                                                              1
                                                          0
                                                                0
                                                            0
                                                                           ∗
                                              ⊕ F d−2 (F d−3 (...F 1 (x )⊕ x ⊕k 1 ...)⊕(x 0  ) ⊕k d−3 ).
                                                            0   1        d−3
                                      0
                                          0
                                                                       0
                                                         ,
                                                                           0
                                                                                      ∗
                    (6) 设   δ 1 = F d−3 (...F 1 (x )⊕ x ⊕k 1 ...)⊕ x 0 d−3  ⊕k d−3 δ 2 = F d−3 (...F 1 (x )⊕ x ⊕k 1 ...)⊕(x 0 d−3  ) ⊕k d−3 , 则   δ 1 ⊕δ 2 = x 0 d−3
                                                                           1
                                                                       0
                                      0
                                          1
                 ⊕(x 0  ) β 1 ⊕β 3 = F d−2 (δ 1 )⊕ F d−2 (δ 1 ⊕ x 0  ⊕(x 0  ) ) , 可利用  Grover 算法求出  δ 1  值.
                       ,
                      ∗
                                                     ∗
                   d−3                       d−3  d−3
                    (7) 已知  ,    x 0   值, 可计算出轮密钥   k d−2 = β 1 ⊕ F d−2 (δ 1 )⊕ x 0  .
                           δ 1 β 1  和
                                  d−2                               d−2
                    (8) 可重复以上类似步骤, 依次恢复出其他剩余轮密钥.
                    复杂度分析. 在对     3d −3 轮  Type-1  型广义  Feistel-FK  结构的密钥恢复攻击过程中, 我们仅需选择        4  个明密文
                                k d−2 , 且在步骤  (2)、(4)、 (6) 中利用                                   2 , 所以
                                                                                                  n/d
                 对即可恢复轮密钥                                   Grover 算法搜索未知量, 每一个未知量的规模为
                                         O(2 n/2d ). 对于恢复其他轮密钥的过程所需时间和明文数量, 我们相信与恢复轮密钥
                 每一步的时间复杂度都分别为
                 k d−2  所需时间和明文数量基本保持一致, 甚至可能更低, 例如, 可以重复利用明文. 综上, 该密钥恢复攻击的总体时
                 间复杂度为    O(2 n/2d  ), 数据复杂度为  O(1) 且经典存储复杂度可忽略不计. 需要注意的是, Zou          等人  [21] 同样提出了在
                 Q1  模型下对   Type-1  型广义  Feistel-FK  结构的量子密钥恢复攻击, 其复杂度详见表           1. 然而, 由于他们使用了
                 d −d +1 轮的量子选择密文区分器, 他们的攻击属于选择密文攻击, 而我们的攻击仅需要加密                          Oracle, 即选择明文
                  2
                             d = 3 时, 我们的攻击在复杂度乘积方面与         Zou  等人的攻击保持一致, 并且, 我们的攻击仅可以将数
                 攻击. 当分支数
                 据复杂度和存储复杂度从         O(2 n/2d  ) 降低到  O(1). 不过, 当  d > 3 时, 我们的攻击相比于  Zou  等人的攻击将不具备明
                 显优势.

                 7   对类  SMS4  广义  Feistel 结构的密钥恢复攻击
                    如图  13  所示的  2d −1 轮类  SMS4  广义  Feistel-FK  结构, 其中每个分支与轮密钥  (
                                                                                 k i i = 1,2,...,2d −1) 的比特长
                                                  i i = 0,1,...,2d −1) 轮, 下标   表示第  (
                                           i
                                    i
                        ,
                 度为  n/d F i  为轮函数,  x  的上标   表示第  (                    j      j j = 0,1,...,d −1) 个分支. 明文
                                    j
                    0
                  0
                 (x , x ,..., x 0 d−1  )  作为其输入, 经过   2d −1  轮加密后得到密文  (x 2d−1 , x 2d−1 ,..., x 2d−1  ). 假设  d  为偶数.
                  0
                                                               0
                                                                   1
                    1
                                                                         d−1

                                              0         0         0           0
                                             x 0        x 1       x 2        x d−1
                                          k 1    F 1
                                                                       …
                                                          2d−3 rounds
                                         k 2d−1  F 2d−1
                                                                       …
                                             2d−1       2d−1       2d−1      2d−1
                                             x 0       x 1         x d−2     x d−1
                                                2d −1 轮类  SMS4  广义  Feistel-FK  结构
                                           图 13

                    根据  2d −1 轮类  SMS4  广义  Feistel-FK  结构的加密过程可知:

                                                       x 2d−1  = x 0 d−1  ⊕ F d                      (24)
                                                        0
                 其中,

                                                        d−1
                                                            0
                                                  
                                                   F 1 = F 1 ( ⊕ x )⊕k
                                                           j
                                                  
                                                        j=1
                                                  
                                                  
                                                  
                                                  
                                                           d−1
                                                         0    0
                                                  
                                                   F 2 = F 2 (x ⊕ ⊕ x ⊕ F 1 )⊕k 2
                                                         0    j
                                                  
                                                             j=2                                     (25)
                                                  
                                                  
                                                  
                                                   ...
                                                  
                                                  
                                                  
                                                  
                                                  
                                                  
                                                        d−2  d−1
                                                           0
                                                  
                                                   F d = F d ( ⊕ x ⊕ ⊕ F i )⊕k d
                                                           j
                                                         j=1  i=1
                    根据公式    (24)、(25) 可设函数:
   408   409   410   411   412   413   414   415   416   417   418