面向云存储服务的动态数据完整性审计方案的制作方法
【技术领域】
[0001] 本发明属于云存储安全技术领域,更为具体地讲,设及一种面向云存储服务的动 态数据完整性审计方案。
【背景技术】
[0002] 云存储作为未来存储技术的一种发展趋势,为云计算提供便捷和低成本的海量存 储服务。用户将个人数据存储在云服务器,不仅能够减轻用户的存储负担,而且能够随时随 地访问云端数据。然而用户不具有对云端个人数据的绝对控制权,所W数据安全是一个不 可忽视的问题。
[0003] 目前,研究者已经提出了多种云存储服务的数据完整性检查方案,但是现有的动 态审计方案存在不安全问题和效率低下的问题。用户的动态操作可能导致W下几种攻击: 重放攻击一-恶意的云服务提供商使用已经过期版本的数据块和标签通过审计者的验证, 伪造攻击一-恶意的云服务提供商伪造一个标签W欺骗审计者的验证,删除攻击一-恶意 的云服务提供商故意删除一部分用户数据或预先计算聚合的数据块和标签。
[0004] 本发明旨在利用认证性的数据结构,提出一个适合云存储服务的动态数据完整性 审计方案。通过对用户更新后的数据进行验证和签名操作,W确信云服务提供商是诚实地 更新用户存储在云服务器上的个人数据。最后通过审计者对云服务提供商的数据完整性验 证,确信用户的数据被正确地存储在云服务器上。
【发明内容】
[0005] 本发明的目的在于克服已有云存储服务的数据完整性检查方案对用户动态操作 支持的不足,提出一种面向存储服务的动态数据完整性检查方案。通过使用认证性数据结 构对数据块的位置和版本进行验证,确信云服务提供商诚实地更新用户的数据,W达到对 用户存储在云端个人数据进行完整性检查的目的。
[0006] 为了实现上述目的,本发明所述面向云存储服务的动态数据完整性检查方案,包 括W下几个步骤:
[0007] 密钥生成阶段;用户生成公私钥对,秘密保存私钥,并将公钥发送给审计者和云服 务提供商;
[000引数据外包阶段:用户将文件分割成多个数据块,并对每个数据块计算一个标签,然 后将数据块和标签发送给云服务提供商;云服务提供商对用户发送来的数据块和标签进行 验证,如果验证通过,则云服务提供商接受用户的存储请求,否则将拒绝用户的存储请求;
[0009] 云端数据完整性审计阶段;审计者向云服务提供商发送数据完整性检查的请求消 息,当云服务提供商接收到审计者的请求消息后,需要计算一个证据并将其发送给审计者; 审计者验证上述证据是否正确,如果正确,就说明用户的个人数据被正确地存储在云服务 器上,否者就说明用户存储在云服务器上的个人数据已经被损;
[0010] 动态更新云端数据阶段;如果用户想要更新云端个人数据,就需要将数据块和标 签发送给云服务提供商;云服务提供商收到用户的数据块和标签后,执行更新操作,并将更 新后的结果告知用户。
【附图说明】
[0011] 图1是本发明面向云存储服务的动态数据完整性审计方案的【具体实施方式】原理 框图;
[0012] 图2是图1所示的动态更新云端数据阶段4的原理框图。
【具体实施方式】
[0013] 下面结合附图对本发明的【具体实施方式】进行描述,图1是本发明面向云存储服务 的动态数据完整性审计方案的【具体实施方式】原理框图,包括密钥生成阶段对应1、数据外包 阶段2、数据审计阶段3. 1和3. 2、动态更新云端数据阶段4。图2是本发明面向云服务的动 态数据完整性验证审计方案的动态更新云端数据阶段4的原理框图,包括用户发送更新请 求消息4. 1、云服务提供商返回响应消息4. 2、用户验证响应消息4. 3. 1和用户发送更新请 求消息4. 3. 2、用户更新数据4. 4. 1和用户发送签名4. 4. 2、云服务提供商更新数据和签名 4. 5。
[0014]1.密钥生成阶段:用户选择随机数s&eZ;;和UG Gi,并且计算pk=gsk,从而得到 用户的私钥为sk、公钥为(pk,u);用户秘密存储私钥,将公钥发送给云服务提供商和审计 者。
[001引 2.数据外包阶段;(1)用户将文件M分成割成S个分区M= {Ml,M2,…,M,},每个分区11被分割成111个数据块^,=机1,"!,:,...,。;,",;,其中"!&.62;、1£{1,2,...,3}和 j G {1, 2, ???,nj0
[0016] 0)用户为每个分区Mi构造一个初始的版本向量Vi= (1,2,…,n1),其中 iG(1,2,…,s};用户为每个数据块计算一个同态标签7;=(雌/)-""'")",其中*^ = FIDIIiIIV。、jG{1,2,…,叫},"FID"表示文件M的唯一标识;通过上述计算,用户生成一 个同态标签集合T= {T。.IiG{1,2,…,s},jG{1,2,…,叫}}。
[0017] (3)用户构造Merkle化sh树并计算根结点R,然后计算R的签名〇K||?;用户将 (M,T,N,0…piJ发送给云服务提供商,其中集合N= {ni,n2,…,nJ表示每个数据分区的数 量。
[001引 (4)云服务提供商构造Merkle化sh树并且计算根结点R';使用R'验证签名 0是否有效,如果签名有效,就将T、M和kUu. 存储在云服务器,否则将拒绝用户的 存储请求。
[0019] 3.云端数据完整性审计阶段;(1)审计者选择集合{1,2,…,s}的一个子集I= (si,S,,…,S。},并选择一个随机数AeZ;:;将挑战集合C= (I,k)发送给云服务提供商。
[0020] 似云服务提供商接收到挑战集合后,为每个1GI和jG{1,2,…,叫}的 数据块计算一个系数ay=fkO),其中函数fO是一个伪随机函数;CSP计算聚合的 W=茲。~和a=雨。TT;Liir' ;记第1个叶结点的辅助路径为Ki,那么辅助信息可W被 表示成A= (vi,Ki}iei;将证据P= {m,0,A}发送给审计者。
[002U (3)审计者使用I和A构造Merkle化sh树的叶结点,然后构造Merkle化sh树并 计算根结点R",使用R"验证签名0K||?是否有效;如果签名无效,系统将输出"0"并退 出;否则审计者为每个1eI和je{1,2,…,nj的数据块计算一个系数ay=fk(j);验证 下面的等式如',各塔(取,,巧11&仍01|/||,'4尸'"'",如)是否成立;如果等式成立,系统输出"1", 否则系统输出"0"并退出。
[0022] 4.动态更新云端数据阶段;(1)如果用户想要更新存储在云服务器的个人数据, 那么就需要用户将更新请求消息发送给云服务提供商。
[002引 似当云服务提供商接收到消息后,就将响应消
息^^, =Ai发送给用户。
[0024]做用户使用Ai构造Merkle化sh树并计算根结点R;然后使用R验 证签名0cm?是否有效;如果签名无效,系统将输出"0"并退出,否则将请求消息 尸,,:=(/,化饥/,化)山护/(/(徊 (',巧0人/.7;:,",;)发送给云服务提供商。
[002引 (4)用户首先将Vi修改为V;,并计算Merkle化sh树的根结点护,然后将签名 0Wi?发送给云服务提供商。
[0026] (5)云服务提供商将Vi修改为V;,然后将(Tu,mu)修改为的,"如,最后将签名 OrIIfID修改为0R*||FID。
【主权项】
1. 一种面向云存储服务的动态数据完整性审计方案,其特征在于,包括以下几个步 骤: 密钥生成阶段:用户生成公私钥对,秘密保存私钥,并将公钥发送给审计者和云服务提 供商; 数据外包阶段:用户将文件分割成多个数据块,并对每个数据块计算一个标签,然后 将数据块和标签发送给云服务提供商;云服务提供商对用户发送来的数据块和标签进行验 证,如果验证通过,则云服务提供商接受用户的存储请求,否则将拒绝用户的存储请求; 云端数据完整性审计阶段:审计者向云服务提供商发送数据完整性检查的请求消息, 当云服务提供商接收到审计者的请求消息后,需要计算一个证据并将其发送给审计者;审 计者验证上述证据是否正确,如果正确,就说明用户的个人数据被正确地存储在云服务器 上,否者就说明用户存储在云服务器上的个人数据已经被损; 动态更新云端数据阶段:如果用户想要更新云端个人数据,就需要将数据块和标签发 送给云服务提供商;云服务提供商收到用户的数据块和标签后,执行更新操作,并将更新后 的结果告知用户。2. 根据权利要求1所述的面向云存储服务的动态数据完整性审计方案,其特征在于, 所述密钥生成阶段包括具体步骤: 用户选择随机数AeZ)和u e G1,并且计算Pk = gsk,从而得到用户的私钥为Sk、公钥 为(pk, u)。3. 根据权利要求1所述的面向云存储服务的动态数据完整性审计方案,其特征在于, 所述数据外包阶段包括以下几个具体步骤: (1) 用户将文件M分成割成s个分区M = (M1, M2,…,MJ,每个分区Mi被分割成n i个数 据块 =丨叱,";,2,...,册,",1,其中》^2;;、1£{1,2,...,8}和_]_£{1,2,一,叫} ; (2) 用户为每个分区Mi构造一个初始的版本向量Vi= (1,2,…,Iii),其中i e {1,2,… ,s};用户为每个数据块计算一个同态标签,其中tij= FIDl |i| |Vij、 je {1,2,…,nJ,"FID"表示文件M的唯一标识;通过上述计算,用户生成一个同态标签 集合 T = ITij I i e {1,2,…,s},j e {1,2,…,nj}; (3) 用户构造 Merkle Hash树并计算根结点R,然后计算R的签名〇K||FID;用户将 {M,T,N,〇K||FID}发送给云服务提供商,其中集合N= {ηι,η2,…,ns}表示每个数据分区的数 量 (4) 云服务提供商构造 Merkle Hash树并且计算根结点R';使用R'验证签名〇K||FID是否有效,如果签名有效,就将T、M和IvJ i e {1,2, ...,ni}存储在云服务器,否则将拒绝用户的 存储请求。4. 根据权利要求1所述的面向云存储服务的动态数据完整性审计方案,其特征在于, 所述云端数据完整性审计阶段包括以下几个具体步骤: (1) 审计者选择集合{1,2,…,s}的一个子集I = (S1, S2,…,s。},并选择一个随机数 & e ;将挑战集合C = (I,k)发送给云服务提供商; (2) 云服务提供商为每个I e I和j e {1,2, ···,%}的数据块计算一个系数aij=fk(j), 其中函数f()是一个伪随机函数;CSP计算聚合的《 = ;和;记 第1个叶结点的辅助路径为K1,那么辅助信息可以被表示成Λ = {Vl,KJlel;将证据P = Im, σ,Δ}发送给审计者; (3)审计者使用I和Δ构造 Merkle Hash树的叶结点,然后构造 Merkle Hash树并计 算根结点R",使用R"验证签名〇K||FID是否有效;如果签名无效,系统将输出"0"并退出; 否则审计者为每个I e I和j e {1,2,…,nj的数据块计算一个系数au= fk(j);验证下 面的等式汾^寧11匕17;11^/川|/|卜;;)\?'沐)是否成立;如果等式成立,系统输出"1",否 则系统输出" 〇 "并退出。5.根据权利要求1所述的面向云存储服务的动态数据完整性审计方案,其特征在于, 所述动态更新云端数据阶段包括以下几个具体步骤: (1) 如果用户想要更新存储在云服务器的个人数据,那么就需要用户将更新请求消息 4 =(〃M〃".F/D./)发送给云服务提供商; (2) 当云服务提供商接收到消息&后,就将响应消息A1 =Δ,+发送给用户; (3) 用户使用Δ i构造 Merkle Hash树并计算根结点R ;然后使用R验证 签名σκ|_是否有效;如果签名无效,系统将输出"〇"并退出,否则将请求消息 = (/??竹/111〇£1砂/办/价,/;7£)乂),7;丨,<)发送给云服务提供商; (4) 用户首先将Vi修改为V:,并计算Merkle Hash树的根结点R%然后将签名liVlliro发 送给云服务提供商; (5) 云服务提供商将Vi修改为V:,然后将(TijJij)修改为($,<),最后将签名。 K||FID修改为S'll? °
【专利摘要】本发明公开了一种面向云存储服务的动态数据完整性审计方案,目的在于克服已有云存储服务的数据完整性检查方案对用户动态操作支持的不足。包括如下阶段:密钥生成阶段,用户生成公私钥对,并将公钥发送给云服务提供商和审计者;数据外包阶段,用户将数据块和标签发送给云服务提供商,云服务提供商验证标签的正确性;云端数据完整性审计阶段,审计者向云服务提供商发送一个审计请求,云服务器计算一个证据并将其返回给审计者,最后审计者验证证据的正确性;动态更新云端数据阶段,用户将数据块和标签发送给云服务提供商,云服务提供商执行更新操作,并将更新后的结果告知用户。本发明不仅能高效地满足云存储服务的数据完整性审计方案的安全要求,而且高效地支持用户的动态操作。
【IPC分类】H04L29/08, H04L29/06
【公开号】CN104902027
【申请号】CN201510321389
【发明人】熊虎, 秦志光, 王士雨, 岳峰, 吴世坤, 陈阳, 任化强, 包文意
【申请人】电子科技大学
【公开日】2015年9月9日
【申请日】2015年6月12日