基于区块链的数据指纹生成方法、装置和存储介质与流程

文档序号:31084027发布日期:2022-08-09 22:46阅读:296来源:国知局
基于区块链的数据指纹生成方法、装置和存储介质与流程

1.本技术涉及区块链技术领域,具体而言,涉及一种基于区块链的数据指纹生成方法、装置和存储介质。


背景技术:

2.哈希算法是区块链领域中的一种算法,哈希算法被广泛的使用在区块链中构建区块和确认交易的完整性上。随着时代发展,哈希算法也被发现存在冲突必然性的风险漏洞,例如哈希算法中的md5,sha1算法在最近被证明不安全。
3.由于哈希算法对应的哈希函数输出的字符串长度一定,不同的输入存在会产生相同的哈希值的情况。如果一个攻击者能够使哈希函数故意产生冲突,他便能够把恶意的文件或者数据伪装成正确的哈希值存储在区块链上,并将恶意的文件或者数据传递给区块链上的其他用户。也即,现有的哈希算法存在风险漏洞。
4.然而,目前大量的存量业务系统依旧在使用存在风险漏洞的哈希算法,并且由于区块链技术的特征,存量业务系统存储的历史记录是不可篡改的,因此业务系统存在安全风险。
5.针对相关技术中哈希算法存在产生碰撞冲突的风险漏洞的问题,目前尚未提出有效的解决方案。


技术实现要素:

6.本技术提供一种基于区块链的数据指纹生成方法、装置和存储介质,以解决相关技术中哈希算法存在产生碰撞冲突的风险漏洞的问题。
7.根据本技术的一个方面,提供了一种基于区块链的数据指纹生成方法。该方法包括:通过用户端从数据存储系统中调用数据文件,其中,数据存储系统为区块链网络中的数据存储系统;获取数据文件中的待编码数据,并确定待编码数据的安全等级,其中,安全等级用于表征待编码数据在当前安全场景中需要保密的程度;确定待编码数据在安全等级下对应的哈希算法,并依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹。
8.可选地,通过用户端从数据存储系统中调用数据文件包括:校验用户端对应的区块链节点是否具有数据存储权限;在区块链节点具有数据存储权限的情况下,获取用户端的接入凭证,其中,接入凭证是用户端接入区块链网络的凭证;通过接入凭证访问区块链网络中的数据存储系统,并判断数据存储系统中是否存储有数据文件;在数据存储系统中存储有数据文件的情况下,确定数据文件的存储资源定位信息;通过存储资源定位信息从数据存储系统中调用数据文件。通过用户端从数据存储系统中调用数据文件用于调取需要进行生成数字指纹的文件。
9.可选地,获取数据文件中的待编码数据包括:将数据文件中不同存储协议下的数据转换为预设存储协议下的目标数据;确定目标数据的数据类型,并根据数据类型匹配数据对应的数据模型,其中,数据模型用于表征目标数据和待编码数据之间的映射关系;依据
数据模型确定目标数据对应的待编码数据。通过转换存储协议,匹配数据模型将不同协议,不同数据类型的数据转换为同一协议下的待编码数据。
10.可选地,确定待编码数据在安全等级下对应的哈希算法包括:从数据文件中获取待编码数据的历史哈希算法,并检测历史哈希算法是否需要调整;在检测到历史哈希算法需要调整的情况下,对历史哈希算法中的哈希值添加校验位,并从多个等级的哈希算法中确定待编码数据在安全等级下对应的哈希算法,其中,校验位用于表征历史哈希算法对应的哈希值失效;在未检测到历史哈希算法需要调整的情况下,将历史哈希算法确定为待编码数据在安全等级下对应的哈希算法。通过确定待编码数据在安全等级下对应的哈希算法,能够将数据的历史哈希算法调整为数据在当前应用场景下的哈希算法。
11.可选地,依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹包括:按照预设规则对待编码数据进行分块,得到多个第一数据块;将每个第一数据块扩展为预设长度的数据块,得到多个第二数据块;将多个第二数据块按照预设并行度进行多重哈希运算,得到数字指纹。通过对待编码数据进行多重哈希运算,得到数字指纹,能够有效防止哈希算法的碰撞冲突,使数据可以安全存储。
12.可选地,在校验用户端对应的区块链节点是否具有数据存储权限之后,方法还包括:在区块链节点具有数据存储权限的情况下,获取用户端的数字证书,并从数字证书中获取私钥和公钥;在确定待编码数据在安全等级下对应的哈希算法,并依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹之后,方法还包括:通过私钥对数字指纹进行数据加密,得到加密后的数字指纹;将加密后的数字指纹、公钥和待编码数据上传至数据存储系统。通过将加密后的数字指纹、公钥和待编码数据上传至数据存储系统可以将数据存储在区块链的数据存储系统中。
13.可选地,多个数字指纹以预设树形结构存储在数据存储系统中,在将加密后的数字指纹、公钥和待编码数据上传至数据存储系统之后,方法还包括:确定数字指纹对应的哈希安全锚定结果,并将哈希安全锚定结果返回至用户端,其中,哈希安全锚定结果用于在预设树形结构中定位数字指纹。通过确定哈希安全锚定结果可以使用户端能够在数据存储系统中索引需要的数据。
14.根据本技术的另一方面,提供了一种基于区块链的数据指纹生成装置。该装置包括:调用单元,用于通过用户端从数据存储系统中调用数据文件,其中,数据存储系统为区块链网络中的数据存储系统;获取单元,用于获取数据文件中的待编码数据,并确定待编码数据的安全等级,其中,安全等级用于表征待编码数据在当前安全场景中需要保密的程度;确定单元,用于确定待编码数据在安全等级下对应的哈希算法,并依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹。
15.根据本发明实施例的另一方面,还提供了一种计算机存储介质,计算机存储介质用于存储程序,其中,程序运行时控制计算机存储介质所在的设备执行一种基于区块链的数据指纹生成方法。
16.根据本发明实施例的另一方面,还提供了一种电子设备,包含一个或多个处理器和存储器;存储器中存储有计算机可读指令,处理器用于运行计算机可读指令,其中,计算机可读指令运行时执行一种基于区块链的数据指纹生成方法。
17.通过本技术,采用以下步骤:通过用户端从数据存储系统中调用数据文件,其中,
数据存储系统为区块链网络中的数据存储系统;获取数据文件中的待编码数据,并确定待编码数据的安全等级,其中,安全等级用于表征待编码数据在当前安全场景中需要保密的程度;确定待编码数据在安全等级下对应的哈希算法,并依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹,解决了相关技术中哈希算法存在产生碰撞冲突的风险漏洞的问题。通过对数据文件中的数据进行多重哈希运算获得数字指纹,将多重哈希运算作为数据的哈希算法,进而达到了区块链技术中的哈希算法具有强碰撞阻力的效果。
附图说明
18.构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
19.图1是根据本技术实施例提供的基于区块链的数据指纹生成方法的流程图;
20.图2是根据本技术实施例提供的获取待编码数据的结构示意图;
21.图3是根据本技术实施例提供的数字指纹的示意图;
22.图4是根据本技术实施例提供的区块链安全存储系统的结构示意图;
23.图5是根据本技术实施例提供的可信存储服务子系统的结构示意图;
24.图6是根据本技术实施例提供的区块链安全存储系统的节点信息交互图;
25.图7是根据本技术实施例提供的区块链安全共识记账节点系统的结构示意图;
26.图8是根据本技术实施例提供的基于区块链的数据指纹生成装置的示意图;
27.图9是根据本技术实施例提供的一种电子设备的示意图。
具体实施方式
28.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
29.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
30.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
31.需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
32.为了便于描述,以下对本技术实施例涉及的部分名词或术语进行说明:
33.碰撞阻力:是指对于两个不同的输入,必须产生两个不同的输出。如果对于两个不
同的输入产生了相同的输出,那么就说明不具备碰撞阻力,或是弱碰撞阻力。
34.merkle tree:默克尔树,一种树形数据结构,由一个根节点,一组中间节点和一组叶节点组成,每个叶节点均以数据块的哈希值作为标签,而除了叶节点以外其他节点则以其子节点标签的加密哈希值作为标签。
35.根据本技术的实施例,提供了一种基于区块链的数据指纹生成方法。
36.图1是根据本技术实施例提供的基于区块链的数据指纹生成方法的流程图。如图1所示,该方法包括以下步骤:
37.步骤s102,通过用户端从数据存储系统中调用数据文件,其中,数据存储系统为区块链网络中的数据存储系统。
38.具体地,用户端是用户在区块链网络中的节点对应的端口,用于存储数据到区块链网络中,数据文件是存储在数据存储系统中并且使用了存在碰撞冲突的哈希算法的文件。
39.步骤s104,获取数据文件中的待编码数据,并确定待编码数据的安全等级,其中,安全等级用于表征待编码数据在当前安全场景中需要保密的程度。
40.具体地,待编码数据为用户需要存储在区块链网络中的数据,安全等级是人为划定的对应不同哈希算法的等级,例如md5、sha-1这两种哈希算法为低安全等级的哈希算法,sha-256这种哈希算法为高安全等级的哈希算法,哈希算法的等级划分是根据哈希算法具备的碰撞阻力的强弱程度来划分的,md5、sha-1具备弱碰撞阻力,容易出现碰撞冲突,sha-256具备相对md5、sha-1强一些的碰撞阻力,不容易出现碰撞冲突。
41.步骤s106,确定待编码数据在安全等级下对应的哈希算法,并依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹。
42.具体地,确定待编码数据在当前应用场景下的安全等级,更换对应安全等级的哈希算法,例如x银行的一种a数据非核心数据,最初使用的哈希算法为md5,而近期由于业务调整,a数据升级为核心数据,对应安全等级提高,此时md5算法的安全等级就比较低需要更换成更高安全等级的sha-256哈希算法。
43.本技术实施例提供的基于区块链的数据指纹生成方法,通过用户端从数据存储系统中调用数据文件,其中,数据存储系统为区块链网络中的数据存储系统;获取数据文件中的待编码数据,并确定待编码数据的安全等级,其中,安全等级用于表征待编码数据在当前安全场景中需要保密的程度;确定待编码数据在安全等级下对应的哈希算法,并依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹,解决了相关技术中哈希算法存在产生碰撞冲突的风险漏洞的问题。通过对数据文件中的数据进行多重哈希运算获得数字指纹,将多重哈希运算作为数据的哈希算法,进而达到了区块链技术中的哈希算法具有强碰撞阻力的效果。
44.对需要得到数字指纹的数据进行多重哈希运算之前需要在数据存储系统中调用对应的数据文件,可选地,在本技术实施例提供的基于区块链的数据指纹生成方法中,通过用户端从数据存储系统中调用数据文件包括:校验用户端对应的区块链节点是否具有数据存储权限;在区块链节点具有数据存储权限的情况下,获取用户端的接入凭证,其中,接入凭证是用户端接入区块链网络的凭证;通过接入凭证访问区块链网络中的数据存储系统,并判断数据存储系统中是否存储有数据文件;在数据存储系统中存储有数据文件的情况
下,确定数据文件的存储资源定位信息;通过存储资源定位信息从数据存储系统中调用数据文件。
45.具体地,从区块链的数据存储系统中获取需要的数据前,对用户的身份进行校验,在用户身份具有在区块链网络中存储数据的权限的情况下,用户端获得接入凭证,接入凭证可以让用户访问数据存储系统,用户访问数据存储系统后能够判断需要的数据文件是否存在并且获得数据文件在存储系统中的定位信息,然后调用数据文件。通过用户端从数据存储系统中调用数据文件可以校验用户端的身份,保证数据的安全存储和调用。
46.数据文件中包含不同存储协议下的不同数据类型的数据,可选地,在本技术实施例提供的基于区块链的数据指纹生成方法中,获取数据文件中的待编码数据包括:将数据文件中不同存储协议下的数据转换为预设存储协议下的目标数据;确定目标数据的数据类型,并根据数据类型匹配数据对应的数据模型,其中,数据模型用于表征目标数据和待编码数据之间的映射关系;依据数据模型确定目标数据对应的待编码数据。
47.具体地,图2是根据本技术实施例提供的获取待编码数据的结构示意图。如图2所示,获取待编码数据的结构包括数据输入模块201和数据统一模型模块202。数据输入模块201是一个支持s3协议的存储网络,通过存储协议转换,将数据文件中不同存储协议下的数据转换为预设存储协议下的目标数据。数据统一模型模块202对目标数据根据数据类型匹配数据对应的数据模型,数据类型如null、boolean、integer、float、string、bytes、list、map、link等,其中list、map为递归类型。数据模型描述了数据类型和用于索引的字符串标识符路径,字符串标识符路径遵循与uri路径相似的转义和分段规则、约束构造,字符串标识符路径定义了从数据模型层到包含复杂布局的实际数据文件中数据结构的映射,实现数据文件的不同数据类型的数据的序列化和反序列化功能。通过转换存储协议,匹配数据模型将不同协议,实现了将不同数据类型的数据转换为同一协议下的待编码数据的目的,从而为进一步的数据处理奠定了基础。
48.由于待编码数据的历史哈希算法可能需要调整,可选地,在本技术实施例提供的基于区块链的数据指纹生成方法中,确定待编码数据在安全等级下对应的哈希算法包括:从数据文件中获取待编码数据的历史哈希算法,并检测历史哈希算法是否需要调整;在检测到历史哈希算法需要调整的情况下,对历史哈希算法中的哈希值添加校验位,并从多个等级的哈希算法中确定待编码数据在安全等级下对应的哈希算法,其中,校验位用于表征历史哈希算法对应的哈希值失效;在未检测到历史哈希算法需要调整的情况下,将历史哈希算法确定为待编码数据在安全等级下对应的哈希算法。
49.具体地,历史哈希算法的安全等级在当前应用场景下存在需要调整哈希算法的情况,由于区块链技术的不可篡改特性,无法直接在历史哈希算法上调整,因此在历史哈希算法需要调整的情况下,对历史哈希算法对应的哈希值添加校验位来表征历史哈希算法失效。通过确定待编码数据在安全等级下对应的哈希算法,能够将数据的历史哈希算法调整为数据在当前应用场景下的哈希算法,从而得到与当前应用场景适配的哈希算法。
50.确定待编码数据在安全等级下对应的哈希算法后,根据哈希算法对待编码数据进行多重哈希运算获得数字指纹,可选地,在本技术实施例提供的基于区块链的数据指纹生成方法中,依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹包括:按照预设规则对待编码数据进行分块,得到多个第一数据块;将每个第一数据块扩展为预设长度的数
据块,得到多个第二数据块;将多个第二数据块按照预设并行度进行多重哈希运算,得到数字指纹。
51.具体地,结合数据分块和数据文件中不同数据的安全等级,使用不同运算速度和安全等级的哈希算法进行分块哈希,通过建立默克尔树的树形结构进行数字指纹的存储。通过对待编码数据进行多重哈希运算,得到数字指纹,能够有效防止哈希算法的碰撞冲突,使数据可以安全存储。
52.例如,预设规则为多重哈希算法h,h被定义为处理整数个大小为b字节的第二数据块。预设规则中填充函数表示为padh(数据,数据长度,块大小b),padh使用预先确定的模式和消息长度的串联方式,将第一数据块扩展到b的倍数的最小长度字节,得到第二数据块。对于长度为l的数据m0以给定的并行度s进行散列,多重哈希运算的过程如下(其中||符号表示连接):将padh(m0,l,b*s)应用于数据m0,生成长度为l’的m0’。l'是我们可以将m0扩展到的最小长度,即b*s字节的倍数;将m0’分成s段,每段长度为l’/s。m0’以交错方式进行划分,以便将m0’的每个字节大小为w位的字数组分配给不同的段。每个段都表示为一个w位字数组,各段的表示如下:
53.seg0=m0’[0]||m0’[s]||m0’[2s]||

