CN107528696B - 一种隐藏私钥秘密的数字签名生成方法及系统 - Google Patents
一种隐藏私钥秘密的数字签名生成方法及系统 Download PDFInfo
- Publication number
- CN107528696B CN107528696B CN201710891088.4A CN201710891088A CN107528696B CN 107528696 B CN107528696 B CN 107528696B CN 201710891088 A CN201710891088 A CN 201710891088A CN 107528696 B CN107528696 B CN 107528696B
- Authority
- CN
- China
- Prior art keywords
- devices
- digital signature
- mod
- private key
- calculated
- 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.)
- Active
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/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
-
- 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/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种隐藏私钥秘密的数字签名生成方法:m或m+1个装置使用随机生成的、与用户SM2私钥dA毫无关系的秘密c1,…,cm以及隐藏了私钥dA的c0=(c1c2…cm)‑1(1+dA)‑1 mod n,协同计算得到使用用户的SM2私钥dA针对消息的数字签名,其中c1,…,cm由m个不同装置保存、使用,c0由m个装置中的一个或第m+1个装置使用。基于本发明的方法,除了保存、使用c0的装置,其他装置使用的是与用户私钥无关的、随机选择的秘密。本发明的方法中的c0,c1,…,cm可不断更新,从而进一步提高了方法的安全性。本发明的方法在保证安全的同时能很好地满足《中华人民共和国电子签名法》的要求。
Description
技术领域
本发明属于信息安全技术领域,特别是一种隐藏私钥秘密的数字签名生成方法及系统。
背景技术
SM2是由国家密码管理局颁布的一种椭圆曲线公钥密码算法(参见《SM2椭圆曲线公钥密码算法》规范,国家密码管理局,2010年12月),基于此算法能实现数字签名、密钥交换及数据加密。但是,由于SM2算法独特的数字签名运算方式,通常的秘密共享(分割)方式及对应的基于秘密共享的密码运算方式,无法适合于使用SM2私钥进行数字签名的情形。针对此问题,人们提出了一些相应的技术方案。这些技术方案普遍采用的方法是将用户的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一旦分割、共享,秘密份额就不能改变(改变意味着私钥的改变),而秘密份额长时间保持不变,会增大被破解的风险。
发明内容
本发明的目的是提出一种能隐藏私钥秘密、能对秘密更新的数字签名生成方法以及相应的系统,以便进一步提高基于协同计算的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);多个整数相乘(包括整数符号相乘、常数与整数符号相乘),在不产生二义性的情况下,省略掉乘号“·”,如k1·k2简化为k1k2,3·c,简化位3c;mod n表示模n运算(modulo operation),对应于《SM2椭圆曲线公钥密码算法》规范(国家密码管理局,2010年12月)中的modn;还有,模n运算的算子mod n的优先级是最低的,如a+b mod n等同于(a+b)mod n,a-b mod n等同于(a-b)mod n,ab mod n等同于(ab)mod n。
本发明的隐藏私钥秘密的数字签名生成方法又包括基本方法和派生的方法,其中基本方法如下。
所述基本方法涉及m个装置,其中m≥2;
m个装置分别标号为第1号到第m号装置;
m个装置分别保存有[1,n-1]区间内的整数秘密c1,c2,…,cm,其中ci是由第i号装置保存的秘密,i=1,…,m;第1号装置同时保存有[1,n-1]区间内的整数c0;m个装置保存的秘密满足如下关系:
c0=(c1c2…cm)-1(1+dA)-1mod n,
其中,dA是用户的SM2私钥,n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶(SM2密码运算所使用的椭圆曲线点群是指由基点G生成的循环群);
(这里c0实际上是使用秘密c1,c2,…,cm对私钥秘密(1+dA)-1进行加密的结果,即加密的私钥秘密)
在初始化阶段预先计算得到:
Gd=[1+dA]G,
P=[dA]G,
其中,dA是用户的SM2私钥,G是SM2密码运算所使用的椭圆曲线点群的基点,P是dA对应的公钥;
将Gd分发给所述m个装置、将公钥P公开发布;
当需要使用用户的SM2私钥dA针对消息M进行数字签名时,m个装置按如下方式进行数字签名的生成(需要使用用户的SM2私钥dA、针对消息M进行数字签名的主体可以是调用这m个装置的密码应用程序、系统或密码模块,或者m个装置之一中的密码应用程序、系统):
第1号装置取G0为SM2椭圆曲线的零元(无穷远点);
第1号装置在[1,n-1]区间内随机选择一整数k1,计算G1=[c1]G0+[k1]Gd或G1=[c1](G0+[k1])Gd;
第1号装置将G1传送给下一个装置即第2号装置;
第i号装置接收到Gi-1后,i=2,…,m,在[1,n-1]区间内随机选择一整数ki,计算Gi=[ci]Gi-1+[ki]Gd或Gi=[ci](Gi-1+[ki]Gd);
若i=m,则转入计算r,否则,第i号装置将Gi传送给下一装置即第i+1号装置,直到第m号装置完成Gm的计算;
不同的装置计算Gi所采用的计算公式相同或者不同(独立选择);
完成Gm的计算后,由m个装置中的一个装置或者由m个装置之外的一个装置计算r=(e+x1)mod n,其中x1取自(x1,y1)=Gm,e是从用户标识和消息M导出的杂凑值(即散列值)(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范);
若得到的r、Gm满足:r≠0且[r]G+Gm不是SM2椭圆曲线点群的零元(无穷远点),则继续计算数字签名,否则,重新计算Gm和r(可以从G1从头开始重新计算),直到r≠0且[r]G+Gm不是SM2椭圆曲线点群的零元(无穷远点);
完成r的计算后转入s的计算;
第1号装置计算s0=(c0r)mod n(即s0=(c0·r)mod n);
第1号装置按如下方式计算s1:
若之前计算G1采用公式G1=[c1]G0+[k1]Gd,则s1=(c1s0+k1)mod n;
若之前计算G1采用公式G1=[c1](G0+[k1])Gd,则s1=c1(s0+k1)mod n;
(此时计算s1的k1与计算G1的k1相同)
第1号装置将s1传送给下一个装置即第2号装置;
第i号装置接收到si-1后,i=2,…,m,按如下方式计算si:
若之前计算Gi采用公式Gi=[ci]Gi-1+[ki]Gd,则si=(cisi-1+ki)mod n;
若之前计算Gi采用公式Gi=[ci](Gi-1+[ki]Gd),则si=ci(si-1+ki)mod n;
(此时计算si的ki与计算Gi的ki相同)
若i=m,则转入计算s,否则,第i号装置将si传送给下一装置即第i+1号装置,直到第m号装置完成sm的计算;
第m号装置或其他装置计算得到s=(sm-r)mod n;
则(r,s)就是生成的针对消息M的数字签名。
最后计算得到(r,s)的装置,利用消息M及用户私钥dA对应的公钥验证数字签名(r,s)的有效性,若无效则m个装置重新进行数字签名的生成。
在以上所述方法中,c0即便公开以上所述方法也是安全的,除非m个装置共谋,c0即便公开了攻击者也无法得到用户的SM2私钥dA,但不公开,更安全。
若dA是预先知道的(已生成),则在初始化阶段,预先知道dA的装置按如下方式选取或计算ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:
在[1,n-1]区间中随机选择m个整数ci,i=1,…,m,分别交由m个装置安全保存,其中ci是第i号装置保存的整数秘密;
计算得到c0=(c1c2…cm)-1(1+dA)-1mod n;
计算得到Gd=[1+dA]G;
计算得到P=[dA]G;
在完成c0、Gd和P的计算后,将计算得到的Gd分发给m个装置,将c0交由第1号装置保存,将公钥P发布,将dA销毁,将不属于自身保存、使用的ci销毁,i=0,1,…,m;
所述预先知道dA的装置是m个装置中的一个装置或者m个装置之外的一个装置(若是m个装置中的一个装置,则对于基本方法,通常是第1号装置,对于派生的方法通常是第0号装置)。
若dA不是预先知道的(尚未生成),则在初始化阶段,m个装置按如下方式选取ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:
m个装置中的每个装置分别在[1,n-1]区间中随机选择一个整数ci,i=1,…,m,其中ci是第i号装置随机选择的整数;
第1号装置在[1,n-1]区间中还随机选择一个整数c0;
m个装置按如下方式计算得到Gd=[1+dA]G:
第1号装置计算P0=[(c0)-1]G,P1=[(c1)-1]P0;
第1号装置将P1传送给下一个装置即第2号装置;
第i号装置接收到Pi-1后,i=2,…,m,计算Pi=[(ci)-1]Pi-1;
若i=m,则Gd=Pm即为[1+dA]G,否则,第i号装置将Pi传送给下一装置即第i+1号装置,直到第m号装置完成Pm的计算;
第m号装置(或其他装置)计算得到P=Pm-G;
若P不是SM2椭圆曲线点群的零元(无穷远点),则P即为用户私钥dA对应的SM2公钥,否则,重新开始ci的选择,i=0,1,…,m,重新计算Gd、P,直到P不是SM2椭圆曲线点群的零元(无穷远点);
完成Gd和P计算后,将计算得到的Gd分发给m个装置,将公钥P发布。
在计算Gi过程中,i=1,…m的,一旦出现Gi是SM2椭圆曲线点群的零元(无穷远点),则重新进行Gi的计算(通常全部装置从头开始,重新计算G1,…,Gi),直到Gi不是SM2椭圆曲线点群的零元(无穷远点)。
若上述计算过程中,在计算得到Gm、r后,仅检查r是否为零,不检查[r]G+Gm是否是SM2椭圆曲线点群的零元(无穷远点),且仅在r=0时重新进行Gm、r的计算(只要r≠0就不重新进行Gm、r计算),则:
在计算得到s后,若检查发现(s+r)mod n=0,则放弃计算得到的s,重新计算Gm、r(比如从G1开始从头计算,或仅重新计算Gm),重新计算s,重复此过程,直到(s+r)mod n≠0。
第i号装置,i=1或,…,或m,按如下方式更新ci(m个装置无需同时更新ci):
在[1,n-1]区间内随机选择一个整数ti,用(tici)mod n更新ci(作为新的ci值);
将ti交给保存有c0的装置(对于基本方法,若i=1,则是交给自己;对于后面所述的派生的方法,则是交给第0号装置);
保存有c0的装置用((ti)-1c0)mod n更新c0(作为新的c0值)(这样并不会造成ci的泄露);
若第i号装置取ti=bi(ci)-1mod n,其中bi是[1,n-1]区间内随机选择的一个整数,则第i号装置将其秘密从ci替换成了bi;
保存有c0的装置按如下方式主动更新c0:
在[1,n-1]区间内随机选择一个整数t0,用(t0c0)mod n更新c0(作为新的c0值);
将t0交给第i号装置,i=1或,…,或m(从第1到第m号装置中随机选择一个装置,对于基本方法,若i=1,则是交给自己;对于后面所述的派生的方法,则是交给第0号装置);
第i号装置用((t0)-1ci)mod n更新ci(作为新的ci值)。
基于以上所述的隐藏私钥秘密的数字签名生成方法的基本方法,可以构建一个隐藏私钥秘密的数字签名生成系统,所述系统包括m个装置,m个装置分别被标号为第1号到第m号装置,所述m个装置按所述数字签名生成方法,使用c0,c1,c2,…,cm,生成针对消息的SM2数字签名。
在上述隐藏私钥秘密的数字签名生成方法的基本方法的基础上,可派生出一种隐藏私钥秘密的数字签名生成方法,具体如下。
所述派生的数字签名生成方法涉及m+1个装置,其中m≥2;
m+1个装置分别标号为第0号装置,第1号装置,…,第m号装置;
所述派生的数字签名生成方法与派生前的原方法的差别在于:
满足关系c0=(c1c2…cm)-1(1+dA)-1mod n的c0作为秘密由第0号装置保存使用,其中c1,…,cm分别为第1号到第m号装置保存的秘密;
当需要使用用户的SM2私钥dA针对消息M进行数字签名时,第0号装置在[1,n-1]区间内随机选择一个整数k0,计算G0=[k0]Gd或G0=[c0k0]Gd,然后将G0传送给第1号装置,之后第1号到第m号装置,基于G0按前述隐藏私钥秘密的数字签名生成方法的基本方法中的协同计算方式,计算得到满足条件的r;
计算得到r后,第0号装置按如下方式计算得到s0:
若之前计算G0采用公式是G0=[k0]Gd,则s0=(k0+c0r)mod n;
若之前计算G0采用公式是G0=[c0k0]Gd,则s0=(c0k0+c0r)mod n;
(此时的k0与G0计算的k0相同)
之后,第1号到第m号装置,基于s0按前述隐藏私钥秘密的数字签名生成方法的基本方法中的协同计算方式,计算得到sm;
之后,第m号装置或其他装置计算得到s=(sm-r)mod n;
则(r,s)即为针对消息M的数字签名。
(这里,在此方案中,c0是作为安全秘密使用的,其中m个装置作弊也无法破解私钥dA)
对于上述派生的数字签名方法,其初始化如下。
若dA是预先知道的(已生成),则在初始化阶段,预先知道dA的装置将计算得到的c0交由第0号装置保存使用;
若dA不是预先知道的(尚未生成),则在初始化阶段,m+1个装置中的每个装置分别在[1,n-1]区间中随机选择一个整数ci,i=0,1,…,m,其中ci是第i号装置随机选择的整数;第0号装置计算得到P0=[(c0)-1]G,将P0交给第1号装置,之后由第1号到第m号装置基于P0以及ci,i=1,…,m,按前述方式计算得到Gd、P;
将Gd分发给所述m+1装置,将P公开发布;
在对c0更新时(主动或被动更新),c0的更新操作由第0号装置完成。
在以上所述派生的数字签名生成方法的基础上,可构建相应的数字签名生成系统,所构建的数字签名生成系统包括m+1个装置,其中m≥2;m+1个装置分别标号为第0号装置,第1号装置,…,第m号装置;所述m+1个装置按所述派生的数字签名生成方法,使用c0,c1,c2,…,cm,生成针对消息的SM2数字签名。
与通常的直接分割私钥秘密(1+dA)-1,利用分割后的私钥秘密通过协同运算得到数字签名不同,本发明实际上是利用多个密钥c1,…,cm对私钥秘密(1+dA)-1进行加密,然后使用加密后的私钥秘密即c0以及加密密钥c1,…,cm通过协同计算得到数字签名。
在本发明的方法中,由于c0=(c1c2…cm)-1(1+dA)-1mod n,因此,实际上由c0隐藏了私钥dA的秘密(即隐藏了(1+dA)-1),而在dA未预先生成的情况下,选择c0相当于以一种非常间接、保密的方式生成dA。
从以上描述可以看到,基于本发明的方法,m或m+1个装置使用随机生成的、与用户SM2私钥dA毫无关系的秘密c1,…,cm,以及隐藏了用户SM2私钥dA秘密的c0,协同计算得到使用用户的SM2私钥dA针对一个消息的数字签名;m或m+1个装置使用c1,…,cm以及c0的协同计算过程实际上是在不暴露c1,…,cm以及私钥秘密(1+dA)-1的情况下对c0的解密过程。
在本发明的方法中,包含私钥秘密的c0原本是无需保密的,只要c1,…,cm保护好,本发明的方法本身就是安全的,但是,在本发明中,c0也被当作秘密使用,这样就进一步提高了方法的安全性;再有,本发明中的秘密c0,c1,…,cm可不断更新,从而进一步提高方法的安全性。
《中华人民共和国电子签名法》要求电子签名生成数据由签名者控制,而本发明的方法很好地满足了《电子签名法》的要求。基于本发明的方法,无论用户的私钥dA是预先已产生的还是非预先已产生的,只要使用c0的装置是拥有私钥的用户的装置,比如用户的移动终端,那么,由于其他装置没有接触到用户私钥的任何秘密,因此用户私钥完全在用户的控制之下。
本专利申请的一个突出优点是,m个装置的秘密c1,…,cm可以保存在一个安全中心,而私钥拥有者保护好被加密的c0;当某个装置的秘密ci丢失时,可从安全中心恢复ci,但安全中心无法得到用户的私钥;其他的SM2数字签名协同计算方案无法做到这点。
附图说明
无。
具体实施方式
下面结合实施例对本发明作进一步的描述。以下实施例仅是本发明列举的几个可能的实施例,不代表全部可能的实施例,不作为对本发明的限定。
实施例1、
此实施例包括m个分别标号为第1号到第m号的装置,其中第1号装置有用户的预先生成的dA;在初始化阶段,第1号装置按如下方式选取或计算ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:
在[1,n-1]区间中随机选择m个整数ci,i=1,…,m,分别交由m个装置安全保存,其中ci是第i号装置保存的整数秘密(c1由第1号装置自己保存);
计算得到c0=(c1c2…cm)-1(1+dA)-1mod n;
计算得到Gd=[1+dA]G;
计算得到P=[dA]G;
在完成c0、Gd和P的计算后,c0由第1号装置自己保存,将计算得到的Gd分发给m个装置,将公钥P发布,将dA销毁,第1号装置将不属于自身保存、使用的ci销毁(i=2,…,m);
之后,当需要使用用户私钥dA针对消息M进行SM2数字签名时,m个装置按所述隐藏私钥秘密的数字签名生成方法的基本方法生成针对消息M的SM2数字签名。
实施例2、
此实施例包括m个分别标号为第1号到第m号的装置,m个装置之外的一个装置有用户的预先生成的dA;在初始化阶段,预先知道dA的装置按如下方式选取或计算ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:
在[1,n-1]区间中随机选择m个整数ci,i=1,…,m,分别交由m个装置安全保存,其中ci是第i号装置保存的整数秘密;
计算得到c0=(c1c2…cm)-1(1+dA)-1mod n;
计算得到Gd=[1+dA]G;
计算得到P=[dA]G;
在完成c0、Gd和P的计算后,将计算得到的Gd分发给m个装置,将c0交由第1号装置保存,将公钥P发布,将dA销毁,将ci销毁(i=0,1,…,m);
之后,当需要使用用户私钥dA针对消息M进行SM2数字签名时,m个装置按所述隐藏私钥秘密的数字签名生成方法的基本方法生成针对消息M的SM2数字签名。
实施例3、
此实施例包括m个分别标号为第1号到第m号的装置,没有装置有用户的预先生成的SM2私钥dA;在初始化阶段,m个装置按如下方式选取ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:
m个装置中的每个装置分别在[1,n-1]区间中随机选择一个整数ci,i=1,…,m,其中ci是第i号装置随机选择的整数;
第1号装置在[1,n-1]区间中还随机选择一个整数c0;
m个装置按如下方式计算得到Gd=[1+dA]G:
第1号装置计算P0=[(c0)-1]G,P1=[(c1)-1]P0;
第1号装置将P1传送给下一个装置即第2号装置;
第i号装置接收到Pi-1后,i=2,…,m,计算Pi=[(ci)-1]Pi-1;
若i=m,则Gd=Pm即为[1+dA]G,否则,第i号装置将Pi传送给下一装置即第i+1号装置,直到第m号装置完成Pm的计算;
第m号装置(或其他装置)计算得到P=Pm-G;
若P不是SM2椭圆曲线点群的零元(无穷远点),则P即为用户私钥dA对应的SM2公钥,否则,重新开始ci的选择,i=0,1,…,m,重新计算Gd、P,直到P不是SM2椭圆曲线点群的零元(无穷远点);
完成Gd和P计算后,将计算得到的Gd分发给m个装置,将公钥P发布;
之后,当需要使用用户私钥dA针对消息M进行SM2数字签名时,m个装置按所述隐藏私钥秘密的数字签名生成方法的基本方法生成针对消息M的SM2数字签名。
实施例4、
此实施例包括m+1个分别标号为第0号、第1号到第m号的装置,其中第0号装置有用户的预先生成的SM2私钥dA;在初始化阶段,第0号装置按如下方式选取或计算ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:
在[1,n-1]区间中随机选择m个整数ci,i=1,…,m,分别交由m个装置安全保存,其中ci是第i号装置保存的整数秘密;
计算得到c0=(c1c2…cm)-1(1+dA)-1mod n;
计算得到Gd=[1+dA]G;
计算得到P=[dA]G;
在完成c0、Gd和P的计算后,c0由第0号装置自己保存,将计算得到的Gd分发给m个装置,将公钥P发布,将dA销毁,第0号装置将不属于自身保存、使用的ci销毁(i=1,…,m);
之后,当需要使用用户私钥dA针对消息M进行SM2数字签名时,m+1个装置按所述隐藏私钥秘密的数字签名生成方法的派生的方法生成针对消息M的SM2数字签名。
实施例5、
此实施例包括m+1个分别标号为第0号、第1号到第m号的装置,没有装置有用户的预先生成的dA;在初始化阶段,m个装置按如下方式选取ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:
m+1个装置中的每个装置分别在[1,n-1]区间中随机选择一个整数ci,i=0,1,…,m,其中ci是第i号装置随机选择的整数;
m个装置按如下方式计算得到Gd=[1+dA]G:
第0号装置计算P0=[(c0)-1]G,将P0传送给第1号装置;
第1号装置计算P1=[(c1)-1]P0,P1传送给下一个装置即第2号装置;
第i号装置接收到Pi-1后,i=2,…,m,计算Pi=[(ci)-1]Pi-1;
若i=m,则Gd=Pm即为[1+dA]G,否则,第i号装置将Pi传送给下一装置即第i+1号装置,直到第m号装置完成Pm的计算;
第m号装置(或其他装置)计算得到P=Pm-G;
若P不是SM2椭圆曲线点群的零元(无穷远点),则P即为用户私钥dA对应的SM2公钥,否则,重新开始ci的选择,i=0,1,…,m,重新计算Gd、P,直到P不是SM2椭圆曲线点群的零元(无穷远点);
完成Gd和P计算后,将计算得到的Gd分发给m个装置,将公钥P发布;
之后,当需要使用用户私钥dA针对消息M进行SM2数字签名时,m+1个装置按所述隐藏私钥秘密的数字签名生成方法的派生的方法生成针对消息M的SM2数字签名。
基于本发明的方法可构建相应的隐藏私钥秘密的数字签名生成系统,此系统包括m或m+1个装置,m≥2,其中一个装置可以是用户的移动终端(比如,作为基本方法中的第1号装置,或派生方法中的第0号装置),剩余装置是位于网络上的密码服务器,或者所有装置都是位于网络上的密码服务器;此m或m+1个装置通过实施本发明的基本方法或派生的方法,生成使用用户的SM2私钥dA针对消息的数字签名;所构建的数字签名生成系统可用于前述实例1到实施5。
其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。
Claims (10)
1.一种隐藏私钥秘密的数字签名生成方法,其特征是:
所述方法涉及m个装置,其中m≥2;
m个装置分别标号为第1号到第m号装置;
m个装置分别保存有[1,n-1]区间内的整数秘密c1,c2,…,cm,其中ci是由第i号装置保存的秘密,i=1,…,m;第1号装置同时保存有[1,n-1]区间内的整数c0;m个装置保存的秘密满足如下关系:
c0=(c1c2…cm)-1(1+dA)-1mod n,
其中,dA是用户的SM2私钥,n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶;
在初始化阶段预先计算得到:
Gd=[1+dA]G,
P=[dA]G,
其中,dA是用户的SM2私钥,G是SM2密码运算所使用的椭圆曲线点群的基点,P是dA对应的公钥;
将Gd分发给所述m个装置、将公钥P公开发布;
当需要使用用户的SM2私钥dA针对消息M进行数字签名时,m个装置按如下方式进行数字签名的生成:
第1号装置取G0为SM2椭圆曲线的零元;
第1号装置在[1,n-1]区间内随机选择一整数k1,计算G1=[c1]G0+[k1]Gd或G1=[c1](G0+[k1])Gd;
第1号装置将G1传送给下一个装置即第2号装置;
第i号装置接收到Gi-1后,i=2,…,m,在[1,n-1]区间内随机选择一整数ki,计算Gi=[ci]Gi-1+[ki]Gd或Gi=[ci](Gi-1+[ki]Gd);
若i=m,则转入计算r,否则,第i号装置将Gi传送给下一装置即第i+1号装置,直到第m号装置完成Gm的计算;
不同的装置计算Gi所采用的计算公式相同或者不同;
完成Gm的计算后,由m个装置中的一个装置或者由m个装置之外的一个装置计算r=(e+x1)mod n,其中x1取自(x1,y1)=Gm,e是从用户标识和消息M导出的杂凑值;
若得到的r、Gm满足:r≠0且[r]G+Gm不是SM2椭圆曲线点群的零元,则继续计算数字签名,否则,重新计算Gm和r,直到r≠0且[r]G+Gm不是SM2椭圆曲线点群的零元;
完成r的计算后转入s的计算;
第1号装置计算s0=(c0r)mod n;
第1号装置按如下方式计算s1:
若之前计算G1采用公式G1=[c1]G0+[k1]Gd,则s1=(c1s0+k1)mod n;
若之前计算G1采用公式G1=[c1](G0+[k1])Gd,则s1=c1(s0+k1)mod n;
第1号装置将s1传送给下一个装置即第2号装置;
第i号装置接收到si-1后,i=2,…,m,按如下方式计算si:
若之前计算Gi采用公式Gi=[ci]Gi-1+[ki]Gd,则si=(cisi-1+ki)mod n;
若之前计算Gi采用公式Gi=[ci](Gi-1+[ki]Gd),则si=ci(si-1+ki)mod n;
若i=m,则转入计算s,否则,第i号装置将si传送给下一装置即第i+1号装置,直到第m号装置完成sm的计算;
第m号装置或其他装置计算得到s=(sm-r)mod n;
则(r,s)就是生成的针对消息M的数字签名。
2.根据权利要求1所述的隐藏私钥秘密的数字签名生成方法,其特征是:
若dA是预先知道的,则在初始化阶段,预先知道dA的装置按如下方式选取或计算ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:
在[1,n-1]区间中随机选择m个整数ci,i=1,…,m,分别交由m个装置安全保存,其中ci是第i号装置保存的整数秘密;
计算得到c0=(c1c2…cm)-1(1+dA)-1mod n;
计算得到Gd=[1+dA]G;
计算得到P=[dA]G;
在完成c0、Gd和P的计算后,将计算得到的Gd分发给m个装置,将c0交由第1号装置保存,将dA对应的公钥P发布,将dA销毁,将不属于自身保存、使用的ci销毁,i=0,1,…,m;
所述预先知道dA的装置是m个装置中的一个装置或者m个装置之外的一个装置。
3.根据权利要求1所述的隐藏私钥秘密的数字签名生成方法,其特征是:
若dA不是预先知道的,则在初始化阶段,m个装置按如下方式选取ci,i=0,1,…,m,计算得到Gd=[1+dA]G,以及用户私钥dA对应的公钥P:
m个装置中的每个装置分别在[1,n-1]区间中随机选择一个整数ci,i=1,…,m,其中ci是第i号装置随机选择的整数;
第1号装置在[1,n-1]区间中还随机选择一个整数c0;
m个装置按如下方式计算得到Gd=[1+dA]G:
第1号装置计算P0=[(c0)-1]G,P1=[(c1)-1]P0;
第1号装置将P1传送给下一个装置即第2号装置;
第i号装置接收到Pi-1后,i=2,…,m,计算Pi=[(ci)-1]Pi-1;
若i=m,则Gd=Pm即为[1+dA]G,否则,第i号装置将Pi传送给下一装置即第i+1号装置,直到第m号装置完成Pm的计算;
第m号装置计算得到P=Pm-G;
若P不是SM2椭圆曲线点群的零元,则P即为用户私钥dA对应的SM2公钥,否则,重新开始ci的选择,i=0,1,…,m,重新计算Gd、P,直到P不是SM2椭圆曲线点群的零元;
完成Gd和P计算后,将计算得到的Gd分发给m个装置,将公钥P发布。
4.根据权利要求1所述的隐藏私钥秘密的数字签名生成方法,其特征是:
在计算Gi过程中,i=1,…,m,一旦出现Gi是SM2椭圆曲线点群的零元,则重新进行Gi的计算,直到Gi不是SM2椭圆曲线点群的零元。
5.根据权利要求1所述的隐藏私钥秘密的数字签名生成方法,其特征是:
若上述计算过程中,在计算得到Gm、r后,仅检查r是否为零,不检查[r]G+Gm是否是SM2椭圆曲线点群的零元,且仅在r=0时重新进行Gm、r的计算,则:
在计算得到s后,若检查发现(s+r)mod n=0,则放弃计算得到的s,重新计算Gm、r,重新计算s,重复此过程,直到(s+r)mod n≠0。
6.根据权利要求1所述的隐藏私钥秘密的数字签名生成方法,其特征是:
第i号装置,i=1或,…,或m,按如下方式更新ci:
在[1,n-1]区间内随机选择一个整数ti,用(tici)mod n更新ci;
将ti交给保存有c0的装置;
保存有c0的装置用((ti)-1c0)mod n更新c0;
若第i号装置取ti=bi(ci)-1mod n,其中bi是[1,n-1]区间内随机选择的一个整数,则第i号装置将其秘密从ci替换成了bi;
保存有c0的装置按如下方式主动更新c0:
在[1,n-1]区间内随机选择一个整数t0,用(t0c0)mod n更新c0;
将t0交给第i号装置,i=1或,…,或m;
第i号装置用((t0)-1ci)mod n更新ci。
7.一种基于权利要求1-6中任一项的隐藏私钥秘密的数字签名生成方法的隐藏私钥秘密的数字签名生成系统,其特征是:
所述系统包括m个装置,m个装置分别被标号为第1号到第m号装置,所述m个装置按所述数字签名生成方法,使用c0,c1,c2,…,cm,生成针对消息的SM2数字签名。
8.一种从权利要求1-6中任一项所述的隐藏私钥秘密的数字签名生成方法派生的数字签名生成方法,其特征是:
所述派生的数字签名生成方法涉及m+1个装置,其中m≥2;
m+1个装置分别标号为第0号装置,第1号装置,…,第m号装置;
所述派生的数字签名生成方法与派生前的原方法的差别在于:
满足关系c0=(c1c2…cm)-1(1+dA)-1mod n的c0作为秘密由第0号装置保存使用,其中c1,…,cm分别为第1号到第m号装置保存的秘密;
当需要使用用户的SM2私钥dA针对消息M进行数字签名时,第0号装置在[1,n-1]区间内随机选择一个整数k0,计算G0=[k0]Gd或G0=[c0k0]Gd,然后将G0传送给第1号装置,之后第1号到第m号装置,基于G0按前述派生前的隐藏私钥秘密的数字签名生成方法中的协同计算方式,计算得到满足条件的r;
计算得到r后,第0号装置按如下方式计算得到s0:
若之前计算G0采用公式是G0=[k0]Gd,则s0=(k0+c0r)mod n;
若之前计算G0采用公式是G0=[c0k0]Gd,则s0=(c0k0+c0r)mod n;
之后,第1号到第m号装置,基于s0按前述派生前的隐藏私钥秘密的数字签名生成方法中的协同计算方式,计算得到sm;
之后,第m号装置或其他装置计算得到s=(sm-r)mod n;
则(r,s)即为针对消息M的数字签名。
9.根据权利要求8所述的派生的数字签名生成方法,其特征是:
若dA是预先知道的,则在初始化阶段,预先知道dA的装置将计算得到的c0交由第0号装置保存使用;
若dA不是预先知道的,则在初始化阶段,m+1个装置中的每个装置分别在[1,n-1]区间中随机选择一个整数ci,i=0,1,…,m,其中ci是第i号装置随机选择的整数;第0号装置计算得到P0=[(c0)-1]G,将P0交给第1号装置,之后由第1号到第m号装置基于P0以及ci,i=1,…,m,计算得到Gd、P;
将Gd分发给所述m+1装置,将P公开发布;
在对c0更新时,c0的更新操作由第0号装置完成。
10.一种基于权利要求8所述的派生的数字签名生成方法的数字签名生成系统,其特征是:
所述数字签名生成系统包括m+1个装置,其中m≥2;m+1个装置分别标号为第0号装置,第1号装置,…,第m号装置;所述m+1个装置按所述派生的数字签名生成方法,使用c0,c1,c2,…,cm,生成针对消息的SM2数字签名。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710891088.4A CN107528696B (zh) | 2017-09-27 | 2017-09-27 | 一种隐藏私钥秘密的数字签名生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710891088.4A CN107528696B (zh) | 2017-09-27 | 2017-09-27 | 一种隐藏私钥秘密的数字签名生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107528696A CN107528696A (zh) | 2017-12-29 |
CN107528696B true CN107528696B (zh) | 2020-01-14 |
Family
ID=60737619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710891088.4A Active CN107528696B (zh) | 2017-09-27 | 2017-09-27 | 一种隐藏私钥秘密的数字签名生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107528696B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108923911A (zh) * | 2018-07-12 | 2018-11-30 | 广州安研信息科技有限公司 | Rsa云签名生成方法 |
CN110138567B (zh) * | 2019-05-22 | 2021-11-26 | 广州安研信息科技有限公司 | 一种基于ecdsa的协同签名方法 |
CN110299998B (zh) * | 2019-07-04 | 2020-09-04 | 武汉理工大学 | 借助中间参数的sm9数字签名协同生成方法及系统 |
CN115314207A (zh) * | 2022-07-04 | 2022-11-08 | 武汉理工大学 | 一种sm2签名制作数据的安全可控使用方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3691726B2 (ja) * | 2000-05-30 | 2005-09-07 | 日本電信電話株式会社 | 部分ブラインド署名方式 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101344402B1 (ko) * | 2010-08-12 | 2013-12-26 | 한국전자통신연구원 | Rsa 서명 방법 및 장치 |
CN106712942B (zh) * | 2017-01-10 | 2019-08-23 | 武汉理工大学 | 基于秘密共享的sm2数字签名生成方法及系统 |
CN106549770B (zh) * | 2017-01-13 | 2019-07-12 | 武汉理工大学 | Sm2数字签名生成方法及系统 |
CN106850198B (zh) * | 2017-01-16 | 2019-10-25 | 武汉理工大学 | 基于多装置协同的sm2数字签名生成方法及系统 |
CN106656512B (zh) * | 2017-01-17 | 2019-07-09 | 武汉理工大学 | 支持门限密码的sm2数字签名生成方法及系统 |
CN106603231B (zh) * | 2017-01-20 | 2019-08-23 | 武汉理工大学 | 基于去秘密化的分布式sm2数字签名生成方法及系统 |
CN106603246B (zh) * | 2017-01-22 | 2019-05-24 | 武汉理工大学 | 一种sm2数字签名分割生成方法及系统 |
CN106850229B (zh) * | 2017-01-22 | 2019-10-25 | 武汉理工大学 | 基于乘积秘密分割的sm2数字签名生成方法及系统 |
CN107104793B (zh) * | 2017-04-12 | 2019-10-25 | 武汉理工大学 | 一种数字签名生成方法及系统 |
-
2017
- 2017-09-27 CN CN201710891088.4A patent/CN107528696B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3691726B2 (ja) * | 2000-05-30 | 2005-09-07 | 日本電信電話株式会社 | 部分ブラインド署名方式 |
Also Published As
Publication number | Publication date |
---|---|
CN107528696A (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107872322B (zh) | 基于同态加密的数字签名协同生成方法及系统 | |
US10211981B2 (en) | System and method for generating a server-assisted strong password from a weak secret | |
CN107528696B (zh) | 一种隐藏私钥秘密的数字签名生成方法及系统 | |
CN106603246B (zh) | 一种sm2数字签名分割生成方法及系统 | |
US11874935B2 (en) | Protecting data from brute force attack | |
CN107483205B (zh) | 一种基于加密的私钥秘密的数字签名生成方法及系统 | |
US20140006806A1 (en) | Effective data protection for mobile devices | |
CN106656512B (zh) | 支持门限密码的sm2数字签名生成方法及系统 | |
CN106603231B (zh) | 基于去秘密化的分布式sm2数字签名生成方法及系统 | |
CN106850229B (zh) | 基于乘积秘密分割的sm2数字签名生成方法及系统 | |
CN111277412B (zh) | 基于区块链密钥分发的数据安全共享系统及方法 | |
CN109274492B (zh) | 自安全的紧耦合秘密共享方法 | |
Jiang et al. | SDSS-MAC: Secure data sharing scheme in multi-authority cloud storage systems | |
CN109951292B (zh) | 精简的sm9数字签名分离交互生成方法及系统 | |
CN107104793B (zh) | 一种数字签名生成方法及系统 | |
CN109361519B (zh) | 一种改进的包含秘密的数的生成方法及系统 | |
CN113098681B (zh) | 云存储中口令增强且可更新的盲化密钥管理方法 | |
CN110784300B (zh) | 一种基于乘法同态加密的密钥合成方法 | |
CN106850584B (zh) | 一种面向客户/服务器网络的匿名认证方法 | |
CN113965320A (zh) | 一种支持快速撤销的密文策略属性加密方法 | |
CN111490967B (zh) | 一种提供用户友好的强认证和匿名认证的统一身份认证方法和系统 | |
JP5125682B2 (ja) | 鍵共有システム | |
CN115809459A (zh) | 软件密码模块的数据保护及解密方法、系统、设备及介质 | |
CN115314207A (zh) | 一种sm2签名制作数据的安全可控使用方法及系统 | |
CN114139187A (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 |