一种联盟链数据加密方法与流程

文档序号:26589829发布日期:2021-09-10 20:32阅读:171来源:国知局
一种联盟链数据加密方法与流程

1.本发明涉及数据安全技术领域,具体涉及一种联盟链数据加密方法。


背景技术:

2.联盟链通常由多个组织或机构参与构建,是一种介于公有链与私有链之间的区块链实现形式。虽然联盟链的安全性较于公有链较差,但其数据隐私性则显著高于共有链,因而常用于企业服务。参与联盟链的每个组织或机构管理一个或多个节点,联盟链上的数据只允许在联盟链内网环境内读写和发送。联盟链具有成本较低、效率较高的特点,适用于不同实体间的交易或结算等。联盟链的数据安全性和隐私性源自参与构建联盟链的组织或机构之间的互信,以及奖惩管理机制。一旦参与构建联盟链的组织或机构不够自律,就会使得联盟链上的数据容易被泄露出去,对于数据较为敏感的行业来说,影响将是巨大的。因而需要研发适用于联盟链之间的更能够保护数据安全和隐私的技术方法。
3.中国专利cn111526219b,公开日2021年2月9日,一种联盟链的共识方法及联盟链系统,包括:共识主节点基于纠删码技术,将待共识的提议数据拆分成与共识备份节点相对应的数据块,提议数据拆分成的数据块对应有基于纠删码技术计算得到的哈希值,共识主节点将通过提议数据拆分成的数据块发送至对应的共识备份节点,接收到共识主节点发送的数据块的共识备份节点,将数据块转发至其他共识备份节点,共识主节点基于实用拜占庭容错pbft协议,发起提议数据的共识,以通过pbft协议的消息将提议数据拆分成的数据块的哈希值发送至共识备份节点,共识备份节点基于pbft协议的消息中的数据块的哈希值,对获得的由提议数据拆分成的数据块校验,以对校验成功的提议数据执行pbft协议的共识逻辑。但其不能解密联盟链中存在不自律或管理不完善节点时,会导致数据泄露的技术问题。


技术实现要素:

