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

殷新春 等: 支持高效数据所有权共享的动态云存储审计方案                                                    3309


                    Setup(1 )→{pp, msk}: 算法输入安全参数   λ, 输出系统公共参数     pp  和系统主私钥    msk.
                          λ
                    KeyGen(pp, msk, S)→sk: 算法输入系统公共参数    pp、系统主私钥     msk、属性集合     S, 输出用户密钥    sk.
                    Enc(pp, m, (M, ρ))→CT: 算法输入系统公共参数    pp、消息   m、访问策略     (M, ρ), 输出密文  CT.
                    Dec(pp, sk, CT)→m or ⊥: 算法输入系统公共参数     pp、用户密钥    sk、密文  CT, 如果用户密钥     sk 中的属性集合
                 可以满足密文中的访问策略, 则算法输出消息              m, 否则算法输出⊥表示停止.

                 2.4   变色龙哈希函数
                    一个变色龙哈希函数包括          KeyGen、Hash、Verify 以及  Adapt 这  4  个算法, 具体定义如下.
                            λ
                    KeyGen(1 )→{pk, sk}: 算法输入安全参数   λ, 输出公钥  pk 以及私钥   sk.
                    Hash(pk, m)→{hash, r}: 算法输入公钥  pk 以及消息  m, 输出一个哈希值     hash  以及随机数  r.
                    Verify(pk, m, hash, r)→0 or 1: 算法输入公钥  pk、消息  m、哈希值  hash  以及随机数  r, 如果验证通过, 算法输
                 出  1, 否则算法输出   0.
                    Adapt(sk, m, m', hash, r)→r': 算法输入私钥  sk、原消息  m、新消息  m'、与原消息    m  对应的哈希值    hash  以及
                 随机数   r, 输出与新消息相应对的随机数         r'.
                    为了便于理解, 我们还提供了一个变色龙哈希函数的实例.
                            λ
                                                       G G T , p, e), 令
                    KeyGen(1 ): 根据安全参数   λ 生成群参数    D=( ,         g  为群  G 的生成元, 选择随机数     x ∈  Z p , 计算  h=g , x
                 则  pk={g, h}, sk=x.
                                                                                 m r
                    Hash(pk, m): 对于给定的消息   m, 选择随机数    r ∈  Z p , 计算消息  m  的哈希  hash=g h .
                                                  m r
                    Verify(pk, m, hash, r): 验证等式  hash=g h 是否成立, 如果成立输出  1, 否则输出  0.
                    Adapt(sk, m, m', hash, r): 根据  m+xr=m'+xr'来计算新的随机值  r', 并验证  hash=g h .
                                                                                m' r'

                 2.5   数据完整性审计
                    一个数据完整性审计方案包括           Setup、KeyGen、TagGen、Chall、Prove 以及  Verify 这  6 个算法, 具体定义如下.
                          λ
                    Setup(1 )→{pp, msk}: 算法输入安全参数   λ, 输出系统公共参数     pp  和系统主私钥    msk.
                    KeyGen(pp, uid)→sk: 算法输入公共参数   pp  和用户身份   uid, 输出用户密钥    sk.
                    TagGen(pp, sk, M)→T: 算法输入公共参数    pp、用户密钥    sk 和数据  M, 对于数据块    m i  ∈ M, 计算数据标签  t i , 算
                 法输出数据标签的集合        T.
                    Chall(m, T)→chal: 算法输入数据  m  和数据标签集合     T, 输出一个挑战    chal.
                    Prove(m, T, chal)→P: 算法输入数据  m, 数据标签集合    T  以及挑战  chal, 输出一个对该挑战的证明       P.
                    Verify(pp, P)→0 or 1: 算法输入公共参数  pp  和证明  P, 如果审计通过, 算法输出     1, 否则算法输出    0.

                 2.6   困难性问题
                    定义  1 (CDH  假设). 挑战者生成群参数      δ=(p,  ,      表示群   G 的生成元, 对于    x,y ∈ Z p , 挑战者向攻击者
                                                        G G T , e), g
                          x
                                           y
                 发送  g, v=g ,  g ∈ G, 攻击者输出  v .
                            y
                    如果不存在任何概率多项式时间的攻击者能以不可忽略的优势赢得上述游戏, 则                           CDH  假设成立.
                    定义  2 (DL  假设). 挑战者生成群参数      δ=(p,  ,      表示群   G 的生成元, 对于    x ∈ Z p , 挑战者向攻击者发
                                                       G G T , e), g
                 送  g,  g ∈ G, 攻击者输出  x.
                      x
                    如果不存在任何概率多项式时间的攻击者能以不可忽略的优势赢得上述游戏, 则                           DL  假设成立.
                    定义  3 (q–1 假设). 挑战者生成群参数    δ=(p,  ,      g 表示群  G 的生成元, 挑战者随机选择       a, s,  b 1 ,...,b q ∈ Z p ,
                                                    G G T , e), 令
                 向攻击者发送     δ 以及以下参数:

                                                 {    }         {  }        {           }
                              a i
                           s
                        g,g ,{g ,g ,g ,g a i b j ,g a i /b 2 j }  , g a i b j /b 2 j ′  , g a i /b j  , g sa i b j /b j ′  ,g sa i b j /b 2 j ′  .
                                b j
                                   sb j
                                            i,j∈[q,q]
                                                       i,j,j ′ ∈[2q,q,q],j, j ′  i,j∈[2q,q],i,q+1  i,j,j ′ ∈[q,q,q],j,j ′
                    挑战者随机选择       b∈{0, 1}, 如果  b=0, 挑战者向攻击者发送   e(g,g) sa q+1 , 否则挑战者向攻击者发送一个随机元素
                 R ∈ G T . 随后, 攻击者输出对  b  的猜测  b', 令攻击者猜测成功的优势为       ε=Pr[b'=b]–1/2.
   383   384   385   386   387   388   389   390   391   392   393