一种用于联盟链的数据落盘加密方法转让专利

申请号 : CN202110244878.X

文献号 : CN112994879B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张金琳袁超俞学劢

申请人 : 浙江数秦科技有限公司

摘要 :

本发明涉及区块链技术领域,具体涉及一种用于联盟链的数据落盘加密方法,包括:联盟链节点将链上的数据提交给智能合约;执行以下步骤:A)将数据截断为数据段,依次数据段沿联盟链节点传递;B)传递中联盟链节点随机决定在数据段中添加干扰数据段,并记录位置标识;C)将全部数据段拼接成数据D′k,完成数据Dk的加密;D)将数据D′k解密时,智能合约构建安全多方计算,获得数据段是否为干扰数据段,将数据D′k复原为数据Dk。本发明的实质性效果是:每个联盟链节点均保存有解密数据所需要的数据,实现了联盟链节点一旦脱离联盟链内网环境,便无法复原数据,保证了联盟链数据的安全。

权利要求 :

1.一种用于联盟链的数据落盘加密方法,其特征在于,

包括:

将联盟链节点Ni,i∈[1,n]编定顺序,在联盟链上发布外部分布式合约,当联盟链节点Ni存储链上的数据Dk时,联盟链节点Ni将链上的数据Dk加密后提交给外部分布式合约,k为数据Dk的标识;

外部分布式合约执行以下步骤:

A)外部分布式合约将数据Dk截断为若干个数据段,依次将截断后的数据段沿联盟链节点Ni,i∈[1,n]编定顺序传递至联盟链节点Ni‑1;

B)在传递数据段过程中联盟链节点Ni+1至联盟链节点Ni‑2随机决定在数据段中添加干扰数据段,并在本地记录添加干扰数据段的位置标识;

C)联盟链节点Ni‑1收到全部数据段后,将收到的全部数据段拼接成数据D′k,联盟链节点Ni删除数据Dk,联盟链节点Ni‑1将数据D′k发送给外部分布式合约,外部分布式合约将数据D′k加密后存储在随机的除Ni以外的联盟链节点上,联盟链节点Ni‑1将数据D′k从本地删除,完成数据Dk的加密;

D)当需要将数据D′k解密时,联盟链节点Ni向外部分布式合约发送获取数据Dk请求,外部分布式合约构建安全多方计算,安全多方计算的输入为数据D′k包含数据段的序号,安全多方计算的输出为对应序号的数据段是否为干扰数据段,外部分布式合约根据干扰数据段的序号将干扰数据段剔除后,进行解密,即可将数据D′k复原为数据Dk,外部分布式合约将数据Dk发送给联盟链节点Ni。

2.根据权利要求1所述的一种用于联盟链的数据落盘加密方法,其特征在于,步骤D)中,当程序请求读取数据Dk时,为需要将数据D′k解密的时刻,还包括步骤:

E)联盟链节点Ni获得复原数据Dk后,通知全部联盟链节点删除在本地记录的添加干扰数据段的位置标识,当程序释放数据Dk时,则按照步骤A)至D)重新保存数据Dk。

3.根据权利要求1或2所述的一种用于联盟链的数据落盘加密方法,其特征在于,步骤A)中,外部分布式合约将数据Dk截断为m个数据段,记为{dj,j∈[1,m]},其中,dj的长度为定值,数据段dm通过补位使长度达到定值,联盟链节点Ni均设有缓冲区和交换区,所述缓冲区和交换区长度均与dj的长度匹配,所述交换区具有随机的干扰数据段,联盟链节点Ni将数据段dj发送给联盟链节点Ni+1的缓冲区;

步骤B)中,若联盟链节点Ni+1决定在数据段中添加干扰数据段,则将缓冲区和交换区内的数据对调后,将缓冲区内的数据发送给下一个联盟链节点,在首次决定添加干扰数据段后,联盟链节点Ni+1每次收到上一个联盟链节点Ni发送的数据后,均将缓冲区和交换区的数据对调。

4.根据权利要求3所述的一种用于联盟链的数据落盘加密方法,其特征在于,步骤B)中,在本地记录添加干扰数据段的位置标识的方法为:联盟链节点Ni,i∈[1,n]均设有标志位 其中l为在传递数据Dk时,联盟链节点Ni收到上一个联盟链节点Ni‑1发送的数据段dj的次数,若第l次收到数据段dj时,联盟链节点Ni将缓冲区和交换区内的数据对调,则 置1,反之,则 置0,标志位 即为位置标识。

