安全多方计算方法、电子设备及存储介质与流程

文档序号:23543852发布日期:2021-01-05 20:55阅读:121来源:国知局
安全多方计算方法、电子设备及存储介质与流程

本申请涉及安全多方计算领域,特别是涉及一种安全多方计算方法、电子设备及存储介质。



背景技术:

随着大数据时代的到来,数据变得越来越重要。而数据需要被计算方能体现或变现其价值。但是许多用户处于信息安全或利益的考虑,其数据往往处于保密状态,形成一个个数据孤岛。故在用户数据毫无隐私的环境下,对数据进行确权并实现数据价值显得尤为重要。

安全多方计算(securemultipartycomputation,mpc)就是基于实现此目的的计算协议,在整个计算协议执行过程中,用户对个人数据始终拥有控制权,只有计算逻辑是公开的。参与方只需参与计算,无需依赖第三方就能完成数据计算,并且各参与方拿到计算结果后也无法推断出原始数据。

但是,现有的安全多方计算方法对数据的保密性不够高。



技术实现要素:

本申请提供一种安全多方计算方法、电子设备及存储介质,能够解决现有的安全多方计算方法对数据的保密性不够高的问题。

为解决上述技术问题,本申请采用的一个技术方案是:提供一种安全多方计算方法。该方法包括:利用管理合约基于保证金数量和/或信用值,从安全多方计算节点集合中选择多个安全多方计算节点作为参与节点,其中,安全多方计算节点的保证金数量和/或信用值与被选择为参与节点的概率正相关,各参与节点组成参与节点集合,管理合约部署于区块链上;利用计算合约将第一数量份子数据分别发送至参与节点集合中不同的参与节点,计算合约部署于区块链上;利用计算合约接收参与节点的交易信息,交易信息是在子数据真实的情况下,参与节点对子数据进行计算得到的;利用计算合约基于交易信息获取最终的计算结果。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种电子设备,该电子设备包括处理器、与处理器连接的存储器,其中,存储器存储有程序指令;处理器用于执行存储器存储的程序指令以实现上述方法。

为解决上述技术问题,本申请采用的又一个技术方案是:提供一种存储介质,存储有程序指令,该程序指令被执行时能够实现上述方法。

通过上述方式,本申请利用区块链上的管理合约基于保证金数量和/或信用值来选择参与节点执行安全多方计算,从而能够使得安全多方计算过程更加稳健,用于安全多方计算的数据安全性更高。

附图说明

图1是本申请安全多方计算方法第一实施例的流程示意图;

图2是本申请安全多方计算方法第二实施例的流程示意图;

图3是本申请安全多方计算方法第三实施例的流程示意图;

图4是本申请安全多方计算方法第四实施例的流程示意图;

图5是本申请安全多方计算方法第五实施例的流程示意图;

图6是本申请安全多方计算方法第六实施例的流程示意图;

图7是本申请安全多方计算方法第七实施例的流程示意图;

图8是本申请安全多方计算方法第八实施例的流程示意图;

图9是本申请安全多方计算方法第九实施例的流程示意图;

图10是本申请安全多方计算方法第十实施例的流程示意图;

图11是本申请安全多方计算方法第十一实施例的流程示意图;

图12是本申请安全多方计算方法第十二实施例的流程示意图;

图13是本申请安全多方计算方法第十三实施例的流程示意图;

图14是本申请安全多方计算方法第十四实施例的流程示意图;

图15是本申请安全多方计算方法第十五实施例的流程示意图;

图16是本申请安全多方计算方法第十六实施例的流程示意图;

图17是本申请安全多方计算方法第十七实施例的流程示意图;

图18是本申请安全多方计算方法第十八实施例的流程示意图;

图19是本申请对安全多方计算方法的示例图;

图20是本申请电子设备一实施例的结构示意图;

图21是本申请存储介质一实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,在不冲突的情况下,本文所描述的实施例可以与其它实施例相结合。

对本申请的应用场景进行说明:

