CN114780987A - 数据分发、存储、读取、传输方法及分布式系统 - Google Patents
数据分发、存储、读取、传输方法及分布式系统 Download PDFInfo
- Publication number
- CN114780987A CN114780987A CN202111642238.0A CN202111642238A CN114780987A CN 114780987 A CN114780987 A CN 114780987A CN 202111642238 A CN202111642238 A CN 202111642238A CN 114780987 A CN114780987 A CN 114780987A
- Authority
- CN
- China
- Prior art keywords
- data
- distribution
- message
- signature
- node
- 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
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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本说明书一个或多个实施例提供一种数据分发、存储、读取、传输方法及分布式系统。在分布式系统中实现数据分发过程中,可以占用更少的网络带宽,并且节点间需要交互的消息数量较少,带来更低的消息复杂度,实际上,上述技术方案所实现的消息复杂度是线性的。
Description
技术领域
本说明书一个或多个实施例涉及信息技术领域,尤其涉及一种数据分发、存储、读取、传输方法及分布式系统。
背景技术
目前的分布式存储方法主要包括基于数据分片的存储方案与基于数据副本的存储系统。
基于数据分片的存储方案为,将待存储的数据D拆分为N个分片,将不同分片存储于不同节点(存储设备或存储设备集群),若后续想要获取存储的数据D时,则需要先从N个节点获取全部的N个分片,再将这N个分片组合成数据D。这种存储方案的问题在于,如果某个节点所存储的分片丢失,或者某个节点宕机,或者某些服务器被敌手控制,则无法获取存储的数据D,这对于拥有数据D的用户来说风险太高。
基于数据副本的存储方案(典型如区块链)为,将待存储的数据D的N个副本分别存储在不同的节点,这种存储方案虽然可以尽可能确保数据不会丢失,但是这种存储方案存在存储成本过高的问题。
基于以上,提出一种有效的数据分发方案,该数据分发方案可以用于实现兼顾低风险与低成本的数据存储方案。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种数据分发、存储、读取、传输方法及分布式系统。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种数据分发方法,包括:
分发需求方基于纠删码技术将待分发的数据D转换成N个数据块,其中,所述N个数据块包括Di,i=1、…、N,基于所述N个数据块中的M个数据块可得到D,N=M+2f,M >f,f为包括N个节点的分布式系统所容错的节点数量;
分发需求方生成用于验证数据块是否合法的特征交叉校验信息fpcc;其中,若数据块属于所述N个数据块,则数据块合法;
分布式系统的节点i获取分发需求方构建的分发消息,该分发消息包括Di与fpcc;
节点i基于该分发消息中的fpcc验证Di是否合法,若合法,则基于预设生成规则,利用该分发消息中的fpcc生成已校验信息,并对已校验信息进行签名得到签名Si;
分发需求方获取节点i构建准备消息,该准备消息包括已校验信息与Si;并且,对该准备消息中的Si进行验证;
分发需求方若确定获取到至少M+f个准备消息包含相同的已校验信息,并且,该至少 M+f个准备消息皆通过签名验证,则基于该至少M+f个准备消息中的签名,构建包含签名的结束消息并发送给节点i;
节点i在获取到分发需求方构建的结束消息之后,验证结束消息包含的签名,若验证通过,则确认Di与fpcc。
在一些实施例中,分发需求方包括:分布式系统之外的客户端,或者,分布式系统的任一节点。
在一些实施例中,每个分发消息还包括分发流程标识,用于区分不同的待存储的数据的分发流程;
每个准备消息还包括分发流程标识,每个结束消息还包括分发流程标识。
在一些实施例中,利用该分发消息中的fpcc生成已校验信息,包括:
将该分发消息中的fpcc作为已校验信息;
或者
将该分发消息中的fpcc的哈希值作为已校验信息。
在一些实施例中,还包括:
各节点之间预先基于门限签名协议,约定共同的公钥PK与节点i的私钥SKi;其中,该门限签名协议的门限值≥M+f;
节点i对已校验信息进行签名得到签名Si,包括:
使用私钥SKi对已校验信息进行签名得到签名Si;
分发需求方基于该至少M+f个准备消息中的签名,构建包含签名的结束消息,包括:
基于门限签名协议,将该至少M+f个准备消息中的签名组合成门限签名S,并构建包含 S的结束消息;
节点i验证结束消息包含的签名,包括:
节点i使用公钥PK验证S。
在一些实施例中,还包括:
节点i在存储Di与fpcc之后,生成数据安全证明,该数据安全证明至少包含:已校验信息、结束消息所包含的签名。
在一些实施例中,该数据安全证明还包含:
数据D对应的分发流程标识。
根据本说明书一个或多个实施例的第二方面,提出了一种数据分发方法,包括:
分发需求方基于纠删码技术将待分发的数据D转换成N个数据块,其中,所述N个数据块包括Di,i=1、…、N,基于所述N个数据块中的M个数据块可得到D,N=M+2f,M >f,f为包括N个节点的分布式系统所容错的节点数量;
分发需求方生成用于验证数据块是否合法的特征交叉校验信息fpcc;其中,若数据块属于所述N个数据块,则数据块合法;
分布式系统的节点i获取分发需求方构建的分发消息,该分发消息包括Di、fpcc与L;
节点i基于该分发消息中的fpcc验证Di是否合法,并且,验证L是否为基于fpcc得到的签名,若验证结果皆为是,则基于预设生成规则,利用该分发消息中的fpcc生成已校验信息,并对已校验信息进行签名得到签名Si;
分发需求方获取节点i构建准备消息,该准备消息包括已校验信息与Si;并且,对该准备消息中的Si进行验证;
分发需求方若确定获取到至少M+f个准备消息包含相同的已校验信息,并且,该至少 M+f个准备消息皆通过签名验证,则基于该至少M+f个准备消息中的签名,构建包含签名的结束消息并发送给节点i;
节点i在获取到分发需求方构建的结束消息之后,验证结束消息包含的签名,若验证通过,则确认Di、fpcc与L。
在一些实施例中,还包括:
节点i在存储Di、fpcc与L之后,生成数据安全证明,该数据安全证明至少包含:已校验信息、结束消息所包含的签名、L。
在一些实施例中,该数据安全证明还包含:
数据D对应的分发流程标识。
根据本说明书一个或多个实施例的第三方面,提出了一种数据存储方法,基于上述的数据分发方法,所述数据存储方法包括:
节点i在确认Di与fpcc之后,存储Di与fpcc。
根据本说明书一个或多个实施例的第四方面,提出了一种读取基于上述的存储方法所存储的数据的方法,包括:
节点i获取读取需求方发起的数据读取请求,该数据读取请求指定了待读取的数据D;
读取需求方若获取到至少f+1个节点分别返回的数据块与一致的fpcc,并且对于该至少 f+1个节点中的每个节点,基于该节点存储的fpcc确定该节点存储的数据块合法,则基于该至少f+1个数据块,得到数据D。
在一些实施例中,读取需求方是之前向分布式系统提交数据D的分发需求方;或者,读取需求方不是之前向分布式系统提交数据D的分发需求方;
若读取需求方不是之前向分布式系统提交数据D的分发需求方,则所述方法还包括:
读取需求方在发起数据读取请求之前,获取数据D对应的数据安全证明;
对该数据安全证明中的签名进行验证;
读取需求方发起的数据读取请求,包括:
读取需求方在确定对该数据安全证明中的签名进行验证之后,发起的数据读取请求。
根据本说明书一个或多个实施例的第五方面,提供一种数据传输方法,用于将数据由数据发送方传输至数据接收方,所述方法包括:
数据发送方通过上述的存储方法,将待传输的数据存储至分布式系统;
数据接收方通过上述的读取方法,从分布式系统读取该数据。
根据本说明书一个或多个实施例的第六方面,提供一种分布式系统,包括N个节点,所述分布式系统应用于权利要求1-14任一项所述方法。
在分布式系统中实现数据分发过程中,可以占用更少的网络带宽,并且节点间需要交互的消息数量较少,带来更低的消息复杂度,实际上,上述技术方案所实现的消息复杂度是线性的。
进一步地,基于这样的数据分发方法可以在分布式系统中实现数据存储,这意味着数据存储至分布式系统的过程中可以占用更少的带宽以及带来线性的消息复杂度,这意味着比较低的存储成本。同时,在上述的数据存储方法中,分布式系统中不同节点存储数据的不同数据块而不必每个节点都存储数据整体,这也可以节省存储成本。而且,在上述的数据存储方法中,由于应用了纠删码技术生成数据块,因此,即便分布式系统中的一些节点宕机,或者一些节点所存储的数据块丢失,或者一些节点产生拜占庭(任意)错误或者被攻击者控制(这样的节点数量通常不会超过f,即分布式系统所容错的节点数量),剩余可用的节点(至少M 个)所存储的数据块依然可以恢复得到数据整体,确保数据的安全性。
再进一步地,基于上述的数据存储方法,可以进一步实现数据读取方法,读取需求方可以向分布式系统中所有节点分别发送数据读取请求,即便一些节点不能配合(如宕机或者故意作恶)提供正确的数据块,读取需求方也可以获取到至少f+1个节点返回的正确数据块,并据此得到想要获取的数据整体。
更进一步地,基于上述的数据存储方法与数据读取方法,可以实现一种数据传输方法。这样可以确保数据在传输过程中不会丢失、不会被篡改。具体而言,数据发送方利用上述的数据存储方法将数据存储至分布式系统,然后,数据接收方利用上述的数据读取方法从分布式系统中读取该数据。也就是说,数据发送方A可以经过分布式系统中的节点1,....,节点 N,容错性地发送数据D给数据接收方B。
总结来说,本公开提供的分布式系统可以实现上述的数据分发方法、数据存储方法、数据读取方法、数据传输方法,能够确保数据安全性,降低数据的静态存储成本(每个节点不必存储数据整体,只需要存储数据的一部分数据块),降低数据分发、存储、读取、传输过程中所占用的带宽成本,降低消息复杂度以提升系统效率。
附图说明
图1示例性提供了一种AVID协议的实现过程。
图2示例性提供了一种VCID协议的实现过程。
图3示例性提供一种数据分发方法的流程。
图4示例性提供另一种数据分发方法的流程。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
本公开提供的各个实施例中的分布式系统包括N个节点,一般而言,为了使得分布式系统可以具有节点容错能力,通常需要假设所容错的节点数量f,然后基于f确定分布式系统中节点的数量,即N。对于拜占庭容错,N>3f即可,N至少为4。此外,分布式系统也可以不具有拜占庭容错能力(既兼容一定数量的宕机节点,也兼容一定数量的作恶节点),而是仅仅具有普通容错能力,既兼容一定数量的宕机节点存在,不能兼容一定数量的作恶节点存在,这种情况下,N>2f即可,N至少为3。为了描述的方便,后文以拜占庭容错的情况为例进行说明,在此基础上,本领域技术人员容易想到普通容错的情况的实施例。
还需要说明的是,本文中所述的节点可以具体为设备或设备集群,设备例如可以是服务器。另外,在后文的描述中,将宕机或者作恶的节点称为错误节点,将非错误节点称为正确的节点。
通常,为了兼顾低风险与低成本,可以不采用基于数据分片的存储方案与基于数据副本的存储方案,而是采用基于纠删码技术的存储方案。
一种现有的基于技术纠删码技术的存储方案是基于数据分发协议AVID实现的,这种数据分发协议的具体实现细节此处不赘述,但是需要强调的是,AVID协议的实现过程中,节点间需要交互的消息数量较多(这意味着会占用较多带宽,也带来很大的消息复杂度,且这种消息复杂度不是线性的)。
图1示例性提供了一种AVID协议的实现过程。如图1所示,每条横线代表分布式系统中的一个节点,一条横线上的实心圆点代表同一节点在不同阶段的身份。假设分布式系统中有4个节点。在AVID协议实现过程中,主要存在SEND、ECHO、READY三阶段,节点间的每次消息交互在图1中用箭头表示。可以看出,AVID协议实现过程中,节点间的需要交互的消息数量是比较多的,消息复杂度并不是线性的,AVID的消息复杂度可以用O(N2) 来表示,N为节点数量。
为此,本公开提供了一种可以节省带宽且消息复杂度为线性的数据分发协议,这种数据分发协议可以称为可验证一致信息分发(Verifiable Consistent InformationDispersal,VCID)。此处的线性复杂度是指,分布式系统中节点数量线性增长,相应的消息复杂度也仅仅会线性增长。
图2示例性提供了一种VCID协议的实现过程。如图2所示,相比于图1所示的AVID协议的实现过程,在VCID协议的实现过程中,节点间需要交互的消息数量较少,并且消息复杂度是线性的。
此外需要强调,VCID协议属于异步协议,其并不依赖于时间假设而实现。
另外,VCID协议可以实现如下4点安全特性:
1、如果分布式系统中的一个正确节点作为分发需求方分发了数据D,那么分布式系统中的所有正确节点都将会确认数据D的一个数据块(基于纠删码技术生成的数据块)。
2、分布式系统中任意f+1个正确节点所输出的数据块都可以恢复成原始数据D。
3、如果数据读取方拿到了数据D在分布式系统中进行分发之后产生的安全证明,则数据读取方一定能从分布式系统中读取到数据D。
4、如果分布式系统中的一个正确节点作为数据发送方通过分布式系统发送了数据D,那么数据接收方必然可以通过分布式系统接收到数据D。
下面具体介绍基于VCID协议的数据分发方法。
图3示例性提供一种数据分发方法的流程,包括以下步骤:
S300:分发需求方基于纠删码技术将待分发的数据D转换成N个数据块。
首先需要说明的是,在下文中,采用如下描述规则:
f表示分布式系统所容错的节点数量,N表示分布式系统的节点数量。包括N在内的大写字母表示固定的数据或者固定的值,小写字母表示变量(f除外,属于特殊情况)。当描述小写字母所表示的变量时,意味着该变量需要将其可能的每个取值都分别赋予该变量。例如,节点i代表分布式系统中的每个节点,i的取值包括1到N中的多个数值或每个数值。
分发需求方是指对数据分发有需求的一方,分发数据方可以是用户的客户端,也可以是分布式系统中的任一节点。
现有的纠删码技术可以理解为将一个数据转换成N个不同数据块,基于这N个数据块中的M个数据块就可以恢复出原始数据。其中,将待分发的数据记为D,N个数据块包括Di,i=1、…、N,基于所述N个数据块中的M个数据块可得到D,M<N,N=M+2f,M>f。
S301:分发需求方生成用于验证数据块是否合法的特征交叉校验信息fpcc。
现有的fpcc(finger-printed cross-checksum)技术可以实现对于任一数据块,验证该数据块是否属于利用纠删码技术从原数据中拆出的数据块。本文为了描述的方便,将数据块合法定义为数据块属于原始数据D的N个数据块之一。fpcc含有N个纠删码数据块的哈希,和M 个纠删码数据块的全域哈希(universal hash function)。M个数据块的全域哈希需要保持纠删码数据块间的线性变换(linear combination)关系。
fpcc是一种数据结构,分发需求方在应用纠删码技术处理数据D时,可以生成fpcc。
S302:分布式系统的节点i获取分发需求方构建的分发消息。
此处需要说明,并不是分布式系统中的每个节点都必然会获取到分发需求方发送的分发消息,但是至少N-f个正确节点可以收到分发消息,因此,此处的节点i可以代表每个正确节点。
分发消息可以包括Di与fpcc,不同正确节点接收到的Di是不同的。
S303:节点i基于该分发消息中的fpcc验证Di是否合法,若合法,则基于预设生成规则,利用该分发消息中的fpcc生成已校验信息,并对已校验信息进行签名得到签名Si。
在一些实施例中,发呢发消息还可以包含分发流程标识,用于区分不同的待存储的数据的分发流程。
此处的预设生成规则可以是,将该分发消息中的fpcc作为已校验信息;或者将该分发消息中的fpcc的哈希值作为已校验信息。
如果验证不合法,则节点i可以不生成已校验信息,也就不会得到签名Si。
容易理解,不同正确节点得到的签名Si中i是不同的,因此签名Si也是不同的。
S304:分发需求方获取节点i构建准备消息,该准备消息包括已校验信息与Si;并且,对该准备消息中的Si进行验证。
如果前文所述的分发消息还包含分发流程标识,则每个准备消息还可以包含分发流程标识。
S305:分发需求方若确定获取到至少M+f个准备消息包含相同的已校验信息,并且,该至少M+f个准备消息皆通过签名验证,则基于该至少M+f个准备消息中的签名,构建包含签名的结束消息并发送给节点i。
如果前文所述的分发消息还包含分发流程标识,则每个结束消息还包括分发流程标识。
S306:节点i在获取到分发需求方构建的结束消息之后,验证结束消息包含的签名,若验证通过,则确认Di与fpcc。
此外,针对已校验信息采用的签名算法,可以是门限签名、普通签名或者聚合签名。
在一些实施例中,各节点之间可以预先基于门限签名协议,约定共同的公钥PK与节点 i的私钥SKi;其中,该门限签名协议的门限值≥M+f。节点i可以使用私钥SKi对已校验信息进行签名得到签名Si。分发需求方可以基于门限签名协议,将该至少M+f个准备消息中的签名组合成门限签名S,并构建包含S的结束消息。节点i可以使用公钥PK验证S。
另外,可以在图3所示的数据分发方法的基础上,增加对分发需求方的权限控制功能。只要拥有权限的分发需求方才可以向分布式系统写入数据。
图4示例性提供另一种数据分发方法的流程,包括以下步骤:
S400:分发需求方基于纠删码技术将待分发的数据D转换成N个数据块。
S401:分发需求方生成用于验证数据块是否合法的特征交叉校验信息fpcc。
S402:分布式系统的节点i获取分发需求方构建的分发消息。
S403:节点i基于该分发消息中的fpcc验证Di是否合法,并且,验证L是否为基于fpcc 得到的签名,若验证结果皆为是,则基于预设生成规则,利用该分发消息中的fpcc生成已校验信息,并对已校验信息进行签名得到签名Si。
S404:分发需求方获取节点i构建准备消息,该准备消息包括已校验信息与Si;并且,对该准备消息中的Si进行验证。
S405:分发需求方若确定获取到至少M+f个准备消息包含相同的已校验信息,并且,该至少M+f个准备消息皆通过签名验证,则基于该至少M+f个准备消息中的签名,构建包含签名的结束消息并发送给节点i。
S406:节点i在获取到分发需求方构建的结束消息之后,验证结束消息包含的签名,若验证通过,则确认Di、fpcc与L。
图4所示方法与图3所示方法的主要区别在于,图4所示方法可以实现对分发需求方的权限控制。
分发需求方构建的分发消息中除了需要至少包含Di、fpcc,还需要包含L,L是分发需求方的签名。在一些实施例中,L是分发需求方对fpcc生成的签名。容易理解,L不能是分发需求方对D的签名,因为每个节点不能拿到完整的数据D,无法实现对这样的签名的验证。
通过图3或图4所示方法,在分布式系统中实现数据分发过程中,可以占用更少的网络带宽,并且节点间需要交互的消息数量较少,带来更低的消息复杂度,实际上,上述技术方案所实现的消息复杂度是线性的。
进一步地,基于这样的数据分发方法可以在分布式系统中实现数据存储,这意味着数据存储至分布式系统的过程中可以占用更少的带宽以及带来线性的消息复杂度,这意味着比较低的存储成本。同时,在上述的数据存储方法中,分布式系统中不同节点存储数据的不同数据块而不必每个节点都存储数据整体,这也可以节省存储成本。而且,在上述的数据存储方法中,由于应用了纠删码技术生成数据块,因此,即便分布式系统中的一些节点宕机,或者一些节点所存储的数据块丢失(这样的节点数量通常不会超过f,即分布式系统所容错的节点数量),剩余可用的节点(至少M个)所存储的数据块依然可以恢复得到数据整体,确保数据的安全性。
再进一步地,基于上述的数据存储方法,可以进一步实现数据读取方法,读取需求方可以向分布式系统中所有节点分别发送数据读取请求,即便一些节点不能配合(如宕机或者故意作恶)提供正确的数据块,读取需求方也可以获取到至少f+1个节点返回的正确数据块,并据此得到想要获取的数据整体。此处需要说明,在此数据读取方法中,节点间涉及的消息复杂度也是线性的。
更进一步地,基于上述的数据存储方法与数据读取方法,可以实现一种数据传输方法。这样可以确保数据在传输过程中不会丢失、不会被篡改。具体而言,数据发送方利用上述的数据存储方法将数据存储至分布式系统,然后,数据接收方利用上述的数据读取方法从分布式系统中读取该数据。
总结来说,本公开提供的分布式系统可以实现上述的数据分发方法、数据存储方法、数据读取方法、数据传输方法,能够确保数据安全性,降低数据的静态存储成本(每个节点不必存储数据整体,只需要存储数据的一部分数据块),降低数据分发、存储、读取、传输过程中所占用的带宽成本,降低消息复杂度以提升系统效率。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和 /或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和 /或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 (CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (15)
1.一种数据分发方法,包括:
分发需求方基于纠删码技术将待分发的数据D转换成N个数据块,其中,所述N个数据块包括Di,i=1、…、N,基于所述N个数据块中的M个数据块可得到D,N=M+2f,M>f,f为包括N个节点的分布式系统所容错的节点数量;
分发需求方生成用于验证数据块是否合法的特征交叉校验信息fpcc;其中,若数据块属于所述N个数据块,则数据块合法;
分布式系统的节点i获取分发需求方构建的分发消息,该分发消息包括Di与fpcc;
节点i基于该分发消息中的fpcc验证Di是否合法,若合法,则基于预设生成规则,利用该分发消息中的fpcc生成已校验信息,并对已校验信息进行签名得到签名Si;
分发需求方获取节点i构建准备消息,该准备消息包括已校验信息与Si;并且,对该准备消息中的Si进行验证;
分发需求方若确定获取到至少M+f个准备消息包含相同的已校验信息,并且,该至少M+f个准备消息皆通过签名验证,则基于该至少M+f个准备消息中的签名,构建包含签名的结束消息并发送给节点i;
节点i在获取到分发需求方构建的结束消息之后,验证结束消息包含的签名,若验证通过,则确认Di与fpcc。
2.如权利要求1所述方法,分发需求方包括:分布式系统之外的客户端,或者,分布式系统的任一节点。
3.如权利要求1所述方法,每个分发消息还包括分发流程标识,用于区分不同的待存储的数据的分发流程;
每个准备消息还包括分发流程标识,每个结束消息还包括分发流程标识。
4.如权利要求1所述方法,利用该分发消息中的fpcc生成已校验信息,包括:
将该分发消息中的fpcc作为已校验信息;
或者
将该分发消息中的fpcc的哈希值作为已校验信息。
5.如权利要求1所述方法,还包括:
各节点之间预先基于门限签名协议,约定共同的公钥PK与节点i的私钥SKi;其中,该门限签名协议的门限值≥M+f;
节点i对已校验信息进行签名得到签名Si,包括:
使用私钥SKi对已校验信息进行签名得到签名Si;
分发需求方基于该至少M+f个准备消息中的签名,构建包含签名的结束消息,包括:
基于门限签名协议,将该至少M+f个准备消息中的签名组合成门限签名S,并构建包含S的结束消息;
节点i验证结束消息包含的签名,包括:
节点i使用公钥PK验证S。
6.如权利要求1所述方法,还包括:
节点i在存储Di与fpcc之后,生成数据安全证明,该数据安全证明至少包含:已校验信息、结束消息所包含的签名。
7.如权利要求6所述方法,该数据安全证明还包含:
数据D对应的分发流程标识。
8.一种数据分发方法,包括:
分发需求方基于纠删码技术将待分发的数据D转换成N个数据块,其中,所述N个数据块包括Di,i=1、…、N,基于所述N个数据块中的M个数据块可得到D,N=M+2f,M>f,f为包括N个节点的分布式系统所容错的节点数量;
分发需求方生成用于验证数据块是否合法的特征交叉校验信息fpcc;其中,若数据块属于所述N个数据块,则数据块合法;
分布式系统的节点i获取分发需求方构建的分发消息,该分发消息包括Di、fpcc与L;
节点i基于该分发消息中的fpcc验证Di是否合法,并且,验证L是否为基于fpcc得到的签名,若验证结果皆为是,则基于预设生成规则,利用该分发消息中的fpcc生成已校验信息,并对已校验信息进行签名得到签名Si;
分发需求方获取节点i构建准备消息,该准备消息包括已校验信息与Si;并且,对该准备消息中的Si进行验证;
分发需求方若确定获取到至少M+f个准备消息包含相同的已校验信息,并且,该至少M+f个准备消息皆通过签名验证,则基于该至少M+f个准备消息中的签名,构建包含签名的结束消息并发送给节点i;
节点i在获取到分发需求方构建的结束消息之后,验证结束消息包含的签名,若验证通过,则确认Di、fpcc与L。
9.如权利要求8所述方法,还包括:
节点i在存储Di、fpcc与L之后,生成数据安全证明,该数据安全证明至少包含:已校验信息、结束消息所包含的签名、L。
10.如权利要求9所述方法,该数据安全证明还包含:
数据D对应的分发流程标识。
11.一种数据存储方法,基于权利要求1-10任一项所述的数据分发方法,所述数据存储方法包括:
节点i在确认Di与fpcc之后,存储Di与fpcc。
12.一种读取基于权利要求11所述方法存储的数据的方法,包括:
节点i获取读取需求方发起的数据读取请求,该数据读取请求指定了待读取的数据D;
读取需求方若获取到至少f+1个节点分别返回的数据块与一致的fpcc,并且对于该至少f+1个节点中的每个节点,基于该节点存储的fpcc确定该节点存储的数据块合法,则基于该至少f+1个数据块,得到数据D。
13.如权利要求12所述方法,读取需求方是之前向分布式系统提交数据D的分发需求方;或者,读取需求方不是之前向分布式系统提交数据D的分发需求方;
若读取需求方不是之前向分布式系统提交数据D的分发需求方,则所述方法还包括:
读取需求方在发起数据读取请求之前,获取数据D对应的数据安全证明;
对该数据安全证明中的签名进行验证;
读取需求方发起的数据读取请求,包括:
读取需求方在确定对该数据安全证明中的签名进行验证之后,发起的数据读取请求。
14.一种数据传输方法,用于将数据由数据发送方传输至数据接收方,所述方法包括:
数据发送方通过权利要求11所述方法,将待传输的数据存储至分布式系统;
数据接收方通过权利要求12或113所述方法,从分布式系统读取该数据。
15.一种分布式系统,包括N个节点,所述分布式系统应用于权利要求1-14任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111642238.0A CN114780987B (zh) | 2021-12-29 | 2021-12-29 | 数据分发、存储、读取、传输方法及分布式系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111642238.0A CN114780987B (zh) | 2021-12-29 | 2021-12-29 | 数据分发、存储、读取、传输方法及分布式系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114780987A true CN114780987A (zh) | 2022-07-22 |
CN114780987B CN114780987B (zh) | 2023-08-29 |
Family
ID=82423141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111642238.0A Active CN114780987B (zh) | 2021-12-29 | 2021-12-29 | 数据分发、存储、读取、传输方法及分布式系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114780987B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012068184A1 (en) * | 2010-11-15 | 2012-05-24 | File System Labs Llc | Methods and apparatus for distributed data storage |
CN107729536A (zh) * | 2017-10-31 | 2018-02-23 | 新华三技术有限公司 | 一种数据存储方法和装置 |
CN109871366A (zh) * | 2019-01-17 | 2019-06-11 | 华东师范大学 | 一种基于纠删码的区块链分片存储与查询方法 |
US20190311358A1 (en) * | 2018-04-09 | 2019-10-10 | Storecoin Inc. | Fork-Tolerant Consensus Protocol |
CN111526217A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的共识方法和系统 |
CN112835743A (zh) * | 2021-01-25 | 2021-05-25 | 中央财经大学 | 分布式账本数据存储优化方法、装置、电子设备及介质 |
CN112988683A (zh) * | 2021-02-07 | 2021-06-18 | 北京金山云网络技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113783935A (zh) * | 2021-08-12 | 2021-12-10 | 清华大学 | 一种拜占庭容错方法及装置 |
-
2021
- 2021-12-29 CN CN202111642238.0A patent/CN114780987B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012068184A1 (en) * | 2010-11-15 | 2012-05-24 | File System Labs Llc | Methods and apparatus for distributed data storage |
CN107729536A (zh) * | 2017-10-31 | 2018-02-23 | 新华三技术有限公司 | 一种数据存储方法和装置 |
US20190311358A1 (en) * | 2018-04-09 | 2019-10-10 | Storecoin Inc. | Fork-Tolerant Consensus Protocol |
CN109871366A (zh) * | 2019-01-17 | 2019-06-11 | 华东师范大学 | 一种基于纠删码的区块链分片存储与查询方法 |
CN111526217A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的共识方法和系统 |
CN112835743A (zh) * | 2021-01-25 | 2021-05-25 | 中央财经大学 | 分布式账本数据存储优化方法、装置、电子设备及介质 |
CN112988683A (zh) * | 2021-02-07 | 2021-06-18 | 北京金山云网络技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113783935A (zh) * | 2021-08-12 | 2021-12-10 | 清华大学 | 一种拜占庭容错方法及装置 |
Non-Patent Citations (3)
Title |
---|
CHAO LIU等: "MiB:Asynchronous BFT with More Replicas", ARXIV * |
范捷;易乐天;舒继武;: "拜占庭系统技术研究综述", 软件学报, no. 06 * |
蔡鸾佳: "拜占庭容错纠删码分布式存储协议", 计算机系统应用 * |
Also Published As
Publication number | Publication date |
---|---|
CN114780987B (zh) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111656343B (zh) | 可信执行环境中基于纠错编码的共享区块链数据存储 | |
CN111837117B (zh) | 可信执行环境中基于纠错编码的共享区块链数据存储 | |
CN111066285B (zh) | 基于sm2签名恢复公钥的方法 | |
CN110612700B (zh) | 基于恢复的公钥进行认证 | |
CN111163182B (zh) | 基于区块链的设备注册方法、装置、电子设备和存储介质 | |
JP7047133B2 (ja) | 符号化ブロックチェーンデータのインデックス化および復元 | |
US11023314B2 (en) | Prioritizing shared blockchain data storage | |
CN110915164A (zh) | 基于可信执行环境中执行的智能合约操作处理区块链数据 | |
KR102363271B1 (ko) | 에러 정정 코드에 기초한 공유 블록체인 데이터 저장의 데이터 보안 | |
CN111095218B (zh) | 基于纠错编码存储共享的区块链数据的方法、系统及装置 | |
CN110798308A (zh) | 一种区块链的签名方法和系统 | |
TW202119428A (zh) | 基於錯誤校正碼之共用區塊鏈資料儲存的共識 | |
CN110597824A (zh) | 一种基于区块链网络的数据存储方法以及装置 | |
CN111786812A (zh) | 节点管理方法、装置、计算机设备和存储介质 | |
US11387990B2 (en) | Method and apparatus for generating description information | |
CN111033491A (zh) | 基于纠错编码存储共享的区块链数据 | |
CN111226209A (zh) | 在基于区块链的系统中执行映射迭代 | |
CN114127724A (zh) | 针对多副本存储的完整性审计 | |
US20150023498A1 (en) | Byzantine fault tolerance and threshold coin tossing | |
CN114398651B (zh) | 秘密数据共享方法及分布式系统 | |
CN113342802A (zh) | 区块链数据存储的方法和装置 | |
CN114780987A (zh) | 数据分发、存储、读取、传输方法及分布式系统 | |
US10177918B2 (en) | User permission check system | |
CN115345760B (zh) | 基于区块链的多方签约方法和装置、电子设备和存储介质 | |
CN114782047B (zh) | 数据共识方法及分布式系统 |
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 |