4.本发明要解决的技术问题是:目前联盟链上数据安全性和隐私性不够高的技术问题。提出了一种联盟链数据加密方法,本方法能够通过改进的加密方法将联盟链的数据限制在联盟链内网环境内使用。
5.为解决上述技术问题,本发明所采取的技术方案为:一种联盟链数据加密方法,包括以下步骤:步骤a)联盟链节点p0将待加密数据截断为n份子数据;步骤b)n个联盟链节点声明参与数据的加解密,联盟链节点p0产生两对公私秘钥,并公开第一个公钥,将第二个公钥与n值关联作为传递体,随机选取一个联盟链节点的公钥加密所述传递体后广播;步骤c)联盟链节点获得所述传递体,产生新的公私秘钥对,将n值减1,将新产生的公钥与新的n值关联作为传递体,使用所述的第一个公钥加密所述传递体,再次随机选取一个联盟链节点的公钥加密传递体后广播;步骤d)由被选择的联盟链节点执行步骤c),直到n的值为1,进入步骤e);步骤e)联盟链节点p0将n份子数据随机分配给联盟链节点后公开第一个私钥,联盟链节点分别解密传递体获得其中的公钥,使用获得的所述公钥加密子数据,加密后的子数
据汇总打包;步骤f)需要解密数据时,联盟链节点p0将加密的数据拆包,获得加密的子数据,联盟链节点尝试解密子数据,若能够成功解密,则将解密后的子数据发送到联盟链节点p0指定的地址,直到收集到全部解密的子数据,即获得解密的数据。将联盟链节点产生公私秘钥中的公钥加密其他联盟链节点收到的子数据,将用于解密的私钥保存在联盟链节点本地,实现了联盟链节点之间对数据加解密时,必然需要其他联盟链节点的参与,使得联盟链环境内的数据一旦脱离联盟链内网环境就无法完成解密,保证了联盟链数据的隐私性,且加密后的数据,需要全部参与加密的联盟链节点参与才能成功解密,使得破解难度和成本都非常高,提高了联盟链数据的安全性。记载在步骤b)和步骤c)中的技术内容,使得联盟链节点无法确定无疑的知道与私钥对应的公钥被哪个节点接收并使用,提高了破解的难度。
6.作为优选,步骤a)中,联盟链节点p0将待加密数据截断为n份子数据的方法包括:步骤a1)联盟链节点p0为待加密数据关联唯一标识码k;步骤a2)联盟链节点p0产生公私秘钥对,使用公钥加密待加密数据,记为数据k;步骤a3)联盟链节点p0将数据k截断为n份,获得数据结构dki={dki,k,i},其中dki表示截断数据k获得的数据段,i表示截断次序。截断次序i方便将截断后的数据排序拼接复原数据,将待加密的数据首先进行一次加密后再发送给其他联盟链节点,保证了待加密数据的隐私性。
7.作为优选,步骤f)中,联盟链节点p0将加密数据拆包后,将获得的加密子数据使用联盟链节点p0的私钥加密,联盟链节点使用联盟链节点p0的公钥解密后并尝试使用自身保留的私钥解密,若能够成功解密,则将解密后的子数据发送到联盟链节点p0指定的地址,联盟链节点p0使用步骤a2)产生的私钥解密获得数据。联盟链节点p0的私钥加密能够证明联盟链节点p0对数据的拥有权,避免数据被其他联盟链节点发起解密并成功。
8.作为优选,步骤d)中,若联盟链节点已被指定后再次被指定,则解密获得传递体后,从其他联盟链节点中随机选取一个联盟链节点的公钥加密传递体传递体并广播。使得保存私钥的节点无法获知其对应的公钥被传递到哪个节点。
9.作为优选,步骤e)中,联盟链节点p0将n份子数据随机的分配给联盟链节点的方法为:联盟链节点p0将子数据以广播的方式在联盟链节点间传递,每个联盟链节点均能够获得全部子数据,每个联盟链节点各自保存有一个n的值,联盟链节点保存其n值对应次序的子数据。联盟链节点p0将无法知晓n份子数据分配到哪个联盟链节点,进一步提高了破解的难度。
10.作为优选,步骤f)中联盟链节点p0根据次序i将子数据正确排序,联盟链节点读取其存储的n值对应次序的子数据,而后使用各自保存的私钥解密。
11.作为优选,步骤e)中,联盟链节点除保留其n值对应次序的子数据外,还保留下一次序的子数据,联盟链节点使用收到的公钥分别加密两个子数据,并将加密后的子数据发送到联盟链节点p0指定的地址,联盟链节点p0将全部加密后的子数据打包。减少子数据在联盟链内网环境内传输的次数,降低对网络资源的消耗。
12.作为优选,步骤e)中,联盟链节点p0将n份子数据随机的分配给联盟链节点的方法为:联盟链节点p0将全部子数据发送给任一个联盟链节点,所述联盟链节点保留其保存的n值对应次序的子数据后,将其从全部子数据中删除,而后将剩余子数据发送给任一个指定的联盟链节点,依次传递即可将n份子数据随机的分配给联盟链节点。
13.本发明的实质性效果是:1)数据解密时需要其他联盟链节点的参与,使得联盟链
环境内的数据一旦脱离联盟链内网环境就无法完成解密,保证了联盟链数据的隐私性;2)且加密后的数据,正因为需要全部参与加密的联盟链节点参与才能成功解密,使得破解难度和成本都非常高,提高了联盟链数据的安全性。
附图说明
14.图1为实施例一加解密方法流程框图。
15.图2为实施例一待加密数据截断方法流程框图。
16.图3为实施例一联盟链节点传递加密秘钥的方法流程图。
17.图4为实施例一联盟链节点p0分配子数据的方法流程图。
18.图5为实施例二联盟链节点p
j
冗余保存子数据示意图。
19.图6为实施例三联盟链节点p0分配子数据的方法流程图。
具体实施方式
20.下面通过具体实施例,并结合附图,对本发明的具体实施方式作进一步具体说明。
21.实施例一:
22.一种联盟链数据加密方法,包括以下步骤:
23.步骤a)联盟链节点p0产生或接收待加密数据d,请参阅附图1和附图2,随后联盟链节点p0将待加密数据d截断为n份子数据:
24.请再次参阅附图2对应内容,将待加密数据d截断为n份子数据包括:步骤a1)联盟链节点p0为待加密数据关联唯一标识码k。通过唯一标识码k,能够方便的对数据所有权进行确定和验证,唯一标识码k既可以在联盟链中维护一个公共的标识码k,也可以通过为每个联盟链节点分配一个标识码k1,每个联盟链节点各自维护一个唯一标识k2,由k1和k2组成唯一标识码k。如表1所示,3126是联盟链节点p0的标识,0547是联盟链节点p0产生的第547条待加密数据,因而31260547构成了待加密数据d的唯一标识。a2)联盟链节点p0产生公私秘钥对,使用公钥加密待加密数据d,记为数据d
k
。步骤a3)联盟链节点p0将数据d
k
截断为n份,获得数据结构{d

ki
,k,i},其中d