本申请所涉及的节点可以为区块链平台上的节点,节点可以运行有链上的智能合约(计算合约和管理合约),同时节点可以运行有链下的安全多方计算管理协议。其中,计算合约和管理合约是由需要使用多方安全计算服务的用户共同协商产生并部署到区块链平台的。

节点可以利用其上运行的安全多方计算管理协议、计算合约、管理合约与自身进行交互,或者与其他节点进行交互,以完成安全多方计算任务。在安全多方计算任务进行过程中,各节点在链上运行的计算合约、管理合约信息同步更新。本申请中节点利用计算合约/管理合约进行的交互可以被视为交易记录在区块链上。

图1是本申请安全多方计算方法第一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图1所示的流程顺序为限。如图1所示,本实施例可以包括:

s11:用户节点利用计算合约接收计算请求。

计算合约部署于区块链上,计算请求包括待计算数据。

用户节点可以被称为安全多方计算的需求方,或者可以被称为安全多方计算的发起方。用户节点可以利用安全多方计算协议发出计算请求,该计算请求包括的待计算数据可以为经加密的数据。该计算请求除了可以包括待计算数据之外,还可以包括用户节点的服务费,用户节点的服务费可以为用户节点发起本次安全多方计算所需支付的费用。

用户节点可以利用计算合约接收该计算请求,该计算请求可以触发用户节点上运行的计算合约的执行。换句话说,该计算请求可以触发用户节点利用计算合约执行后续操作。

s12:用户节点利用计算合约将待计算数据拆分为多份子数据。

计算请求可以触发用户节点利用计算合约将待计算数据拆分为多份(n份)子数据{x1,…,xn},并分别生成与子数据xi(1≤i≤n)对应的计算脚本、承诺证明ci=comm(xi)。子数据携带承诺证明在公共信道上传输。

s13:用户节点利用计算合约将第一数量份子数据分别发给参与节点集合中不同的参与节点。

参与节点集合是利用管理合约从安全多方计算节点集合中选出的。管理合约部署于区块链上。安全多方计算节点集合p中包括的安全多方计算节点的数量n大于或者等于被选作为参与节点的数量n。安全多方计算节点可以为已注册的有资格参与安全多方计算的节点。一个安全多方计算节点pi由四元组(a,b,r,pk)定义,其中a可以为pi的账户,b可以为pi的余额,r(0<r<=1)可以为pi的信用值,pk可以为pi的公钥。

有意愿参与安全多方计算的节点(以下简称为未注册节点)可以利用其上运行的安全多方计算协议发起注册请求(mpcnmcontract,register,auth,(from,s,pk,asset(v)))注册为安全多方计算节点。

已注册的安全多方计算节点ps可以利用管理合约发出存入保证金的请求(mpcnmcontract,deposit,auth,(from,s,asset(v))),从而ps的余额b被更新为ps.b=ps.b+v。

同时转入保证金,transfer(from,_self,asset(v)),其中ps.a=from,ps.b=v,ps.pk=pk,ps.r=0.5;

用户节点可以利用计算合约发起n个参与节点的选择请求(mpcnmcontract,selectquorum,auth,(from,n)),从而触发用户节点利用管理合约从安全多方计算节点集合中选择多个(n个)安全多方计算节点作为参与节点,多个(n个)参与节点组成参与节点集合pq={p1,…,pn}。安全多方计算节点的信用值和/或保证金数量与被选择为参与节点的概率正相关。

在其他实施方式中,还可以设置安全多方计算节点支付的保证金达到保证金数量阈值d的情况下,才可能被选为参与节点。

安全多方计算节点的信用初始值可以为预先设定的,例如信用初始值为0.5,并且安全多方计算节点的信息随着后续安全多方计算的执行情况而更新。具体更新方法请参见后面的实施例。

用户节点可以利用管理合约将参与节点集合的信息求(computecontract,setup,auth,(from,p={p1,…,pn}))发送给参与节点。

参与节点可以利用计算合约向用户节点发出获取子数据的请求(computecontract,input,auth,(us,asset(v),{(encpi.pk(xi),ci),0<=i<=n}))。

