一种改进的包含秘密的数的生成方法及系统技术方案

技术编号:20394582 阅读:31 留言:0更新日期:2019-02-20 04:48
发明专利技术为包含秘密的数的生成方法:装置1有秘密g1、w1,装置2有秘密g2、w2;装置1在[1,n‑1]内任选整数a1、a2且(a1a2)mod n=1,计算s0=E((a1w1 )mod n),s1=(a1w1g1)mod n;装置1将s0、s1发送给装置2;装置2在[1,n‑1]内任选整数b1、b2且(b1+b2)mod n=0,计算s2=((((w2g2)mod n)+z1n)⊙s0)⊕E(z2n+b1),s3=(w2s1+b2)mod n;装置2将s2、s3发送给装置1;装置1计算c=a2(s3+D(s2))mod n;E(·)、D(·)分别是用装置1的密钥的加法同态加密的加密、解密运算。

【技术实现步骤摘要】
一种改进的包含秘密的数的生成方法及系统
本专利技术属于信息安全
,特别是一种改进了的包含秘密的数的生成方法及系统。
技术介绍
在实际应用中,尤其是密码应用中,有可能需要在不暴露两个装置(系统)的秘密的情况下计算得到c=w1w2(g1+g2)modn,这里,g1、w1是其中一个装置(系统)的秘密,g2、w2是另一个装置的秘密,n是一个素数,modn表示求模n余数运算,它的运算优先级最低。针对此问题,本专利申请的专利技术人在专利申请“包含秘密的数和椭圆曲线点的生成方法及系统”(专利申请号:201710984613.7)中提出了相应的技术方案,方案采用了同态加密算法。但此专利申请中的方案也存在不足:计算比较复杂,比如,同态加密的加密运算次数较多,且需要两次判断采用同态加密算法加密后的数是否为0的加密结果,这些都降低了计算效率。
技术实现思路
本专利技术的目的是提出一种改进的包含秘密的数据的生成方法,以克服现有技术方案的不足。本专利技术提出的改进的包含秘密的数的生成方法具体如下。所述包含秘密的数的生成方法涉及被称为第一装置和第二装置的两个装置,其中,第一装置有[1,n-1]中的整数秘密g1、w1,第二装置有[1,n-1]中的整数秘密g2、w2,n是一个素数(这里g1和w1,g2和w2,可能相关,也可能不相关);所述第一装置、第二装置按如下方式计算得到包含秘密g1、w1、g2、w2的数c=w1w2(g1+g2)modn:第一装置在[1,n-1]内随机选择整数a1、a2(两个各中的一个是随机选的,另一个计算得到),且使得(a1a2)modn=1;第一装置计算s0=E((a1w1)modn),s1=(a1w1g1)modn,其中,E(·)是使用第一装置的公钥的加法同态加密的加密运算;第一装置将s0、s1发送给第二装置;第二装置检查s0是否是0的加密结果,检查s1是否为0,若s0是0的加密结果,或者s1为0,则终止后续操作,否则,继续后续操作;第二装置在[1,n-1]内随机选择整数b1、b2(两个数中一个是随机选择的,另一个是计算得到的),且使得(b1+b2)modn=0,然后计算s2=((((w2g2)modn)+z1n)⊙s0)⊕E(z2n+b1),s3=(w2s1+b2)modn;第二装置将s2、s3发送给第一装置;第一装置接收到s2、s3后,计算s4=D(s2),其中D(·)是使用第一装置的私钥的加法同态加密的解密运算;第一装置检查s3和s4是否为0,若s3或s4为0,则终止后续操作,否则,继续后续操作;第一装置计算c=(a2(s3+s4))modn;在以上计算过程中,⊕表示同态加密的密文数的加运算(对应相应明文数相加后的加密结果),⊙表示同态加密中的明文数与密文数的乘运算(对应多个相同密文数的⊕累加);z1、z2是只有第二装置知道的整数;以上过程中所使用的加法同态加密针对被加密的明文数进行运算所对应的模m大于n。在以上所述包含秘密的数的生成方法中,z1是第二装置随机选择的整数,或者按预定的规则选择的整数,或者固定选择的整数(包括固定取值0),而所述z2是第二装置随机选择的整数;所述z1、z2的取值范围不限于[1,n-1],且z1、z2的取值是整数(可正、可负,可为0);当s0对应的明文数(即(a1w1)modn)的取值在[1,n-1]范围内时,z1、z2的取值使得s2对应的明文数不超出加法同态加密的明文数的补码的表示范围,或者使得s2对应的明文数超出加法同态加密的明文数的补码的表示范围的概率极小(具体应用中可接受的概率)。对于以上所述包含秘密的数的生成方法:若每次计算时w2的取值是[1,n-1]中的随机数,则第二装置无需检查s0是否是0的加密结果(当然,继续进行检查也无妨)。这里所说的每次c计算,既包括一次完整的、正确的c计算,也包括在一次c计算过程中出现了错误时,重新进行的一次c计算。完成c的计算后,需通过一定的方式,验证c的有效性,从而确定c是预期的计算结果(即确定它确实是w1w2(g1+g2)modn);若c是用于生成其他数据的,则需通过一定的方式,验证由c生成的数据的有效性,从而确定由c生成的数据是预期的结果。在有些情况下,第一装置在(向调用方)返回或发布c前,或者在返回或发布由c生成的数据前,必须在不暴露自身秘密的情况下验证c的有效性,从而确定c是预期的计算结果,或者验证由c生成的数据的有效性,从而确定由c生成的数据是预期的结果;而在有些情况下,这种验证操作不必在第一装置返回或发布c前,或者不必在第一装置返回或发布由c生成的数据前进行。若第一装置之外的其他装置或系统(其中包括第二装置)能够获得c或能够从由c生成的数据中获解c(即通过一定的方式从由c生成的数据中计算得到c),而且每次计算c时(w1g1)modn的取值不是[1,n-1]中的随机数,则第一装置在返回或发布c前,或者在第一装置返回或发布由c生成的数据前,必须在不暴露自身秘密的情况下验证c的有效性或验证由c生成的数据的有效性。若第一装置之外的其他装置和系统(其中包括第二装置)不能够获得c也不能够从由c生成的数据中获解c,或者每次计算c时(w1g1)modn的取值是[1,n-1]中的随机数,则验证c的有效性的操作不必在第一装置返回或发布c前进行,验证由c生成的数据的有效性的操作不必在第一装置返回或发布由c生成的数据前进行。若第一装置之外的其他装置和系统(其中包括第二装置)不能够获得c也不能够从由c生成的数据中获解c,且从(w1g1)modn的值无法获解秘密w1和g1,则每次计算c时a1、a2被允许是非保密的数(而且a1、a2都为1也是允许的)(若w1、g1采用的取值方式使得从第二装置的角度,(w1g1)modn的计算式不包含未知量,或者包含的未知量的个数大于等于2,则从(w1g1)modn的值无法获解秘密w1和g1;而若w1、g1采取的取值方式,使得从第二装置的角度,(w1g1)modn计算式包含的未知量个数恰好为1,则从(w1g1)modn的值有可能获解秘密w1和g1,实施例7即为这种可获解秘密w1和g1的情形)。若第一装置之外的其他装置和系统(其中包括第二装置)能够获得c,或者能够从由c生成的数据中获解c,且(w1g1)modn计算式是已知常数(即从第二装置的角度,(w1g1)modn计算式不包含未知量),则所述包含秘密的数的生成方法不适用。以上所述包含秘密的数的生成方法可以扩展为第一装置、第二装置计算得到包含秘密g1、w1、g2、w2,以及已知常数h的数c=(w1w2(g1+g2+h))modn:第一装置以(g1+h)modn作为新的g1,然后第一装置使用新的g1、与第二装置按前述包含秘密的数的生成方法计算得到c=(w1w2(g1+g2))modn,则计算得到的c即为所求;或者,第二装置以(g2+h)modn作为新的g2,然后第二装置使用新的g2、与第一装置按前述包含秘密的数的生成方法计算得到c=(w1w2(g1+g2))modn,则计算得到的c即为所求。以上包含秘密的数的生成方法可以扩展到三方的情形,具体如下:在第一装置、第二装置之外,还有第三装置,第三装置有[1,n-1]中的整数秘密g3、w3(这里g3和w3可能相关,也可能不相关)本文档来自技高网...

