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

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



                                        }
                 给敌手  A 3  并将  (i,m i ,H m i  ,{DW d i d i ∈D ) 添加到询问列表  Q list  中, 若  i = k 则将   H m k   回复给敌手  A 3 .
                    更新令牌请求阶段: 敌手        A 3  在该阶段对选定的消息     m i  请求生成相应的更新令牌, 若      i = k 则算法终止. 当  i , k
                 时, 模拟器   B  从询问列表    Q list  中取出  m i  对应的  (i,m i ,H m i  ,{DW d i d i ∈D ), 计算得到更新令牌  DK(i) = {FileMatch(i),
                                                                   }
                  δ
                        }
                 E ,{DW d i d i ∈D }  返回给敌手  A 3 .
                  m i
                                                                                               j , k 时算法
                    更新令牌伪造阶段: 敌手        A 3  选择一个在上个阶段中未查询过的消息           m j  进行更新令牌的伪造, 当
                                                                    δ
                                                                          }
                 终止, 当   j = k 时计算相应伪造的更新令牌      DK( j) = {FileMatch( j),E ,{DW d j d j ∈D }.
                                                                    m j
                    定义  3. 对于任意概率多项式时间内的敌手            A 3 , 若  A 3  输出合法更新令牌的概率是可忽略的, 则称方案的更新
                 令牌不可伪造性.
                  4   算法设计及安全性分析
                  4.1   方案具体设计
                     (1) Setup(1 ,U,V) → (MSK,MPK): 初始化算法
                             λ

                                                     V
                                           U
                    输入系统安全参数       λ, 属性域  , 伪属性域  . 输出双线性映射群         e : G×G = G T , 其中  G, G T  为  p 阶乘法循环群,
                           ,
                                                                        ∗
                 生成元   g ∈ G p 为大素数. 对真实属性域中的每个属性           u ∈ U  选取  α u ∈ R Z , 对伪属性域中的每个伪属性  v ∈ V  选取
                                                                         p
                                                             ∗
                                                                  ,
                                                     ∗
                                                                          ∗
                                                                                ∗
                     ∗                    H 1 : {0,1} → Z ,  H 2 : {0,1} → G H 3 : {0,1} ×G → Z , 一组相互独立的抗碰撞的哈
                                                 ∗
                 β v ∈ R Z . 选取抗碰撞的哈希函数
                     p                               p                           p
                                                                                    ∗
                 希函数  H = {h 1 ,h 2 ,...,h ι }, 密码安全的哈希函数  H 1 , 均匀的散列哈希函数  H 2 . 选取  b, c∈ R Z , 计算系统主公钥  MPK =
                                                                                    p
                                                    b     c  α u  β v
                 {G,G T ,e : G×G = G T ,g, p,H 1 ,H 2 ,H 3 ,H,H 1 ,H 2 ,g ,e(g,g) ,{g } u∈U ,{g } v∈V } 和系统主私钥  MSK = {b,c,α u ,β v } u∈U,v∈V .
                      (2) KeyGen(Y,DU id ,MPK,MSK) → (UK,TK): 数据访问者的密钥生成算法
                                                                   ∗                     ,   ′  ∗
                    设数据访问者的属性集合为            y ∈ Y , 唯一标识号  DU id ∈ {0,1} . 权威中心随机选取  h∈ R G z ∈ R Z , 计算  K 0 =
                                                                                               p
                                                          z ′
                                                  b·z ′
                            ,
                 H 3 (DU id ,h) = z K 1 = g α y ·z ′  ,  K 2 = g c/(b·z) ,  K 3 = g ,   K 4 = g , 通过函数集合   H = {h 1 ,h 2 ,...,h ι } 将属性集合  Y  映射到布隆
                                  y∈Y
                 过滤器的位数组中得到        K 5 = BF Y . 最后将属性密钥  UK = {K 1 ,K 2 ,K 3 ,K 4 ,K 5 } 和解密私钥  TK = K 0  通过安全信道返回
                 给数据访问者.
                                              DO
                      (3) SPGen(Λ sub ,DO id ,MPK) → (SP ,SP CSP ): 复用策略生成算法
                                              Tag  Tag
                                               ∗                                                       J
                    数据所有者计算      ϑ = H 1 (DO id ) → Z , 其中   DO id  为数据所有者的唯一标识号. 对复用策略   Λ sub  进行析取得到
                                               p
                 个满足复用策略的真子句, 将真子句的属性映射到布隆过滤器的位数组中得到                            BF j,j∈J . 对每个真子句计算  l i,j =
                 g ϑ·(α 1, j +α 2,j +...+α i,j ) ,   i ∈ I  为每个真子句中包含的属性数量. 随后从系统主公钥  MPK  中随机选取一个伪属性值  g β χ   计算
                 T tag = g ·g b·ϑ·FR v  ,  FR v  的初始值为  1, 仅当数据访问者的复用策略验证通过时, 将  FR v  的值置为  0. 最后, 数据所有者
                      β χ
                                                                         β χ
                 将复用策略标识符      SP CSP  = {BF j ,l i,j } i∈I,j∈J  上传至云服务器, 将  SP DO  = {T tag ,g } 存储在本地.
                                                                 Tag
                                 Tag
                                        DO
                                                δ
                      (4) Encrypt(m,MPK,Λ,SP ) → (CT ,{KW k } k∈K ): 加密算法
                                        Tag
                                                m
                    数据所有者首先对明文数据           m 提取关键词集合      {kw k } k∈K , 计算  {KW k = H 1 (kw k )} k∈K . 设访问结构树  Λ 的叶子节
                 点集合为   x ∈ X, 包含根节点在内的非叶子节点为阈值节点             n ∈ N. 根据  Λ 中是否需要包含复用策略, 将加密过程分
                 为两种情况.
                    ① 不包含复用策略
                                                                                     q υ  的门限值. 选取根节点
                    对访问结构树中的每个节点          υ 选取一个阶数为     o υ = k υ −1 的随机多项式  , 其中   k υ  为
                                                                           q υ
                                                                      r
                       ′  ∗         ′                                 ′                             index(υ) ,
                 秘密值  r ∈ R Z , 即   q r(0) = r . 对访问结构树自上而下分发根节点秘密值  , 节点   υ 对应的秘密值为     q υ(0) = q parent(υ)
                           p
                                                                                   ∗
                                                                   ∗        m ∈ {0,1} , 随机选取一个安全的对称
                 其中   index(υ) 为节点  υ 在其父节点   parent(υ) 处的位序. 选取  r∈ R Z , 输入消息
                                                                   p
                                                                                                       r
                                                                     ,
                                       ,
                                                                                   ∗
                                                                                                H m
                 密钥  CK  计算:  M = Enc CK (m) E m = CK ·e(g,g) c·r·r ′ ,  h = H 2 (DO id ) → G H m = H 3 (m,h) → Z ,  FileMatch = g ,  E 0 = g ,
                                                                                    p
                                                                     δ
                             ϑ
                 E 1 = g ,   E 4 = g , 对  ∀x ∈ X  有:  E 2 = g b·r·q x(0)  ,  E 3 = g α x ·r . 得到密文:  CT = {Λ, M,E m ,FileMatch,E 0 ,E 1 ,E 2 ,E 3 ,E 4 }. 并将
                     b·r
                                                                     m
                 CT  δ   和  {KW k } k∈K  发送给云服务器.
                   m
                    ② 包含复用策略
                    若需要包含的复用策略未定义则执行算法               STGen(·).
   435   436   437   438   439   440   441   442   443   444   445