应用于RSA算法生成密钥的外包方法
技术领域
本发明涉及加密解密算法技术领域,特别是涉及一种应用于RSA算法生成密钥的外包方法。
背景技术
密码体制是完成加密和解密功能的密码方案或者密码算法。根据加解密双方使用的密钥是否相同,可以将密码分为对称密码和非对称密码。
RSA算法是一种在多个领域被广泛应用的一种非对称加密的密码算法。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。可以选择两个大素数p和q,其乘积n=pq作为公开的值,用e表示公钥,d表示私钥,其中e、d满足等式这里是欧拉函数值,为了安全性考虑,两个大素数是安全素数,即p=2p′+1,q=2q′+1,其中p′,q′也是大素数。在加密应用中,将生成一个公钥e,一个私钥d,公钥用于加密,私钥用于解密。
该算法应用时,需要选择一个公钥计算一个私钥,然而,私钥生成过程和加密解密过程的计算量是巨大的,在本地计算时可以利用扩展欧几里德的算法求解,扩展欧几里德的算法复杂度是O(log3n)。然而,对于手机等便于携带的智能终端,由于资源受限和计算能力有限等原因,进行这种运算是不实际的。
随着云计算的发展,越来越多的科学家致力于借助云无限的资源和强大的计算能力来解决用户本地所不能进行的计算。在云计算的环境下,比较广泛的应用是外包计算的方案,外包计算方案的目的是用户将昂贵的计算任务交给云来完成,用户向云服务端提供相应的输入,云对其进行计算,将结果输出返回给用户。但云通常由云服务提供商提供,云可能是不安全的,用户外包的数据会包括用户的一些敏感信息,因此在外包计算方案中,就需要考虑外包数据的隐私性、安全性。
现有技术中,假设用户C,服务器S,用户选择一个计算的任务函数和函数输入,其目的是计算该函数在这个制定输入中的值。即函数为f,输入是x,希望计算的值是f(x)。为了保护数据的隐私性,用户将x盲化为σx,函数f和输入σx被传送给服务器。服务器计算σy=f(σx),并将结果返回给用户,用户根据服务器返回的值恢复希望得到的结果。
可以看到,在上述外包方案中,实现了输入数据的保护,但对于函数f方案中并没有保护,而是直接传递给云。对于RSA算法,私钥生成过程中需要进行一次模的求逆计算,是不可以被云知道的,但是如果利用上述方案,对函数描述的过程中会将的值不经任何保护地传送给云,显然这样会使得外包方案不安全,因此该方案不能很好的应用于RSA算法的密钥生成的外包。
发明内容
本发明的目的是提供一种应用于RSA算法生成密钥的外包方法,将RSA算法生成密钥的计算公式以同余方程组描述,并基于中国剩余定理,将原计算方法对模的一次求逆计算转化成不同的模逆计算,将不同的模逆计算外包给不同云服务器,达到保护模的目的。
为实现上述目的,本发明提供如下技术方案:
一种应用于RSA算法生成密钥的外包方法,包括步骤:
S1:以一次同余方程组描述RSA算法生成密钥的计算公式,根据中国剩余定理获得所述同余方程组的求解式,所述求解式中包含关于第一模元素的第一类模逆求解式,以及关于第二模元素的第二类模逆求解式,所述第一模元素和所述第二模元素为两个素数;
S2:将所述第一模元素、所述第一类模逆求解式的输入发送给第一云服务器进行计算,将所述第二模元素、所述第二类模逆求解式的输入发送给第二云服务器进行计算;
S3:根据所述第一云服务器返回的第一类模逆计算结果、所述第二云服务器返回的第二类模逆计算结果,以及本地计算获得的求解因子,基于所述求解式计算密钥。
可选地,所述步骤S2具体包括:
S20:通过将所述第一类模逆求解式的输入、所述第二类模逆求解式的输入分别与随机值进行模乘运算,分别对所述第一类模逆求解式的输入、所述第二类模逆求解式的输入进行盲化计算;
S21:将所述第一模元素、盲化后的所述第一类模逆求解式的输入发送给所述第一云服务器进行计算,将所述第二模元素、盲化后的所述第二类模逆求解式的输入发送给所述第二云服务器进行计算。
可选地,所述步骤S3具体包括:
S31:通过将所述第一类模逆计算结果、所述第二类模逆计算结果与相应的随机值进行模乘运算,对应恢复得到第一类求解因子、第二类求解因子;
S32:根据所述第一类求解因子、所述第二类求解因子以及本地计算的求解因子,根据所述求解式计算密钥。
可选地,所述步骤S31之前还包括:
通过将所述的盲化后的第一类模逆求解式的输入和所述第一类模逆计算结果进行模乘运算,检测所述第一类模逆计算结果是否正确;通过将所述的盲化后的第二类模逆求解式的输入和所述第二类模逆计算结果进行模乘运算,检测所述第二类模逆计算结果是否正确。
可选地,在所述第一类模逆计算结果与所述第二类模逆计算结果均正确时,进行步骤S31。
可选地,所述RSA算法生成密钥的计算公式为:
d≡e-1mod4p′q′,
其中,d为待计算的密钥,e为公钥,p′、q′为两个大素数,分别为第一模元素和第二模元素;
以一次同余方程组描述所述计算公式为:
其中,m1=4,m2=p′,m3=q′,b1=e-1mod4,b2=e-1modp′,b3=e-1mod q′;
根据中国剩余定理获得所述同余方程组的求解式为:
d≡M1M1′b1+M2M2′b2+M3M3′b3mod4p′q′,
其中,m=m1m2m3,MiMi′≡1modmi,所述求解式中包括第一类模逆求解式b2=e-1modp′、M2′=M2 -1modp′,第二类模逆求解式b3=e-1modq′、M3′=M3 -1modq′。
可选地,对所述第一类模逆求解式的输入、所述第二类模逆求解式的输入进行盲化计算,包括:
选择四个随机值τ1、τ2、τ3、τ4,其中τ1、τ3∈Zp′ *,τ2、τ4∈Zq′ *;
进行盲化计算,包括:
A=e×τ1modp′,B=e×τ2modq′,C=4q′×τ3modp′,D=4p′×τ4modq′。
可选地,所述第一云服务器返回第一类模逆计算结果A′和C′,所述第二云服务器返回第二类模逆计算结果B′和D′;
检测所述第一类模逆计算结果A′和C′以及第二类模逆计算结果B′和D′是否正确,包括检测以下等式是否成立:
A×A′modp′≡1,B×B′modq′≡1,C×C′modp′≡1,D×D′modq′≡1。
可选地,根据所述第一类模逆计算结果、所述第二类模逆计算结果对应恢复得到第一类求解因子、第二类求解因子,包括:
b2=A′×τ1modp′,M2′=C′×τ3modp′,b3=B′×τ2modq′,M3′=D′×τ4modq′。
由上述技术方案可以看出,本发明所提供的应用于RSA算法生成密钥的外包方法,将RSA算法生成密钥的计算公式转化为一次同余方程组,并根据中国剩余定理获得计算密钥的求解式,求解式中包含关于第一模元素的第一类模逆求解式,以及关于第二模元素的第二类模逆求解式;在外包计算中,将第一模元素、第一类模逆求解式的输入发送给第一云服务器进行计算,将第二模元素、第二类模逆求解式的输入发送给第二云服务器进行计算,最后根据第一云服务器返回的第一类模逆计算结果、第二云服务器返回的第二类模逆计算结果,以及本地计算的求解因子,基于求解式计算密钥。在外包方案中各自云服务器仅知道计算密钥求解式的一个模元素,不能知道密钥计算式中模的具体值,从而实现对模的保护。
本发明应用于RSA算法生成密钥的外包方法,将RSA算法生成密钥的计算公式以同余方程组描述,并基于中国剩余定理获得密钥的求解式,实现对模的一次求逆计算转化为不同的模逆计算,将不同的模逆计算外包给不同云服务器,由不同服务器分别运行不同的模的相关运算,达到了保护模的目的,保证了RSA算法生成密钥外包方案的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用于RSA算法生成密钥的外包方法的流程图;
图2为本发明实施例提供的应用于RSA算法生成密钥的外包方法的架构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
请参考图1,为本发明实施例提供的应用于RSA算法生成密钥的外包方法的流程图,本实施例方法包括步骤:
S1:以一次同余方程组描述RSA算法生成密钥的计算公式,根据中国剩余定理获得所述同余方程组的求解式,所述求解式中包含关于第一模元素的第一类模逆求解式,以及关于第二模元素的第二类模逆求解式,所述第一模元素和所述第二模元素为两个素数;
S2:将所述第一模元素、所述第一类模逆求解式的输入发送给第一云服务器进行计算,将所述第二模元素、所述第二类模逆求解式的输入发送给第二云服务器进行计算;
S3:根据所述第一云服务器返回的第一类模逆计算结果、所述第二云服务器返回的第二类模逆计算结果,以及本地计算获得的求解因子,基于所述求解式计算密钥。
由上述内容可以看出,本实施例应用于RSA算法生成密钥的外包方法,将RSA算法生成密钥的计算公式转化为一次同余方程组,并根据中国剩余定理获得计算密钥的求解式,求解式中包含关于第一模元素的第一类模逆求解式,以及关于第二模元素的第二类模逆求解式;在外包计算中,采用了双服务器模型,由第一云服务器计算关于第一模元素的模逆计算,由第二云服务器计算关于第二模元素的模逆计算,将第一模元素、第一类模逆求解式的输入发送给第一云服务器进行计算,将第二模元素、第二类模逆求解式的输入发送给第二云服务器进行计算,最后根据第一云服务器返回的第一类模逆计算结果、第二云服务器返回的第二类模逆计算结果,以及本地计算的求解因子,基于求解式计算密钥。在外包方案中各自云服务器仅知道计算密钥求解式的一个模元素,不能知道密钥计算式中模的具体值,从而实现对模的保护。
本发明应用于RSA算法生成密钥的外包方法,将RSA算法生成密钥的计算公式以同余方程组描述,并基于中国剩余定理获得密钥的求解式,实现对模的一次求逆计算转化为不同的模逆计算,将不同的模逆计算外包给不同云服务器,由不同服务器分别运行不同的模的相关运算,达到了保护模的目的,保证了RSA算法生成密钥外包方案的安全性。
本实施例应用于RSA算法生成密钥的外包方法中,采用了双服务器模型,参考图2,对于计算密钥,由第一云服务器U1计算关于第一模元素的模逆计算,由第二云服务器U2计算关于第二模元素的模逆计算,将第一模元素、第一类模逆求解式的输入,发送给第一云服务器U1进行计算,第一云服务器U1对应返回计算结果;将第二模元素、第二类模逆求解式的输入,发送给第二云服务器U2进行计算,对应输出计算结果。各自云服务器仅知道计算密钥求解式的一个模元素,不能知道密钥计算式中模的具体值,从而实现对模的保护。
下面对本实施例应用于RSA算法生成密钥的外包方法进行详细描述。本实施例应用于RSA算法生成密钥的外包方法包括以下步骤:
S1:以一次同余方程组描述RSA算法生成密钥的计算公式,根据中国剩余定理获得所述同余方程组的求解式,所述求解式中包含关于第一模元素的第一类模逆求解式,以及关于第二模元素的第二类模逆求解式,所述第一模元素和所述第二模元素为两个素数。
采用RSA算法计算密钥,用e表示公钥,d表示密钥,则其中p、q为两个安全素数,即p=2p′+1,q=2q′+1,p′、q′为两个大素数,可以得出那么生成密钥的计算公式可表示为:
d≡e-1mod4p′q′,
其中,d为待计算的密钥,e为公钥,p′、q′为两个大素数,分别为第一模元素和第二模元素。
以一次同余方程组描述所述计算公式为:
其中,m1=4,m2=p′,m3=q′,b1=e-1mod4,b2=e-1modp′,b3=e-1mod q′。
根据中国剩余定理获得所述同余方程组的求解式为:
d≡M1M1′b1+M2M2′b2+M3M3′b3mod4p′q′,
其中,m=m1m2m3,MiMi′≡1modmi,所述求解式中包括第一类模逆求解式b2=e-1modp′、M2′=M2 -1modp′,第二类模逆求解式b3=e-1modq′、M3′=M3 -1modq′。
所述求解式中还包括求解因子:b1=e-1modp′,M1′=M1 -1mod4,M1=p′q′,M2=4p′,M3=4q′,这些由本地计算。
S2:将所述第一模元素、所述第一类模逆求解式的输入发送给第一云服务器进行计算,将所述第二模元素、所述第二类模逆求解式的输入发送给第二云服务器进行计算。
本实施例中,将RSA算法生成密钥的计算公式转化为同余方程组,根据中国剩余定理获得生成密钥的求解式,转化为模p′和模q′的计算,将模p′和模q′的相关模逆计算分别外包给不同的云服务器进行计算。
本实施例中,该步骤具体包括以下步骤:
S20:通过将所述第一类模逆求解式的输入、所述第二类模逆求解式的输入分别与随机值进行模乘运算,分别对所述第一类模逆求解式的输入、所述第二类模逆求解式的输入进行盲化计算。
对于发送给第一云服务器U1的第一类模逆求解式的输入e、4q′,发送给第二云服务器U2的第二类模逆求解式的输入e、4p′,进行盲化计算。具体包括,选择四个随机值τ1、τ2、τ3、τ4,其中τ1、τ3∈Zp′ *,τ2、τ4∈Zq′ *;进行盲化计算,包括:A=e×τ1modp′,B=e×τ2modq′,C=4q′×τ3modp′,D=4p′×τ4modq′。
S21:将所述第一模元素、盲化后的所述第一类模逆求解式的输入发送给所述第一云服务器进行计算,将所述第二模元素、盲化后的所述第二类模逆求解式的输入发送给所述第二云服务器进行计算。
将A=e×τ1modp′、C=4q′×τ3modp′发送给第一云服务器U1进行计算,将B=e×τ2modq′、D=4p′×τ4modq′发送给第二云服务器U2进行计算,参考图2所示。
本实施例中,在外包计算的过程中,将模求解因式进行盲化才传送给云服务器,对于云服务器不知道输入的真实值。达到了保护输入隐私性的要求。
在其它实施例中,也可采用对模求解因式进行加密的方法,将模求解因式加密后传送给云服务器,达到保护输入隐私性的要求。
S3:根据所述第一云服务器返回的第一类模逆计算结果、所述第二云服务器返回的第二类模逆计算结果,以及本地计算获得的求解因子,基于所述求解式计算密钥。
该步骤具体包括以下步骤:
S30:通过将所述的盲化后的第一类模逆求解式的输入和所述第一类模逆计算结果进行模乘运算,检测所述第一类模逆计算结果是否正确;通过将所述的盲化后的第二类模逆求解式的输入和所述第二类模逆计算结果进行模乘运算,检测所述第二类模逆计算结果是否正确。
本地向第一云服务器提出质询U1(A,p′)→A′,U1(C,p′)→C′,第一云服务器返回第一类模逆计算结果A′和C′,向第二云服务器提出质询U2(B,q′)→B′,U2(C,q′)→C′,第二云服务器返回第二类模逆计算结果B′和D′。
检测所述第一类模逆计算结果A′和C′以及第二类模逆计算结果B′和D′是否正确,包括检测以下等式是否成立:A×A′modp′≡1,B×B′modq′≡1,C×C′modp′≡1,D×D′modq′≡1。
若上述各等式成立,表明返回的计算结果正确,说明云服务器正确地执行了计算。在所述第一类模逆计算结果A′和C′与所述第二类模逆计算结果B′和D′均正确时,进行步骤S31。
S31:通过将所述第一类模逆计算结果、所述第二类模逆计算结果与相应的随机值进行模乘运算,对应恢复得到第一类求解因子、第二类求解因子。
经过上述正确性检测,检测云服务器进行了正确的计算后,则可根据所述第一类模逆计算结果A′和C′、所述第二类模逆计算结果B′和D′对应恢复得到第一类求解因子、第二类求解因子,具体包括:b2=A′×τ1modp′,M2′=C′×τ3modp′,b3=B′×τ2modq′,M3′=D′×τ4modq′。
S32:根据所述第一类求解因子、所述第二类求解因子以及本地计算的求解因子,根据所述求解式计算密钥。具体为:d≡M1M1′b1+M2M2′b2+M3M3′b3mod4p′q′。
因此,本实施例应用于RSA算法生成密钥的外包方法,将RSA算法生成密钥的计算公式转化为同余方程组,根据中国剩余定理获得生成密钥的求解式。将一次模的求逆计算,转化为同余方程组的求解计算,转化为模p′和模q′的计算。将不同模的计算外包给不同的云服务器。外包方案中采用了双服务器模型,对于两个云服务器,分别只知道欧拉函数中的一个因子,不知道其具体值,实现对RSA算法中模的保护,从而保证了生成密钥外包方案的安全性。
本实施例应用于RSA算法生成密钥的外包方法,利用中国剩余定理和双服务器模型,使RSA算法模逆计算中的模得到保护。
以上对本发明所提供的应用于RSA算法生成密钥的外包方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。