用户节点可以响应该获取子数据的请求,利用计算合约将第一数量份子数据分别发给不同的参与节点。第一数量m小于或者等于n,在基于被选择的n个参与节点执行第一轮次的安全计算时,m=n;基于被选择的n个参与节点执行后续轮次的计算时,m小于或者等于n。m大于或者等于t,t为执行安全多方计算所需要的参与节点数量的最小值。

并且,用户节点还会利用计算合约将该子数据对应的计算脚本发送至参与节点。

s14:用户节点利用计算合约接收参与节点发送的交易信息。

交易信息是在子数据真实的情况下参与节点对子数据计算得到的。

参与节点可以利用可验证秘密共享(pvss算法)来验证接收到的子数据的真实性。若可验证秘密共享为真pvss(encus.pk(xs),cs)==true,则代表子数据真实;若可验证秘密共享为假pvss(encus.pk(xs),cs)=false,则代表子数据不真实。

可选地,交易信息包括子计算结果和验证结果,验证结果是由参与节点对子计算结果验证得到的。

在子数据真实的情况下,参与节点可以利用链下运行的安全多方计算管理协议来执行安全多方计算。具体而言,参与节点可以在链下利用对应的计算脚本对子数据进行计算,得到子计算结果。

参与节点之间可以对子计算结果进行可验证秘密共享。具体而言,参与节点可以将其得到的子计算结果进行加密后发送至其它参与节点,以使其它参与节点对其接收到的经加密的子计算结果进行验证,得到验证结果。

当然本申请中的验证不仅限于通过可验证秘密共享实现,也可以通过其他方式实现。

参与节点可利用计算合约将其得到的子计算结果和验证结果作为交易信息(computecontract,compute,auth,(pi,ρ,{encpj.pk(dj),cj,1<=j<=n}))发送至用户节点。

s15:用户节点利用计算合约基于交易信息获取最终的计算结果。

用户节点可以利用计算合约基于交易信息的提交情况、交易信息的真实性来获取最终的计算结果。

在通过本轮安全多方计算参与节点提交的交易信息得不到最终的计算结果的情况下,进入下一轮次的安全多方计算。每一轮安全多方计算具有预设的时间限制。具体描述请参见后面的实施例。

通过本实施例的实施,本申请中用户节点能够通过区块链上的计算合约将待计算数据拆分成多份,并分别发给不同的参与节点,从而参与节点能够在接收到的子数据真实的情况下与其他参与节点共同执行安全多方计算得到交易信息,并利用计算合约提交给用户节点,以使用户节点利用计算合约基于交易信息获取最终的计算结果。从而本申请能够基于区块链来完成用户节点下发的安全多方计算任务,提高了用于安全多方计算的数据的安全性。

图2是本申请安全多方计算方法第二实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图2所示的流程顺序为限。本实施例是对s15的进一步扩展,如图1所示,本实施例可以包括:

s21:用户节点利用计算合约基于交易信息的提交情况和交易信息的正确性更新参与节点集合。

每一轮安全多方计算具有对应的时间限制,区块链的区块高度可以反映时间,故用户节点可以基于区块链的高度来判断本轮安全多方计算是否结束。当本轮安全多方计算结束时,用户节点可以基于计算合约将未提交交易信息的参与节点和提交错误交易信息的参与节点集合中移出。换句话说,将参与节点集合中本轮提交了交易信息并且提交的交易信息正确的参与节点看作诚实节点,将参与节点集合中未提交交易信息的参与节点和提交错误交易信息的参与节点看作恶意节点,更新后的参与节点集合中仅保留诚实节点。

s22:用户节点利用计算合约判断更新后的参与节点集合中参与节点的数量是否大于预设数量阈值。

用户节点利用计算合约判断更新后的参与节点集合/诚实节点集合|ph|是否大于预设数量阈值t。

若大于,则执行s23;若不大于,则执行s24-s25。

s23:用户节点利用计算合约基于交易信息包括的子计算结果获取最终的计算结果。

