【技术实现步骤摘要】
秘密数运算转换方法及系统
本专利技术属于密码
,特别是秘密数相乘运算转换为相加运算的方法、秘密相加运算转换为相乘运算的方法以及基于这两个方法的运算式转换和计算方法及系统。
技术介绍
在密码技术应用中由于应用需要,比如对私钥安全保护的需求,常常需要采用基于秘密共享的密码运算,比如,基于秘密共享的ECDSA(EllipticCurveDigitalSignature)数字签名生成、基于秘密共享的SM2椭圆曲线数字签名生成、基于秘密共享的SM9椭圆曲线数字签名生成、基于秘密共享的SM9标识私钥协同生成等。下面是一些具体例子(当然不是全部的)。1、ECDSA数字签名协同生成设G是椭圆曲线点群的基点,素数n是G的阶(也即椭圆曲线点群的阶),d是用户的私钥,使用用户私钥d对消息M进行数字签名的过程如下:计算kG=(x1,y1),取r=x1modn,e=hash(M),之后两个装置通过对d的共享秘密,协同计算s=k-1(e+rd)modn,从而得到针对消息M的数字签名(r,s)。若采用基于秘密共享的E ...
【技术保护点】
1.一种秘密数相乘运算转换为相加运算的方法,其特征是:/n所述方法涉及第1装置、第2装置;/n第1装置有非0整数秘密b
【技术特征摘要】
1.一种秘密数相乘运算转换为相加运算的方法,其特征是:
所述方法涉及第1装置、第2装置;
第1装置有非0整数秘密b1,第2装置有非0整数秘密b2;
两个装置按如下方式之一将b1与b2的相乘项,即b1b2,转化为第1装置在[1,n-1]内的整数秘密d1和第2装置在[0,n-1]内的整数秘密d2的相加项,即d1+d2,且保持模n运算结果不变,即(d1+d2)modn=(b1b2)modn,其中n是一个素数:
方式一:
第2装置在[1,n-1]内随机选择一个整数a2,计算c0=E(a2),c1=E((a2b2)modn),其中E(·)表示使用第2装置的同态加密公钥进行加法同态加密的加密运算;
第2装置将c0、c1发送给第1装置;
第1装置检查确定c0、c1是否是0的加密结果,若c0或c1是0的加密结果,则报错,否则,继续进行如下计算:
第1装置在[1,n-1]内随机选择一个整数d1作为秘密,计算
c2=E(z1n)⊕((-d1)⊙c0)⊕(((b1modn)+z0n)⊙c1);
第1装置将c2传递给第2装置;
第2装置计算d2=((a2)-1(D(c2)modn))modn,其中D(·)表示使用第2装置的同态加密私钥进行加法同态加密的解密运算,(a2)-1是a2的模n乘法逆;
方式二:
第2装置在[1,n-1]内随机选择一个整数a2,计算c0=E(a2),c1=(a2b2)modn,其中E(·)表示使用第2装置的同态加密公钥进行加法同态加密的加密运算;
第2装置将c0、c1发送给第1装置;
第1装置检查确定c0是否是0的加密结果、c1是否是0,若c0是0的加密结果或c1是0,则报错,否则,继续进行如下计算:
第1装置在[1,n-1]内随机选择一个整数d1作为秘密,在[0,n-1]内随机选择一个整数t,计算
c2=E(t+z1n)⊕((-d1+z0n)⊙c0),
c3=(b1c1-t)modn;
第1装置将c2、c3传递给第2装置;
第2装置计算d2=((a2)-1((D(c2)+c3)modn))modn,其中D(·)表示使用第2装置的同态加密私钥进行加法同态加密的解密运算,(a2)-1是a2的模n乘法逆;
之后,在需要计算b1b2的模n运算式中使用d1+d2替换b1b2;
在以上计算过程中,⊕表示同态加密的密文数的加运算,⊙表示同态加密中的明文数与密文数的乘运算;
所述z0是第1装置随机选择的整数,或者是第1装置按预定的规则选择的整数,或者是第1装置按约定或要求固定选择的整数,而所述z1是第1装置随机选择的整数;
所述z0、z1的取值范围不限于[1,n-1],且z0、z1的取值是整数;
对于所述方式一,当c0、c1对应的明文数在[1,n-1]内时,z0、z1的取值使得c2、c3对应的明文数不超出加法同态加密的明文数的补数的表示范围,或者使得c2、c3对应的明文数超出加法同态加密的明文数的补数的表示范围的概率极小;
对于所述方式二,当c0对应的明文数在[1,n-1]内时,z0、z1的取值使得c2对应的明文数不超出加法同态加密的明文数的补数的表示范围,或者使得c2对应的明文数超出加法同态加密的明文数的补数的表示范围的概率极小;
所述概率极小指具体应用中所确定的允许的概率;
以上计算过程中所使用的加法同态加密针对被加密的明文数进行运算所对应的模m大于n。
2.根据权利要求1所述的秘密数相乘运算转换为相加运算的方法,其特征是:
若b是一个装置的整数秘密,a为此装置知道的整数,则ab和a+b也是此装置的整数秘密。
3.一种基于权利要求1或2所述的秘密数相乘运算转换为相加运算的方法的运算式转换和计算方法,其特征是:
所述第1装置、第2装置进行协同计算的运算式A是由如下运算项相加构成的模n运算:
第1装置的整数秘密项,第2装置的整数秘密项,非保密整数项,第1装置和第2装置的整数秘密相乘项;
所述第1装置、第2装置按所述秘密数相乘运算转换为相加运算的方法,将运算式A中出现的每个第1装置和第2装置的整数秘密的相乘项分别转换为第1装置和第2装置的整数秘密的相加项,转换得到的运算式B为第1装置的整数秘密项,第2装置的整数秘密项,非保密整数项相加构成的模n运算式;
之后,从转换得到的运算式B中分离出模n运算式A1、A2,其中,A1是第1装置的整数秘密项和非保密整数项相加构成的模n运算式,A2是第2装置的整数秘密项和非保密整数项相加构成的模n运算式,且A1中的非保密整数项与A2中的非保密整数项之和的模n余数,与将A中的相乘项转换后得到的运算式B中出现的非保密整数项之和的模n余数相同,分离得到A1、A2满足关系(A1+A2)modn=B;
最后,运算式A的计算转换为计算(A1+A2)modn,且(A1+A2)modn=A,其中运算式A1的值由第1装置利用自己的整数秘密计算得到,运算式A2的值由第2装置利用自己的整数秘密计算得到。
4.一种基于权利要求3所述的运算式转换和计算方法的运算式转换和计算系统,其特征是:
所述系统包括第1装置、第2装置,两个装置按所述运算式转换和计算方法将所述运算式A转换为满足关系(A1+A2)modn=A的所述运算式A1、A2,其中运算式A1的值由第1装置利用自己的整数秘密计算得到,运算式A2的值由第2装置利用自己的整数秘密计算得到。
5.一种秘密相加运算转换为相乘运算的方法,其特征是:
所述方法涉及第1装置、第2装置;
第1装置有整数秘密d1,第2装置有整数秘密d2,且(d1+d2)modn不为0,其中n是一个素数;
两个装置按如下方式之一将d1和d2的相加项,即d1+d2,转化为第1装置在[1,n-1]内的整数秘密b1和第2装置在[1,n-1]内的整数秘密b2的相乘项,即b1b2,且保持模n运算结果不变,即(d1+d2)modn=(b1b2)modn:
方式一:
第2装置在[1,n-1]内随机选择一个整数a2,计算c0=E(a2),c1=E((a2d2)modn),其中E(·)表示使用第2装置的同态加密公钥进行加法同态加密的加密运算;
第2装置将c0、c1发送给第1装置;
第1装置检查确定c0、c1是否为0的加密结果,若c0或c1是0的加密结果,则报错,若不是,则继续进行如下计算:
第1装置在[1,n-1]内随机选择一个作为秘密的整数b1,计算
c2=E(z1n)⊕((((b1)-1d1)modn)⊙c0)⊕(((b1)-1+z0n)⊙c1),其中(b1)-1是b1的模n乘法逆;
第1装置将c2提交给第2装置;
第2装置计算b2=((a2)-1(D(c2)modn))modn,其中(a2)-1是a2的模n乘法逆;
方式二:
第2装置在[1,n-1]内随机选择一个整数a2,计算c0=E(a2),c1=(a2d2)modn;
第2装置将c0、c1发送给第1装置;
第1装置检查确定c0是否为0的加密结果、c1是否为0,若c0是0的加密结果或c1是0,则报错,否则,继续进行如下计算:
第1装置在[1,n-1]内随机选择一个作为秘密的整数b1,在[0,n-1]内随机选择一个整数t,计算
c2=E(t+z1n)⊕(((((b1)-1d1)modn)+z0n)⊙c0),
c3=((b1)-1c1-t)modn,其中(b1)-1是b1的模n乘法逆;
第1装置将c2、c3提交给第2装置;
第2装置计算...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。