掌桥专利:专业的专利平台
掌桥专利
首页

一种联盟链安全多方计算方法

文献发布时间:2023-06-19 11:27:38


一种联盟链安全多方计算方法

技术领域

本发明涉及信息安全技术领域,具体涉及一种联盟链安全多方计算方法。

背景技术

安全多方计算是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题。安全多方计算中,各个参与方无需向对方或第三方透露其原数据,即可完成需要多个参与方原数据才能完成的约定函数的计算。联盟链是只针对某个特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人,每个块的生成由所有的预选节点共同决定。其他接入节点可以参与交易,但不过问记账过程。第三方可以通过该区块链开放的API进行限定查询。联盟链使用的主要群体是银行、保险、证券、商业协会、集团企业及上下游企业。这些行业中的企业或机构,相互之间既有较强的合作需求,同时又对敏感数据的保密有着严格的要求。因而常采用安全多方计算解决诸如不记名投票、门限签名、销售额统计等问题。但目前联盟链使用的安全多方计算方案需要为每个布尔电路的门生成至少两对非对称加密秘钥,对于较为复杂的计算而言,生成的布尔电路也较复杂,会导致联盟链节点在安全多方计算过程中产生大量的公私秘钥对,还需要相应的完成加解密操作,耗费较多的计算时间,影响了多方安全计算的效率。

如中国专利CN111737011B,公开日2021年1月29日,一种安全多方计算的实现方法,应用在安全多方计算参与方的代表节点上,包括:确定本参与方符合安全多方计算协议的密态计算任务;将密态计算任务拆分为至少两个子任务,并将子任务分发给至少两个辅助节点进行计算;接收辅助节点返回的子任务的执行结果,根据子任务的执行结果生成符合安全多方计算协议的密态计算任务的计算结果。其采用同态加密的技术,仍然会导致安全多方计算的效率低下的技术问题。

发明内容

本发明要解决的技术问题是:目前联盟链内进行多方安全计算效率较低的技术问题。提出了一种联盟链安全多方计算方法,本方法通过构建映射地址层提高了安全多方计算的效率。

为解决上述技术问题,本发明所采取的技术方案为:一种联盟链安全多方计算方法,包括发起方、若干个参与方和地址映射层,所述地址映射层建立映射地址和物理地址的映射,所述映射地址使用后即删除,向所述地址映射层提交的物理地址仅用于读取数据;执行以下步骤:所述发起方将待计算函数转换为布尔电路,所述发起方将布尔电路的门转换为标签表,将标签表发送给对应参与方,所述标签表记录输入标签组合与输出标签的映射关系;所述参与方从所述地址映射层获取两个映射地址及相应物理地址,将两个映射地址分别与两个布尔值关联后使用所述发起方的公钥加密,将加密后的数据存入输入数据取反值所关联的映射地址,并将对应的物理地址发送给所述发起方;所述发起方根据两个布尔值关联的映射地址,分别将布尔值对应的标签使用所述参与方的公钥加密后存入布尔值关联的映射地址后通知所述参与方;所述参与方从两个物理地址读取数据,其中一个物理地址为加密的标签,使用私钥解密即可获得标签,获得全部输入数据的标签后根据所述标签表获得输出标签,将输出标签发送给其他参与方作为所述布尔电路其他门的输入标签;当所述布尔电路的全部门均获得输出标签时,所述布尔电路将输出结果标签,所述发起方将所述结果标签转换为布尔值即为多方计算结果。标签获取过程中,仅使用了各个节点本身具有的公钥,并不需要产生新的公司秘钥对,相应的也没有多次的加解密过程,从而提高了安全多方计算的效率。

作为优选,所述映射地址使用后即删除的实现方法为:所述地址映射层周期性建立若干组映射地址和物理地址的地址条目,所述地址映射层将所述地址条目压入堆栈中,当需要使用映射地址时,从所述堆栈中弹出一个条目。使用堆栈能够天然的实现映射地址被使用一次后即失效的技术效果。

作为优选,所述地址映射层开辟两块存储区域,在所开辟的存储区域中分割若干个存储块,记录所述存储块的物理地址,为每个物理地址关联一个随机码,所述随机码即为映射地址,两块所述存储区域交替存储数据,所述存储区域在存储数据前清除已存储数据,并重新产生并关联映射地址。当安全多方计算的得出结果后,所使用的物理地址内存储的数据即可销毁,通过周期性开辟新的专用区域产生映射地址和物理地址对,并周期性将旧的专用区域释放,可以提高存储空间的使用率。