【技术保护点】
1.一种包含秘密的数的生成方法,其特征是:所述包含秘密的数的生成方法涉及被称为第一装置和第二装置的两个装置,其中,第一装置有[1,n‑1]中的整数秘密g1、w1,第二装置有[1,n‑1]中的整数秘密g2、w2,n是一个素数;所述第一装置、第二装置按如下方式计算得到包含秘密g1、w1、g2、w2的数c=w1w2(g1+g2)mod n:第一装置在[1,n‑1]内随机选择整数a1、a2,且使得(a1a2)mod n=1;第一装置计算s0=E((a1w1)mod n),s1=(a1w1g1)mod n,其中,E(·)是使用第一装置的公钥的加法同态加密的加密运算;第一装置将s0、s1发送给第二装置;第二装置检查s0是否是0的加密结果,检查s1是否为0,若s0是0的加密结果,或者s1为0,则终止后续操作,否则,继续后续操作;第二装置在[1,n‑1]内随机选择整数b1、b2,且使得(b1+b2)mod n=0,然后计算s2=((((w2g2)mod n)+z1n)⊙s0)⊕E(z2n+b1),s3=(w2s1+b2)mod n;第二装置将s2、s3发送给第一装置;第一装置接收到s2、s3后,计算s4=D(s2),其中D(·)是使用第一装置的私钥的加法同态加密的解密运算;第一装置检查s3和s4是否为0,若s3或s4为0,则终止后续操作,否则,继续后续操作;第一装置计算c=(a2(s3+s4))mod n;在以上计算过程中,⊕表示同态加密的密文数的加运算,⊙表示同态加密中的明文数与密文数的乘运算;z1、z2是只有第二装置知道的整数;以上过程中所使用的加法同态加密针对被加密的明文数进行运算所对应的模m大于n。...

