CN115765985A - 用于多方安全计算的处理方法及装置 - Google Patents
用于多方安全计算的处理方法及装置 Download PDFInfo
- Publication number
- CN115765985A CN115765985A CN202211286138.3A CN202211286138A CN115765985A CN 115765985 A CN115765985 A CN 115765985A CN 202211286138 A CN202211286138 A CN 202211286138A CN 115765985 A CN115765985 A CN 115765985A
- Authority
- CN
- China
- Prior art keywords
- random
- random number
- party device
- public key
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本说明书实施例提供一种用于多方安全计算的方法及装置。该方法由多方中的第一方设备执行,第一方设备部署预置有目标密钥生成函数的可信计算模组,该方法包括:调用目标密钥生成函数生成第一随机公钥和第一随机私钥;将第一随机公钥提供给第二方设备;从第二方设备接收采用目标密钥生成函数生成的第二随机公钥;基于第二随机公钥和第一随机私钥进行预设函数运算得到目标数据,其与第二方设备基于第一随机公钥、与第二随机公钥对应的第二随机私钥进行预设函数运算的结果相同;根据目标数据生成与第二方设备相同的随机数种子,此随机数种子用于在与第二方设备进行多方安全计算MPC过程中,输入到可信计算模组中的伪随机数生成器,安全生成中间随机数。
Description
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种用于多方安全计算的处理方法及装置。
背景技术
安全多方计算(Secure Multi-Party Computation,简称MPC)研究的主要是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题。在进行MPC计算前,通常需要进行一些相关的预处理,如多方协商随机数种子,以使各个参与方后续在MPC计算过程中可以生成相同的伪随机数。需要理解,也可以将这些预处理视作MPC计算的组成部分。
目前,提出利用可信硬件设备对随机数种子协商进行通信开销、安全防护等方向的优化。然而,已有的相关随机数种子协商协议难以满足实际应用中的更高要求。
因此,需要一种方案,可以使得针对随机数种子的协商协议可以更好地满足实际应用需求,如更低的开发成本、更高的计算效率、更高的安全性等。
发明内容
本说明书实施例描述一种用于多方安全计算的处理方法及装置,可以更好地满足实际应用需求。
根据第一方面,提供了一种用于多方安全计算的处理方法,通过多方中的第一方设备执行,第一方设备部署有可信计算模组,可信计算模组中预置目标密钥生成函数,方法包括:调用目标密钥生成函数,生成第一随机公钥和对应的第一随机私钥;将第一随机公钥提供给第二方设备;从第二方设备接收采用目标密钥生成函数生成的第二随机公钥;基于第二随机公钥和第一随机私钥进行预设函数运算,得到目标数据,目标数据与第二方设备基于第一随机公钥、与第二随机公钥对应的第二随机私钥进行预设函数运算的结果相同;根据目标数据,生成与第二方设备相同的随机数种子;随机数种子用于在与第二方设备进行多方安全计算MPC过程中,输入到可信计算模组中的伪随机数生成器,安全生成中间随机数。
在一个实施例中,可信计算模组为符合可信赖平台模块TPM标准的可信计算芯片。
在一个实施例中,可信计算模组为可信执行环境TEE。
在一个实施例中,目标密钥生成函数是椭圆曲线迪菲-赫尔曼密钥交换ECDH函数,预设函数运算是基于椭圆曲线的点乘函数运算。
在一个实施例中,目标密钥生成函数是迪菲-赫尔曼密钥交换DH函数,预设函数运算涉及求幂运算和取模运算。
在一个实施例中,可信计算模组中预置根私钥;其中,方法还包括:利用根私钥对第一随机公钥进行数字签名处理,得到签名数据;将签名数据提供给第二方设备,以使第二方设备在利用与根私钥对应的根公钥验证出签名数据合法的情况下,存储第一随机公钥。
在一个具体的实施例中,根公钥由公钥认证服务器分发给第二方设备,或,预置在第二方设备中。
在一个实施例中,第一方设备持有两个隐私数值中各个隐私数值的第一分片,第二方设备持有各个隐私数值的第二分片;在根据目标数据,生成与第二方设备相同的随机数种子之后,方法还包括:基于第一分片和中间随机数,与第二方设备中的第二分片和本地生成的与中间随机数相同的随机数,进行MPC乘法计算。
在一个具体的实施例中,基于第一分片和中间随机数,与第二方设备中的第二分片和本地生成的与中间随机数相同的随机数,进行MPC乘法计算,包括:从第二方设备接收临时变量值,其基于本地生成的部分随机数和第二分片而确定,另一部分随机数被用于确定MPC乘法计算的第二结果分片;部分随机数和另一部分随机数构成与中间随机数相同的随机数;基于临时变量值、中间随机数和第一分片,确定MPC乘法计算的第一结果分片。
在一个实施例中,其中还包括:从可信计算模组中清除第一随机私钥。
根据第二方面,提供了一种用于多方安全计算的处理方法,通过多方中的第二方设备执行,该方法包括:采用目标密钥生成函数,生成第二随机公钥和对应的第二随机私钥;将该第二随机公钥提供给第一方设备;其中,该目标密钥生成函数与该第一方设备的可信计算模组中预置的密钥生成函数相同;该可信计算模组基于硬件平台支持可信计算;从第一方设备接收其通过调用该目标密钥生成函数生成的第一随机公钥;基于该第一随机公钥和该第二随机私钥进行预设函数运算,得到目标数据,该目标数据与该第一方设备基于该第二随机公钥、与该第一随机公钥对应的第一随机私钥进行该预设函数运算的结果相同;根据该目标数据,生成与该第一方设备相同的随机数种子;该随机数种子用于在与该第一方设备进行多方安全计算MPC过程中,输入到伪随机数生成器,以生成目标随机数,该伪随机数生成器与该可信计算模组中部署的生成器相同,该目标随机数包括MPC结果分片。
根据第三方面,提供了一种用于多方安全计算的处理装置,该处理装置集成在该多方中的第一方设备中,该第一方设备部署有可信计算模组,该可信计算模组中预置目标密钥生成函数,该处理装置包括:密钥生成模块,配置为调用该目标密钥生成函数,生成第一随机公钥和对应的第一随机私钥;随机公钥发送模块,配置为将该第一随机公钥提供给第二方设备;随机公钥接收模块,配置为从第二方设备接收采用该目标密钥生成函数生成的第二随机公钥;目标数据确定模块,配置为基于该第二随机公钥和该第一随机私钥进行预设函数运算,得到目标数据,该目标数据与该第二方设备基于该第一随机公钥、与该第二随机公钥对应的第二随机私钥进行该预设函数运算的结果相同;随机数种子生成模块,配置为根据该目标数据,生成与该第二方设备相同的随机数种子;该随机数种子用于在与该第二方设备进行多方安全计算MPC过程中,输入到该可信计算模组中的伪随机数生成器,安全生成中间随机数。
根据第四方面,提供了一种用于多方安全计算的处理装置,该处理装置集成在该多方中的第二方设备中,该处理装置包括:密钥生成模块,配置为采用目标密钥生成函数,生成第二随机公钥和对应的第二随机私钥;其中,该目标密钥生成函数与该第一方设备的可信计算模组中预置的密钥生成函数相同;该可信计算模组基于硬件平台支持可信计算;随机密钥发送模块,配置为将该第二随机公钥提供给第一方设备;随机公钥接收模块,配置为从第一方设备接收其通过调用该目标密钥生成函数生成的第一随机公钥;目标数据确定模块,配置为基于该第一随机公钥和该第二随机私钥进行预设函数运算,得到目标数据,该目标数据与该第一方设备基于该第二随机公钥、与该第一随机公钥对应的第一随机私钥进行该预设函数运算的结果相同;随机数种子生成模块,配置为根据该目标数据,生成与该第一方设备相同的随机数种子;该随机数种子用于在与该第一方设备进行多方安全计算MPC过程中,输入到伪随机数生成器,以生成目标随机数,该伪随机数生成器与该可信计算模组中部署的生成器相同,该目标随机数包括MPC结果分片。
根据第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面或第二方面提供的方法。
根据第六方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,该处理器执行所述可执行代码时,实现第一方面或第二方面提供的方法。
采用本说明书实施例提供的方法和装置,使MPC计算的多个参与方能够安全、高效地完成随机数种子的协商。进一步,通过调用可信计算模组中预定义的功能函数,可以有效降低开发成本;通过清除可信计算模组中完成使用的随机私钥,可以进一步加强对随机数种子的安全防护。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出本说明书实施例披露的两方协商随机数种子的通信架构示意图;
图2示出本说明书实施例披露的用于多方安全计算的通信交互示意图;
图3示出本说明书实施例披露的MPC乘法计算的两方通信交互示意图;
图4示出本说明书实施例披露的一种用于多方安全计算的处理装置结构示意图;
图5示出本说明书实施例披露的另一种用于多方安全计算的处理装置结构示意图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
本说明书实施例披露一种新设计的随机数种子协商协议,或称随机数种子协商算法,通过利用预置在可信计算芯片等可信计算模组中的密钥生成函数,安全、高效地完成对随机数种子的协商。
需要说明的是,新协商协议的参与方可以为多个,其中至少一个参与方的设备中部署有可信计算模组。以下先主要以参与方是两方为例,描述随机数种子的协商过程。
图1示出本说明书实施例披露的两方协商随机数种子的通信架构示意图,其中两方包括第一方设备和第二方设备,第一方设备部署可信计算模组。如图1所示,两方设备各自调用相同的密钥生成函数,生成各自的随机密钥对,并各自将己方的随机公钥发送给对方,之后,两方设备各自利用己方的随机私钥、对方的随机公钥,生成相同的随机数种子。
需要说明,第一方设备中的随机数种子在可信计算模组中生成和存储,从而使得工作人员无法获知此随机数种子。这是因为,在后续的MPC计算中,需要确保任何一个参与方都无法获知MPC计算的完整结果,而通常,一部分参与方会将基于随机数种子生成的伪随机数直接作为本方针对MPC计算结果的秘密分享(Secret Sharing,简称SS)分片,此时,另一部分参与方在拿到本方针对MPC计算结果的秘密分享分片后,若还能获知随机数,实际就是获知了可以用于还原MPC计算完整结果的所有分片,这是不被允许的,所以,对于上述另一部分参与方,需确保其无法获知随机数种子,从而确保其无法获知随机数,也即无法获知其他方持有的MPC计算结果分片。如此,在随机数种子协商中引入可信计算模组,可以保证MPC计算的安全性,并且,两方设备的交互步骤一定程度上对称,也降低了协议的开发成本。
接下来,描述本说明书实施例所披露协商方案的具体实施步骤。图2示出本说明书实施例披露的用于多方安全计算的通信交互示意图,图2中示意出多方中包括的第一方设备和第二方设备。可以理解,多方中的各方设备都具有存储、计算、处理等能力。
第一方设备部署有可信计算模组。可以理解,可信计算模组是支持可信计算(Trusted Computing,简称TC)的功能模组,可信计算属于行为安全层面,行为安全包括行为的机密性、完整性和真实性等特征。通常,可信计算模组基于硬件平台支持可信计算,也就是说,可信计算模组可以依赖硬件实现对可信计算的支持。在一个实施例中,可信计算模组实现为可信执行环境(Trusted Execution Environment,简称TEE)。在另一个实施例中,可信计算模组实现为可信计算芯片,例如,可以是符合可信赖平台模块(Trusted PlatformModule,简称TPM)标准的安全芯片。又例如,还可以是符合可信密码模块(TrustedCryptography Module,TCM)标准的安全芯片。在一个示例中,第一计算设备是带有TPM芯片的隐私计算一体机。
可信计算模组中预置目标密钥生成函数。需理解,已有的密钥生成函数有许多种,此处的目标密钥生成函数指随机数种子协商协议中被选用的密钥生成函数。在一种实施情况中,可以在可信计算模组中自行开发支持目标密钥生成函数的功能模块。在另一种实施情况中,可信计算模组原本就配置有目标密钥生成函数的功能接口。实际上,目前许多可信计算模组的发展趋于成熟,具有相关的国际或国内标准,对可信计算模组所支持的密码功能及安全性有明确的定义和规范,基于可信计算模组中自带的功能函数而设计的随机数协商协议,可以大幅降低开发成本,节省资源、能源,有效提升安全性。示例性地,可信计算模组是TPM芯片,目标密钥生成函数可以被设定为TPM标准中定义的椭圆曲线迪菲-赫尔曼密钥交换(Elliptic Curve Diffie–Hellman key Exchange,简称ECDH)函数。
需要理解,第二方设备中可以部署可信计算模组,也可以不部署可信计算模组。
如图2所示,两方设备的交互过程包括以下步骤:
步骤S201,第一方设备调用其可信计算模组中预置的目标密钥生成函数,生成第一随机密钥对,其中包括第一随机公钥Q1和第一随机私钥d1。
在一个实施例中,目标密钥生成函数采用ECDH函数,此时,生成的第一随机公钥Q1是点坐标,第一随机私钥d1是数值,Q1和d1之间满足关系:Q1=d1*G,其中运算符*表示基于椭圆曲线的点乘运算;G表示生成元(generator),是点坐标,属于两方之间的公共参数,可以由两方中任意的一方随机生成后发送给另一方,例如,可以由第一方设备生成后发送给第二方设备。
在另一个实施例中,目标密钥生成函数采用迪菲-赫尔曼密钥交换DH函数,此时,生成的第一随机公钥Q1和对应的第一随机私钥d1都是数值,并且,其中g表示本原根,p为素数,g和p都是两方之间的公共参数,可以由两方中任意的一方随机生成后发送给另一方,例如,可以由第二方设备生成后发送给第一方设备。
需要说明,以上例举目标密钥生成函数是ECDH函数或DH函数,实际还可以是其他的密钥交换函数。
以上,第一方设备生成第一机公钥Q1和对应的第一随机私钥d1。
步骤S202,第一方设备将第一随机公钥Q1提供给第二方设备。
于是,第二方设备可以对第一随机公钥Q1进行存储,以便后续使用。
在一种实施情况中,考虑到在发送第一随机公钥Q1的过程中,存在第一随机公钥Q1被不法分子拦截,并进行替换的情况,为加强数据的传输安全,本步骤中还可以发送针对第一随机公钥Q1的签名数据,以使得第二方设备在验证出签名数据合法后,再存储第一随机公钥Q1。
具体,第一方设备的可信计算模组中预置第一根私钥HK1。在一种可能的情况中,包括第一根私钥HK1和第一根公钥PK1在内的第一根密钥对可以在可信计算模组中的硬件出厂前随机生成。示例性地,第一跟密钥对可以在可信计算芯片出厂前随机生成。
基于此,第一方设备可以利用第一根私钥HK1对第一随机公钥Q1进行数字签名处理,从而得到第一签名数据S1。具体地,第一方设备利用可信计算模组完成数字签名处理,再将得到的第一签名数据S1输出到内存。可以理解,第一根公钥PK1可以被存储在内存中。
在一个实施例中,上述数字签名处理包括先利用哈希函数计算第一随机公钥Q1的哈希值,再利用第一根私钥HK1对计算出的哈希值进行加密,从而将得到的加密数据作为第一签名数据S1。
如此,可以实现一并发送第一签名数据S1。相应,第二方设备需要对第一签名数据S1进行验证。具体,第二方设备可以利用其获取的第一根公钥PK1验签,从而在验证通过的情况下,存储第一随机公钥Q1,否则对接收到的随机公钥进行抛弃处理。
在一个实施例中,第二方设备可以从第一方设备接收第一根公钥PK1,并在接收的第一根公钥PK1通过公钥认证服务器的认证后,存储第一根公钥PK1。在另一个实施例中,第二方设备可以从公钥认证服务器获取第一方设备的第一根公钥PK1。在又一个实施例中,第二方设备中预置第一根公钥PK1,例如,在第二方设备出厂前预置第一根公钥PK1。
在一个实施例中,上述验签过程可以包括:第二方设备利用哈希函数计算第一随机公钥Q1的哈希值,并利用第一根公钥PK1解密第一签名数据S1,若计算出的哈希值与解密结果相同,则判定验证通过,否则判定验证不通过。
如此,通过验证数字签名,可以确保第二方设备存储的第一随机公钥Q1是由第一方设备发送的真实、完整的随机公钥。
以上,可以实现两方设备间第一随机公钥Q1的传输。
步骤S203,第二方设备调用目标密钥生成函数,生成第二随机密钥对,其中包括第二随机公钥Q0和对应的第二随机私钥d0。
可以理解,目标密钥生成函数是两方预先协商好的。
在一个实施例中,第二方设备中同样部署可信计算模组,此时,第二方设备可以调用其中的目标密钥生成函数,生成第二随机密钥对。需要理解,因密钥对的生成是随机的,所以即时两方采用相同的目标密钥生成函数,产生的随机密钥对也往往不同,也即,第二方设备生成的第二随机密钥对不同于第一随机密钥对。
在另一个实施例中,第二方设备中没有部署可信计算模组,此时,第二方设备可以直接调用目标密钥生成函数,生成第二随机密钥对。
需要说明的是,对本步骤的介绍还可以参见步骤S201中的相关描述,不作赘述。
步骤S204,第二方设备将第二随机公钥Q0提供给第一方设备。
在一个实施例中,第二方设备仅发送第二随机公钥Q0,于是,第一方设备直接对第二随机公钥Q0进行存储。
在另一个实施例中,第二方设备还可以向第一方设备发送针对第二随机公钥Q0的第二签名数据S0。第二签名数据S0由第二方设备利用其第二根私钥HK1对第二随机公钥Q0进行数字签名处理而得到。于是,第一方设备在利用与第二根私钥HK1对应的第二根公钥HK0验证出第二签名数据S0合法的情况下,存储第二随机公钥Q0,否则进行抛弃处理。
需要说明的是,对本步骤的描述还可以参见步骤S202中的相关描述,不作赘述。
步骤S205,第一方设备基于第二随机公钥Q0和第一随机私钥d1进行预设函数运算,得到第一运算结果x1,作为目标数据xt。步骤S206,第二方设备基于第一随机公钥Q1和第二随机私钥d0进行预设函数运算,得到第二运算结果x0,作为目标数据xt。
上述第一运算结果x1和第二运算结果x0相同。可以理解,预设函数运算的输入包括一方的随机公钥和另一方的随机私钥,而任一方的随机公钥和随机私钥都是基于目标密钥生成函数而得到的,因此,预设函数与目标密钥生成函数是互相适应性设计的。
在一个实施例中,目标密钥生成函数是ECDH函数,此时,预设函数运算可以是基于椭圆曲线的点乘函数运算。示例性地,第一方设备和第二方设备中进行的预设函数运算可以分别记作以下公式(1)和公式(2):
(x1,y1)=d1*Q0 (1)
(x0,y0)=d0*Q1 (2)
此时,第一方设备可以将坐标(x1,y1)中的坐标值x1作为目标数据,第二方设备可以将坐标(x0,y0)中的坐标值x0作为目标数据。需要理解,(x1,y1)=(x0,y0),这是由基于椭圆曲线的点乘函数的性质决定的。
在另一个实施例中,目标密钥生成函数是DH函数,此时,预设函数运算涉及求幂运算和取模运算。示例性地,第一方设备和第二方设备中进行的预设函数运算可以分别记作以下公式(3)和公式(4):
由上,第一方设备和第二方设备可以各自进行预设函数运算,得到相同的目标数据xt。
需要说明的是,在步骤S205中,第一方设备可以在可信计算模组中进行预设函数运算。在一个实施例中,可信计算模组中还预置预设函数,此时,第一方设备可以直接调用可信计算模组中的预设函数实现相关运算。示例性地,可信计算模组实现为TPM芯片,由此,可以直接调用TPM芯片中预置的基于椭圆曲线的点乘函数进行运算。在步骤S206中,若第二方设备部署与第一方设备相同的可信计算模组,则第二方设备也可以在可信计算模组中进行预设函数运算,否则,第二方设备可以直接利用预设函数进行运算。
步骤S207,第一方设备根据目标数据生成第一随机数种子。可以理解,第一随机数种子的生成是在第一方设备部署的可信计算模组中完成的。
在一个实施例中,可以直接将目标数据作为随机数种子。在另一个实施例中,可以计算目标数据的哈希值,作为随机数种子。
在又一个实施例中,可以利用第一随机公钥Q1、第二随机公钥Q0和目标数据xt,生成随机数种子,从而增加随机数种子的破解难度。
进一步,在一个具体的实施例中,可以将第一随机公钥Q1、第二随机公钥Q0和目标数据xt作为密钥导出函数(Key derivation function,KDF)的输入,从而将对应的输出作为随机数种子。在一个例子中,可信计算模组实现为TPM芯片,TPM芯片中自带KDF函数的功能接口,此时,第一方设备可以直接调用TPM芯片中预置的KDF函数生成随机数种子。在另一个具体的实施例中,可以先对第一随机公钥Q1、第二随机公钥Q0和目标数据xt进行拼接,再求取拼接数据的哈希值,作为随机数种子。
由上,第一方设备可以生成第一随机数种子。第一随机数种子用于在与第二方设备进行MPC计算过程中,输入到可信计算模组中的伪随机数生成器,安全生成中间随机数。
步骤S208,第二方设备根据目标数据生成第二随机数种子,第二随机数种子与第一随机数种子相同。
需要说明,第二方设备生成第二随机数种子所基于的数据以及采用的计算函数都与第一方设备相同,因此,生成与第一方设备相同的随机数种子。由此,对步骤S208的描述可以参见对步骤S207的描述。可能的区别在于,若第二方设备中没有部署可信计算模组,则第二方设备的第二随机数种子存储在内存中,可以被用户访问获知。
第二随机数种子用于在与第一方设备进行MPC计算的过程中,输入到伪随机数生成器,以生成目标随机数,目标随机数包括被用作MPC结果分片的随机数。可以理解,第二方设备中的伪随机数生成器与第一方设备在其可信计算模组中部署的伪随机数生成器相同,而随机数种子也相同,因此,可以在相同轮次生成相同的随机数。
由上,第一方设备和第二方设备可以生成相同的随机数种子,从而实现随机数种子的协商。
根据另一方面的实施例,在第一方设备执行上述步骤S205,完成对第一随机私钥SK1的使用后,可以从可信计算模组中清除第一随机私钥SK1。需理解的是,在已有的随机种子协商协议中,如果攻击者记录协商过程,并攻破可信硬件提取到根私钥,则攻击者可以利用根私钥解密协商过程中的通信数据,从而还原出随机种子结果,而在本说明书实施例中,通过从可信计算模组中清除第一随机私钥SK1,使得即使不法分子拦截两方之间的通信数据,攻破提取出可信计算模组中的根私钥,也无法还原出随机数种子,从而使得协商协议的安全性得到进一步加强。
类似地,在第二方设备执行上述步骤S206,完成对第二随机私钥SK0的使用后,同样可以从本地清除第二随机私钥SK0。
需要说明的是,本说明书实施例对图2所示出步骤的执行顺序不作限定,只需数据的流动符合逻辑即可。
综上,采用本说明书实施例披露的用于多方安全计算的处理方法,使多方能够安全、高效地完成随机数种子的协商。进一步,通过调用可信计算模组中预定义的功能函数,可以有效降低开发成本;通过清除可信计算模组中完成使用的随机私钥,可以进一步加强对随机数种子的安全防护。
在以上完成随机数种子的协商后,第一方设备和第二方设备可以基于协商好的随机数种子,进行MPC计算,此MPC计算可以是乘法计算、比较(如比较大小)计算等。下面以进行MPC计算是乘法计算为例,对两方各自基于相同的随机数种子而生成的伪随机数在MPC计算过程中的应用进行说明。
MPC乘法计算的目的在于,安全计算第一隐私数值a和第二隐私数值b之间的乘积。计算前,第一方设备持有这两个隐私数值的第一分片,可记作[a]1和[b]1;第二方设备持有这两个隐私数值的第二分片,可记作[a]0和[b]0。计算后,第一方设备持有乘积结果的第一结果分片,可记作[a*b]1;第二方设备持有乘积结果的第二结果分片,可记作[a*b]0。
对于两方设备中隐私数值分片的来源,在一种可能的情况中,第一方设备持有第一隐私数值a,第一方设备采用秘密分享技术对a进行处理,得到两个秘密分享分片,从而将其中之一(即[a]1)保留,将另一分片(即[a]0)发送给第二方设备;类似地,第二方设备持有第二隐私数值b,第二方设备采用秘密分享技术对b进行处理,得到两个秘密分享分片,从而将其中之一(即[b]0)保留,将另一分片(即[b]1)发送给第一方设备。可以理解,一般地,a=[a]0+[a]1,b=[b]0+[b]1。
第一方基于可信计算模组中使用第一伪随机数种子的伪随机数生成器,生成中间随机数;第二方设备设备基于使用第二伪随机数种子的伪随机数生成器,生成与中间随机数相同的目标随机数。
由上,第一方设备基于隐私数值分片[a]1、[b]1和本地生成的中间随机数,与第二方设备中的隐私数值分片[a]0、[b]0和本地生成的目标随机数,进行MPC乘法。
在一种实施方式中,MPC乘法中两方的交互包括:第二方设备基于隐私数值分片[a]0、[b]0和目标随机数中的部分随机数,确定临时变量值,并基于另一部分随机数确定第二结果分片[a*b]0;第二方设备将临时变量值提供给第一方设备;第一方设备基于临时变量值、中间随机数和隐私数值分片[a]1、[b]1,确定第一结果分片[a*b]1。
为便于理解,下面对MPC乘法中两方交互的具体过程进行示例性说明。图3示出本说明书实施例披露的MPC乘法计算的两方通信交互示意图,如图3所示,交互过程包括以下步骤:
步骤S301,第二方设备使用伪随机数生成器生成随机数r1和r2。
步骤S302,第二方设备计算临时变量v1和v2,其中v1=[a]0-r1,v2=[b]0-r2。
步骤S303,第二方设备将临时变量v1和v2提供给第一方设备。
步骤S304,第二方设备使用伪随机数生成器生成随机数r3,作为第二结果分片[a*b]0。
步骤S305,第一方设备使用伪随机数生成器生成随机数r1和r2;
步骤S306,第一方设备计算临时变量v3和v4,其中v3=[a]1+v1,v4=[b]1+v2。可推知,v3=[a]1+([a]0-r1)=a-r1,v4=[b]1+([b]0-r2)=b-r2。
步骤S307,第一方设备使用伪随机数生成器生成随机数r3,并利用可信模组进行带掩码的安全乘法运算:(v3+v1)·(v4+v2)-r3,并将运算结果作为第一结果分片[a*b]1输出到内存。示例性地,可信计算模组实现为TPM芯片,TPM芯片具有防护侧信道攻击的能力,此时,可以使用TPM芯片中的安全存储器与运算功能实现安全乘法运算。
由上,第一方设备和第二方设备共同进行MPC乘法,对应得到第一结果分片[a*b]1和第一结果分片[a*b]0。需说明,MPC乘法运算可以转移至安全的加速卡,例如,现场可编程逻辑门阵列(Field Programmable Gate Array,简称FPGA)加速卡上进行。示例性地,第一方设备实现为带有可信计算芯片的隐私计算一体机,加速卡也是隐私计算一体机的功能部件之一,此时,可信计算芯片(如TPM芯片)与加速卡(如FPGA加速卡)之间可以采用高速安全数据通路进行传输。需要理解,高速安全数据通路的建立方式有多种,例如,高速的特性可以通过采用(peripheral component interconnect express,PCIe)总线实现,安全的特性可以通过利用出厂时候写好的对称密钥对传输数据进行加密处理而实现。
需要说明的是,在以上对随机种子协商和MPC计算的描述中,主要以参与方为两方为例进行说明,实际还可以有更多的参与方。此时,交互过程适应性变化,比如,假定还有第三方设备,此时,交互过程还包括:第三方设备调用目标密钥生成函数,生成第三随机公钥和对应的第三随机私钥,并第三随机公钥提供给第一方设备和第二方设备;第三方设备从第一方设备和第二方设备接收第一随机公钥和第二随机公钥;第三方设备基于三方的随机公钥和已方的随机私钥进行预设函数运算,得到目标数据;第一方设备和第二方设备在进行预设函数运算时还使用第三方设备提供的第三随机公钥;第三方设备也生成相同的随机数种子;三方设备共同进行MPC计算。对于参与方是其他数量的情况,可以依此类推。
与上述处理方法相对应地,本说明书实施例还披露处理装置。图4示出本说明书实施例披露的一种用于多方安全计算的处理装置结构示意图,该处理装置集成在多方中的第一方设备中,第一方设备部署有可信计算模组,可信计算模组中预置目标密钥生成函数。如图4所示,处理装置400包括:
密钥生成模块410,配置为调用目标密钥生成函数,生成第一随机公钥和对应的第一随机私钥;随机公钥发送模块420,配置为将第一随机公钥提供给第二方设备;随机公钥接收模块430,配置为从第二方设备接收采用目标密钥生成函数生成的第二随机公钥;目标数据确定模块440,配置为基于第二随机公钥和第一随机私钥进行预设函数运算,得到目标数据,目标数据与第二方设备基于第一随机公钥、与第二随机公钥对应的第二随机私钥进行预设函数运算的结果相同;随机数种子生成模块450,配置为根据目标数据,生成与第二方设备相同的随机数种子;随机数种子用于在与第二方设备进行多方安全计算MPC过程中,输入到可信计算模组中的伪随机数生成器,安全生成中间随机数。
在一个实施例中,可信计算模组为符合可信赖平台模块TPM标准的可信计算芯片。
在一个实施例中,可信计算模组为可信执行环境TEE。
在一个实施例中,目标密钥生成函数是椭圆曲线迪菲-赫尔曼密钥交换ECDH函数,预设函数运算是基于椭圆曲线的点乘函数运算。
在一个实施例中,目标密钥生成函数是迪菲-赫尔曼密钥交换DH函数,预设函数运算涉及求幂运算和取模运算。
在一个实施例中,可信计算模组中预置根私钥;其中,处理装置400还包括:数字签名模块460,配置为利用根私钥对第一随机公钥进行数字签名处理,得到签名数据;签名发送模块470,配置为将签名数据提供给第二方设备,以使第二方设备在利用与根私钥对应的根公钥验证出签名数据合法的情况下,存储第一随机公钥。
在一个具体的实施例中,根公钥由公钥认证服务器分发给第二方设备,或,预置在第二方设备中。
在一个实施例中,第一方设备持有两个隐私数值中各个隐私数值的第一分片,第二方设备持有各个隐私数值的第二分片;处理装置400还包括:MPC计算单元480,配置为基于第一分片和中间随机数,与第二方设备中的第二分片和本地生成的与中间随机数相同的随机数,进行MPC乘法计算。
在一个具体的实施例中,MPC计算单元480具体配置为:从第二方设备接收临时变量值,其基于本地生成的部分随机数和第二分片而确定,另一部分随机数被用于确定MPC乘法计算的第二结果分片;部分随机数和另一部分随机数构成与中间随机数相同的随机数;基于临时变量值、中间随机数和第一分片,确定MPC乘法计算的第一结果分片。
在一个实施例中,处理装置400还包括:清除单元490,配置为从可信计算模组中清除第一随机私钥。
图5示出本说明书实施例披露的另一种用于多方安全计算的处理装置结构示意图,该处理装置集成在多方中的第二方设备中。如图5所示,该处理装置500包括:
密钥生成模块510,配置为采用目标密钥生成函数,生成第二随机公钥和对应的第二随机私钥;其中,所述目标密钥生成函数与所述第一方设备的可信计算模组中预置的密钥生成函数相同;所述可信计算模组基于硬件平台支持可信计算;随机密钥发送模块520,配置为将所述第二随机公钥提供给第一方设备;随机公钥接收模块530,配置为从第一方设备接收其通过调用所述目标密钥生成函数生成的第一随机公钥;目标数据确定模块540,配置为基于所述第一随机公钥和所述第二随机私钥进行预设函数运算,得到目标数据,所述目标数据与所述第一方设备基于所述第二随机公钥、与所述第一随机公钥对应的第一随机私钥进行所述预设函数运算的结果相同;随机数种子生成模块550,配置为根据所述目标数据,生成与所述第一方设备相同的随机数种子;所述随机数种子用于在与所述第一方设备进行多方安全计算MPC过程中,输入到伪随机数生成器,以生成目标随机数,所述伪随机数生成器与所述可信计算模组中部署的生成器相同,所述目标随机数包括MPC结果分片。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2或图3所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2或图3所描述的方法。本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (15)
1.一种用于多方安全计算的处理方法,通过多方中的第一方设备执行,所述第一方设备部署有可信计算模组,所述可信计算模组中预置目标密钥生成函数,所述方法包括:
调用所述目标密钥生成函数,生成第一随机公钥和对应的第一随机私钥;将所述第一随机公钥提供给第二方设备;
从第二方设备接收采用所述目标密钥生成函数生成的第二随机公钥;
基于所述第二随机公钥和所述第一随机私钥进行预设函数运算,得到目标数据,所述目标数据与所述第二方设备基于所述第一随机公钥、与所述第二随机公钥对应的第二随机私钥进行所述预设函数运算的结果相同;
根据所述目标数据,生成与所述第二方设备相同的随机数种子;所述随机数种子用于在与所述第二方设备进行多方安全计算MPC过程中,输入到所述可信计算模组中的伪随机数生成器,安全生成中间随机数。
2.根据权利要求1所述的方法,其中,所述可信计算模组为符合可信赖平台模块TPM标准的可信计算芯片。
3.根据权利要求1所述的方法,其中,所述可信计算模组为可信执行环境TEE。
4.根据权利要求1所述的方法,其中,所述目标密钥生成函数是椭圆曲线迪菲-赫尔曼密钥交换ECDH函数,所述预设函数运算是基于椭圆曲线的点乘函数运算。
5.根据权利要求1所述的方法,其中,所述目标密钥生成函数是迪菲-赫尔曼密钥交换DH函数,所述预设函数运算涉及求幂运算和取模运算。
6.根据权利要求1所述的方法,其中,所述可信计算模组中预置根私钥;其中,所述方法还包括:
利用所述根私钥对所述第一随机公钥进行数字签名处理,得到签名数据;
将所述签名数据提供给所述第二方设备,以使所述第二方设备在利用与所述根私钥对应的根公钥验证出所述签名数据合法的情况下,存储所述第一随机公钥。
7.根据权利要求6所述的方法,其中,所述根公钥由公钥认证服务器分发给所述第二方设备,或,预置在所述第二方设备中。
8.根据权利要求1所述的方法,其中,所述第一方设备持有两个隐私数值中各个隐私数值的第一分片,所述第二方设备持有所述各个隐私数值的第二分片;在根据所述目标数据,生成与所述第二方设备相同的随机数种子之后,所述方法还包括:
基于所述第一分片和所述中间随机数,与第二方设备中的所述第二分片和本地生成的与所述中间随机数相同的随机数,进行MPC乘法计算。
9.根据权利要求8所述的方法,其中,基于所述第一分片和所述中间随机数,与第二方设备中的所述第二分片和本地生成的与所述中间随机数相同的随机数,进行MPC乘法计算,包括:
从所述第二方设备接收临时变量值,其基于本地生成的部分随机数和所述第二分片而确定,另一部分随机数被用于确定所述MPC乘法计算的第二结果分片;所述部分随机数和另一部分随机数构成与所述中间随机数相同的随机数;
基于所述临时变量值、中间随机数和所述第一分片,确定所述MPC乘法计算的第一结果分片。
10.根据权利要求1-9中任一项所述的方法,其中,还包括:
从所述可信计算模组中清除所述第一随机私钥。
11.一种用于多方安全计算的处理方法,通过多方中的第二方设备执行,所述方法包括:
采用目标密钥生成函数,生成第二随机公钥和对应的第二随机私钥;将所述第二随机公钥提供给第一方设备;其中,所述目标密钥生成函数与所述第一方设备的可信计算模组中预置的密钥生成函数相同;所述可信计算模组基于硬件平台支持可信计算;
从第一方设备接收其通过调用所述目标密钥生成函数生成的第一随机公钥;
基于所述第一随机公钥和所述第二随机私钥进行预设函数运算,得到目标数据,所述目标数据与所述第一方设备基于所述第二随机公钥、与所述第一随机公钥对应的第一随机私钥进行所述预设函数运算的结果相同;
根据所述目标数据,生成与所述第一方设备相同的随机数种子;所述随机数种子用于在与所述第一方设备进行多方安全计算MPC过程中,输入到伪随机数生成器,以生成目标随机数,所述伪随机数生成器与所述可信计算模组中部署的生成器相同,所述目标随机数包括MPC结果分片。
12.一种用于多方安全计算的处理装置,所述处理装置集成在所述多方中的第一方设备中,所述第一方设备部署有可信计算模组,所述可信计算模组中预置目标密钥生成函数,所述处理装置包括:
密钥生成模块,配置为调用所述目标密钥生成函数,生成第一随机公钥和对应的第一随机私钥;
随机公钥发送模块,配置为将所述第一随机公钥提供给第二方设备;
随机公钥接收模块,配置为从第二方设备接收采用所述目标密钥生成函数生成的第二随机公钥;
目标数据确定模块,配置为基于所述第二随机公钥和所述第一随机私钥进行预设函数运算,得到目标数据,所述目标数据与所述第二方设备基于所述第一随机公钥、与所述第二随机公钥对应的第二随机私钥进行所述预设函数运算的结果相同;
随机数种子生成模块,配置为根据所述目标数据,生成与所述第二方设备相同的随机数种子;所述随机数种子用于在与所述第二方设备进行多方安全计算MPC过程中,输入到所述可信计算模组中的伪随机数生成器,安全生成中间随机数。
13.一种用于多方安全计算的处理装置,所述处理装置集成在所述多方中的第二方设备中,所述处理装置包括:
密钥生成模块,配置为采用目标密钥生成函数,生成第二随机公钥和对应的第二随机私钥;其中,所述目标密钥生成函数与所述第一方设备的可信计算模组中预置的密钥生成函数相同;所述可信计算模组基于硬件平台支持可信计算;
随机密钥发送模块,配置为将所述第二随机公钥提供给第一方设备;
随机公钥接收模块,配置为从第一方设备接收其通过调用所述目标密钥生成函数生成的第一随机公钥;
目标数据确定模块,配置为基于所述第一随机公钥和所述第二随机私钥进行预设函数运算,得到目标数据,所述目标数据与所述第一方设备基于所述第二随机公钥、与所述第一随机公钥对应的第一随机私钥进行所述预设函数运算的结果相同;
随机数种子生成模块,配置为根据所述目标数据,生成与所述第一方设备相同的随机数种子;所述随机数种子用于在与所述第一方设备进行多方安全计算MPC过程中,输入到伪随机数生成器,以生成目标随机数,所述伪随机数生成器与所述可信计算模组中部署的生成器相同,所述目标随机数包括MPC结果分片。
14.一种计算机可读存储介质,其上存储有计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-11中任一项所述的方法。
15.一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211286138.3A CN115765985A (zh) | 2022-10-20 | 2022-10-20 | 用于多方安全计算的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211286138.3A CN115765985A (zh) | 2022-10-20 | 2022-10-20 | 用于多方安全计算的处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115765985A true CN115765985A (zh) | 2023-03-07 |
Family
ID=85352290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211286138.3A Pending CN115765985A (zh) | 2022-10-20 | 2022-10-20 | 用于多方安全计算的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115765985A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116055049A (zh) * | 2023-04-03 | 2023-05-02 | 富算科技(上海)有限公司 | 多方安全计算方法、装置、系统、电子设备和存储介质 |
-
2022
- 2022-10-20 CN CN202211286138.3A patent/CN115765985A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116055049A (zh) * | 2023-04-03 | 2023-05-02 | 富算科技(上海)有限公司 | 多方安全计算方法、装置、系统、电子设备和存储介质 |
CN116055049B (zh) * | 2023-04-03 | 2023-07-04 | 富算科技(上海)有限公司 | 多方安全计算方法、装置、系统、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109309569B (zh) | 基于sm2算法的协同签名的方法、装置及存储介质 | |
CN111275202B (zh) | 一种面向数据隐私保护的机器学习预测方法及系统 | |
CN109800584B (zh) | 一种基于Intel SGX机制的身份或属性加密计算方法和系统 | |
KR101075334B1 (ko) | 안전 인증 채널 | |
KR101634158B1 (ko) | 일종의 신분 인증 및 공유키 생성방법 | |
CN110890962B (zh) | 认证密钥协商方法、装置、存储介质及设备 | |
CN109274502B (zh) | 公钥加密及密钥签名的创建方法、设备及可读存储介质 | |
CN101296075B (zh) | 一种基于椭圆曲线的身份认证系统 | |
JPWO2007125877A1 (ja) | 通信装置、及び通信システム | |
CN114157415A (zh) | 数据处理方法、计算节点、系统、计算机设备和存储介质 | |
KR20170052548A (ko) | 인증 장치 및 방법 | |
CN115499250B (zh) | 一种数据加密方法及装置 | |
CN108667598B (zh) | 用于实现安全密钥交换的设备和方法及安全密钥交换方法 | |
CN108390866B (zh) | 基于双代理双向匿名认证的可信远程证明方法及系统 | |
CN109951276A (zh) | 基于tpm的嵌入式设备远程身份认证方法 | |
JP2004297578A (ja) | 公開鍵生成装置、共有鍵生成装置、鍵交換装置、及び鍵交換方法 | |
CN115765985A (zh) | 用于多方安全计算的处理方法及装置 | |
Abusukhon et al. | An authenticated, secure, and mutable multiple‐session‐keys protocol based on elliptic curve cryptography and text‐to‐image encryption algorithm | |
CN113645235A (zh) | 分布式数据加解密系统及加解密方法 | |
CN111565108A (zh) | 签名处理方法、装置及系统 | |
Panda et al. | A modified PKM environment for the security enhancement of IEEE 802.16 e | |
US20200344052A1 (en) | Advanced modular handshake for key agreement and optional authentication | |
CN115834038A (zh) | 基于国家商用密码算法的加密方法及装置 | |
Chakraborty et al. | A pairing-free, one round identity based authenticated key exchange protocol secure against memory-scrapers | |
CN100544248C (zh) | 密钥数据收发方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |