一种借助同态加密的包含秘密的数的协同生成方法及系统与流程

文档序号:19019680发布日期:2019-11-01 20:32阅读:358来源:国知局

本发明属于信息安全技术领域,特别是一种借助同态加密的包含秘密的数的协同生成方法及系统。



背景技术:

在实际应用中,尤其是密码应用中,比如,基于秘密共享的sm2、sm9数字签名协同生成中,以及sm9私钥的分割生成中,常常需要在不暴露两个装置的秘密的情况下计算得到c=(w1w2+g1g2)modn,其中,g1、w1是一个装置在[1,n-1]内的整数秘密,g2、w2是另一个装置在[1,n-1]内的整数秘密,n是一个素数,modn表示求模n余数运算(它的运算优先级最低),但是,要做到这点并非一件容易的事件(比看上去的要难)。



技术实现要素:

本发明的目的是提出一种包含秘密的数c=(w1w2+g1g2)modn的协同生成方法及系统,以满足实际应用的需求,其中g1、w1是一个装置(一方)在在[1,n-1]内的秘密,g2、w2是另一个装置(另一方)在[1,n-1]内的秘密,n是一个素数。

针对此目的,本发明提出的技术方案是一种借助同态加密的包含秘密的数的协同生成方法,以及相应的系统,其中,借助同态加密的包含秘密的数的协同生成方法具体如下。

所述包含秘密的数的协同生成方法涉及被称为第一装置和第二装置的两个装置;

第一装置有[1,n-1]中的整数秘密g1、w1,第二装置有[1,n-1]中的整数秘密g2、w2,n是一个素数(g1、w1、g2、w2不必是常数,也不必是每次计算时的随机数);

第一装置之外的装置从aw1+bg1的值无法得到g1、w1(的正确值),其中a、b是第一装置之外的装置知道的[1,n-1]中的任意整数;

第二装置之外的装置从uw2+vg2的值无法得到g2、w2(的正确值),其中u、v是第二装置之外的装置知道的[1,n-1]中的任意整数;

所述第一装置、第二装置按如下方式协同计算得到包含秘密g1、w1、g2、w2的数c=(w1w2+g1g2)modn:

第二装置计算s0=e(((w2)-1g2)modn),并将s0发送给第一装置,其中e(·)表示使用第二装置公钥的加法同态加密的加密运算,(w2)-1是w2的模n乘法逆(即((w2)-1w2)modn=1);

第一装置检查s0是否为0的加密结果,若不是,则继续,否则,报错(包括确定s0是0的加密结果,或者不能确定s0不是0的加密结果的情形);

第一装置在[1,n-1]内随机选择一个整数a1;

第一装置计算s1=e(w1+z2n)⊕((a1+z1n)⊙s0),s2=(g1-a1)modn;

第一装置将s1、s2发送给第二装置;

第二装置解密s1得到s3=d(s1)modn,其中d(·)表示使用第二装置私钥的加法同态加密的解密运算;

第二装置检查s2和s3是否为0,若s2或s3为0,则报错,否则,第二装置计算c=(w2s3+g2s2)modn,则c即为所求;

在以上计算过程中,⊕表示同态加密的密文数的加运算(对应相应明文数相加后的加密结果),⊙表示同态加密中的明文数与密文数的乘运算(对应多个相同密文数的⊕累加);z1、z2是只有第一装置知道的整数;

以上计算过程中所使用的加法同态加密针对被加密的明文数进行运算所对应的模m大于n。

对于以上所述包含秘密的数的协同生成方法,所述z1是第一装置随机选择的整数,或者是第一装置按预定的规则选择的整数,或者是第一装置按约定或要求固定选择的整数(包括固定取值0),而所述z2是第一装置随机选择的整数;所述z1、z2的取值范围不限于[1,n-1],且z1、z2的取值是整数(可正、可负,可为0);当s0对应的明文数(即((w2)-1g2)modn)的取值在[1,n-1]范围内时,z1、z2的取值使得s1对应的明文数不超出加法同态加密的明文数的补数的表示范围(补数是用非负整数表示正、负整数及0的一种方式),或者使得s1对应的明文数超出加法同态加密的明文数的补数的表示范围的概率极小,所述概率极小指具体应用中所确定的允许的概率。

对于以上所述包含秘密的数的协同生成方法,完成c的计算后,可通过一定的方式,验证c的有效性(但不是必须的),即确定c是预期的计算结果(w1w2+g1g2)modn,比如,它是针对某个消息的数字签名等等。