更新后的参与节点集合中参与节点的数量即诚实节点的数量,其代表在本轮提交的正确的交易信息数量。诚实节点的数量大于预设数量阈值,代表本轮提交的正确的交易信息数量大于预设数量阈值,而由于在本轮提交的正确的交易信息数量大于预设数量阈值的情况下,才有可能基于本轮提交的交易信息包括的子计算结果获取得到最终的计算结果,故本步骤在诚实节点的数量大于预设数量阈值的情况下,利用计算合约基于交易信息包括的子计算结果获取最终的计算结果。

s24:用户节点利用管理合约基于更新后的参与节点集合的信息,调整安全多方计算节点集合。

更新后的参与节点集合的信息反映了执行本轮安全多方计算的诚实节点信息和恶意节点信息。故用户节点可以利用安全多方计算协议发出更新请求(mpcnmcontract,update,auth,(_self,ph,pc)),其中ph可以为更新后的参与节点集合/诚实节点集合,pc可以为恶意节点集合。用户节点可以利用管理合约基于更新后的参与节点集合的信息,调整安全多方计算节点集合中对应安全多方计算节点的信息。调整的信息可以包括信用值。其中,可以利用管理合约降低被移出参与节点集合的参与节点的信用值和提高更新后的参与节点集合中参与节点的信用值。具体请参见后面步骤的说明。

s25:用户节点利用管理合约重新从调整后的安全多方计算节点集合中选出多个安全多方计算节点作为新的参与节点执行下一轮的安全多方计算。

在更新后的参与节点集合中参与节点的数量不大于预设数量阈值的情况下,意味着利用计算合约无法基于本轮提交的交易信息成功获取最终的计算结果,并且更新后的参与节点集合中参与节点的数量不足以执行下一轮的安全多方计算,故需要在调整的安全多方计算节点集合中重新选出n个参与节点来执行下一轮的安全多方计算。本步骤执行之后跳转至s12。

此外,本实施例中,在上述利用计算合约判断更新后的参与节点集合中参与节点的数量不大于预设数量阈值的情况下,还可以包括:利用管理合约将被移出参与节点集合的参与节点的保证金,分发给更新后的参与节点集合中的参与节点。

被移出参与节点集合的参与节点,即参与本轮安全多方计算的恶意节点,更新后的参与节点集合中的参与节点,即参与本轮安全多方计算的诚实节点。

利用计算合约判断更新后的参与节点集合中参与节点的数量不大于预设数量阈值,就意味着无法给予本次选择的参与节点集合中的参与节点完成安全多方计算,此种情况下,用户节点可利用管理合约将恶意节点的保证金平分给诚实节点,作为对诚实节点执行本轮安全多方计算的补偿。从而实现安全多方计算的公平性。

其中,对于本轮所有的恶意节点pc∈pc,pc.b=pc.b–p/pc.r,pc.r=pc.r-r,计算罚金penalty=p*|c|,p为罚金单位;对于本轮所有的诚实节点ph∈ph,平分罚金,更新ph.b=ph.b+(penalty*ph.r/sum(ph.r));如果诚实节点个数|ph|>=t,则ph.r=ph.r+r。

通过本实施例的实施,本申请用户节点可以利用区块链上的计算合约来对本轮参与节点提交的交易信息进行验证,根据验证结果更新安全多方计算所依据的参与节点集合,根据更新后的参与节点集合中参与节点的数量来确定是否有可能基于交易信息包括的子计算结果获取到最终的计算结果,如果不可能,则利用区块链上的管理合约重新选择参与节点集合来执行安全多方计算,以保证安全多方计算能够完成。

图3是本申请安全多方计算方法第三实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图3所示的流程顺序为限。本实施例是对上述实施例的进一步扩展,其中s31为s21之前包括的步骤,s32为对s21的进一步扩展,如图3所示,本实施例可以包括:

s31:用户节点利用计算合约统计交易信息的提交情况和判断交易信息正确还是错误。

交易信息包括子计算结果和验证结果,验证结果是由参与节点对子计算结果验证得到的。

