CN107770154B - 基于云存储的区块链可靠数据存储方法、终端及系统 - Google Patents
基于云存储的区块链可靠数据存储方法、终端及系统 Download PDFInfo
- Publication number
- CN107770154B CN107770154B CN201710866747.9A CN201710866747A CN107770154B CN 107770154 B CN107770154 B CN 107770154B CN 201710866747 A CN201710866747 A CN 201710866747A CN 107770154 B CN107770154 B CN 107770154B
- Authority
- CN
- China
- Prior art keywords
- file
- subfile
- mark
- vector
- detected
- 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
Classifications
-
- 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/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- 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
本发明实施例提供一种基于云存储的区块链可靠数据存储方法、终端及系统,所述方法包括:按区块为单位获取区块链中的文件;对区块链中的文件进行分割,并标识分割后的文件;建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系;将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。所述终端执行上述方法。所述系统包括上述终端和云服务器。本发明实施例提供的基于云存储的区块链可靠数据存储方法、终端和系统,将数据外包存储至云服务器,终端可周期性地审计数据的完整性。
Description
技术领域
本发明实施例涉及计算机应用技术领域,具体涉及一种基于云存储的区块链可靠数据存储方法、终端及系统。
背景技术
区块链技术的出现推动了无中心电子货币、分布式账本以及一系列以区块链为基础的分布式应用等的发展。然而现有的区块链技术仅要求节点在本地存储数据备份,没有提供任何一种机制保证在全网中一定存在某一个区块。一旦出现设备故障、人为误操作、自然灾害等突发情况,数据可能被损坏甚至永久性地丢失。这导致了现有的区块链技术不能够适用于需要可靠存储的应用场景。
因此,如何保证区块链数据的完整性成为亟待解决的问题。
发明内容
针对现有技术存在的问题,本发明实施例提供一种基于云存储的区块链可靠数据存储方法、终端及系统。
第一方面,本发明实施例提供一种基于云存储的区块链可靠数据存储方法,所述方法包括:
按区块为单位获取区块链中的文件;
对区块链中的文件进行分割,并标识分割后的文件;
建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系;
将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。
第二方面,本发明实施例提供一种基于云存储的区块链可靠数据存储终端,所述终端包括:
获取单元,用于按区块为单位获取区块链中的文件;
标识单元,用于对区块链中的文件进行分割,并标识分割后的文件;
建立单元,用于建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系;
存储单元,用于将标识后的文件存储于云服务器;
下载单元,用于在指定需要下载的数据后根据所述映射关系从所述云服务器中获取相应的标识后的文件,并进行下载到本地;
验证单元,用于对存储于云服务器上的标识后的文件进行文件完整性的验证。
第三方面,本发明实施例提供一种基于云存储的区块链可靠数据存储系统,所述文件存储系统包括终端和云服务器。
本发明实施例提供的基于云存储的区块链可靠数据存储方法、终端和系统,将数据外包存储至云服务器,终端可周期性地审计数据的完整性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例基于云存储的区块链可靠数据存储方法流程示意图;
图2为本发明实施例基于云存储的区块链可靠数据存储系统数据结构图;
图3为本发明另一实施例基于云存储的区块链可靠数据存储方法流程示意图;
图4为本发明实施例基于云存储的区块链可靠数据存储系统流程图;
图5为本发明实施例基于云存储的区块链可靠数据存储终端结构示意图;
图6为本发明实施例基于云存储的区块链可靠数据存储系统结构示意图;
图7为本发明实施例提供的终端实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例基于区块链的文件存储方法流程示意图,如图1所示,本发明实施例提供的一种基于区块链的文件存储方法,包括以下步骤:
S1:按区块为单位获取区块链中的文件。
具体的,终端按区块为单位获取区块链中的文件。这里的终端不限于本地终端和移动终端,该文件特指区块封装的交易数据集,利用该数据集构成的Merkle哈希树的根节点可以实现快速验证某个特定的数据存在于该区块中。
特别地,当区块链中产生新区块时,本步骤会被触发。
S2:对区块链中的文件进行分割,并标识分割后的文件。
具体的,终端对区块链中的文件进行分割,并标识分割后的文件。图2为本发明实施例区块链系统数据结构图,如图2所示,文件被分割后,需要对分割后的文件进行标识,例如可以采用ID号:F1~F7分别作为分割后文件中的每一个子文件的标识。
S3:建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系。
具体的,终端建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系。映射关系可以是F1对应D1、F2对应D2等一一对应的关系,但不作具体限定。特别地,区块链技术采用Merkle哈希树结构是为了提供快速验证某个数据存在于某个区块的机制。如图2所示,Merkle哈希树结构中D1~D4为区块链需要封装的交易数据本身对应的哈希值,D5~D6为两两哈希后的中间值,D7为Merkle根。为了减少云服务器的计算开销,除Merkle根外其余所有数据均需要被存储在云服务器上。
S4:将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。
具体的,终端将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。由于可周期性地对标识后的文件进行完整性审计,可保证文件的存储可靠性。通过上述的映射关系可以从云服务器中获取原文件。
本发明实施例提供的基于云存储的区块链可靠数据存储方法,将数据外包存储至云服务器,终端可周期性地审计数据的完整性。
在上述实施例的基础上,所述方法还包括:
在所述将标识后的文件存储于云服务器的步骤之后,对标识后的文件进行文件完整性的验证。
具体的,终端在所述将标识后的文件存储于云服务器的步骤之后,对标识后的文件进行文件完整性的验证。
和/或,
在所述并根据所述映射关系从所述云服务器中获取所述标识后的文件的步骤之后,将标识后的文件下载到所述区块链的本地节点。
具体的,终端在所述并根据所述映射关系从所述云服务器中获取所述标识后的文件的步骤之后,将标识后的文件下载到所述区块链的本地节点。可以对存储于云服务器中的文件进行完整性的验证和下载到本地等,但不作具体限定。
本发明实施例提供的基于云存储的区块链可靠数据存储方法,能够进行文件完整性的验证和下载到区块链的本地节点。
在上述实施例的基础上,所述对标识后的文件进行文件完整性的验证,包括:
随机选取待检测文件并获取其被分割的子文件数m和所述待检测文件的标识。
具体的,终端随机选取待检测文件并获取其被分割的子文件数m和所述待检测文件的标识。随机选取待检测文件,即随机选取区块链的一个区块作为待检测区块,根据该区块中存储的数据对应表,获取所述待检测文件被分割后的子文件数m,m可以等于7(对应图2中的F1-F7):待检测文件的标识用于区分不同的待检测文件,对应图2中的区块序列号。
根据所述子文件数m和第一预设规则,生成L组随机变量。
具体的,终端根据所述子文件数m和第一预设规则,生成L组随机变量。对生成L组随机变量详细说明如下:
在m个子文件中选择L个子文件;
生成与每一个子文件标识ij一一对应的随机数cj,随机数的取值范围在预设的有限域之内;
将子文件标识ij和随机数cj两两组合,以获取L组随机变量{ij,cj},其中,1≤j≤L。
具体说明如下:在7个子文件中(m=7)中选择3(L=3)个子文件,分别记作子文件1、子文件2和子文件3;生成与子文件1对应的随机数20、与子文件2对应的随机数25、与子文件3对应的随机数15(需要说明的是:随机数的取值范围可以在预设的有限域之内,预设的有限域的范围可以根据实际情况自主设置,例如1~255);获取3组随机变量为{子文件1,20}、{子文件2,25}、{子文件3,15}。
向云服务器发送数据查询请求,所述数据查询请求携带有所述L组随机变量,以供所述云服务器根据预先存储的文件分割后子文件的标签、所述数据查询请求和第二预设规则,获取反映待检测文件完整性的计算结果;其中,1≤L≤m。
具体的,终端向云服务器发送数据查询请求,所述数据查询请求携带有所述L组随机变量,以供所述云服务器根据预先存储的文件分割后子文件的标签、所述数据查询请求和第二预设规则,获取反映待检测文件完整性的计算结果;其中,1≤L≤m。数据查询请求可以理解为待检测文件的数据完整性的查询请求。对于云服务器根据预先存储的文件分割后子文件的标签、所述数据查询请求和第二预设规则,获取反映待检测文件完整性的计算结果的详细说明,可参照后续云服务器作为执行主体的验证待检测文件完整性的方法介绍。
接收所述云服务器返回的所述计算结果,并根据所述计算结果、所述L组随机变量、所述标识、预先获得的秘钥和第三预设规则,验证所述待检测文件完整性。
具体的,终端接收所述云服务器返回的所述计算结果,并根据所述计算结果、所述L组随机变量、所述标识、预先获得的秘钥和第三预设规则,验证所述待检测文件完整性。计算结果(w,t)中的第一子文件向量w和所述第二子文件向量t的获取步骤可以参照后续云服务器作为执行主体的验证待检测文件完整性的方法介绍。对于根据所述计算结果、所述L组随机变量、所述标识、预先获得的秘钥和第三预设规则,验证所述待检测文件完整性详细说明如下:
预先获得的秘钥可以包括第一秘钥K1和第二秘钥K2,将第一秘钥K1输入第一预设函数(可以是IEEE Std 1363-2000标准中的密钥导出函数KDF1),将该KDF1的输出值作为向量u;
将向量u与计算结果中的第一子文件向量w进行内积运算,以获取内积运算结果a,第一子文件向量w的获取可参照后续云服务器作为执行主体的验证待检测文件完整性的方法介绍。
将第二秘钥K2、待检测文件的标识和L组随机变量中的子文件标识ij输入第二预设函数(可以是伪随机函数),以获取中间计算结果H(K2,(id,ij));
再根据如下公式获取中间参数b:
其中,cj为L组随机变量中的随机数、H为第二预设函数、K2为第二秘钥;
再将内积运算结果a与中间参数b相加,如果a+b等于计算结果中的第二子文件向量t,则验证待检测文件完整性为完整;如果a+b不等于计算结果中的第二子文件向量t,则验证待检测文件完整性为不完整。
本发明实施例提供的基于云存储的区块链可靠数据存储方法,通过将待检测文件存储在云服务器,并验证由云服务器返回的计算结果,能够对待检测文件完整性进行准确验证。
在上述实施例的基础上,所述根据所述子文件数m和第一预设规则,生成L组随机变量,包括:
在所述子文件m中选择L个子文件。
具体的,终端在所述子文件m中选择L个子文件。可参照上述实施例,不再赘述。
生成与每一个子文件标识ij一一对应的随机数cj,所述随机数的取值范围在预设的有限域之内。
具体的,终端生成与每一个子文件标识ij一一对应的随机数cj,所述随机数的取值范围在预设的有限域之内。可参照上述实施例,不再赘述。
将所述子文件标识ij和所述随机数cj两两组合,以获取L组随机变量{ij,cj},其中,1≤j≤L。
具体的,终端将所述子文件标识ij和所述随机数cj两两组合,以获取L组随机变量{ij,cj},其中,1≤j≤L。可参照上述实施例,不再赘述。
本发明实施例提供的基于云存储的区块链可靠数据存储方法,通过生成L组随机变量,保证了对待检测文件完整性进行验证的顺利进行。
在上述实施例的基础上,预先获得的秘钥包括第一秘钥K1和第二秘钥K2,相应的;所述根据所述计算结果、所述L组随机变量、所述标识、预先获得的秘钥和第三预设规则,验证所述待检测文件完整性,包括:
将所述第一秘钥K1输入第一预设函数,以获取向量元素数为n的向量u。
具体的,终端将所述第一秘钥K1输入第一预设函数,以获取向量元素数为n的向量u。可参照上述实施例,不再赘述。
将所述向量u与所述计算结果中的第一子文件向量w进行内积运算,以获取内积运算结果a。
具体的,终端将所述向量u与所述计算结果中的第一子文件向量w进行内积运算,以获取内积运算结果a。可参照上述实施例,不再赘述。
将所述第二秘钥K2、所述标识和所述L组随机变量中的子文件标识ij输入第二预设函数,以获取中间计算结果H(K2,(id,ij)),其中,id为所述标识,ij为子文件标识。
具体的,终端将所述第二秘钥K2、所述标识和所述L组随机变量中的子文件标识ij输入第二预设函数,以获取中间计算结果H(K2,(id,ij)),其中,id为所述标识,ij为子文件标识。可参照上述实施例,不再赘述。
根据所述中间计算结果H(K2,(id,ij))和所述L组随机变量中的随机数cj获取中间参数b。
具体的,终端根据所述中间计算结果H(K2,(id,ij))和所述L组随机变量中的随机数cj获取中间参数b。可参照上述实施例,不再赘述。
根据所述内积运算结果a、所述中间参数b和所述计算结果中的第二子文件向量t,验证所述待检测文件完整性。
具体的,终端根据所述内积运算结果a、所述中间参数b和所述计算结果中的第二子文件向量t,验证所述待检测文件完整性。可参照上述实施例,不再赘述。
本发明实施例提供的基于云存储的区块链可靠数据存储方法,通过预先获得的秘钥计算验证待检测文件过程中的参数,还能够保证存储在云服务器中的文件数据的安全。
在上述实施例的基础上,根据所述中间计算结果H(K2,(id,ij))和所述L组随机变量中的随机数cj获取中间参数b,包括:
根据如下公式获取中间参数b:
其中,cj为L组随机变量中的随机数、H为第二预设函数、K2为第二秘钥、id为所述标识、ij为子文件标识、1≤j≤L。
具体的,终端根据如下公式获取中间参数b:
其中,cj为L组随机变量中的随机数、H为第二预设函数、K2为第二秘钥、id为所述标识、ij为为子文件标识、1≤j≤L。可参照上述实施例,不再赘述。
本发明实施例提供的基于云存储的区块链可靠数据存储方法,通过具体的公式计算中间参数b,进一步保证了能够对待检测文件完整性进行准确验证。
在上述实施例的基础上,所述根据所述内积运算结果a、所述中间参数b和所述第二子文件向量t,验证所述待检测文件完整性,包括:
将内积运算结果a和中间参数b进行相加。
具体的,终端将内积运算结果a和中间参数b进行相加。可参照上述实施例,不再赘述。
若相加结果等于所述第二子文件向量t,则验证所述待检测文件完整性为完整。
具体的,终端若判断获知相加结果等于所述第二子文件向量t,则验证所述待检测文件完整性为完整。可参照上述实施例,不再赘述。
或,
若相加结果不等于所述第二子文件向量t,则验证所述待检测文件完整性为不完整。
具体的,终端若判断获知相加结果不等于所述第二子文件向量t,则验证所述待检测文件完整性为不完整。可参照上述实施例,不再赘述。
本发明实施例提供的基于云存储的区块链可靠数据存储方法,通过验证a和b相加结果是否等于第二子文件向量t,能够准确地对待检测文件完整性进行验证。
在上述实施例的基础上,在获取待检测文件被分割的子文件数m和所述待检测文件的标识的步骤之前,所述方法还包括:
分别指定所有文件中的每一个文件的标识。
具体的,终端分别指定所有文件中的每一个文件的标识。即终端为每一个文件指定一个id,以区分不同的文件。
将所述每一个文件平均分成m份,并进行向量化,以获取向量集合vi。
具体的,终端将所述每一个文件平均分成m份,并进行向量化,以获取向量集合vi。向量化后的集合为{vi=[vi1....vin]}i=1...m,n可选为1024,举例说明如下:1个大小为6KB的文件,参照上述举例m=6,每一块对应的向量分别为{v1=[v11....v1n]}…{vm=[vm1....vmn]};即v1..vm分别对应1KB的大小。
将随机生成的第一秘钥K1输入第一预设函数,以获取向量元素数为n的向量u。
具体的,终端将随机生成的第一秘钥K1输入第一预设函数,以获取向量元素数为n的向量u。可参照上述举例。
将随机生成的第二秘钥K2、所述每一个文件的标识和m个子文件中的每一个子文件i输入第二预设函数H,以获取m个计算值bi。
具体的,终端将随机生成的第二秘钥K2、所述每一个文件的标识和m个子文件中的每一个子文件i输入第二预设函数H,以获取m个计算值bi。需要说明的是:i可以理解为每一个子文件标识,通过文件标识和子文件标识的结合可以确定哪一个文件中的哪一个子文件。获取m个计算值bi可参照上述举例。
将向量u和所述向量集合vi进行内积运算,以获取m个计算结果。
具体的,终端将向量u和所述向量集合vi进行内积运算,以获取m个计算结果。对于内积运算不再作具体说明。
将m个计算结果中的每一个与每一个计算值bi分别相加,相加的结果作为ti。
具体的,终端将m个计算结果中的每一个与每一个计算值bi分别相加,相加的结果作为ti。可以计算出m个ti。
将结果(vi,ti)和所述每一个文件的标识作为子文件的标签,并发送至云服务器,以供所述云服务器根据所述子文件的标签,获取待检测文件中的子文件信息(vij,tij)。
具体的,终端将结果(vi,ti)和所述每一个文件的标识作为子文件的标签,并发送至云服务器,以供所述云服务器根据所述子文件的标签,获取待检测文件中的子文件信息(vij,tij)。云服务器根据所述子文件的标签,获取待检测文件中的子文件信息(vij,tij)的详细说明,可参照后续云服务器作为执行主体的验证待检测文件完整性的方法介绍。
本发明实施例提供的基于云存储的区块链可靠数据存储方法,通过合理地对文件进行分割、以及对子文件的标签,能够使得云服务器更加合理地获取待检测文件中的子文件信息,从而在终端能够准确检验出待检测文件是否完整。
图3为本发明另一实施例基于云存储的区块链可靠数据存储方法流程示意图,如图3所示:对一种基于云存储的区块链可靠数据存储方法做进一步说明:(执行主体为云服务器)
S10:接收终端发送的数据查询请求,所述数据查询请求携带有L组随机变量。
具体的,云服务器接收终端发送的数据查询请求,所述数据查询请求携带有L组随机变量。数据查询请求可以理解为待检测文件的数据完整性的查询请求。L组随机变量获取的步骤可参照上述实施例。
S20:根据预先存储的子文件的标签、所述数据查询请求和第二预设规则,获取反映待检测文件完整性的计算结果。
具体的,云服务器根据预先存储的子文件的标签、所述数据查询请求和第二预设规则,获取反映待检测文件完整性的计算结果。详细说明如下:
根据预先存储的子文件的标签(包括(vi,ti)和文件的标识)、数据查询请求和第二预设规则,获取与数据查询请求对应的待检测文件中的子文件信息(vij,tij);参照上述举例:待检测文件被分成7个子文件(m=7),需要对其中的3个子文件进行检测(L=3),则j的取值为1、2、3。
根据如下公式分别计算第一子文件向量w和第二子文件向量t:
其中,w为第一子文件向量、cj为L组随机变量中的随机数、vij为所述子文件信息的第一分量。参照上述举例,w=20*待检测子文件对应的向量vi1+25*待检测子文件对应的向量vi2+15*待检测子文件对应的向量vi3
其中,t为第二子文件向量、cj为L组随机变量中的随机数、tij为子文件信息的第二分量;可参照上述计算w的步骤,不再赘述。
将所述第一子文件向量w和所述第二子文件向量t组合,以获取所述计算结果(w,t)。
S30:将所述计算结果发送至所述终端,以供所述终端根据所述计算结果、所述L组随机变量、待检测文件的标识、预先获得的秘钥和第三预设规则,验证所述待检测文件完整性。
具体的,云服务器将所述计算结果发送至所述终端,以供所述终端根据所述计算结果、所述L组随机变量、待检测文件的标识、预先获得的秘钥和第三预设规则,验证所述待检测文件完整性。终端根据所述计算结果、所述L组随机变量、待检测文件的标识、预先获得的秘钥和第三预设规则,验证所述待检测文件完整性的介绍可参照上述实施例,不再赘述。
本发明实施例提供的基于云存储的区块链可靠数据存储方法,通过合理地计算出的第一子文件向量w和第二子文件向量t,并发送给终端,使得终端能够准确验证待检测文件的完整性。
在上述实施例的基础上,所述根据预先存储的子文件的标签、所述数据查询请求和第二预设规则,获取反映待检测文件完整性的计算结果,包括:
根据预先存储的子文件的标签、所述数据查询请求和第二预设规则,获取与所述数据查询请求对应的待检测文件中的子文件信息(vij,tij)。
具体的,云服务器根据预先存储的子文件的标签、所述数据查询请求和第二预设规则,获取与所述数据查询请求对应的待检测文件中的子文件信息(vij,tij);可参照上述实施例,不再赘述。
根据如下公式分别计算第一子文件向量w和第二子文件向量t:
其中,w为第一子文件向量、cj为L组随机变量中的随机数、vij为所述子文件信息的第一分量。
其中,t为第二子文件向量、cj为L组随机变量中的随机数、tij为所述子文件信息的第二分量。
具体的,云服务器根据如下公式分别计算第一子文件向量w和第二子文件向量t:
其中,w为第一子文件向量、cj为L组随机变量中的随机数、vij为所述子文件信息的第一分量;可参照上述实施例,不再赘述。
其中,t为第二子文件向量、cj为L组随机变量中的随机数、tij为所述子文件信息的第二分量;可参照上述实施例,不再赘述。
将所述第一子文件向量w和所述第二子文件向量t组合,以获取所述计算结果(w,t)。
具体的,云服务器将所述第一子文件向量w和所述第二子文件向量t组合,以获取所述计算结果(w,t)。可参照上述实施例,不再赘述。
本发明实施例提供的基于云存储的区块链可靠数据存储方法,能够更加合理地计算出的第一子文件向量w和第二子文件向量t,并发送给终端,使得终端进一步能够准确验证待检测文件的完整性。
下面对本发明实施例基于云存储的区块链可靠数据存储方法的步骤进一步说明如下:参照图2实现基于云存储的区块链架构被划分为两个部分,内部网络(本地存储)及云(云存储)。内部网络由多个节点以P2P网络相互连接,共同参与新的交易数据及区块的产生,并将区块封装的一段时间内产生的所有交易数据外包存储至云端(云服务器),通过与云服务器的交互可以验证数据存储的完整性和/或下载指定的交易数据。
区块链是由一系列具有时间先后顺序的且具有特定结构的数据区块按区块哈希值链接组成,每个区块中记录着在一段时间内产生的所有交易数据。本发明实施例将数据本身外包存储,而为了描述数据产生顺序以及保证数据不被篡改等结构化数据则在每个节点处均有备份。这样做的目的是为了使区块链系统的正常运行无需频繁地与云服务器交互,以此保证运行效率。因此,在云端和节点本地均各自存储数据,但节点本地存储的数据仅占很小的存储空间。相应的数据结构如图2所示,存储于节点本地的结构化数据,是由一些列具有特殊结构的区块链接组成,以创世区块作为开端。除创世区块外,每个区块均包含区块序列号、区块头、区块大小、区块哈希及数据对应表字段。区块头记录父区块哈希、时间戳、Merkle根。其中,Merkle根是将该区块封装的所有交易数据构成的Merkle哈希树的根节点的值。不用下载所有的数据即可利用Merkle树结构快速地验证该区块存在某个特定的数据。存储于云端的数据与节点本地存储的数据结构一一对应,以区块作为存储的基本单元。为了实现可靠存储,需要采用安全云存储机制。因此,存储于云端的数据被按照特定的格式分割并标签化。分割之后的数据与真实的数据存在对应关系,该关系被记录在数据对应表中,被存储于节点本地,而数据被存储于云服务器,利用该数据对应表,每个节点都可以快速地定位数据,减少搜索时间,提高下载速率。
图4为本发明实施例基于云存储的区块链可靠数据存储系统流程图,首先生成创世区块,之后所有节点共同参与新区块的持续生成,包括:当任意节点产生新数据之后,将该数据广播至全网,当未达到产生新区块的触发条件时(如时间片未结束、数据量不够等),则重复以上步骤;当新区块产生时,则利用选取的安全云存储机制的相应算法(对应于上述的第一、第二、第三预设规则)处理该新区块包含的所有数据,即分割数据并标签化,并生成相应的数据对应表及结构化数据并将其共享至全网内所有节点,将处理过后的数据外包存储至云端;当一个区块处理完毕之后,则进入下一个区块的轮次,即重复以上的所有步骤。在区块不断增多的过程中,存在以下两种事件:当需要检验存储有效性时,则生成验证请求,等待云服务器返回的证据,验证该证据的正确性,若验证失败,则说明云端存在数据丢失。当需要下载数据时,则根据区块序列号、数据对应表等生成下载请求,等待云服务器的响应,处理返回的内容获取需要的原始数据。需要说明的是:图4中的“检验存储有效性”和“下载数据”的步骤并无时序上的先后关系,是根据终端发送的相应请求进行触发的。
图5为本发明实施例基于云存储的区块链可靠数据存储终端结构示意图,如图5所示,本发明实施例提供了一种基于云存储的区块链可靠数据存储终端,所述终端包括获取单元51、标识单元52、建立单元53和存储单元54,其中:
获取单元51用于按区块为单位获取区块链中的文件;标识单元52用于对区块链中的文件进行分割,并标识分割后的文件;建立单元53用于建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系;存储单元54用于将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。
具体的,获取单元51用于按区块为单位获取区块链中的文件;标识单元52用于对区块链中的文件进行分割,并标识分割后的文件;建立单元53用于建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系;存储单元54用于将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。
本发明实施例提供的基于云存储的区块链可靠数据存储终端,将数据外包存储至云服务器,终端可周期性地审计数据的完整性。
所述终端还可以包括下载单元55,用于在指定需要下载的数据后根据所述映射关系从所述云服务器中获取相应的标识后的文件,并进行下载到本地;验证单元56,用于对存储于云服务器上的标识后的文件进行文件完整性的验证。
本发明实施例提供的基于云存储的区块链可靠数据存储终端具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图6为本发明实施例基于云存储的区块链可靠数据存储系统结构示意图,如图6所示,本发明实施例提供一种基于云存储的区块链可靠数据存储系统,所述系统包括终端1和云服务器2。
图7为本发明实施例提供的终端实体结构示意图,如图7所示,所述终端包括:处理器(processor)701、存储器(memory)702和总线703;
其中,所述处理器701、存储器702通过总线703完成相互间的通信;
所述处理器701用于调用所述存储器702中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:按区块为单位获取区块链中的文件;对区块链中的文件进行分割,并标识分割后的文件;建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系;将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:按区块为单位获取区块链中的文件;对区块链中的文件进行分割,并标识分割后的文件;建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系;将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括按区块为单位获取区块链中的文件;对区块链中的文件进行分割,并标识分割后的文件;建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系;将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的终端等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。
Claims (9)
1.一种基于云存储的区块链可靠数据存储方法,其特征在于,包括:
按区块为单位获取区块链中的文件;
对区块链中的文件进行分割,并标识分割后的文件;
建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系;
将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述将标识后的文件存储于云服务器的步骤之后,对标识后的文件进行文件完整性的验证;
和/或,
在所述并根据所述映射关系从所述云服务器中获取所述标识后的文件的步骤之后,将标识后的文件下载到所述区块链的本地节点。
3.根据权利要求2所述的方法,其特征在于,所述对标识后的文件进行文件完整性的验证,包括:
随机选取待检测文件并获取其被分割的子文件数m和所述待检测文件的标识;
根据所述子文件数m和第一预设规则,生成L组随机变量;
向云服务器发送数据查询请求,所述数据查询请求携带有所述L组随机变量,以供所述云服务器根据预先存储的文件分割后子文件的标识、所述数据查询请求和第二预设规则,获取反映待检测文件完整性的计算结果;其中,1≤L≤m;
接收所述云服务器返回的所述计算结果,并根据所述计算结果、所述L组随机变量、所述标识、预先获得的秘钥和第三预设规则,验证所述待检测文件完整性。
4.根据权利要求3所述的方法,其特征在于,所述根据所述子文件数m和第一预设规则,生成L组随机变量,包括:
在所述m个子文件中随机选择L个子文件;
生成与每一个子文件标识ij一一对应的随机数cj,所述随机数的取值范围在预设的有限域之内;
将所述子文件标识ij和所述随机数cj两两组合,以获取L组随机变量{ij,cj},其中,1≤j≤L。
5.根据权利要求3所述的方法,其特征在于,预先获得的秘钥包括第一秘钥K1和第二秘钥K2,相应的;所述根据所述计算结果、所述L组随机变量、所述标识、预先获得的秘钥和第三预设规则,验证所述待检测文件完整性,包括:
将所述第一秘钥K1输入第一预设函数,以获取向量元素数为n的向量u;
将所述向量u与所述计算结果中的第一子文件向量w进行内积运算,以获取内积运算结果a;
其中,w为第一子文件向量、cj为L组随机变量中的随机数、vij为所述待检测文件中的子文件信息(vij,tij)的第一分量vij;
将所述第二秘钥K2、所述标识和所述L组随机变量中的子文件标识ij输入第二预设函数,以获取中间计算结果H(K2,(id,ij)),其中,id为所述标识,ij为子文件标识;
根据所述中间计算结果H(K2,(id,ij))和所述L组随机变量中的随机数cj获取中间参数b;
根据所述内积运算结果a、所述中间参数b和所述计算结果中的第二子文件向量t,验证所述待检测文件完整性;
其中,t为第二子文件向量、cj为L组随机变量中的随机数、tij为所述待检测文件中的子文件信息的第二分量tij。
6.根据权利要求5所述的方法,其特征在于,根据所述中间计算结果H(K2,(id,ij))和所述L组随机变量中的随机数cj获取中间参数b,包括:
根据如下公式获取中间参数b:
其中,cj为L组随机变量中的随机数、H为第二预设函数、K2为第二秘钥、id为所述标识、ij为子文件标识、1≤j≤L。
7.根据权利要求5所述的方法,其特征在于,所述根据所述内积运算结果a、所述中间参数b和所述第二子文件向量t,验证所述待检测文件完整性,包括:
将内积运算结果a和中间参数b进行相加;
若相加结果等于所述第二子文件向量t,则验证所述待检测文件完整性为完整;
或,
若相加结果不等于所述第二子文件向量t,则验证所述待检测文件完整性为不完整。
8.根据权利要求3至7任一所述的方法,其特征在于,在获取待检测文件被分割的子文件数m和所述待检测文件的标识的步骤之前,所述方法还包括:
分别指定所有文件中的每一个文件的标识;
将所述每一个文件平均分成m份,并进行向量化,以获取向量集合vi;
将随机生成的第一秘钥K1输入第一预设函数,以获取向量元素数为N的向量u;
将随机生成的第二秘钥K2、所述每一个文件的标识和m个子文件中的每一个子文件i输入第二预设函数H,以获取m个计算值bi;
将向量u和所述向量集合vi进行内积运算,以获取m个计算结果;
将m个计算结果中的每一个与每一个计算值bi分别相加,相加的结果作为ti;
将结果(vi,ti)和所述每一个文件的标识作为子文件的标签,并发送至云服务器,以供所述云服务器根据所述子文件的标签,获取待检测文件中的子文件信息(vij,tij)。
9.一种基于云存储的区块链可靠数据存储终端,其特征在于,包括:
获取单元,用于按区块为单位获取区块链中的文件;
标识单元,用于对区块链中的文件进行分割,并标识分割后的文件;
建立单元,用于建立标识后的子文件与Merkle哈希树结构除根节点外所有子节点之间的映射关系;
存储单元,用于将标识后的文件存储于云服务器,并根据所述映射关系从所述云服务器中获取所述标识后的文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710866747.9A CN107770154B (zh) | 2017-09-22 | 2017-09-22 | 基于云存储的区块链可靠数据存储方法、终端及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710866747.9A CN107770154B (zh) | 2017-09-22 | 2017-09-22 | 基于云存储的区块链可靠数据存储方法、终端及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107770154A CN107770154A (zh) | 2018-03-06 |
CN107770154B true CN107770154B (zh) | 2019-08-27 |
Family
ID=61266276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710866747.9A Active CN107770154B (zh) | 2017-09-22 | 2017-09-22 | 基于云存储的区块链可靠数据存储方法、终端及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107770154B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108494560A (zh) * | 2018-03-15 | 2018-09-04 | 南京智格电力科技有限公司 | 一种基于去中心化构思的安全服务链路系统 |
CN108681583A (zh) * | 2018-05-11 | 2018-10-19 | 北京奇虎科技有限公司 | 基于区块链的数据持有证明方法、装置及可读存储介质 |
CN110569213A (zh) * | 2018-05-18 | 2019-12-13 | 北京果仁宝软件技术有限责任公司 | 文件存取方法、装置和设备 |
CN108777613A (zh) * | 2018-06-01 | 2018-11-09 | 杭州电子科技大学 | 物联网中传感信息虚拟服务的数据分块安全存储方法 |
CN110633199A (zh) * | 2018-06-22 | 2019-12-31 | 富士通株式会社 | 用于支持智能合约的区块链的测试装置、方法及介质 |
CN109146447B (zh) * | 2018-07-09 | 2022-07-05 | 矩阵元技术(深圳)有限公司 | 区块链透明分片方法、装置及系统 |
CN109255056B (zh) * | 2018-08-16 | 2021-05-25 | 北京京东尚科信息技术有限公司 | 区块链的数据引用处理方法、装置、设备及存储介质 |
CN109408461A (zh) * | 2018-09-14 | 2019-03-01 | 中国农业大学 | 一种区块链的分布式存储系统及方法 |
CN109274752A (zh) * | 2018-10-10 | 2019-01-25 | 腾讯科技(深圳)有限公司 | 区块链数据的访问方法及装置、电子设备、存储介质 |
CN109194466B (zh) * | 2018-10-29 | 2021-07-06 | 南开大学 | 一种基于区块链的云端数据完整性检测方法及系统 |
CN109639420B (zh) * | 2019-01-02 | 2021-05-25 | 西南石油大学 | 基于区块链技术的可匿名身份的医疗云存储公共审计方法 |
CN109936620B (zh) * | 2019-01-21 | 2022-02-01 | 中国联合网络通信集团有限公司 | 基于区块链的存储方法及装置、系统与存储介质 |
CN110163007B (zh) * | 2019-04-23 | 2021-05-04 | 西安邮电大学 | 基于区块链的数据完整性验证方法、设备和存储介质 |
CN111221569B (zh) * | 2020-01-07 | 2023-07-25 | 中国联合网络通信集团有限公司 | 文档更新方法和服务器 |
CN111698278B (zh) * | 2020-04-10 | 2021-06-25 | 湖南大学 | 一种基于区块链的多云数据存储方法 |
CN111832069B (zh) * | 2020-06-05 | 2023-08-29 | 广东科学技术职业学院 | 基于云计算的多区块链的链上数据存储系统及方法 |
CN112364031B (zh) * | 2021-01-12 | 2021-04-06 | 支付宝(杭州)信息技术有限公司 | 一种基于可信账本数据库的业务衍生记录存储方法 |
CN113657899A (zh) * | 2021-10-19 | 2021-11-16 | 支付宝(杭州)信息技术有限公司 | 物权流转方法及装置、系统 |
CN114363363B (zh) * | 2021-12-31 | 2024-03-22 | 杭州趣链科技有限公司 | 基于多链的数据存储方法、装置、设备及介质 |
CN115118734A (zh) * | 2022-07-11 | 2022-09-27 | 京东科技信息技术有限公司 | 文件共享方法、装置及设备 |
CN115278677B (zh) * | 2022-07-28 | 2023-06-06 | 广州爱浦路网络技术有限公司 | 数据检测方法、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG11201803785RA (en) * | 2015-11-18 | 2018-06-28 | Global Specimen Solutions Inc | Distributed systems for secure storage and retrieval of encrypted biological specimen data |
CN106815526A (zh) * | 2016-12-27 | 2017-06-09 | 苏州春禄电子科技有限公司 | 一种基于区块链技术的安全型数据库存储系统 |
CN106919476A (zh) * | 2017-02-24 | 2017-07-04 | 中国科学院软件研究所 | 基于联盟链的数据安全备份方法、客户端及云服务端 |
CN107122477A (zh) * | 2017-05-02 | 2017-09-01 | 成都中远信电子科技有限公司 | 一种区块链存储系统 |
CN107148037A (zh) * | 2017-07-18 | 2017-09-08 | 宇龙计算机通信科技(深圳)有限公司 | 一种终端化小基站的选择方法、终端及服务器 |
-
2017
- 2017-09-22 CN CN201710866747.9A patent/CN107770154B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107770154A (zh) | 2018-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107770154B (zh) | 基于云存储的区块链可靠数据存储方法、终端及系统 | |
CN107239954B (zh) | 一种提高区块产生速度的方法及装置 | |
CN112686671B (zh) | 基于区块链的智能合约部署方法、装置、设备以及介质 | |
CN109154885A (zh) | 区块链平台上的业务处理执行 | |
CN109360091A (zh) | 一种基于区块链的随机对象选取方法和装置 | |
CN106503589A (zh) | 区块链交易信息正确性的校验方法、装置及系统 | |
CN109598505A (zh) | 一种基于区块链的质量数据处理方法和装置 | |
CN105227545B (zh) | 智能操作平台中实现用户和开发者划分控制的系统及方法 | |
CN111629039A (zh) | 一种区块链共识方法及客户端、背书节点、排序节点 | |
CN110601896B (zh) | 一种基于区块链节点的数据处理方法以及设备 | |
CN108696511A (zh) | 一种基于区块链的信息公示方法、装置及相关设备 | |
CN109146490A (zh) | 区块生成方法、装置和系统 | |
CN112334848B (zh) | 分层分布式账本 | |
CN110264354A (zh) | 创建区块链账户及验证区块链交易的方法及装置 | |
CN111865587A (zh) | 数据处理方法、区块链节点设备、电子设备及计算机程序 | |
CN110120970A (zh) | 基于车联网的数据处理方法、装置及网关系统 | |
EP4050542A1 (en) | Blockchain-based data processing method and apparatus, and device and readable storage medium | |
CN110059136A (zh) | 基于域名区块链的信息存储方法、设备及存储介质 | |
CN114039733B (zh) | 一种针对联盟链的存证业务转移方法、装置及设备 | |
CN113327169B (zh) | 基于区块链的理赔方法及装置、电子设备 | |
CN110362294A (zh) | 开发任务执行方法、装置、电子设备及存储介质 | |
CN108924089A (zh) | 一种客户端设备识别方法、装置及客户端设备 | |
CN115687526A (zh) | 一种基于区块链和联邦学习的地震数据模型共享方法 | |
CN115330419A (zh) | 基于区块链的防伪验证方法、平台及计算机可读介质 | |
CN105988920A (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 |