[0054]
seg1=m0’[1]||m0’[s+1]||m0’[2s+1]||

[0055]

[0056]
segs-1=m0’[s-1]||m0’[(2s-1)]||m0’[(3s-1)]||

[0057]
其中每个m0'[n]是每个段中填充数据的字节大小为w的索引;在段上生成s个叶级摘要,如dk=h(segk)用于k=0

(s-1);通过将每个叶级摘要的字节大小为w位的字数组交错,创建新数据m1。让m1=d0[0]||d10.…
||d(s-1)[0]||d1[1]

||d(s-1)[(d/w)-1]。其中每个dk[n]是一个字节大小为w位的索引到一个段的摘要。将m1生成为padh(m1,s*d,b);将实际的数据文件放到本地存储,并将上述h(m1)上上传到区块链存储;元数据和经过多重哈希运算后的哈希值及子哈希值存储到到区块链的状态数据中,根根据不同的业务应用场景及用户权限进行数据隔离存储。
[0058]
需要说明的是,采用多重哈希算法和tlv编码方式获得数字指纹。不同于特定哈希算法的格式,数字指纹描述了哈希算法类型以及对应的哈希值。通过tlv编码方式确定数据的编码,编码后在区块链存储系统中能感知所有存储的数据的数据类型以及元数据信息。参考业界通用的ber(basic encoding rule)编码规格说明,描述如何将asni类型的值编码成字符串(string of octets)的方法。ber的数据都是由三个域构成:标识域(tag)+长度域(length)+值域(value),简称tlv格式。tlv是一种可变的格式,其中:t可以理解为tag或type,用于标识标签或者编码格式信息;l定义数值的长度;v表示实际的数值。t和l的长度固定,一般是2或4个字节,v的长度由length指定。图3是根据本技术实施例提供的数字指纹的示意图,如图3所示,数字指纹是一种自描述散列,本身包含描述数字指纹的长度值、哈希值和哈希算法类型,例如哈希算法类型为sha2-256,数字指纹的tag可以表示18-0x12,length是哈希的实际长度(使用sha2-256它将是256位,等于32个字节),value是实际的哈希算法生成的哈希值。数字指纹保证了数据标识的灵活性和可扩展性,由全网共同约定和遵守,该约定以区块链智能合约的方式进行约定,并在区块链进行管理。
[0059]
数字指纹需要上传到区块链网络中的数据存储系统中,可选地,在本技术实施例
提供的基于区块链的数据指纹生成方法中,在校验用户端对应的区块链节点是否具有数据存储权限之后,方法还包括:在区块链节点具有数据存储权限的情况下,获取用户端的数字证书,并从数字证书中获取私钥和公钥;在确定待编码数据在安全等级下对应的哈希算法,并依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹之后,方法还包括:通过私钥对数字指纹进行数据加密,得到加密后的数字指纹;将加密后的数字指纹、公钥和待编码数据上传至数据存储系统。
[0060]
具体地,数据文件中的数据经过多重哈希运算得到数字指纹,数字指纹需要经过用户端加密后上传到区块链网络中的数据存储系统中。通过将加密后的数字指纹、公钥和待编码数据上传至数据存储系统,通过区块链的不可篡改性保证数据的安全性,通过区块链的数据共享机制方便数据的流转。
[0061]
用户将数字指纹存储到数据存储系统后,还需要获得哈希安全锚定结果用于索引需要的数据,可选地,在本技术实施例提供的基于区块链的数据指纹生成方法中,多个数字指纹以预设树形结构存储在数据存储系统中,在将加密后的数字指纹、公钥和待编码数据上传至数据存储系统之后,方法还包括:确定数字指纹对应的哈希安全锚定结果,并将哈希安全锚定结果返回至用户端,其中,哈希安全锚定结果用于在预设树形结构中定位数字指纹。
[0062]
具体地,哈希安全锚定是对存储在默克尔树中的数字指纹进行索引的一种方法。在对数据进行索引时,需要读取安全锚定结果,获得数据对应的数字指纹在默克尔树形结构中的定位,通过定位获得索引的数字指纹,接下来对数字指纹进行校验,在校验数字指纹为索引的数据对应数字指纹时,获得数字指纹对应的数据。通过确定哈希安全锚定结果,可以使用户端能够在数据存储系统中快速索引到需要的数据。
[0063]
需要说明的是,对数字指纹进行校验时,校验设备必须替换当前加密散列算法(例如sha-256),使用最有效的计算验证的兼容扩展哈希算法之一。例如,如果校验设备在其处理器内核中具有128位simd数据路径执行单元,需要校验的是sha-256的摘要,则理想情况下检验设备会更喜欢sha256x4(因为sha-256算法是基于32位的,基于128位simd执行单元我们可以并行处理128/32=4个段)。因此,检验设备不会使用当前使用的32位算法之一{md5,sha1,sha256},而是分别更喜欢{md5 x8,sha1 x4,sha256 x4}。md5有点独特,尽管从128位simd的角度来看我们只需要4个段,但该算法具有非常受限的数据依赖性,这使得在没有额外并行性的情况下很难获得执行单元的最佳吞吐量。
[0064]
由于有许多不同计算强度的校验设备,并且数字指纹必须找到适用于其大多数验证设备的并行级别。我们的方案不需要服务器非常准确地估计这一点,因为我们总是可以在校验时创建更高级别的并行性,并且如果校验设备的simd或硬件能力无法处理尽可能多的段,则让校验设备在校验时执行多遍操作。例如,校验设备可以使用执行4次的方案。
[0065]
由于管理摘要的多个状态变量,在需要多次传递时,可能会导致一些效率损失。请注意,数据仍然可以以流式方式有效地导入一次,但是,应用程序将需要在状态变量集之间循环。例如,假设客户端设备根本没有simd单元,并且需要执行简单的标量运算来处理sha256x4哈希值。它不是处理1组sha-256状态变量(32字节),而是同时处理4个这样的状态变量副本(128字节),在处理来自数据缓冲区的字段时循环遍历它们。这种任务集大小的增加非常小。一个可能的问题是与数据块的消息调度相关的任务集大小增加(对于sha)。如果
这种工作集大小的增加有问题,可以选择存储4个数据块并一次严格处理一个交错块。
[0066]
根据本技术的另一实施例,提供了一种区块链安全存储系统。图4是根据本技术实施例提供的区块链安全存储系统的结构示意图,如图4所示,该系统包括用户端401,可信存储服务子系统402,区块链网络403,存储智能合约404,以及进行多重哈希编码的数字资产内容标识405。
[0067]
本实施例的区块链安全存储系统通过多重哈希算法的设计实现数据文件的安全存储。
[0068]
其中,用户端401,包括用户所持有的各种终端,包括pc端,移动端,边缘设备,云服务器等,用户可以具有完全的权限,并对其他用户控制访问权限,用户基于此进行数字资产的管理,制作数据资产文件,同时根据安全场景进行密钥的管理或者存储。
[0069]
可信存储服务子系统402,是一种基于区块链的去中心化的可信数据存储系统。该系统是一种去中心化,点对点的对等分布式区块链存储系统,提供了一个高吞吐量,按内容寻址的块存储模型,支持存储的灵活扩容,多存储协议适配支持,点对点分块安全加密,去冗余的对象链接,不可篡改的数据存储结构等特性,能提供安全,高效,开放,低成本的的多方共享存储网络。
[0070]
具体地,图5是根据本技术实施例提供的可信存储服务子系统的结构示意图。如图5所示,可信存储服务子系统402包括服务接口模块501,核心api模块502,交互操作模块503,数据服务模块504,多重哈希模块505,数据路由模块506。可信存储服务子系统402通过核心api模块502对外提供交互接口和服务接口进行数据文件和区块链节点的管理;数据服务模块504,包括存储接入网关子模块,数据操作子模块,数据监控子模块,数据存储子模块。主要实现存储协议转换,数据的同步,数据性能容量监控以及数据的持久化存储等功能;多重哈希模块505,包括数据分级子模块,多重哈希子模块,上链锚定子模块,证书管理子模块。主要实现数据安全等级分级,多重哈希算法实现,多区块链底层产品和智能合约接口适配,证书的生成和管理等功能;数据路由模块506,包括安全校验子模块,哈希路由子模块,数据块交换子模块,订阅发布子模块,实现哈希安全检测,哈希索引,数据块交换,订阅发布等功能。其中,哈希路由用于存储节点和数据文件的查找和路由,实现接口如下:
[0071]
type datarouting interface{
[0072]
findpeer(node nodeid)//获取节点地址
[0073]
setvalue(key[]bytes,value[]bytes)
[0074]
getvalue(key[]bytes,value[]bytes)
[0075]
providevalue(key multihash)
[0076]
findvaluepeers(key multihash,min int)
[0077]
}。
[0078]
区块链网络403,是一种具有多方高效共识,强安全合约引擎,可靠隐私保护,跨链互联互通等特性的区块链联盟链网络,同时可以支持其他开源主流并提供可编程智能合约等联盟链和公链,用于提供数据资产标识的多方数据流通和治理,同时提供基本的接入授权和认证,并支持不同机构不同的业务场景进行数据资产的物理和逻辑上的隔离,保障数据的安全可信,数字资产访问和操作留痕。
[0079]
智能合约404,区块链网络的核心实现,使去中心化(分布式)区块链系统具有可编
程性,智能合约在可执行代码中定义不同组织之间的规则,也是一种旨在信息化方式传播验证或者执行合同的计算机协议,通过智能合约生成交易记录到区块链账本,可以在没有第三方的情况下进行交易,保证交易可以追踪,不可篡改,不可逆转。
[0080]
数字资产内容标识405,一个自描述的基于内容寻址的标识符,基于哈希算法将任意长度的消息压缩到某一个固定长度的消息摘要。通常用于区块链领域的数据资产的链上链下协同存储,采用tlv编码方案对区块链存储的数字资产进行唯一的标识,该标识能自描述哈希类型,保证数字资产标识的数字指纹的唯一性。
[0081]
图6是根据本技术实施例提供的区块链安全存储系统的节点信息交互图。
[0082]
如图6所示,用户设备登陆区块链管理平台获取区块链节点和证书配置文件,持有区块链接入和发起交易的用户证书和密钥;通过调用区块链节点进行区块链权限认证,返回接入凭证,用于存储资源的访问和数据资产的存储;调用区块链智能合约中的存储资源接口,确认在区块链网络中是否有存储资源,如果有则返回存储url和存储凭证用于数据资产存储;用户或者应用系统发起数据资产存储请求到可信存储服务,可信存储服务调用多重哈希运算,根据数据大小和数据安全等级,进行分块哈希安全运算。并返回数据指纹给用户;用户使用本地的私钥进行数据加密,并调用智能合约将元数据信息和加密的数据指纹以及公钥证书上链存储,并进行哈希安全锚定,区块链对存储的操作留痕成功后,最终返回存储成功结果给用户;其他用户基于自己在区块链中获取的权限和凭证,同样请求区块链进行数据资产的转移申请或者使用。至此完成基于多重哈希的区块链安全存储的节点间交互全流程。
[0083]
根据本技术的另一实施例,提供了一种区块链安全共识记账节点系统,图7是根据本技术实施例提供的区块链安全共识记账节点系统的结构示意图。
[0084]
如图7所示,该系统包括区块链共识记账节点701和存储合约702,共识记账节点701包括状态数据和区块数据,状态数据包括通过多重哈希生成的数据资产的根哈希a,数据资产内容哈希a索引a1,a2等分块的哈希。区块数据在原有交易区块梅克数据的基础上增加数据哈希校验位,用于哈希算法校验。存储合约702,主要实现服务接入认证,存储资源管理访问授权管理,数据资产管理,用户公钥管理等功能。
[0085]
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0086]
本技术实施例还提供了一种基于区块链的数据指纹生成装置,需要说明的是,本技术实施例的基于区块链的数据指纹生成装置可以用于执行本技术实施例所提供的用于基于区块链的数据指纹生成方法。以下对本技术实施例提供的基于区块链的数据指纹生成装置进行介绍。
[0087]
图8是根据本技术实施例提供的基于区块链的数据指纹生成装置的示意图。如图8所示,该装置包括:调用单元10,用于通过用户端从数据存储系统中调用数据文件,其中,数据存储系统为区块链网络中的数据存储系统;获取单元20,用于获取数据文件中的待编码数据,并确定待编码数据的安全等级,其中,安全等级用于表征待编码数据在当前安全场景中需要保密的程度;确定单元30,用于确定待编码数据在安全等级下对应的哈希算法,并依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹。
[0088]
可选地,在本技术实施例提供的基于区块链的数据指纹生成装置中,调用单元10包括:检验模块,用于校验用户端对应的区块链节点是否具有数据存储权限;第一获取模块,用于在区块链节点具有数据存储权限的情况下,获取用户端的接入凭证,其中,接入凭证是用户端接入区块链网络的凭证;访问模块,用于通过接入凭证访问区块链网络中的数据存储系统,并判断数据存储系统中是否存储有数据文件;第一确定模块,用于在数据存储系统中存储有数据文件的情况下,确定数据文件的存储资源定位信息;调用模块,用于通过存储资源定位信息从数据存储系统中调用数据文件。
[0089]
可选地,在本技术实施例提供的基于区块链的数据指纹生成装置中,获取单元20包括:转换模块,用于将数据文件中不同存储协议下的数据转换为预设存储协议下的目标数据;匹配模块,用于确定目标数据的数据类型,并根据数据类型匹配数据对应的数据模型,其中,数据模型用于表征目标数据和待编码数据之间的映射关系;第二确定模块,用于依据数据模型确定目标数据对应的待编码数据。
[0090]
可选地,在本技术实施例提供的基于区块链的数据指纹生成装置中,确定单元30包括:第二获取模块,用于从数据文件中获取待编码数据的历史哈希算法,并检测历史哈希算法是否需要调整;添加模块,用于在检测到历史哈希算法需要调整的情况下,对历史哈希算法中的哈希值添加校验位,并从多个等级的哈希算法中确定待编码数据在安全等级下对应的哈希算法,其中,校验位用于表征历史哈希算法对应的哈希值失效;第三确定模块,用于在未检测到历史哈希算法需要调整的情况下,将历史哈希算法确定为待编码数据在安全等级下对应的哈希算法。
[0091]
可选地,在本技术实施例提供的基于区块链的数据指纹生成装置中,确定单元30还包括:分块模块,用于按照预设规则对待编码数据进行分块,得到多个第一数据块;扩展模块,用于将每个第一数据块扩展为预设长度的数据块,得到多个第二数据块;运算模块,用于将多个第二数据块按照预设并行度进行多重哈希运算,得到数字指纹。
[0092]
可选地,在本技术实施例提供的基于区块链的数据指纹生成装置中,调用单元10还包括:第三获取模块,用于在区块链节点具有数据存储权限的情况下,获取用户端的数字证书,并从数字证书中获取私钥和公钥;确定单元30还包括:加密模块,用于通过私钥对数字指纹进行数据加密,得到加密后的数字指纹;上传模块,用于将加密后的数字指纹、公钥和待编码数据上传至数据存储系统。
[0093]
可选地,在本技术实施例提供的基于区块链的数据指纹生成装置中,确定单元30还包括:第四确定模块,用于确定数字指纹对应的哈希安全锚定结果,并将哈希安全锚定结果返回至用户端,其中,哈希安全锚定结果用于在预设树形结构中定位数字指纹。
[0094]
本技术实施例提供的基于区块链的数据指纹生成装置,通过调用单元10,用于通过用户端从数据存储系统中调用数据文件,其中,数据存储系统为区块链网络中的数据存储系统;获取单元20,用于获取数据文件中的待编码数据,并确定待编码数据的安全等级,其中,安全等级用于表征待编码数据在当前安全场景中需要保密的程度;确定单元30,用于确定待编码数据在安全等级下对应的哈希算法,并依据哈希算法对待编码数据进行多重哈希运算,得到数字指纹,解决了相关技术中哈希算法存在产生碰撞冲突的风险漏洞的问题。通过对数据文件中的数据进行多重哈希运算获得数字指纹,将多重哈希运算作为数据的哈希算法,进而达到了区块链技术中的哈希算法具有强碰撞阻力的效果。
[0095]
上述基于区块链的数据指纹生成装置包括处理器和存储器,上述调用单元10、获取单元20和确定单元30等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
[0096]
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来达到区块链技术中的哈希算法具有强碰撞阻力的效果。
[0097]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
[0098]
本技术实施例还提供了一种计算机存储介质,计算机存储介质用于存储程序,其中,程序运行时控制计算机存储介质所在的设备执行一种基于区块链的数据指纹生成方法。
[0099]
如图9所示,本技术实施例还提供了一种电子设备,电子设备901包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:基于区块链的数据指纹生成。本文中的设备可以是服务器、pc、pad、手机等。
[0100]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0101]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0102]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0103]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0104]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0105]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
[0106]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法
或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0107]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0108]
以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1