CN105320899B - 一种面向用户的云存储数据完整性保护方法 - Google Patents

一种面向用户的云存储数据完整性保护方法 Download PDF

Info

Publication number
CN105320899B
CN105320899B CN201410350589.8A CN201410350589A CN105320899B CN 105320899 B CN105320899 B CN 105320899B CN 201410350589 A CN201410350589 A CN 201410350589A CN 105320899 B CN105320899 B CN 105320899B
Authority
CN
China
Prior art keywords
node
data
branch
blocks
files
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201410350589.8A
Other languages
English (en)
Other versions
CN105320899A (zh
Inventor
杨雅辉
李晓晨
沈晴霓
吴中海
方跃坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peking University
Original Assignee
Peking University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peking University filed Critical Peking University
Priority to CN201410350589.8A priority Critical patent/CN105320899B/zh
Publication of CN105320899A publication Critical patent/CN105320899A/zh
Application granted granted Critical
Publication of CN105320899B publication Critical patent/CN105320899B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种面向用户的云存储数据完整性保护方法。本方法为:1)上传:用户端将文件分块编号,生成块内冗余校验码;计算每一文件块哈希值,将哈希值保存成一个基于范围的2‑3树,将这些哈希值联接成一个值并用私钥签名;生块间冗余校验码,用流置换密钥对块间冗余校验码进行加密;2)验证:云管理节点将验证请求发送给对应云存储服务器,计算对应的原始数据及其对应的块间冗余校验码的代数签名,返回给用户端进行数据完整性验证,如果发现数据损坏则进行3);3)恢复:用户端根据树信息从云端获取对应分支树上的所有文件块,并用该文件块的纠删码对其进行纠错恢复。本发明从用户角度对存储在云端的动态数据进行完整性验证、恢复。

Description