作为优选,所述地址映射层建立的映射地址和物理地址的映射中,每个映射地址均对应若干个不相邻的物理地址,若干个所述物理地址指向的存储空间为预设值,使用所述映射地址存入数据时,将数据拆分成子数据,每个子数据均关联第一个物理地址的标识,按次序将每个子数据存入一个物理地址对应的存储空间,用于读取数据的所述物理地址为映射地址对应的第一个物理地址,使用所述物理地址读取数据时,读取出第一个物理地址对应的子数据后,按预设值依次向下读取数据并验证关联是否为第一个物理地址的标识,找到全部关联有第一个物理地址标识的子数据后拼接复原数据。不相邻的物理地址实现了分块加密存储,提高了数据的安全性。

作为优选,所述映射地址对应的若干个不相邻的物理地址的间距具有若干种预设的模式,使用所述物理地址读取数据时,读取出若干个子数据后,与若干种预设的模式对比,获得物理地址的间距模式后,按所述的模式直接寻找到下一个物理地址并读取数据。通过预设模式能够加快分块存储的数据的读取效率,降低分块存储对安全多方计算效率的影响。

作为优选,所述发起方将布尔电路的门转换为标签表的方法包括:将布尔电路的门排序并编号,列举门的输入输出的可取值,将每个可取值使用预设长度的随机码代替;穷举门的输入组合,获得每个所述输入组合对应的输出,将所述输入组合及输出用相应的随机码表示,将表示输入组合的随机码组合以及表示输出的随机码分别作为标签表的第一列和第二列。

作为优选,所述标签表还具有混淆输入组合,所述混淆输入组合为无实际意义的随机码组合,所述混淆输入组合对应的输出为任意实际输出的标签。

作为优选,所述地址映射层的实现方法包括:每个联盟链节点均通过外部共识协议的方式运行地址映射协议,所述地址映射协议包括映射地址产生协议、数据写入协议和数据读取协议;所述映射地址产生协议周期性开辟存储区域,将存储区域划分为若干个预设长度的存储块,记录每个存储块的物理地址,产生若干个映射地址,所述映射地址为随机码,为每个映射地址关联预设数量的物理地址,被关联的物理地址为不相邻的物理地址,将映射地址及其关联的物理地址作为一个映射地址条目存储,当参与方请求映射地址时,向除发起方以外的联盟链节点请求映射地址,所述联盟链节点将映射地址和映射地址所关联的第一个物理地址发送给所述参与方,并将被发送的映射地址条目标记为已使用,所述参与方将所述的映射地址对应的物理地址发送给所述发起方时同时发送所述联盟链节点的标识;所述数据写入协议将待存入数据拆分成预设数量的数据块,将每个数据块均关联第一个物理地址的标识,将若干个数据块分别存入映射地址关联的若干个物理地址,而后所述数据写入协议将使用的映射地址条目从本地删除;所述数据读取协议收到读取数据请求时,首先按收到的物理地址读取第一个数据块,而后按照存储块的长度依次向下读取,并验证是否关联有收到的物理地址的标识,若有则读取数据,直到凑够预设数量的数据块后,将数据块拼接复原出数据,将复原出的数据发送给读取数据请求方。通过外部共识协议构建由多个联盟链节点组成的分布式映射地址层,使得映射地址层具有足够的处理效率和通信带宽,同时避免了中心节点的出现,提高了安全多方计算的效率和安全性,每个映射地址关联的物理地址不连续,相当于再次对数据进行了加密,提高了数据的安全性,确保了安全多方计算过程中数据的隐私性得以保护。

本发明的实质性效果是:1)安全多方计算的发起方将待计算函数转换为布尔电路后,将布尔电路的每个门的输入和输出转换为标签表,实现参与方隐私数据的保护;2)减少了标签获取过程中加解密的次数,提高了安全多方计算的效率;3)构建分布式地址映射层避免了中心化节点的出现,提高了安全多方计算的效率和稳定性。

附图说明

图1为实施例一联盟链安全多方计算方法流程框图。

图2为实施例一布尔电路转换为标签表的方法流程框图。

图3为实施例一映射地址产生方法流程框图。

图4为实施例二分块存储方法流程框图。

图5为实施例二分块存储的数据读取方法流程框图。

图6为实施例三分布式映射地址层产生映射地址方法流程框图。

具体实施方式

下面通过具体实施例,并结合附图,对本发明的具体实施方式作进一步具体说明。

实施例一:

一种联盟链安全多方计算方法,包括发起方P、若干个参与方R和地址映射层,地址映射层预先建立映射地址和物理地址的映射。请参阅附图1,本方法包括以下步骤:S1)发起方P将待计算函数转换为布尔电路,发起方P将布尔电路的门转换为标签表,将标签表发送给对应参与方R,标签表记录输入标签组合与输出标签的映射关系。安全多方计算的发起方P将待计算函数转换为布尔电路后,将布尔电路的每个门的输入和输出转换为标签表,实现布尔电路的加密,而后参与方R和发起方P之间通过映射地址层完成标签的交换,交换过程中参与方R仅能够获得其输入数据所对应的标签,发起方P也无法确定参与方R获得的是哪个标签,实现参与方R隐私数据的保护。

