CN110943842B - 一种sm9数字签名安全协同生成方法及系统 - Google Patents

一种sm9数字签名安全协同生成方法及系统 Download PDF

Info

Publication number
CN110943842B
CN110943842B CN201911133574.5A CN201911133574A CN110943842B CN 110943842 B CN110943842 B CN 110943842B CN 201911133574 A CN201911133574 A CN 201911133574A CN 110943842 B CN110943842 B CN 110943842B
Authority
CN
China
Prior art keywords
devices
calculated
parameter
digital signature
mod
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
Application number
CN201911133574.5A
Other languages
English (en)
Other versions
CN110943842A (zh
Inventor
龙毅宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University of Technology WUT
Original Assignee
Wuhan University of Technology WUT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan University of Technology WUT filed Critical Wuhan University of Technology WUT
Priority to CN201911133574.5A priority Critical patent/CN110943842B/zh
Publication of CN110943842A publication Critical patent/CN110943842A/zh
Application granted granted Critical
Publication of CN110943842B publication Critical patent/CN110943842B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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)
  • Storage Device Security (AREA)

Abstract

装置i有秘密dAi,i=1,…,m,且dA1+…+dAm=dA,dA为用户SM9私钥;当需用dA对消息M进行签名时,计算得到w=gB^(r1r2…rm),其中^是幂运算,gB=e(P1,Ppub)^b,b是[1,n‑1]内的保密或非保密整数,ri是装置i在[1,n‑1]内随机选择的整数,n为SM9群的阶;计算h=H2(M||w,n);计算得到Qi=[m‑1br1r2…rm]dA或Qi=[br1r2…rm]dAi,i=1,…,m,且Qi由装置i最后使用ri计算得到;装置i计算Si=Qi+[‑h]dAi,i=1,…,m;一个装置计算S=S1+S2+…+Sm;则(h,S)是针对消息M的数字签名。

Description

