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

蒲浪 等: 基于国密    SM9  的公钥认证可搜索加密方案                                                 4277



                 接收方私钥为     sk R = x, 公钥为   pk R = (xP 1 ,g), 其中  g = e(pk R ,P 2 ). 最终, 算法将公钥公开, 秘密存储私钥.
                    (3)  KeyGen S (params). 本算法以   params 为输入, 生成发送方公私钥对. 首先随机选取      y ∈ Z , 然后计算  yP 1 . 设
                                                                                         ∗
                                                                                         N
                 接收方私钥为     sk S = y, 公钥为  pk S = yP 1 . 最终, 该算法公开公钥, 秘密存储私钥.
                    (4)   PAEKS (w, pk R , sk S ,m). 本算法以关键词  w ∈ {0,1} 、接收方公钥   pk R 、发送方私钥   sk S 、随机比特   m ∈ {0,1} ∗
                                                            ∗
                          params 为输入, 生成关键词密文. 具体计算过程如下.
                 和系统参数
                    1) 计算  Q w = [H 1 (w||hid||V,N)]P 1 + pk R , 其中  V = [y]pk R .
                                   ∗
                    2) 选取随机数    r ∈ Z , 然后计算  C 1 = [r]Q w .
                                   N
                              r               k 1  为分组加密中密钥的长度,     k 2  为消息认证码中密钥长度.
                    3) 计算  u = g ,klen = k 1 +k 2 , 其中
                    4) 计算   K = H 2 (C 1 ||u,klen), 令  K 1  为  K  的前  k 1  位,  K 2  为剩下的  k 2  位. 若  K 1  全为  0, 则重新选取随机数  r; 否则计
                   C 2 = Enc(K 1 ,m).
                 算
                    5) 计算  C 3 = MAC(K 2 ,C 2 ), 输出关键词密文  C w = C 1 ||C 3 ||C 2 . 最后将  C w  和随机比特  m 发送至云端服务器.
                    (5)  Trapdoor(w , pk S , sk R , params). 本算法以关键词  w ∈ {0,1} 、发送方公钥   pk S 、接收方私钥  sk R  和系统参数
                                                                  ∗
                                ′
                                                             ′
                 params 为输入, 生成关键词陷门. 具体计算过程如下.
                                      ′    ′           ′                        KeyGen R  算法生成公私钥对, 并
                    1) 首先, 计算   t 1 = H 1 (w ||hid||V ,N)+ x, 其中  V = [x]pk S . 若  t 1 = 0, 则重新执行
                 更新所有关键词陷门; 否则下一步.
                                −1
                    2) 计算  t 2 = x·t , 最终计算并输出关键词陷门     T w ′ = t 2 P 2 .
                                1
                    (6)  Test(C w ,T w ′, params). 本算法以关键词密文  C w 、关键词陷门   T w ′  和系统参数  params 为输入, 对二者所含关
                 键词是否一致进行匹配测试. 具体算法如下.
                                                                           ′
                    1) 若  C 1 < G 1 , 则终止算法并返回  b = 0 表示匹配测试不通过, 否则计算     u = e(T w ′,C 1 ).
                                    ′                                          k 2  为消息认证码中密钥长度. 令
                    2) 计算   K = H 2 (C 1 ||u ,klen), klen = k 1 +k 2 , 其中  k 1  为分组加密中密钥的长度,
                                                   ′
                  ′          k 1  位,   ′          K  全为                 b = 0; 否则, 下一步.
                 K  表示  K  的前    K  为剩下的   k 2  位, 若   1  0, 则终止算法并返回
                  1
                                  2
                            ′      ′          ′             b = 0.
                    3) 计算  m = Dec(K ,C 2 ), 若   m , m , 则终止算法返回
                                   1
                           ′        ′       ′                       ′
                    4) 计算  C = MAC(K ,C 2 ), 若  C = C 3 , 则返回  b = 1, 表示  w = w , 否则返回  b = 0.
                           3        2       3
                    正确性分析: 若接收方可生成合法关键词陷门, 并且关键词密文是有效的且二者所含关键词相同, 那么一定可
                                                                                           C w = C 1 ||C 3 ||C 2 , 关
                 通过匹配测试算法. 假设接收方、发送方的公私钥分别为                   (pk R , sk R ) 和   (pk S , sk S ), 关键词密文为
                 键词陷门为    T w ′ , 方案的正确性验证如下:

                                              ′
                                             u = e(C 1 ,T w ′)
                                               = e(rQ w ,t 2 P 2 )
                                                                       −1
                                               = e([r ·(H 1 (w||hid,N)+ x)]P 1 ,[x·t ]P 2 )           (6)
                                                                       1
                               −1      ′        −1             ′     ′        rx  r           K = H 2 (C 1 ||u ,
                                                                                                       ′
                    分析可知, 因    t = (H 1 (w ||hid,N)+ x) , 当且仅当  w = w  时, 有   u = e(P 1 ,P 2 ) = g = u 成立, 由于
                               1
                                                                                            ′
                                                                                    ′
                                   ′          k 1  位,   ′            ′      ′     C = MAC(K ,C 2 ). 当且仅当
                 klen),klen = k 1 +k 2 , 令   K  表示  K  的前   K  为剩下的  k 2  位, 有  m = Dec(K ,C 2 )  及
                                   1                2                       1       3       2
                 w = w  时,  m = m, C = C 3 , 则匹配算法  Test  输出  1. 综上, 本方案满足  PAEKS  方案的正确性要求.
                                ′
                     ′
                          ′


                                3
                 3.2   安全性分析
                    本节对   SM9-PAEKS  进行安全性分析与证明, 通过证明如下定理              1, 证得方案具备关键词密文不可区分性和
                 关键词陷门不可区分性.
                    定理  1. 若  q-BDHI 和  Gap-q-BCAA1  安全假设成立, 则  SM9-PAEKS  方案具备密文不可分性和陷门隐私性.
                    上述定理    1  可通过如下两条引理证得, 其中引理          1  证明方案的关键词密文不可区分性, 引理            2  证明方案的关
                 键词陷门不可区分性.
                    引理  1. 若  q-BDHI 安全假设成立, 那么    SM9-PAEKS  是  CKA-CI 安全的.
                                                  次谕言机后能以不可忽略的优势攻破             SM9-PAEKS  方案的   CKA-CI 安
                    证明: 假设存在     PPT  敌手  A 询问  q H 1
                 全性. 则挑战者   C  可通过与   A 交互, 以不可忽略的优势解决       q -BDHI 问题.   C  输入   q -BDHI 困难问题实例  (P,Q,aQ,...,
   361   362   363   364   365   366   367   368   369   370   371