CN110401524A - 一种借助同态加密的包含秘密的数的协同生成方法及系统 - Google Patents
一种借助同态加密的包含秘密的数的协同生成方法及系统 Download PDFInfo
- Publication number
- CN110401524A CN110401524A CN201910793577.5A CN201910793577A CN110401524A CN 110401524 A CN110401524 A CN 110401524A CN 201910793577 A CN201910793577 A CN 201910793577A CN 110401524 A CN110401524 A CN 110401524A
- Authority
- CN
- China
- Prior art keywords
- secret
- integer
- mod
- calculating
- collaboration
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/3033—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
发明为包含秘密的数的协同生成方法:装置1有[1,n‑1]内整数秘密g1、w1,装置2有[1,n‑1]内整数秘密g2、w2,n为素数;装置2计算s0=E(((w2)‑1g2)mod n)并发送给装置1,E(·)为加法同态加密的加密运算;装置1在[1,n‑1]内随机选择整数a1,计算s1=E(w1+z2n)⊕((a1+z1n)⊙s0),s2=(g1‑a1)mod n,将s1、s2发送给装置2;装置2解密s1得到s3=D(s1)modn,计算c=(w2s3+g2s2)mod n,D(·)为加法同态加密的解密运算;则c=(w1w2+g1g2)mod n,为包含秘密g1、w1、g2、w2的数。
Description
技术领域
本发明属于信息安全技术领域,特别是一种借助同态加密的包含秘密的数的协同生成方法及系统。
背景技术
在实际应用中,尤其是密码应用中,比如,基于秘密共享的SM2、SM9数字签名协同生成中,以及SM9私钥的分割生成中,常常需要在不暴露两个装置的秘密的情况下计算得到c=(w1w2+g1g2)mod n,其中,g1、w1是一个装置在[1,n-1]内的整数秘密,g2、w2是另一个装置在[1,n-1]内的整数秘密,n是一个素数,mod n表示求模n余数运算(它的运算优先级最低),但是,要做到这点并非一件容易的事件(比看上去的要难)。
发明内容
本发明的目的是提出一种包含秘密的数c=(w1w2+g1g2)mod n的协同生成方法及系统,以满足实际应用的需求,其中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)mod n:
第二装置计算s0=E(((w2)-1g2)mod n),并将s0发送给第一装置,其中E(·)表示使用第二装置公钥的加法同态加密的加密运算,(w2)-1是w2的模n乘法逆(即((w2)-1w2)mod n=1);
第一装置检查s0是否为0的加密结果,若不是,则继续,否则,报错(包括确定s0是0的加密结果,或者不能确定s0不是0的加密结果的情形);
第一装置在[1,n-1]内随机选择一个整数a1;
第一装置计算s1=E(w1+z2n)⊕((a1+z1n)⊙s0),s2=(g1-a1)mod n;
第一装置将s1、s2发送给第二装置;
第二装置解密s1得到s3=D(s1)mod n,其中D(·)表示使用第二装置私钥的加法同态加密的解密运算;
第二装置检查s2和s3是否为0,若s2或s3为0,则报错,否则,第二装置计算c=(w2s3+g2s2)mod n,则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)mod n,比如,它是针对某个消息的数字签名等等。
对于以上所述包含秘密的数的协同生成方法,若每次计算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)mod n),将v1返回给第一装置;
第一装置比较q和v1,若二者相同,则确定s0不是0的加密结果,否则,不能确定s0不是0的加密结果。
对于以上所述包含秘密的数的协同生成方法,若w2或g2为[1,n-1]中的非保密整数,则所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2或g1、w1、w2的数c=(w1w2+g1g2)mod n(此时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)mod n。
对于以上所述包含秘密的数的协同生成系统,若w2或g2为[1,n-1]中的非保密整数,则所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2或g1、w1、w2的数c=(w1w2+g1g2)mod n(此时c仅供第二装置或第二装置信任的装置使用)。
对于以上所述包含秘密的数的协同生成系统,若w2为[1,n-1]中的非保密整数,则计算c的过程中第二装置检查s2是否是0不是必须的(当然,继续进行检查也无妨);
若g2为[1,n-1]中的非保密整数,则计算c的过程中第二装置检查s3是否是0不是必须的(当然,继续进行检查也无妨)。
基于本发明的方法及系统,两个装置能够在不暴露各自的秘密g1、w1和g2、w2的情况下,协同计算得到包含秘密的数c=(w1w2+g1g2)mod n。结合本发明的实施例可以看到,本发明的方法及系统能够很好地用于基于秘密共享的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)mod n:
第二装置计算s0=E(((w2)-1g2)mod n),并将s0发送给第一装置,其中E(·)表示使用第二装置公钥的加法同态加密的加密运算,(w2)-1是w2的模n乘法逆(即((w2)-1w2)mod n=1);
第一装置检查s0是否为0的加密结果,若不是,则继续,否则,报错(包括确定s0是0的加密结果,或者不能确定s0不是0的加密结果的情形);
第一装置在[1,n-1]内随机选择整数a1;
第一装置计算s1=E(w1+z2n)⊕((a1+z1n)⊙s0),s2=(g1-a1)mod n;
第一装置将s1、s2发送给第二装置;
第二装置解密s1得到s3=D(s1)mod n,其中D(·)表示使用第二装置私钥的加法同态加密的解密运算;
第二装置检查s2和s3是否为0,若s2或s3为0,则报错,否则,第二装置计算c=(w2s3+g2s2)mod n,则c即为所求;
在以上计算过程中,z1、z2是只有第一装置知道的整数;以上计算过程中所使用的加法同态加密针对被加密的明文数进行运算所对应的模m大于n。
在以上计算过程中,所述z1是第一装置随机选择的整数,或者是第一装置按预定的规则选择的整数,或者是第一装置按约定或要求固定选择的整数(包括固定取值0),而所述z2是第一装置随机选择的整数;所述z1、z2的取值范围不限于[1,n-1],且z1、z2的取值是整数(可正、可负,可为0);当s0对应的明文数(即((w2)-1g2)mod n)的取值在[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)mod n(此时c仅供第二装置或第二装置信任的装置使用)。
对于此实施例,若w2为[1,n-1]中的非保密整数,则第二装置检查s2是否是0不是必须的(当然,继续进行检查也无妨);
若g2为[1,n-1]中的非保密整数,则第二装置检查s3是否是0不是必须的(当然,继续进行检查也无妨)。
实施例3、
此实施例描述了本发明的方法在基于秘密共享的SM2数字签名生成中的应用。SM2是国家商用密码管理局颁布的一种椭圆曲线密码算法,其中包括数字签名。本发明这里的mod n算子对应于SM2中的modn。
在此实施例中,被称为第一装置、第二装置的两个密码装置分别有[1,n-1]中的整数秘密d1、d2,且d1、d2与用户的SM2私钥dA满足关系关系(d1d2)mod n=(1+dA)-1,其中n是SM2椭圆曲线点群基点G的阶,(1+dA)-1是(1+dA)的模n乘法逆;
若dA是预先已生成的,则可以通过在[1,n-1]内随机选择d1,然后通过关系式(d1d2)mod n=(1+dA)-1计算得到d2;
若dA不是预先已生成的,则可以在[1,n-1]中随机选择两个整数作为秘密d1、d2,然后两个装置在不暴露各自的秘密d1、d2的情况下,计算得到Q=[((d1d2)mod n)-1]G-G(这对于本领域技术人员而言是容易的,在此不赘述),以Q作为用户SM2私钥dA对应的公钥[dA]G,这时隐含地有关系式(d1d2)mod n=(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)mod n,其中x1取自(x1,y1)=G1,e是从用户标识和消息M导出的杂凑值(即散列值)(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范);
若r=0,则第二装置重新选择k2,重新计算G1、r,直到r≠0;
之后,第一装置以d1作为g1,以(k1d1)mod n作为w1,第二装置(rd2)mod n作为g2,以(k2d2)mod n作为w2,两个装置按前面所述的包含秘密的数的协同生成方法,计算得到c=(w1w2+g1g2)mod n;若c=0,则两个装置重新选择k1、k2,重新计算c,直到c不为0;
然后两个装置中的一个装置计算得到s=(c-r)mod n;(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)mod n=(1+dA)-1,b1、b2与用户的SM2私钥dA满足关系(b1b2)mod n=(-(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)mod n,其中x1取自(x1,y1)=G1,e是从用户标识和消息M导出的杂凑值(即散列值)(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范);
若r=0,则第二装置重新选择k2,重新计算G1、r,直到r≠0;
之后,第一装置以b1作为g1,以(k1d1)mod n作为w1,第二装置以(rb2)mod n作为g2,以(k2d2)mod n作为w2,两个装置按前面所述的包含秘密的数的生成方法,计算得到c=(w1w2+g1g2)mod n;若(c+r)mod n=0,则两个装置重新选择k1、k2,重新计算c,直到(c+r)mod n不为0;
若(c+r)mod n不为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是国家商用密码管理局颁布的标识密码算法。
设私钥生成器(Private Key Generator)的主密钥是s,则一个用户标识ID所对应的用于签名的私钥是:dA=[s(hID+s)-1]P1,其中,hID是由用户ID及其他信息计算得到杂凑值(散列值),P1是双线性映射的源域中的两个群中的第一个群的生成元。
假设需要由两个私钥生成器通过秘密分割(共享)方式生成用户私钥dA,其中一个私钥生成器有秘密s1,另一个私钥生成器有秘密s2,且(s1+s2)mod n=s,这里n是P1的阶。
将dA的计算式变换后有dA=P1-[hID(hID+s)-1]P1。
以拥有s1的私钥生成器作为第一装置,以拥有s2的私钥生成器作为第二装置;两个装置按如下方式协同生成用户标识ID对应的私钥:
第一装置在[1,n-1]中随机选择一个整数作为g1,以(g1(hID+s1))mod n作为w1,计算Q1=[(hIDg1)mod n]P1;第二装置以s2作为g2,取整数1作为w2;之后两个装置(私钥生成器)按本发明的包含秘密的数的协同生成方法计算得到c=(w1w2+g1g2)mod n。
第二装置计算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)mod n=s。
以拥有s1的私钥生成器作为第一装置,以拥有s2的私钥生成器作为第二装置;两个装置按如下方式协同生成用户标识ID对应的私钥:
第一装置在[1,n-1]中随机选择一个整数作为w1,以(w1s1)mod n作为g1,计算Q1=[(hIDw1)mod n]P1;第二装置以s2作为g2,取hID作为w2;
之后两个装置(私钥生成器)按本发明的包含秘密的数的协同生成方法计算得到c=(w1w2+g1g2)mod n。
第二装置计算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)mod n)-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)mod n作为秘密w1,以d1作为秘密g1;
第二装置以(r2d2)mod n作为秘密w2,以(-hd2)mod n作为秘密g2;
第一装置、第二装置应用本发明的包含秘密的数的协同生成方法计算得到c=(w1w2+g1g2)mod n;
若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)mod n)-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)mod n作为秘密w1;
第二装置以((r2-h)d2)mod n作为秘密g2,以d2作为秘密w2;
第一装置、第二装置应用本发明的包含秘密的数的协同生成方法计算得到c=(w1w2+g1g2)mod n;
若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)mod n),将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)mod n。
对于以上所述包含秘密的数的协同生成系统,其中的两个装置可以是专门提供密码服务的装置,或者,其中一个装置是用户装置,如用户电脑、移动终端(智能手机、智能穿戴设备),另一个装置是专门提供密码服务的装置,或者,两个装置都是用户装置,比如,一个是用户电脑、另一个是用户移动终端。
对于以上所述包含秘密的数的协同生成系统,在具体实施中,若w2或g2为[1,n-1]中的非保密整数,则所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2或g1、w1、w2的数c=(w1w2+g1g2)mod n(此时c仅供第二装置或第二装置信任的装置使用)。
对于以上所述包含秘密的数的协同生成系统,在具体实施中,若w2为[1,n-1]中的非保密整数,则计算c的过程中第二装置检查s2是否是0不是必须的(当然,继续进行检查也无妨);若g2为[1,n-1]中的非保密整数,则计算c的过程中第二装置检查s3是否是0不是必须的(当然,继续进行检查也无妨)。
其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。
Claims (9)
1.一种借助同态加密的包含秘密的数的协同生成方法,其特征是:
所述包含秘密的数的协同生成方法涉及被称为第一装置和第二装置的两个装置;
第一装置有[1,n-1]中的整数秘密g1、w1,第二装置有[1,n-1]中的整数秘密g2、w2,n是一个素数;
第一装置之外的装置从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)mod n:
第二装置计算s0=E(((w2)-1g2)mod n),并将s0发送给第一装置,其中E(·)表示使用第二装置公钥的加法同态加密的加密运算,(w2)-1是w2的模n乘法逆;
第一装置检查s0是否为0的加密结果,若不是,则继续,否则,报错;
第一装置在[1,n-1]内随机选择一个整数a1;
第一装置计算s1=E(w1+z2n)⊕((a1+z1n)⊙s0),s2=(g1-a1)mod n;
第一装置将s1、s2发送给第二装置;
第二装置解密s1得到s3=D(s1)mod n,其中D(·)表示使用第二装置私钥的加法同态加密的解密运算;
第二装置检查s2和s3是否为0,若s2或s3为0,则报错,否则,第二装置计算c=(w2s3+g2s2)mod n,则c即为所求;
在以上计算过程中,⊕表示同态加密的密文数的加运算,⊙表示同态加密中的明文数与密文数的乘运算;z1、z2是只有第一装置知道的整数;
以上计算过程中所使用的加法同态加密针对被加密的明文数进行运算所对应的模m大于n。
2.根据要求1所述的借助同态加密的包含秘密的数的协同生成方法,其特征是:
所述z1是第一装置随机选择的整数,或者是第一装置按预定的规则选择的整数,或者是第一装置按约定或要求固定选择的整数,而所述z2是第一装置随机选择的整数;所述z1、z2的取值范围不限于[1,n-1],且z1、z2的取值是整数;当s0对应的明文数的取值在[1,n-1]范围内时,z1、z2的取值使得s1对应的明文数不超出加法同态加密的明文数的补数的表示范围,或者使得s1对应的明文数超出加法同态加密的明文数的补数的表示范围的概率极小,所述概率极小指具体应用中所确定的允许的概率。
3.根据要求1所述的借助同态加密的包含秘密的数的协同生成方法,其特征是:
若每次计算c时w1的取值是[1,n-1]中的随机数,则第一装置检查s0是否是0的加密结果不是必须的;
若每次计算c时w2的取值是[1,n-1]中的随机数,则第二装置检查s2是否是0不是必须的;
若每次计算c时g2的取值是[1,n-1]中的随机数,则第二装置检查s3是否是0不是必须的;
所述每次计算c时,既包括一次完整的、正确的计算c的过程,也包括在一次计算c的过程中出现了错误后,重新进行的一次计算c的过程。
4.根据要求1所述的借助同态加密的包含秘密的数的协同生成方法,其特征是:
所述第一装置检查s0是否是0的加密结果的一种方法如下:
第一装置在[1,n-1]中随机选择一个整数q,计算v0=q⊙s0,将v0发送给第二装置;
第二装置计算v1=D(v0)/(((w2)-1g2)mod n),将v1返回给第一装置;
第一装置比较q和v1,若二者相同,则确定s0不是0的加密结果,否则,不能确定s0不是0的加密结果。
5.根据要求1所述的借助同态加密的包含秘密的数的协同生成方法,其特征是:
若w2或g2为[1,n-1]中的非保密整数,则所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2或g1、w1、w2的数c=(w1w2+g1g2)mod n。
6.根据要求5所述的借助同态加密的包含秘密的数的协同生成方法,其特征是:
若w2为[1,n-1]中的非保密整数,则第二装置检查s2是否是0不是必须的;
若g2为[1,n-1]中的非保密整数,则第二装置检查s3是否是0不是必须的。
7.一种基于权利要求1-4中任一项所述的借助同态加密的包含秘密的数的协同生成方法的包含秘密的数的协同生成系统,其特征是:
所述系统包括称为第一装置、第二装置的两个装置;第一装置有[1,n-1]中的整数秘密g1、w1,第二装置有[1,n-1]中的整数秘密g2、w2,n是一个素数;所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2、w2的数c=(w1w2+g1g2)mod n。
8.根据权利要求7所述的包含秘密的数的协同生成系统,其特征是:
若w2或g2为[1,n-1]中的非保密整数,则所述第一装置、第二装置按所述借助同态加密的包含秘密的数的协同生成方法计算得到包含秘密g1、w1、g2或g1、w1、w2的数c=(w1w2+g1g2)mod n。
9.根据要求8所述的包含秘密的数的协同生成系统,其特征是:
若w2为[1,n-1]中的非保密整数,则计算c的过程中第二装置检查s2是否是0不是必须的;
若g2为[1,n-1]中的非保密整数,则计算c的过程中第二装置检查s3是否是0不是必须的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910793577.5A CN110401524B (zh) | 2019-08-27 | 2019-08-27 | 一种借助同态加密的包含秘密的数的协同生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910793577.5A CN110401524B (zh) | 2019-08-27 | 2019-08-27 | 一种借助同态加密的包含秘密的数的协同生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110401524A true CN110401524A (zh) | 2019-11-01 |
CN110401524B CN110401524B (zh) | 2022-11-01 |
Family
ID=68329169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910793577.5A Active CN110401524B (zh) | 2019-08-27 | 2019-08-27 | 一种借助同态加密的包含秘密的数的协同生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110401524B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110943842A (zh) * | 2019-11-18 | 2020-03-31 | 武汉理工大学 | 一种sm9数字签名安全协同生成方法及系统 |
CN110943828A (zh) * | 2019-11-05 | 2020-03-31 | 武汉理工大学 | 秘密数运算转换方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160330017A1 (en) * | 2015-05-08 | 2016-11-10 | Electronics And Telecommunications Research Institute | Method and system for additive homomorphic encryption scheme with operation error detection functionality |
CN107872322A (zh) * | 2017-11-02 | 2018-04-03 | 武汉理工大学 | 基于同态加密的数字签名协同生成方法及系统 |
CN109361519A (zh) * | 2018-12-07 | 2019-02-19 | 武汉理工大学 | 一种改进的包含秘密的数的生成方法及系统 |
CN109474422A (zh) * | 2018-11-19 | 2019-03-15 | 武汉大学 | 一种多方协同产生sm2数字签名的方法 |
-
2019
- 2019-08-27 CN CN201910793577.5A patent/CN110401524B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160330017A1 (en) * | 2015-05-08 | 2016-11-10 | Electronics And Telecommunications Research Institute | Method and system for additive homomorphic encryption scheme with operation error detection functionality |
CN107872322A (zh) * | 2017-11-02 | 2018-04-03 | 武汉理工大学 | 基于同态加密的数字签名协同生成方法及系统 |
CN109474422A (zh) * | 2018-11-19 | 2019-03-15 | 武汉大学 | 一种多方协同产生sm2数字签名的方法 |
CN109361519A (zh) * | 2018-12-07 | 2019-02-19 | 武汉理工大学 | 一种改进的包含秘密的数的生成方法及系统 |
Non-Patent Citations (2)
Title |
---|
邓高宇等: "基于iOS终端的SM2移动密码系统", 《软件》 * |
龙毅宏等: "Study on Secret Sharing for SM2 Digital Signature and Its Application", 《IEEE》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110943828A (zh) * | 2019-11-05 | 2020-03-31 | 武汉理工大学 | 秘密数运算转换方法及系统 |
CN110943828B (zh) * | 2019-11-05 | 2021-01-08 | 武汉理工大学 | 秘密数运算转换方法及系统 |
CN110943842A (zh) * | 2019-11-18 | 2020-03-31 | 武汉理工大学 | 一种sm9数字签名安全协同生成方法及系统 |
CN110943842B (zh) * | 2019-11-18 | 2023-03-28 | 武汉理工大学 | 一种sm9数字签名安全协同生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110401524B (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111740828B (zh) | 一种密钥生成方法以及装置、设备、加解密方法 | |
CN106603246B (zh) | 一种sm2数字签名分割生成方法及系统 | |
CN107872322A (zh) | 基于同态加密的数字签名协同生成方法及系统 | |
CN106953722A (zh) | 一种全同态加密的密文查询方法和系统 | |
US20180131512A1 (en) | Method and system for providing encrypted data on a client | |
CN109245903B (zh) | 双方协同生成sm2算法的签名方法、装置及存储介质 | |
CN106850229B (zh) | 基于乘积秘密分割的sm2数字签名生成方法及系统 | |
CN108933650B (zh) | 数据加解密的方法及装置 | |
CN113271209B (zh) | 一种基于非交互式零知识证明的可托管公钥加密系统及方法 | |
CN109361519A (zh) | 一种改进的包含秘密的数的生成方法及系统 | |
CN112183767A (zh) | 一种多密钥下模型聚合的联邦学习方法及相关设备 | |
EP3509246B1 (en) | Key exchange method and key exchange system | |
CN107104793B (zh) | 一种数字签名生成方法及系统 | |
CN107819581B (zh) | 包含秘密的数和椭圆曲线点的生成方法及系统 | |
CN109951292A (zh) | 精简的sm9数字签名分离交互生成方法及系统 | |
CN110784300B (zh) | 一种基于乘法同态加密的密钥合成方法 | |
CN110401524A (zh) | 一种借助同态加密的包含秘密的数的协同生成方法及系统 | |
CN106850597A (zh) | 一种分布式加密方法及系统 | |
CN106453253A (zh) | 一种高效的基于身份的匿签密方法 | |
JPWO2016199507A1 (ja) | 鍵交換方法、鍵交換システム、鍵配送装置、通信装置、およびプログラム | |
CN110798313B (zh) | 基于秘密动态共享的包含秘密的数的协同生成方法及系统 | |
US20170359177A1 (en) | Method and System for Cryptographic Decision-making of Set Membership | |
Dumas et al. | Private multi-party matrix multiplication and trust computations | |
CN114866312B (zh) | 一种保护数据隐私的共有数据确定方法及装置 | |
CN110874479B (zh) | 安全处理决策树模型的方法、系统、数据终端及处理终端 |
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 |