张 茜,王 箭
(南京航空航天大学计算机科学与技术学院,江苏 南京 211106)
云端数据共享服务是一种常见的应用方式,用户可以在一个群组范围内共享彼此间的数据。具体来说,群组用户将自己的数据上传到云端后,组内其他用户都可以访问并修改这些数据,这既实现了信息共享,又减轻了用户在本地的存储负担。尽管云服务商宣称为用户提供安全可靠的存储环境,但是由于软件、硬件故障以及人为因素的存在,数据可能会丢失或损毁,云服务商为了维护自己的声誉、避免经济损失,可能向用户隐瞒实际情况,甚至会为了节省空间、获得更高效益,删除用户不常使用的数据[1]。
为了验证存储在云端的数据完整性,一些云端数据完整性审计方案已经被提出[2-20]。这些方案的数据的完整性依赖与之相关的认证器的正确性,且存在一个可信第三方验证者TPA无需下载全部数据即可验证存储在云端数据的完整性。然而现有的云共享数据完整性审计方案中,认证器生成方法大都由群组用户各自生成,但用户的计算资源有限,且计算能力较低,用户为每个数据块生成认证器会花费自身很大的计算开销。为减轻用户的计算负担,Guan等人[2]基于不可区分混淆技术构造了一个可以减少认证器生成时间的数据审计方案。Li等人[3]提出了具有2个独立云服务器的数据审计方案,其中一个云审计服务器用于在用户把数据上传给云服务器之前,为用户产生相应的认证器,虽然该方案可以减少用户的计算开销,但会带来潜在的安全问题——如果这个云审计服务器是不诚实的,那么它可能会伪造数据块认证器。Wang等人[4]引入一个安全中介为用户生成数据块认证器,从而减少用户的计算开销,虽然该方案可以减轻用户的计算负担,但用户仍需要花费大量的计算开销来验证安全中介生成的数据块认证器的正确性。
为减轻用户的计算开销,提高认证器生成效率,本文提出基于盲签名的云共享数据完整性审计方案。具体来说,本文主要工作如下:
1)基于盲签名算法,构造一种云端共享数据完整性审计方案。方案引入了认证器生成中心(AGC),用户把盲化后的数据块发送给AGC,由AGC代替群组用户生成相应的数据块认证器,用户只需对数据块进行盲化,计算开销很小。
2)引入TPA审计授权机制,云服务器只向得到审计授权的TPA回复数据持有证明,有效避免了攻击者对云服务器的DDoS攻击。
3)给出方案的安全性分析和实验结果分析。分析结果表明本文提出的方案是安全、高效的。
图1 系统模型
如图1所示,本文方案的系统模型包含5种实体:群组用户(Group Users)、群组管理员(Group Manager)、认证器生成中心AGC、云服务器(Cloud)和可信第三方审计者TPA。
1)群组用户。群组包含多名用户,群组成员可以加入或退出群组,群组用户之间通过云服务器共享数据。
2)群组管理员。群组管理员是诚实的,负责群组密钥的生成、用户的加入和撤销以及对TPA的审计委托。
3)认证器生成中心AGC。AGC是半诚实的,可以代替群组用户生成数据块认证器,减轻用户的计算负担。
4)云服务器。为用户提供大量的存储空间和计算资源,以及数据存储与共享服务。云服务器是半可信的,它不会恶意破坏云端数据,但可能隐瞒数据丢失、损毁等情况。
5)可信第三方审计者TPA。代替群组用户对云端数据进行完整性审计,合法的TPA是诚实可信的。
为简化模型,假定各实体之间不存在共谋,群管理员和云服务器之间存在一个安全信道。
为了有效验证存储在云端共享数据的完整性,本文方案应满足以下设计目标:
1)正确性。若云服务器、群组用户、AGC和TPA是诚实的,而且遵循规定步骤,TPA就可以正确检测出审计数据是否完整。
2)审计可靠性。只有云服务器完整地存储了群组数据,才能够通过TPA的审计。
3)数据隐私。认证器产生过程中,AGC不能获取用户的真实数据;审计过程中,TPA不能获取用户的真实数据和身份信息。
4)审计授权。只有得到审计授权的TPA才能得到云服务器的审计证明回复。
图2 基于盲签名的云共享数据完整性审计方案定义
基于盲签名的云端共享数据完整性审计方案定义如图2所示,总共包含以下9种算法:
1)keygen(1k)→(gsk,gpk)。密钥生成算法,群组管理员执行,输入安全参数k,输出群组密钥(gsk,gpk)。
2)join(u)。用户加入算法,群组管理员执行,输入一个新用户u,管理员将群组私钥gsk发送给该用户。
3)datablind(F)→F′。数据块盲化算法,群组用户执行,输入由数据块集合{mi}组成的共享文件F,输出盲化后的数据块集合组成的文件F′发送给AGC。
5)authverify(Φ′,F,{ri},spk)→{True,False}。认证器验证算法,云服务器执行,输入盲化后的认证器集合Φ′,共享文件F,随机值集合{ri}和公钥spk,若认证器集合Φ′正确则输出True,并对认证器进行脱盲;否则输出False。
6)proofgen(F,Φ,chal)→P。证明生成算法,云服务器执行,输入共享文件F、认证器集合Φ和审计质询chal,输出能够证明云服务器拥有完整共享数据的审计证明P。
7)proofverify(gpk,chal,P)→{True,False}。证明验证算法,TPA执行,输入群公钥gpk、审计质询chal和数据持有证明P,TPA验证证明有效则输出True,否则输出False。
8)revoke(u)→usk。用户撤销算法,群管理员执行,输入被撤销用户u,输出更新密钥usk,向群内未撤销用户、AGC和云服务器发布,并更新当前群私钥gsknew和访问授权凭证。
9)resign(Φ,usk)→Φnew。认证器重签算法,云服务器执行,输入原认证器集合Φ、更新密钥usk,输出新认证器集合Φnew。
1)双线性映射。
2)计算Diffie-Hellman(CDH)问题。
3)离散对数(DL)问题。
1)keygen(1k)→(gsk,gpk)算法。
群管理员将群组私钥gsk发布给群组内所有用户,通过安全信道分别将部分私钥sk和访问授权凭证h1(x,U)发送给AGC和云服务器。当用户需要访问云服务器时,先利用sk计算出访问授权凭证,并发送给云服务器。云服务器通过验证用户提供的访问授权凭证来判断该用户是否合法。
2)join(u)算法。
当新用户u加入时,群管理员将群组私钥gsk安全传送给该用户,用户u便可利用私钥计算出访问授权凭证h1(x,U)。
3)datablind(F)→F′算法。
4)authgen(sk,F′)→Φ′算法。
②用户计算文件标签t=name‖Sigssk(name)。
③用户发送{h(x,U),F,t,Φ′,{ri}}给云服务器后,删除本地数据文件F、盲化后的认证器集合Φ′和随机盲化参数集{ri}。
5)authverify(Φ′,F,{ri},spk)→{True,False}算法。
云服务器接收到{h(x,U),F,t,Φ′,{ri}}后,采用批验证的方式验证集合Φ′的正确性:
(1)
6)proofgen(F,Φ,chal)→P算法。
①群组管理员产生随机值AUTH发送给云服务器,并向TPA发送sigAUTH=SSigssk(t‖VID‖AUTH)和文件标签t进行审计授权。
②TPA利用公钥spk验证文件标签的有效性,若无效,TPA不会执行审计任务;反之,TPA向云服务器发送审计质询chal,过程如下:
Step1随机挑选c个元素的集合I,其中I⊂[1,n]。
Step3发送审计质询chal={{i,vi}i∈I,{VID}pkcloud,sigAUTH}到云服务器,其中{VID}pkcloud表示利用云服务器公钥pkcloud加密的VID。
③云服务器收到chal后,用自己的私钥解密{VID}pkcloud得到VID,并用VID、AUTH、文件标签t和用户公钥spk验证该TPA是否得到授权,若验证通过,云服务器生成数据持有证明P:
其中,R=wr∈G1。
7)proofverify(gpk,chal,P)→{True,False}算法。
(2)
若等式(2)成立,则说明数据持有证明有效,存储在云服务器上的数据是完整的。
8)revoke(u)→usk算法。
群组中有用户撤销时,群管理员需要对私钥sk进行更新:
②收到更新密钥后,组内用户可利用旧私钥sk=x和更新密钥usk=y/x得到新私钥sknew=y,并利用新私钥计算出新的访问授权凭证h1(y,Unew),其中Unew=gy。
③群组管理员将新的授权凭证h1(y,Unew)和更新密钥usk通过安全信道发送给云服务器。
9)resign(Φ,usk)→Φnew算法。
云服务器利用更新密钥usk=y/x对数据块认证器进行更新:
=[H(i‖name)·wmk]y
(3)
定理1(正确性)如果云服务器、群组成员、AGC和TPA是诚实的且遵循指定步骤,TPA可以正确检测出审计数据的完整性。
证明:根据双线性映射的性质,验证等式的正确性可以通过以下步骤证明:
定理2(审计可靠性)云服务器只有完整地存储群组用户的数据才能够通过TPA的审计。
证明:采用文献[21]知识证明的方法构造一个知识提取器。如果云服务器没有存储完整的数据但可以通过TPA验证,意味着可以通过知识提取器与本文所提方案反复交互来提取完整的被挑战数据块。接下来通过一系列游戏进行证明:
(4)
(5)
最终,本文构造一个知识提取器来提取所有被挑战的数据块mi(i∈I,|I|=c)。在相同的数据块上执行c次不同系数vi(i∈I,|I|=c)的挑战,可以得到c个关于mi(i∈I,|I|=c)的线性独立等式,通过求解这些等式,知识提取器可提取出全部的mi(i∈I,|I|=c)。这意味着如果云服务器能够通过TPA的验证,它一定真实地存储了用户的完整数据。
定理3(数据隐私)在认证器产生过程中,AGC无法获取用户的真实数据;在审计过程中,TPA无法获取用户的真实数据和身份信息。
=∏i∈I[H(i‖name)·wmi]x·vi
=∏i∈I[H(i‖name)vi]x·(w∑i∈Imi)x
定理4(访问授权)只有群组合法用户才能访问共享在云端的数据。
证明:在本文所提方案中,只有群组内合法用户拥有群私钥sk=x来计算访问授权凭证h1(x,U)。当群组中有用户被撤销时,群组管理员会重新更新一个新选择私钥sknew=y,并计算更新密钥usk=y/x,把usk发送给组内未撤销用户。用户可利用更新密钥usk=y/x和旧私钥sk=x恢复出新私钥sknew=y并计算新的访问授权凭证h1(y,gy),因此被撤销的用户无法访问群组存储在云端的共享数据。同时,由哈希函数的单向性可知,云服务器不能从访问授权凭证h1(x,U)中恢复出群的私钥x,因此云服务器不能伪造出有效的数据块认证器。
定理5(审计授权)审计过程中,云服务器只回复得到群组管理员审计授权的TPA所发出的审计质询,对未授权的TPA所发送的审计质询不予回复。
证明:在本文所提方案中,由于群组管理员的签名私钥ssk是秘密保存的,TPA无法伪造合法的审计授权。云服务器对审计授权sigAUTH进行验证,判断TPA的合法性,对未得到授权的假冒TPA所发送的审计质询不予回复,从而有效避免了DDoS攻击。
表1将本文方案与文献[10-12]方案在“审计授权”“数据隐私”“用户轻量级认证器”和“动态组”这4个方面进行对比。
表1 方案特性对比
通过与其他3种方案的对比可以看出,本文方案除了支持TPA审计授权、数据的隐私保护和用户的加入与撤销之外,还支持用户轻量级认证器的生成,能够减轻用户的计算开销。
表2 不同阶段的计算开销和通信开销
1)认证器生成阶段。
2)证明生成阶段。
3)证明验证阶段。
如图3所示,审计过程主要包括3个阶段:审计挑战的产生、审计证明的产生和审计证明的验证。实验以100为间隔,从0~1000中选择不同的数据块进行挑战质询,由实验结果可知,在审计过程中,审计挑战产生阶段所需的开销最少,TPA进行证明验证阶段所需的开销最多;随着被挑战质询数据块数量的不断增加,审计过程中3个阶段的开销均有所增加。
图3 审计过程中各阶段的计算开销对比
图4测试基于盲签名的审计方案的性能,比较了本文方案与文献[12]方案在认证器生成阶段用户端的开销。文献[12]方案中,用户需要为每个数据块生成相应的认证器,而本文方案中,用户只需要进行数据块盲化操作,认证器的生成由AGC进行,用户所需的计算开销很小。
图4 认证器生成阶段群组用户端计算开销对比
本文提出了一种基于盲签名的云共享数据完整性审计方案。在本方案中,群组用户把共享数据上传到云端前,先对数据块进行盲化,把盲化后的数据块发送给AGC生成相应的数据块认证器,且生成的认证器的正确性验证与脱盲由云服务器完成,极大地减轻了用户的计算负担。此外,本文方案引入了TPA审计授权,只有得到群组管理员授权的合法TPA才能得到云服务器的数据持有性证明回复,从而避免了攻击者对云服务器的DDoS攻击。安全性分析和实验结果表明了本文方案是安全、高效的。