一种区块链数据共享加密和解密方法、设备及存储介质

摘要:

本发明公开了一种区块链数据共享加密和解密方法、设备及存储介质,属于区块链技术领域。包括至少一个第一方创建同态代理重加密密钥对私钥A和公钥A1;对明文a进行加密得到密文a1;将密文a1上传到区块链;至少一个第二方创建同态代理重加密密钥对私钥B和公钥B1;对明文b进行加密得到密文b1;将密文b1上传到区块链;所述第一方和第二方均从区块链的智能合约获取公钥C1;第一方将公钥C1和私钥A进行代理重加密,得到密钥rekeyA,上传到区块链;第二方将公钥C1和私钥B进行代理重加密,得到密钥rekeyB,上传到区块链;其中,智能合约通过同态加密创建密钥对钥私C和公钥C1。解决了基于区块链的隐私数据进行安全计算的同态问题,减少了用户与区块链,用户与用户之间的交互流程,将链下的一些操作移到链上,使计算更具有可信力。

申请号: CN202010150007.7 专利名称: 一种区块链数据共享加密和解密方法、设备及存储介质 申请(专利权)人: [湖南智慧政务区块链科技有限公司] 发明人: [谢超良, 赵辉, 王超] 其他信息:
1.一种区块链数据共享加密方法,其特征在于,包括: 至少一个第一方创建同态代理重加密密钥对私钥A和公钥A1;对明文a进行加密得到密文a1;将密文a1上传到区块链; 至少一个第二方创建同态代理重加密密钥对私钥B和公钥B1;对明文b进行加密得到密文b1;将密文b1上传到区块链; 所述第一方和第二方均从区块链的智能合约获取公钥C1; 第一方将公钥C1和私钥A进行代理重加密,得到密钥rekeyA,上传到区块链; 第二方将公钥C1和私钥B进行代理重加密,得到密钥rekeyB,上传到区块链; 其中,智能合约通过同态加密创建密钥对钥私C和公钥C1。 2.根据权利要求1所述的一种区块链数据共享加密方法,其特征在于,所述代理重加密基于多种重加密算法,为bls12,bn256。 3.根据权利要求1所述的一种区块链数据共享加密方法,其特征在于,所述同态加密算法为基于rsa的乘同态,Paillier的加同态,或Gentry全同态。 4.根据权利要求1所述的一种区块链数据共享加密方法,其特征在于,所述区块链为以太坊,或超级账本。 5.根据权利要求4所述的一种区块链数据共享加密方法,其特征在于,所述智能合约为solidity,或chaincode。 6.一种区块链数据共享解密方法,其特征在于,根据权利要求1-5任一项所述的一种区块链数据共享加密方法,包括: 智能合约用密钥rekeyA对密文a1进行重加密得到重加密密文a2;智能合约用密钥rekeyB对密文b1进行重加密得到重加密密文b2; 智能合约将重加密密文a2和重加密密文b2进行同态计算,得到密文c2; 智能合约用钥私C对密文c2进行解密,得到明文c1,明文c1与明文a和明文b的计算结果相同。 7.根据权利要求6所述的一种区块链数据共享解密方法,其特征在于,所述代理重加密基于多种重加密算法,为bls12,或bn256。 8.根据权利要求6所述的一种区块链数据共享解密方法,其特征在于,所述同态加密算法为基于rsa的乘同态,Paillier的加同态,或Gentry全同态。 9.一种设备,其特征在于,所述设备包括: 一个或多个处理器; 存储器,用于存储一个或多个程序, 当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-8中任一项所述的方法。 10.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一项所述的方法。

一种区块链数据共享加密和解密方法、设备及存储介质

技术领域

本发明涉及区块链技术领域,尤其涉及一种区块链数据共享加密和解密方法、设备及存储介质。

背景技术

基于区块链的安全计算是大的技术背景,区块链拥有公开透明的特性,对于隐私数据需要做更多的加密计算来进行数据保护。安全计算也是区块链对隐私数据进行可计算的重要研究课题。现有的技术方案,是用户在链下确立秘钥共享方案,用同一把秘钥对数据进行加密,然后上链,由链上智能合约对数据进行安全可信计算,计算结果从链上获取后,由链下账户进行解密并通过零知识证明,证明自己的计算是真实的,再将计算结果返回给链上,供用户查询。

因为区块链是公开透明的,因此当需要进行安全计算时,公开透明却成了劣势,任何用户都能从区块链上看到计算的元数据,以及计算的方法。在安全计算的应用场景下,元数据是不希望被别的用户看到的,而使用同态加密算法,可以实现明文数据的加密,加密的数据经过计算,得到的结果解密后与明文计算的结果是相同的,这样就解决了元数据的隐私问题。同态加密有一个限制特性,就是加密的数据来自于同一秘钥才能进行同态计算,当元数据的来源来自不同的用户,不同用户之间又不希望自己的数据被别人知道时,单一的同态加密算法仍不能满足要求。