ki
表示截断数据d
k
获得的数据段,i表示截断次序,以d
ki,i∈[1,n]
表示数据结构{d

ki
,k,i},数据步骤d
k
共被截断为32份。
[0025]
表1本实施例产生的数据结构
[0026][0027]
步骤b)n个联盟链节点p
j,j∈[1,n]
声明参与数据d
k
的加解密,联盟链节点p0产生两对新的公私秘钥以及广播n的值,联盟链节点
p0保存并向联盟链节点p
j,j∈[1,n]
公开联盟链节点p0从联盟链节点p
j,j∈[1,n]
中随机指定一个联盟链节点p
e1
,使用联盟链节点p
e1
的公钥加密传递体后发送给联盟链节点p
e1
。本实施例产生512位秘钥,联盟链节点p0产生的传递体为{mfww

eaaq==,32},联盟链节点p
e1
获得秘钥mfww

eaaq==,联盟链节点p0保存有相应的私钥。
[0028]
步骤c)联盟链节点p
e1
借助其私钥获得传递体请参阅附图3,步骤c1)联盟链节点p
e1
产生一个公私秘钥对和步骤c2)将使用加密获得n自减1后广播其值,步骤c3)联盟链节点p
e1
从联盟链节点p
j,j∈[1,n]
中随机指定一个联盟链节点p
e2
,使用联盟链节点p
e2
的公钥加密传递体后将其公开,联盟链节点p
e1
可以直接将加密后的传递体发送给联盟链节点p
e2
,也可以通过广播的方式使联盟链节点p
e2
获得,使用联盟链节点p
e2
的公钥加密传递体的主要目的的保密,联盟链节点p
e1
存储联盟链节点p
e2
借助其私钥获得传递体联盟链节点p
e2
保存和n。
[0029]
表2本实施例中传递体的传递过程
[0030]
被指定传递体联盟链节点pe1rev:{mfww

eaaq==,32},send:{zihv

+bnc==,31}联盟链节点pe2rev:{zihv

+bnc==,31},send:{g9w0

wgge==,30}联盟链节点pe3rev:{g9w0

wgge==,30},send:{eaak

xxii==,29}联盟链节点pe1rev:{eaak

xxii==,29},send:{eaak

xxii==,29}联盟链节点pe4rev:{eaak

xxii==,29},send:{dfv3

cvhi==,28}联盟链节点pe3rev:{dfv3

cvhi==,28},send:{dfv3

cvhi==,28}联盟链节点pe5rev:{dfv3

cvhi==,28},send:{dgl2

fqjf==,27}
……
联盟链节点pe32rev:{mfww

eaaq==,1}
[0031]
请参阅表2,联盟链节点pe1收到传递体{mfww

eaaq==,32}后,将传递体保存,而后产生新的公私秘钥,将公钥使用加密获得zihv

+bnc==,将n的值减1后,构建传递体{zihv

+bnc==,31},选定联盟链节点pe2的公钥加密传递体后发出。pe2仅用于表示联盟链节点第一次收到传递体的次序,不表示按顺序选定下一个联盟链节点,选定下一个联盟链节点是随机选取的。当联盟链节点pe1第二次被选中时,随机选定一个联盟链节点的公钥,直接将传递体再次加密后发出,并不会更改n的值,起到传递的作用。
[0032]
步骤d)由被选择的联盟链节点依次重复执行步骤c),直到广播传递的n值为1时进入步骤e)。若联盟链节点p
e
已被指定后再次被指定,则解密获得后,从联盟链节点p
j
中随机指定一个联盟链节点p
e