对于以上所述包含秘密的数的协同生成方法,若每次计算c时w1的取值是[1,n-1]中的随机数([1,n-1]中随机选择的整数或者由[1,n-1]中的一个随机数导出的等同于[1,n-1]中随机选择的整数的数),则第一装置检查s0是否是0的加密结果不是必须的(当然,继续进行检查也无妨);

若每次计算c时w2的取值是[1,n-1]中的随机数([1,n-1]中随机选择的整数或者由[1,n-1]中的一个随机数导出的等同于[1,n-1]中随机选择的整数的数),则第二装置检查s2是否是0不是必须的(当然,继续进行检查也无妨);

若每次计算c时g2的取值是[1,n-1]中的随机数([1,n-1]中随机选择的整数或者由[1,n-1]中的一个随机数导出的等同于[1,n-1]中随机选择的整数的数),则第二装置检查s3是否是0不是必须的(当然,继续进行检查也无妨);

所述每次计算c时,既包括一次完整的、正确的计算c的过程,也包括在一次计算c的过程中出现了错误后,重新进行的一次计算c的过程。

对于以上所述包含秘密的数的协同生成方法,所述第一装置检查s0是否是0的加密结果的一种方法如下:

第一装置在[1,n-1]中随机选择一个整数q,计算v0=q⊙s0,将v0发送给第二装置;

第二装置计算v1=d(v0)/(((w2)-1g2)modn),将v1返回给第一装置;

第一装置比较q和v1,若二者相同,则确定s0不是0的加密结果,否则,不能确定s0不是0的加密结果。

对于以上所述包含秘密的数的协同生成方法,若w2或g2为[1,n-1]中的非保密整数,则所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2或g1、w1、w2的数c=(w1w2+g1g2)modn(此时c仅供第二装置或第二装置信任的装置使用)。

对于以上所述包含秘密的数的协同生成方法,若w2为[1,n-1]中的非保密整数,则第二装置检查s2是否是0不是必须的(当然,继续进行检查也无妨);

若g2为[1,n-1]中的非保密整数,则第二装置检查s3是否是0不是必须的(当然,继续进行检查也无妨)。

基于以上所述的借助同态加密的包含秘密的数的协同生成方法,可构建包含秘密的数的协同生成系统,系统包括称为第一装置、第二装置的两个装置;第一装置有[1,n-1]中的整数秘密g1、w1,第二装置有[1,n-1]中的整数秘密g2、w2,n是一个素数(g1、w1、g2、w2不必是常数,也不必是每次计算时的随机数);所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2、w2的数c=(w1w2+g1g2)modn。

对于以上所述包含秘密的数的协同生成系统,若w2或g2为[1,n-1]中的非保密整数,则所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2或g1、w1、w2的数c=(w1w2+g1g2)modn(此时c仅供第二装置或第二装置信任的装置使用)。

对于以上所述包含秘密的数的协同生成系统,若w2为[1,n-1]中的非保密整数,则计算c的过程中第二装置检查s2是否是0不是必须的(当然,继续进行检查也无妨);

若g2为[1,n-1]中的非保密整数,则计算c的过程中第二装置检查s3是否是0不是必须的(当然,继续进行检查也无妨)。

基于本发明的方法及系统,两个装置能够在不暴露各自的秘密g1、w1和g2、w2的情况下,协同计算得到包含秘密的数c=(w1w2+g1g2)modn。结合本发明的实施例可以看到,本发明的方法及系统能够很好地用于基于秘密共享的sm2、sm9数字签名的协同生成,以及sm9私钥的分割生成,当然,本发明的方法及系统的应用不限于此。

具体实施方式

对于加法同态加密算法,目前有许多的这类算法,可以从中选择一个算法即可。在实施加法同态加密算法时,实施的加法同态加密针对加密前的明文数的模m要远大于n,若m的二进制位数是l,而n的二进制位数是s,则l至少是s的两倍。

下面结合实施例对本发明作进一步的描述,以下实施例不代表全部可能的实施例,不作为对本发明的限定。

在以下描述中,如无特别说明,当出现一个数的乘法逆时,指的是此数的模n乘法逆。

实施例1、

此实施例包括被称为第一装置和第二装置的两个装置;

第一装置有[1,n-1]中的整数秘密g1、w1,第二装置有[1,n-1]中的整数秘密g2、w2,n是一个素数(g1、w1、g2、w2不必是常数,也不必是每次计算时的随机数);

第一装置之外的装置从aw1+bg1的值无法得到g1、w1(的正确值),其中a、b是第一装置之外的装置知道的[1,n-1]中的任意整数;

第二装置之外的装置从uw2+vg2的值无法得到g2、w2(的正确值),其中u、v是第二装置之外的装置知道的[1,n-1]中的任意整数;

第一装置、第二装置按如下方式协同计算得到包含秘密g1、w1、g2、w2的数c=(w1w2+g1g2)modn:

第二装置计算s0=e(((w2)-1g2)modn),并将s0发送给第一装置,其中e(·)表示使用第二装置公钥的加法同态加密的加密运算,(w2)-1是w2的模n乘法逆(即((w2)-1w2)modn=1);

第一装置检查s0是否为0的加密结果,若不是,则继续,否则,报错(包括确定s0是0的加密结果,或者不能确定s0不是0的加密结果的情形);

第一装置在[1,n-1]内随机选择整数a1;

第一装置计算s1=e(w1+z2n)⊕((a1+z1n)⊙s0),s2=(g1-a1)modn;

第一装置将s1、s2发送给第二装置;

第二装置解密s1得到s3=d(s1)modn,其中d(·)表示使用第二装置私钥的加法同态加密的解密运算;

第二装置检查s2和s3是否为0,若s2或s3为0,则报错,否则,第二装置计算c=(w2s3+g2s2)modn,则c即为所求;

在以上计算过程中,z1、z2是只有第一装置知道的整数;以上计算过程中所使用的加法同态加密针对被加密的明文数进行运算所对应的模m大于n。

在以上计算过程中,所述z1是第一装置随机选择的整数,或者是第一装置按预定的规则选择的整数,或者是第一装置按约定或要求固定选择的整数(包括固定取值0),而所述z2是第一装置随机选择的整数;所述z1、z2的取值范围不限于[1,n-1],且z1、z2的取值是整数(可正、可负,可为0);当s0对应的明文数(即((w2)-1g2)modn)的取值在[1,n-1]范围内时,z1、z2的取值使得s1对应的明文数不超出加法同态加密的明文数的补数的表示范围(补数是用非负整数表示正、负整数及0的一种方式),或者使得s1对应的明文数超出加法同态加密的明文数的补数的表示范围的概率极小,所述概率极小指具体应用中所确定的允许的概率。

在以上计算过程中,若每次计算c时w1的取值是[1,n-1]中的随机数([1,n-1]中随机选择的整数或者由[1,n-1]中的一个随机数导出的等同于[1,n-1]中随机选择的整数的数),则第一装置检查s0是否是0的加密结果不是必须的(当然,继续进行检查也无妨);

若每次计算c时w2的取值是[1,n-1]中的随机数([1,n-1]中随机选择的整数或者由[1,n-1]中的一个随机数导出的等同于[1,n-1]中随机选择的整数的数),则第二装置检查s2是否是0不是必须的(当然,继续进行检查也无妨);

若每次计算c时g2的取值是[1,n-1]中的随机数([1,n-1]中随机选择的整数或者由[1,n-1]中的一个随机数导出的等同于[1,n-1]中随机选择的整数的数),则第二装置检查s3是否是0不是必须的(当然,继续进行检查也无妨);

所述每次计算c时,既包括一次完整的、正确的计算c的过程,也包括在一次计算c的过程中出现了错误后,重新进行的一次计算c的过程。

实施例2、

此实施例与实施例1的差别在于w2或g2为[1,n-1]中的非保密整数,第一装置、第二装置按与实施例1同样的计算方式计算得到包含秘密g1、w1、g2或g1、w1、w2的数c=(w1w2+g1g2)modn(此时c仅供第二装置或第二装置信任的装置使用)。

对于此实施例,若w2为[1,n-1]中的非保密整数,则第二装置检查s2是否是0不是必须的(当然,继续进行检查也无妨);

若g2为[1,n-1]中的非保密整数,则第二装置检查s3是否是0不是必须的(当然,继续进行检查也无妨)。

实施例3、

此实施例描述了本发明的方法在基于秘密共享的sm2数字签名生成中的应用。sm2是国家商用密码管理局颁布的一种椭圆曲线密码算法,其中包括数字签名。本发明这里的modn算子对应于sm2中的modn。

在此实施例中,被称为第一装置、第二装置的两个密码装置分别有[1,n-1]中的整数秘密d1、d2,且d1、d2与用户的sm2私钥da满足关系关系(d1d2)modn=(1+da)-1,其中n是sm2椭圆曲线点群基点g的阶,(1+da)-1是(1+da)的模n乘法逆;

