作者:郑晓敏
云计算可以根据个人的需求为用户提供个性化的计算和存储,减少用户本地的计算和存储开销。云存储是云服务器提供的动态服务,用户可以通过支付相应的费用获取特定的存储服务。但由于用户的数据远程存储在云服务器中,无法直接控制,从而失去了抵御恶意用户对数据进行篡改的能力。为了解决上述问题,保证云数据的正确性和完整性,云数据完整性审计方案被不断地提出。
基于对云端数据安全性的担忧,研究者提出了多种不同的解决方案用于实现云数据完整性审计。这些方案主要基于两种不同的基础原型:数据拥有性证明(P,ovabl。Data Possession,PDP)和数据可检索性证明(Proof of Retrievability,POR)。
DESWARTEⅢ等人在2003年基于RSA的哈希函数提出了第一个远程数据完整性审计方案。由于该方案基于RSA与哈希函数的公钥密码技术,计算花费很大。OPREA等人的方案和FILHO等人的方案需要验证完整的存储文件,服务器付出昂贵的计算开销和通信开销。SEBE等人的方案要求数据拥有者线性存储数据。SCHWARZ等人的方案难以抵御欺骗攻击,不能安全地提给供服务器正确、真实占有数据的证据。
ATENIESE等人在进行了大量研究工作后,首次提出了数据拥有性证明( PDP)模型,方案通过使用同态标签技术和挑战一响应协议,实现对半可信的云服务器中的数据进行完整性验证,但此方案不支持数据的动态操作:POR方案由JUELS等人提出,方案利用数据块间的联系币口伴随的纠错数据保证远程数据的存储可验证性和可恢复性,但是此方案只适用于私有验证。
为了满足数据动态操作的要求,ATENIESE等人扩展了他们的方案,在文献[9]中提出了一个动态版的数据拥有性证明方案( Dynamic Provable Data Possession,DPDP),但是此方案仍然不能支持完整的动态操作,同时该方案难以抵御欺骗攻击。后来,ERWAY等人在文献[10]中基于等级的认证跳表和RSA树的结构,首次构造了一个完整的DPDP方案,但是此方案可能导致数据块泄露。
前期的数据拥有性证明方案都基于无第三方的存储协议,但这种完整性审计方案存在着一定的缺陷,无论是数据拥有者还是云存储服务器都无法保证提供公正、可信的审计结果。在这种需求下,出现了一种引入第三方公共审计的方案。2009年,WANG等人利用Merkel哈希树( Merkel Hash Tree,MHT)动态数据结构和双线性对的性质实现了支持第三方公共审计和完整动态操作的数据拥有性证明方案,但在验证过程中存在泄露用户数据的安全隐患。为了保护在公共审计时用户的隐私数据,WANG等人基于文献[11]提出了一个带隐私保护的审计方案。由于文献[11]中的分块策略使云服务器必须存储每个数据块的验证标签,因此带来了大量的额外存储开销。为了解决上述问题,ZHU等人利用数据分块技术和索引哈希表的结构提出了一个改进的动态验证方案,但此方案中索引哈希表的访问效率比MHT和跳表效率要低。YANC等人提出了一个高效的、安全的动态审计协议,该方案利用密码技术与双线性对的双线性性质相结合,提供数据隐私保护,而非使用掩码技术,方案还支持在多云服务器上的执行,但此方案的审计协议易受到敌手的攻击。
在动态云数据完整性审计方案中,有3类典型的实现方案:基于MHT的方案、基于跳表的方案和基于索引哈希表的方案,但这3类实现方案中都有一定的不足。例如,WANG的方案中使用MHT结构实现动态审计,如果对文件进行大量的删除、插入操作会导致MHT失去平衡性,最糟糕的情况下访问MHT的复杂度会下降到O(n)(其中n为数据块的个数):文献[10]是基于等级认证的跳表结构实现的方案,虽然跳表能够使得进行多次动态操作之后仍然保持平衡,但每次的访问时间与存储的文件大小有关,即与数据块个数有关。基于索引哈希表的方案中由于索引哈希表自身低效的原因,方案动态操作的性能相对来说不是很理想。
本文基于前人的研究成果和经验,提出了一种新的更新树结构用于实现动态云数据的完整性审计。方案需要用户和第三方审计者都保存相应文件的更新树,更新树中的节点包含3个属性:序号范围、版本号和偏移量。序号范围的设置使得更新树不必用一个节点存储单个数据块的属性,相同版本号和偏移量的连续序号可以保存在一个更新树节点中,这样大大减少了存储空间和访问时间。在动态审计过程中,系统可以根据序号和偏移量来对签名时的数据块号进行验证。同时根据文献[15]中对用户访问文件特点的研究显示,用户对文件的访问一般具有连续性,这样的使用特点能够使得更新树的效率进一步提高,对云中大量连续数据块进行修改时,更新树只需更新一次含有相应数据块序号范围的更新树节点。当更新树不平衡时,可根据二叉平衡树的原理进行调整,这样可以让更新树保持平衡性,访问效率进一步提高。
通过上述对更新树的介绍可知,虽然用户和第三方审计者都需要保存文件的更新树,但更新树占用的存储空间并不是很大,更新树的结构可以在对文件进行大量连续的修改中拥有较高的效率。
本文第1部分介绍了系统的安全模型;第2部分具体描述了基于更新树的动态云数据审计方案的构建;第3部分给出本文方案的安全性分析;第4部分将本文提出的方案与MHT方案、跳表方案在计算性能和通信性能方面进行比较;第5部分对全文进行总结。
1系统安全模型与预备知识
1.1系统安全定义
文中的系统安全主要体现在以下3个方面:
1)在审计的过程中,第三方审计者能够正确验证云服务器返回的证据;
2)云服务器根据拥有的数据和公共参数不能够伪造出数据块签名来通过第三方审计者的验证;
3)第三方审计者根据云服务器发送来的证据和已有公共参数,获取不到用户的私密数据。
1.2系统安全模型
基于更新树的动态云数据审计方案包括3个实体,分别为用户端( Cloud User,CU)、云服务器(Cloud Server,cs)、第三方审计者(Third Party Auditor,TPA),具体模型如图1所示。
CL-是拥有大量数据要存储到云端的一方,用户端要求能够对云中的数据进行动态操作和完整性审计:CS是能够提供远程存储数据服务的一方,要求能够按需提供存储空间和计算能力,能够支持用户或第三方审计平台的审计和动态操作请求。TPA是受用户端委托完成对云端数据进行完整性审计的一方,在审计过程要求第三方审计平台不能够获得用户的隐私数据。
在本文方案中,CU首先将自己本地数据发送到CS中,然后将本地数据删除,同时CU建立此文件的更新树。初始更新树由一个节点构成,数据序号范围为1~n,n代表数据块个数,版本号和偏移量都为0,由于CU的计算能力有限且不能实时地在联网的环境去检测云端数据的完整性,所以CU与TPA签订好协议委托TPA负责检测用户云端数据的完整性,同时用户也要将自己委托的第三方告知CS,这样CU就从审计的任务中解放出来了。TPA为了验证云数据的完整性也需要保存用户文件的更新树,用户每次进行动态操作时需要通知TPA更新更新树的结构以保持和用户的更新树同步。CS将收到的用户元数据和数据标签等信息进行保存。在审计时,TPA产生挑战信息发送给CS,CS根据收到的挑战信息产生数据完整性的证据发送给TPA,TPA收到证据之后进行验证,这样就完成了一次审计过程。当用户需要对数据进行动态操作时,将需要更改的数据发送给CS和TPA,CS收到更新的信息对用户云端数据进行更新,TPA收到更新的信息时需要对相应的更新树进行更新,然后向CS发起一次挑战。
从以上分析可以看出系统运行分4个部分:初始化阶段、挑战阶段、验证阶段和动态操作阶段,它们的具体执行过程如下。
1)初始化阶段
在初始化阶段,CL运行Kev Gen函数产生用户端的私钥和公钥,然后利用公私钥运行SigGen函数产生文件块的签名,将文件块、文件块的签名集合发送到云端保存。同时用在本地建立和保存此文件的更新树,并将更新树信息发送给TPA进行保存待挑战、验证阶段使用。
2)挑战阶段
在挑战阶段TPA运行ChaIGen函数,随机选取要挑战的文件块生成挑战信息chal,然后发送给CS进行挑战;CS收到挑战信息后运行P,ool Ge,z函数生成审计的p,ooj发送给TPA。
3)验证阶段
TPA收到proof之后,根据更新树的信息,运行VerifyProof函数对证据进行验证。
4)动态操作阶段
动态操作阶段包括插入、删除和更新操作,在动态操作过程中用户需要更新本地的更新树并将更新信息发送给TPA,TPA对其存储的更新树进行同步。
1.3双线性对
2方案的提出
2.1方案构造
用户将数据远程保存在云服务器中,并委托TPA周期性地审计用户云端的数据。在审计过程中,TPA首先生成挑战信息chal,然后将挑战信息发送给CS,CS收到挑战信息后生成对应的proof返回给TPA,TPA根据更新树验证proof完成一次审计。
基于更新树的动态云数据审计方案由6个多项式算法组成:K
1) KeyGen(l~:生成公私钥对,1k为安全参数。
2) SigGen(x,F):生成文件块的签名,x为用户的私钥,F为要签名的文件。
3) ChaIGen():TPA执行此函数生成挑战信息chal。
4) ProojGen(F∑,chal) CS根据挑战信息chal,用户文件F及其签名集合∑生成挑战证据proo f。
5) VerzjyProoj'(a,proofchal):TPA运行此函数,根据更新树验证proof。
6) Exec Update(i,m,σ,operation):用户运行此函数触发CS执行相应的动态操作。
2.2初始化阶段
2.5动态操作阶段
在动态操作阶段,用户可以对动态数据进行插入、更新和删除操作,如图2所示。下面是这3个操作过程的具体描述。
2.5.3删除操作
当用户进行删除操作时,首先要更新用户本地的更新树,更新树中该序号以后序号的偏移量要做加1处理,同时序号要做减1处理。删除操作符合平衡二叉树的删除步骤,节点需要分离时需对节点进行分离处理。用户运行Exec Update(i,null,null,”delete”)函数执行删除操作,删除过程中,用户只需传输节点的编号和删除标识给cs和TPA即可完成操作。最后TPA根据删除的序号对CS进行挑战,验证动态操作的正确性。动态操作流程如图3所示。
3安全性分析
3.1审计过程安全性
审计过程中TPA根据更新树的节点和挑战证据,对用户云数据的完整性进行验证。如果Cs发送过来的证据正确,则相应的数据块和其签名正确通过验证=审计的正确性和签名的不可伪造性将在定义1和定义2中给予说明。
定义1审计的正确性在审计的过程中,第三方审计者能够正确验证云服务器返回的证据。
证明:如果CS发送的证据正确,那么等式成立。其推导过程如公式(1)所示。
定义2不可伪造性CS根据拥有的数据和公共参数不能伪造出数据块签名来通过TPA的验证。
证明:如果CS要伪造数据块的签名,在已知公共参数g、y和p的情况下去计算伪造数据块的签名是一个离散对数问题。离散对数难题可以描述为:在知道g、gx mod p和p的情况下去计算x是困难的。
3.2用户隐私安全性
在审计的过程中,TPA不可以获取到用户的文件信息是至关重要的,定义3说明了TPA在审计过程中不能够获得用户的文件信息。
定义3不可获取性TPA根据CS发送来的证据和已有公共参数,获取不到用户的私密数据。
证明:在获得的proof中,由于随机数y的存在,7r无法求出的信息,继而无法求出m.的信息,具体证明见文献[12]中的安全性分析。
4性能分析
为了体现本文方案的优点,我们将本文方案与跳表方案和MHT方案在计算性能和通信性能方面进行比较,如表1所示。
表1主要针对动态操作、挑战阶段和审计阶段的计算性能和通信性能进行了比较,在初始化阶段它们的效率基本相同。本文方案提出的更新树结构提高了动态操作的效率,将原先单个数据块的操作提高到一定连续范围的操作。在实验比较中,假设对有Ⅳ个数据块的文件进行动态操作,其中更新树中的节点个数设为M,对其中f个连续数据块进行动态操作,c为挑战的数据块个数。性能对比中的数据是云服务器和审计者(审计者可以是TPA或者用户本身)的总体性能的对比。由表1中可以看出,在对连续数据块进行动态操作时,本文方案比MHT和跳表的方案性能更高,特别地,根据用户访问文件的特点,在文件块很大的情况下M可能远小于N的大小。在审计和挑战阶段中,由于访问更新树的性能O(logM)相比MHT和跳表的访问速度更快,从而性能也更优。而且MHT的方案中最坏情况下MHT的访问速度会下降到O(N)。
5结束语
本文构造了基于更新树的动态云数据审计方案,方案中构造的更新树的节点能够存储连续范围的节点的相同属性,这样的设计大大减少了节点的个数,从而提高了更新树的访问效率。方案中动态操作的效率与用户文件的大小无关,只与用户动态操作的次数有关,当更新树不平衡时可以根据二叉平衡树的原理进行调整,这样保证了动态操作性能的稳定性。方案可以很容易地扩展支持多用户多文件的批处理审计方案。同时在审计过程中,方案保证了用户数据在第三方审计平台中的隐私性。通过本文最后的安全性分析和性能分析可以看出,本文方案是一个高效安全的动态审计方案。
6摘要:由于云服务器是半可信的,为了保证云数据的完整性和正确性,用户需要定期对云中数据进行审计,同时云服务器也要支持用户对云数据进行动态操作:文章提出了一个新的更新树结构用于实现动态的数据完整性审计二方案中的更新树存有数据块的版本号、序号范围、偏移量,序号范围的设置使得更新树具有一个节点存储多个数据块的属性。相同版本号和偏移量的连续序号具保存在一个更新树节点中,这样大大减少了存储空间和访问时间,在动态审计过程中,系统可以根据序号和偏移量来对签名时的数据块号进行验证。对云中大量连续数据块进行修改时,更新树只需更新一次含有相应数据块序号范围的更新树节点,更新树不平衡时可根据二叉平衡树的原理进行调整。更新树节点存放的是一定范围的数据块属性,使得更新树的大小不与文件数据块个数成正比,而与用户对文件更新次数相关,从而方案对动态云数据的审计性能不会根据文件大小的增长而变低。最后通过安全性分析和性能分析可以看出,文中方案是一个高效安全的动态云数据审计方案。
下一篇:返回列表