一种面向用户的云存储数据完整性保护方法
技术领域
本发明提出一种云存储环境下的动态数据完整性保护方法——ECAS-FDPOR(Erasure Code and Algebraic Signatures-FDPOR),从用户角度对存储在云端的动态数据进行完整性验证,当数据损坏时能够对受损数据进行一定程度的恢复。本发明的技术领域涉及云存储系统,数据完整性,纠删码,代数签名。
背景技术
互联网技术的不断发展与计算机技术的使用开启了云存储服务的新时代。当用户使用了云存储服务之后,数据的存储、组织、管理以及可靠性、可用性保证均由云提供商负责,使得用户不必构建自己的数据中心,降低了用户的成本。然而云存储技术给人们带来极大存储便利的同时,也带来了一定的安全问题。其中数据完整性是用户面临的重大安全性挑战之一。由于数据的位置和组织方式对用户是透明的,在云平台和云服务提供商不完全可信的云存储环境中,存放在云端服务器上的数据极有可能被恶意攻击者删除、篡改、污染,或者由于云存储服务器的损坏、崩溃造成存储数据的丢失。
用户希望保存在云存储服务器端的数据犹如保存在本地一样,能确保数据不被破坏或丢失,在任何时间用户都能够访问到数据。但现有的云存储系统普遍缺少对数据进行有效的数据完整性保护,用户无法得知存储在云端的数据是否完整,一旦数据损坏或丢失,那么损失最大的就是云存储用户。因此有必要从用户角度研究和设计完整性保护方案,由用户主动对其存储在云端的数据进行完整性进行验证,一旦发现数据完整性遭到破坏,能够马上对受损数据进行恢复,确保用户数据的完整性。完整性保护方案尽管不能完全避免数据被破坏的风险,但可以在一定程度上降低用户因数据受损而造成的损失。
传统的完整性验证方法一般利用HMAC(Hash-based Message AuthenticationCode)为文件进行哈希运算产生一个消息摘要对数据继续完整性验证,但这种方法须将数据下载到用户本地,这种方式不仅消耗大量的网络带宽,也会耗费用户很多的时间与精力,显然不是很好的方法。云存储环境中的完整性验证与传统的完整性验证方法不同,当用户使用云服务器提供的存储服务时,因为用户本地并不保存数据副本,因此服务器上的数据就尤为重要。同时,很多传统的完整性保护方案针对单一服务器进行验证,当扩展到云存储环境中,会出现多个服务器合谋的可能,因此不能确保传统完整性验证方法在云存储环境中的安全性。
针对应用场景,云存储完整性保护可以分成两类:静态数据的完整性保护和动态数据的完整性保护。前者适用于用户存储在云存储上的数据一经写入便不会对数据进行动态更新操作(包括插入、修改和删除)的场合,如档案、图书的存储等。然而,现在越来越多的应用需求是用户对存储在云上的数据进行频繁插入、修改、删除等操作,在数据进行动态更新时,要求数据动态更新带来的开销尽可能小,动态数据完整性保护方案由此被提出。在云环境下不能将适用于静态数据的完整性验证方法直接运用在动态数据的环境里,因为一旦更新数据,便需要对相应的检验标签或纠删码等进行重新计算,产生巨大的计算和通信开销,除了数据更新带来的各种验证数据、校验数据变化以外,动态场景下还要考虑更为复杂的安全风险,比如重放攻击等恶意攻击,因此很多适用于静态场景的完整性验证方法并不适用动态场景。因此云存储环境下的动态数据完整保护性问题就变得更加具有挑战性。
针对云存储环境下用户数据不在本地存储的特殊性,用户在不需要下载原始数据的情况下,就能够对数据的完整性进行验证的方法,则能够很好的适用于云存储环境。目前在这一领域也有了诸多研究。
PDP方案与POR方案是较早提出来的两篇远程完整性验证的文章,这两篇文章的提出为以后的云存储完整性保护方法提供了很好的借鉴意义。Ateniese在2007年提出PDP(Provable Data Possession,PDP)方案,方案中有客户端和服务器两个角色。客户端可对存储在不可信的服务器上的文件进行完整性校验。由于校验时采用挑战应答协议,只抽样检查了某些文件块,且他们的标签具有同态性可以相互叠加,客户端和服务器之间的交互数据近似为一个常量,极大减少完整性验证网络开销,因此支持分布式系统中的大数据集检测。校验时双方的计算量也较小,且允许进行无限次的校验。但方案在数据更新时不能抵抗重放攻击,另外此方案是使用在单服务器的场景,若扩展到多服务器场景下,多个服务器可以共谋。
Juels等人在2007年第一次提出了POR(Proofs of Retrievability)方案。POR方案与PDP方案相比,可以对检测出来的受损数据进行恢复。POR方案使服务器能够向客户提供数据完整性的证明,并能够通过纠错码技术对受损的数据进行恢复,这意味着客户可以以很高的概率从服务器取回完整的原先所存放的数据,并且计算开销、通信开销、存储开销都很小。由于该方案因为编码和标签块的插入,会使文件的膨胀率达到15%,也使得POR只能用在加密的文件内容中,而且每校验一次文件的完整性就会消耗一批哨兵,所以POR方案只能支持有限次的完整性校验。自从PDP与POR方案首次出现以来,这两种方案的思路发展成了两类不同的完整性验证方法类别,前者可以检测数据不能够恢复数据,后者既可以检测数据又可以恢复数据。随后有多种应用在云存储环境中的完整性保护方案被提出。
Schwarz等人提出了使用纠删码与代数签名结合进行数据完整性验证的方案,对于纠删码的选择的限制并不严格,只要是基于异或的纠删码就可以,比如,Evenodd,X-code,代数RS码等等。使用到了同态的概念,代数签名的奇偶校验值等于奇偶校验值的代数签名,由此可以利用纠删码的特性来进行一致性判断,从而知道数据完整性是否遭到破坏。方案不用在用户端预先存储用于检验数据完整性的元数据,从而减小了元数据泄露或丢失的风险,方案是依靠纠删码与代数签名做一致性验证,只能检测出来参与验证的数据是一致的或不一致的,并不能错误的具体位置,另外方案只支持静态数据,一旦文件更新了,所有的纠删码都要重新计算。
HAIL方案将POR模型比较完整地拓展到了云环境中,在POR的基础上对各个存储节点再进行冗余编码来提高存储数据的抗破坏能力。POR可以验证文件是不是可恢复的,然而作为一个对一台服务器进行验证文件可恢复性的测试工具,POR价值是有限的。如果该文件的损坏是无法恢复的,用户也不再拥有这个文件的资源,那么检测出已损坏的文件并没有很大帮助。如果文件以跨多个服务器的冗余形式储存。通过POR,一个验证者(用户)可以在单个服务器上测试文件的可用性。如果它检测到一个给定的服务器数据被破坏,它可以联系其他服务器来恢复文件。方案是在存储节点之间进行数据一致性验证,并没有对单个存储节点进行验证,所以当进行完整性验证时,发现数据损坏,并没有有效的方法来进行具体的错误定位,只能使用蛮力法找,所以方案没有解决出错存储节点快速定位的问题。方案保护静态数据的完整性,不能进行数据更新。
2009年的IWQoS会议上Wang Cong等提出EDS2(Ensuring Data StorageSecurity)方案,方案依赖于预先计算的挑战码和签名保证数据存储的正确性和实现差错定位。此方法与前文我们提到的HAIL与代数签名的方案都是利用纠删码进行数据的一致性检测,但此方法与另两种方法相比较的优点就是其可以使用在数据动态变化的场景中。在对需要存储的数据进行纠删编码的同时,根据伪随机函数生成的值对各个数据块进行计算,以获得与函数密钥相对应的签名信息。当进行云数据完整性检测的时候,用户验证是否接收到的值仍然是由秘密矩阵P所决定的一个码字,如果这个等式成立,那么用户验证通过;否则说明在被挑战的行中,存在文件分块损坏。一旦发现验证数据不一致,就可以利用预先计算的签名来进一步决定数据错误的位置,这样可以快速进行错误数据的定位。方案可以高效的支持数据修改、删除与追加操作,修改后的数据块看作是原来的数据加上更改的数据。但是,该方案需要在客户端存放大量的事先计算好的检验值等元数据,存在一定的安全隐患和不必要的存储开销,因为方案是基于预先计算挑战码和签名对数据完整性进行验证,因此在这些预先计算过的挑战码和签名用完之后,就不能保证服务器端数据的完整性了,故只能做有限次检测。方案可以高效的支持数据修改、删除与追加操作,但是不能高效的支持数据插入操作,这是插入操作将导致以索引j为起始的所有分块向后移一个位置。一个插入操作将影响到逻辑数据文件矩阵F当中的许多行,并将引起所有后续分块的重新编号和挑战码以及对应签名的重新计算。
Zheng等人提出的FDPOR(Fair and dynamic proofs of retrievability)。方案是对CPOR的改进,由于CPOR处理的是静态数据,当把CPOR用在动态数据上时是不安全的,方案分析了为何CPOR在文件动态更新的场景下不安全,并提出了一种安全的解决方案。另外方案是动态POR,使用了range-based2-3trees(rb23Tree for short)的数据结构来支持动态更新的问题,如图1所示。图1中,将每一个数据分块的哈希值作为叶子节点组织起来,目的是在数据动态更新时能进行路径验证以抵抗云存储服务器的重放攻击,并由于是树形结构在更新时只会局部改变数据使得服务器端与用户端的计算开销减小同时增快索引速度,这点在数据动态更新场景中尤为重要。作者还引入了一个新的属性叫做fairness,这个特性是在方案支持了动态更新以后才出现的。方案首次提出Fairness,为了防止不诚实用户操控诚实的服务提供者来修改数据。另外首次使得POR可以应用在数据更新的场景中。方案存在的问题是在验证时需要对全部数据块数据进行哈希值计算并需存储验证标签,导致对一个数据块的部分数据挑战也要计算全部数据的哈希值且保存验证标签占用了不必要的存储开销的问题;在数据恢复方面方案将错误纠正码(ECC)应用在数据块内部的粒度,虽然有一定恢复能力,但是恢复能力和恢复范围有待改进。
纠删码技术被广泛应用于各种存储系统中,其主要是通过纠删码算法将原始的数据进行编码得到冗余,并将数据和冗余一并存储起来,以达到容错的目的。其基本思想是将k块原始数据通过一定的编码计算,得到m块冗余。对于这k+m块的元素,当其中任意的m块元素出错(包括数据和冗余出错)时,均可以通过对应的重构算法恢复出原来的K块数据。以上的EDS2、HAIL方案中均使用了纠删码,FDPOR方案中使用了ECC(error-correcting code),ECC相比纠删码,实现较为简单,但恢复能力有限。
RS纠删码,首先由Reed和Solomon于1960年提出。应用于存储系统中的RS码编码简单描述如下:将n个原始数据块编码生成n+m个数据块,将n+m个分块分发到网络中的节点,其中新生成的m块数据为冗余数据,编码后的数据具有m个数据块的容错能力,当其中任意t(t≤m)个数据块丢失,都可以通过余下的k个分块进行恢复。RS码编码方式使数据拥有者能够在不超过m个节点失效的情况下恢复原始数据。RS码的编码算法是代数的,因此RS码的编码可以用矩阵和向量组的乘法形式来表示。RS码同时也被称为最大距离可分码(MaximalDistance Separable,MDS),是达到了理论上最优的存储利用率的编码,可以用任意m个编码后的数据块恢复原始数据。
RS类纠删码根据其生成矩阵不同分为两类,范德蒙码和柯西码。范德蒙码的编码时间复杂度为O(n2),解码时需要对矩阵求逆,解码时间复杂度高于O(n2)。而柯西码的编码时间复杂度为O(n2),但是柯西码解码不用求大矩阵的逆。柯西RS编码使用柯西矩阵来代替范德蒙行列式,使得生成矩阵变得更为简单。同时,位运算转换方法可以对柯西RS编码中的乘法运算进行改进。经过简单的改造,柯西RS编码可以将GF(2w)域上的乘法运算转化成二进制的乘法运算。因此,整个RS编码的运算就可以转化成只包含异或的简单运算而且把乘法除法运算分别转化为有限域上的加法和减法运算,可用异或实现。因此,柯西码运算复杂度低于范德蒙码。
在本发明中,我们将基于FDPOR方案,对该方案进行改进和完善,提高数据恢复能力和完整性验证效率,节省存储标签等验证数据造成的不必要的存储开销。
发明内容
动态完整性保护方案FDPOR(Fair and Dynamic POR)是目前云存储完整性保护方面的重要研究成果之一,该方案采用基于范围的2-3树算法和针对数据块进行数字签名的方法实现了数据完整性保护的动态性与公平性,但方案在数据可恢复性、完整性验证等方面均存在不完善之处。本发明针对FDPOR方案的不足进行改进,在FDPOR基础上,提出了一种云存储环境下的动态数据完整性保护方案——ECAS-FDPOR(Erasure Code and AlgebraicSignatures-FDPOR),从用户角度对存储在云端的动态数据进行完整性验证,当数据损坏时能够对受损数据进行一定程度的恢复。
本发明基于FDPOR方案,结合2-3树的特性,研究针对动态数据的完整性验证方法。提出了一种基于纠删码和代数签名技术的动态数据完整性保护方案——ECAS-FDPOR。本发明从用户角度对存储在云端的动态数据进行完整性验证,当数据损坏时能够对受损数据进行一定程度的恢复。用户存储数据时,先对文件进行分块并进行纠删编码,对冗余校验码进行加密后连同分块的文件上传到云端。验证时由用户向云端发起挑战,由云端计算挑战内容所对应的代数签名并返回给用户,用户验证签名的一致性,一旦发现数据被破坏,可以从云端下载被破坏的数据块和对应的冗余校验码对其进行恢复。
方案概述:
方案的应用场景是在云平台和云服务提供商不完全可信的云存储环境中,用户通过云服务提供商提供的云存储服务将数据存放在云端。
1、用户是云存储服务的使用者,文件的拥有者。用户不完全信任云存储服务器(云端),不确定上传到云端的数据是否遭到损坏、篡改或丢失。用户的工作是通过与云存储服务器进行交互来进行文件上传、更新、验证与恢复,确保数据在云端的完整性并在发现数据不完整时通过恢复技术将其恢复。
2、云存储平台是云存储服务的提供者,不被完全信任,同时,云平台也要谨防是否有不诚实的用户骗取云存储上保存的数据,体现方案的公平性。云存储平台的工作是与用户进行交互完成存储数据并配合用户计算一些验证信息。
ECAS-FDPOR方案有四个组成部分,分别是文件上传、文件更新、文件验证、文件恢复。
1、文件上传
指用户将文件上传到云存储服务器之前所需要做的一些工作,以供数据完整性验证、数据更新验证与数据恢复之用。其中包括文件分块、计算一些附属信息、计算纠删码等一些预处理的操作。
在这一阶段,先生成一个公私钥对,这个公私钥对的作用是对文件进行数字签名,在以后的阶段用户与云存储服务器都互相验证以保证安全性,生成流置换的密钥,对下面生成的校验数据进行流置换加密,作用是防止服务器联合攻击破解纠删码编码结构导致文件验证阶段的不安全。之后将文件分块编号,并对每一个块进行纠删码编码,生成块内冗余校验码,并对每一个分块计算哈希值,将哈希值保存成一个基于范围的2-3树,根据树形结构,将对应的一个分支树的分块进行纠删码编码,生成块间冗余校验码,将纠删码与树形结构很好的结合在一起。用私钥对文件块哈希值联接成的哈希值λ进行数字签名,用流置换密钥对块间冗余校验码进行加密。生成客户端附属信息与服务器端附属信息,客户端附属信息保存在本地,包含文件块编号、私钥、流置换密钥和树的信息;服务器端附属信息要上传到云端,包含文件号、处理后的文件(包含校验数据)、公钥、树的信息、数字签名。注意每个分支树y的原始数据与冗余校验码不存储在一个服务器上,将相关信息(也就是一组纠删码计算得出的冗余校验码与原始数据)尽量分散存储,以便一个服务器崩溃还有其他服务器上的完好数据将丢失数据恢复。
改进方案与原方案的不同之处是在原有范围2-3树算法的基础上提出基于纠删码的范围2-3树算法,在2-3树中增加冗余校验码的映射信息以实现纠删码动态局部更新,避免了每次数据更新都必须重算全部校验数据,使得引入纠删码后带来的系统开销尽可能小;在数据块之间与数据块内部计算两种粒度的纠删码,提供两种粒度的灵活冗余保护;对冗余校验码进行流置换加密以抵抗文件验证时服务器合谋攻击。
2、文件更新
指用户将文件已传到云存储服务器,对上传到云存储服务器上的文件进行一些更新的操作,在进行这些更新操作时,需要先进行用户与云存储管理节点双方验证以保证两方都是诚实的,再进行数据与纠删码的更新,之后进行附属信息的更新。更新操作包括:
a)插入操作
b)删除操作
c)修改操作
在文件更新阶段首先用户与云平台要进行两方面的验证,一方面是进行基于纠删码的范围2-3树的验证,当用户向云存储管理节点发送要更新的分块索引时,管理节点返回分块的路径,由用户验证云端保存的树形信息与用户端保存的树形信息是否一致,两者持有的是否是同一棵树。进行验证的原因是由于存储在云存储节点上的更新前后的树形结构都是正确的,不诚实的云端节点可能会使用之前的树形信息通过验证,所以用户在进行每一次数据更新之前都要对云端树形结构进行验证,防止云端利用旧版本的树形信息进行重放攻击。
另一方面的验证是进行数据块的数字签名的验证,从公平性角度出发,云存储服务器在把数据块传给用户之前,也需要对用户进行验证确保用户是一个诚实的用户。实现的手段就是利用在文件上传阶段计算的数字签名,云端通过公钥验证签名的正确性。
当树形结构验证与数据块验证都无误后,云存储管理节点会把用户需要的数据块索引号对应的数据块发给用户,用户进行更新与重新计算纠删码并流置换加密校验数据后再传给云存储节点保存。
改进方案与原方案不同之处在于在更新阶段数据更新之后纠删码将重新计算,相应的映射信息也需要改变。在2-3树的树形结构中记录了数据块间冗余校验码逻辑地址的映射信息,因此如果树形结构改变,那么这个映射信息也要根据树形结构的变化做相应的改变。这里需要注意的一点是用户发给服务器的数据块索引号就是用户想要更新的数据块,在数据进行更新之后纠删码同样也需要更新,在一个数据块插入、删除以后,会引起树形结构的变化,一般来说,会有两种情况,一种就是不影响别的分支树,只在一个分支树内部出现变化,另外一种情况会影响旁边的一个分支,因此旁边分支的纠删码也需要重新编码,所以要根据更新操作的类型(插入、修改、删除)结合树形结构预先在用户端做返回的索引号判定,将最终将要涉及更改的数据块索引传给云存储管理节点。
3、文件验证
指用户已把文件上传至云存储服务器后,用户通过一些验证方法来验证一下存储在云端的数据是否遭到损坏、篡改或丢失,如图2所示。
在文件验证阶段,不同于FDPOR中基于标签的验证方法,而是使用了代数签名与纠删码结合的方法验证数据的完整性。用户随机选取将要挑战的数据的索引集合(x,n,s,y,c,α)发送给云存储管理节点,云存储管理节点将用户想要挑战的数据索引发给云存储服务器编号集合c和用户端地址对应的存储节点,由云存储节点计算挑战索引值对应的原始数据与该原始数据对应分支树的块间冗余校验码的代数签名,之后将签名返回给用户,用户对该块间冗余校验码的代数签名解密并利用纠删码生成矩阵计算签名一致性来验证数据完整性,一旦发现数据被损坏便通过数据恢复流程将数据恢复;其中x是起始偏移量,n是想要挑战的样本数量,s是一个纠删码码字,y是分支树的编号,c是服务器编号集合,α是计算代数签名的参数值。
相比原方法,所有验证值根据数据本身计算,无需事先存储任何验证标签等验证数据,节省了用于保存完整性验证数据所需的存储空间,同时也避免了验证信息丢失的安全风险。另外,此验证方法可以抵抗服务器合谋攻击、替换攻击,保证方法的安全性。
4、文件恢复
指当用户发现文件中有数据不完整,通过文件上传阶段计算出来的数据块内与数据块间冗余校验码对受损数据进行两种形式的恢复。
在文件验证流程结束后,当检测出数据不完整时,我们需要进一步的错误定位。用户取回有损坏数据的那一个分支树上的数据,通过对这几个数据块的哈希值进行对比从而定位出错误出现在某些具体的数据块上。如果只定位到某一个数据块有错误以后,则先用这个分块内部的纠删码对其进行纠错恢复;若数据的损坏率超过了分块内部纠删码的恢复能力,则用数据块间的纠删码对其进行纠错恢复。
与原方案相比,本方案增加了文件恢复阶段,并使用两种粒度的纠删码对文件进行恢复。
下面将详细说明上述创新点:
1、基于纠删码的局部动态数据校验方法
(1)引入纠删码
ECAS-FDPOR方案中引入纠删码,解决了FDPOR方案在一个数据块内部使用ECC恢复能力有限的问题。ECC一次编码能纠正单比特错误和检测双比特错误,但对1比特以上的错误无法纠正,对2比特以上的错误不保证能检测。纠删码相比ECC有更好的纠错与恢复能力,只要不多于冗余块数量的数据块损坏都能将其恢复。
本文选择柯西RS码作为ECAS-FDPOR方案的纠删码,因为RS码是唯一一个可以满足任意的数据磁盘数目和冗余磁盘数目的MDS编码;同时还是一个横式编码,生成的冗余校验码独立于数据条块,有很好的可扩展性性,管理方便;另外,柯西RS编码可以将伽罗华域上的乘法运算转化成仅包含异或的简单运算,效率高。
由于使用了纠删码,增加一定的存储开销,存储开销随着纠删码编码率的增加而加大,但是相比副本方式的冗余保护,纠删码的冗余校验码所占用的存储空间要小的多,另外,纠删码提供了优良的纠错与恢复能力,其增加的存储开销在可接受范围内。
(2)应用纠删码
为了增强数据受损后的恢复能力,将纠删码应用在一个数据分块的内部,同时也应用在数据分块之间,在两种场合中应用纠删码能够提供两种粒度的冗余保护。增加应用在数据块之间的纠删码,目的是加大纠删码分布粒度,好处是当一个数据块内部的数据损坏过多超过了数据块内恢复的范围时,可以利用数据块之间的冗余校验码将受损数据恢复。另外一个方面,原始数据与其对应的冗余校验码应分散存储在不同的云存储服务器上,即使一个服务器发生宕机等故障,还有其他服务器上的数据能够对丢失数据进行恢复。
对于纠删码的参数确定,数据块间的纠删码选用RS(3,1)、RS(2,1),原因是为了和2-3树的树形结构结合,在一个分支上有3个节点时选用RS(3,1),在一个分支上有两个节点时选用RS(2,1)。选择RS(6,2)作为数据块内部纠删码,对于一个数据块内的编码参数不受树形结构约束,因此无特殊限制,编码率越高则恢复能力越强,但同时占用的存储开销也越大。通过对纠删码RS(k,m)(k为原始数据,m为冗余数据)进行实验测试,k值保持不变时,随着m值增大文件的编码速度也越快,当m值一定时,k值越大则编码越快。通过对实验的测试结果分析,选用柯西RS(6,2)。
(3)纠删码支持动态数据局部校验
为了能够在引入纠删码的同时还能够支持数据动态更新,将数据块之间的纠删码应用在一个分支树的粒度,如图3所示,在数据第2层增加的阴影部分节点在逻辑上对应的是数据块间的冗余校验码,是对树的第2层节点为根节点计算每一个分支树上所有数据块之间纠删编码得到的。之所以把数据块之间的纠删码应用在一个分支树的粒度而不是整个文件的粒度是,是为了很好的平衡数据动态更新与纠删码恢复效率之间的矛盾。
在改进的情况下,一旦数据更新(数据修改、数据删除、数据插入),最好的情况是2-3树的结构没有变化(如有三个叶子节点,删除了一个叶子节点;或有两个叶子节点,插入了一个叶子节点),最坏的情况也只会影响旁边一个分支(如三个叶子节点插入了一个叶子节点会发生分裂;两个叶子节点,删除一个叶子节点会发生合并),尽管没有做到无需变动其他任何数据,但能够在引入了块间纠删码的同时最大限度的减少对树形结构的改变,较好的达到了数据动态更新所带来开销尽量低的要求。
对FDPOR进行的上述改进涉及文件上传、文件更新阶段,由于ECAS-FDPOR方案中加入了纠删码,相比原方案增加了文件恢复阶段,在文件恢复阶段完成的功能是对文件验证阶段过程中检测发现的损坏数据进行恢复,鉴于文件恢复与文件验证算法的关联较大,因此将在基于纠删码和代数签名技术的完整性验证方法中详细论述。下面将对应FDPOR方案中的文件上传、文件更新阶段论述具体改进做法:
文件上传阶段
在文件上传阶段,首先需要在文件F分成n个数据块,即F=(F1,…,Fn)之后增加生成纠删码的冗余校验码的流程并替换原方案中的一些流程:
1)对每个数据块Fi内部数据应用纠删码,生成的冗余校验数据为Pi,Fi'为内部纠删编码后的文件块,i=(1…n);
2)对Fi'计算hash值:Hi=h(Fi');
3)生成基于纠删码的范围2-3树:对于n个数据块组成的集合F'={F1',…,Fn'},我们要构建一棵基于纠删码的范围2-3树。rb2-3树构建方式参考FDPOR,树的节点用v来表示,每一个节点储存(l(v),r(v),x(v)),l(v)是节点v的高度;r(v)是节点v的范围值;x(v)是节点v的认证值。
改进算法是在每一个节点存储4个值(l(v),r(v),x(v),p(v)),p(v)存储的是数据块之间的冗余校验码的哈希值信息。
·如果l(v)=2,定义p(v)=h(p(c1,c2,c3)),c1、c2、c3是内部节点v的从左到右的三个孩子(当节点v只有2个孩子c1,c2时,c3=null),p(v)表示的意义是对数据块间的冗余校验码计算哈希值,可以对数据块间的冗余校验码进行验证,看其是否遭到损坏,作用是在数据完整性验证过程进行出错数据的快速定位。
·当l(v)不等于2的时候,定义p(v)=0。
另一个改进是对基于范围的2-3树的改进,增加数据块间的冗余校验码节点(即图3-4中的阴影节点),把它与树高为2的那层节点在逻辑上对应起来,因为树的第2层节点是通过叶子节点计算得到,对以第2层节点为跟的分支树对应的数据块间冗余校验码有相似的逻辑对应关系。在第2层节点中加入数据块间冗余校验码的逻辑-物理映射信息,目的是方便的检索到数据块间的冗余校验码。
4)对每一个分支树(假设分支树有z个)的节点进行数据块间的纠删编码,生成的校验数据P'由client用密钥Sj进行流置换(j=1,…z),生成P″,…,Pz
5)用户将F'=(F1'…,Fn',P1″,…,Pz″)上传到云存储服务器,P1″,…,Pz″与原始数据要分散存储。
文件更新
文件更新阶段,用户将要更新的叶子索引发送给云管理节点,由于ECAS-FDPOR方案中加入了数据块间的冗余校验码,所以需要预先判断用户想要进行的更新操作除了会影响想要进行更新的节点以外还会影响哪些节点,返回这些节点的索引。增加以下三个函数:
rb23Tree.JudgeM(T,i)
此函数允许用户判断对一个特定的叶子节点i进行数据更改操作会影响其他哪些节点的位置,返回叶子节点索引集合I。
判断更新节点在2-3树的哪一个分支上,返回该节点所在分支树上的所有节点和父节点索引。
rb23Tree.JudgeD(T,i)
此函数允许用户判断对一个特定的叶子节点i进行数据删除操作会影响其他哪些节点的位置,返回叶子节点索集合I。
判断更新节点在2-3树的哪一个分支上,
1.若该分支具有3个孩子,返回该节点所在分支树上的所有节点和父节点索引。
2.若该分支具有2个孩子,则探测其邻居分支
a)若存在有3个孩子的分支p,则节点i所在分支上的剩余节点优先加入只有3个孩子的分支,返回更新节点i所在分支上的所有节点与分支p上的节点和他们的父节点索引。
b)若只存在2个孩子的分支,节点i所在分支上的剩余节点加入2个孩子的分支,该分支更新后其父节点将减少1,此时在父节点上需要循环调用JudgeD方法直到其他情形出现,若最终达到root节点,该树树高-1,循环返回这个分支的节点与父节点索引。
rb23Tree.JudgeI(T,i)
此函数允许用户判断对一个特定的叶子节点i进行数据插入操作会影响其他哪些节点的位置,返回叶子节点索集合I。
判断更新节点在2-3树的哪一个分支上,
1,若该分支具有2个孩子,返回该节点所在分支树上的所有节点和父节点索引。
2,若该分支具有3个孩子,则该分支更新后会分裂成为2个分支,返回这个分支上的节点与父节点索引。并且由于会在叶子节点的上一层添加一个节点,需要递归判断上一层节点是否为本例情况中的1、2.情形,并对2情形做进一步递归调用,直到变为根节点为止,返回所有更新的分支上的节点索引。
对rb23Tree的修改、插入、删除算法做如下修改:
rb23Tree.M(T,i,e)
用户端将节点索引集合I发给云端,云端返回索引对应的数据给用户,用户更新的时候只更新他想要更新的节点i中的数据,更新完数据以后,节点集合I中其他的节点要和节点i中的数据一起重新进行纠删码编码;此算法允许用户更改树的第i个节点的值e,并正确的更新树T,修改步骤如下:
1)执行rb23Tree.M(T,i,e):将树的第i个叶子节点替换成一个新的值e,对数据e进行纠删码的计算,生成数据块内冗余校验码;
2)重新计算数据块内与数据块间冗余校验码;
3)更新r(vj)、x(vj)与p(v),j=1,…k,树用T'表示。
rb23Tree.I(T,i,e)
此算法允许用户在树的第i个节点后插入一个新的叶子,值为e,并正确的更新树T,执行步骤如下:
1)执行rb23Tree.I(T,i,e):在树的第i个叶子节点后插入一个新的叶子值为e,对数据e进行纠删码的计算,生成数据块内冗余校验码;
2)根据树形结构,重新计算数据块间冗余校验码,更新r(vj)、x(vj)与p(v),j=1,…k,树用T'表示。
rb23Tree.D(T,i)
此算法允许用户删除树的第i个节点,并正确的更新树T,修改步骤如下:
1)执行rb23Tree.D(T,i):删除树的第i个叶子节点;
2)根据树形结构,重新计算数据块间冗余校验码,更新r(vj)、x(vj)与p(v),j=1,…k,树用T'表示。
2、基于纠删码和代数签名技术的完整性验证方法
ECAS-FDPOR方案针对FDPOR中基于标签的验证方法需计算并保存所有数据块的验证标签并在验证时需对每一个数据块进行一次哈希值计算的问题进行了改进。改进的方法是结合纠删码的代数特性,利用代数签名的方法对用户存储在云端的数据进行完整性验证,这个方法是使用的SFC方案中的完整性验证方法。相比FDPOR方案,代数签名由云存储管理节点根据存储节点上保存的原始数据和冗余校验码计算产生,用户只需保存一个纠删码生成矩阵,而无需事先计算标签并节省不必要的存储开销。另外,通过对冗余校验码进行流置换加密,确保此验证方法可以抵抗服务器合谋攻击、替换攻击,确保完整性验证过程的安全性。验证是通过对分散存储在不同存储服务器上的纠删码的码字是否一致进行判断,因此每次验证会挑战多个存储服务器上的数据,如果检测出一个存储服务器上的数据块损坏,那么这个服务器上其他的数据块同时被损坏的概率是较大的,这时应重点检测这个服务器上的数据,有助于将焦点关注在更可能发生数据损坏的位置。
在ECAS-FDPOR方案中使用代数签名的方法要结合2-3树与动态数据的背景,每次挑战是对一个分支数对应的原始数据和冗余校验码进行挑战,因此需要对每一个分支数对应的冗余校验码进行流置换加密以抵抗服务器合谋攻击破解出纠删码的生成矩阵。ECAS-FDPOR方案对FDPOR方案的文件上传流程与文件验证流程做相应的变动并增加了文件恢复流程。
文件上传阶段
1)当数据块之间的冗余校验码计算完成以后,需要对数据块间的冗余校验码进行一次流加密运算,这样做的目的是为了在进行数据完整性验证时可以抵抗服务器联合攻击,以防攻击者破解纠删码的代数组合,将一个码字对应的数据篡改但保持数据内部一致。
2)对一个分支树(假设分支树有z个)的节点进行数据块间的纠删编码,生成的冗余校验码Pi'(i=1,…z),由用户用流加密密钥S进行流置换,生成P1″,…,Pz″。
文件验证阶段
算法描述如下:
1)用户选择一个索引集合(x,n,s,y,c),发给云存储管理节点,其中x是起始偏移量,n是想要挑战的样本数量,s是一个纠删码码字,y是分支树的编号,c是服务器编号集合。
2)云存储管理节点将用户想要挑战的数据索引与用户端地址发给云存储服务器编号集合为c对应的存储节点;
3)每一个云存储节点对第y分支树上的原始数据与块间冗余校验码计算代数签名,设D1,D2,D3为一个分支树上的三个叶子节点对应的真实数据,返回代数签名sig[D1],sig[D2],sig[D3],sig[P″]给管理节点。代数签名计算公式如下:sig[α]=(dx,dx+s,dx+2s,...,dx+(n-1)s),dk是数据块Fi的第k个字。
4)云存储节点将代数签名的结果返回给用户;
5)用户收到从云存储管理节点返回的代数签名,进行如下操作:
a)计算sig[S]⊕sig[Pi″](i=j),得到sig[Pi'];
b)计算parity(sig[D1]⊕sig[D2]⊕sig[D3]),即对D1,D2,D3的代数签名进行纠删码计算,得出代数签名的冗余校验码;
c)判断等式parity(sig[D1]⊕sig[D2]⊕sig[D3])=sig[P']是否成立。即代数签名的冗余校验码与冗余校验码的代数签名是否相同。如果等式成立,则数据完整,如果等式不成立,则数据不完整,转到文件恢复流程。
文件恢复阶段
算法描述如下:
1)在文件验证流程结束后,检测出数据不完整时,可以得到数据在这一个分支中是有错误的,但是具体在哪一个分支上出现错误还需要进一步的错误定位。因为数据恢复是要在用户端进行的,所以用户要取回检测有损坏数据的那一个分支树上的用户数据。
2)由于用户在一开始上传文件的步骤里保存了这个文件的树形结构,在树的每一个叶子节点里保存了数据分块的哈希值,因此对这个分支上的每一个数据块进行哈希值的快速计算,用户对哈希值进行比对从而进行错误定位。
3)如果只定位到某一个数据块Fi有错误以后,则先用这个数据块内部的纠删码Pi对其进行恢复;若数据的损坏率超过了数据块内部纠删码的恢复能力,则用数据块间的纠删码Pi'对其进行恢复。
4)用数据块间的纠删码对数据进行恢复的流程如下:
1)通过云存储管理节点从云存储节点上取回有损坏数据分支树对应的块间纠删码Pi″;
2)用流置换密钥S对其进行解密,得到Pi';
3)用Pi'与这个分支树上剩余的完好的数据块对损坏的数据进行恢复。
ECAS-FDPOR方案使用代数签名的方法,不用事先存储任何的标签,只需要用户保存一个流置换加密的密钥和纠删码生成矩阵,减小了存储标签的开销。同时,代数签名是十分小的数据,不会泄露原有的数据,同时能检测出比特级别的数据错误。对冗余校验码进行加密使用的是流置换加密,基于异或的运算,所以增加的计算开销是可以接受的。
与现有技术相比,本发明的积极效果为:
1、引入纠删码支持局部动态数据的校验,当数据损坏时通过纠删码对其进行恢复,相比于原方案,增强了数据受损后的检错和纠错能力。通过在2-3树中增加冗余校验码的映射信息实现了纠删码局部动态更新,使得引入纠删码后带来的系统开销尽可能小。同时,将纠删码应用于数据块内部和数据块之间两种场合,提供两种粒度的冗余保护,根据受损数据量灵活选用适当的恢复方法。利用了云存储的分布式存储优势,将原始数据与冗余数据分散存储,增加恢复数据的机率。
2、结合纠删码的代数特性,利用代数签名的方法对用户存储在云端的数据进行完整性验证,当文件损坏或遭到篡改时,用户可以检测出异常。相比原方案,代数签名由云存储平台根据原始数据和冗余校验码计算产生,用户只需保存一个纠删码生成矩阵,而无需事先计算并保存所有数据块的验证标签,节省不必要的存储开销。另外,通过对冗余校验码进行流置换加密,确保此验证方法可以抵抗服务器合谋攻击、替换攻击,确保完整性验证过程的安全性。
附图说明
图1为FDPOR方案中rb2-3树结构;
图2为文件验证示意图;
图3为基于纠删码的范围2-3树;
图4为系统物理组成结构;
图5为原型系统组成结构。
具体实施方式
方案中有两个角色,用户与云存储平台。用户负责对文件进行预处理等操作,将文件上传到云存储服务器,与云平台交互更新数据、验证数据等。云存储平台由一个云存储管理节点与多个存储节点组成,云存储管理节点负责对用户的文件进行管理,文件的所有元数据都保存在管理节点上。云存储节点负责存储用户的数据并负责计算指定数据的代数签名。系统物理组成结构如图4所示。
·用户
用户就是文件所有者,在文件上传阶段负责对文件进行分块、进行块内与块间的纠删码编码、对校验数据加密、对数据块计算数字签名;在文件更新阶段,验证云存储平台是否正确的更新了数据并重新计算数据更新后的纠删码;在文件验证阶段,要对云存储平台发起挑战,并对服务器端返回的签名进行验证;在文件恢复阶段,要进行错误的定位并用纠删码进行恢复。
·云存储平台
云存储管理节点负责接受用于请求并管理用户的数据,保存文件的一些元数据信息等,当用户发送请求时,如对文件进行更新操作或验证数据完整性等操作进行回应,生成数据完整性证明等数据返回给用户,同时,当数据更新时,要对附属信息进行更新等操作。云存储节点负责存储数据,同时其也有一定的计算能力,可以进行一些常规的计算。
原型系统由四部分组成:文件上传子系统、文件更新子系统、文件验证子系统和文件恢复子系统。其中文件上传子系统和文件更新子系统是在原有云存储相应的两个子系统的基础之上通过增加完整性保护模块而实现的,通过这两个子系统为用户提供支持完整性保护的文件上传和更新工具。文件验证子系统和文件恢复子系统是云存储系统中为实现数据完整性保护而增加的子系统,通过这两个子系统为用户提供对文件完整性进行验证工具和对已破坏数据进行恢复工具。以上四个子系统均设计为C/S架构,由客户端模块和服务器端模块组成。四个子系统的组成如图5所示。用户端主要由文件存储、文件更新、文件验证、文件恢复等四个模块组成,用户通过这四个模块,与云平台互相通信,完成对文件的各种操作、对文件完整性的验证的对已破坏数据进行恢复操作。云平台模块由管理节点上的管理模块、更新模块、验证模块、恢复模块和存储节点上的存储模块、计算模块组成。图中验证模块、恢复模块是ECAS-FDPOR方案在云平台新增的模块,验证模块、恢复模块、计算模块是对云平台原有模块进行修改、增加部分内容。各个子系统所用到的模块如表1所示:
表1各子系统所用模块示意图
用户端与云平台的各个模块功能如下:
·用户端模块
1、文件上传模块
用户把文件上传到云存储服务器之前,需要对文件进行与处理操作,包括将文件做纠删码编码,对每个数据块计算哈希值,对纠删码生成的校验数据加密等,之后上传文件和服务器附属信息给云平台管理模块。
2、文件更新模块
用户将要更新的节点索引发送给服务器端,验证服务器返回的路径是否正确,正确则生成哈希值给服务器,经云平台管理节点的验证模块验证后将更新数据并计算纠删码,由管理节点返回存储地址,用户将数据存储在存储节点上。
3、文件验证模块
用户发送挑战数据索引给云存储管理节点,计算由云平台返回的代数签名是否匹配,若不匹配,调用文件恢复模块。
4、文件恢复模块
用户将有错误数据的分支树节点对应的数据块下载到本地,对其进行哈希值的计算并对比,定位错误数据并对受损数据进行恢复。
·云平台模块
1、管理模块
云存储管理节点收到了存储文件与附属信息的请求后,会管理并存储文件的元数据,确定文件数据块到存储节点的映射并将其记录在2-3树中,接收用户请求并判断请求类型调用其他相应的模块。
2、更新模块
返回索引对应的路径给用户,通过用户端文件验证模块的验证,若通过用户的验证,将对应的数据块返回给用户。
3、验证模块
进行两种验证,一个是数据完整性的验证,根据索引调用存储模块,将存储模块的计算出来的代数签名结果返回给用户;另外一种验证是验证用户传来数据块是否正确,实现公平性。
4、恢复模块
用户请求恢复数据时,由管理模块调用恢复模块进行文件恢复。
5、存储模块
存储模块位于云平台存储节点上,由管理节点的管理模块接收到用户存储数据的请求以后调用,将数据存储在存储节点上
6、计算模块
计算模块同样位于云平台存储节点上,当管理节点请求为指定数据计算数据签名时,该模块将计算数据签名并将结果返回给管理节点。