交易信息正确是指交易信息包含的子计算结果正确。如前面提及的,参与节点得到子计算结果后,可以对子计算结果进行可验证秘密共享得到验证结果。用户节点可以利用计算合约基于验证结果判断子计算结果正确还是错误。若参与节点pi的可验证秘密共享为真pvss(encpi.pk(di),ci)==true,则代表参与节点pi提交的子计算结果正确。

s32:用户节点利用计算合约将未提交交易信息和提交了错误的交易信息的参与节点从参与节点集合中移出。

未提交交易信息和提交了错误的交易信息的参与节点即为在本次安全多方计算的恶意节点。故需要将其从参与节点集合中移出,以便后续统计。

图4是本申请安全多方计算方法第四实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图4所示的流程顺序为限。本实施例是对上述实施例s23的进一步扩展,如图4所示,本实施例可以包括:

s41:用户节点利用计算合约判断子计算结果是否能够完成重建。

若能,则执行s42;若不能,则执行s43。

s42:用户节点将重建结果作为最终的计算结果。

s43:用户节点利用计算合约将更新后的参与节点集合作为执行下一轮的安全多方计算的参与节点集合。

本实施例的其他详细描述请参考前面的实施例,在此不再重复。

通过本实施例的实施,本申请在确定基于更新后的参与节点集合中参与节点提交的子计算结果可能获取到最终的计算结果的基础上,进一步利用计算合约基于更新后的参与节点集合中参与节点提交的子计算结果确定是否能够完成重建得到最终的计算结果,若不能则开启下一轮安全多方计算,以保证安全多方计算能够完成。

图5是本申请安全多方计算方法第五实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图1所示的流程顺序为限。本实施例是对上述实施例s23的进一步扩展,如图1所示,本实施例可以包括:

s51:用户节点利用计算合约判断子计算结果是否能够完成重建。

若能,则执行s52;若不能,则执行s53。

s52:用户节点将重建结果作为最终的计算结果,并利用管理合约将被移出参与节点集合的参与节点的保证金和用户节点的服务费,分发给更新后的参与节点集合中的参与节点。

在本轮能够得到最终的计算结果的情况下,用户节点可以利用管理合约向用户支付服务费,同时可以将恶意节点的保证金分发给诚实节点。

s53:用户节点利用计算合约将更新后的参与节点集合作为执行下一轮的安全多方计算的参与节点集合,并利用管理合约基于更新后的参与节点集合的信息,调整安全多方计算节点集合。

在用户节点的安全多方计算任务完成后,用户还可以利用管理合约基于更新后的参与节点集合的信息,调整安全多方计算节点集合。为后续安全多方计算任务的到来做准备。

本实施例其他详细说明请参见前面的实施例,在此不再重复。

图6是本申请安全多方计算方法第六实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图6所示的流程顺序为限。如图6所示,本实施例可以包括:

s61:参与节点利用计算合约向用户节点发送子数据的获取请求。

计算合约部署于区块链上。

s62:参与节点利用计算合约接收用户节点发送的子数据。

s63:参与节点验证子数据的真实性。

s64:在子数据真实的情况下,参与节点利用安全多方计算协议对子数据进行计算得到交易信息。

s65:参与节点利用计算合约将交易信息发送至用户节点。

若用户节点能够基于参与者提交的交易信息获取最终的计算结果,则s65之后还可以包括:参与节点利用所述管理合约接收所述用户节点支付的服务费。

本实施例的详细说明请参见前面的实施例,在此不再重复。

图7是本申请安全多方计算方法第七实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图7所示的流程顺序为限。本实施例是对s64的进一步扩展,交易信息包括子计算结果和验证结果,如图7所示,本实施例可以包括:

s71:参与节点利用安全多方计算协议对子数据进行计算得到子计算结果。

s72:参与节点利用安全多方计算协议将加密后的所述子计算结果发送至其他参与节点,并接收其他参与节点发送的计算信息;

s73:参与节点对其他参与节点发送的加密后的子计算结果进行验证得到验证结果。

本实施例的详细说明请参见前面的实施例,在此不再重复。

