CN113704784B - 协同安全计算方法、装置及电子设备 - Google Patents
协同安全计算方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113704784B CN113704784B CN202110967497.4A CN202110967497A CN113704784B CN 113704784 B CN113704784 B CN 113704784B CN 202110967497 A CN202110967497 A CN 202110967497A CN 113704784 B CN113704784 B CN 113704784B
- Authority
- CN
- China
- Prior art keywords
- private key
- target data
- target
- cooperative
- cooperative processing
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Abstract
本说明书实施方式公开了协同安全计算方法、装置及电子设备,涉及信息安全技术领域,其中方法包括:获取目标私钥;对目标私钥进行拆分得到多个私钥分量;将多个私钥分量分配至多个协同处理方;多个协同处理方中的各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果。本方案使得任何一个协同处理方的私钥分量及数据集泄露后,都不能通过泄露的私钥分量和数据得到协同安全计算的结果。
Description
技术领域
本申请涉及信息安全技术领域,特别涉及协同安全计算方法、装置及电子设备。
背景技术
RSA作为一种非对称加密算法,在生产生活各个领域有着广泛的应用。随着近年来各类互联网应用蓬勃发展,基于移动端和PC端的软件安全需求越来越高。在攻击技术持续发展的情况下,应用端并不能很好的保证私钥安全,传统基于私钥运算的签名及解密方式,在没有专用硬件保护的情况下,已经不能满足业务要求。
当前多方协同进行签名及解密等涉及私钥运算的解决方案,集中在基于SM2算法进行双方协同的方式,只提出了SM2算法的解决方案,并没有基于RSA算法的多方协同签名或解密方法。
发明内容
本申请实施方式的目的是提供一种协同安全计算方法、装置及电子设备,以便基于RSA算法实现多方协同签名或解密。
为解决上述技术问题,本说明书第一方面提供了一种协同安全计算方法,包括:获取目标私钥;对所述目标私钥进行拆分得到多个私钥分量;将所述多个私钥分量分配至多个协同处理方;所述多个协同处理方中的各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果。
在一些实施例中,所述获取目标私钥包括:基于RSA算法,计算得到私钥对,其中,所述私钥对包括:第一私钥和第二私钥;其中,所述第二私钥为两个素数的乘积;将所述第一私钥作为目标私钥。
在一些实施例中,所述对所述目标私钥进行拆分得到多个私钥分量,包括:按照以下公式将所述目标私钥拆分为多个私钥分量:d=d1*d2*d3*...*dN(mod((p-1)*(q-1)));其中,d表示目标私钥,N为协同处理方的数量,p和q为第二私钥的两个素数,d1、d2、d3...dN表示私钥分量,私钥分量为正整数。
在一些实施例中,所述当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,包括:按照如下公式对目标数据进行处理:其中,dn为当前的协同处理方自身被分配的私钥分量,mn-1为目标数据,mn为处理结果,n≥1。
在一些实施例中,所述获取目标私钥,对所述目标私钥进行拆分得到多个私钥分量,包括:获取根据RSA-CRT算法生成的私钥组合,所述私钥组合包括以下私钥:p、q、dp、dq、qinv,其中,dp=d mod(p-1),dq=d mod(q-1),p、q为RSA算法中确定的两个素数,d为通过RSA算法得到的私钥,q*qinv与p互质;将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量;或者,将所述私钥组合作为目标私钥,将dp、dq、qinv作为三个私钥分量;相应的,所述当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,包括:当前的协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,并将计算得到的一个或多个参数与目标数据中未参与计算的参数以参数组的形式作为目标数据发送至下一协同处理方;相应的,所述最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,并将处理结果作为协同安全计算结果,包括:最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,得到一个或多个参数,通过所述一个或多个参数与目标数据中未被处理的参数计算得到多项式结果,将多项式结果作为所述协同安全计算结果。
在一些实施例中,所述通过所述一个或多个参数计算得到多项式结果,包括:按照如下公式计算多项式结果:S=(((mp-mq)*qinv)mod p)*q+mq;其中,S表示多项式结果,mq、mq、qinv是经最后一个协同处理方处理后得到的参数。
在一些实施例中,所述将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量,包括:按照以下公式对dp进行拆分:dp=dp1*dp2*dp3*...*dpN(mod(p-1)),其中,N为协同处理方的数量,dp1、dp2、dp3...dpN表示私钥分量;和/或,按照以下公式对dq进行拆分:dq=dq1*dq2*dq3*...*dqN(mod(q-1)),其中,N为协同处理方的数量,dq1、dq2、dq3...dqN表示私钥分量;和/或,按照以下公式对qinv进行拆分:qinv=qinv1*qinv2*qinv3*...*qinvN(mod(q-1)),其中,N为协同处理方的数量,qinv1、qinv2、qinv3...qinvN表示私钥分量。
在一些实施例中,所述当前的协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,包括:按照以下公式计算得到参数:其中,dpn为当前的协同处理方自身被分配的私钥分量,mpn-1为目标数据,mpn为计算得到的参数;和/或,按照以下公式计算得到参数:/>其中,dqn为当前的协同处理方自身被分配的私钥分量,mqn-1为目标数据,mqn为计算得到的参数;和/或,按照以下公式计算得到参数:Qinvn=Qinvn-1*qinvn,其中,qinvn为当前的协同处理方自身被分配的私钥分量,Qinvn-1为目标数据,Qinvn为计算得到的参数。
本说明书第二方面提供了一种协同安全计算方法,包括:获取目标私钥;对所述目标私钥进行拆分得到多个私钥分量;保留一个私钥分量,并将其余私钥分量分配至多个协同处理方;采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,以用于:所述多个协同处理方中的其余各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果。
本说明书第三方面提供了一种协同安全计算方法,包括:获取目标私钥拆分得到的多个私钥分量中的一个私钥分量;获取上一协同处理方采用自身被分配的私钥分量对目标数据进行处理后得到的目标数据;采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方。
本说明书第四方面提供了一种协同安全计算方法,包括:获取目标私钥拆分得到的多个私钥分量中的一个私钥分量;获取上一协同处理方发送的目标数据;其中,所述上一协同处理方采用自身被分配的私钥分量对所获取的目标数据进行处理后,将处理结果作为目标数据发送给下一协同处理方;采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为协同安全计算的结果。
本说明书第五方面提供了一种协同安全计算装置,包括:第一获取模块,用于获取目标私钥;第一拆分模块,用于对所述目标私钥进行拆分得到多个私钥分量;第一分配模块,用于将所述多个私钥分量分配至多个协同处理方;第一处理模块,用于所述多个协同处理方中的各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果。
本说明书第六方面提供了一种协同安全计算装置,包括:第二获取模块,用于获取目标私钥;第二拆分模块,用于对所述目标私钥进行拆分得到多个私钥分量;第二分配模块,用于保留一个私钥分量,并将其余私钥分量分配至其余协同方;第二处理模块,用于采用自身保留的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,以用于:多个协同处理方中的各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果。
本说明书第七方面提供了一种协同安全计算装置,包括:第三获取模块,用于获取目标私钥拆分得到的多个私钥分量中的一个私钥分量;第四获取模块,用于获取上一协同处理方采用自身被分配的私钥分量对目标数据进行处理后得到的目标数据;第三处理模块,用于采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方。
本说明书第八方面提供了一种协同安全计算装置,包括:第五获取模块,用于获取目标私钥拆分得到的多个私钥分量中的一个私钥分量;第六获取模块,用于获取上一协同处理方发送的目标数据;其中,所述上一协同处理方采用自身被分配的私钥分量对所获取的目标数据进行处理后,将处理结果作为目标数据发送给下一协同处理方;第四处理模块,用于采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方。
本说明书第九方面提供了一种电子设备,包括:存储器、处理器和通信模块,所述处理器、所述存储器和所述通信模块之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而实现第一方面至第四方面所述方法的步骤。
本说明书第十方面提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序指令,所述计算机程序指令被执行时实现第一方面至第四方面所所述方法的步骤。
本说明书实施例所提供的协同安全计算方法、装置及电子设备,将私钥拆分为多个私钥分量,并将多个私钥分量分配至多个协同处理方,各协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果发送至下一协同处理方,最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理后,将处理结果作为协同安全计算的结果。由此可以看出,任何一个协同处理方自身被分配的私钥分量及该协同处理方接收或发送的数据集泄露后,都不能通过泄露的私钥分量、接收的数据、发送的数据得到协同安全计算的结果,从而能够提供数据传输的安全性。
附图说明
为了更清楚地说明本申请实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本说明书实施例的一种协同安全计算方法的流程图;
图2示出了根据本说明书实施例的一种协同安全计算方法中各个执行主体所执行的步骤的流程图;
图3示出了基于RSA算法的协同安全计算方法的流程图;
图4示出了基于RSA算法的协同安全计算方法的一个实施例的流程图;
图5示出了基于RSA-CRT算法的协同安全计算方法的流程图;
图6示出了基于RSA-CRT算法的协同安全计算方法的一个实施例的流程图;
图7示出了根据本说明书实施例的一种协同安全计算装置的原理框图;
图8示出了根据本说明书实施例的一种协同安全计算装置中各个执行主体部分的原理框图;
图9示出了根据本说明书实施例的一种电子设备的原理框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都应当属于本申请保护的范围。
在RSA算法中,通过以下步骤生成密钥:S11:选择两个素数p和q。S12:选择两个正整数e和d,使得e*d等于(p-1)*(q-1)的倍数加1。也即e*d被(p-1)*(q-1)除的余数为1。S13:计算K=pq。S14:将(K,e)封装成公钥,将(K,d)封装成私钥。本说明书实施例中的“*”表示乘积运算。
RSA作为一种非对称加密算法,可以用于加解密,以保证传输数据的安全性。在RSA加解密过程中,接收方B生成公钥(K,e)和私钥(K,d),并将公钥公开。发送方A需要向B发送明文时,A采用B的公钥对待发送的明文m进行加密得到密文,B采用自己的私钥对密文进行解密。RSA加解密方式能够保证接收方的唯一性,即只有保存私钥的B才能正确解密。
在加解密过程中,具体的加密方式为:M=m^e mod K,其中,M为密文,m为待发送的明文。解密方式为:m=M^d mod K,其中,M为密文,m为解密后的明文。
RSA还可以用于数字签名,以保证数据传输的发送方和接收方的唯一确定性。在RSA签名与解签过程中,发送方A生成公钥(K,e)和私钥(K,d),并将公钥公开;A需要向接收方B发送数据时,A用自己的私钥对待发送的消息摘要进行加密得到密文(即签名过程),B用A的公钥对密文进行解密得到明文(即解签过程)。RSA签名与解签过程能够保证发送方的唯一性以及接收方的唯一性。
在签名解签过程中,具体的签名过程为:M=m^d mod K,其中,M为密文,m为待发送的明文。解签方式为:m=M^e mod K,其中,M为密文,m为解签后的明文。
由上述可以看出,加解密过程中的“加密”与签名解签过程中的“解签”对数据的处理方式相同,加解密过程中的“解密”与签名解签过程中的“签名”对数据的处理方式相同。
RSA-CRT算法在RSA算法中融入了中国剩余定理(Chinese Remainder Theorem,简称:CRT)。在RSA-CRT算法中,加解密过程中的“加密”也与签名解签过程中的“解签”对数据的处理方式相同,加解密过程中的“解密”也与签名解签过程中的“签名”对数据的处理方式相同。
在RSA-CRT算法中,通过以下步骤生成密钥:S21:选择两个素数p和q。S22:选择两个正整数e和d,使得e*d等于(p-1)*(q-1)的倍数加1。也即e*d被(p-1)*(q-1)除的余数为1。S23:计算K=pq。S24:计算dp=d mod(p-1),dq=d mod(q-1);S25:选取qinv,使得q*qinv=1mod p,也即q*qinv与p互质。S26:将(dp、dq、p、q、qinv)封装为私钥组合,将(K,e)封装成公钥,对外公布。
由此可见,RSA-CRT的公钥与RSA相同,不同之处在于私钥,因此涉及到私钥的“加密”及“解签”运算方式也有所调整,而涉及到公钥的“解密”及“签名”运算方式与RSA算法中相同。
具体地,加解密过程中的“加密”也与签名解签过程中的“解签”的具体方式包括下步骤,其中,在“加密”过程中,c为待发送的明文,S为密文;在“解签”过程中,c为接收到的密文,S为解签后得到的明文。
S31:计算Cp=c mod p、Cq=c mod q;
S32:mp=Cp^dp mod p、mq=Cq^dq mod q;
S33:S=(((mp-mq)*qinv)mod p)*q+mq。
基于上述RSA和RSA-CRT算法,本说明书实施例提供了一种协同安全计算方法,可以用于多个协同处理方协同签名或解密。如图1所示,该方法包括如下步骤:
S110:获取目标私钥。
S120:对目标私钥进行拆分得到多个私钥分量。
当协同处理方的数量为N时,拆分出的私钥分量的数量可以等于N,则为每个协同处理方分配一个私钥分量;拆分出的私钥分量的数量也可以大于N,则有的协同处理方被分配两个或两个以上的私钥分量。拆分出的私钥分量的数量小于N时,有的协同处理方不被分配私钥分量,则不被分配私钥分量的协同处理方实质上不参加协同安全计算,本说明书所提供的协同安全计算方法不讨论这一情形。
S130:将多个私钥分量分配至多个协同处理方。
S140:多个协同处理方中的各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方。
S150:最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果。
上述协同安全计算方法,将私钥拆分为多个私钥分量,并将多个私钥分量分配至多个协同处理方,各协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果发送至下一协同处理方,最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理后,将处理结果作为协同安全计算的结果。由此可以看出,任何一个协同处理方自身被分配的私钥分量及该协同处理方接收或发送的数据集泄露后,都不能通过泄露的私钥分量、接收的数据、发送的数据得到协同安全计算的结果,从而能够提供数据传输的安全性。
具体地,如图2所示,各执行主体可以分别执行以下操作。其中,S211至S213为第一协同处理方所执行的操作;S221至S223为第n协同处理方所执行的操作,其中,2≤n<N,N为协同处理方的数量,例如n为2、3、4、5等,,S231至S233为第N协同处理方所执行的操作。
S211:获取目标私钥。
目标私钥可以是第一协同处理方生成的,也可以是多个协同处理方以外的其他电子设备生成。
S212:对目标私钥进行拆分得到多个私钥分量。
S213:保留一个私钥分量,并将其余私钥分量分配至多个协同处理方。
S214:采用自身保留的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,以用于:多个协同处理方中的其余各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果。
S221:获取目标私钥拆分得到的多个私钥分量中的一个私钥分量。
S222:获取上一协同处理方采用自身被分配的私钥分量对目标数据进行处理后得到的目标数据。
S223:采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方。
S231:获取目标私钥拆分得到的多个私钥分量中的一个私钥分量。
S232:获取上一协同处理方发送的目标数据。
其中,上一协同处理方采用自身被分配的私钥分量对所获取的目标数据进行处理后,将处理结果作为目标数据发送给下一协同处理方。
S233:采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为协同安全计算的结果。
以下具体介绍基于RSA算法的协同安全计算方法,如图3所示,包括如下步骤。
S210:基于RSA算法,计算得到私钥对,其中,私钥对包括:第一私钥和第二私钥;其中,第二私钥为两个素数的乘积。
第一私钥即上述RSA算法中得到的d,第二私钥即上述RSA算法中得到的K,两个素数即上述RSA算法中的p和q。
S220:将第一私钥作为目标私钥。
S230:对目标私钥进行拆分得到多个私钥分量。
S240:将多个私钥分量分配至多个协同处理方,多个协同处理方中的各协同处理方循环执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方。
S250:最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,并将处理结果作为协同安全计算结果。
在步骤S240中,第一个协同处理方所处理的目标数据可以为上述加解密过程中的接收到的数据,即待解密的密文;或者也可以是签名解签过程中的待发送数据,即待签名的明文。
在一些实施例中,步骤S230可以按照以下公式将所述目标私钥拆分为多个私钥分量:d=d1*d2*d3*...*dN(mod((p-1)*(q-1))),其中,d表示目标私钥,N为协同处理方的数量,p和q为第二私钥的两个素数,d1、d2、d3...dN表示私钥分量,私钥分量为正整数。
图4示出了本说明书所提供的协同安全计算方法的一个具体实施例的流程图。其中,服务器的数量为N-1个。该实施例包括如下步骤:
S411:客户端或第三方生成私钥(d,K),以及对应公钥(e,K)。
S412:客户端计算私钥d的N个因子d1与d2~dN,使得d=d1*d2*d3*...*dN(mod((p-1)*(q-1)))。
S413:客户端保留私钥分量d1,私钥分量d2~dN通过安全方式发送给服务端1至服务端N-1。
S414:客户端获取目标数据C。
该目标数据C可以为上述加解密过程中的接收到的数据,即待解密的密文;或者也可以是签名解签过程中的待发送数据,即待签名的明文。
上述图3和图4所示的基于RSA的协同安全计算方法均可以用于解释图1和图2所示的方法。上述图3和图4所示的方法也可以参阅图1和图2所示方法的描述进行理解。
以下具体介绍基于RSA-CRT算法的协同安全计算方法,如图5所示,包括如下步骤。
S510:获取根据RSA-CRT算法生成的私钥组合,所述私钥组合包括以下私钥:p、q、dp、dq、qinv,其中,dp=d mod(p-1),dq=d mod(q-1),p、q为RSA算法中确定的两个素数,d为通过RSA算法得到的私钥,q*qinv与p互质。
私钥组合中的p、q、dp、dq、qinv即为按照上述步骤S21至S26生成的。
S520:将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量;或者,将所述私钥组合作为目标私钥,将dp、dq、qinv作为三个私钥分量。
在一些实施例中,在将dp、dq、qinv中的至少一者进行拆分的情况下,还可以将dp、dq、qinv中未拆分的密钥作为一个私钥分量。
例如,可以仅对dp、dq、qinv中的任意一者进行拆分。可以仅将拆分的结果作为私钥分量,也可以将将未拆分的密钥也作为私钥分量。例如,仅将dp拆分为dp1、dp2、dp3,则可以仅将dp1、dp2、dp3作为私钥分量,也可以将dp1、dp2、dp3、dq作为私钥分量,或者将dp1、dp2、dp3、qinv作为私钥分量,或者将dp1、dp2、dp3、dq、qinv作为私钥分量。
S530:将多个私钥分量分配至多个协同处理方。
在对dp、dq、qinv中的两个参数进行拆分,或者将未拆分的一个参数也作为一个私钥分量时,私钥分配给协同处理方后,一个协同处理方可能只获得一个私钥分量(例如可能是dp对应的一个私钥分量,或者也可能是dq对应的一个私钥分量),也可能获得两个私钥分量,这两个私钥分量对应于两个不同的私钥(例如,一个是dp对应的私钥分量,一个是dq对应的私钥分量)。
在一些实施例中,步骤S530可以包括:将p与dp对应的私钥分量一同分配给协同处理方时,和/或,将q与dq对应的私钥分量一同分配给协同处理方时。
S540:多个协同处理方中的各协同处理方循环执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,并将计算得到的一个或多个参数与目标数据中未参与计算的参数以参数组的形式作为目标数据发送至下一协同处理方。
计算得到的一个或多个参数可以为mp、mq、qinv中的至少一者。
被分配dp对应的私钥分量的协同处理方可以计算得到参数mp,被分配dp对应的私钥分量的协同处理方可以计算得到参数mp,被分配qinv对应的私钥分量的协同处理方可以计算得到参数qinv。此处“dp对应的私钥分量”可以对dp进行拆分得到的私钥分量,以及将dp本身作为的私钥分量。其他涉及文字“对应的私钥分量”的内容可以对应理解。
参数组可以是(mp,mq,qinv,p,q)这种形式,其中,mp可以通过dp计算得到,mq可以通过dq计算得到。协同处理方不确定的参数可以为空或者维持不动,协同处理方对其中一个数据进行修正后,将修正后的数据以覆盖原数据的方式填充在相应位置上。
例如,私钥分量为dp1,dp2,dp3,dq,qinv,分别被分配给五个协同处理方,第一协同处理方采用自身持有的私钥分量dp1计算得到mp1之后,向第二协同处理方发送(mp1,,,,),即其余参数为空;第二协同处理方采用自身持有的私钥分量dp2计算得到mp2之后,向第三协同处理方发送(mp2,,,,);第三协同处理方通过自身持有的私钥分量dp3计算得到mp3之后,向第四协同处理方发送(mp3,,,,);第四协同处理方通过自身持有的私钥分量dq计算得到mq之后,向第五协同处理方发送(mp3,mq,,,);第五协同处理方根据自身持有的私钥分量对参数组进行修正,得到(mp3,mq,qinv,,)。参数组中还有p,q两个参数,这是在生成私钥的时候就已经生成的,可以是发给任一协同处理方并通过其补入参数组中,本申请对于p和q补入参数组的方式不做限定。
S550:最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,得到一个或多个参数,通过所述一个或多个参数与目标数据中未被处理的参数计算得到多项式结果,将多项式结果作为所述协同安全计算结果。
在一些实施例中,步骤S550可以按照如下公式计算多项式结果:S=(((mp-mq)*qinv)mod p)*q+mq;其中,S表示多项式结果,mq、mq、qinv是经最后一个协同处理方处理后得到的参数。
多项式及参数mp、mq、qinv、p、q即为上述步骤S31至S33中的内容。
最后一个协同处理方对目标数据进行处理后,至少可以得到mp、mq和qinv参数,p和q是在生成私钥的时候已经生成的,可以发给任一协同处理方并通过其补入参数组中,从而计算多项式的一方能够获得所有参数,以用于计算多项式的结果。
在一些实施例中,步骤S520可以按照以下公式对dp进行拆分:dp=dp1*dp2*dp3*...*dpN(mod(p-1)),其中,N为协同处理方的数量,dp1、dp2、dp3...dpN表示私钥分量。
步骤S520还可以按照以下公式对dq进行拆分:dq=dq1*dq2*dq3*...*dqN(mod(q-1)),其中,N为协同处理方的数量,dq1、dq2、dq3...dqN表示私钥分量。
步骤S520还可以按照以下公式对qinv进行拆分:qinv=qinv1*qinv2*qinv3*...*qinvN(mod(q-1)),其中,N为协同处理方的数量,qinv1、qinv2、qinv3...qinvN表示私钥分量。
在一些实施例中,步骤S540中,当前的协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数可以按照以下公式计算得到参数:其中,dpn为当前的协同处理方自身被分配的私钥分量,mpn-1为目标数据,mpn为计算得到的参数。
步骤S540中当前的协同处理方还按照以下公式计算得到参数:Qinvn=Qinvn-1*qinvn,其中,qinvn为当前的协同处理方自身被分配的私钥分量,Qinvn-1为目标数据,Qinvn为计算得到的参数。
图6示出了本说明书所提供的协同安全计算方法的一个具体实施例的流程图。其中,服务器的数量为N-1个。该实施例包括如下步骤:
S611:客户端计算dp的因子的N个因子dp1与dp2~dpN,使得dp=dp1*dp2*dp3*...*dpN(mod(p-1))。
S612:客户端保留私钥分量dp1和dq,私钥分量dp2 ~dpN通过安全方式发送给服务端1至服务端N-1。
S613:客户端获取目标数据C。
该目标数据C可以为上述加解密过程中的接收到的数据,即待解密的密文;或者也可以是签名解签过程中的待发送数据,即待签名的明文。
S617:服务器N-1根据计算得到的mpN以及接收到的mq,再获取参数p、q、qinv,根据这些参数计算多项式S=(((mp-mq)*qinv)mod p)*q+mq,将S作为协同安全计算的结果。
上述图5和图6所示的基于RSA-CRT的协同安全计算方法均可以用于解释图1和图2所示的方法。上述图5和图6所示的方法也可以参阅图1和图2所示方法的描述进行理解。
本说明书提供了一种协同安全计算装置,可以用于执行图1所示的协同安全计算方法。如图7所示,该装置包括第一获取模块71、第一拆分模块72、第一分配模块73和第一处理模块74。
第一获取模块71用于获取目标私钥。
第一拆分模块72用于对目标私钥进行拆分得到多个私钥分量。
第一分配模块73用于将多个私钥分量分配至多个协同处理方。
第一处理模块74用于多个协同处理方中的各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果。
本说明书还提供了一种协同安全计算装置,可以用于执行图2中密钥拆分及分配方所执行的操作。如图8所示,该装置包括第二获取模块81、第二拆分模块82、第二分配模块83和第二处理模块84。
第二获取模块81用于获取目标私钥。
第二拆分模块82用于对目标私钥进行拆分得到多个私钥分量。
第二分配模块83用于保留一个私钥分量,并将其余私钥分量分配至多个协同处理方,
第二处理模块84用于采用自身保留的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,以用于:多个协同处理方中的其余各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果。
本说明书还提供了一种协同安全计算装置,可以用于执行图2中第n协同处理方所执行的操作。如图8所示,该装置包括第三获取模块85、第四获取模块86和第三处理模块87。
第三获取模块85用于获取目标私钥拆分得到的多个私钥分量中的一个私钥分量。
第四获取模块86用于获取上一协同处理方采用自身被分配的私钥分量对目标数据进行处理后得到的目标数据。
第三处理模块87用于采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方。
本说明书还提供了一种协同安全计算装置,可以用于执行图2中第n协同处理方所执行的操作。如图8所示,该装置包括第五获取模块88、第六获取模块89和第四处理模块810。
第五获取模块88用于获取目标私钥拆分得到的多个私钥分量中的一个私钥分量。
第六获取模块89用于获取上一协同处理方发送的目标数据;其中,上一协同处理方采用自身被分配的私钥分量对所获取的目标数据进行处理后,将处理结果作为目标数据发送给下一协同处理方。
第四处理模块810用于采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方。
上述协同安全计算装置相关描述及效果可以参阅协同安全计算方法来理解,不再赘述。
本发明实施例还提供了一种电子设备,如图9所示,该电子设备可以包括处理器91、存储器92和通信模块93,其中处理器91、存储器92和通信模块93可以通过总线或者其他方式连接,图9中以通过总线连接为例。
处理器91可以为中央处理器(Central Processing Unit,CPU)。处理器91还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器92作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的协同安全计算方法对应的程序指令/模块(例如,图7所示的第一获取模块71、第一拆分模块72、第一分配模块73和第一处理模块74,或者图8所示的第二获取模块81、第二拆分模块82、第二分配模块83和第二处理模块84,或者图8所示的第三获取模块85、第四获取模块86和第三处理模块87,或者图8所示的第五获取模块88、第六获取模块89和第四处理模块810)。处理器91通过运行存储在存储器92中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的协同安全计算方法。
存储器92可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器91所创建的数据等。此外,存储器92可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器92可选包括相对于处理器91远程设置的存储器,这些远程存储器可以通过网络连接至处理器91。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器92中,当被所述处理器91执行时,执行如图3所示实施例中的协同安全计算方法。
上述电子设备具体细节可以对应参阅图1至图6的实施例中对应的相关描述和效果进行理解,此处不再赘述。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random AccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
在20世纪50年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。
上述实施方式阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式的某些部分的方法。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
Claims (14)
1.一种协同安全计算方法,其特征在于,包括:
获取目标私钥;
对所述目标私钥进行拆分得到多个私钥分量;
将所述多个私钥分量分配至多个协同处理方;
所述多个协同处理方中的各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;
最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果;
所述获取目标私钥包括:
基于RSA算法,计算得到私钥对,其中,所述私钥对包括:第一私钥和第二私钥;其中,所述第二私钥为两个素数的乘积;
将所述第一私钥作为目标私钥;
所述对所述目标私钥进行拆分得到多个私钥分量,包括:
按照以下公式将所述目标私钥拆分为多个私钥分量:
d=d1*d2*d3*...*dN(mod((p-1)*(q-1)))
其中,d表示目标私钥,N为协同处理方的数量,p和q为第二私钥的两个素数,d1、d2、d3...dN表示私钥分量,私钥分量为正整数;
所述当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,包括:
按照如下公式对目标数据进行处理:
mn=mn-1 dn(modK)
其中,dn为当前的协同处理方自身被分配的私钥分量,mn-1为目标数据,mn为处理结果,n≥1,K=pq。
2.一种协同安全计算方法,其特征在于,包括:
获取目标私钥;
对所述目标私钥进行拆分得到多个私钥分量;
将所述多个私钥分量分配至多个协同处理方;
所述多个协同处理方中的各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;
最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果;
所述获取目标私钥,对所述目标私钥进行拆分得到多个私钥分量,包括:
获取根据RSA-CRT算法生成的私钥组合,所述私钥组合包括以下私钥:p、q、dp、dq、qinv,其中,dp=d mod(p-1),dq=d mod(q-1),p、q为RSA算法中确定的两个素数,d为通过RSA算法得到的私钥,q*qinv与p互质;
将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量;或者,将所述私钥组合作为目标私钥,将dp、dq、qinv作为三个私钥分量;
相应的,所述当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,包括:
当前的协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,并将计算得到的一个或多个参数与目标数据中未参与计算的参数以参数组的形式作为目标数据发送至下一协同处理方;
相应的,所述最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,并将处理结果作为协同安全计算结果,包括:
最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,得到一个或多个参数,通过所述一个或多个参数与目标数据中未被处理的参数计算得到多项式结果,将多项式结果作为所述协同安全计算结果。
3.根据权利要求2所述的方法,其特征在于,所述通过所述一个或多个参数计算得到多项式结果,包括:
按照如下公式计算多项式结果:
S=(((mp-mq)*qinv)mod p)*q+mq;
其中,S表示多项式结果,mp、mq、qinv是经最后一个协同处理方处理后得到的参数。
4.根据权利要求2所述的方法,其特征在于,所述将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量,包括:
按照以下公式对dp进行拆分:
dp=dp1*dp2*dp3*...*dpN(mod(p-1)),其中,N为协同处理方的数量,dp1、dp2、dp3...dpN表示私钥分量;
和/或,
按照以下公式对dq进行拆分:dq=dq1*dq2*dq3*...*dqN(mod(q-1)),其中,N为协同处理方的数量,dq1、dq2、dq3...dqN表示私钥分量;
和/或,
按照以下公式对qinv进行拆分:qinv=qinv1*qinv2*qinv3*...*qinvN(mod(q-1)),其中,N为协同处理方的数量,qinv1、qinv2、qinv3...qinvN表示私钥分量。
6.一种协同安全计算方法,其特征在于,包括:
获取目标私钥;
对所述目标私钥进行拆分得到多个私钥分量;
保留一个私钥分量,并将其余私钥分量分配至多个协同处理方;
采用自身保留的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,以用于:所述多个协同处理方中的其余各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果;
其中,所述获取目标私钥包括:
基于RSA算法,计算得到私钥对,其中,所述私钥对包括:第一私钥和第二私钥;其中,所述第二私钥为两个素数的乘积;
将所述第一私钥作为目标私钥;
所述对所述目标私钥进行拆分得到多个私钥分量,包括:
按照以下公式将所述目标私钥拆分为多个私钥分量:
d=d1*d2*d3*...*dN(mod((p-1)*(q-1)))
其中,d表示目标私钥,N为协同处理方的数量,p和q为第二私钥的两个素数,d1、d2、d3...dN表示私钥分量,私钥分量为正整数;
所述当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,包括:
按照如下公式对目标数据进行处理:
mn=mn-1 dn(modK)
其中,dn为当前的协同处理方自身被分配的私钥分量,mn-1为目标数据,mn为处理结果,n≥1,K=pq;
或者,
所述获取目标私钥,对所述目标私钥进行拆分得到多个私钥分量,包括:
获取根据RSA-CRT算法生成的私钥组合,所述私钥组合包括以下私钥:p、q、dp、dq、qinv,其中,dp=d mod(p-1),dq=d mod(q-1),p、q为RSA算法中确定的两个素数,d为通过RSA算法得到的私钥,q*qinv与p互质;
将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量;或者,将所述私钥组合作为目标私钥,将dp、dq、qinv作为三个私钥分量;
相应的,所述当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,包括:
当前的协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,并将计算得到的一个或多个参数与目标数据中未参与计算的参数以参数组的形式作为目标数据发送至下一协同处理方;
相应的,所述最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,并将处理结果作为协同安全计算结果,包括:
最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,得到一个或多个参数,通过所述一个或多个参数与目标数据中未被处理的参数计算得到多项式结果,将多项式结果作为所述协同安全计算结果。
7.一种协同安全计算方法,其特征在于,包括:
获取目标私钥拆分得到的多个私钥分量中的一个私钥分量;
获取上一协同处理方采用自身被分配的私钥分量对目标数据进行处理后得到的目标数据;
采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,以用于最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果;
其中,所述目标私钥通过以下方法获取:
基于RSA算法,计算得到私钥对,其中,所述私钥对包括:第一私钥和第二私钥;其中,所述第二私钥为两个素数的乘积;
将所述第一私钥作为目标私钥;
所述目标私钥按照以下公式拆分得到多个私钥分量:
按照以下公式将所述目标私钥拆分为多个私钥分量:
d=d1*d2*d3*...*dN(mod((p-1)*(q-1)))
其中,d表示目标私钥,N为协同处理方的数量,p和q为第二私钥的两个素数,d1、d2、d3...dN表示私钥分量,私钥分量为正整数;
采用所获取的私钥分量对所获取到的目标数据进行处理,包括:
按照如下公式对目标数据进行处理:
mn=mn-1 dn(modK)
其中,dn为当前的协同处理方自身被分配的私钥分量,mn-1为目标数据,mn为处理结果,n≥1,K=pq;
或者,
所述目标私钥通过以下方法获取:
获取根据RSA-CRT算法生成的私钥组合,所述私钥组合包括以下私钥:p、q、dp、dq、qinv,其中,dp=d mod(p-1),dq=d mod(q-1),p、q为RSA算法中确定的两个素数,d为通过RSA算法得到的私钥,q*qinv与p互质;
将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量;或者,将所述私钥组合作为目标私钥,将dp、dq、qinv作为三个私钥分量;
相应的,采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,包括:
当前的协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,并将计算得到的一个或多个参数与目标数据中未参与计算的参数以参数组的形式作为目标数据发送至下一协同处理方;
相应的,所述最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,并将处理结果作为协同安全计算结果,包括:
最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,得到一个或多个参数,通过所述一个或多个参数与目标数据中未被处理的参数计算得到多项式结果,将多项式结果作为所述协同安全计算结果。
8.一种协同安全计算方法,其特征在于,包括:
获取目标私钥拆分得到的多个私钥分量中的一个私钥分量;
获取上一协同处理方发送的目标数据;其中,所述上一协同处理方采用自身被分配的私钥分量对所获取的目标数据进行处理后,将处理结果作为目标数据发送给下一协同处理方;
采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为协同安全计算的结果;
其中,所述目标私钥通过以下方法获取:
基于RSA算法,计算得到私钥对,其中,所述私钥对包括:第一私钥和第二私钥;其中,所述第二私钥为两个素数的乘积;
将所述第一私钥作为目标私钥;
所述目标私钥按照以下公式拆分得到多个私钥分量:
按照以下公式将所述目标私钥拆分为多个私钥分量:
d=d1*d2*d3*...*dN(mod((p-1)*(q-1)))
其中,d表示目标私钥,N为协同处理方的数量,p和q为第二私钥的两个素数,d1、d2、d3...dN表示私钥分量,私钥分量为正整数;
采用所获取的私钥分量对所获取到的目标数据进行处理,包括:
按照如下公式对目标数据进行处理:
mn=mn-1 dn(modK)
其中,dn为当前的协同处理方自身被分配的私钥分量,mn-1为目标数据,mn为处理结果,n≥1,K=pq;
或者,
所述目标私钥通过以下方法获取:
获取根据RSA-CRT算法生成的私钥组合,所述私钥组合包括以下私钥:p、q、dp、dq、qinv,其中,dp=d mod(p-1),dq=d mod(q-1),p、q为RSA算法中确定的两个素数,d为通过RSA算法得到的私钥,q*qinv与p互质;
将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量;或者,将所述私钥组合作为目标私钥,将dp、dq、qinv作为三个私钥分量;
相应的,所述上一协同处理方采用自身被分配的私钥分量对所获取的目标数据进行处理后,将处理结果作为目标数据发送给下一协同处理方,包括:
上一协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,并将计算得到的一个或多个参数与目标数据中未参与计算的参数以参数组的形式作为目标数据发送至下一协同处理方;
相应的,采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为协同安全计算的结果,包括:
采用自身被分配的私钥分量对接收的目标数据进行处理,得到一个或多个参数,通过所述一个或多个参数与目标数据中未被处理的参数计算得到多项式结果,将多项式结果作为所述协同安全计算结果。
9.一种协同安全计算装置,其特征在于,包括:
第一获取模块,用于获取目标私钥;
第一拆分模块,用于对所述目标私钥进行拆分得到多个私钥分量;
第一分配模块,用于将所述多个私钥分量分配至多个协同处理方;
第一处理模块,用于所述多个协同处理方中的各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果;
其中,所述获取目标私钥包括:
基于RSA算法,计算得到私钥对,其中,所述私钥对包括:第一私钥和第二私钥;其中,所述第二私钥为两个素数的乘积;
将所述第一私钥作为目标私钥;
所述对所述目标私钥进行拆分得到多个私钥分量,包括:
按照以下公式将所述目标私钥拆分为多个私钥分量:
d=d1*d2*d3*...*dN(mod((p-1)*(q-1)))
其中,d表示目标私钥,N为协同处理方的数量,p和q为第二私钥的两个素数,d1、d2、d3...dN表示私钥分量,私钥分量为正整数;
所述当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,包括:
按照如下公式对目标数据进行处理:
其中,dn为当前的协同处理方自身被分配的私钥分量,mn-1为目标数据,mn为处理结果,n≥1,K=pq;
或者,
所述获取目标私钥,对所述目标私钥进行拆分得到多个私钥分量,包括:
获取根据RSA-CRT算法生成的私钥组合,所述私钥组合包括以下私钥:p、q、dp、dq、qinv,其中,dp=d mod(p-1),dq=d mod(q-1),p、q为RSA算法中确定的两个素数,d为通过RSA算法得到的私钥,q*qinv与p互质;
将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量;或者,将所述私钥组合作为目标私钥,将dp、dq、qinv作为三个私钥分量;
相应的,所述当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,包括:
当前的协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,并将计算得到的一个或多个参数与目标数据中未参与计算的参数以参数组的形式作为目标数据发送至下一协同处理方;
相应的,所述最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,并将处理结果作为协同安全计算结果,包括:
最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,得到一个或多个参数,通过所述一个或多个参数与目标数据中未被处理的参数计算得到多项式结果,将多项式结果作为所述协同安全计算结果。
10.一种协同安全计算装置,其特征在于,包括:
第二获取模块,用于获取目标私钥;
第二拆分模块,用于对所述目标私钥进行拆分得到多个私钥分量;
第二分配模块,用于保留一个私钥分量,并将其余私钥分量分配至其余协同方;
第二处理模块,用于采用自身保留的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,以用于:多个协同处理方中的各协同处理方执行如下操作直至倒数第二个协同处理方执行完成:当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方;最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果;
其中,所述获取目标私钥包括:
基于RSA算法,计算得到私钥对,其中,所述私钥对包括:第一私钥和第二私钥;其中,所述第二私钥为两个素数的乘积;
将所述第一私钥作为目标私钥;
所述对所述目标私钥进行拆分得到多个私钥分量,包括:
按照以下公式将所述目标私钥拆分为多个私钥分量:
d=d1*d2*d3*...*dN(mod((p-1)*(q-1)))
其中,d表示目标私钥,N为协同处理方的数量,p和q为第二私钥的两个素数,d1、d2、d3...dN表示私钥分量,私钥分量为正整数;
所述当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,包括:
按照如下公式对目标数据进行处理:
其中,dn为当前的协同处理方自身被分配的私钥分量,mn-1为目标数据,mn为处理结果,n≥1,K=pq;
或者,
所述获取目标私钥,对所述目标私钥进行拆分得到多个私钥分量,包括:
获取根据RSA-CRT算法生成的私钥组合,所述私钥组合包括以下私钥:p、q、dp、dq、qinv,其中,dp=d mod(p-1),dq=d mod(q-1),p、q为RSA算法中确定的两个素数,d为通过RSA算法得到的私钥,q*qinv与p互质;
将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量;或者,将所述私钥组合作为目标私钥,将dp、dq、qinv作为三个私钥分量;
相应的,所述当前的协同处理方采用自身被分配的私钥分量对目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,包括:
当前的协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,并将计算得到的一个或多个参数与目标数据中未参与计算的参数以参数组的形式作为目标数据发送至下一协同处理方;
相应的,所述最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,并将处理结果作为协同安全计算结果,包括:
最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,得到一个或多个参数,通过所述一个或多个参数与目标数据中未被处理的参数计算得到多项式结果,将多项式结果作为所述协同安全计算结果。
11.一种协同安全计算装置,其特征在于,包括:
第三获取模块,用于获取目标私钥拆分得到的多个私钥分量中的一个私钥分量;
第四获取模块,用于获取上一协同处理方采用自身被分配的私钥分量对目标数据进行处理后得到的目标数据;
第三处理模块,用于采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,以用于最后一个协同处理方采用自身被分配的私钥分量对接收到的目标数据进行处理,并将处理结果作为协同安全计算结果;
其中,所述目标私钥通过以下方法获取:
基于RSA算法,计算得到私钥对,其中,所述私钥对包括:第一私钥和第二私钥;其中,所述第二私钥为两个素数的乘积;
将所述第一私钥作为目标私钥;
所述目标私钥按照以下公式拆分得到多个私钥分量:
按照以下公式将所述目标私钥拆分为多个私钥分量:
d=d1*d2*d3*...*dN(mod((p-1)*(q-1)))
其中,d表示目标私钥,N为协同处理方的数量,p和q为第二私钥的两个素数,d1、d2、d3...dN表示私钥分量,私钥分量为正整数;
采用所获取的私钥分量对所获取到的目标数据进行处理,包括:
按照如下公式对目标数据进行处理:
其中,dn为当前的协同处理方自身被分配的私钥分量,mn-1为目标数据,mn为处理结果,n≥1,K=pq;
或者,
所述目标私钥通过以下方法获取:
获取根据RSA-CRT算法生成的私钥组合,所述私钥组合包括以下私钥:p、q、dp、dq、qinv,其中,dp=d mod(p-1),dq=d mod(q-1),p、q为RSA算法中确定的两个素数,d为通过RSA算法得到的私钥,q*qinv与p互质;
将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量;或者,将所述私钥组合作为目标私钥,将dp、dq、qinv作为三个私钥分量;
相应的,采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为目标数据发送至下一协同处理方,包括:
当前的协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,并将计算得到的一个或多个参数与目标数据中未参与计算的参数以参数组的形式作为目标数据发送至下一协同处理方;
相应的,所述最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,并将处理结果作为协同安全计算结果,包括:
最后一个协同处理方采用自身被分配的私钥分量对接收的目标数据进行处理,得到一个或多个参数,通过所述一个或多个参数与目标数据中未被处理的参数计算得到多项式结果,将多项式结果作为所述协同安全计算结果。
12.一种协同安全计算装置,其特征在于,包括:
第五获取模块,用于获取目标私钥拆分得到的多个私钥分量中的一个私钥分量;
第六获取模块,用于获取上一协同处理方发送的目标数据;其中,所述上一协同处理方采用自身被分配的私钥分量对所获取的目标数据进行处理后,将处理结果作为目标数据发送给下一协同处理方;
第四处理模块,用于采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为协同安全计算的结果;
其中,所述目标私钥通过以下方法获取:
基于RSA算法,计算得到私钥对,其中,所述私钥对包括:第一私钥和第二私钥;其中,所述第二私钥为两个素数的乘积;
将所述第一私钥作为目标私钥;
所述目标私钥按照以下公式拆分得到多个私钥分量:
按照以下公式将所述目标私钥拆分为多个私钥分量:
d=d1*d2*d3*...*dN(mod((p-1)*(q-1)))
其中,d表示目标私钥,N为协同处理方的数量,p和q为第二私钥的两个素数,d1、d2、d3...dN表示私钥分量,私钥分量为正整数;
采用所获取的私钥分量对所获取到的目标数据进行处理,包括:
按照如下公式对目标数据进行处理:
其中,dn为当前的协同处理方自身被分配的私钥分量,mn-1为目标数据,mn为处理结果,n≥1,K=pq;
或者,
所述目标私钥通过以下方法获取:
获取根据RSA-CRT算法生成的私钥组合,所述私钥组合包括以下私钥:p、q、dp、dq、qinv,其中,dp=d mod(p-1),dq=d mod(q-1),p、q为RSA算法中确定的两个素数,d为通过RSA算法得到的私钥,q*qinv与p互质;
将dp、dq、qinv中的至少一者作为所述目标私钥进行拆分,得到多个私钥分量;或者,将所述私钥组合作为目标私钥,将dp、dq、qinv作为三个私钥分量;
相应的,所述上一协同处理方采用自身被分配的私钥分量对所获取的目标数据进行处理后,将处理结果作为目标数据发送给下一协同处理方,包括:
上一协同处理方采用目标数据和自身被分配的私钥分量计算得到一个或多个参数,并将计算得到的一个或多个参数与目标数据中未参与计算的参数以参数组的形式作为目标数据发送至下一协同处理方;
相应的,采用所获取的私钥分量对所获取到的目标数据进行处理,并将处理结果作为协同安全计算的结果,包括:
采用自身被分配的私钥分量对接收的目标数据进行处理,得到一个或多个参数,通过所述一个或多个参数与目标数据中未被处理的参数计算得到多项式结果,将多项式结果作为所述协同安全计算结果。
13.一种电子设备,其特征在于,包括:
存储器、处理器和通信模块,所述处理器、所述存储器和所述通信模块之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而实现权利要求1至8任一项所述方法的步骤。
14.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序指令,所述计算机程序指令被处理器执行时实现权利要求1至8任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110967497.4A CN113704784B (zh) | 2021-08-23 | 2021-08-23 | 协同安全计算方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110967497.4A CN113704784B (zh) | 2021-08-23 | 2021-08-23 | 协同安全计算方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113704784A CN113704784A (zh) | 2021-11-26 |
CN113704784B true CN113704784B (zh) | 2023-06-16 |
Family
ID=78653978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110967497.4A Active CN113704784B (zh) | 2021-08-23 | 2021-08-23 | 协同安全计算方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113704784B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113922958B (zh) * | 2021-12-15 | 2022-03-11 | 深圳市财富趋势科技股份有限公司 | 基于生物识别和sm2协同密码算法的密码保护方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105515754A (zh) * | 2016-01-06 | 2016-04-20 | 飞天诚信科技股份有限公司 | 一种rsa-crt签名方法及装置 |
CN111211911A (zh) * | 2019-12-31 | 2020-05-29 | 支付宝(杭州)信息技术有限公司 | 一种协同签名方法、装置、设备及系统 |
CN111639345A (zh) * | 2019-03-01 | 2020-09-08 | 王伟 | 基于同态加密的安全的多方云计算的方法和系统 |
CN113014386A (zh) * | 2021-03-30 | 2021-06-22 | 宋煜 | 基于多方协同计算的密码系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515080B2 (en) * | 2007-12-19 | 2013-08-20 | International Business Machines Corporation | Method, system, and computer program product for encryption key management in a secure processor vault |
-
2021
- 2021-08-23 CN CN202110967497.4A patent/CN113704784B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105515754A (zh) * | 2016-01-06 | 2016-04-20 | 飞天诚信科技股份有限公司 | 一种rsa-crt签名方法及装置 |
CN111639345A (zh) * | 2019-03-01 | 2020-09-08 | 王伟 | 基于同态加密的安全的多方云计算的方法和系统 |
CN111211911A (zh) * | 2019-12-31 | 2020-05-29 | 支付宝(杭州)信息技术有限公司 | 一种协同签名方法、装置、设备及系统 |
CN113014386A (zh) * | 2021-03-30 | 2021-06-22 | 宋煜 | 基于多方协同计算的密码系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113704784A (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11784801B2 (en) | Key management method and related device | |
US6154541A (en) | Method and apparatus for a robust high-speed cryptosystem | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
US20140294177A1 (en) | Identity based public key cryptosystem | |
CN111404952B (zh) | 变电站数据加密传输方法、装置、计算机设备和存储介质 | |
CN113742670B (zh) | 多方协同解密方法和装置 | |
CN112906038B (zh) | 基于sm9密钥的门限化处理方法、装置、设备及存储介质 | |
US10567158B2 (en) | Cryptographic device and an encoding device | |
CN109743166B (zh) | 多方签名生成方法及安全信息验证系统 | |
CN113704784B (zh) | 协同安全计算方法、装置及电子设备 | |
Muhammad et al. | Loop-based RSA key generation algorithm using string identity | |
JP7229778B2 (ja) | 鍵管理システム及び方法 | |
Iavich et al. | Comparison and hybrid implementation of blowfish, twofish and rsa cryptosystems | |
Kara et al. | A Probabilistic Public-Key Encryption with Ensuring Data Integrity in Cloud Computing | |
US8707042B2 (en) | Sharing keys between cooperating parties | |
US10511434B2 (en) | Method and encryption node for encrypting message | |
CN112926075B (zh) | 一种sm9密钥生成方法、装置、设备及存储介质 | |
CN109428876B (zh) | 一种握手连接方法及装置 | |
Dawson et al. | An enhanced RSA algorithm using Gaussian interpolation formula | |
CN114362912A (zh) | 基于分布式密钥中心的标识密码生成方法、电子设备及介质 | |
CN110943826B (zh) | 一种基于sm2算法的拆分密钥签名方法与系统 | |
US11616994B2 (en) | Embedding information in elliptic curve base point | |
CN117201170B (zh) | 一种增强非对称加密算法安全性的方法 | |
CN117134900A (zh) | 一种实现非对称加密的结构及控制方法 | |
CN115632768A (zh) | 一种可支持批量审计的解密外包Twin-SM9密钥封装系统及方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |