CN111475839B - 一种用于不可信环境的冗余数据编码方法、存储介质 - Google Patents
一种用于不可信环境的冗余数据编码方法、存储介质 Download PDFInfo
- Publication number
- CN111475839B CN111475839B CN202010262242.3A CN202010262242A CN111475839B CN 111475839 B CN111475839 B CN 111475839B CN 202010262242 A CN202010262242 A CN 202010262242A CN 111475839 B CN111475839 B CN 111475839B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- challenge
- repair
- redundant 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Abstract
本发明公开了一种用于不可信环境的冗余数据编码方法、存储介质,方法包括,客户端根据冗余策略处理原始数据生成冗余数据,并计算抗并行延迟函数生成扇区空间,扇区空间与冗余数据进行异或得到编码数据,对原始数据与编码数据一起进行分片,选定数据持有性证明方案对数据分片生成验证标签,将数据分片与验证标签发送给多个存储节点,将分片索引与存储节点的对应关系发送至审计节点。通过审计节点确定原始数据分片所在的存储节点,进行数据读取。基于此编码方案,在不可信环境下支持数据的写入、读取、修复以及验证等操作,同时保证数据的完整性与可靠性。
Description
技术领域
本发明属于信息安全领域,更具体地,涉及一种用于不可信环境的冗余数据编码方法、存储介质。
背景技术
出于成本的考虑,云存储成为了不少企业及个人数据存储的首选方案,可以节省运维成本建设成本,数据可靠性由云存储服务商保证。但是将数据存储在云存储上也有许多问题,首先数据对云存储提供商来说是透明的且中心化存储的,可能泄露数据,其次,由于数据中心高昂的建设成本,使得云存储的价格并不低廉。随着区块链技术和P2P技术的发展,建立一种去中心化的存储网络成为可能,任何人都可以接入网络提供服务或者购买存储空间,然而在不可信的网络环境中,可靠性是一个有待解决的问题,因为在不可信环境下,存储节点可能会作恶,比如删除数据,少存数据以及关闭机器等。
已有的数据持有性证明可以验证数据的完整性,但仅通过数据持有性证明不能确保数据的可靠性和持久性,因为数据持有性证明无法保证数据冗余,无法在不可信环境下实现数据修复,因此无法保证数据可靠。
在不可信环境下,如果用户将多份副本加密后发送给存储节点,则数据丢失时由于无法解密导致数据无法修复;如果用户简单将多份副本发送给存储节点存储,则发起女巫攻击的存储节点可以只存储一份副本,来伪装成存储多份数据。即在支持数据修复的前提下,存储节点可以少存数据,只在生成证明时,利用修复功能快速生成所需数据。
目前数据持有性证明方案在不可信环境下仅能保证数据的持有,而无法保证数据一定冗余存储。Filecoin项目提出了证明方案ProofofReplication(复制证明)与ProofofSpace-Time(时空证明)来限制存储节点,存储节点首先确定扇区大小,用户将数据分片发送给存储节点,在存储节点收集足够扇区大小的数据后,将此数据作为一个扇区执行复制编码并提供一个证明,此编码耗时长且难以并行加速,以确保存储节点在存储副本时无法快速生成数据作恶,然后在复制证明的基础上加入时空证明,即要求存储节点每隔一段时间按时提交证明保证存储节点一直持有数据防止生成攻击,达到数据可靠存储。
但Filecoin的方案仍然存在问题,比如在数据写入时,存储节点只有收集到扇区大小的数据才能执行复制编码过程,在数据小于给定大小时即大大增加确认存储的延迟时间,无法保证数据可靠性;其次在数据读取时,必须先进行解码才能读取数据,影响了数据的读取性能;最后在有存储节点丢失数据后,需要另选新的存储节点先从副本存储节点获取副本,然后将副本数据解码,最后对数据重新执行复制过程编码完成修复,总共需要三个步骤,降低了数据修复速度,进而影响了数据可靠性;最后,Filecoin的方案支持副本冗余而对删码冗余不友好,降低了存储利用率。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种用于不可信环境的冗余数据编码方法、存储介质,旨在不可信环境下保证数据完整性和可靠性,并优化读性能、写性能以及修复性能。
为实现上述目的,本发明提供了一种用于不可信环境的冗余数据编码方法,包括:
数据写入:将待上传的原始数据进行冗余生成冗余数据,为避免存储节点利用冗余数据修复功能作恶,利用延迟函数生成扇区空间,并将冗余数据与扇区空间进行异或得到编码冗余数据,再将所述原始数据和所述编码冗余数据进行分片得到原始数据分片和编码冗余数据分片,对原始数据分片和编码冗余数据分片分配索引,利用数据持有性证明生成验证标签,将原始数据分片、编码冗余数据分片与验证标签发送给存储节点,将分片索引与存储节点的对应关系发送至审计节点;
数据读取:通过审计节点确定原始数据分片所在的存储节点,若原始数据分片可用,则读取原始数据分片并拼合,读取结束;若原始数据分片不可用,则获取当前的扇区空间,同时读取编码冗余数据分片,将所述编码冗余数据分片拼合后与所述扇区空间异或得到冗余数据,修复回原始数据,读取结束。
进一步地,本发明提供的用于不可信环境的冗余数据编码方法还包括:
数据验证:为了保证不可信的存储节点一直持有数据,审计节点持续向存储节点发起随机挑战,即随机选取分片索引,并要求存储节点在挑战限制时间内生成存储证明返回,在一次挑战中,存储节点生成证明通过判定挑战成功,未在规定时间响应或证明验证不通过判定挑战失败;
数据修复:为保证数据可靠性,维持数据冗余度,需将丢失数据修复,审计节点另寻一存储节点作为修复节点,将丢失数据的冗余数据索引及其位置发送给修复节点,修复节点获取数据分块,并计算数据对应扇区空间,若丢失原始数据,则将冗余数据与扇区空间异或,再修复回原始数据;若丢失编码冗余数据,则用原始数据重新生成冗余数据并与扇区空间异或,修复完成后,修复节点作为普通存储节点存在。
优选地,数据写入的步骤具体包括:
(1-1)客户端首先确定冗余策略R以及数据持有性证明方案P,随机选取数据持有性证明方案P的私钥,并生成延迟函数公共参数pp,确定扇区空间及延迟时间T;对于客户端来说,扇区编号是连续的,在写入数据时,冗余数据持续填塞扇区空间,数据与扇区空间是去耦合的,使得不必足够大数据才能编码;
(1-2)客户端根据所述冗余策略R对待上传的原始数据F生成冗余数据(P1,…,Pm),检查当前扇区空间是否有缓存,若无缓存则根据延迟函数公共参数pp及当前扇区编号继续生成扇区空间,若有缓存则将当前扇区空间分成与冗余数据同样的份数(S1,…,Sm),将扇区空间(S1,…,Sm)与冗余数据(P1,…,Pm)进行异或得到编码冗余数据(E1,…,Em),再将原始数据和编码冗余数据一起进行分片得到数据分片(D1,…,Dn),对每个分片分配一个索引(h1,…,hn),根据选定的数据持有性证明方案P,对每一个分片生成验证标签(σ1,…,σn),对验证标签也进行冗余;
(1-3)客户端将数据分片(D1,…,Dn)及其验证标签(σ1,…,σn)、延迟函数公共参数pp以及数据持有性证明方案P的公钥,依照冗余策略R分别发送至多个存储节点,将分片索引与存储节点的对应关系、延迟函数公共参数pp以及数据持有性证明方案P的公钥发送至审计节点,并将数据持有性证明方案P的私钥保存在客户端本地。
优选地,数据读取的步骤具体包括:
(2-1)客户端首先通过审计节点确定当前原始数据分片所在的存储节点,若原始数据分片可用,则读取并拼合,读取结束;
(2-2)若原始数据分片不可用,则获取当前原始数据所在扇区编码,通过延迟函数公共参数pp计算延迟函数得到当前原始数据的扇区空间,同时读取编码冗余数据分片,将编码冗余数据分片拼合后与扇区空间异或得到冗余数据,并根据冗余策略R修复回原始数据,读取结束。由于延迟函数参数公开,故此解码操作可外包给任何节点完成。
优选地,数据验证的步骤具体包括:
(3-1)审计节点根据延迟函数的延迟时间T,确定一个挑战时间限制Tc,将时间按照挑战时间限制切分成连续的挑战时间窗口,然后持续性地进行挑战,在每一个挑战时间窗口内,将存储节点作为挑战节点,审计节点从每个挑战节点所对应的索引集合中随机选取子集作为挑战集合;
(3-2)在一个确定的挑战时间窗口内,审计节点根据挑战集合向挑战节点发起挑战,挑战节点接受挑战后,根据挑战集合获得相应的编码分片及其验证标签,然后根据数据持有性证明方案P生成各编码分片的数据持有性证明,如果方案支持聚合证明,则将证明聚合,并将证明发送回审计节点;
(3-3)若审计节点在该挑战时间窗口内收到挑战节点发送的数据持有性证明,且根据数据持有性证明方案P以及用户的公钥,对该数据持有性证明的验证通过,则判定挑战成功;否则,判定挑战失败;
其中,挑战时间窗口的长度小于延迟函数生成输出的耗时下限。
优选地,数据修复的步骤具体包括:
(4-1)若挑战失败,则审计节点会将原挑战节点所对应的索引集合作为修复集合,选取一个新的存储节点作为修复节点;
(4-2)审计节点根据延迟函数的延迟时间确定修复时间限制Tr,打开一个修复时间窗口,根据修复集合生成修复任务,并发送给修复节点,修复节点在接收到修复任务后,即根据修复集合确定需要修复的数据分片,从拥有冗余数据分片的存储节点上获取数据,并根据冗余策略R修复丢失的数据分片,同时存储修复得到的数据分片,向审计节点响应;
(4-3)若审计节点在修复时间窗口结束内收到了修复节点的响应,则对编码分片索引与存储节点之间的对应关系进行更新,并将修复节点作为新的挑战节点,之后执行数据验证,重新进入挑战流程;
其中,修复时间窗口的长度大于延迟函数生成输出的耗时上限。延迟函数公共参数pp使得每一个扇区空间都可以用扇区编号公开计算,并且打破延迟函数的耗时下限是一件非常困难的事;挑战时间窗口的长度必须小于延迟函数的耗时下限,以防止恶意存储节点删除部分数据,而在生成证明时通过冗余数据重新生成被删除数据,从而影响数据可靠性。
本发明所提供的基于抗并行加速的延迟函数与数据持有性证明,通过将延迟函数生成扇区空间与数据编码过程分离,以及所有冗余数据共用同一个延迟函数,以此获得成倍的写性能提升,并且无需写入数据累积到扇区大小才能编码;在存储数据时保留原始数据不做处理,只针对冗余数据进行延迟编码,使得读取数据时不需要进行任何解码操作,从而大大提高读性能;由于延迟函数共用,对于同一个扇区空间的数据,无论修复多大数据都只需要执行一次延迟函数,从而提高了修复性能。综上特点,本方案使得在不可信环境下的存储,依然能达到较高的读写性能及修复性能,进而达到高可用性和高可靠性。
本发明在挑战节点挑战失败时,会触发数据修复操作,由于延迟函数输出与数据编码分离,则网络传输过程可与延迟函数生成并行完成,同时由于多份冗余数据共用延迟函数输出,所以只需要计算一次延迟函数输出即可修复出所有丢失数据,而无需先等待网络传输,然后解码数据再修复数据进行三个步骤,由此可以提高数据的可靠性性;在数据修复完成后,会对修复节点加入挑战节点,开始持续发起挑战,来持续保证数据的持续可靠性。
本发明提供的用于不可信环境的冗余数据编码方法还可以引入质押手段,存储节点在加入网络通过存储他人数据获取利润前,必须先根据自己意向共享空间进行质押,若挑战失败,则对丢失数据或者作恶的存储节点可执行质押扣除或罚没等惩罚,大大增加了存储节点的作恶成本,从而有效避免存储节点作恶。
本发明提供的用于不可信环境的冗余数据编码方法还包括存储节点可自检数据,若有数据丢失,则从其余存储节点获取丢失数据对应的冗余数据,根据冗余策略R对丢失的数据进行修复。在存储节点自检发现数据丢失时,由存储节点主动发起数据修复操作,能够进一步保证数据的可靠性。
利用数据持有性证明方案P生成各编码分片的验证标签之后,利用冗余策略R对验证标签也进行冗余计算,得到的冗余的验证标签也随编码分片一起发送至存储节点。
本发明在对数据进行冗余计算的同时,对数据持有性证明的验证标签也进行冗余计算,保证进行数据修复时,验证标签能修复回来以便持续数据验证,进一步提高了可靠性。
进一步地,在本发明中,延迟函数采用分层的深度鲁棒图算法生成方案,即把扇区编号作为初始输入,并通过分层的图生成算法,逐层生成数据,并把最后一层的数据作为扇区编号对应的扇区空间,可选的参数有扇区大小,编码层数,图的依赖节点数等。基于深度鲁棒图的延迟函数,具有并行加速困难的特点,限制了存储节点难以作恶。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述用于不可信环境的冗余数据编码方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
(1)本发明所提供的用于不可信环境的冗余数据编码方法及系统,基于抗并行的延迟函数,通过冗余数据共用延迟函数,无需对多个副本各自进行编码,以及扇区空间生成与数据编码解耦,不需要累积数据到固定扇区大小才能进行编码,由此提高了写数据性能;通过保留原始数据不进行编码,大大提高了读性能;在修复时,冗余数据网络传输与扇区空间生成可并行完成,提高了修复性能。而基于延迟函数的延迟特性,审计节点确定挑战时间限制定期挑战,使得存储节点一旦删除数据分片,将无法在挑战时间窗口内通过数据修复完成挑战,从而能够有效防止存储方作恶,因此,本发明能够在不可信分散式存储环境中,达到较高的读性能、写性能及修复性能,同时保证数据的完整性和可靠性;
(2)本发明所提供的用于不可信环境的冗余数据编码方法及系统,由延迟函数生成扇区空间可公开计算,保证任何节点可以对丢失数据进行修复,同时由于延迟函数的延迟特性保证存储节点无法通过数据修复发起攻击;
(3)本发明所提供的用于不可信环境的冗余数据编码方法及系统,在挑战失败时,会触发数据修复操作,由修复节点修复出挑战失败节点上的数据分片,由此能够保证数据的完整性;在数据修复完成后,修复节点成为新的存储节点,对其持续发起挑战,避免了新的存储节点作恶,进一步保证了数据的完整性;
(4)本发明所提供的用于不可信环境的冗余数据编码方法及系统,在存储节点自检发现数据丢失或损坏时,存储节点可主动发起数据修复操作,进一步保证数据的可靠性;
(5)本发明所提供的用于不可信环境的冗余数据编码方法及系统,除了对数据进行冗余处理之外,对用于数据持有性证明的验证标签同样进行冗余计算,使得数据修复时,可以同时修复回验证标签以便进一步验证。
附图说明
图1是本发明实施例提供的一种可行的延迟函数;
图2是本发明实施例提供的用于不可信环境的冗余数据编码方法示意图;
图3是本发明实施例提供的数据编码示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在本发明中,本发明及附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在详细解释本发明的技术方案之前,先对本发明中所使用的延迟函数作如下简要介绍:
本发明中所使用的延迟函数,满足:从一个较小的输入随机生成一个较大的输出,这个生成过程需要一定的计算步骤,并且难以被并行加速。
在一个可选的实施方式中,如图1所示,基于分层深度鲁棒图的延迟函数参数有,扇区大小Size,编码层数L,图的入度d等,节点大小m,在确定这些参数后,即可估计出延迟函数的延迟时间。编码过程为:首先通过扇区大小除以节点大小得到一层节点个数,用扇区编号SectorID哈希值为图的第一层第一个节点数据,此后任一节点都由上一个节点以及伪随机数生成器选取的d个父节点哈希而来,并依次计算出该层所有节点值,直到计算完本层,然后将序号逆置开始下一层编码,剩下层数编码与第一层类似,但节点还需与上一层相同位置节点关联,经过一层一层变换,一直算到L层最后一个节点,将第L层节点拼合当成延迟函数的输出。
应当理解的是,满足上述性质的延迟函数均可用作本发明中的延迟函数,本处只举一例方便理解。
为了在不可信的分布式存储系统中保证数据的完整性和可靠性,同时提供较高的读写、修复性能,本发明所提供的用于不可信环境的冗余数据编码方法,如图2所示,包括:数据写入步骤、数据读取步骤、数据验证步骤和数据修复步骤;
数据写入步骤包括:
(1-1)客户端首先根据延迟时间及扇区空间大小,确定延迟函数的公共参数pp,并确定冗余策略R,确定数据持有性证明方案P,并将待上传的数据利用冗余策略R生成冗余数据P,再查看当前扇区编号的扇区是否有缓存,若无缓存则利用延迟函数公共参数及扇区编号计算得当前扇区空间输出S,并将冗余数据和扇区空间分成几份,如三副本冗余,则有两份冗余数据,则分为两份,并将冗余数据和扇区空间各自异或得到冗余编码数据,将原始数据和冗余编码数据分片,运用数据持有性证明方案生成标签;
(1-2)客户端首先确定延迟函数公共参数pp,将待上传数据F利用冗余策略R进行冗余计算,得到冗余数据(P1,…,Pm),;冗余策略R可选择任意一种冗余策略,例如纠删码、多副本等,如图3所示;
获得当前扇区编号s,若当前扇区空间输出无缓存,则利用延迟函数输入公共参数及扇区编号生成扇区空间输出S,将扇区空间输出S分成与冗余数据同样的份数(S1,…,Sm),并将几份扇区空间输出各自异或,得到编码数据(E1,…,Em);
将原始数据F与编码数据(E1,…,Em)一起进行分片得到(D1,…,Dn),给每个分片分配一索引得(h1,…,hn),利用数据持有性证明方案S生成分片(h1,…,hn)的验证标签,得到n个验证标签(σ1,…,σn);数据持有性证明方案P可任意选择,例如,BLS-PDP、MerkleTree-PDP等,数据持有性证明方案P的公钥及私钥,根据所选定的具体方案相应生成即可;
在对数据进行冗余的同时,还可在利用数据持有性证明方案S生成各编码分片的验证标签之后,利用冗余策略R对验证标签也进行冗余计算,得到的冗余的验证标签也随编码分片一起发送至存储节点,从而在用于数据持有性证明的验证标签丢失时,也可以通过数据修复得到;
(1-3)将各编码分片及其验证标签、延迟函数的公共参数pp以及数据持有性证明方案P的公钥发送至存储节点,将编码分片索引与存储节点的对应关系、延迟函数的公共参数pp以及数据持有性证明方案P的公钥发送至审计节点,并将数据持有性证明方案P的私钥保存在客户端本地。
数据读取步骤包括:
(2-1)客户端首先通过审计节点确定当前原始数据分片分片所在的存储节点,若原始数据分片可用,则读取并拼合成原始数据,读取结束。
(2-2)若原始数据分片不可用,则获取当前原始数据所在扇区编码,通过延迟函数公共参数pp计算延迟函数得到当前原始数据的扇区空间,同时读取编码数据分片拼合成编码冗余数据,将编码冗余数据与扇区空间输出异或得到冗余数据,并根据冗余策略R修复得原始数据,读取结束。由于延迟函数参数是公开参数,故此修复操作可让任何节点完成。
数据验证步骤包括:
(3-1)审计节点根据延迟函数公共参数pp得到延迟时间T,并依此确定一个挑战时间限制Tc,将时间按照挑战时间限制切分成连续的挑战时间窗口,然后持续性地对存储节点进行挑战。在每一个挑战时间窗口内,将存储节点作为挑战节点,审计节点从每个挑战节点所对应的索引集合中随机选取子集作为挑战集合;
(3-2)在一个确定的挑战时间窗口内,审计节点根据挑战集合向挑战节点发起挑战,挑战节点接受挑战后,需要根据挑战集合获得相应的编码分片及其验证标签,然后根据数据持有性证明方案P生成各编码分片的数据持有性证明,如果采用支持聚合证明的方案,则将证明聚合成一个证明,并发送回审计节点;
(3-3)若审计节点在该挑战时间窗口内收到挑战节点发送的数据持有性证明,且根据数据持有性证明方案P及用户的公钥,对该数据持有性证明的验证通过,则判定挑战成功;否则,判定挑战失败;
其中,挑战时间窗口的长度小于延迟函数的延迟时间T,因此,若存储节点作恶,将某部分数据从本地删除,则审计节点发起挑战时,存储节点无法在挑战时间窗口内通过数据修复重新编码得到数据,从而无法通过验证;
上述用于不可信环境的冗余数据编码方法及系统,在审计节点向存储节点发起挑战时,根据延迟函数延迟时间确定的挑战时间窗口长度小于存储节点修复编码数据的时间,使得存储节点一旦删除部分数据,将无法在挑战时间窗口内通过数据修复完成挑战,从而能够有效防止存储方作恶,因此,能够在不可信环境下,同时保证数据的完整性和可靠性。
数据修复步骤包括:
(4-1)若挑战失败,则审计节点将原挑战节点所对应的索引集合作为修复集合,并重新选取一个存储节点作为修复节点;
(4-2)审计节点延迟函数延迟时间确定修复时间窗口后,根据修复集合向修复节点发送修复任务,修复节点在接收到修复任务后,根据修复集合确定需要修复的编码分片,从其他存储节点获取冗余数据,并根据冗余策略R进行数据修复,并将修复好的数据及验证标签存储下来,响应审计节点;
在进行数据修复的过程中,修复节点会从其他存储节点获取数据,从而得到冗余数据,然后利用冗余数据完成数据修复;由于验证标签也进行了相应冗余,故标签亦可恢复,对修复集合对应的所有数据片重复进行此操作,即可修复回数据;
(4-3)审计节点在修复时间窗口结束后,对数据分片索引与存储节点之间的对应关系进行更新,并将修复节点作为新的挑战节点,之后执行数据验证,以重新发起挑战;
其中,修复时间窗口的长度大于延迟函数的延迟时间,因此,保证原本丢失数据能够在修复时间窗口内由修复节点修复,并在修复节点本地进行存储;
在挑战节点挑战失败时,会触发数据修复操作,由新的存储节点修复出丢失数据分片,由此能够保证数据的完整性;在数据修复完成后,会对修复节点重新发起挑战,避免了新的存储节点作恶,进一步保证了数据的完整性。
为了有效避免节点作恶,进一步保证数据的完整性,上述支持数据持有性证明与数据修复的数据编码方法,还可包括:
若挑战失败,则对接受挑战的存储节点进行惩罚;
通过引入质押惩罚机制,对挑战失败的存储节点进行惩罚,增加了存储节点的作恶成本,通过经济激励避免存储节点作恶;对作恶节点进行惩罚的具体方式,可根据实际的存储系统确定,例如,用于区块链存储领域时,存储节点如果想通过出租存储空间获利,先需要根据出售存储空间质押相应的钱,所以惩罚可以扣除或者罚没抵押的钱,此外,还可以引入声望系统,声望越低获得订单概率越低。
为了保证数据存储的可靠性,上述支持数据持有性证明与数据修复的数据编码方法,还可包括:
若存储节点自检有数据丢失,则可自行发起修复任务,从其余存储节点获取冗余数据,根据冗余策略R对丢失的数据进行修复;
在存储节点自检发现数据丢失时,由存储节点主动发起数据修复操作,能够保证数据的可靠性。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述用于不可信环境的冗余数据编码方法。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种用于不可信环境的冗余数据编码方法,其特征在于,包括:
数据写入:将待上传的原始数据进行冗余生成冗余数据,为避免存储节点利用冗余数据修复功能作恶,利用延迟函数生成扇区空间,并将冗余数据与扇区空间进行异或得到编码冗余数据,再将所述原始数据和所述编码冗余数据进行分片得到原始数据分片和编码冗余数据分片,对原始数据分片和编码冗余数据分片分配索引,利用数据持有性证明生成验证标签,将原始数据分片、编码冗余数据分片与验证标签发送给存储节点,将分片索引与存储节点的对应关系发送至审计节点;
数据读取:通过审计节点确定原始数据分片所在的存储节点,若原始数据分片可用,则读取原始数据分片并拼合,读取结束;若原始数据分片不可用,则获取当前的扇区空间,同时读取编码冗余数据分片,将所述编码冗余数据分片拼合后与所述扇区空间异或得到冗余数据,修复回原始数据,读取结束。
2.如权利要求1所述的冗余数据编码方法,其特征在于,还包括:
数据验证:为了保证不可信的存储节点一直持有数据,审计节点持续向存储节点发起随机挑战,即随机选取分片索引,并要求存储节点在挑战限制时间内生成存储证明返回,在一次挑战中,存储节点生成证明通过判定挑战成功,未在规定时间响应或证明验证不通过判定挑战失败;
数据修复:当挑战失败时,为保证数据可靠性,维持数据冗余度,需将丢失数据修复,审计节点另寻一存储节点作为修复节点,将丢失数据的冗余数据索引及其位置发送给修复节点,修复节点获取数据分块,并计算数据对应扇区空间,若丢失原始数据,则将冗余数据与扇区空间异或,再修复回原始数据;若丢失编码冗余数据,则用原始数据重新生成冗余数据并与扇区空间异或,修复完成后,修复节点作为普通存储节点存在。
3.如权利要求1所述的冗余数据编码方法,其特征在于,数据写入的步骤具体包括:
(1-1)客户端首先确定冗余策略R以及数据持有性证明方案P,随机选取数据持有性证明方案P的私钥,并生成延迟函数公共参数pp,确定扇区空间及延迟时间T;
(1-2)客户端根据所述冗余策略R对待上传的原始数据F生成冗余数据(P1,…,Pm),检查当前扇区空间是否有缓存,若无缓存则根据延迟函数公共参数pp及当前扇区编号继续生成扇区空间,若有缓存则将当前扇区空间分成与冗余数据同样的份数(S1,…,Sm),将扇区空间(S1,…,Sm)与冗余数据(P1,…,Pm)进行异或得到编码冗余数据(E1,…,Em),再将原始数据和编码冗余数据一起进行分片,对每个分片分配一个索引(h1,…,hn),根据选定的数据持有性证明方案P,对每一个分片生成验证标签(σ1,…,σn),对验证标签也进行冗余;
(1-3)客户端将分片及其验证标签(σ1,…,σn)、延迟函数公共参数pp以及数据持有性证明方案P的公钥,依照冗余策略R分别发送至多个存储节点,将分片索引与存储节点的对应关系、延迟函数公共参数pp以及数据持有性证明方案P的公钥发送至审计节点,并将数据持有性证明方案P的私钥保存在客户端本地。
4.如权利要求1所述的冗余数据编码方法,其特征在于,数据读取的步骤具体包括:
(2-1)客户端首先通过审计节点确定当前原始数据分片所在的存储节点,若原始数据分片可用,则读取并拼合,读取结束;
(2-2)若原始数据分片不可用,则获取当前原始数据所在扇区编码,通过延迟函数公共参数pp计算延迟函数得到当前原始数据的扇区空间,同时读取编码冗余数据分片,将编码冗余数据分片拼合后与扇区空间异或得到冗余数据,并根据冗余策略R修复回原始数据,读取结束。
5.如权利要求2所述的冗余数据编码方法,其特征在于,数据验证的步骤具体包括:
(3-1)审计节点根据延迟函数的延迟时间T,确定一个挑战时间限制Tc,将时间按照挑战时间限制切分成连续的挑战时间窗口,然后持续性地进行挑战,在每一个挑战时间窗口内,将存储节点作为挑战节点,审计节点从每个挑战节点所对应的索引集合中随机选取子集作为挑战集合;
(3-2)在一个确定的挑战时间窗口内,审计节点根据挑战集合向挑战节点发起挑战,挑战节点接受挑战后,根据挑战集合获得相应的编码分片及其验证标签,然后根据数据持有性证明方案P生成各编码分片的数据持有性证明,如果方案支持聚合证明,则将证明聚合,并将证明发送回审计节点;
(3-3)若审计节点在该挑战时间窗口内收到挑战节点发送的数据持有性证明,且根据数据持有性证明方案P以及用户的公钥,对该数据持有性证明的验证通过,则判定挑战成功;否则,判定挑战失败;
其中,挑战时间窗口的长度小于延迟函数生成输出的耗时下限。
6.如权利要求5所述的冗余数据编码方法,其特征在于,数据修复的步骤具体包括:
(4-1)若挑战失败,则审计节点会将原挑战节点所对应的索引集合作为修复集合,选取一个新的存储节点作为修复节点;
(4-2)审计节点根据延迟函数的延迟时间确定修复时间限制Tr,打开一个修复时间窗口,根据修复集合生成修复任务,并发送给修复节点,修复节点在接收到修复任务后,即根据修复集合确定需要修复的数据分片,从拥有冗余数据分片的存储节点上获取数据,并根据冗余策略R修复丢失的数据分片,同时存储修复得到的数据分片,向审计节点响应;
(4-3)若审计节点在修复时间窗口结束内收到了修复节点的响应,则对编码分片索引与存储节点之间的对应关系进行更新,并将修复节点作为新的挑战节点,之后执行数据验证,重新进入挑战流程;
其中,修复时间窗口的长度大于延迟函数生成输出的耗时上限。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010262242.3A CN111475839B (zh) | 2020-04-06 | 2020-04-06 | 一种用于不可信环境的冗余数据编码方法、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010262242.3A CN111475839B (zh) | 2020-04-06 | 2020-04-06 | 一种用于不可信环境的冗余数据编码方法、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475839A CN111475839A (zh) | 2020-07-31 |
CN111475839B true CN111475839B (zh) | 2023-04-18 |
Family
ID=71750565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010262242.3A Active CN111475839B (zh) | 2020-04-06 | 2020-04-06 | 一种用于不可信环境的冗余数据编码方法、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475839B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925742A (zh) * | 2020-11-03 | 2021-06-08 | 深圳防灾减灾技术研究院 | 一种地震波形数据存储归档管理的方法 |
CN113239067B (zh) * | 2021-04-30 | 2023-07-18 | 国网河北省电力有限公司沧州供电分公司 | 一种确权证书的防伪方法 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05136763A (ja) * | 1991-11-13 | 1993-06-01 | Fujitsu Ltd | 誤り訂正通信方式 |
CN101488104A (zh) * | 2009-02-26 | 2009-07-22 | 北京世纪互联宽带数据中心有限公司 | 一种实现高效安全存储的系统和方法 |
CN101754018A (zh) * | 2008-12-17 | 2010-06-23 | 索尼株式会社 | 信息处理器及其方法 |
CN102546755A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 云存储系统的数据存储方法 |
CN102945355A (zh) * | 2011-08-30 | 2013-02-27 | 微软公司 | 基于扇区映射的快速数据加密策略遵从 |
CN104102558A (zh) * | 2014-07-13 | 2014-10-15 | 中国人民解放军国防科学技术大学 | 一种基于纠删码的文件追加方法 |
CN105320899A (zh) * | 2014-07-22 | 2016-02-10 | 北京大学 | 一种面向用户的云存储数据完整性保护方法 |
CN106201781A (zh) * | 2016-07-11 | 2016-12-07 | 华侨大学 | 一种基于右边正则纠删码的云数据存储方法 |
CN108228830A (zh) * | 2018-01-03 | 2018-06-29 | 广东工业大学 | 一种数据处理系统 |
CN108664223A (zh) * | 2018-05-18 | 2018-10-16 | 百度在线网络技术(北京)有限公司 | 一种分布式存储方法、装置、计算机设备及存储介质 |
CN109194646A (zh) * | 2018-08-30 | 2019-01-11 | 东北大学 | 一种基于区块链的安全认证数据存取方法 |
CN110334053A (zh) * | 2019-05-09 | 2019-10-15 | 哈尔滨理工大学 | 一种基于区块链的数据存证数据处理方法 |
CN110720088A (zh) * | 2017-06-12 | 2020-01-21 | 净睿存储股份有限公司 | 集成到大容量存储设备的可访问快速耐久存储 |
CN110750382A (zh) * | 2019-09-18 | 2020-02-04 | 华中科技大学 | 用于提高数据修复性能的最小存储再生码编码方法及系统 |
CN110908835A (zh) * | 2019-11-11 | 2020-03-24 | 华中科技大学 | 一种分布式系统中支持私有标签的数据冗余方法及系统 |
-
2020
- 2020-04-06 CN CN202010262242.3A patent/CN111475839B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05136763A (ja) * | 1991-11-13 | 1993-06-01 | Fujitsu Ltd | 誤り訂正通信方式 |
CN101754018A (zh) * | 2008-12-17 | 2010-06-23 | 索尼株式会社 | 信息处理器及其方法 |
CN101488104A (zh) * | 2009-02-26 | 2009-07-22 | 北京世纪互联宽带数据中心有限公司 | 一种实现高效安全存储的系统和方法 |
CN102945355A (zh) * | 2011-08-30 | 2013-02-27 | 微软公司 | 基于扇区映射的快速数据加密策略遵从 |
CN102546755A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 云存储系统的数据存储方法 |
CN104102558A (zh) * | 2014-07-13 | 2014-10-15 | 中国人民解放军国防科学技术大学 | 一种基于纠删码的文件追加方法 |
CN105320899A (zh) * | 2014-07-22 | 2016-02-10 | 北京大学 | 一种面向用户的云存储数据完整性保护方法 |
CN106201781A (zh) * | 2016-07-11 | 2016-12-07 | 华侨大学 | 一种基于右边正则纠删码的云数据存储方法 |
CN110720088A (zh) * | 2017-06-12 | 2020-01-21 | 净睿存储股份有限公司 | 集成到大容量存储设备的可访问快速耐久存储 |
CN108228830A (zh) * | 2018-01-03 | 2018-06-29 | 广东工业大学 | 一种数据处理系统 |
CN108664223A (zh) * | 2018-05-18 | 2018-10-16 | 百度在线网络技术(北京)有限公司 | 一种分布式存储方法、装置、计算机设备及存储介质 |
CN109194646A (zh) * | 2018-08-30 | 2019-01-11 | 东北大学 | 一种基于区块链的安全认证数据存取方法 |
CN110334053A (zh) * | 2019-05-09 | 2019-10-15 | 哈尔滨理工大学 | 一种基于区块链的数据存证数据处理方法 |
CN110750382A (zh) * | 2019-09-18 | 2020-02-04 | 华中科技大学 | 用于提高数据修复性能的最小存储再生码编码方法及系统 |
CN110908835A (zh) * | 2019-11-11 | 2020-03-24 | 华中科技大学 | 一种分布式系统中支持私有标签的数据冗余方法及系统 |
Non-Patent Citations (1)
Title |
---|
方俊涛.分布式存储系统中失效数据的修复与响应技术研究.《中国优秀博士学位论文全文数据库》.2019,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111475839A (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6732321B2 (ja) | 分散システムにおけるネットワークノードに対する回復処理の実行 | |
US11799660B2 (en) | Optimizations for verification of interactions system and method | |
US11405181B2 (en) | Lightweight blockchain based on split-trust | |
Sonnino et al. | Replay attacks and defenses against cross-shard consensus in sharded distributed ledgers | |
CN110750382B (zh) | 用于提高数据修复性能的最小存储再生码编码方法及系统 | |
JP2020513170A (ja) | 分散システムにおける1次ノードの変更を行うこと | |
KR20220133850A (ko) | 난스를 이용한 합의 노드 선택 방법 및 그것을 이용한 블록체인 생성 방법 및 장치 | |
CN111475839B (zh) | 一种用于不可信环境的冗余数据编码方法、存储介质 | |
CN100449501C (zh) | 计算机网络数据恢复的方法 | |
KR20210045353A (ko) | 인코딩된 블록체인 데이터의 인덱싱 및 복구 | |
JP2021520574A (ja) | 誤り訂正符号に基づく共有されたブロックチェーンデータの記憶のデータセキュリティ | |
Wang et al. | Bft in blockchains: From protocols to use cases | |
CN109584071B (zh) | 区块链处理方法和电子设备 | |
CN106612272A (zh) | 云存储中一种数据篡改的验证和恢复算法 | |
CN111104694A (zh) | 支持数据持有性证明与数据修复的数据编码方法及系统 | |
CN115208628B (zh) | 基于区块链的数据完整性验证方法 | |
CN113626875A (zh) | 一种区块链分片赋能的知识图谱文件存储方法 | |
Rass | Dynamic proofs of retrievability from Chameleon-Hashes | |
CN111625400A (zh) | 一种数据冗余处理方法、装置及存储介质 | |
CN109101360A (zh) | 一种基于布隆过滤器和交叉编码的数据完整性保护方法 | |
CN114127724A (zh) | 针对多副本存储的完整性审计 | |
Yuvaraj et al. | Secure DE-duplication over wireless sensing data using convergent encryption | |
CN115730933A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN111444270A (zh) | 一种基于区块链的控制有害信息的方法及系统 | |
JP2009003877A (ja) | 認証方法、登録値生成方法、サーバ装置、クライアント装置及びプログラム |
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 |