一种SM9数字签名安全协同生成方法及系统
技术领域
本发明属于信息安全技术领域,特别是一种SM9数字签名安全协同生成方法及系统。
背景技术
SM9是由国家密码管理局颁布的一种基于双线性映射(配对运算)的标识密码算法,其中的双线性映射(配对运算)为:
e:G1×G2→GT时,其中G1、G2是加法循环群,GT是一个乘法循环群,G1、G2、GT的阶是素数n(注:在SM9规范中,G1、G2、GT的阶用的是大写字母N,本专利申请采用小写n),即若P、Q、R分别为G1、G2中的元,则e(P,Q)为GT中的元,且:
e(P+R,Q)=e(P,Q)e(R,Q),
e(P,Q+R)=e(P,Q)e(P,R),
e(aP,bQ)=e(P,Q)ab
基于SM9密码算法能实现基于标识的数字签名、密钥交换及数据加密。在SM9密码算法中,使用用户的SM9私钥dA针对消息M生成数字签名的过程如下:
计算得到w=g^r,这里符号^表示幂运算(g的r次幂),r是在[1,n-1]区间内随机选择的整数,n是SM9密码算法的群G1、G2、GT的阶,g=e(P1,Ppub),P1为G1中的生成元,Ppub为主公钥(即Ppub=[s]P2,s为主私钥或主密钥,P2为G2中的生成元,参见SM9规范;注意,这里的主私钥或主密钥,主公钥,用户标识私钥使用的符号与SM9规范略有不同);
然后,计算h=H2(M||w,n),其中H2为SM9中规定的散列函数,M||w表示M和w的字串合并,n为G1、G2、GT的阶(参见SM9规范);
若r≠h,计算S=[r-h]dA,则(h,S)为生成的数字签名;若r=h,则重新选择r,重新计算w、h,直到r≠h。
针对一些特殊的需求,比如,为了保证非硬件环境下用户私钥使用的安全性,人们提出了一些基于秘密共享(分享)的SM9数字签名生成方法。在这些方法中,多个装置分别保存有用户SM9私钥的秘密份额,或者分别保存有与私钥有关的秘密的秘密份额;在需要使用用户私钥针对一个消息M生成数字签名时,每个装置利用自己的秘密份额与其他装置交互、协同运算,生成针对消息的数字签名。
现有的基于秘密共享的SM9数字签名协同生成方案,通常在密码运算的过程中计算w=g^(a1r1+…+amrm),其中ri是第i个装置在[1,n-1]中随机选择的整数,而ai是常数,i=1,…,m(假设有m个装置);然后计算h=H2(M||w,n),最后m个装置通过协同计算得到S=[(a1r1+…+amrm)-h]dA。这种方案通常是没有问题的,但也可能出现一种情况,就是恰好出现(a1r1+…+amrm)mod n=0,而出现这样情况恰好被其中一个装置观测到(比如通过检查w是否是单位元),但却不报告,则这个装置就有可能从最终得到的数字签名(h,S)中得到用户的SM9私钥。出现这种情况的概率虽然极小,但是仍然有可能发生,尤其是在ri很难做到是真正随机选择的情况下。
如果基于秘密共享的数字签名协同生成方案能做到所采用的方案是w=g^(ar1…rm),S=[(ar1…rm)-h]dA,即这里的r1,…,rm以及一个常数a是以乘积的形式出现,则不会出现(ar1…rm)mod n=0的情况,这样的方案具有更高的安全性。我们在这里把r1,…,rm以及常数a是以乘积形式出现的情形称为乘积r参数的情形,而把生成数字签名过程中r1,…,rm以及常数a以乘积形式出现的SM9数字签名协同生成方法,称为具有乘积r参数的SM9数字签名协同生成方法。
发明内容
本发明的目的是提出一种具有乘积r参数的SM9数字签名安全协同生成技术方案。
针对本发明的目的,本发明提出的技术方案包括一种SM9数字签名安全协同生成方法及相应的系统。
在以下对本发明技术方案的描述中,若P、Q是加法群G1、G2中的元,则P+Q表示P、Q在加法群上的加,P-Q表示P加上Q的逆元(加法逆元),[k]P表示k与P的数乘(标量乘)或k倍点加,即k个P在加法群上的加,即P+P+...+P(共有k个P)(若k是负数,则是|k|个P相加的结果的加法逆元;这里[]符号的使用与SM9规范一致);
省略号“...”,表示多个同样(类型)的数据项或多个同样的运算;
若a、b是乘法群GT中的元,则ab或a·b表示a、b在乘法群GT上的乘(只要不产生无二义性,“·”可以省略),a-1表示a在乘法群中逆元(乘法逆元),at表示t个a在乘法群GT上相乘(t是负数,则是|t|个a相乘的结果的乘法逆元),即幂运算,at的另一种表达方式是a^t;
若c为整数,则c-1表示整数c的模n乘法逆(即cc-1mod n=1);如无特别说明,本专利发明中整数的乘法逆都是针对群G1、G2、GT的阶n的模n乘法逆;
多个整数相乘(包括整数符号相乘、常数与整数符号相乘),在不产生二义性的情况下,省略掉乘号“·”,如k1·k2简化为k1k2,3·c,简化为3c;
mod n表示模n运算(modulo operation),对应于SM9规范中的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。
本发明提出的SM9数字签名安全协同生成方法具体如下。
所述方法涉及m个分别标号为第1号,第2号,…,第m号的装置,m≥2;
第i号装置保存有秘密dAi,i=1,2,…,m,且dA1+dA2+…+dAm=dA,其中dA为用户的SM9标识私钥;
初始化阶段计算有gB=g^b,其中b是[1,n-1]内的对m个装置保密或不保密的整数,n为SM9密码算法中群G1、G2、GT的阶(为素数),^是幂运算(对^前面的元进行幂运算,^后面为幂运算的次数),g=e(P1,Ppub),P1为G1中的生成元,Ppub为主公钥(即Ppub=[s]P2,s为主私钥或主密钥,P2为G2中的生成元,参见SM9规范);
当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,m个装置按如下方式进行数字签名的协同生成(需要使用用户的SM9标识私钥dA、针对消息M进行数字签名的主体可以是调用这m个装置的密码应用程序、系统或密码模块,或者m个装置之一中的密码应用程序、系统):
首先,m个装置通过交互计算得到w=gB^(r1r2…rm),其中,ri是计算过程中第i号装置在[1,n-1]区间内随机选择的整数,ri称为第i号装置的r参数,i=1,2,…,m;
然后,(m个装置中的一个装置或其他装置)计算h=H2(M||w,n),其中H2为SM9中规定的散列函数,M||w表示M和w的字串合并,n为G1、G2、GT的阶;
(h无需保密,可根据需要自由传送)
(m个装置中的一个装置或其他装置)检查w与g^h是否相等,若w=g^h,则m个装置重新进行w的计算,直到w≠g^h;
之后,m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[m-1br1r2…rm]dA,i=1,2,…,m,其中m-1是m的模n乘法逆,或者计算得到Qi=[br1r2…rm]dAi,i=1,2,…,m;在所述Qi的计算过程中,由第i号装置最后使用自己的r参数ri参与Qi的计算,i=1,2,…,m;
第i号装置计算Si=Qi+[-h]dAi,i=1,2,…,m;
最后,m个装置中的一个装置或之外的一个装置计算S=S1+S2+…+Sm
则(h,S)是针对消息M的数字签名;
或者,
在计算得到Qi后,i=1,2,…,m,第i号装置计算Si=[h-1]Qi-dAi,其中h-1为h的模n乘法逆;
最后,m个装置中的一个装置或之外的一个装置计算ST=S1+S2+…+Sm,S=[h]ST
则(h,S)是针对消息M的数字签名。
(此时对应于Qi=[m-1br1r2…rm]dA
S=[mm-1br1r2…rm]dA+[-h](dA1+dA2+…+dAm)=[(r1r2…rm)b-h]dA
对应用Qi=[br1r2…rm]dAi
S=[br1r2…rm](dA1+dA2+…+dAm)+[-h](dA1+dA2+…+dAm)=[(r1r2…rm)b-h]dA)
对于以上所述SM9数字签名安全协同生成方法,若在以上计算过程中不检查w与g^h是否相等,则计算得到S后,若检查发现S为零元,则m个装置重新进行协同计算,直到S不为零元。
对于以上所述SM9数字签名安全协同生成方法,m个装置计算得到w=gB^(r1r2…rm)的方法包括(不是全部可能的方式):
第1号装置计算g1=gB^r1,将g1发送第2号装置;
第i号装置接收到gi-1后,i=2,…,m,计算gi=gi-1^ri
若i=m,则取w=gm,完成计算,否则,将第i号装置将gi传送给第i+1号装置;
或者,
第m号装置计算gm=gB^rm,将gm发送第m-1号装置;
第i号装置接收gi+1到后,i=m-1,…,1,计算gi=gi+1^ri
若i=1,则取w=g1,完成计算,否则,将第i号装置将gi传送给第i-1号装置。
对于以上所述SM9数字签名安全协同生成方法,若b是[1,n-1]内对m个装置保密的整数,则m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[m-1br1r2…rm]dA,i=1,2,…,m,的一种方法如下:
初始化阶段由知道dA的装置计算有PB=[(m-1b)mod n]dA,并由知道dA的装置将PB交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数与PB进行数乘(标量乘)运算,计算得到Qi,1
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置(第i号装置之外的m-1个装置中的计算Qi,1装置之外的一个装置);
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1(即Qi,m-1)提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[ri]Qi,m-1
对于以上所述SM9数字签名安全协同生成方法,若b是[1,n-1]内的对m个装置保密的整数,则m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[br1r2…rm]dAi,i=1,2,…,m,的一种方法如下:
初始化阶段由知道dA的装置计算有PBi=[b]dAi,i=1,2,…,m,并由知道dA的装置将PBi交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数与PBi进行数乘(标量乘)运算,计算得到Qi,1
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置(第i号装置之外的m-1个装置中的计算Qi,1装置之外的一个装置);
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1(即Qi,m-1)提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[ri]Qi,m-1
对于以上所述SM9数字签名安全协同生成方法,在b对m个装置保密或不保密的情况下都适用的一种m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[m-1br1r2…rm]dA,i=1,2,…,m,的方法如下:
初始化阶段知道dA的装置在[1,n-1]内随机选择m个整数u1,u2,…,um分别作为第1号,第2号,…,第m号装置的秘密,其中ui是第i号装置的秘密,ui称为第i号装置的u参数,i=1,2,…,m;
初始化阶段由知道dA的装置计算有PB=[(m-1b((u1u2…um)mod n)-1)mod n]dA,其中((u1u2…um)mod n)-1是(u1u2…um)mod n的模n乘法逆,并由知道dA的装置将PB交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数和u参数的模n乘积与PB进行数乘(标量乘)运算,计算得到Qi,1(若是第p号装置计算Qi,1,则Qi,1=[(rpup)mod n]PB);
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置(第i号装置之外的m-1个装置中的计算Qi,1装置之外的一个装置);
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数和u参数的模n乘积与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1(即Qi,m-1)提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数和u参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数和u参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[(riui)mod n]Qi,m-1
对于以上所述SM9数字签名安全协同生成方法,在b对m个装置保密或不保密的情况下都适用的一种m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[br1r2…rm]dAi,i=1,2,…,m,的方法如下:
初始化阶段知道dA的装置在[1,n-1]内随机选择m个整数u1,u2,…,um分别作为第1号,第2号,…,第m号装置的秘密,其中ui是第i号装置的秘密,ui称为第i号装置的u参数,i=1,2,…,m;
初始化阶段由知道dA的装置计算有PBi=[(b((u1u2…um)mod n)-1)mod n]dAi,i=1,2,…,m,其中((u1u2…um)mod n)-1是(u1u2…um)mod n的模n乘法逆,并由知道dA的装置将PBi交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数和u参数的模n乘积与PBi进行数乘(标量乘)运算,计算得到Qi,1(若是第p号装置计算Qi,1,则Qi,1=[(rpup)mod n]PBi);
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置(第i号装置之外的m-1个装置中的计算Qi,1装置之外的一个装置);
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数和u参数的模n乘积与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1(即Qi,m-1)提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数和u参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数和u参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[(riui)mod n]Qi,m-1
对于以上所述SM9数字签名安全协同生成方法,在初始化阶段,设置dAi,i=1,2,…,m,的方式包括:
方式一:
知道用户SM9私钥dA的装置在[1,n-1]内随机选择m个整数c1,c2,…cm,计算c=(c1+c2+…+cm)mod n,若c=0,则重新选择c1,c2,…cm直到c≠0;
计算得到dAi=[cic-1]dA,i=1,2,…,m;
将dAi交由第i号装置保存,i=1,2,...,m,将dA、c、ci,i=1,2,…,m销毁;
方式二:
知道用户SM9私钥dA的装置在[1,n-1]内随机选择m-1个整数c1,…cm-1,若(c1+…+cm-1)mod n=1,则重新选择c1,…cm-1直到(c1+…+cm-1)mod n≠1;
计算得到dAi=[ci]dA,i=1,…,m-1;
计算得到dAm=[1-(c1+…+cm-1)]dA
将dAi交由第i号装置保存,i=1,2,...,m,将dA、ci,i=1,…,m-1销毁;
方式三:
知道用户SM9私钥dA的装置在[1,n-1]内随机选择m-1个整数c1,…cm-1
计算得到dAi=[ci]P1,i=1,…,m-1;
计算得到dAm=dA-[c1+…+cm-1]P1
若dAm为零元则报错(若是私钥生成器进行初始化,则之后重新选择ci,重新计算dAi=[ci]P1,i=1,…,m-1,dAm=dA-[c1+…+cm-1]P1;若是其他装置,则主密钥s被暴露,报错后需采取措施,发生这个的概率极小);
将dAi交由第i号装置保存,i=1,2,...,m,将dA、ci,i=1,…,m-1销毁。
对于以上所述SM9数字签名安全协同生成方法,若b是对m个装置保密的整数,则b是初始化阶段由进行初始化的装置在[1,n-1]内随机选择的一个整数,或者是一个等同于在[1,n-1]内随机选择的整数的随机数(比如,a是[1,n-1]内随机选择的整数,则ma是一个等同于在[1,n-1]内随机选择的整数的随机数),b在完成初始化处理后销毁;
若b是对m个装置不保密的整数,则b是在[1,n-1]内任意选择的一个整数;所述任意选择包括由实施者主观任意选择,由实施者固定选择(比如固定选择1作为b),或者初始化阶段由进行初始化的装置随机选择。
(注:这里选取b、进行初始化的装置通常是知道dA的装置)
在以上所述SM9数字签名安全协同生成方法的基础上可构建SM9数字签名安全协同生成系统,系统包括m个分别标号为第1号,第2号,…,第m号的装置,m≥2;第i号装置保存有秘密dAi,i=1,2,…,m,且dA1+dA2+…+dAm=dA,其中dA为用户的SM9私钥;当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,m个装置按所述SM9数字签名安全协同生成方法生成针对消息M的数字签名。
从以上描述可以看到,通过本发明的方法和系统,当需要使用用户标识私钥dA对消息进行数字签名时,多个装置可以通过交互协同生成针对消息的数字签名,且协同计算过程采用的是乘积r参数,从而具有较高的安全性。
具体实施方式
下面结合实施例对本发明作进一步的描述。以下实施例仅是本发明列举的几个可能的实施例,不代表全部可能的实施例,不作为对本发明的限定。
实施例1、
此实施例有m个分别标号为第1号,第2号,…,第m号的装置,m≥2;
第i号装置保存有秘密dAi,i=1,2,…,m,且dA1+dA2+…+dAm=dA,其中dA为用户的SM9标识私钥;
初始化阶段计算有gB=g^b,其中b是[1,n-1]内的对m个装置保密的整数,n为SM9密码算法中群G1、G2、GT的阶(为素数),^是幂运算(对^前面的元进行幂运算,^后面为幂运算的次数),g=e(P1,Ppub),P1为G1中的生成元,Ppub为主公钥(即Ppub=[s]P2,s为主私钥或主密钥,P2为G2中的生成元,参见SM9规范);
当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,m个装置按如下方式进行数字签名的协同生成(需要使用用户的SM9标识私钥dA、针对消息M进行数字签名的主体可以是调用这m个装置的密码应用程序、系统或密码模块,或者m个装置之一中的密码应用程序、系统):
首先,m个装置通过交互计算得到w=gB^(r1r2…rm),其中,ri是计算过程中第i号装置在[1,n-1]区间内随机选择的整数,ri称为第i号装置的r参数,i=1,2,…,m;
然后,(m个装置中的一个装置或其他装置)计算h=H2(M||w,n),其中H2为SM9中规定的散列函数,M||w表示M和w的字串合并,n为G1、G2、GT的阶;
(h无需保密,可根据需要自由传送)
(m个装置中的一个装置或其他装置)检查w与g^h是否相等,若w=g^h,则m个装置重新进行w的计算,直到w≠g^h;
之后,m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[m-1br1r2…rm]dA,i=1,2,…,m,其中m-1是m的模n乘法逆,且在所述Qi的计算过程中,由第i号装置最后使用自己的r参数ri参与Qi的计算,i=1,2,…,m;
第i号装置计算Si=Qi+[-h]dAi,i=1,2,…,m;
最后,m个装置中的一个装置或之外的一个装置计算S=S1+S2+…+Sm
则(h,S)是针对消息M的数字签名。
(此时S=[mm-1br1r2…rm]dA+[-h](dA1+dA2+…+dAm)=[(r1r2…rm)b-h]dA)
对于此实施例,若在以上计算过程中不检查w与g^h是否相等,则计算得到S后,若检查发现S为零元,则m个装置重新进行协同计算,直到S不为零元。
此实施例中,m个装置计算得到w=gB^(r1r2…rm)的方法包括(不是全部可能的方式):
第1号装置计算g1=gB^r1,将g1发送第2号装置;
第i号装置接收到gi-1后,i=2,…,m,计算gi=gi-1^ri
若i=m,则取w=gm,完成计算,否则,将第i号装置将gi传送给第i+1号装置;
或者,
第m号装置计算gm=gB^rm,将gm发送第m-1号装置;
第i号装置接收gi+1到后,i=m-1,…,1,计算gi=gi+1^ri
若i=1,则取w=g1,完成计算,否则,将第i号装置将gi传送给第i-1号装置。
此实施例中,m个装置按如下方法在不暴露各自的r参数的情况下协同计算得到Qi=[m-1br1r2…rm]dA,i=1,2,…,m:
初始化阶段由知道dA的装置计算有PB=[(m-1b)mod n]dA,并由知道dA的装置将PB交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数与PB进行数乘(标量乘)运算,计算得到Qi,1
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置(第i号装置之外的m-1个装置中的计算Qi,1装置之外的一个装置);
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1(即Qi,m-1)提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[ri]Qi,m-1
对于此实施例,在初始化阶段,dAi,i=1,2,…,m,按如下方式之一设置:
dAi设置方式一:
知道用户SM9私钥dA的装置在[1,n-1]内随机选择m个整数c1,c2,…cm,计算c=(c1+c2+…+cm)mod n,若c=0,则重新选择c1,c2,…cm直到c≠0;
计算得到dAi=[cic-1]dA,i=1,2,…,m;
将dAi交由第i号装置保存,i=1,2,...,m,将dA、c、ci,i=1,2,…,m销毁;
dAi设置方式二:
知道用户SM9私钥dA的装置在[1,n-1]内随机选择m-1个整数c1,…cm-1,若(c1+…+cm-1)mod n=1,则重新选择c1,…cm-1直到(c1+…+cm-1)modn≠1;
计算得到dAi=[ci]dA,i=1,…,m-1;
计算得到dAm=[1-(c1+…+cm-1)]dA
将dAi交由第i号装置保存,i=1,2,...,m,将dA、ci,i=1,…,m-1销毁;
dAi设置方式三:
知道用户SM9私钥dA的装置在[1,n-1]内随机选择m-1个整数c1,…cm-1
计算得到dAi=[ci]P1,i=1,…,m-1;
计算得到dAm=dA-[c1+…+cm-1]P1
若dAm为零元则报错(若是私钥生成器进行初始化,则之后重新选择ci,重新计算dAi=[ci]P1,i=1,…,m-1,dAm=dA-[c1+…+cm-1]P1;若是其他装置,则主密钥s被暴露,报错后需采取措施,发生这个的概率极小);
将dAi交由第i号装置保存,i=1,2,...,m,将dA、ci,i=1,…,m-1销毁。
此实施例中,b是初始化阶段由进行初始化的装置在[1,n-1]内随机选择的一个整数,或者是一个等同于在[1,n-1]内随机选择的整数的随机数(比如,a是[1,n-1]内随机选择的整数,则ma是一个等同于在[1,n-1]内随机选择的整数的随机数),b在完成初始化处理后销毁。
实施例2、
此实施例与实施例1的差别在于,在计算得到Qi后,i=1,2,…,m,第i号装置计算Si=[h-1]Qi-dAi,其中h-1为h的模n乘法逆;最后,m个装置中的一个装置或之外的一个装置计算ST=S1+S2+…+Sm,S=[h]ST,从而得到针对消息M的数字签名(h,S)。
(此时S=[mm-1br1r2…rm]dA+[-h](dA1+dA2+…+dAm)=[(r1r2…rm)b-h]dA)
实施例3、
此实施例与实施例1的差别在于,在计算得到满足w≠g^h的h后,m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[br1r2…rm]dAi,i=1,2,…,m,且在所述Qi的计算过程中,由第i号装置最后使用自己的r参数ri参与Qi的计算,i=1,2,…,m,其中,m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[br1r2…rm]dAi,i=1,2,…,m,的方法如下:
初始化阶段由知道dA的装置计算有PBi=[b]dAi,i=1,2,…,m,并由知道dA的装置将PBi交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数与PBi进行数乘(标量乘)运算,计算得到Qi,1
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置(第i号装置之外的m-1个装置中的计算Qi,1装置之外的一个装置);
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1(即Qi,m-1)提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[ri]Qi,m-1
计算得到Qi=[br1r2…rm]dAi后,其他操作处理与实施例1相同。
(S=[br1r2…rm](dA1+dA2+…+dAm)+[-h](dA1+dA2+…+dAm)=[(r1r2…rm)b-h]dA)
实施例4、
此实施例与实施例3的差别在于,在计算得到Qi后,i=1,2,…,m,第i号装置计算Si=[h-1]Qi-dAi,其中h-1为h的模n乘法逆;最后,m个装置中的一个装置或之外的一个装置计算ST=S1+S2+…+Sm,S=[h]ST,从而得到针对消息M的数字签名(h,S)。
(S=[br1r2…rm](dA1+dA2+…+dAm)+[-h](dA1+dA2+…+dAm)=[(r1r2…rm)b-h]dA)
实施例5、
此实施例与实施例1的差别在于:1)其中b不必是[1,n-1]内的对m个装置保密的整数;2)m个装置在不暴露各自的r参数的情况下按如下方式协同计算得到Qi=[m-1br1r2…rm]dA,i=1,2,…,m:
初始化阶段知道dA的装置在[1,n-1]内随机选择m个整数u1,u2,…,um分别作为第1号,第2号,…,第m号装置的秘密,其中ui是第i号装置的秘密,ui称为第i号装置的u参数,i=1,2,…,m;
初始化阶段由知道dA的装置计算有PB=[(m-1b((u1u2…um)mod n)-1)mod n]dA,其中((u1u2…um)mod n)-1是(u1u2…um)mod n的模n乘法逆,并由知道dA的装置将PB交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数和u参数的模n乘积与PB进行数乘(标量乘)运算,计算得到Qi,1(若是第p号装置计算Qi,1,则Qi,1=[(rpup)mod n]PB);
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置(第i号装置之外的m-1个装置中的计算Qi,1装置之外的一个装置);
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数和u参数的模n乘积与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1(即Qi,m-1)提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数和u参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数和u参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[(riui)mod n]Qi,m-1
计算得到Qi=[m-1br1r2…rm]dA后,其他操作处理与实施例1相同。
此实施例中,b既可以是[1,n-1]内的对m个装置保密的整数,也可以是[1,n-1]内的对m个装置不保密的整数;若b是[1,n-1]内的对m个装置保密的整数,则其选取同实施例1;若b是[1,n-1]内的对m个装置不保密的整数,则b是在[1,n-1]内任意选择的一个整数;所述任意选择包括由实施者主观任意选择,由实施者固定选择(比如固定选择1作为b),或者初始化阶段由进行初始化的装置随机选择。
(此时S=[mm-1br1r2…rm]dA+[-h](dA1+dA2+…+dAm)=[(r1r2…rm)b-h]dA)
实施例6、
此实施例与实施例5的差别在于,在计算得到Qi后,i=1,2,…,m,第i号装置计算Si=[h-1]Qi-dAi,其中h-1为h的模n乘法逆;最后,m个装置中的一个装置或之外的一个装置计算ST=S1+S2+…+Sm,S=[h]ST,从而得到针对消息M的数字签名(h,S)。
(此时S=[mm-1br1r2…rm]dA+[-h](dA1+dA2+…+dAm)=[(r1r2…rm)b-h]dA)
实施例7、
此实施例与实施例5的差别在于,在计算得到满足w≠g^h的h后,m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[br1r2…rm]dAi,i=1,2,…,m,且在所述Qi的计算过程中,由第i号装置最后使用自己的r参数ri参与Qi的计算,i=1,2,…,m,其中,m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[br1r2…rm]dAi,i=1,2,…,m,的方法如下:
初始化阶段知道dA的装置在[1,n-1]内随机选择m个整数u1,u2,…,um分别作为第1号,第2号,…,第m号装置的秘密,其中ui是第i号装置的秘密,ui称为第i号装置的u参数,i=1,2,…,m;
初始化阶段由知道dA的装置计算有PBi=[(b((u1u2…um)mod n)-1)mod n]dAi,i=1,2,…,m,其中((u1u2…um)mod n)-1是(u1u2…um)mod n的模n乘法逆,并由知道dA的装置将PBi交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数和u参数的模n乘积与PBi进行数乘(标量乘)运算,计算得到Qi,1(若是第p号装置计算Qi,1,则Qi,1=[(rpup)mod n]PBi);
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置(第i号装置之外的m-1个装置中的计算Qi,1装置之外的一个装置);
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数和u参数的模n乘积与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1(即Qi,m-1)提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数和u参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数和u参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[(riui)mod n]Qi,m-1
计算得到Qi=[m-1br1r2…rm]dA后,其他操作处理与实施例5相同。
(S=[br1r2…rm](dA1+dA2+…+dAm)+[-h](dA1+dA2+…+dAm)=[(r1r2…rm)b-h]dA)
实施例8、
此实施例与实施例7的差别在于,在计算得到Qi后,i=1,2,…,m,第i号装置计算Si=[h-1]Qi-dAi,其中h-1为h的模n乘法逆;最后,m个装置中的一个装置或之外的一个装置计算ST=S1+S2+…+Sm,S=[h]ST,从而得到针对消息M的数字签名(h,S)。
(S=[br1r2…rm](dA1+dA2+…+dAm)+[-h](dA1+dA2+…+dAm)=[(r1r2…rm)b-h]dA)
在所述SM9数字签名安全协同生成方法的基础上可实施构建一个SM9数字签名安全协同生成系统,系统包括m个分别标号为第1号,第2号,…,第m号的装置,m≥2;第i号装置保存有秘密dAi,i=1,2,…,m,且dA1+dA2+…+dAm=dA,其中dA为用户的SM9私钥;当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,m个装置通过实施所述SM9数字签名安全协同生成方法生成针对消息M的数字签名。
其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。

