一种云端数据存储完整性的证明方法与流程

文档序号:12739399阅读:622来源:国知局

本发明涉及一种云端数据存储完整性的证明方法。



背景技术:

随着数据爆炸和宽带网络的普及,云存储已经成为当今云计算领域的一个重要应用分支。目前非常流行的云存储服务有DropBox、谷歌的Google Drive、微软的SkyDrive,以及国内的百度网盘、金山快盘、华为网盘等。这些云存储服务为企业和个人提供了一个对海量数据进行安全保管和高效访问的解决方案。越来越多的企业和个人都趋向于将自己的数据托管于云存储服务商。云存储具有存储空间价格低廉、随处存取、方便共享、容灾备份的优点。

然而,云存储在带来便捷性的同时,安全性却是随之产生的一个重要问题。如果用户存了大量数据在云服务器上,他该如何检查数据是否丢失或者损坏。从表面上看,云存储服务商内部的安全防护和容灾备份等技术规避了因用户本地数据易失性而导致的风险。然而,黑客入侵、设备故障、内部人员恶意篡改等安全威胁依然存在。对于用户而言,云端的存储服务器依旧是一个不完全可信的实体。

显然,如果用户通过下载所有托管的数据来检验数据的完整性,在带宽、本地容量和效率方面都是不现实的。更何况,对于多媒体、数据库等一些大型的二进制文件,用户更加不可能通过打开文件查看的简单方式检验文件的完整性。因此,云存储服务商必须通过一种高效的方法来向用户提供数据完整性的证明。

可证明数据持有技术的思想源自远程数据的完整性检查。2007年10月,Ateniese等人首次定义了可证明数据持有(PDP)的概念。方案中有用户和服务商两个角色,用户可对存储在不可信的服务商上的文件进行完整性校验。用户对文件进行预处理,将文件划分成块,为每个数据块生成一个同态可验证标签;验证时用户随机选择一些文件块,要求服务器返回完整地持有这些块的证据;服务器根据被请求的块和他们的标签生成证明;用户根据私钥校验证明是否准确。由于校验时只是抽样检查了某些文件块,且他们的标签具有同态性可以相互叠加,用户和服务器之间的交互信息近似为一个常量,校验时双方的计算量也较小,且允许进行无限次的校验。这个方案基于公钥密码技术,文件预处理过程和验证过程的计算开销比较大。

2008年,Ateniese提出了基于对称密码技术的扩展PDP方案,在初始化时设定挑战的内容和次数,将响应作为元数据放在客户端,能实现文件块的修改、删除和追加。但它的挑战和更新次数都是受初始化值限制的,而且不支持公开验证。C.Erway等人提出了动态可证明数据持有(DPDP)方案。他们在PDP方案的基础上引进一个基于层次的表,用于组织文件块,使其能实现以块为单位的新增、修改和删除,能有效的用于文件存储系统、数据库系统和点对点存储系统。DPDP方案在校验和更新的过程中都需要访问层次表以确定具体的某个文件块,服务器返回的证明值中也包含访问路径信息,所以它的计算复杂度和通信复杂度都比较高。

综上所述,现有方案存在下面两个缺陷:

(1)目前基于公钥密码技术的远程数据完整性验证方法中,用户对文件进行预处理和后期验证过程中的计算开销比较大,不适合在轻量级设备中的使用。

(2)目前基于对称密码技术的远程数据完整性验证方法中,文件标签较大,原始数据膨胀率高。在动态方案中,计算开销和通信开销都比较大。



技术实现要素:

为了克服现有技术的上述缺点,本发明提供了一种云端数据存储完整性的证明方法。

本发明解决其技术问题所采用的技术方案是:一种云端数据存储完整性的证明方法,包括如下步骤:

步骤一、用户对待上传的文件进行预处理:生成私钥、对文件分块并计算每个文件块的标签;

步骤二、用户将预处理后的文件发送给云存储服务器,本地只保存私钥;

步骤三、当需要验证云端数据存储的完整性时,用户随机选取一些文件块并向云端发起挑战;

步骤四、云端生成拥有文件块的证明并返回给用户;

步骤五、用户对云端拥有文件块的证明进行云端数据完整性验证。

与现有技术相比,本发明的积极效果是:针对用户上传到云存储服务器上的数据存在被删除和篡改的问题,本发明提出了一种基于伪随机函数和伪随机置换函数的云端数据存储完整性的证明方法,以验证用户数据在云端的安全性。该方法利用二进制数据按位抽取运算的加法同态性,可以一次性验证多个文件块的完整性,并且该方法具有数据膨胀率低和计算复杂度低的特点。具体表现如下:

