Page 391 - 《软件学报》2025年第7期
P. 391

3312                                                       软件学报  2025  年第  36  卷第  7  期


                 改方面, 本文方案的数据动态修改功能是基于变色龙哈希函数的                     Verify 算法  (详见第  2.4  节) 实现. 在数据修改时,
                 可信中心需要验证数据的所有权是否归属于该用户, 当用户通过验证之后才能对数据进行增加、删除和修改操作.

                 4.2   支持高效数据所有权共享的动态云存储审计方案介绍
                    在本节中, 我们给出支持高效数据所有权共享的动态云存储审计方案                       [22] 的具体介绍. 该方案由   9  个算法组成,
                 令属性空间为     U=  Z p , 待共享的文件为  F=(fn, {m i } i∈f ), 其中  fn  为文件名, m i 表示文件  F  的第  i 个数据块. 方案中使
                 用的变色龙哈希函数采用第          2.3  节中提供的方案, 属性基加密采用文献          [23] 中的方案. 由于本文方案的构造具有
                 通用性, 因此使用的变色龙哈希函数和属性基加密均可采用其他方案的构造. 此外, 我们还使用了一个身份基签名
                 方案  SSig  来保证文件名和验证参数的安全, ssk 为身份基签名方案             SSig  的私钥.
                           λ
                    ● Setup(1 )→{pp, msk}
                                                   G G T , p, e), 然后选择随机元素
                    (1) TA  根据安全参数   λ 生成群参数    D=( ,                      g, h, u, v,  w ∈ G α, x ∈ Z p .
                                                                                       ,
                                                                             α
                                                                       x
                                                         *
                    (2) TA  选择  2  个哈希函数  H 0 :  G →  Z p , H 1 :{0, 1} →  G, TA  计算  Y=g , e(g, g) .
                                                              α
                    (3) TA  公开系统公共参数     pp={D, g, h, u, v, w, Y, e(g, g) , H 0 , H 1 }, 秘密保存系统主私钥  msk={α, x}.
                                              ∈ Z p , uid)→{sk 1 , sk 2 }
                    ● KeyGen(pp, msk, S={A 1 , …, A k }
                                                                                 o
                                                                               α
                                                                                       o
                    (1) 令  k=|S|, TA  随机选择  k+1  个元素  o, o 1 , o 2 , …, o k   ∈ Z p , 然后计算  K 0 =g w , K 1 =g . 对于  τ∈[k], TA  计算
                                 o τ −o
                 K τ,2 = g ,  K τ,3 = (u h) v , 令数据访问密钥为  sk 1 ={S, K 0 , K 1 , {K τ,2 , K τ,3 } τ∈[k] }.
                      o τ
                              A τ
                    (2) TA  为  uid  选择随机数  r uid ∈   Z p , 然后计算  R uid = g , σ uid =r uid +xH 0 (R uid ). TA  选择随机数  r 1 ∈  Z p , 计算  R ui 的
                                                                                                     d
                                                            r uid
                                  h , 令数据审计密钥为
                 变色龙哈希    h 1 = g H 0 (R uid ) r 1  sk 2 ={R uid , r uid , σ uid , h 1 , r 1 }.
                    (3) TA  将{sk 1 , sk 2 }秘密发送给用户.
                    ● Upload(pp, ck, (M, ρ), sk 2 , F)→CT
                                                 T
                    (1) DO  随机选择向量    y=(s, y 2 , …, y n ) ∈  Z p , 其中  s 是待共享的秘密值. 对于  i∈[l], 令  M i 为矩阵  M  的第  i 行,
                                                                          αs
                                                                                 s
                 DO  计算  λ i =M i y. DO  选择  l 个随机数  t 1 , t 2 , …, t l ∈  Z p , 计算  C=cke(g, g) , C 0 =g , 对于  j∈[l], 计算  C j,1 = w v ,
                                                                                                     λ j t j
                 C j,2 = (u ρ( j) h) ,  C j,3 = g .
                                  t j
                          −t j
                    (2) 对于  i∈[f], DO  使用  ck 加密数据块  m i 获得对称密文  e i . DO  计算密文  e i 的标签  T i = (H 1 ( fn||i)u )   以及文
                                                                                               e i σ uid
                 件  F  的标签  tag=fn||R uid ||SSig ssk (fn||R uid ).
                    (3) DO  将密文  CT={(M, ρ), C, C 0 , {C j,1 , C j,2 , C j, 3 } j∈[l] , {e i , T i } i∈[f] , tag}上传至  CS.
                    (4) CS  收到密文  CT  后, 首先需要验证文件的正确性. CS        需要验证: ① 文件标签      tag  的正确性: CS  验证签名
                                                                     (     )  (                   )
                                                                      ∏        ∏
                 SSig ssk (fn||R uid ) 是否正确; ② 数据块标签的正确性: CS  验证等式  e   T i ,g = e  H 1 ( fn||i)u ,R uid Y  H 0 (R uid )   是否成
                                                                                         e i
                                                                     i∈[f]     i∈[f]
                 立. 如果上述①②验证均通过, CS        保存密文, 否则    CS  拒绝为用户存储密文.
                    ● Chall(sk 2 )→chal or ⊥
                    (1) DO  可以向  TA  发起完整性验证请求, TA     收到请求后, 首先需要验证        DO  是否拥有数据的所有权, TA       验证
                             h
                 等式  h 1 = g H 0 (R uid ) r 1   是否成立, 如果成立则继续执行.
                                                                                               I
                    (2) TA  随机选择包含   c 个元素的集合    I∈[c]. 对于  i∈I, TA  输入随机元素  v i ∈  Z p , 将挑战  chal={i, v i } i∈ 发送给  CS.
                    ● Proof(CT, chal)→{P, tag}
                                                    ∑
                    CS  收到挑战   chal 后, 计算  T =  ∏ T ,  b e =  v i e i . 随后  CS  将  P = (T,b e) 以及文件标签  tag  发送给  TA  进行认证.
                                               v i
                                               i
                                            i∈I     i∈I
                    ● Verify(pp, chal, P, tag)→0 or 1
                    (1) TA  验证签名  SSig sk (fn||R uid ) 是否正确, 如果验证通过, 解析  fn  以及  R uid .
                                         (                    )
                                          ∏
                                                     b e
                    (2) TA  通过等式  e(T,g) = e  (H 1 ( fn||i) )u ,R uid Y H 0 (R uid )   验证证明  P  是否正确. 如果等式成立, 算法输出  1, 否
                                                   v i
                                          i∈I
                 则算法输出    0.
                    ● Access(pp, sk 1 , CT)→F or ⊥
                    如果数据访问密钥       sk 1 中的属性无法满足密文      CT  中的访问策略, DO    停止进行访问, 否则对于       i∈[l], DO  计算
   386   387   388   389   390   391   392   393   394   395   396