5.根据权利要求4所述的一种用于联盟链的数据落盘加密方法,其特征在于,联盟链节点Ni的标志位 中l的初值为0,联盟链节点Ni的缓冲区每次收到其上一个联盟链节点Ni‑1发送的数据段dj时,l自加1,当超过预设通信超时时间未收到其上一个联盟链节点Ni‑1发送的数据段dj时,标志位序号标识l置0,外部分布式合约设置有监督机制,确保同一时间联盟链中仅有一个数据正在被存储。

6.根据权利要求5所述的一种用于联盟链的数据落盘加密方法,其特征在于,外部分布式合约设置有监督机制,确保同一时间联盟链中仅有一个数据正在被存储的方法包括:联盟链节点Ni均设有任务标志位 任务标志位 初值为0,联盟链节点Ni需要存储数据Dk时,首先向联盟链节点Ni+1查询任务标志位 若任务标志位 为0,则向节点Ni+2查询任务标志位 若任务标志位 为1,则等待预设时间后,再次查询任务标志位联盟链节点Ni被查询任务标志位 后,在预设的时长内,将 置为1,若联盟链节点Ni查询到节点Ni‑1的任务标志位 仍为0,则将数据Dk提交给外部分布式合约开始存储。

7.根据权利要求5所述的一种用于联盟链的数据落盘加密方法,其特征在于,步骤D)中,将数据D′k解密的方法包括:D1)外部分布式合约收到联盟链节点Ni解密数据D′k的请求,D′k={d′j,j∈[1,m+n‑2]}外部分布式合约构建变量z=1和p=2;

D2)外部分布式合约查询联盟链节点Ni‑p的标志位 若i‑p不大于零,则将n‑i+p的值视为i‑p的值,若标志位 的值为1,则进入步骤D3),若标志位 的值为0,则进入步骤D4);

D3)外部分布式合约丢弃数据段d′z,联盟链节点Ni‑p将全部标志位 均置0,z自加1,p恢复初值2,返回步骤D2)继续执行;

D4)p自加1,若p等于n‑1,则进入步骤D5),若p小于n‑1,则返回步骤D2)继续执行;

D5)外部分布式合约保留数据段d′z,z自加1,p恢复初值2,返回步骤D2)继续执行,直到z等于m+n‑2,此时,被保留下来的数据段d′z拼接后即组成数据Dk,完成数据Dk的复原。

说明书 :

一种用于联盟链的数据落盘加密方法

技术领域

[0001] 本发明涉及区块链技术领域,具体涉及一种用于联盟链的数据落盘加密方法。

背景技术

[0002] 公有链是指所有人都可以进入系统读取数据、发送交易、竞争记账的区块链。公有链有着其不可编辑、不可篡改的特点,但这使得公有链并不适用于企业。因此诞生了联盟链,联盟链是由多个私有链组成的集群,由多个机构共同参与管理的区块链,每个组织或机构管理一个或多个节点,其数据只允许系统内不同的机构进行读写和发送。联盟链具有极快的交易速度、更低的交易成本、更好的隐私保护、不容易被恶意攻击等特点。联盟链的数据只限于联盟里的机构及其用户才有权限进行访问。目前确保联盟链数据不被外泄的技术主要分为两个方面:链上通信数据的访问控制和节点存储数据的访问控制。链上通信数据的访问控制通过节点证书和SSL来完成。而目前的节点存储数据的访问控制则使用落盘加密的方式。联盟链内的节点对其硬盘上的数据进行加密,当需要访问数据时,通过Key Manager服务来管理。Key Manager服务部署在机构内网内,专门管理节点硬盘数据访问秘钥的服务,外网无法访问。但该技术方案存在以下问题,当硬盘和秘钥同时被泄露时,即会造成联盟链数据的外泄,因而其安全性还不够高。如中国专利CN111541547A,公开日2020年8月14日,提供多层级数据隐私性的联盟链架构,该联盟链架构包括:由多个组织部署于联盟链上的多个节点、用于节点之间数据传输的一个或多个通道;同一通道中的至少一节点配置有中心化系统,用于与节点进行数据交互;节点设有用于存储敏感数据的私有数据,敏感数据为同一通道中的节点之间访问设限的数据,私有数据为节点中设置访问权限的数据,对于私有数据的权限可以进行灵活配置,可满足不同组织的链上数据隐私性需求,提高了联盟链数据的隐私性与安全性。但其技术方案不能避免联盟链节点的存储设备在联盟链外启动时会造成数据泄露的问题。

发明内容

