【技术实现步骤摘要】
具有乘积r参数的SM9数字签名协同生成方法及系统
本专利技术属于信息安全
,特别是具有乘积r参数的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规范);然后,计算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。针对一些特殊的需求,比如,为了保证非硬件环境下 ...
【技术保护点】
1.一种具有乘积r参数的SM9数字签名协同生成方法,其特征是:所述方法涉及两个分别标号为第1号和第2号的装置;第1号装置保存有[1,n‑1]区间内的整数秘密c,其中n为SM9密码算法中群G1、G2、GT的阶;第2号装置保存有秘密PA=[c
【技术特征摘要】
1.一种具有乘积r参数的SM9数字签名协同生成方法,其特征是:所述方法涉及两个分别标号为第1号和第2号的装置;第1号装置保存有[1,n-1]区间内的整数秘密c,其中n为SM9密码算法中群G1、G2、GT的阶;第2号装置保存有秘密PA=[c-1]dA,其中dA是用户的身份标识IDA所对应的SM9标识私钥,c-1为c的模n乘法逆;两个装置都不保存有dA;在初始化阶段计算有:PB=[b]dA,其中b是第1号、第2号装置都没有保存的[1,n-1]中的整数秘密;gB=g^(bc),其中,符号^表示针对符号^前面的元素进行幂运算,符号^后面的元素是幂运算的次数,bc是b和c的模n乘积,g=e(P1,Ppub),其中P1为G1中的生成元,Ppub为主公钥;当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,两个装置按如下方式进行数字签名的生成:首先,两个装置通过交互计算得到w=gB^(r1r2),其中r1是第1号装置在[1,n-1]区间内随机选择的整数,r2是第2号装置在[1,n-1]区间内随机选择的整数;然后,计算h=H2(M||w,n),其中H2为SM9中规定的散列函数,M||w表示M和w的字串合并,n为G1、G2、GT的阶;检查w与g^h是否相等,若w=g^h,则两个装置重新进行w的计算,直到w≠g^h;第1号装置计算S1=[r1]PB,将S1发送给第2号装置;接收到S1后,第2号装置检查S1是否为零元,若为零元,则第2号装置报错,中止计算或两个装置重新计算,否则,第2号装置计算S2=[r2]S1+[-h]PA;第2号装置将S2发送给第1号装置;第1号装置接收到S2后计算S=[c]S2;最后,第1号装置利用用户的身份标识IDA、消息M,验证(h,S)作为消息M的数字签名的有效性,若有效,则(h,S)为生成的针对消息M的数字签名,否则,第1号装置报错,或者两个装置重新进行数字签名的生成。2.根据权利要求1所述的具有乘积r参数的SM9数字签名协同生成方法,其特征是:两个装置按如下方式计算得到w=gB^(r1r2):第2号装置计算g2=gB^r2,将g2发送第1号装置;第1号装置计算w=g2^r1;或者,第1号装置计算g1=gB^r1,将g1发送第2号装置;第2号装置计算w=g1^r2,之后将w发送第1号装置。3.一种基于权利要求1或2所述的SM9数字签名协同生成方法的SM9数字签名协同生成系统,其特征是:所述系统包括两个分别标号为第1号、第2号的装置;当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,两个装置按所述SM9数字签名协同生成方法生成针对消息M的数字签名。4.一种具有乘积r参数的SM9数字签名协同生成方法,其特征是:所述方法涉及两个分别标号为第1号和第2号的装置;第1号装置保存有秘密PA=[c-1]dA,其中dA是用户的身份标识IDA所对应的SM9标识私钥,c-1为c的模n乘法逆,而c是第2号装置保存的[1,n-1]区间内的整数秘密,n为SM9密码算法中群G1、G2、GT的阶;两个装置都不保存有dA;在初始化阶段计算有:PB=[b]dA,其中b是第1号、第2号装置都没有保存的[1,n-1]中的整数秘密;gB=g^b,其中,符号^表示针对符号^前面的元素进行幂运算,符号^后面的元素是幂运算的次数,g=e(P1,Ppub),其中P1为G1中的生成元,Ppub为主公钥;当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,两个装置按如下方式进行数字签名的生成:首先,两个装置通过交互计算得到w=gB^(r1r2),其中r1是第1号装置在[1,n-1]区间内随机选择的整数,r2是第2号装置在[1,n-1]区间内随机选择的整数;然后,计算h=H2(M||w,n),其中H2为SM9中规定的散列函数,M||w表示M和w的字串合并,n为G1、G2、GT的阶;检查w与g^h是否相等,若w=g^h,则两个装置重新进行w的计算,直到w≠g^h;第1号装置计算S1=[(r1)-1]PA或S1=[(r1)-1h]PA,将S1发送给第2号装置,其中(r1)-1是r1的模n乘法逆;第2号装置接收到S1后,按如下方式计算S2:若S1的计算式是S1=[(r1)-1]PA,则S2=[r2]PB+[-hc]S1;若S1的计算式是S1=[(r1)-1h]PA,则S2=[r2]PB+[-c]S1;第2号装置将S2发送给第1号装置;第1号装置接收到S2后计算S=[r1]S2;最后,第1号装置利用用户的身份标识IDA、消息M,验证(h,S)作为消息M的数字签名的有效性,若有...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。