S2)参与方R从地址映射层获取两个映射地址MA及相应物理地址PA,将两个映射地址分别与两个布尔值关联后使用发起方P的公钥加密。

S3)将加密后的数据存入输入数据取反值所关联的映射地址,并将对应的物理地址发送给发起方P。

S4)发起方P根据两个布尔值关联的映射地址,分别将布尔值对应的标签使用参与方R的公钥加密后存入布尔值关联的映射地址后通知参与方R。

S5)参与方R从两个物理地址读取数据,其中一个物理地址为加密的标签,使用私钥解密即可获得标签,获得全部输入数据的标签后根据标签表获得输出标签,将输出标签发送给其他参与方R作为布尔电路其他门的输入标签。

S6)当布尔电路的全部门均获得输出标签时,布尔电路将输出结果标签,发起方P将结果标签转换为布尔值即为多方计算结果。

映射地址使用后即删除,向地址映射层提交的物理地址仅用于读取数据。映射地址使用后即删除的实现方法为:地址映射层周期性建立若干组映射地址和物理地址的地址条目,地址映射层将地址条目压入堆栈中,当需要使用映射地址时,从堆栈中弹出一个条目。

请参阅附图2,发起方P将布尔电路的门转换为标签表的方法包括:将布尔电路的门排序并编号,列举门的输入输出的可取值,将每个可取值使用预设长度的随机码代替;穷举门的输入组合,获得每个输入组合对应的输出,将输入组合及输出用相应的随机码表示,将表示输入组合的随机码组合以及表示输出的随机码分别作为标签表的第一列和第二列。附图2表示了布尔电路中的5个门,3个与门以及2个异或门。布尔电路中的每个门的输入及输出均分别用一组标签表示,其中门的输入是另一个门的输出,则共用一组标签。每组标签包含两个分别表示0/1的标签。其中A组标签属于发起方P的输入数据,B、C、D三组标签分别属于3个参与方R的输入数据,布尔电路输出结果为布尔值。附图2记载的布尔电路含义为,A、B两组标签对应联盟链中的两个高权限节点,即属于联盟链委员会的节点,C、D两组标签对应两个低权限节点,即联盟链普通节点,表决逻辑为:高权限节点投票权重为1票,低权限节点投票权重为0.5票,事件需要获得至少2票为表决通过。

当某个事件需要这4个节点投票表决时,表决逻辑具体为:

若两个高权限节点均同意,A、B两组标签即均输入1,则事件表决通过,布尔电路输出1;

若两个高权限节点均反对,A、B两组标签即均输入0,则事件表决不通过,布尔电路输出0;

若两个高权限节点意见不一,A、B两组标签中即一个输入1另一个输入0,若此时两个低权限节点均同意,C、D两组标签均输入1,则事件仍然表决通过,布尔电路输出1,反之,则事件表决不通过,布尔电路输出0 。

将5个布尔电路的门的输入组合穷举,写出相应的输出,构成真值表,将真值表发送给参与方R,即布尔电路转换为5张真值表。为每个真值表的每个输入设置一组标签,输出设置一组标签,即将真值表转换为标签表。标签为随机生成值,如表1所示,标签A0:10010,A1:11001,标签B0:01100,B1:01010,标签E0:11101,E1:00111,且每组标签中相同真值也分配有不同的标签,从而实现了真值表的加密。

表1 第一个与门的真值表转换得到的标签表

参与方R根据自己的输入,即是否同意事件,与发起方P通信,获得对应的标签,而后查标签表即可获得门的输出。对应A标签组联盟链节点即为发起方P,发起方P也为参与方R之一,将其输入,1,代入标签表,将标签表转换为部分解密标签表,如表2所示,将该部分解密标签表发送给B标签组对应的联盟链节点,即参与方R,其输入数据为0。参与方R通过通信获得输入为0对应的标签B0值为01100,查表2所示标签表,可得相应输出为11101,将11101发送给负责运算最后一个异或门的参与方R。当5个门的输出逐步依次被获得时,布尔电路即能够输出结果,完成安全多方计算。

表2发起方P代入其输入数据后的部分解密标签表

标签表还具有混淆输入组合,混淆输入组合为无实际意义的随机码组合,混淆输入组合对应的输出为任意实际输出的标签,如表3所示。带有混淆标签的标签表,能够避免参与方R通过排除法获得其输入意外的真值的标签。混淆标签不会被用到,其无实际的意义,无需严格推导混淆标签组合对应的输出标签。

表3带有混淆的标签表