现有技术需要共享同态加密的秘钥,一旦泄露,被攻击者使用,就会产生虚假信息,造成数据计算结果存在差异,共享秘钥的所有协议方,都必须替换同态加密的秘钥。并且,很多操作是链下进行的,算法和数据存在部分暗箱操作,可信度不是很高。在效率方面,链下链上需要进行多次消息传递,效率比较低下。

发明内容

1.发明要解决的技术问题

为了克服上述技术问题,本发明提供了一种区块链数据共享加密和解密方法、设备及存储介质。减少用户与用户之间,用户与区块链之间的交互流程,增加运行效率。

2.技术方案

为解决上述问题,本发明提供的技术方案为:

一种区块链数据共享加密方法,包括:至少一个第一方创建同态代理重加密密钥对私钥A和公钥A1;对明文a进行加密得到密文a1;将密文a1上传到区块链;至少一个第二方创建同态代理重加密密钥对私钥B和公钥B1;对明文b进行加密得到密文b1;将密文b1上传到区块链;所述第一方和第二方均从区块链的智能合约获取公钥C1;第一方将公钥C1和私钥A进行代理重加密,得到密钥rekeyA,上传到区块链;第二方将公钥C1和私钥B进行代理重加密,得到密钥rekeyB,上传到区块链;其中,智能合约通过同态加密创建密钥对钥私C和公钥C1。

可选地,所述代理重加密基于多种重加密算法,为bls12,bn256。

可选地,所述同态加密算法为基于rsa的乘同态,Paillier的加同态,或Gentry全同态。

可选地,所述区块链为以太坊,或超级账本。

可选地,所述智能合约为solidity,或chaincode。

一种区块链数据共享解密方法,根据以上所述的一种区块链数据共享加密方法,包括:智能合约用密钥rekeyA对密文a1进行重加密得到重加密密文a2;智能合约用密钥rekeyB对密文b1进行重加密得到重加密密文b2;智能合约将重加密密文a2和重加密密文b2进行同态计算,得到密文c2;智能合约用钥私C对密文c2进行解密,得到明文c1,明文c1与明文a和明文b的计算结果相同。

可选地,所述代理重加密基于多种重加密算法,为bls12,或bn256。

可选地,所述同态加密算法为基于rsa的乘同态,Paillier的加同态,或Gentry全同态。

一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上任一项所述的方法。

一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上任一项所述的方法。

3.有益效果

采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:

(1)减少用户与用户之间,用户与区块链之间的交互流程,增加运行效率;

(2)使用智能合约进行可信计算,使计算流程化,可视化,增加计算结果的可信度;

(3)使用同态代理重加密技术,用户分开使用各自的秘钥,独自上链,减少秘钥泄漏带来的风险;

(4)使用区块链技术进行可信计算,减少服务宕机和数据丢失的风险。

附图说明

图1为本发明一实施例提供的一种区块链数据共享加密方法流程示意图。

图2为本发明一实施例提供的一种区块链数据共享加密方法流程示意图。

图3为本发明一实施例提供的一种区块链数据共享加密方法场景示意图。

图4本发明的一种设备结构示意图。

具体实施方式

为进一步了解本发明的内容,结合附图及实施例对本发明作详细描述。

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。本发明中所述的第一、第二等词语,是为了描述本发明的技术方案方便而设置,并没有特定的限定作用,均为泛指,对本发明的技术方案不构成限定作用。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

实施例1

一种区块链数据共享加密方法,如图1、3所示,包括:至少一个第一方创建同态代理重加密密钥对私钥A和公钥A1;对明文a进行加密得到密文a1;将密文a1上传到区块链;至少一个第二方创建同态代理重加密密钥对私钥B和公钥B1;对明文b进行加密得到密文b1;将密文b1上传到区块链;所述第一方和第二方均从区块链的智能合约获取公钥C1;第一方将公钥C1和私钥A进行代理重加密,得到密钥rekeyA,上传到区块链;第二方将公钥C1和私钥B进行代理重加密,得到密钥rekeyB,上传到区块链;其中,智能合约通过同态加密创建密钥对钥私C和公钥C1。

所述代理重加密基于多种重加密算法,为bls12,bn256。所述同态加密算法为基于rsa的乘同态,Paillier的加同态,或Gentry全同态。所述区块链为以太坊,或超级账本。所述智能合约为solidity,或chaincode。

对于不同用户之间的数据共享特性,可以用代理重加密的方案,进行解决,代理重加密是秘钥交换算法,能够完全屏蔽数据泄露的可能。单纯的代理重加密又不具备同态计算的能力。因此需要将两种算法结合到一起,使用同态代理重加密的方案,实现安全计算,为了支持更多的计算方式,使用全同态代理重加密的方案,是更符合实际业务需求的。

实施例2