,使用联盟链节点p
e

的公钥加密传递体后将其公开。
[0033]
步骤e)联盟链节点p0将n份子数据随机分配给联盟链节点p
j
,请参与图4,包括:步
骤e1)联盟链节点p0将d
ki
以广播的方式在联盟链节点p
j
间传递,每个联盟链节点p
j
均能够获得全部d
ki
。步骤e2)联盟链节点p
j
各自保存有一个n值,联盟链节点p
j
保留其保存的n值对应次序的传递体,丢弃其余传递体。
[0034]
联盟链节点p
j
将收到的子数据以表示,联盟链节点p0公开联盟链节点p
j
使用解密各自收到的获得使用加密子数据获得联盟链节点p
j
将发送到联盟链节点p0指定的地址,联盟链节点p0将加密后的子数据打包后获得加密后的数据d

k
。联盟链节点p
e1
使用公钥mfww

eaaq==加密其收到的结构数据。对于联盟链节点pe1而言,将mfww

eaaq==使用解密后,获得公钥ei9h

aqig==,使用公钥ei9h

aqig==加密结构数据{192rhn9f,31260547,2}后,发送到联盟链节点p0指定的地址,联盟链节点p0收集后打包存储。
[0035]
步骤f)需要将数据d

k
解密时,联盟链节点p0将数据d

k
拆包,获得联盟链节点p0根据次序i将正确排序,将使用联盟链节点p0的私钥加密,联盟链节点p
j
读取其存储的n值对应次序的d

ki
,联盟链节点p
j
使用联盟链节点p0的公钥解密获得而后并尝试使用解密,若能够成功解密,则将解密后的子数据发送到联盟链节点p0指定的地址,联盟链节点p0使用步骤a2)产生的私钥解密获得数据d。联盟链节点p0的私钥加密能够证明联盟链节点p0对数据d

k
的拥有权,联盟链节点p
j
读取并尝试使用解密,若能够成功解密,则将解密后的子数据发送到联盟链节点p0指定的地址。
[0036]
本实施例的有益技术效果为:将联盟链节点产生公私秘钥中的公钥加密其他联盟链节点收到的子数据,将用于解密的私钥保存在联盟链节点本地,实现了联盟链节点之间对数据加解密时,必然需要其他联盟链节点的参与,使得联盟链环境内的数据一旦脱离联盟链内网环境就无法完成解密,保证了联盟链数据的隐私性,且加密后的数据,需要全部参与加密的联盟链节点参与才能成功解密,使得破解难度和成本都非常高,提高了联盟链数据的安全性。记载在步骤b)和步骤c)中的技术内容,使得联盟链节点p
j
无法确定无疑的知道与对应的被哪个节点接收并使用,提高了破解的难度。
[0037]
实施例二:
[0038]
一种联盟链数据加密方法,请参阅附图5,本实施例的步骤e)中,联盟链节点p
j
除保留其保存的n值对应次序的结构数据d
kn
外,还保留结构数据d
kn

,n

=n+z,z为常数,联盟链节点p
j
使用分别加密子数据d
kn
和d
kn

,并将加密后的子数据发送到联盟链节点p0指定的地址,联盟链节点p0将全部加密后的子数据打包。其余步骤同实施例一,相对于实施例一,本实施例记载的技术方案中每个节点均加密两个结构数据,使得每个结构数据均具有一个备份,避免加密出现意外错误时,无法解密的情况。
[0039]
实施例三:
[0040]
一种联盟链数据加密方法,请参阅附图6,本实施例的步骤e)中,联盟链节点p0将n份子数据随机的分配给联盟链节点p
j
的方法为:步骤e11)联盟链节点p0将全部d
ki
发送给联
盟链节点p
e1
,步骤e12)联盟链节点p
e1
保留其保存的n值对应次序的结构数据d
kn
后,从d
ki
中删除d
kn
,步骤e13)而后将剩余d
ki
发送给联盟链节点p
e1
指定的联盟链节点,即联盟链节点p
e2
,步骤e14)依次传递即可将n份子数据随机的分配给联盟链节点p
j
。其余步骤同实施例一,相对于实施例一,本实施例记载的技术方案减少了d
ki
在联盟链内网环境内传输的次数,降低了网络要求。
[0041]
以上所述的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1