一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种面向区块链的数据加密共享方法、装置及存储介质与流程

2022-09-03 12:35:09 来源:中国专利 TAG:


1.本发明涉及区块链技术领域,尤其涉及一种面向区块链的数据加密共享方法、装置及存储介质。


背景技术:

2.随着区块链技术的发展和广泛应用,越来越多的区块链系统应运而生。
3.目前业内公认区块链最重要的一个用途是数据共享,在联盟链中大部分的做法是将数据的hash上链,原数据依然存储在本地,如需数据共享则还需要链下进行。故通过现有手段还不能做到真正意义上的数据交换共享。
4.因此,有必要提供一种面向区块链的数据加密共享方法、装置及存储介质来解决上述之一技术问题。


技术实现要素:

5.为解决上述技术问题之一,本发明提出一种面向区块链的数据加密共享方法,部署于区块链上,所述区块链包括若干客户端和若干区块链节点,各客户端分别与各节点建立通信链路,并通过数据加密上传步骤将客户端数据进行加密并上传至区块链;所述数据加密上传步骤的子步骤包括密钥生成步骤、密文生成步骤和密文上传步骤;所述密钥生成步骤用于生成加密密钥,所述密文生成步骤用于对数据明文通过加密密钥进行加密,并获得密文;所述密文上传步骤将密文上传至区块链上,其中,所述密钥生成步骤的子步骤包括:
6.客户端密钥序列生成:通过密钥生成算法,生成客户端密钥序列keys;其中,keys=[key1,key2,key3....keyn],为异或运算符,n为区块链节点总数,key1,key2,key3....keyn为密钥项;
[0007]
节点密钥序列生成:通过密钥生成算法,生成与客户端密钥序列keys对应的n条缺省密钥序列并作为节点密钥序列;其中,并作为节点密钥序列;其中,*表示缺省的密钥项;中的n表示缺省的密钥项编号,key1,key2,key3....keyn为密钥项;
[0008]
密钥序列分配:客户端保存完整的客户端密钥序列keys,各节点密钥序列随机分配给各区块链节点;其中,向各区块链节点分配的节点密钥序列均不相同。
[0009]
作为更进一步的解决方案,所述密文生成步骤:客户端设置nodes集合,所述nodes集合用于保存客户端指定的可信区块链节点;获取各可信区块链节点的节点密钥序列,并求取各节点密钥序列中相同的密钥项,得到密文解密序列;将客户端密钥序列keys与密文解密序列相同的密钥项剔除,得到密文加密序列;将密文加密序列对待上传的明文数据进行加密,得到密文;将密文存储至区块链上;所述可信区块链节点通过自身的节点密钥序列
进行组合,得到密文解密序列,并对密文进行解密与查看。
[0010]
作为更进一步的解决方案,所述密文上传步骤:客户端发送交易至区块链,完成密文上传;所述交易包括txid、payload和sign,其中,所述txid为交易的唯一标识;所述payload用于保存交易内容,包括合约相关信息和合约参数,所述合约相关信息包括合约名称与合约版本号,所述合约参数用于保存上传数据;所述sign用于保存消息签名。
[0011]
作为更进一步的解决方案,所述密文以结构化数据在区块链上进行存储,存储结构为:key-》nodes,e(d,k)[密文],其中,key表示共享数据的存储关键字,通过key能对数据进行请求,-》为指向结构体成员运算符,nodes表示当前数据对应的可信区块链节点的集合;e(d,k)[密文]表示明文数据通过密文加密序列加密后得到的密文数据。
[0012]
作为更进一步的解决方案,各客户端还通过加密数据请求步骤来对区块链上的加密数据进行索取与解密:
[0013]
a1客户端向区块链节点发送查询请求,
[0014]
a2区块链节点解析查询请求,获取查询请求对应的key,并从本地账本中获取key对应的数据d;
[0015]
a3解析数据d,获取对应的nodes集合与密文e;
[0016]
a4通过nodes集合,判断当前节点是否属于nodes集合,若是,则执行解密步骤;若否,则应答客户端当前节点无法解析,并结束访问;
[0017]
a5对各区块链节点执行a1-a4步骤;
[0018]
解密步骤:
[0019]
b1节点通过密文解密序列获取步骤,得到密文解密序列;
[0020]
b2判断密文解密序列是否合法,若合法,则执行下一步;若不合法,则表示当前节点无法解析,并向客户端应答解析失败,并结束访问;
[0021]
b3使用密文解密序列对密文e进行解密,得到明文t,并将明文t向客户端应答,并结束访问。
[0022]
作为更进一步的解决方案,通过如下步骤获取密文解密序列:
[0023]
c1获取nodes集合,初始化ans节点集合与密文解密序列ks;其中,所述ans节点集合通过所有区块链节点构成;
[0024]
c2判断ans节点集合中,节点ans[i]是否在nodes集合中;若是,则将节点ans[i]对应的节点密钥序列进行保留;若否,则进行舍弃;
[0025]
c3重复c2步骤,遍历ans节点集合,得到保留下来的节点密钥序列;
[0026]
c4读取保留下来的节点密钥序列中的密钥项,若密钥项均存在于保留下来的节点密钥序列中,则对密钥项进行保留;否则进行舍弃;
[0027]
c5重复c4步骤,遍历各密钥项,并将保留下来的密钥项加入密文解密序列ks中;得到密文解密序列ks。
[0028]
作为更进一步的解决方案,所述客户端密钥序列keys和密文加密序列中还设置有keys加密密钥;
[0029]
所述客户端密钥序列keys:keys=[key1,key2,key3....keyn,kkey],,kkey],为异或运算符,n为区块链节点总数,key1,
key2,key3....keyn为密钥项,kkey为keys加密密钥;
[0030]
所述密文加密序列:获取各可信区块链节点的节点密钥序列,并求取各节点密钥序列中相同的密钥项,得到密文解密序列;将客户端密钥序列keys中与密文解密序列相同的密钥项剔除,得到密文加密序列;其中,密文加密序列中包括keys加密密钥。
[0031]
作为更进一步的解决方案,所述密钥序列keys和各节点密钥序列中还设置有明文加密密钥;
[0032]
所述客户端密钥序列keys:keys=[key1,key2,key3....keyn,skey],,skey],为异或运算符,n为区块链节点总数,key1,key2,key3....keyn为密钥项,skey为明文加密密钥;
[0033]
所述节点密钥序列:所述节点密钥序列:*表示缺省的密钥项;中的n表示缺省的密钥项编号,key1,key2,key3....keyn为密钥项;skey为明文加密密钥。
[0034]
作为更进一步的解决方案,一种装置,所述设备包括:一个或多个处理器;所述存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上述任一项所述的方法。
[0035]
一种计算机可读存储介质,所述计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如上述任一权项所述的方法。
[0036]
与相关技术相比较,本发明提供的一种面向区块链的数据加密共享方法、装置及存储介质具有如下有益效果:
[0037]
本实施所提出的数据加密共享方法通过异或运算来构造密钥序列,并实现了客户端与区块链节点之间通过一套密钥序列实现“一对一”以及“一对多”的数据加密;其加密计算量小,相较于现有数据加密共享方法,具备不需要管理大量密钥、无需多次构建密钥序列的优势,适用于多节点数据共享的情况;此外,本发明还通过加入keys加密密钥来防止各节点通过反算来破解加密的情况;通过加入明文加密密钥来实现内网数据的分享,外部节点无法直接获取内网明文,兼顾实用性与安全性。
附图说明
[0038]
图1为本发明提供的一种面向区块链的数据加密共享方法较佳实施例密钥分配示意图一;
[0039]
图2为本发明提供的一种面向区块链的数据加密共享方法较佳实施例密钥分配示意图二;
[0040]
图3为本发明提供的一种面向区块链的数据加密共享方法较佳实施例交易结构图;
[0041]
图4为本发明提供的一种面向区块链的数据加密共享方法较佳实施例加密数据索取流程图;
[0042]
图5为本发明提供的一种面向区块链的数据加密共享方法较佳实施例加密数据解密流程图;
[0043]
图6至图8为现有数据加密共享方法示意图。
具体实施方式
[0044]
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0045]
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0046]
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
[0047]
需要说明的是:数据共享会涉及安全问题,在实际的业务系统中,对数据是有安全管理限制的,他们通常只希望自己关注的节点或自己信任的节点可以看到全部的数据,基于这种方式,目前业内的方案通常是每个客户端(业务方)会与每个节点保持一份密钥对,这样在数据共享时可采用如图6的方式进行。
[0048]
从图6可以看出,每个客户端会与每个节点保持一份密钥对,无论对于节点还是对于客户端而言,他们维护的密钥数量都是非常多的。如果节点数为n,客户端数量为m的话,整体需要维护的密钥对会是m*n(pk,pr为一对密钥),当客户端数量很大时,钥秘的维护也会非常困难。
[0049]
现有技术缺陷不止于此,如果客户端不是只想共享给一个节点,而是想共享给两个节点,那么目前有两种方案,如图7的方案比较简单,即针对两次分享的方式新设置一个密钥,该密钥只用于两个节点分享。但从图7中可以看出,这种方式会大大增加密钥的数量,其增加的密钥会以指数的方式增加,大大增加节点和客户端密钥的管理难度。如图8所示的方案是对数据进行多次加密,但是加密次数的增加会加大客户端的负担,此外,在将文件共享给不同节点时,需上传多个密文,这会使网络负担大大增加。
[0050]
如图1至图5所示,本发明提供的一种面向区块链的数据加密共享方法,部署于区块链上,所述区块链包括若干客户端和若干区块链节点,各客户端分别与各节点建立通信链路,并通过数据加密上传步骤将客户端数据进行加密并上传至区块链;所述数据加密上传步骤的子步骤包括密钥生成步骤、密文生成步骤和密文上传步骤;所述密钥生成步骤用于生成加密密钥,所述密文生成步骤用于对数据明文通过加密密钥进行加密,并获得密文;所述密文上传步骤将密文上传至区块链上,其中,所述密钥生成步骤的子步骤包括:
[0051]
客户端密钥序列生成:通过密钥生成算法,生成客户端密钥序列keys;其中,keys=[key1,key2,key3....keyn],为异或运算符,n为区块链节点总数,key1,key2,key3....keyn为密钥项;
[0052]
节点密钥序列生成:通过密钥生成算法,生成与客户端密钥序列keys对应的n条缺省密钥序列并作为节点密钥序列;其中,并作为节点密钥序列;其中,*表示缺省的密钥项;
中的n表示缺省的密钥项编号,key1,key2,key3....keyn为密钥项;
[0053]
密钥序列分配:客户端保存完整的客户端密钥序列keys,各节点密钥序列随机分配给各区块链节点;其中,向各区块链节点分配的节点密钥序列均不相同。
[0054]
需要说明的是:本实施所提出的数据加密共享方法的核心在于构造客户端密钥序列和节点密钥序列;在如图1所示的例子中,节点包括a节点、b节点和c节点,客户端包括客户端m与客户端n,由于本实施例仅涉及到客户端与节点之间的数据分享,且各客户端与节点之间采用相同的方法进行,故只对客户端m进行说明。
[0055]
节点数为3,即n=3,根据keys=[key1,key2,key3....keyn]可得,客户端m的客户端密钥序列为[ka,kb,kc];根据可得,a节点、b节点和c节点对应的节点密钥序列分别为[ka,kb],[kb,kc]和[kc,ka](序列分配随机且不影响最终结果,本实施例为方便描述,对其中一种分配情形进行描述)。
[0056]
若客户端m要将数据分享给a节点,就需要将a节点的节点密钥序列[ka,kb]作为数据解密密钥,因为[ka,kb]是a节点独有的,故需要构造数据加密密钥,并且只有a节点的[ka,kb]能对密文进行解密,为此,本实施例通过异或运算来构造密钥序列;异或运算满足下面几个规律:可以推出由于故在本实施例中:若对明文d使用kc加密:则密文对密文e(d,kc)进行解密,则即得到明文d。
[0057]
若客户端m要将数据分享给a节点与b节点;就需要将两者共有的密钥项作为解密密钥,即[ka,kb],[kb,kc]所共有的密钥项kb为解密密钥;由于为解密密钥;由于在本实施例中:故需用[kc,ka]作为加密密钥,密文]作为加密密钥,密文对密文e(d,kc,ka)进行解密,则)进行解密,则即得到明文d。
[0058]
从上述两个例子我们不难看出,若需要将密文分享到指定一个节点时,仅需将该节点独有的密钥序列作为解密密钥,其他密钥项作为加密密钥即可。若需要将密文分享到指定多个节点时,仅需找出两节点密钥序列共有的密钥项作为解密密钥,其他密钥项作为加密密钥即可。
[0059]
作为更进一步的解决方案,所述密文生成步骤:客户端设置nodes集合,所述nodes集合用于保存客户端指定的可信区块链节点;获取各可信区块链节点的节点密钥序列,并求取各节点密钥序列中相同的密钥项,得到密文解密序列;将客户端密钥序列keys与密文解密序列相同的密钥项剔除,得到密文加密序列;将密文加密序列对待上传的明文数据进行加密,得到密文;将密文存储至区块链上;所述可信区块链节点通过自身的节点密钥序列进行组合,得到密文解密序列,并对密文进行解密与查看。
[0060]
作为更进一步的解决方案,所述密文上传步骤:客户端发送交易至区块链,完成密文上传;所述交易包括txid、payload和sign,其中,所述txid为交易的唯一标识;所述payload用于保存交易内容,包括合约相关信息和合约参数,所述合约相关信息包括合约名
称与合约版本号,所述合约参数用于保存上传数据;所述sign用于保存消息签名。
[0061]
需要说明的是:如图3所示,所述txid为交易的唯一标识能有效防止双花的情况发生,而sign为整个消息的签名,能严明身份来源,防止作恶。
[0062]
作为更进一步的解决方案,所述密文以结构化数据在区块链上进行存储,存储结构为:key-》nodes,e(d,k)[密文],其中,key表示共享数据的存储关键字,通过key能对数据进行请求,-》为指向结构体成员运算符,nodes表示当前数据对应的可信区块链节点的集合;e(d,k)[密文]表示明文数据通过密文加密序列加密后得到的密文数据。
[0063]
如图4所示,作为更进一步的解决方案,各客户端还通过加密数据请求步骤来对区块链上的加密数据进行索取与解密:
[0064]
a1客户端向区块链节点发送查询请求,
[0065]
a2区块链节点解析查询请求,获取查询请求对应的key,并从本地账本中获取key对应的数据d;
[0066]
a3解析数据d,获取对应的nodes集合与密文e;
[0067]
a4通过nodes集合,判断当前节点是否属于nodes集合,若是,则执行解密步骤;若否,则应答客户端当前节点无法解析,并结束访问;
[0068]
a5对各区块链节点执行a1-a4步骤;
[0069]
解密步骤:
[0070]
b1节点通过密文解密序列获取步骤,得到密文解密序列;
[0071]
b2判断密文解密序列是否合法,若合法,则执行下一步;若不合法,则表示当前节点无法解析,并向客户端应答解析失败,并结束访问;
[0072]
b3使用密文解密序列对密文e进行解密,得到明文t,并将明文t向客户端应答,并结束访问。
[0073]
需要说明的是:密文解密序列获取步骤的核心在于获取nodes集合中各节点密钥序列所共有的密钥项作为解密密钥,判断密文解密序列是否合法主要是判断解密是否出现error,若出现则表示合法,解密是否出现空,若出现空,则说明数据未加密,即明文。
[0074]
如图5所示,作为更进一步的解决方案,通过如下步骤获取密文解密序列:
[0075]
c1获取nodes集合,初始化ans节点集合与密文解密序列ks;其中,所述ans节点集合通过所有区块链节点构成;
[0076]
c2判断ans节点集合中,节点ans[i]是否在nodes集合中;若是,则将节点ans[i]对应的节点密钥序列进行保留;若否,则进行舍弃;
[0077]
c3重复c2步骤,遍历ans节点集合,得到保留下来的节点密钥序列;
[0078]
c4读取保留下来的节点密钥序列中的密钥项,若密钥项均存在于保留下来的节点密钥序列中,则对密钥项进行保留;否则进行舍弃;
[0079]
c5重复c4步骤,遍历各密钥项,并将保留下来的密钥项加入密文解密序列ks中;得到密文解密序列ks。
[0080]
作为更进一步的解决方案,所述客户端密钥序列keys和密文加密序列中还设置有keys加密密钥;
[0081]
所述客户端密钥序列keys:keys=[key1,key2,key3....keyn,kkey],
为异或运算符,n为区块链节点总数,key1,key2,key3....keyn为密钥项,kkey为keys加密密钥;
[0082]
所述密文加密序列:获取各可信区块链节点的节点密钥序列,并求取各节点密钥序列中相同的密钥项,得到密文解密序列;将客户端密钥序列keys中与密文解密序列相同的密钥项剔除,得到密文加密序列;其中,密文加密序列中包括keys加密密钥。
[0083]
需要说明的是:由于节点密钥序列与客户端密钥序列keys只相差一个缺省项,故各节点很容易通过反算将缺省项给算出来,从而导致加密失效;故本实施例还设置有keys加密密钥,即添加一个客户端独有的密钥kkey,当进行加密时,客户端通过“原始密文加密序列 keys加密密钥”对数据进行加密,故各节点通过反算得到的是“原始密文加密序列 keys加密密钥”的组合,即:客户端m的客户端密钥序列为[ka,kb,kc];根据,kc];根据可得,a节点、b节点和c节点对应的节点密钥序列分别为[ka,kb],[kb,kc]和[kc,ka];先将数据分享给a节点,便对明文d使用kc加密:则密文];先将数据分享给a节点,便对明文d使用kc加密:则密文对密文e(d,kc)进行解密,则即得到明文d;反算时:进而得到密钥kc。但是,加入keys加密密钥后,密文反算时:故只能得到而kc与kkey两者对于节点来讲都是未知的,从而保护密钥不被破解。
[0084]
作为更进一步的解决方案,所述密钥序列keys和各节点密钥序列中还设置有明文加密密钥;
[0085]
所述客户端密钥序列keys:keys=[key1,key2,key3....keyn,skey],,skey],为异或运算符,n为区块链节点总数,key1,key2,key3....keyn为密钥项,skey为明文加密密钥;
[0086]
所述节点密钥序列:所述节点密钥序列:*表示缺省的密钥项;中的n表示缺省的密钥项编号,key1,key2,key3....keyn为密钥项;skey为明文加密密钥。
[0087]
需要说明的是:如图2所示,在客户端将数据分配给所有节点的情况中,由于此时共有密钥项为空,则无法对数据进行加密,以明文形式进行传输;但我们希望数据仅在节点内部进行共享,节点外部查看到的依然是密文;故本实施例在密钥序列keys和各节点密钥序列中还设置有明文加密密钥,在客户端将数据分配给所有节点的情况中,此时共有密钥项为skey;即各节点均拥有密钥skey,故通过密钥skey对数据进行加密,从而实现了明文加密。
[0088]
此外,明文加密密钥与keys加密密钥能同时进行运用,互相不构成干扰。
[0089]
作为更进一步的解决方案,一种装置,所述设备包括:一个或多个处理器;所述存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上述任一项所述的方法。
[0090]
一种计算机可读存储介质,所述计算机可读存储介质存储指令,所述指令在由处
理器执行时使得所述处理器执行如上述任一权项所述的方法。
[0091]
以上仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献