Claims (12)

1.一种面向用户的云存储数据完整性保护方法,其步骤为:
1)文件上传:用户端将文件分块编号,对每一文件块进行纠删码编码,生成块内冗余校验码;计算每一文件块哈希值,将哈希值保存成一个基于范围的2-3树,将这些哈希值联接成一个值并用私钥对其进行数字签名;并根据树形结构对文件块进行纠删码编码,生成文件块之间的块间冗余校验码,用流置换密钥对块间冗余校验码进行加密;用户端本地保存文件块编号、私钥、流置换密钥和2-3树信息,并生成云端附属信息上传到云端,云端附属信息包含文件块编号、数字签名、纠删编码后的文件、公钥、2-3树信息;所述纠删编码后的文件包括原始文件、块内冗余校验码和加密后的块间冗余校验码;
2)文件验证:用户端将文件验证请求发送给云存储管理节点,云存储管理节点根据该文件验证请求中包含的云存储服务器编号,将请求发送给对应的云存储服务器,由云存储服务器计算对应的原始数据及其与原始数据对应的块间冗余校验码的代数签名,之后将该代数签名返回给用户端进行数据完整性验证,如果发现数据损坏则进行步骤3);
3)文件恢复:用户端根据2-3树信息从云端获取包含损坏数据的分支树上的所有文件块,通过对这些文件块的哈希值进行对比定位出错误所在的文件块,并用该文件块的纠删码对其进行纠错恢复,如果无法恢复,则从云端获取该分支树的块间冗余校验码对其进行纠错恢复。
2.如权利要求1所述的方法,其特征在于所述2-3树的节点用v来表示,每一个节点储存(l(v),r(v),x(v),p(v));l(v)是节点v的高度;r(v)是节点v的范围值;x(v)是节点v的认证值,p(v)是文件块之间的冗余校验码的哈希值信息;其中,如果l(v)=2,则p(v)=h(p(c1,c2,c3)),c1、c2、c3是节点v的从左到右的三个孩子,当节点v只有2个孩子c1,c2时,c3为空;如果l(v)不等于2,则p(v)=0。
3.如权利要求1或2所述的方法,其特征在于所述2-3树中设有冗余校验码节点,其与2-3树中高为2的那层节点在逻辑上对应。
4.如权利要求1或2所述的方法,其特征在于采用RS(3,1)、RS(2,1)纠删码计算生成所述块间冗余校验码;选择RS(6,2)纠删码计算生成所述块内冗余校验码。
5.如权利要求1所述的方法,其特征在于所述文件验证的方法为:
51)用户端将文件验证请求(x,n,s,y,c,α)发给云存储管理节点;其中,x是起始偏移量,n是想要挑战的样本数量,s是一个纠删码码字,y是分支树的编号,c是服务器编号集合,α是计算代数签名的参数值;
52)云存储管理节点将该文件验证请求与用户端地址发给云存储服务器编号集合c对应的存储节点,然后每一云存储节点对第y分支树上的原始数据及其块间冗余校验码进行代数签名的计算,并将该代数签名的结果返回给该用户端;
53)该用户端根据收到的该代数签名对这个分支树上的数据进行数据完整性验证,判断数据是否有损坏。
6.如权利要求1所述的方法,其特征在于所述从云端获取该分支树的块间冗余校验码对其进行纠错恢复的方法为:通过云存储管理节点从云存储节点上取回有损坏数据分支树对应的块间冗余校验码Pi'';然后用流置换密钥S对其进行解密,得到Pi';然后用Pi'与该分支树上剩余的完好数据块对损坏的数据进行恢复。
7.如权利要求1或2所述的方法,其特征在于当用户端更新上传的文件时,用户端与云端进行两方面的验证:一方面对该2-3树的树形结构验证,即该用户端向云存储管理节点发送要更新的文件块索引,云存储管理节点返回该文件块的路径,由用户端验证云端保存的树形信息与用户端保存的树形信息是否一致,如果一致则验证通过;另一方面是对文件块的数字签名的验证,用户端将更新后的数字签名发送给云端,云端通过公钥验证该签名的正确性;当两方面验证均通过后,云存储管理节点将该用户端需更新的文件块索引号对应的文件块发给该用户端进行更新,然后将重新计算后的块内冗余校验码和加密后的块间冗余校验码传给云端保存。
8.如权利要求7所述的方法,其特征在于所述更新为对文件块进行修改处理,其方法为:首先用户端确定更新文件块对应的节点在该2-3树的分支,返回该分支上的所有节点和父节点索引,得到一节点索引集合I;然后将该节点索引集合I发送给云端,云端返回对应的文件块给该用户端,用户端选取节点i对应的文件块进行更新后,对更新后的文件块进行纠删码的计算,生成块内冗余校验码;然后对索引节点集合I对应的文件块进行纠删码编码,生成文件块之间的块间冗余校验码;然后将更新后的2-3树信息本地更新并发送给云端进行更新。
9.如权利要求7所述的方法,其特征在于所述更新为对文件块进行删除处理,其方法为:首先用户端确定删除文件块对应的节点i所影响的节点索引集合I;然后删除该节点i,对索引节点集合I对应的文件块进行纠删码编码,生成文件块之间的块间冗余校验码;然后将更新后的2-3树信息本地更新并发送给云端进行更新。
10.如权利要求9所述的方法,其特征在于确定所述节点索引集合I的方法为:根据该节点i在该2-3树的分支,若该分支具有3个孩子,则返回该节点所在分支树上的所有节点和父节点索引;若该分支具有2个孩子,则探测其邻居分支:若存在有3个孩子的分支p,则更新节点i所在分支上的剩余节点优先加入只有3个孩子的分支,返回节点i所在分支上的所有节点与分支p上的节点和他们的父节点索引;若只存在2个孩子的分支,节点i所在分支上的剩余节点加入2个孩子的分支,该分支更新后其父节点将减少1,此时在父节点上循环进行文件块删除处理直到其他情形出现,若最终达到该2-3树的根节点,该2-3树树高-1,循环返回这个分支的节点与父节点索引。
11.如权利要求7所述的方法,其特征在于所述更新为对文件块进行插入处理,其方法为:首先用户端确定对该2-3树的节点i进行文件块插入操作所影响的节点索引集合I;然后在该节点i后插入一个新的叶子值为e,对数据e进行纠删码的计算,生成块内冗余校验码;然后对索引节点集合I对应的文件块进行纠删码编码,生成文件块之间的块间冗余校验码;然后将更新后的2-3树信息本地更新并发送给云端进行更新。
12.如权利要求11所述的方法,其特征在于确定所述节点索引集合I的方法为:首先判断该节点i在该2-3树的分支,若该分支具有2个孩子,返回该节点所在分支树上的所有节点和父节点索引;若该分支具有3个孩子,则返回这个分支上的节点与父节点索引,并且递归判断上一层节点,直到根节点为止,返回所有更新的分支上的节点索引。
CN201410350589.8A 2014-07-22 2014-07-22 一种面向用户的云存储数据完整性保护方法 Expired - Fee Related CN105320899B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410350589.8A CN105320899B (zh) 2014-07-22 2014-07-22 一种面向用户的云存储数据完整性保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410350589.8A CN105320899B (zh) 2014-07-22 2014-07-22 一种面向用户的云存储数据完整性保护方法