[0003] 本发明要解决的技术问题是:目前联盟链数据的隐私性和安全性还有待提升的技术问题。提出了一种用于联盟链的数据落盘加密方法,本方法能够有效防止联盟链数据泄露,保证联盟链隐私数据的安全。
[0004] 为解决上述技术问题,本发明所采取的技术方案为:一种用于联盟链的数据落盘加密方法,包括:将联盟链节点Ni,i∈[1,n]编定顺序,在联盟链上发布外部分布式合约,当联盟链节点Ni存储链上的数据Dk时,联盟链节点Ni将链上的数据Dk提交给外部分布式合约,k为数据Dk的标识;外部分布式合约执行以下步骤:A)外部分布式合约将数据Dk截断为若干个数据段,依次将截断后的数据段沿联盟链节点Ni,i∈[1,n]编定顺序传递至联盟链节点Ni‑1;B)在传递数据段过程中联盟链节点Ni+1至联盟链节点Ni‑2随机决定在数据段中添加干扰数据段,并在本地记录添加干扰数据段的位置标识;C)联盟链节点Ni‑1收到全部数据段后,将收到的全部数据段拼接成数据D′k,联盟链节点Ni删除数据Dk,联盟链节点Ni‑1将数据D′k发送给外部分布式合约,外部分布式合约将数据D′k加密后存储在随机的除Ni以外的联盟链节点上,联盟链节点Ni‑1将数据D′k从本地删除,完成数据Dk的加密;D)当需要将数据D′k解密时,联盟链节点Ni向外部分布式合约发送获取数据Dk请求,外部分布式合约构建安全多方计算,安全多方计算的输入为数据D′k包含数据段的序号,安全多方计算的输出为对应序号的数据段是否为干扰数据段,外部分布式合约根据干扰数据段的序号将干扰数据段剔除后,进行解密,即可将数据D′k复原为数据Dk,外部分布式合约将数据Dk发送给联盟链节点Ni。将数据Dk截断后,由联盟链上的其他联盟链节点随机决定是否添加干扰数据段,使得每个联盟链节点均保存有解密数据D′k所需要的数据,进而实现了联盟链节点一旦脱离联盟链内网环境,便无法复原数据。在解密数据D′k时,联盟链节点在解密数据D′k时,无需将复原所需数据发送给其他节点,保证了联盟链数据的安全。
[0005] 作为优选,步骤D)中,当程序请求读取数据Dk时,为需要将数据D′k解密的时刻,还包括步骤:E)联盟链节点Ni获得复原数据Dk后,通知全部联盟链节点删除在本地记录的添加干扰数据段的位置标识,当程序释放数据Dk时,则按照步骤A)至D)重新保存数据Dk。对于隐私要求较高的数据,采用本优选方案,能够进一步提高数据的安全性,确保隐私数据不被泄露。
[0006] 作为优选,步骤A)中,外部分布式合约将数据Dk截断为m个数据段,记为{dj,j∈[1,m]},其中,dj的长度为定值,数据段dm通过补位使长度达到定值,联盟链节点Ni均设有缓冲区和交换区,所述缓冲区和交换区长度均与dj的长度匹配,所述交换区具有随机的干扰数据段,联盟链节点Ni将数据段dj发送给联盟链节点Ni+1的缓冲区;步骤B)中,若联盟链节点Ni+1决定在数据段中添加干扰数据段,则将缓冲区和交换区内的数据对调后,将缓冲区内的数据发送给下一个联盟链节点,在首次决定添加干扰数据段后,联盟链节点Ni+1每次收到上一个联盟链节点Ni发送的数据后,均将缓冲区和交换区的数据对调。
[0007] 作为优选,步骤B)中,在本地记录添加干扰数据段的位置标识的方法为:联盟链节点Ni,i∈[1,n]均设有标志位 其中l为在传递数据Dk时,联盟链节点Ni收到上一个联盟链节点Ni‑1发送的数据段dj的次数,若第l次收到数据段dj时,联盟链节点Ni将缓冲区和交换区内的数据对调,则 置1,反之,则 置0,标志位 即为位置标识。通过标志位 能够完成位置标识,实现数据Dk的复原。
[0008] 作为优选,联盟链节点Ni的标志位 中l的初值为0,联盟链节点Ni的缓冲区每次收到其上一个联盟链节点Ni‑1发送的数据段dj时,l自加1,当超过预设通信超时时间未收到其上一个联盟链节点Ni‑1发送的数据段dj时,标志位序号标识l置0,外部分布式合约设置有监督机制,确保同一时间联盟链中仅有一个数据正在被存储。
[0009] 作为优选,外部分布式合约设置有监督机制,确保同一时间联盟链中仅有一个数据正在被存储的方法包括:联盟链节点Ni均设有任务标志位 任务标志位 初值为0,联盟链节点Ni需要存储数据Dk时,首先向联盟链节点Ni+1查询任务标志位 若任务标志位为0,则向节点Ni+2查询任务标志位 若任务标志位 为1,则等待预设时间后,再次查询任务标志位 联盟链节点Ni被查询任务标志位 后,在预设的时长内,将
置为1,若联盟链节点Ni查询到节点Ni‑1的任务标志位 仍为0,则将数据Dk提交给外部分布式合约开始存储。能够避免数据存储交叉,影响数据Dk被正确复原。
[0010] 作为优选,步骤D)中,将数据D′k解密的方法包括:D1)外部分布式合约收到联盟链节点Ni解密数据D′k的请求,D′k={d′j,j∈[1,m+n‑2]}外部分布式合约构建变量z=1和p=2;D2)外部分布式合约查询联盟链节点Ni‑p的标志位 若i‑p不大于零,则将n‑i+p的值视为i‑p的值,若标志位 的值为1,则进入步骤D3),若标志位 的值为0,则进入步骤D4);D3)外部分布式合约丢弃数据段d′z,联盟链节点Ni‑p将全部标志位 均置0,z自加1,p恢复初值2,返回步骤D2)继续执行;D4)p自加1,若p等于n‑1,则进入步骤D5),若p小于n‑1,则返回步骤D2)继续执行;D5)外部分布式合约保留数据段d′z,z自加1,p恢复初值2,返回步骤D2)继续执行,直到z等于m+n‑2,此时,被保留下来的数据段d′z拼接后即组成数据Dk,完成数据Dk的复原。根据标志位复原数据Dk,每个联盟链节点仅需要计算自身存储的标志位,且不需要将标志位数据分享给其他节点,提高联盟链隐私数据的安全性。
[0011] 本发明的实质性效果是:每个联盟链节点均保存有解密数据D′k所需要的数据,实现了联盟链节点一旦脱离联盟链内网环境,便无法复原数据;在解密数据D′k时,联盟链节点在解密数据D′k时,无需将复原所需数据发送给其他节点,保证了联盟链数据的安全。