若da是预先已生成的,则可以通过在[1,n-1]内随机选择d1,然后通过关系式(d1d2)modn=(1+da)-1计算得到d2;

若da不是预先已生成的,则可以在[1,n-1]中随机选择两个整数作为秘密d1、d2,然后两个装置在不暴露各自的秘密d1、d2的情况下,计算得到q=[((d1d2)modn)-1]g-g(这对于本领域技术人员而言是容易的,在此不赘述),以q作为用户sm2私钥da对应的公钥[da]g,这时隐含地有关系式(d1d2)modn=(1+da)-1

当需要使用用户的sm2私钥da针对消息m的sm2数字签名时,两个装置在不暴露各自秘密d1、d2的情况下,按如下方式利用本发明的包含秘密的数的协同生成方法生成针对消息m的数字签名:

第一装置、第二装置分别在[1,n-1]中随机选择整数k1、k2;第一装置计算g0=[k1]g,将g0传送给第二装置;

第二装置计算g1=[k2]g0,计算r=(e+x1)modn,其中x1取自(x1,y1)=g1,e是从用户标识和消息m导出的杂凑值(即散列值)(按sm2算法,e是从用户标识ida等参数导出的杂凑值za同消息m合并后的数据的杂凑值,参见sm2规范);

若r=0,则第二装置重新选择k2,重新计算g1、r,直到r≠0;

之后,第一装置以d1作为g1,以(k1d1)modn作为w1,第二装置(rd2)modn作为g2,以(k2d2)modn作为w2,两个装置按前面所述的包含秘密的数的协同生成方法,计算得到c=(w1w2+g1g2)modn;若c=0,则两个装置重新选择k1、k2,重新计算c,直到c不为0;

然后两个装置中的一个装置计算得到s=(c-r)modn;(r,s)即为针对消息m的数字签名。

在此实施例中,由于k1是每次计算时由第一装置在[1,n-1]中随机选择的整数,d1是常数,故w1是[1,n-1]中的随机数,因此,在计算过程中第一装置检查s0是否是0的加密结果不是必须的;同样地,由于k2是每次计算时由第二装置在[1,n-1]中随机选择的整数,d2是常数,故w2是[1,n-1]中的随机数,因此,在计算过程中第二装置检查s2是否是0不是必须的。

实施例4、

此实施例同样描述了本发明的方法在基于秘密共享的sm2密码算法中的应用。

在此实施例中,被称为第一装置的密码装置有[1,n-1]中的整数秘密d1、b1,被称为第二装置的密码装置有[1,n-1]中的整数秘密d2、b2,且d1、d2与用户的sm2私钥da满足关系(d1d2)modn=(1+da)-1,b1、b2与用户的sm2私钥da满足关系(b1b2)modn=(-(1+da)-1da)modn,其中,n是sm2椭圆曲线点群基点g的阶,(1+da)-1是(1+da)的模n乘法逆;这里用户的sm2私钥da是预先生成的(故公钥[da]g可预选计算得到)。

当需要使用用户的sm2私钥da针对消息m的sm2数字签名时,两个装置在不暴露各自秘密d1、b1、d2、b2的情况下,按如下方式利用本发明的包含秘密的数的协同生成方法生成针对消息m的数字签名:

第一装置、第二装置分别在[1,n-1]中随机选择整数k1、k2;第一装置计算g0=[k1]g,将g0传送给第二装置;

第二装置计算g1=[k2]g0,计算r=(e+x1)modn,其中x1取自(x1,y1)=g1,e是从用户标识和消息m导出的杂凑值(即散列值)(按sm2算法,e是从用户标识ida等参数导出的杂凑值za同消息m合并后的数据的杂凑值,参见sm2规范);

若r=0,则第二装置重新选择k2,重新计算g1、r,直到r≠0;

之后,第一装置以b1作为g1,以(k1d1)modn作为w1,第二装置以(rb2)modn作为g2,以(k2d2)modn作为w2,两个装置按前面所述的包含秘密的数的生成方法,计算得到c=(w1w2+g1g2)modn;若(c+r)modn=0,则两个装置重新选择k1、k2,重新计算c,直到(c+r)modn不为0;

若(c+r)modn不为0,则取s=c;(r,s)为针对消息m的数字签名。

