Page 442 - 《软件学报》2026年第3期
P. 442

张明川 等: 支持索引动态更新的高效可搜索属性加密方案                                                     1405


                               ′
                    (10)  UTGen(m ,MPK,DO id ) → UT : 更新令牌生成算法
                                                                                i
                                                 ′                                        {kw i } i∈I  和目标关键
                                                    i
                    当数据所有者要更新云端加密数据             m  中   个关键词对应的索引时, 首先对这   个原关键词
                               KW i = {H 1 (kw i )} i∈I RW i = {H 1 (rw i )} i∈I . 与  BLS 签名相关的组件:   ′  ∗ ,   ′
                                             ,
                 词集合  {rw i } i∈I  计算                                         H m ′ = H 3 (m ,h) → Z FileMatch =
                                                                                             p
                                  ′ ϑ
                      δ
                                                           ,
                 g H m ′  ,  E = (FileMatch ) = g H m ′ ·ϑ , 其中   h = H 2 (DO id ) → G ϑ = H 1 (DO id ) → Z . 得到更新令牌  UT = {{KW i } i∈I ,{RW i } i∈I ,
                                                                          ∗
                      m ′                                                 p
                           δ
                 FileMatch ,E } 发送给云服务器.
                         ′
                           m ′
                                         δ
                    (11)  ReIndex(MPK,UT,CT ,Index Invert ) → UR: 索引更新算法
                                         m
                    云服务器收到索引更新请求后, 首先判定数据所有者对更新令牌                        UT  中要被替换的原关键词集合          KW i =
                 {H 1 (kw i )} i∈I  的更新权限: 计算各个原关键词  KW i  在索引中的位置  L[KW i ] = H 2 (KW i ), 在相应跳表中查找与更新令
                                    ′                                                     δ            ϑ
                 牌中匹配组件     FileMatch  相等的加密数据匹配组件       FileMatch, 取出  FileMatch 对应的密文  CT  m   得到组件  E 4 = g
                                     ?
                                   δ
                 并进行等价判定:     e(g,E )=e(FileMatch,E 4 ), 当且仅当该等式成立, 权限验证完成. 否则算法中止. 对包含多个原关
                                   m ′
                 键词   KW i  的同一密文, 权限验证操作仅需执行一次. 而后计算各个新插入的目标关键词                        RW i  在索引中的位置
                 L[RW i ] = H 2 (RW i ) 修改相应的跳表指针, 并将组件  < FileID,FileMatch > 按  FileID 的顺序加入目标关键词的索引.
                 若该目标关键词不存在, 则创建一个新的索引条目. 最后返回成功结果                     UR = 1 或中止结果   UR = ⊥.
                  4.2   正确性分析
                    对于检索到的密文, 云服务器基于数据访问者的属性密钥执行外包解密算法                          Decrypt 1 (·). 假设数据访问者满
                 足密文中的访问策略, 根据密文中是否包含复用策略的标识符分两种情况进行分析.
                    (1) 不包含复用策略
                    对访问结构树的叶子节点有:

                                                                                   b·z ′
                                                                   b·r
                                 D leaf = e(K 1 ,E 1 )·e(K 2 ,E 2 )/e(K 3 ,E 3 ) = e(g α y ·z ′ ,g )·e(g c/(b·z) ,g r·q x(0) )/e(g ,g r·α x )
                                    = e(g,g) α y ·z ′ ·b·r  ·e(g,g) c·r·q x(0) /z /e(g,g) b·z ′ ·r·α x  = e(g,g) c·r·q x(0) /z .
                                       (              ) ∆ κ,Kn (0)
                                     ∏           index(xκ ) /z  ∏  c·r·q n(κ) ·∆ κ,Kn (0) /z  c·r·q n (0) /z
                    对阈值节点有:      D n =  e(g,g) c·r·q parent(x)  =  e(g,g)   = e(g,g)  , 递归计算到根节点时
                                     x∈n x                  x∈n x
                 得  D r = e(g,g) c·r·r ′ /z  . 云服务器将中间密文  CT m = {M,E m ,D r }  发送给数据访问者.
                    数据访问者执行解密算法            Decrypt 2 (·) , 用解密私钥   TK = z  还原对称密钥   CK = E m /(D r ) TK  = CK ·e(g,g) c·r·r ′ /
                 (e(g,g) c·r·r ′ /z z     CK  计算得到明文数据      m = Dec CK (M) .
                         ) , 最后再用对称密钥
                    (2) 包含复用策略
                    对普通叶子节点的计算过程同上.
                    对于伪属性叶子节点, 首先需要判定数据访问者的属性是否满足该节点对应的复用策略: 云服务器根据密文
                                       SP CSP                                                    C 5  组件进
                 中标识组件    T tag  找到关联的   Tag  = {BF j ,l i,j } i∈I,j∈J , 将子句布隆过滤器   BF J  与数据访问者属性密钥中的
                 行等位比较. 若存在某个子句布隆过滤器             BF j  的位数组是  K 5  组件的位数组的子集     BF j ⊆ BF Y , 则取出该子句的属
                                                                             z ′
                                                                                            ϑ
                 性值组件   l i,j = g ϑ·(α 1,j +α 2, j +...+α i,j )   并与数据访问者属性密钥中的  K 1 = g α y ·z ′  ,   K 4 = g  及密文中的  E 4 = g  组件进行判定
                                                                     y∈Y
                       ?
                 e(K 4 ,l i,j )=e(K 1 ,E 4 ). 若该等式成立则判定数据访问者满足伪属性叶子节点对应的复用策略, 云服务器返回              FR ν = 0.
                        r
                                                                                         ′
                                                                                                ′
                 此时  (T tag ) = g β χ ·r ·g b·ϑ·FR ν ·r  = g β χ ·r , 计算得到伪属性叶子节点的秘密分量  D leaf ′ = e(K 1 ,E 1 )·e(K 2 ,E )/e(K 3 ,E ) = e(g β χ ·z ′ ,
                                                                                         2      3
                                   b·z ′
                  b·r
                 g )·e(g c/(b·z) ,g b·r·q x(0) )/e(g ,g α x ·r ) = e(g,g) β χ ·z ′ ·b·r  ·e(g,g) c·r·q x(0) /z /e(g,g) b·z ′ ·α x ·r  = e(g,g) c·r·q x(0) /z . 后续计算过程同  (1) 中一致.
                  5   安全性分析
                  5.1   解密私钥的不可计算性
                    若离散对数问题      (DLP) 成立, 则本文方案的解密私钥具有不可计算性.
                    证明: 假定存在一个敌手        A 1  在概率多项式时间内能计算出解密私钥, 则可以构造出一个模拟器                   B  在概率多项
                 式时间内解决     DLP  问题.
   437   438   439   440   441   442   443   444   445   446   447