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 计算