图8是本申请安全多方计算方法第八实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图8所示的流程顺序为限。如图8所示,本实施例可以包括:

s81:利用管理合约基于保证金数量和/或信用值,从安全多方计算节点集合中选择多个安全多方计算节点作为参与节点。

其中,安全多方计算节点的保证金数量和/或信用值与被选择为参与节点的概率正相关,各参与节点组成参与节点集合。管理合约部署于区块链上。

s82:利用计算合约将第一数量份子数据分别发送至参与节点集合中不同的参与节点。

计算合约部署于所述区块链上。

s83:利用计算合约接收参与节点的交易信息。

交易信息是在子数据真实的情况下,参与节点对子数据进行计算得到的。

s84:利用计算合约基于交易信息获取最终的计算结果。

本实施例的详细说明请参见前面的实施例,在此不再重复。

通过本实施例的实施,本申请利用区块链上的管理合约基于保证金数量和/或信用值来选择参与节点执行安全多方计算,从而能够使得安全多方计算过程更加稳健,用于安全多方计算的数据安全性更高。

图9是本申请安全多方计算方法第九实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图9所示的流程顺序为限。本实施例是对上述s84的进一步扩展,如图9所示,本实施例可以包括:

s91:利用计算合约基于交易信息的提交情况和交易信息的正确性更新参与节点集合。

s92:利用计算合约判断更新后的参与节点集合中参与节点的数量是否大于预设数量阈值。

若大于,则执行s93;若不大于,则执行s94-s95。

s93:利用计算合约基于交易信息包括的子计算结果获取最终的计算结果。

s94:利用管理合约基于更新后的参与节点集合的信息,调整安全多方计算节点集合。

s95:利用管理合约从调整后的安全多方计算节点集合中选出多个安全多方计算节点作为新的参与节点执行下一轮的安全多方计算。

此外,在更新后的参与节点集合中参与节点的数量不大于预设数量阈值的情况下,还可以包括:利用管理合约将被移出参与节点集合的参与节点的保证金,分发给更新后的参与节点集合中的参与节点。

本实施例的详细说明请参见前面的实施例,在此不再重复。

图10是本申请安全多方计算方法第十实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图10所示的流程顺序为限。本实施例s101是在s91之前可以包括的步骤,s102是对上述s91的进一步扩展,如图10所示,本实施例可以包括:

s101:利用计算合约统计交易信息的提交情况和判断交易信息正确还是错误。

可选地,交易信息包括子计算结果和验证结果,验证结果是由参与节点对所述子计算结果验证得到的。利用计算合约基于验证结果判断子计算结果正确还是错误。

s102:利用计算合约将未提交交易信息和提交了错误的交易信息的参与节点从参与节点集合中移出。

本实施例的详细说明请参见前面的实施例,在此不再重复。

图11是本申请安全多方计算方法第十一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图11所示的流程顺序为限。本实施例是对s93的进一步扩展,如图11所示,本实施例可以包括:

s111:利用计算合约判断子计算结果是否能够完成重建。

若能,则执行s112;若不能,则执行s113。

s112:将重建结果作为最终的计算结果。

s113:利用计算合约将更新后的参与节点集合作为执行下一轮的安全多方计算的参与节点集合。

本实施例的详细说明请参见前面的实施例,在此不再重复。

图12是本申请安全多方计算方法第十二实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图12所示的流程顺序为限。本实施例是对s93的进一步扩展,计算请求还包括用户节点的服务费。如图12所示,本实施例可以包括:

s121:利用计算合约判断子计算结果是否能够完成重建。

若能,则执行s122;若不能,则执行s123。

s122:将重建结果作为最终的计算结果,并将利用管理合约将被移出参与节点集合的参与节点的保证金和用户节点的服务费,分发给更新后的参与节点集合中的参与节点。

s123:利用计算合约将更新后的参与节点集合作为执行下一轮的安全多方计算的参与节点集合,并利用管理合约基于更新后的参与节点集合的信息,更新安全多方计算节点集合。

