本申请实施例涉及计算机技术领域,具体涉及区块链技术,尤其涉及一种基于区块链的多方计算方法、装置、设备和介质。
背景技术:
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链的分布式事物处理过程,一般是由一个区块生成节点进行事物处理。
随着互联网技术的快速发展,企业之间需要共享数据,在企业之间共享数据的同时,如何保护数据的安全性是十分重要的。
为了提高共享数据的公信力(即可靠性),可以采用区块链对共享数据进行存证。但是,由于区块链的公开性,链上数据的安全性无法保证。
技术实现要素:
本申请实施例提出一种基于区块链的多方计算方法、装置、设备和介质,通过提供一种兼顾多方计算数据的安全性和可靠性的解决方案,为保证数据的安全性和可靠性提供了条件。
第一方面,本申请实施例提供了一种基于区块链的多方计算方法,由参与方设备执行,所述方法包括:
对业务数据进行加密得到业务数据密文;
对所述业务数据密文进行哈希处理,得到业务数据哈希结果;
向区块链节点发送所述业务数据哈希结果,以指示所述区块链节点将所述业务数据哈希结果写入区块链中;
向目标服务器中目标可信计算模块发送所述业务数据密文,用于指示所述目标可信计算模块根据所述业务数据密文和区块链中的业务数据哈希结果进行多方计算。
本申请实施例通过对业务数据进行加密,并对加密得到的业务数据密文进行哈希处理,得到业务数据哈希结果,然后向区块链节点发送业务数据哈希结果,以指示区块链节点将业务数据哈希结果写入区块链中,并向目标服务器中目标可信计算模块发送业务数据密文,以指示目标可信计算模块根据业务数据密文和区块链中的业务数据哈希结果进行多方计算。由此,通过提供一种兼顾多方计算数据的安全性和可靠性的解决方案,为保证数据的安全性和可靠性提供了条件。
另外,根据本申请上述实施例的基于区块链的多方计算方法,还可以具有如下附加的技术特征:
可选的,对业务数据进行加密得到业务数据密文之前,还包括:
通过与所述目标可信计算模块进行交互,确定目标随机数;
采用所述目标随机数对密钥进行加密,得到密钥密文;
向所述目标可信计算模块发送所述密钥密文,用于指示所述目标可信计算模块采用所述目标随机数对所述密钥密文进行解密得到密钥;
相应地,对业务数据进行加密得到业务数据密文,包括:
采用密钥对所述业务数据进行加密,得到业务数据密文。
上述申请中的一个实施例具有如下优点或有益效果:通过确定目标随机数,并利用目标随机数对密钥进行加密,以使密钥不被泄露,提高隐私数据的安全性。
可选的,向目标服务器中目标可信计算模块发送所述业务数据密文之前,还包括:
向区块链节点发送服务器选择请求,其中,所述服务器选择请求包括需要的目标可信算法信息;
从区块链节点获取支持目标可信算法的候选服务器注册信息;
根据所述候选服务器注册信息,从候选服务器中选择所述目标服务器。
可选的,根据所述候选服务器注册信息,从候选服务器中选择所述目标服务器,包括:
向可信计算验证方发送所述候选服务器的可信环境验证请求,其中所述可信环境验证请求包括所述候选服务器注册信息,以指示所述可信计算验证方对候选服务器进行可信环境验证;
从通过可信环境验证的候选服务器中选择所述目标服务器。
上述申请中的一个实施例具有如下优点或有益效果:从通过可信环境验证的候选服务器中选择目标服务器,以提高多方计算的安全性。
可选的,向目标服务器中目标可信计算模块发送所述业务数据密文之后,还包括:
从所述目标可信计算模块获取多方计算结果密文,其中,所述多方计算结果密文采用目标随机数对多方计算结果进行加密得到;
采用所述目标随机数对所述多方计算结果密文进行解密,得到多方计算结果。
第二方面,本申请实施例还公开了一种基于区块链的多方计算方法,由服务器执行,所述方法包括:
接收参与方设备发送的业务数据密文,其中所述业务数据密文通过对参与方设备的业务数据进行加密得到;
从区块链中获取业务数据哈希结果;其中所述业务数据哈希结果通过对所述业务数据密文进行哈希处理得到;
通过可信计算模块,根据所述业务数据密文和所述业务数据哈希结果进行多方计算,得到多方计算结果。
第三方面,本申请实施例还公开了一种基于区块链的多方计算方法,由区块链节点执行,所述方法包括:
接收参与方设备发送的业务数据哈希结果;其中所述业务数据哈希结果通过对业务数据密文进行哈希处理得到;
向目标服务器中目标可信计算模块发送所述业务数据哈希结果,以指示所述目标可信计算模块根据接收的业务数据密文和所述业务数据哈希结果进行多方计算。
第四方面,本申请实施例还公开了一种基于区块链的多方计算装置,配置于参与方设备,包括:
数据加密模块,用于对业务数据进行加密得到业务数据密文;
哈希处理模块,用于对所述业务数据密文进行哈希处理,得到业务数据哈希结果;
第一发送模块,用于向区块链节点发送所述业务数据哈希结果,以指示所述区块链节点将所述业务数据哈希结果写入区块链中;
密文发送模块,用于向目标服务器中目标可信计算模块发送所述业务数据密文,用于指示所述目标可信计算模块根据所述业务数据密文和区块链中的业务数据哈希结果进行多方计算。
第五方面,本申请实施例还公开了一种基于区块链的多方计算装置,配置于服务器,包括:
密文接收模块,用于接收参与方设备发送的业务数据密文,其中所述业务数据密文通过对参与方设备的业务数据进行加密得到;
结果获取模块,用于从区块链中获取业务数据哈希结果;其中所述业务数据哈希结果通过对所述业务数据密文进行哈希处理得到;
多方计算模块,用于通过可信计算模块,根据所述业务数据密文和所述业务数据哈希结果进行多方计算,得到多方计算结果。
第六方面,本申请实施例还公开了一种基于区块链的多方计算装置,配置于区块链节点,包括:
结果接收模块,用于接收参与方设备发送的业务数据哈希结果;其中所述业务数据哈希结果通过对业务数据密文进行哈希处理得到;
第二发送模块,用于向目标服务器中目标可信计算模块发送所述业务数据哈希结果,以指示所述目标可信计算模块根据接收的业务数据密文和所述业务数据哈希结果进行多方计算。
第七方面,本申请实施例还公开了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请实施例中的任一种基于区块链的多方计算方法。
第八方面,本申请实施例还公开了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本申请实施例中的任一种基于区块链的多方计算方法。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例提供的选择目标服务器的流程示意图;
图2是本申请实施例提供的一种基于区块链的多方计算方法的流程示意图;
图3是本申请实施例提供的另一种基于区块链的多方计算方法的流程示意图;
图4是本申请实施例提供的再一种基于区块链的多方计算方法的流程示意图;
图5是本申请实施例提供的又一种基于区块链的多方计算方法的流程示意图;
图6是本申请实施例提供的一个具体实施例的参与方设备、区块链节点和服务器之间进行信令交互的示意图;
图7是本申请实施例提供的一种基于区块链的多方计算装置的结构示意图;
图8是本申请实施例提供的另一种基于区块链的多方计算装置的结构示意图;
图9是本申请实施例提供的再一种基于区块链的多方计算装置的结构示意图;
图10是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面结合附图对本申请实施例公开的基于区块链的多方计算方法、装置、设备和介质进行描述。首先,以执行主体为参与方设备为例对本申请实施例公开的基于区块链的多方计算方法进行说明。其中参与方设备数量为至少两个,且每个参与方设备执行的操作类似或相同。
为了清楚说明本申请实施例提供的基于区块链的多方计算方法中,通过目标服务器对参与方设备发送的业务数据密文进行多方计算的过程,下面首先对本申请实施例在区块链节点中选择目标服务器进行说明。
图1是本申请实施例提供的选择目标服务器的流程示意图,本申请实施例可由基于区块链的多方计算装置来执行,该装置可以由软件和/硬件实现,可配置于参与方设备中。该方法包括如下步骤:
s101,向区块链节点发送服务器选择请求,其中,所述服务器选择请求包括需要的目标可信算法信息。
s102,从区块链节点获取支持目标可信算法的候选服务器注册信息。
其中,需要的目标可信算法信息可为可信算法名称。在本申请实施例中可信算法可为线性回归算法或者其他算法,此处不做具体限定。
区块链网络作为不同服务器(协作方)之间的消息总线,具有不同服务器的注册信息。那么当参与方设备需要执行多方计算时,可向区块链网络中的区块链节点发送服务器选择请求,以使区块链节点基于服务器选择请求从注册的多个服务器中选择候选服务器。
其中,区块链节点接收到参与方设备发送的服务器选择请求,通过对服务器选择请求进行解析,获取请求中包括需要的目标可信算法信息。然后,根据该目标可信算法信息,在多个服务器的注册信息中查找哪些服务器支持上述目标可信算法。若至少一个服务器支持上述目标可信算法,则将至少一个服务器作为候选服务器;若没有服务器能够支持上述目标可信算法,则向参与者设备发送无候选服务器的提示消息,以使参与者设备调整目标可信算法重新选择服务器或者结束选择操作。
进一步的,在确定出候选服务器之后,区块链节点还将候选服务器注册信息发送给参与者设备,以为参与方设备选择目标服务器奠定基础。
s103,根据所述候选服务器注册信息,从候选服务器中选择所述目标服务器。
示例性的,获取到区块链节点发送的候选服务器注册信息之后,参与方设备可根据候选服务器注册信息,从候选服务器中选择目标服务器。
具体实现时,参与方设备通过向可信计算验证方(intelattestationservice,简称:ias)发送候选服务器的可信环境验证请求,以使ias对候选服务器进行可信环境验证。然后,根据ias反馈的候选服务器验证结果,选择验证通过的候选服务器作为目标服务器,其中可信环境验证请求包括候选服务器注册信息。在本申请实施例中,ias对候选服务器进行验证是指对候选服务器的硬件信息进行验证。
需要说明的是,ias为intel提供的sgx验证服务,该服务可以用于验证程序是否运行在sgx硬件环境上,以及该程序是否被篡改。
即,根据所述候选服务器注册信息,从候选服务器中选择所述目标服务器,包括:向可信计算验证方发送所述候选服务器的可信环境验证请求,其中所述可信环境验证请求包括所述候选服务器注册信息,以指示所述可信计算验证方对候选服务器进行可信环境验证;从通过可信环境验证的候选服务器中选择所述目标服务器。
本申请实施例提供的技术方案,通过向区块链节点发送服务器选择请求,并根据区块链节点返回的候选服务器注册信息选择目标服务器,为后续向目标服务器发送业务数据,使得目标服务器基于业务数据进行多方计算提供了条件。
通过上述介绍可知,本申请实施例参与方设备通过向区块链网络中的区块链节点发送服务器选择请求,并根据区块链节点返回的候选服务器注册信息选择目标服务器。在选择出目标服务器之后,本申请实施例即可基于选择的目标服务器进行多方计算。下面结合图2,对本申请实施例提供的基于区块链的多方计算方法中根据参与方发送的业务数据进行多方计算过程进行说明。
如图2所示,该方法可以包括:
s201,对业务数据进行加密得到业务数据密文。
在本申请实施例中,业务数据根据企业运营业务确定。即不同业务对应有不同业务数据。例如,若业务为软件研发,则业务数据即为研发数据等。
由于区块链具有全网广播区块信息的特征,因此当参与方设备需要进行隐私业务数据的计算时,容易造成数据泄露。为此本申请实施例可对业务数据进行加密,以避免数据泄露。
示例性的,参与方设备可采用密钥对业务数据进行加密,得到业务数据密文。其中,密钥可为参与方设备在区块链网络中的区块链私钥。
然而,目标服务器中的目标可信计算模块并不能知晓参与方设备采用什么密钥对业务数据进行加密,从而无法对业务数据密文进行解密,进而无法获取到业务数据。
对此,本申请实施例在对业务数据进行加密之前,参与方设备首先与目标服务器中目标可信计算模块进行密钥交互,以使目标可信计算模块知晓参与方设备采用何种密钥对业务数据进行加密,从而利用对应密钥对业务数据密文进行解密,得到业务数据。
具体实现时,参与方设备可向目标服务器中目标可信计算模块发送密钥交互请求,以与目标可信计算模块协商确定目标随机数。在确定目标随机数之后,参与方设备采用目标随机数对自身区块链公钥进行加密,得到区块链公钥密文。然后,向目标可信计算模块发送区块链公钥密文,以使目标可信计算模块采用目标随机数对接收的区块链公钥密文进行解密,得到区块链公钥,使得参与方设备与目标可信计算模块之间的密钥达成共识。
其中,确定目标随机数,具体为目标可信计算模块接收到参与方设备发送的密钥交互请求之后,通过目标服务器中的目标不可信worker向参与方设备发送n个随机数(目标worker也知道这n个随机数)。其中,目标可信计算模块还保留有m个随机数,这m个随机数和n个随机数关联。当参与方设备接收到目标可信计算模块发送的n个随机数之后,可基于n个随机数按照预设规则推导出m个随机数,从而将m个随机数和n个随机数一起作为目标随机数,而目标worker不知道m个随机数。
也就是说,目标随机数只有参与方设备和目标可信计算模块知道,而目标服务器中的目标worker并不知道目标随机数,从而后续不会造成数据泄露。
即,本申请实施例中,对业务数据进行加密得到业务数据密文之前,还包括:通过与所述目标可信计算模块进行交互,确定目标随机数;采用所述目标随机数对密钥进行加密,得到密钥密文;向所述目标可信计算模块发送所述密钥密文,用于指示所述目标可信计算模块采用所述目标随机数对所述密钥密文进行解密得到密钥。
s202,对所述业务数据密文进行哈希处理,得到业务数据哈希结果。
示例性的,得到业务数据密文之后,参与方设备可对业务数据密文进行哈希处理,得到业务数据哈希结果,以为后续验证业务数据密文是否被篡改奠定基础。
s203,向区块链节点发送所述业务数据哈希结果,以指示所述区块链节点将所述业务数据哈希结果写入区块链中。
其中,将业务数据哈希结果发送给区块链节点,以使区块链节点将业务数据哈希结果写入区块链中,实现对业务数据的存证。
s204,向目标服务器中目标可信计算模块发送所述业务数据密文,用于指示所述目标可信计算模块根据所述业务数据密文和区块链中的业务数据哈希结果进行多方计算。
可选的,当目标服务器中目标可信计算模块接收到业务数据密文之后,可根据从参与方设备获取的密钥,对业务数据密文进行解密,得到业务数据。此外,目标可信计算模块还可基于得到的业务数据,从区块链中查询与自身交互的参与方设备的业务数据哈希结果,然后利用查询到的业务数据哈希结果,对业务数据进行校验,以确定业务数据是否被篡改。当校验通过时,则说明业务数据未被篡改,此时目标可信计算模块可根据得到的业务数据进行多方计算,得到多方计算结果。
进一步的,参与方设备向目标服务器中目标可信计算模块发送所述业务数据密文之后,还包括:从所述目标可信计算模块获取多方计算结果密文,其中,所述多方计算结果密文采用目标随机数对多方计算结果进行加密得到;采用所述目标随机数对所述多方计算结果密文进行解密,得到多方计算结果。
也就是说,本申请实施例通过采用目标随机数对密钥进行加密,可避免密钥被泄露,并且在目标可信计算模块根据业务数据进行多方计算,得到多方计算结果之后,采用目标随机数对多方计算结果进行加密,避免多方计算结果被泄露,从而提高数据的安全性和可靠性。
本申请实施例提供的基于区块链的多方计算方法,通过对业务数据进行加密,并对加密得到的业务数据密文进行哈希处理,得到业务数据哈希结果,然后向区块链节点发送业务数据哈希结果,以指示区块链节点将业务数据哈希结果写入区块链中,并向目标服务器中目标可信计算模块发送业务数据密文,以指示目标可信计算模块根据业务数据密文和区块链中的业务数据哈希结果进行多方计算。由此,通过提供一种兼顾多方计算数据的安全性和可靠性的解决方案,为保证数据的安全性和可靠性提供了条件。
下面以执行主体为服务器为例对本申请实施例公开的基于区块链的多方计算方法进行说明。
图3是本申请实施例提供的另一种基于区块链的多方计算方法的流程示意图,本申请实施例提供的基于区块链的多方计算方法,可由基于区块链的多方计算装置来执行,该装置可以由软件和/硬件实现,可配置于服务器中。该方法包括如下步骤:
s301,接收参与方设备发送的业务数据密文,其中所述业务数据密文通过对参与方设备的业务数据进行加密得到。
在执行s301之前,服务器向区块链节点发送服务器注册信息;其中所述服务器注册信息包括支持的可信算法信息,以指示区块链节点将所述服务器注册信息写入区块链中,为参与方设备选择目标服务器奠定了基础。
s302,从区块链中获取业务数据哈希结果;其中所述业务数据哈希结果通过对所述业务数据密文进行哈希处理得到。
s303,通过可信计算模块,根据所述业务数据密文和所述业务数据哈希结果进行多方计算,得到多方计算结果。
示例性的,当服务器接收到参与方设备发送的业务数据密文之后,通过可信计算模块根据从参与方设备获取的密钥,对业务数据密文进行解密得到业务数据。然后,根据业务数据,从区块链中查询参与方设备的业务数据哈希结果。然后,利用查询到的业务数据哈希结果,对业务数据进行校验,以确定业务数据是否被篡改。当校验通过时,则说明业务数据未被篡改,此时可通过自身中可信计算模块根据接收到的业务数据进行多方计算,得到多方计算结果。
其中,通过可信计算模块根据业务数据进行多方计算,得到多方计算结果时,具体根据参与方设备需要的目标可信算法进行计算。
需要说明的是,本申请实施例通过可信计算模块,对业务数据密文进行解密得到业务数据之前,还包括:通过所述可信计算模块与参与方设备进行交互,确定目标随机数;从参与方设备获取密钥密文,其中所述密钥密文通过采用所述目标随机数对密钥进行加密得到;通过所述可信计算模块,采用所述目标随机数对所述密钥密文进行解密得到密钥;
相应地,通过可信计算模块,对所述业务数据密文进行解密得到业务数据,包括:通过可信计算模块,采用所述密钥对所述业务数据密钥进行解密,得到业务数据。
上述获取密钥与应用于参与方设备的基于区块链的多方计算方法实施例中的获取密钥实现原理类似,具体参见上述实施例,此处对其不做过多赘述。
本申请实施例提供的基于区块链的多方计算方法,通过接收参与方设备发送的业务数据密文,并从区块链中获取业务数据哈希结果,然后通过可信计算模块,根据业务数据密文和业务数据哈希结果进行多方计算,得到多方计算结果。由此,通过提供一种兼顾多方计算数据的安全性和可靠性的解决方案,为保证数据的安全性和可靠性提供了条件。
在另一实现情形中,当服务器通过可信计算模块,根据业务数据密文和业务数据哈希结果进行多方计算,得到多方计算结果之后,还可将多方计算结果发送给参与方设备,以使参与方设备得到多方计算结果。下面结合图4,对本申请实施例提供的基于区块链的多方计算方法中上述情况进行说明。
如图4所示,该方法可以包括:
s401,接收参与方设备发送的业务数据密文,其中所述业务数据密文通过对参与方设备的业务数据进行加密得到。
s402,从区块链中获取业务数据哈希结果;其中所述业务数据哈希结果通过对所述业务数据密文进行哈希处理得到。
s403,通过可信计算模块,根据所述业务数据密文和所述业务数据哈希结果进行多方计算,得到多方计算结果。
s404,对所述多方计算结果进行加密,得到多方计算结果密文。
其中,采用与参与方设备协商确定的目标随机数,对多方计算结果进行加密,得到多方计算结果密文。
s405,通过可信计算模块,向所述参与方设备发送所述多方计算结果密文,用于指示所述参与方设备对所述多方计算结果密文进行解密得到多方计算结果。
示例性的,将多方计算结果密文发送给参与方设备,以使参与方设备接收到多方计算结果密文之后,根据目标随机数,对多方计算结果密文进行解密,以得到多方计算结果,从而有效防止多方计算结果被泄露。
本申请实施例提供的基于区块链的多方计算方法,通过可信计算模块,根据业务数据密文和业务数据哈希结果进行多方计算,得到多方计算结果之后,采用与参与方设备协商确定的目标随机数,对多方计算结果进行解密,得到多方计算结果密文,并将多方计算结果密文发送给参与方设备,以使参与方设备根据目标随机数对多方计算结果密文进行解密,得到多方计算结果,从而有效防止多方计算结果泄露,提高数据安全性。
下面以执行主体为区块链节点为例对本申请实施例公开的基于区块链的多方计算方法进行说明。
图5是本申请实施例提供的又一种基于区块链的多方计算方法的流程示意图,本申请实施例提供的基于区块链的多方计算方法,可由基于区块链的多方计算装置来执行,该装置可以由软件和/硬件实现,可配置于区块链节点中。该方法包括如下步骤:
s501,接收参与方设备发送的业务数据哈希结果;其中所述业务数据哈希结果通过对业务数据密文进行哈希处理得到。
在执行s501之前,至少两个服务器会向区块链发送服务器注册信息,以实现注册。其中,服务器注册信息包括服务器的网络地址、区块链公钥和支持的可信算法信息等。当区块链节点接收到至少两个服务器发送的服务器注册信息,将服务器注册信息写入区块链中,为后续向参与方设备提供候选服务器奠定基础。
进而,在获取到参与方设备发送的服务器选择请求时,可从区块链中查询支持目标可信算法信息的候选服务器,并获取候选服务器注册信息。然后,将候选服务器注册信息发送给参与方设备,以使参与方设备根据候选服务器注册信息,从候选服务器中选择目标服务器。
需要说明的是,参与方设备从候选服务器中选择目标服务器的实现过程具体参见上述应用于参与方设备的基于区块链的多方计算方法实施例,此处对其不做过多赘述。
示例性的,本申请实施例,区块链节点接收参与方设备发送的业务数据哈希结果,并将该业务数据哈希结果写入区块链中,以对业务数据进行存证。
s502,向目标服务器中目标可信计算模块发送所述业务数据哈希结果,以指示所述目标可信计算模块根据接收的业务数据密文和所述业务数据哈希结果进行多方计算。
其中,在目标服务器接收到参与方设备发送的业务数据密文之后,目标服务器通过可信计算模块根据从参与方设备获取的密钥,对业务数据密文进行解密得到业务数据。然后,根据业务数据,向区块链发送获取业务数据哈希结果请求,以使区块链节点将业务数据哈希结果发送给目标服务器。然后,目标服务器利用查询到的业务数据哈希结果,对业务数据进行校验,以确定业务数据是否被篡改。当校验通过时,则说明业务数据未被篡改,此时可通过自身中可信计算模块根据接收到的业务数据进行多方计算,得到多方计算结果。
本申请实施例提供的基于区块链的多方计算方法,通过接收参与方设备发送的业务数据哈希结果,并向目标服务器中目标可信计算模块发送业务数据哈希结果,以指示目标可信计算模块根据接收的业务数据密文和业务数据哈希结果进行多方计算。由此,通过提供一种兼顾多方计算数据的安全性和可靠性的解决方案,为保证数据的安全性和可靠性提供了条件。
下面通过一个具体实施例,对上述实施例基于区块链的多方计算方法进行具体说明,具体参见图6。图6是本申请实施例提供的一个具体实施例的参与方设备、区块链节点和服务器之间进行信令交互的示意图。
假设本实施例中,参与方设备为x个,分别为x1、x2、…xn;区块链节点为y,服务器为z个,分别为z1、z2、…zn,则参与方设备、区块链节点和服务器之间的交互过程如下:
s601,服务器z1、z2、…zn向区块链节点y发送服务器注册信息。
其中,服务器注册信息包括支持的可信算法信息。
s602,区块链节点y将接收的服务器注册信息写入区块链中。
s603,参与方设备x1、x2、…xn向区块链节点y发送服务器选择请求。
其中,服务器选择请求包括需要的目标可信算法信息。
s604,区块链节点y根据参与方设备需要的目标可信算法信息,从区块链中查询支持目标可信算法的候选服务器z1和z2。
s605,区块链节点y将候选服务器z1和z2的注册信息发送给参与方设备x1、x2、…xn。
s606,参与方设备x1、x2、…xn将候选服务器z1和z2的注册信息发送给可信计算验证方w。
s607,参与方设备x1、x2、…xn接收可信计算验证方w反馈的验证结果,选择验证通过的候选服务器z1为目标服务器。
s608,参与方设备x1、x2、…xn向目标服务器z1发送密钥交互请求。
s609,目标服务器z1根据接收到密钥交互请求,向参与方设备x1、x2、…xn发送n个随机数。
s610,参与方设备x1、x2、…xn根据接收的n个随机数推导出m关联的随机数,以根据m个随机数和n个随机数得到目标随机数。
s611,参与方设备x1、x2、…xn分别采用目标随机数对各自的密钥进行加密,得到密钥密文,并将密钥密文发送给目标服务器z1。
s612,参与方设备x1、x2、…xn对业务数据进行加密得到业务数据密文,并对业务数据密文进行哈希处理,得到业务数据哈希结果。
s613,参与方设备x1、x2、…xn将业务数据哈希结果发送给区块链节点y,以使区块链节点y将业务数据哈希结果写入区块链中。
s614,区块链节点y将接收的业务数据哈希结果写入区块链中。
s615,参与方设备x1、x2、…xn分别将各自的业务数据密文发送给目标服务器z1。
s616,目标服务器z1利用参与方设备x1、x2、…xn发送的密钥,对接收的业务数据密文进行解密,得到业务数据。
其中,业务数据为至少两个。
s617,目标服务器z1根据业务数据,从区块链中获取与每个业务数据对应的业务数据哈希结果进行校验。
s618,目标服务器z1在业务数据校验通过时,根据参与方设备x1、x2、…xn发送的业务数据进行多方计算,得到多方计算结果。
s619,目标服务器z1采用目标随机数,对多方计算结果进行加密,得到多方计算结果密文。
s620,目标服务器z1将多方计算结果密文发送给参与方设备x1、x2、…xn,以使参与方设备x1、x2、…xn利用目标随机数,对多方计算结果密文进行解密,得到多方计算结果。
通过上述实施例提供的基于区块链的多方计算方法,通过提供一种兼顾多方计算数据的安全性和可靠性的解决方案,为保证数据的安全性和可靠性提供了条件。
图7是本申请实施例提供的一种基于区块链的多方计算装置的结构示意图。该基于区块链的多方计算方法可以采用软件和/或硬件的方式实现,并配置于参与方设备上。如图7所示,本实施例公开的基于区块链的多方计算装置700包括数据加密模块710、哈希处理模块720、第一发送模块730和密文发送模块740,其中:
数据加密模块710,用于对业务数据进行加密得到业务数据密文;
哈希处理模块720,用于对所述业务数据密文进行哈希处理,得到业务数据哈希结果;
第一发送模块730,用于向区块链节点发送所述业务数据哈希结果,以指示所述区块链节点将所述业务数据哈希结果写入区块链中;
密文发送模块740,用于向目标服务器中目标可信计算模块发送所述业务数据密文,用于指示所述目标可信计算模块根据所述业务数据密文和区块链中的业务数据哈希结果进行多方计算。
作为本申请的一种可选的实现形式,所述装置700还包括:第一确定模块、密钥加密模块和第三发送模块:
其中,第一确定模块,用于通过与所述目标可信计算模块进行交互,确定目标随机数;
密钥加密模块,用于采用所述目标随机数对密钥进行加密,得到密钥密文;
第三发送模块,用于向所述目标可信计算模块发送所述密钥密文,用于指示所述目标可信计算模块采用所述目标随机数对所述密钥密文进行解密得到密钥;
相应地,数据加密模块710,具体用于:
采用密钥对所述业务数据进行加密,得到业务数据密文。
作为本申请的一种可选的实现形式,所述装置700还包括:请求发送模块、信息获取模块和选择模块:
其中,请求发送模块,用于向区块链节点发送服务器选择请求,其中,所述服务器选择请求包括需要的目标可信算法信息;
信息获取模块,用于从区块链节点获取支持目标可信算法的候选服务器注册信息;
选择模块,用于根据所述候选服务器注册信息,从候选服务器中选择所述目标服务器。
作为本申请的一种可选的实现形式,选择模块具体用于:
向可信计算验证方发送所述候选服务器的可信环境验证请求,其中所述可信环境验证请求包括所述候选服务器注册信息,以指示所述可信计算验证方对候选服务器进行可信环境验证;
从通过可信环境验证的候选服务器中选择所述目标服务器。
作为本申请的一种可选的实现形式,所述装置700还包括:结果密文获取模块和结果密文解密模块;
其中,结果密文获取模块,用于从所述目标可信计算模块获取多方计算结果密文,其中,所述多方计算结果密文采用目标随机数对多方计算结果进行加密得到;
结果密文解密模块,用于采用所述目标随机数对所述多方计算结果密文进行解密,得到多方计算结果。
需要说明的是,前述对应用于参与者设备的基于区块链的多方计算方法实施例的解释说明也适用于该实施例的基于区块链的多方计算装置,其实现原理类似,此处不再赘述。
本申请实施例提供的基于区块链的多方计算装置,通过对业务数据进行加密,并对加密得到的业务数据密文进行哈希处理,得到业务数据哈希结果,然后向区块链节点发送业务数据哈希结果,以指示区块链节点将业务数据哈希结果写入区块链中,并向目标服务器中目标可信计算模块发送业务数据密文,以指示目标可信计算模块根据业务数据密文和区块链中的业务数据哈希结果进行多方计算。由此,通过提供一种兼顾多方计算数据的安全性和可靠性的解决方案,为保证数据的安全性和可靠性提供了条件。
图8是本申请实施例提供的另一种基于区块链的多方计算装置的结构示意图。该基于区块链的多方计算方法可以采用软件和/或硬件的方式实现,并配置于服务器上。如图8所示,本实施例公开的基于区块链的多方计算装置800可包括密文接收模块810、结果获取模块820和多方计算模块830,其中:
密文接收模块810,用于接收参与方设备发送的业务数据密文,其中所述业务数据密文通过对参与方设备的业务数据进行加密得到;
结果获取模块820,用于从区块链中获取业务数据哈希结果;其中所述业务数据哈希结果通过对所述业务数据密文进行哈希处理得到;
多方计算模块830,用于通过可信计算模块,根据所述业务数据密文和所述业务数据哈希结果进行多方计算,得到多方计算结果。
作为本申请的一种可选的实现形式,多方计算模块830,包括:数据解密单元和数据校验单元:
其中,数据解密单元,用于通过可信计算模块,对所述业务数据密文进行解密得到业务数据;
数据校验单元,用于根据所述业务数据哈希结果对所述业务数据进行校验。
作为本申请的一种可选的实现形式,多方计算模块830,还包括:第二确定单元和获取密文单元:
其中,第二确定单元,用于从参与方设备获取密钥密文,其中所述密钥密文通过采用所述目标随机数对密钥进行加密得到;
获取密文单元,用于通过所述可信计算模块,采用所述目标随机数对所述密钥密文进行解密得到密钥;
相应地,数据解密单元,具体用于:
通过可信计算模块,采用所述密钥对所述业务数据密钥进行解密,得到业务数据。
作为本申请的一种可选的实现形式,所述装置800还包括:结果加密模块和结果密文发送模块;
其中,结果加密模块,用于对所述多方计算结果进行加密,得到多方计算结果密文;
结果密文发送模块,用于通过可信计算模块,向所述参与方设备发送所述多方计算结果密文,用于指示所述参与方设备对所述多方计算结果密文进行解密得到多方计算结果。
作为本申请的一种可选的实现形式,所述装置800还包括:第四发送模块:
其中,第四发送模块,用于向区块链节点发送服务器注册信息;其中所述服务器注册信息包括支持的可信算法信息,以指示区块链节点将所述服务器注册信息写入区块链中。
需要说明的是,前述对应用于服务器中的基于区块链的多方计算方法实施例的解释说明也适用于该实施例的基于区块链的多方计算装置,其实现原理类似,此处不再赘述。
本申请实施例提供的基于区块链的多方计算装置,通过接收参与方设备发送的业务数据密文,并从区块链中获取业务数据哈希结果,然后通过可信计算模块,根据业务数据密文和业务数据哈希结果进行多方计算,得到多方计算结果。由此,通过提供一种兼顾多方计算数据的安全性和可靠性的解决方案,为保证数据的安全性和可靠性提供了条件。
图9是本申请实施例提供的再一种基于区块链的多方计算装置的结构示意图。该基于区块链的多方计算方法可以采用软件和/或硬件的方式实现,并配置于区块链节点上。如图9所示,本实施例公开的基于区块链的多方计算装置900包括结果接收模块910和第二发送模块920,其中:
结果接收模块910,用于接收参与方设备发送的业务数据哈希结果;其中所述业务数据哈希结果通过对业务数据密文进行哈希处理得到;
第二发送模块920,用于向目标服务器中目标可信计算模块发送所述业务数据哈希结果,以指示所述目标可信计算模块根据接收的业务数据密文和所述业务数据哈希结果进行多方计算。
作为本申请的一种可选的实现形式,所述装置900还包括:注册信息获取模块和注册信息写入模块:
其中,注册信息获取模块,用于从候选服务器获取服务器注册信息,其中所述服务器注册信息包括支持的可信算法信息;
注册信息写入模块,用于将所述服务器注册信息写入区块链中。
作为本申请的一种可选的实现形式,所述装置900还包括:选择请求获取模块、查询模块和第五发送模块:
其中,选择请求获取模块,用于从参与方设备获取服务器选择请求,其中所述服务器选择请求包括所述参与方设备需要的目标可信算法信息;
查询模块,用于从区块链中查询支持所述目标可信算法的候选服务器注册信息;
第五发送模块,用于向所述参与方设备发送所述候选服务器注册信息,用于指示所述参与方设备根据所述候选服务器注册信息,从候选服务器中选择所述目标服务器。
需要说明的是,前述对应用于区块链节点的基于区块链的多方计算方法实施例的解释说明也适用于该实施例的基于区块链的多方计算装置,其实现原理类似,此处不再赘述。
本申请实施例提供的基于区块链的多方计算装置,通过接收参与方设备发送的业务数据哈希结果,并向目标服务器中目标可信计算模块发送业务数据哈希结果,以指示目标可信计算模块根据接收的业务数据密文和业务数据哈希结果进行多方计算。由此,通过提供一种兼顾多方计算数据的安全性和可靠性的解决方案,为保证数据的安全性和可靠性提供了条件。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图10所示,是根据本申请实施例的基于区块链的多方计算方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图10所示,该电子设备包括:一个或多个处理器1001、存储器1002,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图10中以一个处理器1001为例。
存储器1002即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的应用于参与方设备的基于区块链的多方计算方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的基于区块链的多方计算方法。
存储器1002作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中基于区块链的多方计算方法对应的程序指令/模块(例如,附图7所示的数据加密模块710、哈希处理模块720、第一发送模块730和密文发送模块740)。处理器1001通过运行存储在存储器1002中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述本申请实施例提供的基于区块链的多方计算方法。
存储器1002可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据基于区块链的多方计算方法的电子设备的使用所创建的数据等。此外,存储器1002可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1002可选包括相对于处理器1001远程设置的存储器,这些远程存储器可以通过网络连接至基于区块链的多方计算方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
基于区块链的多方计算方法的电子设备还可以包括:输入装置1003和输出装置1004。处理器1001、存储器1002、输入装置1003和输出装置1004可以通过总线或者其他方式连接,图10中以通过总线连接为例。
输入装置1003可接收输入的数字或字符信息,以及产生与基于区块链的多方计算方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1004可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,通过对业务数据进行加密,并对加密得到的业务数据密文进行哈希处理,得到业务数据哈希结果,然后向区块链节点发送业务数据哈希结果,以指示区块链节点将业务数据哈希结果写入区块链中,并向目标服务器中目标可信计算模块发送业务数据密文,以指示目标可信计算模块根据业务数据密文和区块链中的业务数据哈希结果进行多方计算。由此,通过提供一种兼顾多方计算数据的安全性和可靠性的解决方案,为保证数据的安全性和可靠性提供了条件。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。