CN107872322A - 基于同态加密的数字签名协同生成方法及*** - Google Patents
基于同态加密的数字签名协同生成方法及*** Download PDFInfo
- Publication number
- CN107872322A CN107872322A CN201711066292.9A CN201711066292A CN107872322A CN 107872322 A CN107872322 A CN 107872322A CN 201711066292 A CN201711066292 A CN 201711066292A CN 107872322 A CN107872322 A CN 107872322A
- Authority
- CN
- China
- Prior art keywords
- mod
- calculated
- devices
- integer
- digital signature
- 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
-
- 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
-
- 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
- H04L9/3252—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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及数字签名协同生成方法:装置1的秘密c、c1和装置2的秘密c2满足有关系:cc1c2mod n=(1+dA)‑1,dA是SM2私钥,n是SM2椭圆曲线点群的阶;使用dA针对消息签名时,两个装置计算得到Q=[(c2c1)‑1k2k1]G,r=(e+x1)mod n,x1取自(x1,y1)=Q,e是消息散列值,G为基点;装置1计算s1=E(((k1)‑1c1r)mod n);装置2计算s2=E(k2+z2n)⊕(c2⊙(s1⊕E(z1n))),z1、z2仅装置2知;装置1计算s=(D(s2)ck1‑r)mod n;E(·)和D(·)分别为加法同态加密的加、解密运算;(r,s)为数字签名。
Description
技术领域
本发明属于信息安全技术领域,特别是基于同态加密并采用乘积参数K的数字签名协同生成方法及***。
背景技术
SM2是由国家密码管理局颁布的一种椭圆曲线公钥密码算法(参见《SM2椭圆曲线公钥密码算法》规范,国家密码管理局,2010年12月),基于此算法能实现数字签名、密钥交换及数据加密。但是,由于SM2算法独特的数字签名运算方式,通常的秘密共享(分割)方式及对应的基于秘密共享的密码运算方式,无法适合于使用SM2私钥进行数字签名的情形。针对此问题,人们提出了一些相应的技术方案,简单的说明如下。
使用用户的SM2私钥dA针对一个消息M进行数字签名时需要计算得到r、s,其中r=(e+x1)mod n,其中n是SM2椭圆曲线的基点G的阶,e是从用户标识和消息M导出的杂凑值(即散列值)(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范),x1取自(x1,y1)=Q,而Q=[k]G,这里G是SM2椭圆曲线的基点;s=((1+dA)-1(k+r)-r)mod n,这里k是[1,n-1]区间内随机选择的一个整数,在此申请中,k被称为参数K或K参数。
当采用秘密共享(分割)方式进行数字签名生成时,通常的做法是将秘密(1+dA)-1分割后,将分割后的秘密给多个装置,分割后的每份秘密称为秘密份额;当需要使用用户的SM2私钥dA针对一个消息M进行数字签名时,每个装置使用自己的秘密份额以及独立选择的参数K,在不暴露各自的秘密份额的情况下,通过协同计算生成针对消息M的数字签名(不暴露各自的秘密份额这点非常关键)。
当有两个装置时,为了计算得到数字签名,两个装置通常需要计算Q=[k1+k2]R或Q=[k1k2+k3]R,这里k1、k2分别由两个装置在生成数字签名时在[1,n-1]区间内随机选择,k3是两个装置中的一个装置在[1,n-1]区间内随机选择的整数,而R是基点G或从G得到的另一个椭圆曲线点。但是这种方式存在的潜在风险是,若某个装置在计算Q的过程中恰好碰到Q是零元(无穷远点),但它秘而不报,而是另选一个K参数,则此装置就可能破解另一个装置的秘密份额。比如,假设k1、k2分别是第一、第二装置随机选择的整数,而由第一装置完成Q=[k1+k2]R的计算,而此时计算得到的Q恰好是零元(无穷远点),则第一装置知道了第二装置选择的k2,但第一装置不报告这点,而是另选一个k1,然后计算得到Q;这样,在协同生成数字签名的过程中或生成数字签名后,第一装置就可以利用它知道的k2,破解第二装置的秘密份额。当Q=[k1k2+k3]R时,同样的情况也会发生(无论是哪个装置选择两个K参数,无论最后是哪个装置计算Q)。
但是,如果计算Q采用的计算式Q=[k1k2]R,其中k1、k2是两个装置在生成数字签名时在[1,n-1]区间内随机选择的整数,那么Q就不可能为零元,那么就不会出现在计算Q的过程中一个装置得到另个装置选择的参数K的情况。这种计算Q=[k1k2]R的方式称为采用了乘积K参数。但是,在数字签名协同生成过程中采用乘积K参数并非一个简单的事,不是说想采用乘积K就能做到的,因为在采用乘积K参数协同生成数字签名的过程中,需要避免泄露敏感信息,而这点是不容易做到的,这是本专利发明要解决的主要问题。
另外,现有技术方案普遍采用的秘密共享方案是将用户的SM2私钥dA对应的秘密(1+dA)-1分割成多份,即d1,…,dm,每份称为秘密份额,而这些秘密份额与(1+dA)-1满足关系是(d1d2…dm)mod n=(1+dA)-1或(d1d2…dm)mod n=(1+dA)(这两者其实是等价的),或(d1+d2+…+dm)mod n=(1+dA)-1,然后将此多份秘密份额分别交给m个装置保存;当需要使用用户私钥dA针对一个消息进行数字签名时,由m个装置分别使用d1,…,dm通过协同计算得到针对消息的数字签名。但是,这种直接保存、使用秘密份额的方式存在如下问题:
一是,每个装置保存、使用的是与秘密(1+dA)-1直接相关的秘密份额,一旦泄露,就为攻击者破解(1+dA)-1(即dA)提供了有用的信息,增大了私钥dA破解的风险(虽然个别装置秘密份额的泄露不意味私钥被破解,但增大了私钥被破解的风险);
二是,《中华人民共和国电子签名法》要求电子签名生成数据由签名者控制,而将私钥的秘密分成多份分别由多个装置保存并不完全符合此要求。
避免每个装置直接保存、使用秘密(1+dA)-1的秘密份额,更好地满足《中华人民共和国电子签名法》的要求这是本专利发明要解决的另一个问题。
发明内容
本发明的目的是提出基于同态加密并采用乘积K参数且不直接保存、使用秘密(1+dA)-1的秘密份额的数字签名协同生成方法以及相应的***,以便提高基于协同计算的SM2数字签名生成方法的安全性,降低私钥破解的风险,并更好地满足《中华人民共和国电子签名法》对电子签名生成数据的要求。
针对本发明的目的,本发明提出的技术方案是基于同态加密的数字签名协同生成方法及***。
在以下对本发明技术方案的描述中,若P、Q是椭圆曲线点群中的元素(点),则P+Q表示P、Q的点加,P-Q表示P加上Q的逆元,[k]P表示k个椭圆曲线点P的点加,即P+P+...+P(共有k个P);省略号“...”,表示多个同样(类型)的数据项或多个同样的运算;c-1表示整数c的模n乘法逆(即cc-1mod n=1);如无特别说明,本专利申请中的乘法逆都是针对SM2椭圆曲线点群的阶n(即基点G的阶n)的模n乘法逆;多个整数相乘(包括整数符号相乘、常数与整数符号相乘),在不产生二义性的情况下,省略掉乘号“·”,如k1·k2简化为k1k2,3·c简化为3c;mod n表示模n运算(modulo operation),对应于《SM2椭圆曲线公钥密码算法》规范(国家密码管理局,2010年12月)中的modn;还有,模n运算的算子mod n的优先级是最低的,如a+bmod n等同于(a+b)mod n,a-b mod n等同于(a-b)mod n,ab mod n等同于(ab)mod n。
本发明的基于同态加密的数字签名协同生成方法又包括两个方案,具体描述如下。
方案一、
数字签名协同生成方法的方案一涉及两个装置,其中第一装置有[1,n-1]区间内的整数c、c1,且c、c1中至少c是秘密(c1为秘密或不为秘密),第二装置有[1,n-1]区间内的整数秘密c2,两个装置的秘密满足如下关系:
c=((c1c2)-1(1+dA)-1)mod n,
其中,dA是用户的SM2私钥,n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶(SM2密码运算所使用的椭圆曲线点群是指由基点G生成的循环群);
在初始化阶段预先计算得到:
P=[dA]G,
其中,dA是用户的SM2私钥,G是SM2密码运算所使用的椭圆曲线点群的基点,P是dA对应的公钥;
将公钥P公开发布;
当需要使用用户的SM2私钥dA针对消息M进行数字签名时,两个装置按如下方式进行数字签名的生成(需要使用用户的SM2私钥dA、针对消息M进行数字签名的主体可以是调用这两个装置的密码应用程序、***或密码模块,或者两个装置之一中的密码应用程序、***):
第一装置在[1,n-1]区间内随机选择一个整数k1;第二装置在[1,n-1]区间内随机选择一个整数k2;两个装置在不暴露各自的k1、k2及秘密的情况下,通过交互计算得到Q=[(c2c1)-1k2k1]G;
在计算得到Q后,由两个装置中的一个装置或者由两个装置之外的一个装置计算r=(e+x1)mod n,其中x1取自(x1,y1)=Q,e是从用户标识和消息M导出的杂凑值(即散列值)(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范);
若得到的r、Q满足:r≠0且[r]G+Q不是SM2椭圆曲线点群的零元(无穷远点),则继续计算数字签名,否则,重新计算Q和r,直到r≠0且[r]G+Q不是SM2椭圆曲线点群的零元(无穷远点);
完成r的计算后,两个装置按如下方式进行s的计算:
第一装置计算s0=((k1)-1c1r)mod n或s0=((k1)-1c1)mod n,s1=E(s0),其中,E(·)是使用第一装置的公钥的加法同态加密的加密运算;
(此时的k1与计算Q时的k1相同)
第一装置将s1发送给第二装置;
第二装置接收到s1后,检查s1是否为零的加密结果,若s1为零的加密结果,则向第一装置返回出错提示;若s1不为零的加密结果,则第二装置利用s1、k2、c2,使用第一装置的公钥进行加法同态加密的加密运算,计算得到一个密文数s2,且使得s2对应的明文数与(k2+(k1)-1c2c1r)mod n模n同余(即具有相同的模n余数);第二装置计算s2的方式包括(但不限于):
若计算s0采用公式s0=((k1)-1c1r)mod n,则:
或
若计算s0采用公式s0=((k1)-1c1)mod n,则:
或
以上算式中,E(·)表示使用第一装置的公钥的加法同态加密的加密运算,⊕表示同态加密的密文数的加运算(对应相应明文数相加后的加密结果),⊙表示同态加密中的明文数与密文数的乘运算(对应多个相同密文数的⊕累加),z1、z2是只有第二装置知道的整数,z1、z2的取值范围不限于[1,n-1](z1、z2是在计算过程中随机选择或生成的,或者由第二装置按预定的规则选择的,z1、z2的取值对第一装置保密,z1、z2可正、可负,可为0;当s1对应的明文数的取值在[1,n-1]范围内时,z1、z2的取值使得s2对应的明文数不超出加法同态加密的明文数的补码的表示范围,或者使得s2对应的明文数超出加法同态加密的明文数的补码的表示范围的概率极小);
第二装置将s2发送给第一装置;
第一装置接收到s2后,计算s3=D(s2)mod n,s=(ck1s3-r)mod n,其中D(·)是使用第一装置的私钥的加法同态加密的解密运算;
(此时,s3=(k2+(k1)-1c2c1r)mod n,s=(c(k2k1+c2c1r)-r)mod n)
则(r,s)是生成的针对消息M的数字签名;
(在以上过程中,针对加法同态加密中运算数的正、负以模m补码表示,比如,1到[m/2]的整数为正整数,[m/2]+1到m-1的整数为负整数,其中[m/2]表示m/2取整)
若上述计算过程中,在计算得到Q、r后,仅检查r是否为零,不检查[r]G+Q是否是SM2椭圆曲线点群的零元(无穷远点),且仅在r=0时重新进行Q、r的计算,则:
在计算得到s后,若检查发现(s+r)mod n=0,则放弃计算得到的s,重新计算Q、r,重新计算s,重复此过程,直到(s+r)mod n≠0。
对于以上方案一,完成r的计算后,两个装置计算s的另一种方式如下:
第一装置计算s0=E((cc1r)mod n)或s0=E(cc1),s1=E(ck1);
(此时的k1与计算Q时的k1相同)
第一装置将s0、s1发送给第二装置;
第二装置接收到s0、s1后,检查s0、s1是否为零的加密结果,若s0和s1中有一个为零的加密结果,则向第一装置返回出错提示;若s0和s1都不为零的加密结果,则第二装置利用s1、s0、k2、c2,使用第一装置的公钥进行加法同态加密的加密,计算得到一个密文数s2,且使得s2对应的明文数与(ck2k1+cc2c1r)mod n模n同余(即具有相同的模n余数),第二装置计算s2的方式包括(但不限于):
若计算s0采用公式s0=E((cc1r)mod n),则:
或
或
或
若计算s0采用公式s0=E(cc1),则:
或
或
或
以上算式中z1、z2、z3是只有第二装置知道的整数,z1、z2、z3的取值范围不限于[1,n-1](z1、z2、z3是在计算过程中随机选择或生成的,或者由第二装置按预定的规则选择的,z1、z2、z3的取值对第一装置保密,z1、z2、z3可正、可负,可为0;当s0、s1对应的明文数的取值在[1,n-1]范围内时,z1、z2、z3的取值使得s2对应的明文数不超出加法同态加密的明文数的补码的表示范围,或者使得s2对应的明文数超出加法同态加密的明文数的补码的表示范围的概率极小);
第二装置将s2发送给第一装置;
第一装置接收到s2后,计算s3=D(s2)mod n,s=(s3-r)mod n。
(此时,s3=c(k1k2+c2c1r)mod n,s=(c(k2k1+c2c1r)-r)mod n)
在以上方案一中,第二装置检查si,i=0,1,是否为零的加密结果的一种方法如下:
第二装置在加法同态加密允许的范围内任选非零整数ui和qi,所述在加法同态加密允许的范围内是指当D(si)(即si对应的明文数)在[1,n-1]范围内时,选择的ui和qi使得qiD(si)+ui或qi(D(si)+ui)不超出加法同态加密表示无符号数或补码的范围;
若选择的ui和qi使得qiD(si)+ui不超出加法同态加密表示无符号数或补码的范围,则第二装置计算
若选择的ui和qi使得qi(D(si)+ui)不超出加法同态加密表示无符号数或补码的范围,则第二装置
第二装置将hi发送给第一装置;
第一装置接收到hi后,解密hi,计算得到qi(即计算(D(hi)-ui)/gi,或D(hi)/(gi+ui),其中gi是si加密前的数),然后将qi返回第二装置;
第二装置接收到第一装置返回的qi后,检查第一装置返回的qi与自己之前选择的qi是否相同,若相同,则确定si不为零的加密结果;若第一装置无法返回通过解密获得的qi,或者返回的qi与第二装置之前选择的qi不同,则确定si为零的加密结果。
在以上方案一中,若dA是预先知道的,则在初始化阶段,预选知道dA的装置在[1,n-1]中随机选取c1、c2,计算得到c=((c1c2)-1(1+dA)-1)mod n,P=[dA]G,将c、c1交由第一装置保存,将c2交由第二装置保存,将公钥P发布,将dA销毁;
所述预先知道dA的装置是所述两个装置中的一个装置或者是所述两个装置之外的一个装置。
在以上方案一中,若dA不是预先知道的,则在初始化阶段,两个装置按如下方式选取c、c1、c2,计算得到用户私钥dA对应的公钥P:
第一装置在[1,n-1]区间内随机选择一个整数c,固定或随机选择一个整数c1;
第二装置在[1,n-1]区间内随机选择整数c2;
第一装置计算P1=[(cc1)-1]G,将P1发送给第二装置;
第二装置计算P=[(c2)-1]P1-G;
则计算得到的P=[dA],且c、c1、c2满足关系c=((c1c2)-1(1+dA)-1)mod n;
或者,
第二装置计算P2=[(c2)-1]G,将P2发送给第二装置;
第一装置计算P=[(cc1)-1]P2-G;
则计算得到的P=[dA],且c、c1、c2满足关系c=((c1c2)-1(1+dA)-1)mod n。
在以上计算过程中,两个装置按如下方式计算得到Q=[(c2c1)-1k2k1]G:
第二装置在[1,n-1]区间内随机选择一个整数k2,计算G2=[(c2)-1k2]G,将计算得到G2的发送给第一个装置;
第一装置在[1,n-1]区间内随机选择一个整数k1,计算Q=[(c1)-1k1]G2;
则计算得到的Q为Q=[(c2c1)-1k2k1]G;
或者,
第一装置在[1,n-1]区间内随机选择一个整数k1,计算G1=[(c1)-1k1]G,将计算得到G1的发送给第二个装置;
第二装置在[1,n-1]区间内随机选择一个整数k2,计算Q=[(c2)-1k2]G1;
则计算得到的Q为Q=[(c2c1)-1k2k1]G。
基于以上方案一,可构建相应的数字签名协同生成***,***包括两个装置,两个装置分别作为所述数字签名协同生成方法中的第一装置和第二装置,所述两个装置按所述数字签名协同生成方法的方案一生成使用用户私钥dA针对消息M的SM2数字签名。
方案二、
数字签名协同生成方法的方案二同样涉及两个装置,其中第一装置有[1,n-1]区间内的整数秘密c1,第二装置有[1,n-1]区间内的整数秘密c2、c3、c,两个装置的秘密满足如下关系:
c=((c1c2+c3)-1(1+dA)-1)mod n,
其中dA是用户的SM2私钥,n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶(SM2密码运算所使用的椭圆曲线点群是指由基点G生成的循环群);
在初始化阶段预先计算得到:
Gc=[(c1c2+c3)-1]G,
P=[dA]G,
其中,dA是用户的SM2私钥,G是SM2密码运算所使用的椭圆曲线点群的基点,P是dA对应的公钥;
将Gc交由第一装置和第二装置中需要使用Gc的装置保存,将公钥P公开发布;
当需要使用用户的SM2私钥dA针对消息M进行数字签名时,两个装置按如下方式进行数字签名的生成(需要使用用户的SM2私钥dA、针对消息M进行数字签名的主体可以是调用这两个装置的密码应用程序、***或密码模块,或者两个装置之一中的密码应用程序、***):
第一装置在[1,n-1]区间内随机选择一个整数k1;第二装置在[1,n-1]区间内随机选择一个整数k2;两个装置在不暴露各自的k1、k2的情况下,通过交互计算得到Q=[k2k1]Gc;
在计算得到Q后,由两个装置中的一个装置或者由两个装置之外的一个装置计算r=(e+x1)mod n,其中x1取自(x1,y1)=Q,e是从用户标识和消息M导出的杂凑值(即散列值)(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范);
若得到的r、Q满足:r≠0且[r]G+Q不是SM2椭圆曲线点群的零元(无穷远点),则继续计算数字签名,否则,重新计算Q和r,直到r≠0且[r]G+Q不是SM2椭圆曲线点群的零元(无穷远点);
完成r的计算后,两个装置按如下方式进行s的计算:
第一装置计算s0=E((c1r)mod n)或s0=E(c1),s1=E(k1),其中,E(·)是使用第一装置的公钥的加法同态加密的加密运算;
第一装置将s0、s1发送给第二装置;
第二装置接收到s0、s1后,检查s0、s1是否为零的加密结果,若s0和s1中有一个为零的加密结果,则向第一装置返回错误提示;若s0和s 1皆不为零的加密结果,则第二装置在[1,n-1]中随机选择一个整数k21和k22,令k22=(k2(k21)-1)mod n,其中(k21)-1为k21的模n乘法逆,然后第二装置利用s1、s0、k22、k21、c2,使用第一装置的公钥的加法同态加密的加密运算,计算得到一个密文数s2,且使得计算得到的s2对应的明文数与
(k22k1+(k21)-1c2c1r)mod n模n同余(有相同的模n余数);第二装置计算s2的方式包括(但不限于):
若计算s0采用公式s0=E((c1r)mod n),则:
或
或
或
若计算s0采用公式s0=E(c1),则:
或
或
或
以上算式中,E(·)表示使用第一装置的公钥的加法同态加密的加密运算,表示同态加密的密文数的加运算(对应相应明文数相加后的加密结果),⊙表示同态加密中的明文数与密文数的乘运算(对应多个相同密文数的累加),z1、z2、z3是只有第二装置知道的整数(z1、z2、z3是在计算过程中随机选择或生成的,或者由第二装置按预定的规则选择的,z1、z2、z3的取值对第一装置保密,z1、z2、z3的取值范围不限于[1,n-1],z1、z2、z3可正、可负,可为0;当s0、s1对应的明文数的取值在[1,n-1]范围内时,z1、z2、z3的取值使得s2对应的明文数不超出加法同态加密的明文数的补码的表示范围,或者使得s2对应的明文数超出加法同态加密的明文数的补码的表示范围的概率极小);
第二装置将s2发送给第一装置;
第一装置接收到s2后,计算s3=D(s2)mod n,其中D(·)是使用第一装置私钥的加法同态加密的解密运算;
(此时,s3=(k22k1+(k21)-1c2c1r)mod n)
第一装置将s3发送给第二装置;
第二装置接收到s3后,检查s3是否为零,若s3为零则报错,否则,计算s=(c(k21s3+c3r)-r)mod n;
(此时,s=(c(k2k1+(c2c1+c3)r)-r)mod n)
则(r,s)是生成的针对消息M的数字签名;
(同样地,在以上过程中,针对加法同态加密中运算数的正、负以模m补码表示,比如,1到[m/2]的整数为正整数,[m/2]+1到m-1的整数为负整数,其中[m/2]表示m/2取整)
若上述计算过程中,在计算得到Q、r后,仅检查r是否为零,不检查[r]G+Q是否是SM2椭圆曲线点群的零元(无穷远点),且仅在r=0时重新进行Q、r的计算,则:
在计算得到s后,若检查发现(s+r)mod n=0,则放弃计算得到的s,重新计算Q、r,重新计算s,重复此过程,直到(s+r)mod n≠0。
检查si,i=0,1,是否为零的加密结果的方法同前。
对于以上方案二,若dA是预先知道的,则在初始化阶段,预先知道dA的装置按如下方式选取或计算c1、c2、c3、c,计算得到Gc=[(c1c2+c3)-1]G,以及用户私钥dA对应的公钥P=[dA]G:
在[1,n-1]区间内随机选择整数c1、c2,在[0,n-1]区间内随机选择整数c3,且使得选择的c1、c2、c3满足(c1c2+c3)mod n≠0(注:选择c2=c3是允许的);
计算c=((c1c2+c3)-1(1+dA)-1)mod n,其中(c1c2+c3)-1为(c1c2+c3)mod n的模n乘法逆(即(c1c2+c3)-1(c1c2+c3)mod n=1);
计算Gc=[(c1c2+c3)-1]G,P=[dA]G;
预先知道dA的装置将c1交由第一装置保存,将c2、c3、c交由第二装置保存,将Gc交给计算Q过程中需要使用Gc的装置,将公钥P公开发布,将dA销毁;
所述预先知道dA的装置是所述两个装置中的一个装置或者是所述两个装置之外的一个装置。
对于以上方案二,若dA不是预先知道的,则在初始化阶段,两个装置选取c1、c2、c3、c,计算得到Gc=[(c1c2+c3)-1]G,以及用户私钥dA对应的公钥P的一种方式如下:
第二装置在[1,n-1]区间内随机选择整数c2、c3、c,计算t=((c2)-1c3)mod n,然后将计算得到的t发送给第一装置;或者,第二装置在[1,n-1]区间内随机选择整数c、c2,在[1,n-1]区间内随机或固定选择一个整数t(注:固定选择t为整数1是允许的),计算c3=(tc2)mod n,然后将t发送给第一装置;
第一装置在[1,n-1]区间内随机选择一个整数c1,且选择的c1满足(c1+t)mod n≠0;
第一装置计算Gt=[(c1+t)-1]G,其中(c1+t)-1为(c1+t)mod n的模n乘法逆(即(c1+t)-1(c1+t)mod n=1);
第一装置将计算得到的Gt发送给第二装置;
第二装置计算Gc=[(c2)-1]Gt,P=[c-1]Gc-G,其中,(c2)-1、c-1分别为c2、c的模n乘法逆;
若P为SM2椭圆曲线点群的零元(无穷远点),则重新选取c1、c2、c3或t、c,计算Gc=[(c1c2+c3)-1]G,计算P,直到P不是SM2椭圆曲线点群的零元(无穷远点);
(第二装置随机选择c以及利用选择的c计算P,相当于以一种间接的方式生成私钥dA)
计算得到的Gc即为[(c1c2+c3)-1]G,P即为公钥[dA]G;
第二装置将Gc交给计算Q过程中需要使用Gc的装置(可能是自己),将公钥P发布。
对于以上方案二,若dA不是预先知道的,则在初始化阶段,两个装置选取c1、c2、c3、c,计算得到Gc=[(c1c2+c3)-1]G,以及用户私钥dA对应的公钥P的另一种方式如下:
第一装置在[1,n-1]区间内随机选择一个整数c1;
第二装置在[1,n-1]区间内随机选择整数c2、c3、c;
第一装置计算g0=E(c1),将g0发送给第二装置;
第二装置接收到g0后,检查g0是否为零的加密结果,若是,则向第一装置返回出错提示,若不是,则第二装置利用g0、c2、c3,使用第一装置的公钥的加法同态加密的加密运算,计算得到一个密文数g1,且使得计算得到的g1对应的明文数与(wc2c1+wc3)mod n模n同余(有相同的模n余数),其中w是第二装置在[1,n-1]区间内随机选择的整数;
第二装置计算g1的方式包括(但不限于):
或
其中w1、w2是只有第二装置知道的整数,w1、w2的取值范围不限于[1,n-1](w1、w2在计算过程中由第二装置随机选择或生成的,或者由第二装置按预定的规则选择的,w1、w2的取值对第一装置保密,w1、w2可正、可负,可为0;当c1的取值在[1,n-1]范围内时,w1、w2的取值使得g1对应的明文数不超出加法同态加密的明文数的补码的表示范围,或者使得g1对应的明文数超出加法同态加密的明文数的补码的表示范围的概率极小);
第二装置将g1发送给第一装置;
第一装置接收到g1后,计算g2=D(g1)mod n;
(此时g2=w(c1c2+c3)mod n)
第一装置检查g2是否为零,若是,则两个装置重新选择c1、c2、c3、c,重新计算g0、g1、g2,直到g2不为零;
若g2不为零,则第一装置计算P1=[(g2)-1]G,将P1发送给第二装置;
第二装置计算Gc=[w]P1,则Gc即为[(c1c2+c3)-1]G;
第二装置计算P=[(c)-1]Gc-G,则P即为公钥[dA]G;
第二装置将Gc交给计算Q过程中需要使用Gc的装置(可能是自己),将公钥P发布。
基于以上方案二可构建相应的数字签名协同生成***,***包括两个装置,两个装置分别作为所述数字签名协同生成方法中的第一装置到第二装置,所述两个装置按所述数字签名协同生成方法的方案二生成使用用户私钥dA针对消息M的SM2数字签名。
基于本发明的数字签名协同生成方法,两个装置在协同计算、生成数字签名的过程中采用了计算Q=[(c2c1)-1k2k1]G或Q=[k2k1]Gc的方案,即采用了乘积K参数,故而不会出现Q=[k1+k2]R或Q=[k1k2+k3]R为零元(无穷远点)的情况,从而消除了一个装置在计算Q的过程中能够得到另一个装置的K参数、进而破解另一个装置的秘密份额的风险,提高了SM2数字签名协同计算的安全性。
另外,与通常的直接分割私钥秘密(1+dA)-1,利用分割后的私钥秘密通过协同运算得到数字签名不同,本发明实际上是利用多个密钥c1,c2(以及c3)对私钥秘密(1+dA)-1进行加密,然后使用加密后的私钥秘密(即c)以及加密密钥c1,c2(以及c3)通过协同计算得到数字签名,避免了直接保存、使用秘密(1+dA)-1的秘密份额。对于本发明,一个装置使用c进行数字签名的生成运算相当于使用加密的(1+dA)-1进行数字签名生成运算,两个装置使用c1,c2,c(以及c3)的数字签名协同计算过程实际上是在不暴露c1,c2(以及c3)以及私钥秘密(1+dA)-1的情况下对c的解密过程。
基于本发明的方法,无论用户的私钥dA是预先已产生的还是非预先已产生的,只要使用c的装置是拥有私钥的用户的装置,比如用户的移动终端,那么,由于其他装置没有接触到用户私钥的任何秘密,因此用户私钥完全在用户的控制之下,很好地满足了《中华人民共和国电子签名法》的要求。
附图说明
无。
具体实施方式
下面结合实施例对本发明作进一步的描述。以下实施例仅是本发明列举的几个可能的实施例,不代表全部可能的实施例,不作为对本发明的限定。
实施例1、
此实施例中,dA是预先知道的,在初始化阶段,预选知道dA的装置在[1,n-1]中随机选取c1、c2,计算得到c=((c1c2)-1(1+dA)-1)mod n,P=[dA]G,将c、c1交由第一装置保存,将c2交由第二装置保存,将公钥P发布,将dA销毁;
所述预先知道dA的装置是所述两个装置中的一个装置或者是所述两个装置之外的一个装置;
当需要使用用户SM2私钥dA针对消息进行数字签名时,两个装置按前述基于同态加密的数字签名协同生成方法中的方案一,通过协同计算生成针对消息的数字签名。
实施例2、
此实施例中,dA不是预先知道的,在初始化阶段,两个装置按如下方式选取c、c1、c2,计算得到用户私钥dA对应的公钥P:
第一装置在[1,n-1]区间内随机选择一个整数c,固定或随机选择一个整数c1;
第二装置在[1,n-1]区间内随机选择整数c2;
第一装置计算P1=[(cc1)-1]G,将P1发送给第二装置;
第二装置计算P=[(c2)-1]P1-G;
则计算得到的P=[dA],且c、c1、c2满足关系c=((c1c2)-1(1+dA)-1)mod n;
或者,
第二装置计算P2=[(c2)-1]G,将P2发送给第二装置;
第一装置计算P=[(cc1)-1]P2-G;
则计算得到的P=[dA],且c、c1、c2满足关系c=((c1c2)-1(1+dA)-1)mod n;
当需要使用用户SM2私钥dA针对消息进行数字签名时,两个装置按前述基于同态加密的数字签名协同生成方法中的方案一,通过协同计算生成针对消息的数字签名。
实施例3、
此实施例中,dA是预先知道的,在初始化阶段,预先知道dA的装置按如下方式选取或计算c1、c2、c3、c,计算得到Gc=[(c1c2+c3)-1]G,以及用户私钥dA对应的公钥P:
在[1,n-1]区间内随机选择整数c1、c2,在[0,n-1]区间内随机选择整数c3,且使得选择的c1、c2、c3满足(c1c2+c3)mod n≠0(注:选择c2=c3是允许的);
计算c=((c1c2+c3)-1(1+dA)-1)mod n,其中(c1c2+c3)-1为(c1c2+c3)mod n的模n乘法逆(即(c1c2+c3)-1(c1c2+c3)mod n=1);
计算Gc=[(c1c2+c3)-1]G,P=[dA]G;
预先知道dA的装置将c1交由第一装置保存,将c2、c3、c交由第二装置保存,将Gc交给计算Q过程中需要使用Gc的装置,将公钥P公开发布,将dA销毁;
所述预先知道dA的装置是所述两个装置中的一个装置或者是所述两个装置之外的一个装置;
当需要使用用户SM2私钥dA针对消息进行数字签名时,两个装置按前述基于同态加密的数字签名协同生成方法中的方案二,通过协同计算生成针对消息的数字签名。
实施例4、
此实施例中,dA不是预先知道的,在初始化阶段,两个装置按如下方式选取c1、c2、c3、c,计算得到Gc=[(c1c2+c3)-1]G,以及用户私钥dA对应的公钥P:
第二装置在[1,n-1]区间内随机选择整数c2、c3、c,计算t=((c2)-1c3)mod n,然后将计算得到的t发送给第一装置;或者,第二装置在[1,n-1]区间内随机选择整数c、c2,在[1,n-1]区间内随机或固定选择一个整数t(注:固定选择t为整数1是允许的),计算c3=(tc2)mod n,然后将t发送给第一装置;
第一装置在[1,n-1]区间内随机选择一个整数c1,且选择的c1满足(c1+t)mod n≠0;
第一装置计算Gt=[(c1+t)-1]G,其中(c1+t)-1为(c1+t)mod n的模n乘法逆(即(c1+t)-1(c1+t)mod n=1);
第一装置将计算得到的Gt发送给第二装置;
第二装置计算Gc=[(c2)-1]Gt,P=[c-1]Gc-G,其中,(c2)-1、c-1分别为c2、c的模n乘法逆;
若P为SM2椭圆曲线点群的零元(无穷远点),则重新选取c1、c2、c3、c,计算Gc=[(c1c2+c3)-1]G,计算P,直到P不是SM2椭圆曲线点群的零元(无穷远点);
(第二装置随机选择c以及利用选择的c计算P,相当于以一种间接的方式生成私钥dA)
计算得到的Gc即为[(c1c2+c3)-1]G,P即为公钥[dA]G;
第二装置将Gc交给计算Q过程中需要使用Gc的装置(可能是自己),将公钥P发布;
当需要使用用户SM2私钥dA针对消息进行数字签名时,两个装置按前述基于同态加密的数字签名协同生成方法中的方案二,通过协同计算生成针对消息的数字签名。
实施例5、
此实施例中,dA不是预先知道的,在初始化阶段,两个装置按如下方式选取c1、c2、c3、c,计算得到Gc=[(c1c2+c3)-1]G,以及用户私钥dA对应的公钥P:
第一装置在[1,n-1]区间内随机选择一个整数c1;
第二装置在[1,n-1]区间内随机选择整数c2、c3、c;
第一装置计算g0=E(c1),将g0发送给第二装置;
第二装置接收到g0后,检查g0是否为零的加密结果,若是,则向第一装置返回出错提示,若不是,则第二装置
第二装置利用g0、c2、c3,使用第一装置的公钥的加法同态加密的加密运算,计算得到一个密文数g1,且使得计算得到的g1对应的明文数与(wc2c1+wc3)mod n模n同余(有相同的模n余数),其中w是第二装置在[1,n-1]区间内随机选择的整数;
第二装置计算g1的方式包括(但不限于):
或
其中w1、w2是只有第二装置知道的整数,w1、w2的取值范围不限于[1,n-1](w1、w2在计算过程中由第二装置随机选择或生成的,或者由第二装置按预定的规则选择的,w1、w2的取值对第一装置保密,w1、w2可正、可负,可为0;当c1的取值在[1,n-1]范围内时,w1、w2的取值使得g1对应的明文数不超出加法同态加密的明文数的补码的表示范围,或者使得g1对应的明文数超出加法同态加密的明文数的补码的表示范围的概率极小);
第二装置将g1发送给第一装置;
第一装置接收到g1后,计算g2=D(g1)mod n;
(此时g2=w(c1c2+c3)mod n)
第一装置检查g2是否为零,若是,则两个装置重新选择c1、c2、c3、c,重新计算g0、g1、g2,直到g2不为零;
若g2不为零,则第一装置计算P1=[(g2)-1]G,将P1发送给第二装置;
第二装置计算Gc=[w]P1,则Gc即为[(c1c2+c3)-1]G;
第二装置计算P=[(c)-1]Gc-G,则P即为公钥[dA]G;
第二装置将Gc交给计算Q过程中需要使用Gc的装置(可能是自己),将公钥P发布;
当需要使用用户SM2私钥dA针对消息进行数字签名时,两个装置按前述基于同态加密的数字签名协同生成方法中的方案二,通过协同计算生成针对消息的数字签名。
基于本发明的方法可构建相应的数字签名协同生成***,此***包括两个装置,其中一个装置可以是用户的移动终端(作为第一装置或第二装置),另一个是位于网络上的密码服务器(作为第二装置或第一装置),或者两个装置都是位于网络上的密码服务器(分别作为第一装置、第二装置);此两个装置通过实施本发明的基于同态加密的数字签名协同生成方法的两个方案中的一个,生成使用用户的SM2私钥dA针对消息的数字签名;所构建的数字签名生成***可用于前述实例1到实施5。
其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。
Claims (10)
1.一种基于同态加密的数字签名协同生成方法,其特征是:
所述方法涉及两个装置,其中第一装置有[1,n-1]区间内的整数c、c1,且c、c1中至少c是秘密,第二装置有[1,n-1]区间内的整数秘密c2,两个装置的秘密满足如下关系:
c=((c1c2)-1(1+dA)-1)mod n,
其中,dA是用户的SM2私钥,n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶;
在初始化阶段预先计算得到dA对应的公钥P,P=[dA]G;
将公钥P公开发布;
当需要使用用户的SM2私钥dA针对消息M进行数字签名时,两个装置按如下方式进行数字签名的生成:
第一装置在[1,n-1]区间内随机选择一个整数k1;第二装置在[1,n-1]区间内随机选择一个整数k2;两个装置在不暴露各自的k1、k2及秘密的情况下,通过交互计算得到Q=[(c2c1)-1k2k1]G;
在计算得到Q后,由两个装置中的一个装置或者由两个装置之外的一个装置计算r=(e+x1)mod n,其中x1取自(x1,y1)=Q,e是从用户标识和消息M导出的杂凑值;
若得到的r、Q满足:r≠0且[r]G+Q不是SM2椭圆曲线点群的零元,则继续计算数字签名,否则,重新计算Q和r,直到r≠0且[r]G+Q不是SM2椭圆曲线点群的零元;
完成r的计算后,两个装置按如下方式进行s的计算:
第一装置计算s0=((k1)-1c1r)mod n或s0=((k1)-1c1)mod n,s1=E(s0),其中,E(·)是使用第一装置的公钥的加法同态加密的加密运算;
第一装置将s1发送给第二装置;
第二装置接收到s1后,检查s1是否为零的加密结果,若s1为零的加密结果,则向第一装置返回出错提示;若s1不为零的加密结果,则第二装置利用s1、k2、c2,并使用第一装置的公钥进行加法同态加密的加密运算,计算得到一个密文数s2,且使得s2对应的明文数与(k2+(k1)-1c2c1r)mod n模n同余;第二装置计算s2的方式包括:
若计算s0采用公式s0=((k1)-1c1r)mod n,则:
s2=E(k2+z2n)⊕(c2⊙(s1⊕E(z1n))),或s2=E(k2+z2n)⊕((c2+z1n)⊙s1);
若计算s0采用公式s0=((k1)-1c1)mod n,则:
s2=E(k2+z2n)⊕(((c2r)mod n)⊙(s1⊕E(z1n))),或s2=E(k2+z2n)⊕((((c2r)mod n)+z1n)⊙s1);
以上算式中,E(·)表示使用第一装置的公钥的加法同态加密的加密运算,⊕表示同态加密的密文数的加运算,⊙表示同态加密中的明文数与密文数的乘运算,z1、z2是只有第二装置知道的整数,z1、z2的取值范围不限于[1,n-1];
第二装置将s2发送给第一装置;
第一装置接收到s2后,计算s3=D(s2)mod n,s=(ck1s3-r)mod n,其中D(·)是使用第一装置的私钥的加法同态加密的解密运算;
则(r,s)是生成的针对消息M的数字签名;
若上述计算过程中,在计算得到Q、r后,仅检查r是否为零,不检查[r]G+Q是否是SM2椭圆曲线点群的零元,且仅在r=0时重新进行Q、r的计算,则:
在计算得到s后,若检查发现(s+r)mod n=0,则放弃计算得到的s,重新计算Q、r,重新计算s,重复此过程,直到(s+r)mod n≠0。
2.根据权利要求1所述的基于同态加密的数字签名协同生成方法,其特征是:
完成r的计算后,两个装置计算s的另一种方式如下:
第一装置计算s0=E((cc1r)mod n)或s0=E(cc1),s1=E(ck1);
第一装置将s0、s1发送给第二装置;
第二装置接收到s0、s1后,检查s0、s1是否为零的加密结果,若s0和s1中有一个为零的加密结果,则向第一装置返回出错提示;若s0和s1都不为零的加密结果,则第二装置利用s1、s0、k2、c2,使用第一装置的公钥进行加法同态加密的加密,计算得到一个密文数s2,且使得s2对应的明文数与(ck2k1+cc2c1r)mod n模n同余,第二装置计算s2的方式包括:
若计算s0采用公式s0=E((cc1r)mod n),则:
s2=E(z3n)⊕(k2⊙(s1⊕E(z2n)))⊕(c2⊙(s0⊕E(z1n))),
或s2=E(z3n)⊕((k2+z2n)⊙s1)⊕(c2⊙(s0⊕E(z1n))),
或s2=E(z3n)⊕(k2⊙(s1⊕E(z2n)))⊕((c2+z1n)⊙s0),
或s2=E(z3n)⊕((k2+z2n)⊙s1)⊕((c2+z1n)⊙s0);
若计算s0采用公式s0=E(cc1),则:
s2=E(z3n)⊕(k2⊙(s1⊕E(z2n))⊕(((c2r)mod n)⊙(s0⊕E(z1n))),
或s2=E(z3n)⊕((k2+z2n)⊙s1)⊕(((c2r)mod n)⊙(s0⊕E(z1n))),
或s2=E(z3n)⊕(k2⊙(s1⊕E(z2n))⊕((((c2r)mod n)+z1n)⊙s0);
或s2=E(z3n)⊕((k2+z2n)⊙s1)⊕((((c2r)mod n)+z1n)⊙s0);
以上算式中z1、z2、z3是只有第二装置知道的整数,z1、z2、z3的取值范围不限于[1,n-1];
第二装置将s2发送给第一装置;
第一装置接收到s2后,计算s3=D(s2)mod n,s=(s3-r)mod n。
3.根据权利要求2所述的基于同态加密的数字签名协同生成方法,其特征是:
第二装置检查si,i=0,1,是否为零的加密结果的一种方法如下:
第二装置在加法同态加密允许的范围内任选非零整数ui和qi,所述在加法同态加密允许的范围内是指当D(si)在[1,n-1]范围内时,选择的ui和qi使得qiD(si)+ui或qi(D(si)+ui)不超出加法同态加密表示无符号数或补码的范围;
若选择的ui和qi使得qiD(si)+ui不超出加法同态加密表示无符号数或补码的范围,则第二装置计算hi=(qi⊙si)⊕E(ui);
若选择的ui和qi使得qi(D(si)+ui)不超出加法同态加密表示无符号数或补码的范围,则第二装置hi=qi⊙(si⊕E(ui));
第二装置将hi发送给第一装置;
第一装置接收到hi后,解密hi,计算得到qi,然后将qi返回第二装置;
第二装置接收到第一装置返回的qi后,检查第一装置返回的qi与自己之前选择的qi是否相同,若相同,则确定si不为零的加密结果;若第一装置无法返回通过解密获得的qi,或者返回的qi与第二装置之前选择的qi不同,则确定si为零的加密结果。
4.根据权利要求1或2所述的基于同态加密的数字签名协同生成方法,其特征是:
若dA是预先知道的,则在初始化阶段,预选知道dA的装置在[1,n-1]中随机选取c1、c2,计算得到c=((c1c2)-1(1+dA)-1)mod n,P=[dA]G,将c、c1交由第一装置保存,将c2交由第二装置保存,将公钥P发布,将dA销毁;
所述预先知道dA的装置是所述两个装置中的一个装置或者是所述两个装置之外的一个装置;
若dA不是预先知道的,则在初始化阶段,两个装置按如下方式选取c、c1、c2,计算得到用户私钥dA对应的公钥P:
第一装置在[1,n-1]区间内随机选择一个整数c,固定或随机选择一个整数c1;
第二装置在[1,n-1]区间内随机选择整数c2;
第一装置计算P1=[(cc1)-1]G,将P1发送给第二装置;
第二装置计算P=[(c2)-1]P1-G;
则计算得到的P=[dA],且c、c1、c2满足关系c=((c1c2)-1(1+dA)-1)mod n;
或者,
第二装置计算P2=[(c2)-1]G,将P2发送给第二装置;
第一装置计算P=[(cc1)-1]P2-G;
则计算得到的P=[dA],且c、c1、c2满足关系c=((c1c2)-1(1+dA)-1)mod n。
5.一种基于权利要求1或2或3的数字签名协同生成***,其特征是:
所述***包括两个装置,两个装置分别作为所述数字签名协同生成方法中的第一装置和第二装置,所述两个装置按所述数字签名协同生成方法生成使用用户私钥dA针对消息M的SM2数字签名。
6.一种基于同态加密的数字签名协同生成方法,其特征是:
所述方法涉及两个装置,其中第一装置有[1,n-1]区间内的整数秘密c1,第二装置有[1,n-1]区间内的整数秘密c2、c3、c,两个装置的秘密满足如下关系:
c=((c1c2+c3)-1(1+dA)-1)mod n,
其中dA是用户的SM2私钥,n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶;
在初始化阶段预先计算得到:
Gc=[(c1c2+c3)-1]G,
P=[dA]G,
其中,P是dA对应的公钥;
将Gc交由第一装置和第二装置中需要使用Gc的装置保存,将公钥P公开发布;
当需要使用用户的SM2私钥dA针对消息M进行数字签名时,两个装置按如下方式进行数字签名的生成:
第一装置在[1,n-1]区间内随机选择一个整数k1;第二装置在[1,n-1]区间内随机选择一个整数k2;两个装置在不暴露各自的k1、k2的情况下,通过交互计算得到Q=[k2k1]Gc;
在计算得到Q后,由两个装置中的一个装置或者由两个装置之外的一个装置计算r=(e+x1)mod n,其中x1取自(x1,y1)=Q,e是从用户标识和消息M导出的杂凑值;
若得到的r、Q满足:r≠0且[r]G+Q不是SM2椭圆曲线点群的零元,则继续计算数字签名,否则,重新计算Q和r,直到r≠0且[r]G+Q不是SM2椭圆曲线点群的零元;
完成r的计算后,两个装置按如下方式进行s的计算:
第一装置计算s0=E((c1r)mod n)或s0=E(c1),s1=E(k1),其中,E(·)是使用第一装置的公钥的加法同态加密的加密运算;
第一装置将s0、s1发送给第二装置;
第二装置接收到s0、s1后,检查s0、s1是否为零的加密结果,若s0和s1中有一个为零的加密结果,则向第一装置返回错误提示;若s0和s 1皆不为零的加密结果,则第二装置在[1,n-1]中随机选择一个整数k21和k22,令k22=(k2(k21)-1)mod n,其中(k21)-1为k21的模n乘法逆,然后第二装置利用s1、s0、k22、k21、c2,并使用第一装置的公钥的加法同态加密的加密运算,计算得到一个密文数s2,且使得计算得到的s2对应的明文数与(k22k1+(k21)-1c2c1r)mod n模n同余;第二装置计算s2的方式包括:
若计算s0采用公式s0=E((c1r)mod n),则:
s2=E(z3n)⊕(k22⊙(s1⊕E(z2n)))⊕((((k21)-1c2)mod n)⊙(s0⊕E(z1n)),
或s2=E(z3n)⊕(k22⊙(s1⊕E(z2n)))⊕(((((k21)-1c2)mod n)+z1n)⊙s0),
或s2=E(z3n)⊕((k22+z2n)⊙s1)⊕((((k21)-1c2)mod n)⊙(s0⊕E(z1n)),
或s2=E(z3n)⊕((k22+z2n)⊙s1)⊕(((((k21)-1c2)mod n)+z1n)⊙s0);
若计算s0采用公式s0=E(c1),则:
s2=E(z3n)⊕(k22⊙(s1⊕E(z2n)))⊕((((k21)-1c2r)mod n)⊙(s0⊕E(z1n))),
或s2=E(z3n)⊕(k22⊙(s1⊕E(z2n)))⊕(((((k21)-1c2r)mod n)+z1n)⊙s0),
或s2=E(z3n)⊕((k22+z2n)⊙s1)⊕((((k21)-1c2r)mod n)⊙(s0⊕E(z1n))),
或s2=E(z3n)⊕((k22+z2n)⊙s1)⊕(((((k21)-1c2r)mod n)+z1n)⊙s0);
以上算式中,E(·)表示使用第一装置的公钥的加法同态加密的加密运算,⊕表示同态加密的密文数的加运算,⊙表示同态加密中的明文数与密文数的乘运算,z1、z2、z3是只有第二装置知道的整数;
第二装置将s2发送给第一装置;
第一装置接收到s2后,计算s3=D(s2)mod n,其中D(·)是使用第一装置私钥的加法同态加密的解密运算;
第一装置将s3发送给第二装置;
第二装置接收到s3后,检查s3是否为零,若s3为零则报错,否则,计算s=(c(k21s3+c3r)-r)mod n;
则(r,s)是生成的针对消息M的数字签名;
若上述计算过程中,在计算得到Q、r后,仅检查r是否为零,不检查[r]G+Q是否是SM2椭圆曲线点群的零元,且仅在r=0时重新进行Q、r的计算,则:
在计算得到s后,若检查发现(s+r)mod n=0,则放弃计算得到的s,重新计算Q、r,重新计算s,重复此过程,直到(s+r)mod n≠0。
7.根据权利要求6所述的基于同态加密的数字签名协同生成方法,其特征是:
第二装置检查si,i=0,1,是否为零的加密结果的一种方法如下:
第二装置在加法同态加密允许的范围内任选非零整数ui和qi,所述在加法同态加密允许的范围内是指当D(si)在[1,n-1]范围内时,选择的ui和qi使得qiD(si)+ui或qi(D(si)+ui)不超出加法同态加密表示无符号数或补码的范围;
若选择的ui和qi使得qiD(si)+ui不超出加法同态加密表示无符号数或补码的范围,则第二装置计算hi=(qi⊙si)⊕E(ui);
若选择的ui和qi使得qi(D(si)+ui)不超出加法同态加密表示无符号数或补码的范围,则第二装置hi=qi⊙(si⊕E(ui));
第二装置将hi发送给第一装置;
第一装置接收到hi后,解密hi,计算得到qi,然后将qi返回第二装置;
第二装置接收到第一装置返回的qi后,检查第一装置返回的qi与自己之前选择的qi是否相同,若相同,则确定si不为零的加密结果;若第一装置无法返回通过解密获得的qi,或者返回的qi与第二装置之前选择的qi不同,则确定si为零的加密结果。
8.根据权利要求6所述的基于同态加密的数字签名协同生成方法,其特征是:
若dA是预先知道的,则在初始化阶段,预先知道dA的装置按如下方式选取或计算c1、c2、c3、c,计算得到Gc=[(c1c2+c3)-1]G,以及用户私钥dA对应的公钥P=[dA]G:
在[1,n-1]区间内随机选择整数c1、c2,在[0,n-1]区间内随机选择整数c3,且使得选择的c1、c2、c3满足(c1c2+c3)mod n≠0;
计算c=((c1c2+c3)-1(1+dA)-1)mod n,其中(c1c2+c3)-1为(c1c2+c3)mod n的模n乘法逆;
计算Gc=[(c1c2+c3)-1]G,P=[dA]G;
预先知道dA的装置将c1交由第一装置保存,将c2、c3、c交由第二装置保存,将Gc交给计算Q过程中需要使用Gc的装置,将公钥P公开发布,将dA销毁;
所述预先知道dA的装置是所述两个装置中的一个装置或者是所述两个装置之外的一个装置;
若dA不是预先知道的,则在初始化阶段,两个装置选取c1、c2、c3、c,计算得到Gc=[(c1c2+c3)-1]G,以及用户私钥dA对应的公钥P的一种方式如下:
第二装置在[1,n-1]区间内随机选择整数c2、c3、c,计算t=((c2)-1c3)mod n,然后将计算得到的t发送给第一装置;或者,第二装置在[1,n-1]区间内随机选择整数c、c2,在[1,n-1]区间内随机或固定选择一个整数t,计算c3=(tc2)mod n,然后将t发送给第一装置;
第一装置在[1,n-1]区间内随机选择一个整数c1,且选择的c1满足(c1+t)mod n≠0;
第一装置计算Gt=[(c1+t)-1]G,其中(c1+t)-1为(c1+t)mod n的模n乘法逆;
第一装置将计算得到的Gt发送给第二装置;
第二装置计算Gc=[(c2)-1]Gt,P=[c-1]Gc-G,其中,(c2)-1、c-1分别为c2、c的模n乘法逆;
若P为SM2椭圆曲线点群的零元,则重新选取c1、c2、c3或t、c,计算Gc=[(c1c2+c3)-1]G,计算P,直到P不是SM2椭圆曲线点群的零元;
计算得到的Gc即为[(c1c2+c3)-1]G,P即为公钥[dA]G;
第二装置将Gc交给计算Q过程中需要使用Gc的装置,将公钥P发布。
9.根据权利要求6所述的基于同态加密的数字签名协同生成方法,其特征是:
若dA不是预先知道的,则在初始化阶段,两个装置选取c1、c2、c3、c,计算得到Gc=[(c1c2+c3)-1]G,以及用户私钥dA对应的公钥P的一种方式如下:
第一装置在[1,n-1]区间内随机选择一个整数c1;
第二装置在[1,n-1]区间内随机选择整数c2、c3、c;
第一装置计算g0=E(c1),将g0发送给第二装置;
第二装置接收到g0后,检查g0是否为零的加密结果,若是,则向第一装置返回出错提示,若不是,则第二装置利用g0、c2、c3,并使用第一装置的公钥的加法同态加密的加密运算,计算得到一个密文数g1,且使得计算得到的g1对应的明文数与(wc2c1+wc3)mod n模n同余,其中w是第二装置在[1,n-1]区间内随机选择的整数;
第二装置计算g1的方式包括:
g1=(((wc2)mod n)⊙(g0⊕E(w2n)))⊕E(((wc3)mod n)+w1n),
或g1=((((wc2)mod n)+w2n)⊙g0)⊕E(((wc3)mod n)+w1n),
其中w1、w2是只有第二装置知道的整数,w1、w2的取值范围不限于[1,n-1];
第二装置将g1发送给第一装置;
第一装置接收到g1后,计算g2=D(g1)mod n;
第一装置检查g2是否为零,若是,则两个装置重新选择c1、c2、c3、c,重新计算g0、g1、g2,直到g2不为零;
若g2不为零,则第一装置计算P1=[(g2)-1]G,将P1发送给第二装置;
第二装置计算Gc=[w]P1,则Gc即为[(c1c2+c3)-1]G;
第二装置计算P=[(c)-1]Gc-G,则P即为公钥[dA]G;
第二装置将Gc交给计算Q过程中需要使用Gc的装置,将公钥P发布。
10.一种基于权利要求6-9中任一项的数字签名协同生成***,其特征是:
所述***包括两个装置,两个装置分别作为所述数字签名协同生成方法中的第一装置和第二装置,所述两个装置按所述数字签名协同生成方法生成使用用户私钥dA针对消息M的SM2数字签名。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711066292.9A CN107872322B (zh) | 2017-11-02 | 2017-11-02 | 基于同态加密的数字签名协同生成方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711066292.9A CN107872322B (zh) | 2017-11-02 | 2017-11-02 | 基于同态加密的数字签名协同生成方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107872322A true CN107872322A (zh) | 2018-04-03 |
CN107872322B CN107872322B (zh) | 2020-08-04 |
Family
ID=61753484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711066292.9A Active CN107872322B (zh) | 2017-11-02 | 2017-11-02 | 基于同态加密的数字签名协同生成方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107872322B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108667625A (zh) * | 2018-07-19 | 2018-10-16 | 数安时代科技股份有限公司 | 协同sm2的数字签名方法 |
CN109361519A (zh) * | 2018-12-07 | 2019-02-19 | 武汉理工大学 | 一种改进的包含秘密的数的生成方法及*** |
CN109547199A (zh) * | 2018-11-19 | 2019-03-29 | 武汉大学 | 一种多方联合生成sm2数字签名的方法 |
CN110113165A (zh) * | 2019-04-24 | 2019-08-09 | 武汉理工大学 | 支持混合秘密共享的sm2数字签名协同生成方法及*** |
CN110401524A (zh) * | 2019-08-27 | 2019-11-01 | 武汉理工大学 | 一种借助同态加密的包含秘密的数的协同生成方法及*** |
CN110601841A (zh) * | 2019-11-01 | 2019-12-20 | 成都卫士通信息产业股份有限公司 | Sm2协同签名及解密方法、装置 |
CN110659535A (zh) * | 2018-06-28 | 2020-01-07 | 厦门本能管家科技有限公司 | 一种基于指纹识别的私钥生成方法及*** |
CN110912708A (zh) * | 2019-11-26 | 2020-03-24 | 武汉大学 | 一种基于sm9数字签名算法的环签名生成方法 |
CN110943828A (zh) * | 2019-11-05 | 2020-03-31 | 武汉理工大学 | 秘密数运算转换方法及*** |
CN114070564A (zh) * | 2020-07-31 | 2022-02-18 | 华为技术有限公司 | 数字签名的方法和装置 |
CN114978549A (zh) * | 2022-05-25 | 2022-08-30 | 武汉理工大学 | 签名者掌控签名制作数据的sm2数字签名生成方法及*** |
CN115037441A (zh) * | 2022-07-07 | 2022-09-09 | 三未信安科技股份有限公司 | 一种基于同态运算的sm2协同签名方法、装置及*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012156255A1 (en) * | 2011-05-13 | 2012-11-22 | Telefonica, S.A. | Procedure for a multiple digital signature |
CN106549770A (zh) * | 2017-01-13 | 2017-03-29 | 武汉理工大学 | Sm2数字签名生成方法及*** |
CN106656512A (zh) * | 2017-01-17 | 2017-05-10 | 武汉理工大学 | 支持门限密码的sm2数字签名生成方法及*** |
CN106850198A (zh) * | 2017-01-16 | 2017-06-13 | 武汉理工大学 | 基于多装置协同的sm2数字签名生成方法及*** |
CN107017993A (zh) * | 2017-04-01 | 2017-08-04 | 北京江南天安科技有限公司 | 一种多方联合密钥产生和数字签名方法及*** |
CN107124274A (zh) * | 2017-05-18 | 2017-09-01 | 深圳奥联信息安全技术有限公司 | 基于sm2的数字签名方法和装置 |
CN107294698A (zh) * | 2017-07-25 | 2017-10-24 | 西安电子科技大学 | 单密文同态计算的全同态加密方法 |
-
2017
- 2017-11-02 CN CN201711066292.9A patent/CN107872322B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012156255A1 (en) * | 2011-05-13 | 2012-11-22 | Telefonica, S.A. | Procedure for a multiple digital signature |
CN106549770A (zh) * | 2017-01-13 | 2017-03-29 | 武汉理工大学 | Sm2数字签名生成方法及*** |
CN106850198A (zh) * | 2017-01-16 | 2017-06-13 | 武汉理工大学 | 基于多装置协同的sm2数字签名生成方法及*** |
CN106656512A (zh) * | 2017-01-17 | 2017-05-10 | 武汉理工大学 | 支持门限密码的sm2数字签名生成方法及*** |
CN107017993A (zh) * | 2017-04-01 | 2017-08-04 | 北京江南天安科技有限公司 | 一种多方联合密钥产生和数字签名方法及*** |
CN107124274A (zh) * | 2017-05-18 | 2017-09-01 | 深圳奥联信息安全技术有限公司 | 基于sm2的数字签名方法和装置 |
CN107294698A (zh) * | 2017-07-25 | 2017-10-24 | 西安电子科技大学 | 单密文同态计算的全同态加密方法 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659535A (zh) * | 2018-06-28 | 2020-01-07 | 厦门本能管家科技有限公司 | 一种基于指纹识别的私钥生成方法及*** |
CN108667625A (zh) * | 2018-07-19 | 2018-10-16 | 数安时代科技股份有限公司 | 协同sm2的数字签名方法 |
CN108667625B (zh) * | 2018-07-19 | 2021-09-24 | 数安时代科技股份有限公司 | 协同sm2的数字签名方法 |
CN109547199B (zh) * | 2018-11-19 | 2021-07-02 | 武汉大学 | 一种多方联合生成sm2数字签名的方法 |
CN109547199A (zh) * | 2018-11-19 | 2019-03-29 | 武汉大学 | 一种多方联合生成sm2数字签名的方法 |
CN109361519A (zh) * | 2018-12-07 | 2019-02-19 | 武汉理工大学 | 一种改进的包含秘密的数的生成方法及*** |
CN109361519B (zh) * | 2018-12-07 | 2020-06-19 | 武汉理工大学 | 一种改进的包含秘密的数的生成方法及*** |
CN110113165A (zh) * | 2019-04-24 | 2019-08-09 | 武汉理工大学 | 支持混合秘密共享的sm2数字签名协同生成方法及*** |
CN110113165B (zh) * | 2019-04-24 | 2020-09-04 | 武汉理工大学 | 支持混合秘密共享的sm2数字签名协同生成方法及*** |
CN110401524A (zh) * | 2019-08-27 | 2019-11-01 | 武汉理工大学 | 一种借助同态加密的包含秘密的数的协同生成方法及*** |
CN110401524B (zh) * | 2019-08-27 | 2022-11-01 | 武汉理工大学 | 一种借助同态加密的包含秘密的数的协同生成方法及*** |
CN110601841A (zh) * | 2019-11-01 | 2019-12-20 | 成都卫士通信息产业股份有限公司 | Sm2协同签名及解密方法、装置 |
CN110601841B (zh) * | 2019-11-01 | 2022-06-14 | 成都卫士通信息产业股份有限公司 | Sm2协同签名及解密方法、装置 |
CN110943828B (zh) * | 2019-11-05 | 2021-01-08 | 武汉理工大学 | 秘密数运算转换方法及*** |
CN110943828A (zh) * | 2019-11-05 | 2020-03-31 | 武汉理工大学 | 秘密数运算转换方法及*** |
CN110912708B (zh) * | 2019-11-26 | 2021-04-27 | 武汉大学 | 一种基于sm9数字签名算法的环签名生成方法 |
CN110912708A (zh) * | 2019-11-26 | 2020-03-24 | 武汉大学 | 一种基于sm9数字签名算法的环签名生成方法 |
CN114070564A (zh) * | 2020-07-31 | 2022-02-18 | 华为技术有限公司 | 数字签名的方法和装置 |
CN114978549A (zh) * | 2022-05-25 | 2022-08-30 | 武汉理工大学 | 签名者掌控签名制作数据的sm2数字签名生成方法及*** |
CN114978549B (zh) * | 2022-05-25 | 2024-03-22 | 北京天威诚信电子商务服务有限公司 | 签名者掌控签名制作数据的sm2数字签名生成方法及*** |
CN115037441A (zh) * | 2022-07-07 | 2022-09-09 | 三未信安科技股份有限公司 | 一种基于同态运算的sm2协同签名方法、装置及*** |
CN115037441B (zh) * | 2022-07-07 | 2023-11-10 | 三未信安科技股份有限公司 | 一种基于同态运算的sm2协同签名方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
CN107872322B (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107872322A (zh) | 基于同态加密的数字签名协同生成方法及*** | |
CN109274503B (zh) | 分布式协同签名方法及分布式协同签名装置、软盾*** | |
CN107707358B (zh) | 一种ec-kcdsa数字签名生成方法及*** | |
CN107733648B (zh) | 一种基于身份的rsa数字签名生成方法及*** | |
CN107819585A (zh) | Sm9数字签名协同生成方法及*** | |
GB2538022A (en) | Multiple secrets in quorum based data processing | |
CN110719295B (zh) | 一种基于身份的面向食品数据安全的代理重加密方法与装置 | |
CN106603246A (zh) | 一种sm2数字签名分割生成方法及*** | |
CN107968710A (zh) | Sm9数字签名分离交互生成方法及*** | |
CN106850229A (zh) | 基于乘积秘密分割的sm2数字签名生成方法及*** | |
CN106656512A (zh) | 支持门限密码的sm2数字签名生成方法及*** | |
CN107086912B (zh) | 一种异构存储***中的密文转换方法、解密方法及*** | |
CN107819581B (zh) | 包含秘密的数和椭圆曲线点的生成方法及*** | |
CN109951292A (zh) | 精简的sm9数字签名分离交互生成方法及*** | |
CN107104793A (zh) | 一种数字签名生成方法及*** | |
CN110784300B (zh) | 一种基于乘法同态加密的密钥合成方法 | |
Shankar et al. | Improved Multisignature Scheme for Authenticity of Digital Document in Digital Forensics Using Edward‐Curve Digital Signature Algorithm | |
Abusukhon et al. | An authenticated, secure, and mutable multiple‐session‐keys protocol based on elliptic curve cryptography and text‐to‐image encryption algorithm | |
EP3462668A1 (en) | Plaintext equivalence proof techniques in communication systems | |
CN106534077B (zh) | 一种基于对称密码的可认证的代理重加密***及方法 | |
CN110798313B (zh) | 基于秘密动态共享的包含秘密的数的协同生成方法及*** | |
US20170359177A1 (en) | Method and System for Cryptographic Decision-making of Set Membership | |
CN107528696A (zh) | 一种隐藏私钥秘密的数字签名生成方法及*** | |
CN110401524B (zh) | 一种借助同态加密的包含秘密的数的协同生成方法及*** | |
CN114362912A (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 |