在此实施例中,由于k1是每次计算时由第一装置在[1,n-1]中随机选择的整数,d1是常数,故w1是[1,n-1]中的随机数,因此,在计算过程中第一装置检查s0是否是0的加密结果不是必须的;同样地,由于k2是每次计算时由第二装置在[1,n-1]中随机选择的整数,d2是常数,故w2是[1,n-1]中的随机数,因此,在计算过程中第二装置检查s2是否是0不是必须的。

实施例5、

此实施例描述了本发明的方法在sm9标识私钥的分割生成(基于秘密共享的私钥生成)中的应用。这里描述的是用于签名的私钥的分割生成,用于加密的私钥的分割生成是完全类似的。sm9是国家商用密码管理局颁布的标识密码算法。

设私钥生成器(privatekeygenerator)的主密钥是s,则一个用户标识id所对应的用于签名的私钥是:da=[s(hid+s)-1]p1,其中,hid是由用户id及其他信息计算得到杂凑值(散列值),p1是双线性映射的源域中的两个群中的第一个群的生成元。

假设需要由两个私钥生成器通过秘密分割(共享)方式生成用户私钥da,其中一个私钥生成器有秘密s1,另一个私钥生成器有秘密s2,且(s1+s2)modn=s,这里n是p1的阶。

将da的计算式变换后有da=p1-[hid(hid+s)-1]p1。

以拥有s1的私钥生成器作为第一装置,以拥有s2的私钥生成器作为第二装置;两个装置按如下方式协同生成用户标识id对应的私钥:

第一装置在[1,n-1]中随机选择一个整数作为g1,以(g1(hid+s1))modn作为w1,计算q1=[(hidg1)modn]p1;第二装置以s2作为g2,取整数1作为w2;之后两个装置(私钥生成器)按本发明的包含秘密的数的协同生成方法计算得到c=(w1w2+g1g2)modn。

第二装置计算q2=p1-[c-1]q1;则q2就是用户id所对应的私钥da。

在此实施例中,由于每次计算时w1是[1,n-1]中的随机整数,因此,在计算过程中第一装置检查s0是否是0的加密结果不是必须的;此实施例中,由于c不公开,也无法从da得到c或c-1,因此,第二装置检查s2和s3是否是0不是必须的。

实施例6、

此实施例同样描述了本发明的方法在sm9标识私钥的分割生成(基于秘密共享的私钥生成)中的应用,与实施例5的不同之处在于,此时的两个私钥生成器的秘密s1、s2与主私钥的关系是(s1s2)modn=s。

以拥有s1的私钥生成器作为第一装置,以拥有s2的私钥生成器作为第二装置;两个装置按如下方式协同生成用户标识id对应的私钥:

第一装置在[1,n-1]中随机选择一个整数作为w1,以(w1s1)modn作为g1,计算q1=[(hidw1)modn]p1;第二装置以s2作为g2,取hid作为w2;

之后两个装置(私钥生成器)按本发明的包含秘密的数的协同生成方法计算得到c=(w1w2+g1g2)modn。

第二装置计算q2=p1-[c-1]q1;则q2就是用户id所对应的私钥da。

在此实施例中,由于每次计算时w1是[1,n-1]中的随机整数,因此,在计算过程中第一装置检查s0是否是0的加密结果不是必须的;此实施例中,由于c不公开,也无法从da得到c或c-1,因此,第二装置检查s2和s3是否是0不是必须的。

实施例7、

此实施例描述了本发明的方法在基于秘密共享的sm9数字签名中的应用。

在此实施例中,被称为第一装置、第二装置的两个密码装置分别有[1,n-1]中的整数秘密d1、d2,其中n是双线性映射中群的阶;事先有从用户的sm9标识私钥da计算得到的群元:ga=[((d1d2)modn)-1]da(如何事先做到这点,属于本发明之外的事情,但很简单)。ga非保密。

下面看两个装置如何在不暴露各自秘密d1、d2的情况下,利用本发明的包含秘密的数的协同生成方法,生成针对消息m的sm9数字签名。

第一装置在[1,n-1]中随机选择一个整数r1,第二装置在[1,n-1]中随机选择一个整数r2;

第一装置计算得到g的r1次幂,并设其值为t1,其中g=e(p1,ppub);

第二装置计算得到t1的r2次幂,并设其值为t2;

这里ppub为主公钥;

第一或第二装置计算得到h=h2(m||t2,n),h2为杂凑(散列)函数(参见sm9规范);

第一装置以(r1d1)modn作为秘密w1,以d1作为秘密g1;