Claims (10)

1.一种SM9数字签名安全协同生成方法,其特征是:
所述方法涉及m个分别标号为第1号,第2号,…,第m号的装置,m≥2;
第i号装置保存有秘密dAi,i=1,2,…,m,且dA1+dA2+…+dAm=dA,其中dA为用户的SM9标识私钥;
初始化阶段计算有gB=g^b,其中b是[1,n-1]内的对m个装置保密或不保密的整数,n为SM9密码算法中群G1、G2、GT的阶,^是幂运算,g=e(P1,Ppub),P1为G1中的生成元,Ppub为主公钥;
当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,m个装置按如下方式进行数字签名的协同生成:
首先,m个装置通过交互计算得到w=gB^(r1r2…rm),其中,ri是计算过程中第i号装置在[1,n-1]区间内随机选择的整数,ri称为第i号装置的r参数,i=1,2,…,m;
然后,计算h=H2(M||w,n),其中H2为SM9中规定的散列函数,M||w表示M和w的字串合并,n为G1、G2、GT的阶;
检查w与g^h是否相等,若w=g^h,则m个装置重新进行w的计算,直到w≠g^h;
之后,m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[m-1br1r2…rm]dA,i=1,2,…,m,其中m-1是m的模n乘法逆,或者计算得到Qi=[br1r2…rm]dAi,i=1,2,…,m;在所述Qi的计算过程中,由第i号装置最后使用自己的r参数ri参与Qi的计算,i=1,2,…,m;
第i号装置计算Si=Qi+[-h]dAi,i=1,2,…,m;
最后,m个装置中的一个装置或之外的一个装置计算S=S1+S2+…+Sm
则(h,S)是针对消息M的数字签名;
或者,
在计算得到Qi后,i=1,2,…,m,第i号装置计算Si=[h-1]Qi-dAi,其中h-1为h的模n乘法逆;
最后,m个装置中的一个装置或之外的一个装置计算ST=S1+S2+…+Sm,S=[h]ST
则(h,S)是针对消息M的数字签名。
2.根据权利要求1所述的SM9数字签名安全协同生成方法,其特征是:
若在以上计算过程中不检查w与g^h是否相等,则计算得到S后,若检查发现S为零元,则m个装置重新进行协同计算,直到S不为零元。
3.根据权利要求1所述的SM9数字签名安全协同生成方法,其特征是:
m个装置计算得到w=gB^(r1r2…rm)的方法包括:
第1号装置计算g1=gB^r1,将g1发送第2号装置;
第i号装置接收到gi-1后,i=2,…,m,计算gi=gi-1^ri
若i=m,则取w=gm,完成计算,否则,将第i号装置将gi传送给第i+1号装置;
或者,
第m号装置计算gm=gB^rm,将gm发送第m-1号装置;
第i号装置接收gi+1到后,i=m-1,…,1,计算gi=gi+1^ri
若i=1,则取w=g1,完成计算,否则,将第i号装置将gi传送给第i-1号装置。
4.根据权利要求1所述的SM9数字签名安全协同生成方法,其特征是:
若b是[1,n-1]内对m个装置保密的整数,则m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[m-1br1r2…rm]dA,i=1,2,…,m,的一种方法如下:
初始化阶段由知道dA的装置计算有PB=[(m-1b)mod n]dA,并由知道dA的装置将PB交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数与PB进行数乘运算,计算得到Qi,1
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置;
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[ri]Qi,m-1
5.根据权利要求1所述的SM9数字签名安全协同生成方法,其特征是:
若b是[1,n-1]内的对m个装置保密的整数,则m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[br1r2…rm]dAi,i=1,2,…,m,的一种方法如下:
初始化阶段由知道dA的装置计算有PBi=[b]dAi,i=1,2,…,m,并由知道dA的装置将PBi交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数与PBi进行数乘运算,计算得到Qi,1
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置;
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[ri]Qi,m-1
6.根据权利要求1所述的SM9数字签名安全协同生成方法,其特征是:
在b对m个装置保密或不保密的情况下都适用的一种m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[m-1br1r2…rm]dA,i=1,2,…,m,的方法如下:
初始化阶段知道dA的装置在[1,n-1]内随机选择m个整数u1,u2,…,um分别作为第1号,第2号,…,第m号装置的秘密,其中ui是第i号装置的秘密,ui称为第i号装置的u参数,i=1,2,…,m;
初始化阶段由知道dA的装置计算有PB=[(m-1b((u1u2…um)mod n)-1)mod n]dA,其中((u1u2…um)mod n)-1是(u1u2…um)mod n的模n乘法逆,并由知道dA的装置将PB交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数和u参数的模n乘积与PB进行数乘运算,计算得到Qi,1
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置;
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数和u参数的模n乘积与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数和u参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数和u参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[(riui)mod n]Qi,m-1
7.根据权利要求1所述的SM9数字签名安全协同生成方法,其特征是:
在b对m个装置保密或不保密的情况下都适用的一种m个装置在不暴露各自的r参数的情况下协同计算得到Qi=[br1r2…rm]dAi,i=1,2,…,m,的方法如下:
初始化阶段知道dA的装置在[1,n-1]内随机选择m个整数u1,u2,…,um分别作为第1号,第2号,…,第m号装置的秘密,其中ui是第i号装置的秘密,ui称为第i号装置的u参数,i=1,2,…,m;
初始化阶段由知道dA的装置计算有PBi=[(b((u1u2…um)mod n)-1)mod n]dAi,i=1,2,…,m,其中((u1u2…um)mod n)-1是(u1u2…um)mod n的模n乘法逆,并由知道dA的装置将PBi交由需要使用的装置保存;
当需要计算Qi时,第i号装置之外的m-1个装置中的一个装置使用自己的r参数和u参数的模n乘积与PBi进行数乘运算,计算得到Qi,1
若m=2,则计算得到Qi,1的装置将Qi,1提交给第i号装置,否则,计算得到Qi,1的装置将Qi,1提交给第i号装置之外的m-1个装置中的一个其他装置;
接收到Qi,t的装置,t=1,…,m-2,使用自己的r参数和u参数的模n乘积与Qi,t进行数乘运算,计算得到Qi,t+1
若t=m-2,则计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置,否则,计算得到Qi,t+1的装置将Qi,t+1提交给第i号装置之外的m-1个装置中的一个尚未使用自己的r参数和u参数进行Qi,j计算的装置,j=1,…,t+1,直到第i号装置之外的m-1个装置中的所有装置都使用了自己的r参数和u参数进行了Qi,q计算,q=1,…,或m-1;
第i号装置接收到Qi,m-1后,检查Qi,m-1是否为零元,若是,则报错,否则,计算Qi=[(riui)mod n]Qi,m-1
8.根据权利要求1所述的SM9数字签名安全协同生成方法,其特征是:
在初始化阶段,设置dAi,i=1,2,…,m,的方式包括:
方式一:
知道用户SM9私钥dA的装置在[1,n-1]内随机选择m个整数c1,c2,…cm,计算c=(c1+c2+…+cm)mod n,若c=0,则重新选择c1,c2,…cm直到c≠0;
计算得到dAi=[cic-1]dA,i=1,2,…,m;
将dAi交由第i号装置保存,i=1,2,...,m,将dA、c、ci,i=1,2,…,m销毁;
方式二:
知道用户SM9私钥dA的装置在[1,n-1]内随机选择m-1个整数c1,…cm-1,若(c1+…+cm-1)mod n=1,则重新选择c1,…cm-1直到(c1+…+cm-1)mod n≠1;
计算得到dAi=[ci]dA,i=1,…,m-1;
计算得到dAm=[1-(c1+…+cm-1)]dA
将dAi交由第i号装置保存,i=1,2,...,m,将dA、ci,i=1,…,m-1销毁;
方式三:
知道用户SM9私钥dA的装置在[1,n-1]内随机选择m-1个整数c1,…cm-1
计算得到dAi=[ci]P1,i=1,…,m-1;
计算得到dAm=dA-[c1+…+cm-1]P1
若dAm为零元则报错;
将dAi交由第i号装置保存,i=1,2,...,m,将dA、ci,i=1,…,m-1销毁。
9.根据权利要求1所述的SM9数字签名安全协同生成方法,其特征是:
若b是对m个装置保密的整数,则b是初始化阶段由进行初始化的装置在[1,n-1]内随机选择的一个整数,或者是一个等同于在[1,n-1]内随机选择的整数的随机数,b在完成初始化处理后销毁;
若b是对m个装置不保密的整数,则b是在[1,n-1]内任意选择的一个整数;所述任意选择包括由实施者主观任意选择,由实施者固定选择,或者初始化阶段由进行初始化的装置随机选择。
10.一种基于权利要求1-9中任一项所述的SM9数字签名安全协同生成方法的SM9数字签名安全协同生成系统,其特征是:
所述系统包括m个分别标号为第1号,第2号,…,第m号的装置,m≥2;第i号装置保存有秘密dAi,i=1,2,…,m,且dA1+dA2+…+dAm=dA,其中dA为用户的SM9私钥;当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,m个装置按所述SM9数字签名安全协同生成方法生成针对消息M的数字签名。
CN201911133574.5A 2019-11-18 2019-11-18 一种sm9数字签名安全协同生成方法及系统 Active CN110943842B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911133574.5A CN110943842B (zh) 2019-11-18 2019-11-18 一种sm9数字签名安全协同生成方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911133574.5A CN110943842B (zh) 2019-11-18 2019-11-18 一种sm9数字签名安全协同生成方法及系统