Publications (2)

Publication Number Publication Date
CN105320899A CN105320899A (zh) 2016-02-10
CN105320899B true CN105320899B (zh) 2018-01-09

Family

ID=55248262

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410350589.8A Expired - Fee Related CN105320899B (zh) 2014-07-22 2014-07-22 一种面向用户的云存储数据完整性保护方法

Country Status (1)

Country Link
CN (1) CN105320899B (zh)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106611136A (zh) * 2016-07-01 2017-05-03 四川用联信息技术有限公司 云存储中一种数据篡改验证方法
CN106612171A (zh) * 2016-07-14 2017-05-03 四川用联信息技术有限公司 云存储中一种数据软恢复方法
CN109074295B (zh) * 2016-07-29 2022-07-05 惠普发展公司,有限责任合伙企业 具有真实性的数据恢复
WO2018024658A1 (en) * 2016-08-03 2018-02-08 Abb Schweiz Ag Method for storing data blocks from client devices to a cloud storage system
CN106254073B (zh) * 2016-08-09 2019-06-25 武汉理工大学 一种针对密文数的运算方法及系统
CN106874785A (zh) * 2017-01-13 2017-06-20 北京元心科技有限公司 多操作系统的系统文件访问方法及装置
CN106897368B (zh) * 2017-01-16 2020-03-24 西安电子科技大学 Merkle哈希求和树及其可验证数据库更新操作方法
CN109101360B (zh) * 2017-06-21 2020-11-20 北京大学 一种基于布隆过滤器和交叉编码的数据完整性保护方法
CN107454162A (zh) * 2017-08-01 2017-12-08 成都鼎智汇科技有限公司 一种提高云计算环境可靠性的系统
CN108647230B (zh) * 2018-03-29 2021-10-08 深圳市网心科技有限公司 分布式存储方法、电子装置及存储介质
CN108600201B (zh) * 2018-04-09 2021-11-02 东华大学 一种云存储完整性验证的数据标签的远程安全更换方法
US10901845B2 (en) * 2018-04-16 2021-01-26 Microsoft Technology Licensing, Llc Erasure coding for a single-image memory
CN110389715B (zh) * 2018-04-23 2021-07-09 杭州海康威视系统技术有限公司 数据存储方法、存储服务器及云存储系统
US11755499B2 (en) * 2018-05-31 2023-09-12 Secturion Systems, Inc. Locally-stored remote block data integrity
CN108881285B (zh) * 2018-07-17 2021-04-02 湖北理工学院 一种基于互联网网络安全的大数据实施控制系统
CN109145650B (zh) * 2018-08-07 2021-10-08 暨南大学 一种云环境下高效安全的外包大数据审计方法
CN109358977B (zh) * 2018-08-21 2020-12-22 中国科学院信息工程研究所 一种应用于云存储冗余性验证的方法及系统
CN109101842B (zh) * 2018-08-29 2020-09-08 厦门快快网络科技有限公司 一种安全的云备份系统及方法
WO2020042130A1 (zh) * 2018-08-31 2020-03-05 深圳大学 基于双云端的数据安全存储方法、装置、设备及存储介质
CN109194466B (zh) * 2018-10-29 2021-07-06 南开大学 一种基于区块链的云端数据完整性检测方法及系统
CN109743133B (zh) * 2018-12-25 2021-05-28 中国联合网络通信集团有限公司 数据对账方法及装置
CN111435323B (zh) * 2019-01-15 2023-06-20 阿里巴巴集团控股有限公司 信息的传输方法、装置、终端、服务器及存储介质
CN109889505B (zh) * 2019-01-23 2022-05-27 平安科技(深圳)有限公司 数据持有性验证方法及终端设备
CN111753313A (zh) * 2019-03-29 2020-10-09 神讯电脑(昆山)有限公司 验证码产生方法、资料验证方法及电子装置
CN110349313B (zh) * 2019-07-09 2021-09-21 江苏万贝科技有限公司 一种基于指纹锁的远程控制系统及方法
CN110851080B (zh) * 2019-11-04 2023-07-04 紫光云技术有限公司 多云盘平台的分布式存储管理系统
CN110908835B (zh) * 2019-11-11 2022-07-12 华中科技大学 一种分布式系统中支持私有标签的数据冗余方法及系统
CN110995734B (zh) * 2019-12-12 2020-12-15 深圳大学 基于纠错码的云存储审计方法、系统及计算机设备
CN111221569B (zh) * 2020-01-07 2023-07-25 中国联合网络通信集团有限公司 文档更新方法和服务器
CN111291046B (zh) * 2020-01-16 2023-07-14 湖南城市学院 一种计算机大数据存储控制系统及方法
CN111324914B (zh) * 2020-02-19 2022-08-26 中国建设银行股份有限公司 文件的传输方法、装置、服务器、设备和介质
CN111539870B (zh) * 2020-02-25 2023-07-14 成都信息工程大学 一种基于纠删码的新媒体图像的篡改恢复方法及装置
CN111475839B (zh) * 2020-04-06 2023-04-18 华中科技大学 一种用于不可信环境的冗余数据编码方法、存储介质
CN111444572B (zh) * 2020-04-30 2023-10-31 石家庄学院 一种三维地质模型创建方法、共享方法及创建装置
CN111586036B (zh) * 2020-05-06 2022-11-29 北京城建智控科技股份有限公司 一种去中心化的多云自审计方法及系统
CN111782623A (zh) * 2020-05-21 2020-10-16 北京交通大学 Hdfs存储平台中的文件校验修复方法
CN111611625B (zh) * 2020-05-26 2023-04-07 牛津(海南)区块链研究院有限公司 云端数据完整性审计方法、装置及计算机可读存储介质
CN111966638B (zh) * 2020-08-26 2022-06-07 北京工业大学 一种适用于工业云上的ida数据恢复的动态更新方法
US11405420B2 (en) * 2020-08-28 2022-08-02 Seagate Technology Llc Distributed secure edge heterogeneous storage network with redundant storage and byzantine attack resilience
CN111984322B (zh) * 2020-09-07 2023-03-24 北京航天数据股份有限公司 一种控制指令传输方法及装置
CN112187948B (zh) * 2020-10-09 2023-04-25 中国农业银行股份有限公司四川省分行 一种基于SpringBoot框架的审批文件加密批量上传方法及装置
CN112416878A (zh) * 2020-11-09 2021-02-26 山西云时代技术有限公司 一种基于云平台的文件同步管理方法
CN113301095B (zh) * 2020-12-08 2024-05-10 阿里巴巴集团控股有限公司 提供云端对象的数据的方法以及装置
CN112765617A (zh) * 2020-12-23 2021-05-07 北京连山科技股份有限公司 一种数据异地协同保护方法和系统
CN112769573B (zh) * 2020-12-26 2022-08-05 西安电子科技大学 一种基于grs码的数字签名方法、验签方法及其装置
CN112995130B (zh) * 2021-02-01 2022-04-22 山西风行测控股份有限公司 一种电力物联网数据传输系统
CN113259410B (zh) * 2021-04-07 2023-06-20 中国科学院计算技术研究所 一种基于分布式存储的数据传输校验方法及系统
CN113282798B (zh) * 2021-05-07 2022-03-25 广州中国科学院计算机网络信息中心 一种基于梅克尔树的标识资源版本验证方法及系统
CN113660202A (zh) * 2021-07-08 2021-11-16 武汉光庭信息技术股份有限公司 一种行车数据一致性校验方法及系统
CN113536356A (zh) * 2021-07-30 2021-10-22 海宁奕斯伟集成电路设计有限公司 数据验证方法和分布式存储系统
CN113553626A (zh) * 2021-08-04 2021-10-26 中科曙光国际信息产业有限公司 一种数据完整性检测方法、装置、设备及存储介质
CN113986121A (zh) * 2021-10-14 2022-01-28 北京师范大学珠海校区 一种数据安全存储与同步更新的自适应阈值调整方法
CN114422173B (zh) * 2021-12-09 2024-02-13 绿盟科技集团股份有限公司 一种基于可见光的数据传输的方法、系统和存储介质
CN114884713B (zh) * 2022-04-26 2024-05-10 中通服慧展科技有限公司 一种信息保护方法、装置、设备和介质
CN115865428B (zh) * 2022-11-15 2024-05-17 重庆邮电大学 基于信任值和纠删码的边缘数据存储和完整度验证方法
CN116340055B (zh) * 2023-03-28 2024-03-12 上海威固信息技术股份有限公司 一种固态硬盘的数据恢复方法及系统
CN117081726B (zh) * 2023-09-13 2024-03-19 浪潮数字(山东)建设运营有限公司 一种文件的分块分级传输方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102710757A (zh) * 2012-05-21 2012-10-03 北京航空航天大学 一种分布式云存储数据完整性保护方法
CN103268460A (zh) * 2013-06-20 2013-08-28 北京航空航天大学 一种云存储数据完整性验证方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102710757A (zh) * 2012-05-21 2012-10-03 北京航空航天大学 一种分布式云存储数据完整性保护方法
CN103268460A (zh) * 2013-06-20 2013-08-28 北京航空航天大学 一种云存储数据完整性验证方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种保护云存储平台上用户数据私密性的方法;侯清铧等;《计算机研究与发展》;20110731;第48卷(第7期);全文 *
面向云存储的用户数据安全机制研究;邓晓鹏;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140215(第2期);全文 *