1、数据初始化计算复杂度低,处理速度快;

2、文件块标签小,数据膨胀率低;

3、可以同时验证多个文件块的完整性。

具体实施方式

本专利提出的云端数据完整性证明方法的核心思想为:用户将待上传的文件分块,并基于带参数的伪随机函数和伪随机置换函数生成文件块标签,然后将文件块、文件块对应的标签和用对称密码加密后的参数上传到云存储服务器,用户端只保存对称密钥。当需要验证云端数据存储的完整性时,用户随机选取一些文件块并向云端发起挑战,云端将这些文件块和对应的标签进行聚合,将聚合文件、聚合标签和加密后的参数返回给用户。用户利用二进制数据按位抽取运算的加法同态性来验证文件块的完整性。

整个方法包含两个阶段:文件预处理阶段、客户端与云存储服务器的“挑战--响应”阶段。文件预处理阶段为用户将待上传的文件进行预处理,然后将处理后的文件上传到云存储服务器。“挑战—响应”阶段为用户想要验证云端数据完整性时,随机选取一些文件块向云存储服务器发起挑战,云存储服务器生成拥有这些文件块的证明,用户验证这些证明以确认云端数据的完整性。

(1)文件预处理阶段

文件预处理阶段包括两个算法:密钥生成算法(KeyGen)和文件块标签生成算法(TagBlock)。

1)KeyGen(1k)→sk:利用随机数生成器,产生两个长度为k的随机数分别作为对称密码加密密钥kenc和哈希函数的密钥kmac,其中 k为安全参数。用户的私钥为sk=(kenc,kmac)。

2)TagBlock(sk,M)→M*:将文件M分割为s块{M1,M2,…,Ms},每块大小为n bit(n=[M的大小/s],如果文件块的大小不是n的倍数,则在文件后面用0填充)。利用随机数生成器,产生一个随机数kext作为伪随机置换函数π的参数。令:

其中π(·)为的带参数的随机置换函数,l为每个文件块抽取的比特数。每个文件块抽取{i1,i2,…,il}对应位置的比特,设抽取后的结果为{m1,m2,…,ms},记为mi=Extract(Mi),1≤i≤s。利用随机数生成器,产生一个随机数kp?f作为伪随机函数f的参数。按如下公式计算每个文件块的标签:

其中为按位异或运算,为带参数的、输出为l比特的伪随机函数。令文件M的标签为

其中是密钥为kenc的对称加密算法,是密钥为kmac的哈希函数。文件M处理后的结果为M*={{M1,…,Ms},{σ1,…,σs},τ},用户将M*上传到云存储服务器,本地只保存私钥 sk=(kenc,kmac)。

(2)“挑战--响应”阶段

该阶段包括两个算法:证明生成算法(GenProof)和验证证明算法(CheckProof)。

1)GenProof(M*,I)→v:用户随机选择[1,s]的一个子集I,发送给云存储服务器作为挑战。服务器计算聚合认证码σ和聚合消息

然后将拥有I对应文件块的证明发送给用户。

2)CheckProof(sk,v)→{0,1}:首先,用户利用私钥sk中的kmac验证文件标签τ,如果不满足则验证失败返回0。否则,用户利用私钥sk中的kenc解密出伪随机置换函数π和伪随机函数f的参数kext和kprf

用户按公式(1)计算出{i1,i2,…,il},抽取中{i1,i2,…,il}位置对应的比特,设抽取后的结果为记为用户验证服务器拥有I对应文件块并返回1当且仅当

用户通过多次的挑战,可以以接近于1的概率确认云存储服务器完整的存储了文件M。

(3)方案协议设计

在对文件M进行预处理之前,用户已生成私钥sk=(kenc,kmac),保存在客户端。客户端拥有随机数生成器,用于产生算法中需要的随机数。本发明提出的云端数据存储完整性的证明协议步骤如下:

1)对于待上传的文件M,用户按照算法TagBlock(sk,M)对M进行预处理,处理后的结果为M*

2)用户将处理后的文件M*发送给云存储服务器,本地只保存私钥sk;

3)用户任意选取[1,s]的一个子集I,发送给云存储服务器作为挑战,请求云存储服务器返回拥有I对应文件块的证明;

4)云存储服务器按照证明生成算法GenProof(M*,I)生成I对应的聚合消息和聚合认证码σ。

5)云存储服务器将文件标签τ,I对应的聚合消息和聚合认证码σ发送给用户。

6)用户利用云存储服务器返回的按照算法CheckProof(sk,v)验证云存储服务器是否拥有I对应的文件块。如果返回1,则云存储服务器完整的存储了I对应的文件块。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1