Publications (2)

Publication Number Publication Date
CN110943842A CN110943842A (zh) 2020-03-31
CN110943842B true CN110943842B (zh) 2023-03-28

Family

ID=69907825

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911133574.5A Active CN110943842B (zh) 2019-11-18 2019-11-18 一种sm9数字签名安全协同生成方法及系统

Country Status (1)

Country Link
CN (1) CN110943842B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110166235A (zh) * 2019-05-21 2019-08-23 武汉理工大学 增强安全的sm9数字签名协同生成方法及系统
CN110213057A (zh) * 2019-05-23 2019-09-06 武汉理工大学 具有乘积r参数的SM9数字签名协同生成方法及系统
CN110401524A (zh) * 2019-08-27 2019-11-01 武汉理工大学 一种借助同态加密的包含秘密的数的协同生成方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10348724B2 (en) * 2014-04-07 2019-07-09 Barco N.V. Ad hoc one-time pairing of remote devices using online audio fingerprinting

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110166235A (zh) * 2019-05-21 2019-08-23 武汉理工大学 增强安全的sm9数字签名协同生成方法及系统
CN110213057A (zh) * 2019-05-23 2019-09-06 武汉理工大学 具有乘积r参数的SM9数字签名协同生成方法及系统
CN110401524A (zh) * 2019-08-27 2019-11-01 武汉理工大学 一种借助同态加密的包含秘密的数的协同生成方法及系统