第二装置以(r2d2)modn作为秘密w2,以(-hd2)modn作为秘密g2;

第一装置、第二装置应用本发明的包含秘密的数的协同生成方法计算得到c=(w1w2+g1g2)modn;

若c≠0,则第一或第二装置计算得到s=[c]ga,(h,s)即为针对m的sm9数字签名;

若c=0,则两个装置重新进行计算,直到c≠0。

在此实施例中,由于w1是[1,n-1]中的随机数,因此第一装置检查s0是否为0的加密结果不是必须的;由于w2是[1,n-1]中的随机数,因此第二装置检查s2是否为0不是必须的。

实施例8、

此实施例同样描述了本发明的方法在基于秘密共享的sm9数字签名中的应用。

同样地,在此实施例中,被称为第一装置、第二装置的两个密码装置分别有[1,n-1]中的整数秘密d1、d2,其中n是双线性映射中群的阶;事先有从用户的sm9标识私钥da计算得到的群元:ga=[((d1d2)modn)-1]da。ga非保密。

下面是两个装置在不暴露各自秘密d1、d2的情况下,利用本发明的包含秘密的数的协同生成方法,生成使用用户的sm9私钥da针对消息m的sm9数字签名的另一种方式。

第一装置在[1,n-1]中随机选择一个整数r1,第二装置在[1,n-1]中随机选择一个整数r2;

第一装置计算得到g的r1次幂,并设其值为t1,其中g=e(p1,ppub);

第二装置计算得到g的r2次幂,并设其值为t2,其中g=e(p1,ppub);

第一或第二装置计算得到t=t1t2;

第一或第二装置计算得到h=h2(m||t,n),h2为杂凑(散列)函数(参见sm9规范);

第一装置以d1作为秘密g1,以(r1d1)modn作为秘密w1;

第二装置以((r2-h)d2)modn作为秘密g2,以d2作为秘密w2;

第一装置、第二装置应用本发明的包含秘密的数的协同生成方法计算得到c=(w1w2+g1g2)modn;

若c≠0,则第一计算得到s=[c]ga,(h,s)即为针对m的sm9数字签名;

若c=0,则两个装置重新进行计算,直到c≠0。

在此实施例中,w1是[1,n-1]内的随机数,因此,第一装置检查s0是否为0的加密结果不是必须的;g2是[1,n-1]内的随机数,因此,第二装置检查s3是否为0不是必须的。

在本发明的具体实施中,若需要检查s0是否是0的加密结果,则第一装置可以通过如下方式与第二装置交互,检查s0是否是0的加密结果:

第一装置在[1,n-1]中随机选择一个整数q,计算v0=q⊙s0,将v0发送给第二装置;

第二装置计算v1=d(v0)/(((w2)-1g2)modn),将v1返回给第一装置;

第一装置比较q和v1,若二者相同,则确定s0不是0的加密结果,否则,不能确定s0不是0的加密结果。

基于本发明的借助同态加密的包含秘密的数的协同生成方法可以构建一个包含秘密的数的协同生成系统,系统包括两个装置,其中一个装置作为所述包含秘密的数的协同生成方法中的第一装置,另一个装置作为所述包含秘密的数的协同生成方法中的第二装置;第一装置有[1,n-1]中的整数秘密g1、w1,第二装置有[1,n-1]中的整数秘密g2、w2,n是一个素数(g1、w1、g2、w2不必是常数,也不必是每次计算时的随机数);所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2、w2的数c=(w1w2+g1g2)modn。

对于以上所述包含秘密的数的协同生成系统,其中的两个装置可以是专门提供密码服务的装置,或者,其中一个装置是用户装置,如用户电脑、移动终端(智能手机、智能穿戴设备),另一个装置是专门提供密码服务的装置,或者,两个装置都是用户装置,比如,一个是用户电脑、另一个是用户移动终端。

对于以上所述包含秘密的数的协同生成系统,在具体实施中,若w2或g2为[1,n-1]中的非保密整数,则所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2或g1、w1、w2的数c=(w1w2+g1g2)modn(此时c仅供第二装置或第二装置信任的装置使用)。

对于以上所述包含秘密的数的协同生成系统,在具体实施中,若w2为[1,n-1]中的非保密整数,则计算c的过程中第二装置检查s2是否是0不是必须的(当然,继续进行检查也无妨);若g2为[1,n-1]中的非保密整数,则计算c的过程中第二装置检查s3是否是0不是必须的(当然,继续进行检查也无妨)。

其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1