其中,更新的信息可以包括安全多方计算节点的信用值和/或保证金数量。例如,可以利用管理合约降低被移出参与节点集合的参与节点的信用值和提高更新后的参与节点集合中参与节点的信用值。

本实施例的详细说明请参见前面的实施例,在此不再重复。

图13是本申请安全多方计算方法第十三实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图13所示的流程顺序为限。如图13所示,本实施例可以包括:

s131:利用计算合约向用户节点发送获取子数据的请求。

参与节点属于参与节点集合,计算合约部署于区块链上。

s132:利用计算合约将子数据发送给参与节点。

s133:验证子数据的真实性。

s134:在子数据真实的情况下,利用安全多方计算协议对子数据进行计算得到交易信息。

s135:利用计算合约将交易信息发送至用户节点。

s136:利用计算合约基于交易信息获取最终的计算结果。

本实施例的详细说明请参见前面的实施例,在此不再重复。

通过本实施例的实施,本申请通过区块链上的计算合约将子数据分别发给不同的参与节点,从而参与节点能够在接收到的子数据真实的情况下与其他参与节点共同执行安全多方计算得到交易信息,并利用计算合约提交给用户节点,以使用户节点利用计算合约基于交易信息获取最终的计算结果。从而本申请能够基于区块链来完成用户节点下发的安全多方计算任务,提高了用于安全多方计算的数据的安全性。

此外,其他实施例中在s131之前,还可以包括:利用管理合约从安全多方计算节点集合中选择多个安全多方计算节点作为参与节点,多个参与节点组成参与节点集合,管理合约部署于区块链上。

安全多方计算节点的信用值和/或保证金数量与被选择为参与节点的概率正相关。

图14是本申请安全多方计算方法第十四实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图14所示的流程顺序为限。本实施例是对上述s134的进一步扩展,交易信息包括子计算结果和验证结果。如图14所示,本实施例可以包括:

s141:利用安全多方计算协议对子数据进行计算得到子计算结果。

s142:将加密后的子计算结果发送至其他参与节点,并接收其他参与节点发送的加密后的子计算结果。

s143:利用安全多方计算协议对其他参与节点发送的加密后的子计算结果进行验证,得到验证结果。

本实施例的详细说明请参见前面的实施例,在此不再重复。

图15是本申请安全多方计算方法第十五实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图15所示的流程顺序为限。本实施例是对上述s136的进一步扩展,交易信息包括子计算结果和验证结果。如图15所示,本实施例可以包括:

s151:利用计算合约基于交易信息的提交情况和交易信息的正确性更新参与节点集合。

s152:利用计算合约判断更新后的参与节点集合中参与节点的数量是否大于预设数量阈值。

若大于,则执行s153;若不大于,则执行s154-s155。

s153:利用计算合约基于交易信息包括的子计算结果获取最终的计算结果。

s154:利用管理合约基于更新后的参与节点集合的信息,调整安全多方计算节点集合。

s155:利用管理合约从调整后的安全多方计算节点集合中选出多个安全多方计算节点作为新的参与节点执行下一轮的安全多方计算。

此外,在更新后的参与节点集合中参与节点的数量不大于预设数量阈值的基础上,还可以包括:利用管理合约将被移出参与节点集合的参与节点的保证金,分发给更新后的参与节点集合中的参与节点。

本实施例的详细说明请参见前面的实施例,在此不再重复。

图16是本申请安全多方计算方法第十六实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图16所示的流程顺序为限。本实施例中s161为s151之前可以包括的步骤,s162是对s151的进一步扩展。如图16所示,本实施例可以包括:

s161:利用计算合约统计交易信息的提交情况和判断交易信息正确还是错误。

可以利用计算合约基于所述验证结果判断子计算结果正确还是错误。

s162:利用计算合约将未提交交易信息和提交了错误的交易信息的参与节点从参与节点集合中移出。

本实施例的详细说明请参见前面的实施例,在此不再重复。

图17是本申请安全多方计算方法第十七实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图17所示的流程顺序为限。本实施例是对上述s153的进一步扩展,如图17所示,本实施例可以包括:

s171:利用计算合约判断子计算结果是否能够完成重建。