Also Published As

Publication number Publication date
CN110943842A (zh) 2020-03-31

Similar Documents

Publication Publication Date Title
CN107819585B (zh) Sm9数字签名协同生成方法及系统
US8429408B2 (en) Masking the output of random number generators in key generation protocols
CN1326351C (zh) 有限域离散对数密码系统的割圆多项式结构
US8549299B2 (en) Accelerated key agreement with assisted computations
US9571274B2 (en) Key agreement protocol
CN107968710B (zh) Sm9数字签名分离交互生成方法及系统
CN110213057B (zh) 具有乘积r参数的SM9数字签名协同生成方法及系统
CN106850229B (zh) 基于乘积秘密分割的sm2数字签名生成方法及系统
CN107294696B (zh) 针对Leveled全同态密钥分配方法
CN109951292B (zh) 精简的sm9数字签名分离交互生成方法及系统
CN109962783B (zh) 基于递进计算的sm9数字签名协同生成方法及系统
CN111030801A (zh) 一种多方分布式的sm9密钥生成、密文解密方法与介质
CN110166235B (zh) 增强安全的sm9数字签名协同生成方法及系统
CN110855425A (zh) 一种轻量级多方协同sm9密钥生成、密文解密方法与介质
CN112699394A (zh) 一种基于sm9算法的密钥应用方法
US20160352689A1 (en) Key agreement protocol
CN110519051B (zh) r参数和秘密双乘积的SM9签名协同生成方法及系统
CN110380855B (zh) 支持多方协同增强安全的sm9数字签名生成方法及系统
CN110299998B (zh) 借助中间参数的sm9数字签名协同生成方法及系统
CN110266486B (zh) 基于乘积秘密共享的sm9数字签名简捷生成方法及系统
CN110401524B (zh) 一种借助同态加密的包含秘密的数的协同生成方法及系统
EP2395698B1 (en) Implicit certificate generation in the case of weak pseudo-random number generators
CN110557260B (zh) 一种sm9数字签名生成方法及装置
EP2493112B1 (en) Accelerated key agreement with assisted computations
CN110943842B (zh) 一种sm9数字签名安全协同生成方法及系统

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