Also Published As

Publication number Publication date
CN105320899A (zh) 2016-02-10

Similar Documents

Publication Publication Date Title
CN105320899B (zh) 一种面向用户的云存储数据完整性保护方法
Cao et al. LT codes-based secure and reliable cloud storage service
US11182247B2 (en) Encoding and storage node repairing method for minimum storage regenerating codes for distributed storage systems
Ateniese et al. Remote data checking using provable data possession
US9842222B2 (en) Securely rebuilding an encoded data slice
CN110784463B (zh) 一种基于区块链的文件存储和访问方法
EP3926476A1 (en) Aggregate ghash-based message authentication code (mac) over multiple cachelines with incremental updates
Tribhuwan et al. Ensuring data storage security in cloud computing through two-way handshake based on token management
CN110602147A (zh) 一种基于云平台的数据加密安全存储方法、系统和存储介质
Chen et al. Enabling data integrity protection in regenerating-coding-based cloud storage
CN106611135A (zh) 一种存储数据完整性验证及恢复方法
CN109101360B (zh) 一种基于布隆过滤器和交叉编码的数据完整性保护方法
CN104915609B (zh) 一种基于Lagrange插值法和多云的数据隐藏方法
CN106612171A (zh) 云存储中一种数据软恢复方法
CN107247643A (zh) 一种数据库管理方法、装置、系统、存储介质及设备
CN109104449B (zh) 一种云存储环境下的多备份数据持有性证明方法
JP2023531695A (ja) セキュアな秘密回復
US10853171B2 (en) Encoding data in a dispersed storage network
Guo et al. BFT-DSN: A Byzantine Fault Tolerant Decentralized Storage Network
CN116680665B (zh) 一种基于区块链技术的数字版权保护方法及系统
Jiang et al. Proof of Storage with Corruption Identification and Recovery for Dynamic Group Users
Hu et al. Redact4Trace: A solution for auditing the data and tracing the users in the redactable blockchain
CN117349860A (zh) 一种基于矩阵变化和数据切分的文件存储系统及方法
Feng et al. Robust/Recover Provable Data Possession Protocol
Ujloomwale et al. Data storage security in Cloud

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180109

Termination date: 20210722

CF01 Termination of patent right due to non-payment of annual fee