附图说明

[0012] 图1为实施例一数据落盘加密方法流程框图。
[0013] 图2为实施例一联盟链节点参与数据加密示意图。
[0014] 图3为实施例一数据加密示意图。
[0015] 图4为实施例一数据解密示意图。

具体实施方式

[0016] 下面通过具体实施例,并结合附图,对本发明的具体实施方式作进一步具体说明。
[0017] 实施例一:
[0018] 一种用于联盟链的数据落盘加密方法,包括:将联盟链节点Ni,i∈[1,n]编定顺序,在联盟链上发布外部分布式合约,当联盟链节点Ni存储链上的数据Dk时,联盟链节点Ni将链上的数据Dk提交给外部分布式合约,k为数据Dk的标识。
[0019] 外部分布式合约执行以下步骤,如图1所示:A)外部分布式合约将数据Dk截断为若干个数据段,依次将截断后的数据段沿联盟链节点Ni,i∈[1,n]编定顺序传递至联盟链节点Ni‑1。外部分布式合约将数据Dk截断为m个数据段,记为{dj,j∈[1,m]},其中,dj的长度为定值,数据段dm通过补位使长度达到定值,联盟链节点Ni均设有缓冲区和交换区,缓冲区和交换区长度均与dj的长度匹配,交换区具有随机的干扰数据段,联盟链节点Ni将数据段dj发送给联盟链节点Ni+1的缓冲区。
[0020] B)在传递数据段过程中联盟链节点Ni+1至联盟链节点Ni‑2随机决定在数据段中添加干扰数据段,并在本地记录添加干扰数据段的位置标识。如图2所示,若联盟链节点Ni+1决定在数据段中添加干扰数据段,则将缓冲区和交换区内的数据对调后,将缓冲区内的数据发送给下一个联盟链节点,在首次决定添加干扰数据段后,联盟链节点Ni+1每次收到上一个联盟链节点Ni发送的数据后,均将缓冲区和交换区的数据对调。
[0021] 在本地记录添加干扰数据段的位置标识的方法为:联盟链节点Ni,i∈[1,n]均设有标志位 其中l为在传递数据Dk时,联盟链节点Ni收到上一个联盟链节点Ni‑1发送的数据段dj的次数,若第l次收到数据段dj时,联盟链节点Ni将缓冲区和交换区内的数据对调,则置1,反之,则 置0,标志位 即为位置标识。通过标志位 能够完成位置标识,实现数据Dk的复原。
[0022] 联盟链节点Ni的标志位 中l的初值为0,联盟链节点Ni的缓冲区每次收到其上一个联盟链节点Ni‑1发送的数据段dj时,l自加1,当超过预设通信超时时间未收到其上一个联盟链节点Ni‑1发送的数据段dj时,标志位序号标识l置0,外部分布式合约设置有监督机制,确保同一时间联盟链中仅有一个数据正在被存储。
[0023] C)联盟链节点Ni‑1收到全部数据段后,将收到的全部数据段拼接成数据D′k,联盟链节点Ni删除数据Dk,联盟链节点Ni‑1将数据D′k发送给外部分布式合约,外部分布式合约将数据D′k加密后存储在随机的除Ni以外的联盟链节点上,联盟链节点Ni‑1将数据D′k从本地删除,完成数据Dk的加密。如图3所示,为本实施例完成加密后的数据D′k示意图。本实施例中共有3个联盟链节点参与数据Dk的加密,数据Dk={d1,d2,d3,d4,d5},完成加密后,[0024] 数据D′k={d1random,d2random,d1,d2,d3random,d3,d4,d5},节点N1至N3分别存储有与加密有关的标志位。
[0025] D)当需要将数据D′k解密时,联盟链节点Ni向外部分布式合约发送获取数据Dk请求,外部分布式合约构建安全多方计算,安全多方计算的输入为数据D′k包含数据段的序号,安全多方计算的输出为对应序号的数据段是否为干扰数据段,外部分布式合约根据干扰数据段的序号将干扰数据段剔除后,进行解密,即可将数据D′k复原为数据Dk,外部分布式合约将数据Dk发送给联盟链节点Ni。
[0026] 如图4所示,将数据D′k解密的方法包括:D1)外部分布式合约收到联盟链节点Ni解密数据D′k的请求,D′k={d′j,j∈[1,m+n‑2]}外部分布式合约构建变量z=1和p=2;D2)外部分布式合约查询联盟链节点Ni‑p的标志位 若i‑p不大于零,则将n‑i+p的值视为i‑p的值,若标志位 的值为1,则进入步骤D3),若标志位 的值为0,则进入步骤D4);D3)外部分布式合约丢弃数据段d′z,联盟链节点Ni‑p将全部标志位 均置0,z自加1,p恢复初值2,返回步骤D2)继续执行;D4)p自加1,若p等于n‑1,则进入步骤D5),若p小于n‑1,则返回步骤D2)继续执行;D5)外部分布式合约保留数据段d′z,z自加1,p恢复初值2,返回步骤D2)继续执行,直到z等于m+n‑2,此时,被保留下来的数据段d′z拼接后即组成数据Dk,完成数据Dk的复原。根据标志位复原数据Dk,每个联盟链节点仅需要计算自身存储的标志位,且不需要将标志位数据分享给其他节点,提高联盟链隐私数据的安全性。
[0027] E)联盟链节点Ni获得复原数据Dk后,通知全部联盟链节点删除在本地记录的添加干扰数据段的位置标识,当程序释放数据Dk时,则按照步骤A)至D)重新保存数据Dk。对于隐私要求较高的数据,采用本优选方案,能够进一步提高数据的安全性,确保隐私数据不被泄露。
[0028] 本实施例的有益技术效果是:每个联盟链节点均保存有解密数据D′k所需要的数据,实现了联盟链节点一旦脱离联盟链内网环境,便无法复原数据;在解密数据D′k时,联盟链节点在解密数据D′k时,无需将复原所需数据发送给其他节点,保证了联盟链数据的安全。
[0029] 实施例二:
[0030] 一种用于联盟链的数据落盘加密方法,本实施例中,外部分布式合约设置有监督机制,确保同一时间联盟链中仅有一个数据正在被存储的方法包括:联盟链节点Ni均设有任务标志位 任务标志位 初值为0,联盟链节点Ni需要存储数据Dk时,首先向联盟链节点Ni+1查询任务标志位 若任务标志位 为0,则向节点Ni+2查询任务标志位 若任务标志位 为1,则等待预设时间后,再次查询任务标志位 联盟链节点Ni被查询任务标志位 后,在预设的时长内,将 置为1,若联盟链节点Ni查询到节点Ni‑1的任务标志位 仍为0,则将数据Dk提交给外部分布式合约开始存储。能够避免数据存储交叉,影响数据Dk被正确复原。
[0031] 以上的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。