CN109101360A - 一种基于布隆过滤器和交叉编码的数据完整性保护方法 - Google Patents
一种基于布隆过滤器和交叉编码的数据完整性保护方法 Download PDFInfo
- Publication number
- CN109101360A CN109101360A CN201710472920.7A CN201710472920A CN109101360A CN 109101360 A CN109101360 A CN 109101360A CN 201710472920 A CN201710472920 A CN 201710472920A CN 109101360 A CN109101360 A CN 109101360A
- Authority
- CN
- China
- Prior art keywords
- blocks
- files
- tpa
- file
- data
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于布隆过滤器和交叉编码的数据完整性保护方法。本方法为:1)用户将文件传送给可信第三方服务器TPA;2)TPA对该文件进行分块并进行纠删编码得到分块的冗余校验码;然后记录该文件的分块信息并生成该文件的布隆过滤器;3)TPA将该文件分块及其冗余校验码上传到云端;4)当该用户通过TPA向云端发起挑战,TPA查找该文件对应的文件块,然后将挑战内容发送至云端;5)云端利用TPA发送过来的挑战内容计算该文件的文件块所对应的签名值并返回给TPA;6)TPA验证该文件的布隆过滤器是否满足各所述签名值的查询判断对应的文件块是否被破坏。本发明提高了数据恢复能力和完整性验证效率。
Description
技术领域
本发明提出一种云存储环境下的动态数据完整性保护方法——基于布隆过滤器和交叉编码的数据完整性保护方法,从用户角度对存储在云端的动态数据进行完整性验证以及恢复。在满足用户验证文件完整性的同时,保证能够对损坏的数据进行修复。本发明的技术领域涉及云存储系统,数据完整性,纠删码,布隆过滤器。
背景技术
在互联网时代不断发展的情况下,数据量增长迅速。用户对于数据存储的需求也在不断的提高。云存储服务作为一种新型存储技术是具有很大优势的,因为云存储服务具有安全可靠易扩展成本低等特点。有众多存储外包服务在用户中越来越普及,比如Azure和Dropbox等服务。这些云存储服务具备为用户提供随时随地存储访问任意规模数据的能力。然而云存储技术给人们带来极大存储便利的同时,也带来了一定的安全问题。其中数据完整性是用户面临的重大安全性挑战之一。因为云服务提供商可能是不可信的,用户不能够确定他们的数据是不是真正的完整,存放在云端服务器上的数据极有可能被恶意攻击者删除、篡改、污染,或者由于云存储服务器的损坏、崩溃造成存储数据的丢失。另一方面用户可能对存储在云端的数据进行频繁的更新,比如修改、添加、删除等操作。用户希望能够确保数据的正常更新。
但现在存在的云存储系统通常缺少对数据进行有效的数据完整性保护,用户无法确定存储在云端的数据是否真正的完整,如果数据出现损坏或丢失,对于用户来说可能损失是非常巨大的。因此从用户的角度考虑和设计完整性保护方案是非常有必要的,如果用户能够主动对存储在云上的数据进行完整性进行验证,如果发现数据被破坏,能够对损坏的数据进行恢复,从而确保了用户数据的完整性。虽然完整性保护方案不是完全避免了用户数据被破坏的风险,但能够在一定程度上降低用户因数据损坏而造成损失的风险。
传统的验证数据完整性的方法是采用数据签名或信息摘要签名等技术来实现的。但是在云环境下,如果用户在上传文件之前对文件进行计算签名并保存签名,在验证完整性的时候又将文件下载重新计算签名值来对比和本地保存的签名值是否匹配。这种方式是非常冗余的,对用户来说非常的不方便,且明显这种技术不适合应用在云环境下进行完整性检测。
目前针对云存储环境下的完整性检测,主要的理论方案分为数据可恢复性证明(Proofs of Retrievability,简称POR)和数据持有性证明(Provable Data Possession,简称PDP)。POR技术不仅能够判断出用户的云端存储文件是否受到破坏,而且能够在数据被损坏的情况下进行修复;PDP技术仅能够判断云端文件的完整性,不能够提供恢复的功能,不过PDP的验证效率比POR要高很多,在验证大文件的情况下PDP方法更加具备优势。
针对应用场景,云存储完整性保护可以分成两类:静态数据的完整性保护和动态数据的完整性保护。静态数据的完整性保护适用于用户存储在云存储上的数据一经写入便不会对数据进行动态更新操作(包括插入、修改和删除)的场合,如档案、图书的存储等。然而,现在越来越多的应用需求是用户对存储在云上的数据进行频繁插入、修改、删除等操作,在数据进行动态更新时,要求数据动态更新带来的开销尽可能小,动态数据完整性保护方案由此被提出。在云环境下不能将适用于静态数据的完整性验证方法直接运用在动态数据的环境里,因为一旦更新数据,便需要对相应的检验标签或纠删码等进行重新计算,产生巨大的计算和通信开销,除了数据更新带来的各种验证数据、校验数据变化以外,动态场景下还要考虑更为复杂的安全风险,比如重放攻击等恶意攻击,因此很多适用于静态场景的完整性验证方法并不适用动态场景。因此云存储环境下的动态数据完整保护性问题就变得更加具有挑战性,好在越来越多的PDP和POR方案开始考虑动态数据完整性保护的情景并取得了一定的进展。
对于PDP技术来说,Ateniese等人在2007年最早提出了形式化建模的PDP(Provable Data Possession,PDP)方案,同时给出了结合抽样概率和RSA的方法来进行远程文件的完整性验证思想,这带来的好处是能够明显降低计算开销和网络开销,实用性强。后来为了能够支持用户对远程文件的动态操作的需求,布朗大学的Erway等人通过使用特定的动态数据结构来解决这个问题并提出了DPDP方案。一种方案是基于基于等级的认证跳表的,而另一种是采用的RSA树的数据结构。和传统的PDP方案相比,DPDP方案的额外存储开销不明显,并且能够一定程度的支持数据的动态操作。后来Wang Cong等人提出了另一种支持动态操作的云端数据完整性保护方案,使用动态数据结构Merkle Hash Tree和双线性映射的PDP方案,这种方案和DPDP方案相比,具备更加灵活的动态更新过程,时间复杂度和空间复杂度得到了优化。
对于POR技术来说,Juels等人在2007年第一次提出的POR(ProofsofRetrievability)模型结合了伪随机抽样和纠删码的特点,通过挑战-应答的方式对远程数据进行完整性验证。POR方案与PDP方案相比,可以对检测出来的受损数据进行恢复。POR方案使服务器能够向客户提供数据完整性的证明,并能够通过纠错码技术对受损的数据进行恢复,这意味着客户可以以很高的概率从服务器取回完整的原先所存放的数据,并且计算开销、通信开销、存储开销都很小。由于该方案因为编码和标签块的插入,会使文件的膨胀率达到15%,也使得POR只能用在加密的文件内容中,而且每校验一次文件的完整性就会消耗一批哨兵,所以POR方案只能支持有限次的完整性校验。后来Shacham等人提出了不同思想但是可以实际运行的POR模型,即CPOR模型。该模型解决了传统POR的一些不足,能够支持用户无限次发起完整性挑战。Zheng等人提出的FDPOR(Fair and dynamic proofsofretrievability)。方案是对CPOR的改进,由于CPOR处理的是静态数据,当把CPOR用在动态数据上时是不安全的,方案分析了为何CPOR在文件动态更新的场景下不安全,并提出了一种安全的解决方案。另外方案是动态POR,使用了range-based 2-3trees(rb23Tree forshort)的数据结构来支持动态更新的问题,作者还引入了一个新的属性叫做fairness,这个特性是在方案支持了动态更新以后才出现的。方案首次提出Fairness,为了防止不诚实用户操控诚实的服务提供者来修改数据。另外首次使得POR可以应用在数据更新的场景中。方案存在的问题是在验证时需要对全部数据块数据进行哈希值计算并需存储验证标签,导致对一个数据块的部分数据挑战也要计算全部数据的哈希值且保存验证标签占用了不必要的存储开销的问题;在数据恢复方面方案将错误纠正码(ECC)应用在数据块内部的粒度,虽然有一定恢复能力,但是恢复能力和恢复范围有待改进。
自从PDP与POR方案首次出现以来,这两种方案的思路发展成了两类不同的完整性验证方法类别,前者可以检测数据不能够恢复数据,后者既可以检测数据又可以恢复数据。不断有多种应用在云存储环境中的完整性保护方案被提出。
纠删码技术被广泛应用于各种存储系统中,其主要是通过纠删码算法将原始的数据进行编码得到冗余,并将数据和冗余一并存储起来,以达到容错的目的。其基本思想是将k块原始数据通过一定的编码计算,得到m块冗余。对于这k+m块的元素,当其中任意的m块元素出错(包括数据和冗余出错)时,均可以通过对应的重构算法恢复出原来的K块数据。大部分POR技术都采用了纠删码技术。
RS纠删码,首先由Reed和Solomon于1960年提出。应用于存储系统中的RS码编码简单描述如下:将n个原始数据块编码生成n+m个数据块,将n+m个分块分发到网络中的节点,其中新生成的m块数据为冗余数据,编码后的数据具有m个数据块的容错能力,当其中任意t(t≤m)个数据块丢失,都可以通过余下的k个分块进行恢复。RS码编码方式使数据拥有者能够在不超过m个节点失效的情况下恢复原始数据。RS码的编码算法是代数的,因此RS码的编码可以用矩阵和向量组的乘法形式来表示。RS码同时也被称为最大距离可分码
(Maximal Distance Separable,MDS),是达到了理论上最优的存储利用率的编码,可以用任意m个编码后的数据块恢复原始数据。
RS类纠删码根据其生成矩阵不同分为两类,范德蒙码和柯西码。范德蒙码的编码时间复杂度为O(n2),解码时需要对矩阵求逆,解码时间复杂度高于O(n2)。而柯西码的编码时间复杂度为O(n2),但是柯西码解码不用求大矩阵的逆。柯西RS编码使用柯西矩阵来代替范德蒙行列式,使得生成矩阵变得更为简单。同时,位运算转换方法可以对柯西RS编码中的乘法运算进行改进。经过简单的改造,柯西RS编码可以将GF(2w)域上的乘法运算转化成二进制的乘法运算。因此,整个RS编码的运算就可以转化成只包含异或的简单运算而且把乘法除法运算分别转化为有限域上的加法和减法运算,可用异或实现。因此,柯西码运算复杂度低于范德蒙码。
本发明引入布隆过滤器降低完整性检测开销,并结合POR方案的恢复策略提出了一种效果优于传统的POR和PDP方案的发明,提高了数据恢复能力和完整性验证效率,节省存储标签等验证数据造成的不必要的存储开销。
发明内容
基于布隆过滤器和交叉编码的数据完整性保护方案是目前云存储数据完整性保护工作中的重要成果之一。本方案在传统的数据可恢复性证明(POR)和数据持有性证明(PDP)的方案上进行了改进。传统的完整性保护方法主要解决静态数据操作并且提供一些简单的恢复策略,或者是仅用于完整性检测不能实现完整性恢复。为了避免这些问题,让完整性保护方案更加高效实用。本发明从用户角度出发,对存储在云端的动态数据进行完整性验证并且能够在数据损坏时进行恢复。本发明引入基于纠删码的交叉编码恢复策略,能够有效减少不必要的网络带宽消耗。本发明提供一种动态存储表的轻量级数据结构用于支持动态的数据操作。在数据完整性验证过程中,本发明采用布隆过滤器来让本发明的方案更加实用高效。
本发明从用户角度对存储在云端的动态数据进行完整性验证,当数据损坏时能够对受损数据进行一定程度的恢复。用户存储数据时,首先将文件传送给可信第三方服务器(TPA),TPA对文件进行分块并进行纠删编码得到分块的冗余校验码同时更新布隆过滤器,对冗余校验码连同原始文件块一同上传到云端。验证时由用户向云端发起挑战即指出要进行完整性检测的文件,TPA通过动态存储表查找到文件对应的文件块,然后将挑战内容(主要包含这些文件块信息连同计算文件块签名值的程序)发送至云端,由云端利用TPA发送过来的文件块信息和计算程序来计算文件块所对应的签名值并返回给TPA,TPA验证布隆过滤器是否满足签名值的查询,一旦发现数据被破坏,可以从云端下载被破坏的数据块和对应的冗余校验码对其进行恢复,然后TPA将验证和恢复的结果返回给用户。
方案概述:
本方案的应用场景是在云存储环境下,用户通过云服务提供商提供的云存储服务将数据保存在云端,可信第三方TPA为用户提供完整性检测和完整性恢复的途径,当用户上传、下载、动态操作文件时,文件通过在可信第三方上进行处理然后保存到云服务提供商的服务器上;当用户需要验证文件是否完整时,可信第三方为用户检测文件,并在损坏情况下为用户修复损坏的文件。系统模型如图1所示。
1、用户是云存储服务的使用者,文件的拥有者。用户不完全信任云存储服务器(云端),不确定上传到云端的数据是否遭到损坏、篡改或丢失。用户的工作是通过与可信第三方TPA进行交互来实现文件上传、更新、验证与恢复,确保数据在云端的完整性并在发现数据不完整时通过恢复技术将其恢复。
2、云存储平台是云存储服务的提供者,不被完全信任,同时,云平台也要谨防是否有不诚实的用户骗取云存储上保存的数据,体现方案的公平性。云存储平台的工作是存储用户数据。
3、可信第三方TPA是被用户信任的第三方机构。当用户有文件操作时,可信第三方会辅助用户实现操作,帮助用户管理、保护数据文件。此外,可信第三方还负责存储文件的验证信息等。
本方案有三个创新点,用于支撑整个方案的可靠性和高效性。
下面将详细说明上述创新点:
1、交叉编码
本方案采用的交叉编码是基于RS纠删编码而提出的一种编码方式。其思想是构建一个交叉编码组,对编码组内水平和交叉方向的文件块进行纠删编码。具体来说,本发明假设用户想要上传一个文件F到云服务器S上。文件F经过预处理被划分为若干文件块b1,b2...bn。为了管理这些文件块,本发明假设将k个文件块划分为一个组,若最后一组文件块不足k个,可以在最后一组中填充若干空文件块以达到k个。每一区域包括m个文件块(即k=4m),比如12个块一个交叉编码组。本发明采用6-2RS纠删码的方式可以按照如图2所示方式对交叉编码组内的文件块进行编码。
可以看到本发明将12个编码块划分为四个区域,两个水平方向和两个交叉方向,分别对每个组内的12个编码块进行纠删编码,一共会生成8个冗余校验码。我们采用(2m-r)(2m是纠删编码的数据块数目,r是纠删编码的冗余块数目)RS纠删编码(如m=3,r=2)的方式进行编码则水平方向即为(xi,0<=i<=2m-1)和(yi,0<=i<=2m-1),交叉方向即为(xi,yi+3(0<=i<=m-1))和(yi,xi+3(0<=i<=m-1))。现在假设本发明重建一对损坏的数据块(xi,yi)时(其中xi,yi为两个不同水平方向上的数据块),如果采用传统RS纠删编码的恢复策略,需要利用其中4m(即12)个数据块来进行恢复,例如(xj,yj(j≠i))和(pk,pk+2)(0<=k<=r-1)。如果利用交叉编码的方式进行修复,本发明只需要利用3m(即9)个数据块(pk,pk+4)0<=k<=r-h和(xj,yh(j≠i,当0<=i<=m-h时,h≠m…2m-h,当m<=i<=2m-h时,h≠0…m-h))即可实现数据的重建,水平方向上利用数据块pk和xj(j≠i)采用纠删编码进行一次修复得到修复后的xi,交叉方向利用数据块pk+4和(xj,yh(当0<=i<=m-h时,m<=j<=2m-h,0<=h<=m-h,h≠i,当m<=i<=2m-1时,0<=j<=m-h,m<=h<=2m-h,h≠i))采用纠删编码进行一次修复得到修复后的yi。可以发现本发明的方案在一定程度上能够减少数据重建过程中的开销。
2、动态存储表
动态存储表是本发明提出的一种轻量级数据结构,其记录了数据块的基本信息,主要是为了支持数据的动态操作同时管理文件的数据块,本发明需要将动态存储表存储在可信第三方TPA上。动态存储表主要分为两部分,动态数据组表和动态数据块表,如图3所示。
动态数据组表用来管理每个动态组(即上面提到的一个交叉编码组),每个组内由固定数目的数据块组成,如12个数据块。每个动态数据组表指向对应的动态数据块表,动态数据组表和动态数据块表一一对应,动态数据块表中记录对应动态数据组表内的数据块和冗余校验码的基本信息,例如Blockindex表示块的逻辑位置;BlockSize表示块的大小;IsValid是一个重要信息,在后面动态操作时会具体说明,Isvalid用来代表一个块是否有效,即是否需要存储在云端。NextBlock是指向物理地址的下一个位置,PreBlock是指向物理地址的前一个位置。动态存储表是支撑动态数据操作的重要结构,虽然不同位置的数据块可能被分成不同的组,但是本发明可以通过NextBlock和PreBlock来找到一个文件块的前后文件块,来重建一个文件。所以在动态数据操作时,本发明只需要修改动态存储表中的部分信息来实现更新文件,而不需要做大量的修改。
3、布隆过滤器
以往的完整性验证模型是低效的或者开销非常大的。本发明方案中利用布隆过滤器来确保云储存中数据的完整性,确保方案的高效性和可行性。首先布隆过滤器是一个m比特的位向量,初始化为0。有一个由k个哈希函数构成的集合H,本发明假设每个输入都会经过一个哈希函数映射到索引为0-m-1的位向量上作为输出。在布隆过滤器上存在两种操作(i)插入操作,对每个输入利用k个哈希函数将每个映射的值置为1.(ii)查询操作,对每个输入利用k个哈希函数计算位向量对应索引的值是否为1,如果计算出的k个值对应的都是1,就认为查询的元素在布隆过滤器中,否则就说明查询的元素不在布隆过滤器中。因为布隆过滤器采用哈希函数可能会在查询的时候造成一定的查询误差。因此对于n个插入的元素来说,其查询误差可以表示为falsepositive=(1-(1-1/m)kn)k。对于本发明的方案而言,本发明利用CountingBloomFilter来进行设计,主要是为了配合支持本发明动态操作中的删除操作。对于Counting Bloom Filter来说,每个位数组中的位置被扩展为一个r比特的计数器,代表每个对应的位插入时计数的个数,所有计数器初始化为0。图4表示了两个元素在进行插入操作时,Bloom Filter和Counting Bloom Filter的生成的区别。可以发现Counting Bloom Filter在插入元素时,首先找到插入的位索引,然后在对应的位上的计数器进行计数加一。查询元素的是时候也是通过对应的哈希函数计算,来对比计数是否满足条件。如果要删除一个元素,只需要在计算出的k个哈希函数对应的位上进行计数减一的操作。利用Counting Bloom Filter(计数型的布隆过滤器),本发明在文件上传过程中,通过对文件分块,利用插入操作对每个文件生成对应的布隆过滤器;在进行完整性检测任务时,本发明查询要检测的文件的文件块的哈希计算结果是否满足对应布隆过滤器的查询条件,如果满足则认为文件完整,否则认为文件损坏,并确定损坏的文件块有哪些,进而利用完整性恢复技术对其进行恢复。
本方案有四个组成部分,分别是文件上传、文件更新、文件验证、文件恢复。
1、文件上传
指用户将文件上传到云存储服务器之前所需要做的一些工作,这些工作由可信第三方TPA代替用户来做,为了便于给用户节约时间和成本,以供数据完整性验证、数据更新验证与数据恢复之用。其中包括文件分块、计算一些附属信息(主要包括动态存储表中需要记录的信息)、计算纠删码等一些预处理的操作。
在文件上传时的文件预处理阶段,将文件进行分块分组,生成动态存储表,根据动态存储表对每一个交叉编码组进行交叉编码,利用纠删码编码生成冗余校验码。同时对每一个文件记录其文件块的基本信息,并且利用文件块和冗余校验码生成布隆过滤器保存起来,为了方便后续的完整性验证和恢复。
这样做的优势是,利用动态存储表为每个文件管理文件块,利用交叉编码为每个文件生成冗余校验码。利用动态存储表能够很好的实现纠删码动态更新操作,避免了大量的更新操作,节约系统开销;交叉编码提供在文件损坏时,对文件恢复的能力;采用布隆过滤器是为了在文件完整性检测时更加高效。
2、文件更新
指用户将文件已传到云存储服务器,对上传到云存储服务器上的文件进行一些更新的操作,在进行这些更新操作时,需要进行先进行动态存储表的更新,然后需要对数据与纠删码更新,之后进行文件块基本信息和布隆过滤器的更新。更新操作包括:
a)修改操作
b)删除操作
c)插入操作
在进行修改操作时,本发明假设用户需要将文件块b更新为b’,可信第三方TPA找到更新块b所在的交叉编码组,并通过动态存储表对其重新进行交叉编码,同时更新动态存储表和布隆过滤器,从而实现修改操作。
在进行删除操作时,本发明假设删除一个数据块b,TPA通过动态存储表找到b所在的交叉编码组,将其isValid字段设置为false,这意味着数据块b已经被删除。经过一段时间后,将数据块b真正的在云端删除。这样做的优势是如果用户做了错误操作想要撤销,代价很低,仅需要将isValid设置回true;同时在数据块未真正删除的状态下,其可以用来帮助恢复损坏的文件。
在进行插入操作时,例如在两个文件块bi和bj之间插入一个新的文件块,新的文件块可以存储在任意位置,由于本发明采用动态存储表管理文件块,所以只需要指明新插入的块在动态存储表中水平和交叉方向的文件块指针。为了方便,本发明在进行插入操作的时候,检查文件中是否有需要删除的块。这样就通过删除和添加操作同时进行,从而减少了计算开销,否则会重复进行下载文件块和编码文件块的操作。
3、文件验证
文件验证过程是指用户将文件存储在云服务器后,用户希望通过TPA来验证自己存储的数据是否真正的完整或是遭到损坏。
在完整性验证阶段,本发明利用Counting Bloom Filter来验证数据是否损坏。TPA将一组挑战数据块集合G1(G1由s个数据块组成)和用于计算哈希函数的程序通过RPC发送给CSP,CSP接收到文件块集合和验证程序后,执行程序将输出结果保存在集合G2并将G2返回给TPA。通过CSP返回的G2.TPA能够很轻松的验证文件的完整性,通过验证每个文件块的哈希函数的结果是否满足Counting Bloom Filter的查询操作,如果所有挑战的文件块都满足查询操作,因此认为文件是完整的。如果一旦发现某个文件块不满足查询操作则认为其被损坏,通过数据完整性恢复流程对其进行修复。
对比以往的完整性验证方法,本方案只需要很小的存储开销,即保存每个文件的布隆过滤器,节约了存储空间;同时因为布隆过滤器插入操作和查询操作的高效性,保证了该完整性验证方法的高效性和可靠性。
4、文件恢复
文件完整性恢复过程是指当用户发现文件中某些数据块被损坏,通过文件上传阶段计算出的冗余校验块以及动态存储表等信息,对损坏的数据进行修复。
在文件完整性验证流程结束后,当检测到数据不完整时,本发明发现某些数据块被损坏。此时通过动态存储表找到损坏数据块对应的交叉编码组,利用交叉编码的恢复策略将需要用于修复的数据块从云服务器下载到TPA,然后利用纠删编码的恢复能力对其进行修复。对损坏数据块修复完成之后,更新该文件对应的布隆过滤器以及动态存储表的基本信息。为了让用户使用更加方便,本发明可以将完整性验证与恢复任务作为定任务让TPA定时进行检测和修复,这样做的好处除了方便用户,也能够通过频繁检测让布隆过滤器由于误差而发生错误检测的情况降低。
与以往的完整性恢复方案相比,本发明的方案基于交叉编码的恢复策略,在一定程度上减少了从服务器下载数据块的带宽消耗,性能更好。同时配合布隆过滤器和动态存储表能够很好的实现完整性检测和文件动态操作功能。
与现有技术相比,本发明的积极效果为:
1、引入了基于布隆过滤器的完整性检测策略,对比以往的方案,在很低的存储开销和高效的检测效率的情况下,能够很好的对用户文件进行完整性检测。大大提高了方案的实用性和可靠性。
2、引入了基于纠删编码的交叉编码方式支持完整性恢复,当数据损坏时可以通过交叉编码恢复策略对其进行修复,对比以往的方案,能够提供完整性恢复能力的同时在一定程度上减少了带宽开销。
3、方案采用动态存储表来管理组织文件的文件块,因此具备对文件进行动态操作的能力,并在动态更新的过程中不需要进行大量的更新。同时由于动态存储表的轻量级特点,不需要过多的存储开销。
本发明的几个创新点紧密的联系在一起,保证了方案的可行性,同时由于创新点具备高效性和实用性的特点,因此在真实的应用场景下,本发明具备很好的可行性。因此在完整性验证、完整性恢复以及文件的动态更新等方面,本发明比以往的方案更出色。
附图说明
图1为本发明的系统模型图;
图2为交叉编码策略示意图;
图3为动态存储表结构图;
图4为Bloom Filter和Counting Bloom Filter数据操作时的对比图。
具体实施方式
方案中有三个角色,用户与可信第三方TPA和云存储平台。用户负责对文件进行上传到可信第三方TPA;TPA负责对文件进行预处理等操作,将文件上传到云存储服务器,与云平台交互更新数据、验证数据等。云存储平台由一个云存储管理节点与多个存储节点组成,云存储管理节点负责对用户的文件进行管理,文件的所有元数据都保存在管理节点上。云存储节点负责存储用户的数据并负责计算TPA请求的数据。
●用户
用户就是文件所有者,在文件上传阶段用户首先将文件上传至TPA,然后TPA处理好文件之后将用户的文件保存到云服务器上。当用户进行文件更新时,TPA代理用户完成文件的动态操作。在文件完整性验证阶段,用户将挑战发送至TPA,TPA接收到验证请求后,对文件进行验证,当检测到文件被损坏时告知用户,并将损坏的文件进行修复。
用户的工作是通过与可信第三方TPA进行交互来实现文件上传、更新、验证与恢复,确保数据在云端的完整性并在发现数据不完整时通过恢复技术将其恢复。
●可信第三方TPA
可信第三方TPA是用户信任的第三方机构,负责代理用户完成用户请求的文件上传、更新、完整性验证和恢复等需求。具体来说负责对文件进行分块分组,按照动态存储表对每个交叉编码组进行纠删编码,同时记录数据块信息,为每个文件生成对应的布隆过滤器。在文件更新阶段,TPA负责重新进行交叉编码,并更新布隆过滤器和动态存储表的信息,同时更新文件;在完整性验证阶段,由TPA向云存储服务器发起挑战,并通过服务器的返回信息判断文件是否完整;在文件恢复阶段,定位到损坏的文件块后,利用动态存储表和纠删编码对损坏的文件块进行重建,恢复文件之后更新布隆过滤器和动态存储表信息。
●云存储平台
云存储管理节点负责接受用于请求并管理用户的数据,保存文件的一些元数据信息等,当TPA发送请求时,如对文件进行更新操作或验证数据完整性等操作进行回应,会针对对应的请求生成对应的验证信息或数据信息返回给TPA,同时,当数据更新时,要对文件信息进行更新等操作。云存储节点负责存储数据,同时其也有一定的计算能力,可以进行一些常规的计算。
原型系统由四部分组成:文件上传子系统、文件更新子系统、文件验证子系统和文件恢复子系统。其中文件上传子系统主要负责文件预处理阶段,用于文件交叉编码的处理、布隆过滤器的生成和动态存储表的记录等过程。文件更新子系统主要用于支持用户对文件的动态操作。文件验证子系统主要负责文件完整性验证的过程;文件恢复子系统主要负责在文件被损坏的情况下,对其进行完整性恢复。这四个子系统的设计主要是C/S架构,由客户端和服务器模块组成。用户端主要由文件存储、文件更新、文件验证、文件恢复等四个模块组成,用户通过这四个模块,与可信第三方互相通信,由可信第三方TPA代理完成对文件的各种操作、对文件完整性的验证的对已破坏数据进行恢复操作。TPA端负责记录动态存储表、文件的布隆过滤器等信息,由管理模块、更新模块、验证模块、恢复模块等组成。而云服务器端主要由存储模块和计算模块组成。各个子系统所用到的模块如表1所示:
表1为各子系统所用模块表
用户端、可信第三方TPA端、云服务器端的各个模块功能如下:
●用户端模块
用户端的文件上传模块、文件更新模块、文件验证模块和文件恢复模块主要负责为用户和可信第三方TPA之间建立通信的机制,将用户的上传、更新、验证及恢复等请求发送至TPA,由TPA代理完成用户的操作。TPA在完成对应操作以后,将处理结果返回给用户。
●可信第三方模块
1、管理模块
用户将文件上传到云服务器之前,TPA需要对文件进行预处理操作,将文件块按照动态存储表进行分组交叉编码并记录动态存储表的信息,然后为每个文件生成对应的布隆过滤器。之后将文件块和冗余校验块上传到云服务器模块进行存储。
2、更新模块
用户将要更新的请求发送至TPA端,TPA按照对应的动态操作请求执行不同的更新操作。首先找到更新文件块对应的交叉编码组,同时从云服务器端下载对应的文件块,重新进行交叉编码然后上传到云服务器端,更新布隆过滤器和动态存储表信息,然后将更新的结果返回给用户。
3、验证模块
TPA负责代理用户实现文件完整性验证。首先TPA根据检验的文件找到对应的文件块,将挑战的文件块信息和哈希计算程序发送给云服务器端,云服务器端将计算结果返回给TPA。TPA根据布隆过滤器的查询情况,判断每个挑战的文件块是否存在于布隆过滤器来判断文件是否完整。如果存在某文件块不满足查询条件,因此调用恢复模块,否则文件完整。
4、恢复模块
TPA根据检测到的损坏的块,利用动态存储表定位到对应的交叉编码组。然后从云服务器端下载对应用于修复的编码块,利用纠删编码进行完整性恢复。TPA修复好文件后,将更新的文件块上传到云服务器端,同时更新布隆过滤器和动态存储表。
●云服务器模块
1、存储模块
存储模块位于云平台存储节点上,由管理节点的管理模块接收到可信第三方TPA发出的请求以后调用,将数据存储在存储节点上。
2、计算模块
计算模块同样位于云平台存储节点上,当TPA端发送请求以及计算程序到云服务器端时,由计算模块为其执行计算程序,该模块将计算数据并将结果返回给可信第三方TPA端。
Claims (8)
1.一种基于布隆过滤器和交叉编码的数据完整性保护方法,其步骤为:
1)用户将文件传送给可信第三方服务器TPA;
2)TPA对该文件进行分块并进行纠删编码得到分块的冗余校验码;然后记录该文件的分块信息,并利用文件块和冗余校验码生成该文件的布隆过滤器;
3)TPA将该文件分块及其冗余校验码上传到云端;
4)当该用户通过TPA向云端发起挑战,即对该文件进行完整性检测时,TPA查找该文件对应的文件块,然后将挑战内容发送至云端;
5)云端利用TPA发送过来的挑战内容计算该文件的文件块所对应的签名值并返回给TPA;
6)TPA验证该文件的布隆过滤器是否满足各所述签名值的查询,如果不满足签名值i的查询,则判定该签名值i对应的文件块被破坏;TPA将验证结果返回给用户。
2.如权利要求1所述的方法,其特征在于,TPA对该文件进行分块并进行纠删编码的方法为:首先将该文件划分为n个文件块b1、b2、...、bn;然后将每k个文件块划分为一组,将该组内k个文件块划分为沿两个水平方向和两个交叉方向排列的四个区域,构成一交叉编码组,其中,每一区域包括m个文件块;对每一交叉编码组内水平和交叉方向的文件块进行纠删编码,生成每个区域的冗余校验码。
3.如权利要求2所述的方法,其特征在于,采用动态存储表记录该文件的分块信息,所述动态存储表包括动态数据组表和动态数据块表;其中,所述动态数据组表用来管理所述交叉编码组,每一动态数据组表与一动态数据块表对应,所述动态数据块表中记录对应动态数据组表内的文件块和冗余校验码的基本信息。
4.如权利要求3所述的方法,其特征在于,所述动态数据块表中记录的信息包括文件块的逻辑位置、大小、是否需要存储在云端、指向物理地址的下一个位置和指向物理地址的前一个位置。
5.如权利要求3所述的方法,其特征在于,TPA通过动态存储表查找该文件对应的文件块。
6.如权利要求2所述的方法,其特征在于,对被破坏的文件块进行恢复的方法为:设损坏的文件块为(xi,yi),其中xi,yi为交叉编码组中两个不同水平方向上的文件块;对文件块(xi,yi)进行修复的方法为:首先从文件块(xi,yi)所在交叉编码组中提取3m个文件块,即(pk,pk+4)和(xj,yh);其中,0≤k≤r-h,r是纠删编码的冗余块数目,j≠i,当0≤i≤m-h时,h≠m、…、2m-h;当m≤i≤2m-h时,h≠0、…、m-h;然后水平方向上利用数据块pk和xj采用纠删编码进行一次修复得到修复后的xi,其中j≠i,交叉方向上利用数据块pk+4和(xj,yh)采用纠删编码进行一次修复,其中,当0≤i≤m-h时,m≤j≤2m-h,0≤h≤m-h,h≠i,当m≤i≤2m-1时,0≤j≤m-1,m≤h≤2m-h,h≠i。
7.如权利要求1所述的方法,其特征在于,所述布隆过滤器为计数型的布隆过滤器。
8.如权利要求1所述的方法,其特征在于,所述挑战内容包括该文件的文件块信息及计算文件块签名值的程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710472920.7A CN109101360B (zh) | 2017-06-21 | 2017-06-21 | 一种基于布隆过滤器和交叉编码的数据完整性保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710472920.7A CN109101360B (zh) | 2017-06-21 | 2017-06-21 | 一种基于布隆过滤器和交叉编码的数据完整性保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109101360A true CN109101360A (zh) | 2018-12-28 |
CN109101360B CN109101360B (zh) | 2020-11-20 |
Family
ID=64795850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710472920.7A Active CN109101360B (zh) | 2017-06-21 | 2017-06-21 | 一种基于布隆过滤器和交叉编码的数据完整性保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109101360B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008755A (zh) * | 2019-03-21 | 2019-07-12 | 广东优世联合控股集团股份有限公司 | 一种云存储可撤销动态数据完整性验证系统及方法 |
CN111309680A (zh) * | 2020-02-17 | 2020-06-19 | 湖南天河国云科技有限公司 | 基于布隆过滤器的对象存储文件检索方法及系统 |
CN113672170A (zh) * | 2021-07-23 | 2021-11-19 | 复旦大学附属肿瘤医院 | 一种冗余数据标记及去除方法 |
CN114760061A (zh) * | 2020-12-29 | 2022-07-15 | 深信服科技股份有限公司 | 数据上传的方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100269024A1 (en) * | 2009-04-18 | 2010-10-21 | Fang Hao | Method and apparatus for multiset membership testing using combinatorial bloom filters |
CN103106124A (zh) * | 2012-12-29 | 2013-05-15 | 华中科技大学 | 一种基于纠删码集群存储系统的交叉重构方法 |
CN104202168A (zh) * | 2014-09-19 | 2014-12-10 | 浪潮电子信息产业股份有限公司 | 一种基于可信第三方的云数据完整性验证方法 |
CN105320899A (zh) * | 2014-07-22 | 2016-02-10 | 北京大学 | 一种面向用户的云存储数据完整性保护方法 |
US9361327B1 (en) * | 2012-12-28 | 2016-06-07 | Emc Corporation | Rolling bloom filter for data with retention policy |
CN106101257A (zh) * | 2016-07-07 | 2016-11-09 | 广东工业大学 | 一种基于布隆过滤器的云存储数据管理方法及装置 |
CN106844098A (zh) * | 2016-12-29 | 2017-06-13 | 中国科学院计算技术研究所 | 一种基于十字交叉纠删编码的快速数据恢复方法及系统 |
-
2017
- 2017-06-21 CN CN201710472920.7A patent/CN109101360B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100269024A1 (en) * | 2009-04-18 | 2010-10-21 | Fang Hao | Method and apparatus for multiset membership testing using combinatorial bloom filters |
US9361327B1 (en) * | 2012-12-28 | 2016-06-07 | Emc Corporation | Rolling bloom filter for data with retention policy |
CN103106124A (zh) * | 2012-12-29 | 2013-05-15 | 华中科技大学 | 一种基于纠删码集群存储系统的交叉重构方法 |
CN105320899A (zh) * | 2014-07-22 | 2016-02-10 | 北京大学 | 一种面向用户的云存储数据完整性保护方法 |
CN104202168A (zh) * | 2014-09-19 | 2014-12-10 | 浪潮电子信息产业股份有限公司 | 一种基于可信第三方的云数据完整性验证方法 |
CN106101257A (zh) * | 2016-07-07 | 2016-11-09 | 广东工业大学 | 一种基于布隆过滤器的云存储数据管理方法及装置 |
CN106844098A (zh) * | 2016-12-29 | 2017-06-13 | 中国科学院计算技术研究所 | 一种基于十字交叉纠删编码的快速数据恢复方法及系统 |
Non-Patent Citations (3)
Title |
---|
SAIBAL K.PAL: "《Efficient search on encrypted data using bloom filter》", 《2014 INTERNATIONAL CONFERENCE ON COMPUTING FOR SUSTAINABLE GLOBAL DEVELOPMENT (INDIACOM)》 * |
刘文景等: "《云计算环境下基于布隆过滤器的可验证可搜索加密方案》", 《青岛大学学报》 * |
周斌: "《一种基于布隆过滤的快速冗余数据块发现方法》", 《中南民族大学学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008755A (zh) * | 2019-03-21 | 2019-07-12 | 广东优世联合控股集团股份有限公司 | 一种云存储可撤销动态数据完整性验证系统及方法 |
CN110008755B (zh) * | 2019-03-21 | 2023-12-26 | 广东优世联合控股集团股份有限公司 | 一种云存储可撤销动态数据完整性验证系统及方法 |
CN111309680A (zh) * | 2020-02-17 | 2020-06-19 | 湖南天河国云科技有限公司 | 基于布隆过滤器的对象存储文件检索方法及系统 |
CN114760061A (zh) * | 2020-12-29 | 2022-07-15 | 深信服科技股份有限公司 | 数据上传的方法、装置、设备及存储介质 |
CN114760061B (zh) * | 2020-12-29 | 2023-09-05 | 深信服科技股份有限公司 | 数据上传的方法、装置、设备及存储介质 |
CN113672170A (zh) * | 2021-07-23 | 2021-11-19 | 复旦大学附属肿瘤医院 | 一种冗余数据标记及去除方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109101360B (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320899B (zh) | 一种面向用户的云存储数据完整性保护方法 | |
CN106254374B (zh) | 一种具备去重功能的云数据公开审计方法 | |
Ateniese et al. | Accountable storage | |
CN109101360A (zh) | 一种基于布隆过滤器和交叉编码的数据完整性保护方法 | |
CN109889505A (zh) | 数据持有性验证方法及终端设备 | |
Li et al. | Towards privacy-preserving storage and retrieval in multiple clouds | |
CN111222176B (zh) | 基于区块链的云存储持有性证明方法、系统及介质 | |
Kumar et al. | Ensuring data storage security in cloud computing using Sobol Sequence | |
Azraoui et al. | Stealthguard: Proofs of retrievability with hidden watchdogs | |
CN106611135A (zh) | 一种存储数据完整性验证及恢复方法 | |
CN110008755A (zh) | 一种云存储可撤销动态数据完整性验证系统及方法 | |
Priyadharshini et al. | Data integrity in cloud storage | |
Tu et al. | Privacy-preserving outsourced auditing scheme for dynamic data storage in cloud | |
Balmany et al. | Dynamic proof of retrievability based on public auditing for coded secure cloud storage | |
Thakur et al. | Data integrity techniques in cloud computing: an analysis | |
US20220006613A1 (en) | Secure secret recovery | |
CN112115101B (zh) | 一种云存储中数据的确定性删除方法及系统 | |
CN112486412A (zh) | 一种基于分布式对象存储系统安全的信息分散方法及系统 | |
Guo et al. | BFT-DSN: A Byzantine Fault Tolerant Decentralized Storage Network | |
Abraham et al. | Proving possession and retrievability within a cloud environment: A comparative survey | |
Singh et al. | TPA in Cloud Computing Needs Secure and Reliable Cloud Services | |
CN108234436A (zh) | 一种基于OpenStack 对象存储的加密方法和系统 | |
Milkkal et al. | Sheltered Data Storage Services in Cloud Computing | |
Jaikar et al. | Verifying Data Integrity in Cloud | |
Jiang et al. | Proof of Storage with Corruption Identification and Recovery for Dynamic Group Users |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |