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

许垠松 等: 分组密码结构的低数据量子密钥恢复攻击                                                       3335


                                                            d−2   d−1
                                                       0
                                                               0
                                                G(P) = x d−1  ⊕ F d ( ⊕ x ⊕ ⊕ F i )⊕k d              (26)
                                                               j
                                                             j=1  i=1
                                          ,
                         0
                            0
                                                 n
                 其中  P = (x , x ,..., x 0  , x 0  , x 0  ) P ∈ {0,1}  且  G(P) ∈ {0,1} n/d  . 依据公式  (24)–(26), 我们提出以下针对  2d −1  轮类
                         0  1   d−3  d−2  d−1
                 SMS4  广义  Feistel-FK  结构的密钥恢复过程.
                                                                                                    d−1
                                                        (
                                          ,
                                                ′
                                             ′
                                                     ′
                                                            ′
                    (1) 选择明文   P = (c,...,c,α) P = (c ,...,c ,α) c , c ), 查询其对应的密文. 并计算出  G(P) = α⊕ F d (c⊕ ⊕ F i )
                                                                                                    i=1
                                   d−1
                        ′
                                ′
                 ⊕k d ,  G(P ) = α⊕ F d (c ⊕ ⊕ F i )⊕k d .
                                   i=1
                               d−1        d−1
                                   ,
                                        ′
                                                           ,
                                                                                       ′
                                                           ′
                                                                     ′
                    (2) 设  β 1 = c⊕ ⊕ F i β 2 = c ⊕ ⊕ F i , 则  β 1 ⊕β 2 = c⊕c G(P)⊕G(P ) = F d (β 1 )⊕ F d (β 1 ⊕c⊕c ), 可利用  Grover 算法
                               i=1        i=1
                          β 1 .
                 求出未知量
                           β 1  值, 可根据公式              k d .
                    (3) 已知               (26) 求出轮密钥
                    (4) 其他轮密钥可通过以上类似的方式依次求出来.
                                  2d −1 轮类  SMS4  广义  Feistel-FK  结构的密钥恢复攻击过程中, 我们仅需选择        2  个明密文对
                    复杂度分析. 在对
                 即可恢复轮密钥      k d , 且在步骤  (2) 中利用  Grover 算法搜索未知量, 时间复杂度为      O(2 n/2d ). 对于恢复其他轮密钥的
                 过程所需时间和明文数量, 我们相信与恢复轮密钥                 k d  所需时间和明文数量基本保持一致. 综上, 该密钥恢复攻击
                 的总体时间复杂度为        O(2 n/2d  ), 数据复杂度为  O(1) 且经典存储复杂度可忽略不计. Cui 等人      [6] 也提出了对类   SMS4
                 广义  Feistel-FK  结构的量子密钥恢复攻击, 具体复杂度可见表           1. 但是, 他们的攻击属于     Q2  模型, 对攻击者的能力
                                                                                                  2
                 要求较高. 此外, 当攻击轮数都为         r = r 0  时, 我们的攻击在复杂度乘积方面相比于他们的攻击可从                O(2n /(r 0 −1)
                 ·2 2n/(r 0 −1) ) 降低为  O(n2 n/(r 0 +1)  ). 但是, 当分支数  d  和攻击轮数相同时, 我们的攻击在复杂度乘积方面将提高  O(2 3n/2d )
                 因子.

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

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

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

                                          2d−1  0
                                         x  = x  ⊕ F 1 ⊕k 1 ⊕...⊕ F d−1 ⊕k d−1 ⊕...⊕ F 2d−1 ⊕k 2d−1
                                          0   d−1
                                        
                                        
                                         x  = x ⊕ F 2 ⊕k 2 ⊕...⊕ F d ⊕k d ⊕...⊕ F 2d−1 ⊕k 2d−1
                                          2d−1  0
                                        
                                          1   0                                                     (27)
                                        
                                         ...
                                        
                                        
                                        
                                        
                                        
                                         x  = x  ⊕ F 1 ⊕k 1 ⊕...⊕ F d ⊕k d ⊕...⊕ F 2d−2 ⊕k 2d−2
                                          2d−1  0
                                          d−1  d−2
                    由于  d 是偶数, 则:
   409   410   411   412   413   414   415   416   417   418   419