一种区块链数据共享解密方法,根据实施例1所述的一种区块链数据共享加密方法,如图2、3所示,包括:智能合约用密钥rekeyA对密文a1进行重加密得到重加密密文a2;智能合约用密钥rekeyB对密文b1进行重加密得到重加密密文b2;智能合约将重加密密文a2和重加密密文b2进行同态计算,得到密文c2;智能合约用钥私C对密文c2进行解密,得到明文c1,明文c1与明文a和明文b的计算结果相同。所述代理重加密基于多种重加密算法,为bls12,或bn256。所述同态加密算法为基于rsa的乘同态,Paillier的加同态,或Gentry全同态。

基于同态代理重加密的可信计算方案,解决了基于区块链的隐私数据进行安全计算的同态问题,减少了用户与区块链,用户与用户之间的交互流程,将链下的一些操作移到链上,增强了透明度,使计算更具有可信力。基于区块链的同态代理重加密,解决了在开源状态下的数据可信计算的问题。每个上传数据的用户,都使用自己的秘钥对数据进行加密上传到区块链,每个人对自己的加密秘钥负责,减少了秘钥泄漏造成的全局影响。使用智能合约进行解密计算,将计算方法透明化,以及计算流程不能被随意更高,保证了计算的诚实执行,减少了虚假数据的风险。

实施例3

一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。

一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上实施例1所述的方法。

图4为本发明一实施例提供的一种设备的结构示意图。

如图4所示,作为另一方面,本申请还提供了一种设备500,包括一个或多个中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有设备500操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。

以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。

特别地,根据本申请公开的实施例,上述任一实施例描述的方法可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一实施例描述的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。

作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的方法。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

为进一步了解本发明的内容,结合附图及实施例对本发明作详细描述。

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。本发明中所述的第一、第二等词语,是为了描述本发明的技术方案方便而设置,并没有特定的限定作用,均为泛指,对本发明的技术方案不构成限定作用。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

实施例1

一种区块链数据共享加密方法,如图1、3所示,包括:至少一个第一方创建同态代理重加密密钥对私钥A和公钥A1;对明文a进行加密得到密文a1;将密文a1上传到区块链;至少一个第二方创建同态代理重加密密钥对私钥B和公钥B1;对明文b进行加密得到密文b1;将密文b1上传到区块链;所述第一方和第二方均从区块链的智能合约获取公钥C1;第一方将公钥C1和私钥A进行代理重加密,得到密钥rekeyA,上传到区块链;第二方将公钥C1和私钥B进行代理重加密,得到密钥rekeyB,上传到区块链;其中,智能合约通过同态加密创建密钥对钥私C和公钥C1。

所述代理重加密基于多种重加密算法,为bls12,bn256。所述同态加密算法为基于rsa的乘同态,Paillier的加同态,或Gentry全同态。所述区块链为以太坊,或超级账本。所述智能合约为solidity,或chaincode。

对于不同用户之间的数据共享特性,可以用代理重加密的方案,进行解决,代理重加密是秘钥交换算法,能够完全屏蔽数据泄露的可能。单纯的代理重加密又不具备同态计算的能力。因此需要将两种算法结合到一起,使用同态代理重加密的方案,实现安全计算,为了支持更多的计算方式,使用全同态代理重加密的方案,是更符合实际业务需求的。

实施例2

一种区块链数据共享解密方法,根据实施例1所述的一种区块链数据共享加密方法,如图2、3所示,包括:智能合约用密钥rekeyA对密文a1进行重加密得到重加密密文a2;智能合约用密钥rekeyB对密文b1进行重加密得到重加密密文b2;智能合约将重加密密文a2和重加密密文b2进行同态计算,得到密文c2;智能合约用钥私C对密文c2进行解密,得到明文c1,明文c1与明文a和明文b的计算结果相同。所述代理重加密基于多种重加密算法,为bls12,或bn256。所述同态加密算法为基于rsa的乘同态,Paillier的加同态,或Gentry全同态。

基于同态代理重加密的可信计算方案,解决了基于区块链的隐私数据进行安全计算的同态问题,减少了用户与区块链,用户与用户之间的交互流程,将链下的一些操作移到链上,增强了透明度,使计算更具有可信力。基于区块链的同态代理重加密,解决了在开源状态下的数据可信计算的问题。每个上传数据的用户,都使用自己的秘钥对数据进行加密上传到区块链,每个人对自己的加密秘钥负责,减少了秘钥泄漏造成的全局影响。使用智能合约进行解密计算,将计算方法透明化,以及计算流程不能被随意更高,保证了计算的诚实执行,减少了虚假数据的风险。

实施例3

一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。

一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上实施例1所述的方法。

图4为本发明一实施例提供的一种设备的结构示意图。

如图4所示,作为另一方面,本申请还提供了一种设备500,包括一个或多个中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有设备500操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。

以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。

特别地,根据本申请公开的实施例,上述任一实施例描述的方法可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一实施例描述的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。

作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的方法。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

个性化你的检索平台
使用键盘键 进行切换