若能,则执行s172;若不能,则执行s173。

s172:将重建结果作为最终的计算结果。

s173:利用计算合约将更新后的参与节点集合作为执行下一轮的安全多方计算的参与节点集合。

本实施例的详细说明请参见前面的实施例,在此不再重复。

图18是本申请安全多方计算方法第十八实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图18所示的流程顺序为限。本实施例是对上述s153的进一步扩展,计算请求还包括用户节点的服务费。如图18所示,本实施例可以包括:

s181:利用计算合约判断所述子计算结果是否能够完成重建。

若能,则执行s182;若不能,则执行s183。

s182:将重建结果作为最终的计算结果,并利用管理合约将被移出参与节点集合的参与节点的保证金和用户节点的服务费,分发给更新后的参与节点集合中的参与节点。

s183:利用计算合约将更新后的参与节点集合作为执行下一轮的安全多方计算的参与节点集合,并利用管理合约基于更新后的参与节点集合的信息,调整安全多方计算节点集合。

可以利用管理合约降低被移出参与节点集合的参与节点的信用值和提高更新后的参与节点集合中所述参与节点的信用值。

本实施例的详细说明请参见前面的实施例,在此不再重复。

需要说明的是,本申请实施例在不冲突的情况下可以进行组合。

下面对上述安全多方计算进行举例说明,对于前面已经进行说明的部分不再赘述。具体如下:

s1901:用户节点利用安全多方计算协议发送计算请求。

计算请求包括待计算数据和服务费。

s1902:用户节点利用计算合约将待计算数据拆分为多份子数据。

s1903:用户节点利用管理合约从安全多方计算节点中选出多个安全多方计算节点作为参与节点。

s1904:参与节点向用户节点发起获取子数据的请求。

s1905:用户节点将子数据发送给参与节点。

s1906:参与节点验证子数据的真实性。

s1907:在子数据真实的情况下,参与节点利用安全多方计算协议对子数据进行计算得到子计算结果。

s1908:参与节点对计算结果进行可验证秘密共享。

s1909:参与节点利用计算合约将计算结果和可验证秘密共享结果作为交易信息发送给用户节点。

s1910:用户节点利用计算合约基于交易信息的提交情况和提交的交易信息的正确性更新参与节点集合。

s1911:用户节点利用计算合约判断更新后的参与节点集合中参与节点的数量是否预设数量阈值。

若大于预设数量阈值,则执行s1912;否则执行s1916-s1917。

s1912:用户节点利用计算合约判断是否能够基于子计算结果重建最终的计算结果。

若能,则执行s1913-s1914;否则执行s1915。

s1913:用户节点将重建结果作为最终的计算结果。

s1914:用户节点利用管理合约向参与节点支付服务费。

s1915:用户节点利用计算合约将更新后的参与节点集合作为执行下一轮的安全多方计算的参与节点集合。

s1916:用户节点利用管理合约基于更新后的参与节点集合的信息,调整安全多方计算节点集合。

s1917:用户节点利用管理合约从调整后的安全多方计算节点集合中选出多个安全多方计算节点作为新的参与节点执行下一轮的安全多方计算,并利用管理合约将被移出参与节点集合中的参与节点的押金,分发给更新后的参与节点集合中参与节点。

图20是本申请电子设备一实施例的结构示意图。如图20所示,该电子设备包括处理器201、与处理器耦接的存储器202。

其中,存储器202存储有用于实现上述任一实施例的方法的程序指令;处理器201用于执行存储器202存储的程序指令以实现上述方法实施例的步骤。其中,处理器201还可以称为cpu(centralprocessingunit,中央处理单元)。处理器201可能是一种集成电路芯片,具有信号的处理能力。处理器201还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

图21是本申请存储介质一实施例的结构示意图。如图21所示,本申请实施例的计算机可读存储介质210存储有程序指令211,该程序指令211被执行时实现本申请上述实施例提供的方法。其中,该程序指令211可以形成程序文件以软件产品的形式存储在上述计算机可读存储介质210中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的计算机可读存储介质210包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1