请参阅附图3,映射地址的产生方法包括:S01)地址映射层开辟两块存储区域,在所开辟的存储区域中分割若干个存储块;S02)记录存储块的物理地址,为每个物理地址关联一个随机码,随机码即为映射地址,本实施例开辟的物理地址及分配的映射地址如表4所示;S03)两块存储区域交替存储数据,存储区域在存储数据前清除已存储数据,并重新产生并关联映射地址。

表4 实施例一产生的物理地址及所分配的映射地址

理论上任意函数均可表示成布尔电路,采用布尔电路的方式能够完成复杂的多方计算,给出需要的结果,且能够保障各个参与方R隐私数据不外泄。通过地址映射层传递标签值,通过完全不知情第三方专递标签值,不知情第三方传递时又会隐藏部分重要的信息,使得安全多方计算的参与方R更加难以获得有效敏感数据。降低了安全多方计算对加密强度的要求,能够提高标签传递的效率,从而提高安全多方计算的效率。

实施例二:

一种联盟链安全多方计算方法,本实施例对映射地址做出了进一步的改进,请参阅附图4及表5,包括:S31)地址映射层建立的映射地址和物理地址的映射中,每个映射地址均对应若干个不相邻的物理地址,若干个物理地址指向的存储空间为预设值;S32)使用映射地址存入数据时,将数据拆分成子数据,每个子数据均关联第一个物理地址的标识;S33)按次序将每个子数据存入一个物理地址对应的存储空间,用于读取数据的物理地址为映射地址对应的第一个物理地址。

表5 地址映射层建立的映射地址和物理地址的映射

表6 按映射地址存入数据后的存储内容

请参阅附图5及表6,使用物理地址读取数据时,包括:S34)读取出第一个物理地址对应的子数据后;S35)按预设值依次向下读取数据并验证关联是否为第一个物理地址的标识;S36)找到全部关联有第一个物理地址标识的子数据后拼接复原数据。如表6所示,查询关联有(12,3,42)的存储单元,可查询得到d1至d4,从而拼接出完整的数据。不相邻的物理地址实现了分块加密存储,提高了数据的安全性。

映射地址对应的若干个不相邻的物理地址的间距具有若干种预设的模式,使用物理地址读取数据时,读取出若干个子数据后,与若干种预设的模式对比,获得物理地址的间距模式后,按的模式直接寻找到下一个物理地址并读取数据。通过预设模式能够加快分块存储的数据的读取效率,降低分块存储对安全多方计算效率的影响。

本实施例的其余步骤同实施例一。相对于实施例一,本实施例提高了映射地址对隐私数据的隐藏程度,提高了隐私数据的安全性。

实施例三:

一种联盟链安全多方计算方法,本实施例提供了分布式地址映射层的建立方法,请参阅附图6,每个联盟链节点均通过外部共识协议的方式运行地址映射协议,地址映射协议包括映射地址产生协议、数据写入协议和数据读取协议。具体包括:W01)映射地址产生协议周期性开辟存储区域,将存储区域划分为若干个预设长度的存储块,记录每个存储块的物理地址;W02)产生若干个映射地址,映射地址为随机码,为每个映射地址关联预设数量的物理地址,被关联的物理地址为不相邻的物理地址;W03)将映射地址及其关联的物理地址作为一个映射地址条目存储;W04)当参与方R请求映射地址时,向除发起方P以外的联盟链节点请求映射地址;W05)联盟链节点将映射地址和映射地址所关联的第一个物理地址发送给参与方R,并将被发送的映射地址条目标记为已使用。参与方R将的映射地址对应的物理地址发送给发起方P时同时发送联盟链节点的标识。

数据存储和读取基本与实施例二相同,在此仅做简要描述。数据写入协议将待存入数据拆分成预设数量的数据块,将每个数据块均关联第一个物理地址的标识,将若干个数据块分别存入映射地址关联的若干个物理地址,而后数据写入协议将使用的映射地址条目从本地删除;数据读取协议收到读取数据请求时,首先按收到的物理地址读取第一个数据块,而后按照存储块的长度依次向下读取,并验证是否关联有收到的物理地址的标识,若有则读取数据,直到凑够预设数量的数据块后,将数据块拼接复原出数据,将复原出的数据发送给读取数据请求方。

本实施例的其余步骤同实施例一,相对于实施例一,本实施例通过外部共识协议构建由多个联盟链节点组成的分布式映射地址层,使得映射地址层具有足够的处理效率和通信带宽,同时避免了中心节点的出现,提高了安全多方计算的效率和安全性,每个映射地址关联的物理地址不连续,相当于再次对数据进行了加密,提高了数据的安全性,确保了安全多方计算过程中数据的隐私性得以保护。

以上的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。

相关技术
  • 一种基于联盟链的多方联合安全计算方法和装置
  • 一种联盟链安全多方计算方法
技术分类

06120112935328