【技术特征摘要】
1.一种包含秘密的数的生成方法,其特征是:所述包含秘密的数的生成方法涉及被称为第一装置和第二装置的两个装置,其中,第一装置有[1,n-1]中的整数秘密g1、w1,第二装置有[1,n-1]中的整数秘密g2、w2,n是一个素数;所述第一装置、第二装置按如下方式计算得到包含秘密g1、w1、g2、w2的数c=w1w2(g1+g2)modn:第一装置在[1,n-1]内随机选择整数a1、a2,且使得(a1a2)modn=1;第一装置计算s0=E((a1w1)modn),s1=(a1w1g1)modn,其中,E(·)是使用第一装置的公钥的加法同态加密的加密运算;第一装置将s0、s1发送给第二装置;第二装置检查s0是否是0的加密结果,检查s1是否为0,若s0是0的加密结果,或者s1为0,则终止后续操作,否则,继续后续操作;第二装置在[1,n-1]内随机选择整数b1、b2,且使得(b1+b2)modn=0,然后计算s2=((((w2g2)modn)+z1n)⊙s0)⊕E(z2n+b1),s3=(w2s1+b2)modn;第二装置将s2、s3发送给第一装置;第一装置接收到s2、s3后,计算s4=D(s2),其中D(·)是使用第一装置的私钥的加法同态加密的解密运算;第一装置检查s3和s4是否为0,若s3或s4为0,则终止后续操作,否则,继续后续操作;第一装置计算c=(a2(s3+s4))modn;在以上计算过程中,⊕表示同态加密的密文数的加运算,⊙表示同态加密中的明文数与密文数的乘运算;z1、z2是只有第二装置知道的整数;以上过程中所使用的加法同态加密针对被加密的明文数进行运算所对应的模m大于n。2.根据要求1所述的包含秘密的数的生成方法,其特征是:所述z1是第二装置随机选择的整数,或者按预定的规则选择的整数,或者固定选择的整数,而所述z2是第二装置随机选择的整数;所述z1、z2的取值范围不限于[1,n-1],且z1、z2的取值是整数;当s0对应的明文数的取值在[1,n-1]范围内时,z1、z2的取值使得s2对应的明文数不超出加法同态加密的明文数的补码的表示范围,或者使得s2对应的明文数超出加法同态加密的明文数的补码的表示范围的概率极小,所述概率极小指具体应用中所确定的允许的概率。3.根据要求1所述的包含秘密的数的生成方法,其特征是:若每次计算时w2的取值是[1,n-1]中的随机数,则第二装置无需检查s0是否是0的加密结果。4.根据要求1所述的包含秘密的数的生成方法,其特征是:若第一装置之外的其他装置或系统能够获得c或能够从由c生成的数据中获解c,而且每次计算c时(w1g1)modn的取值不是[1,n-1]中的随机数,则第一装置在返回或发布c前,或者在第一装置返回或发布由c生成的数据前,必须在不暴露自身秘密的情况下验证c的有效性或验证由c生成的数据的有效性。5.根据要求1所述的包含秘密的数的生成方法,其特征是:若第一装置之外的其他装置和系统不能够获得c也不能够从由c生成的数据中获解c,或者每次计算c时(w1g1)modn的取值是[1,n-1]中的随机数,则验证c的有效性的操作不...

【专利技术属性】
技术研发人员:龙毅宏
申请(专利权)人:武汉理工大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1