Page 365 - 《软件学报》2025年第9期
P. 365

4276                                                       软件学报  2025  年第  36  卷第  9  期


                    (2) 询问阶段   1. 此阶段,   A 可适应性地选取关键词      w ∈ {0,1} , 并向  C  进行如下两种询问.
                                                                 ∗

                                                     C C  运行
                    1) 关键词密文询问        . A 发送关键词给  ,         PAEKS (sk S , pk R ,w, params) 算法生成关键词  w 的密文
                                    O C w                                                             C w
                 并发送给   A.

                                                    ∗
                                                       C
                    2) 关键词陷门询问     O T w . A 发送   w ∈ {0,1}  给  , 然后  C  运行   Trapdoor(sk R , pk s ,w, params) 算法生成关键词  w 的
                 陷门  T w  并发送给  A.
                    (3) 挑战阶段.  A 可以决定何时结束上述询问阶段             1, 随后选取两个挑战关键词        w ,w ∈ {0,1} , 此处限制条件
                                                                                   ∗
                                                                                            ∗
                                                                                      ∗
                                                                                   0  1
                         ∗
                    ∗
                 为  |w | = |w | 且挑战关键词没有在询问阶段     1  中被询问过.   C  收到挑战关键词后, 随机选取       b ∈ {0,1}, 然后运行加密
                    0    1
                             ∗                                          A.
                 算法   PAEKS (w , sk S , pk R , params) 生成挑战关键词密文   C w ∗ , 最后发送给
                             b                               b
                    (4) 询问阶段   2. 此阶段,   A 可继续向  C  进行同询问阶段    1  的询问, 但是此处限制其询问的关键词           w ∈ {0,1}  不
                                                                                                      ∗
                                     ∗
                                        ∗
                 能为挑战关键词, 即     w < {w ,w }.
                                     0  1
                    (5) 猜测. 最终,   A 输出   b ∈ {0,1} 作为对   b 的猜测. 若  b = b, 则  A 赢得  CI-CKA  游戏, 否则失败.
                                       ′
                                                             ′
                    定义上述游戏中,      A 赢得游戏的优势为:



                                                                      1
                                                                ′
                                                 Adv CI-CKA  (λ) = Pr[b = b]−                       (4)

                                                    A,PAEKS          2
                    定义  4. 若任意  PPT  敌手   A 赢得上述游戏的优势是可忽略的, 即          Adv CI-CKA  (λ) ⩽ negl(λ), 则该  PAEKS  方案满
                                                                          A,PAEKS
                 足关键词密文不可区分性.
                    TI-CKA  游戏: 即适应性选择关键词攻击下的关键词陷门不可区分性                    (trapdoor indistinguishability under the
                 adaptive chosen keyword attack, TI-CKA), 满足此安全性可保证在  PAEKS  方案中, 即便是内部敌手    A (通常为诚实
                 但好奇的云端服务器) 获取合理关键词陷门后, 也无法获取其中包含的关键词信息, 具体游戏定义如下.
                    初始化阶段: 此阶段与       CKA-CI 游戏中的初始化阶段一致.
                    询问阶段    1: 此阶段与  CKA-CI 游戏中的询问阶段       1  一致.
                    挑战阶段:    A 决定结束上述询问阶段         1  后, 随即选取挑战关键词      w ,w ∈ {0,1} , 此处  |w | = |w | 并且挑战关键
                                                                                ∗
                                                                                       ∗
                                                                        ∗
                                                                          ∗
                                                                                            ∗
                                                                                            1
                                                                        0
                                                                          1
                                                                                       0
                 词没有在询问阶段       1  中被询问过.    C  收到挑战关键词后, 随机选取        b ∈ {0,1}, 然后运行陷门生成算法      Trapdoor
                   ∗
                                                            A
                 (w b , sk R , pk S , params)  生成挑战关键词陷门  T w ∗  并发送给  .
                                                    b
                    询问阶段    2: 与  CKA-CI 游戏中的询问阶段     2  一致, 但此处限制其询问的关键词         w ∈ {0,1}  不能为挑战关键词,
                                                                                        ∗
                   w < {w ,w }.
                        ∗
                          ∗
                 即      0  1
                                    ′
                    猜测: 最终,  A 输出  b ∈ {0,1} 作为对  b 的猜测. 若  b = b, 则  A 赢得此  TI-CKA  游戏, 否则失败.
                                                           ′
                    定义上述游戏中,      A 赢得游戏的优势为:



                                                                ′
                                                                      1
                                                 Adv TI-CKA  (λ) = Pr[b = b]−                      (5)

                                                    A,PAEKS
                                                                      2

                    定义  5. 若任意   PPT  敌手  A 赢得上述游戏的优势是可忽略的, 即          Adv TI-CKA  (λ) ⩽ negl(λ), 则该  PAEKS  方案满

                                                                         A,PAEKS
                 足关键词陷门不可区分性.

                 3   基于  SM9  的公钥认证可搜索加密方案

                 3.1   方案描述
                    基于  SM9  的公钥认证可搜索加密方案具体构造如下.
                             λ
                    (1)  Setup(1 ). 本算法以安全参数  λ 为输入, 生成系统中的公开参数. 首先选取双线性对群               BP = (G 1 ,G 2 ,G T ,N,
                                                  e
                 e,P 1 ,P 2 ), 其中   G 1 ,G 2 ,G T  为素  N  阶循环群,   为双线性映射,   P 1 ,P 2  分别为群  G 1 ,G 2  的生成元, 且存在从  G 2  到  G 1  的
                                                             ∗   ∗                   ∗      klen   klen 为
                 同态映射   ψ 使得  ψ(P 2 ) = P 1 . 随后选取哈希函数   H 1 : {0,1} → Z , 密钥派生函数  H 2 : {0,1} → {0,1}  , 其中
                                                                 N
                 SM9  中使用对称加密的密钥长度. 然后确定消息认证码函数                 MAC. 此外, 选取   8  比特表示的私钥生成函数标识符
                 hid. 最终, 该算法输出系统参数      params = (BP,hid, H 1 ,H 2 , MAC).

                    (2)  KeyGen R (params). 本算法以   params 为输入, 生成接收方公私钥对. 首先随机选取      x ∈ Z , 然后计算  xP 1 . 设
                                                                                         ∗
                                                                                         N
   360   361   362   363   364   365   366   367   368   369   370