Page 419 - 《软件学报》2026年第1期
P. 419

416                                                        软件学报  2026  年第  37  卷第  1  期


                    在此预言机基础上, 文献分析了部分            NTRU  参数下密钥恢复的复杂度, 如表         6  所示.


                                             表 6 部分   NTRU  参数集的量子复杂度

                             参数集        N      df 2   df 1   df 3    k     量子复杂度      L列表大小
                                                                              136        107.3
                           EES593EP1    593    10     10      8     192       2          2
                                                                              132        107.1
                           EES587EP1    587    10     10      8     192       2          2
                                                                              103         75.9
                           EES401EP2    401     8      8      6     112       2          2
                                                                              111         65.9
                           EES439EP1    439     9      8      5     128       2          2
                           EES743EP1    743    11     11     15     256       2 196      2 195.2

                  6.2   基于  Claw-Finding  量子碰撞的  NTRU  量子密钥恢复
                    基于  Grover 量子搜索的    NTRU  量子密钥恢复需要使用判断矩阵乘积匹配的预言机, 且假定其容易通过量子
                 实现, 但这种预言机在实际的量子算法设计中较为复杂. 此外, 基于                   Grover 量子搜索的   NTRU  量子密钥恢复需要
                 预先计算大量的      ( f 3 ,(−f 3 · H mod q) mod p) 值并储存在列表中, 这进一步增加了实现难度. 为避免以上问题, 需要考
                 虑新的   NTRU  量子攻击算法. 除了使用      Grover 量子搜索算法, 还存在使用       Claw-Finding 量子碰撞算法  [17] 的  NTRU
                 量子密钥恢复.
                    Claw-Finding  量子碰撞算法的思路类似中间相遇攻击. 给定有限集合上的两个函数                      f : X → Z  和  g : Y → Z,
                 Claw-Finding  量子碰撞算法可以找到一对       (x,y) 称为  claw, 使得   f(x) = g(y). 要将该算法应用于  NTRU  量子密钥恢
                                             (−f 3 · H mod q) mod p 定义为两个函数, 之后用  Claw-Finding  量子碰撞算法求
                 复中, 可将  (( f 1 f 2 )· H mod q) mod p 与
                 出满足两个函数相等的        ( f 1 f 2 ) 和  , 进而得到私钥  f.
                                          f 3
                    为了构造    Claw-Finding 量子算法, Tani 等人  [17] 依靠  Johnson 图来描述  Claw-Finding 问题. 一个  Johnson 图  J(n,k)
                                               {1,2,...,n} 的大小为  k 的子集表示. 当且仅当两个点对应的子集仅有一个元
                 是一个连通正则图, 图上每个顶点都用
                 素不同时, 两点之间有边. 如图        12  给出了点集合    (a,b,c,d,e) 组成的  Johnson  图  J(5,3) 示例. 为了将  NTRU  的密钥
                 恢复攻击转化为      Claw-Finding  问题, 首先定义两个    Johnson  图  J 1 (| f 1 f 2 |,l), J 2 (|− f 3 |,m). 由此两个图定义图类积
                                                                  .
                                                                                     ′
                                                                                        ′
                 G = J 1 ×J 2 , 将  J 1 , J 2  上的点分别表示为  F, G, 则  G  上点为  (F,G) G  上两个点  (F,G)  和  (F ,G )  之间有边当且仅当
                           ′
                    ′  G, G  之间分别有边.
                 F, F  和

                                                            abc
                                                      cde         abd
                                                  bde                abe

                                                  bce                acd

                                                      bcd         ace
                                                            ade
                                                 图 12 Johnson  图  J(5, 3) 示例

                    实现  Claw-Finding  量子碰撞算法的基本思路是在        (f, g) 的定义域中选取一定数量的输入值构造           Johnson  图上
                 的点, 进而按照定义生成图类积          G, 如果当前的点中含有一对输入可构成碰撞, 则该点为目标点. 为了利用量子漫
                 步找到目标点, 需要利用自循环将原始的             Johnson  图由无向图变为部分有向图, 令目标点只会漫步到自身, 否则依
                 据转移概率继续进行散射. 通过此方法构造的               Claw-Finding  量子碰撞算法分为检测算法和搜索算法两部分, 其中
                 检测算法是搜索算法的子过程. Claw-Finding        量子碰撞算法使用的预言机仅需读取             ( f 1 f 2 · H) 和  (−f 3 · H) 的函数值,
                 且不需要存储大规模列表, 相比基于           Grover 搜索的  NTRU  量子密钥中的预言机更为简单. 令         Q 2 (claw finding (M 1 , M 2 ))
   414   415   416   417   418   419   420   421   422   423   424