增强安全的SM9数字签名协同生成方法及系统技术方案

技术编号:21956913 阅读:19 留言:0更新日期:2019-08-24 20:27
发明专利技术涉及SM9数字签名生成方法:用户私钥dA被分成dA1、dA2且dA1+dA2=dA;装置1有秘密dA1,装置2有整数秘密c;预先有PB=[b]dA,PA2=[c

Enhanced Security of SM9 Digital Signature Collaborative Generation Method and System

【技术实现步骤摘要】
增强安全的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规范);然后,计算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)modn=0,而出现这样情况恰好被其中一个装置观测到(比如通过检查w是否是单位元),但却不报告,则这个装置就有可能从最终得到的数字签名(h,S)中得到用户的SM9私钥。出现这种情况的概率虽然极小,但是仍然有可能发生,尤其是在ri很难做到是真正随机选择的情况下。如果基于秘密共享的数字签名协同生成方案能做到所采用的方案是w=g^(ar1…rm),S=[(a1r1…rm)-h]dA,即这里的r1,…,rm以及一个常数a是以乘积的形式出现,则不会出现(ar1…rm)modn=0的情况,这样的方案具有更高的安全性。我们在这里把r1,…,rm以及常数a是以乘积形式出现的情形称为乘积r参数的情形,而把生成数字签名过程中r1,…,rm以及常数a以乘积形式出现的SM9数字签名协同生成方法,称为具有乘积r参数的SM9数字签名协同生成方法。
技术实现思路
本专利技术的目的是提出增强安全的数字签名协同生成技术方案,即具有乘积r参数的数字签名协同生成技术方案。针对本专利技术的目的,本专利技术提出的技术方案包括两种增强安全的SM9数字签名协同生成方法及相应的系统。在以下对本专利技术技术方案的描述中,若P、Q是加法群G1、G2中的元,则P+Q表示P、Q在加法群上的加,P-Q表示P加上Q的逆元(加法逆元),[k]P表示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-1modn=1);如无特别说明,本专利专利技术中整数的乘法逆都是针对群G1、G2、GT的阶n的模n乘法逆;多个整数相乘(包括整数符号相乘、常数与整数符号相乘),在不产生二义性的情况下,省略掉乘号“·”,如k1·k2简化为k1k2,3·c,简化为3c;modn表示模n运算(modulooperation),对应于SM9规范中的modN;还有,模n运算的算子modn的优先级是最低的,如a+bmodn等同于(a+b)modn,a-bmodn等同于(a-b)modn,abmodn等同于(ab)modn。本专利技术提出的两个增强安全的SM9数字签名协同生成方法具体如下。方案一、方案一确定的具有增强安全的SM9数字签名协同生成方法如下:方法涉及两个分别标号为第1号和第2号的装置;用户的身份标识IDA所对应的SM9标识私钥dA被分成了两份,分别是dA1、dA2,且满足关系dA1+dA2=dA;第1号装置保存有秘密(份额)dA1,第2号装置保存有[1,n-1]区间内的整数秘密c(第2号装置不必保存dA2),其中n为SM9密码算法中群G1、G2、GT的阶(为素数);两个装置都不保存有dA;([1,n-1]中的整数秘密通常是在[1,n-1]中随机选择的一个整数,或者是从[1,n-1]中随机选择的整数所导出的整数)在初始化阶段计算有:PB=[b]dA,其中b是[1,n-1]中的第1号、第2号装置都没有保存的整数秘密;PA2=[c-1]dA2,其中c-1是c的模n乘法逆(即(c-1c)modn=1);gB=g^b,其中,符号^表示针对符号^前面的元素进行幂运算,符号^后面的元素是幂运算的次数,g=e(P1,Ppub),其中P1为G1中的生成元,Ppub为主公钥(即Ppub=[s]P2,s为主私钥或主密钥,P2为G2中的生成元,参见SM9规范);当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,两个装置按如下方式进行数字签名的生成(需要使用用户的SM9标识私钥dA、针对消息M进行数字签名的主体可以是调用这两个装置的密码应用程序、系统或密码模块,或者两个装置之一中的密码应用程序、系统):首先,两个装置通过交互计算得到w=gB^(r1r2),其中r1是第1号装置在[1,n-1]区间内随机选择的整数,r2是第2号装置在[1,n-1]区间内随机选择的整数;然后,(第1号或第2号装置或其他装置)计算h=H2(M||w,n),其中H2为SM9中规定的散列函数,M||w表示M和w的字串合并,n为G1、G2、GT的阶;(h无需保密,可根据需要自由传送)(第1号或第2号装置或其他装置)检查w与g^h是否相等,若w=g^h,则两个装置重新进行w的计算,直到w≠g^h;第1号装置计算S1=[(r1)-1]PA2或S1本文档来自技高网
...

【技术保护点】
1.一种增强安全的SM9数字签名协同生成方法,其特征是:所述方法涉及两个分别标号为第1号和第2号的装置;用户的身份标识IDA所对应的SM9标识私钥dA被分成了两份,分别是dA1、dA2,且满足关系dA1+dA2=dA;第1号装置保存有秘密dA1,第2号装置保存有[1,n‑1]区间内的整数秘密c,其中n为SM9密码算法中群G1、G2、GT的阶;两个装置都不保存有dA;在初始化阶段计算有:PB=[b]dA,其中b是[1,n‑1]中的第1号、第2号装置都没有保存的整数秘密;PA2=[c

【技术特征摘要】
1.一种增强安全的SM9数字签名协同生成方法,其特征是:所述方法涉及两个分别标号为第1号和第2号的装置;用户的身份标识IDA所对应的SM9标识私钥dA被分成了两份,分别是dA1、dA2,且满足关系dA1+dA2=dA;第1号装置保存有秘密dA1,第2号装置保存有[1,n-1]区间内的整数秘密c,其中n为SM9密码算法中群G1、G2、GT的阶;两个装置都不保存有dA;在初始化阶段计算有:PB=[b]dA,其中b是[1,n-1]中的第1号、第2号装置都没有保存的整数秘密;PA2=[c-1]dA2,其中c-1是c的模n乘法逆;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]PA2或S1=[(r1)-1h]PA2,将S1发送给第2号装置;第2号装置接收到S1后,按如下方式计算S2:若S1的计算式是S1=[(r1)-1]PA2,则S2=[r2]PB+[-hc]S1;若S1的计算式是S1=[(r1)-1h]PA2,则S2=[r2]PB+[-c]S1;第2号装置将S2发送给第1号装置;接收到S2后,第1号装置检查S2是否为零元,若S2为零元,则第1号装置报错,中止计算或两个装置重新开始计算,否则,第1号装置计算S=[r1]S2+[-h]dA1;则(h,S)为生成的针对消息M的数字签名。2.根据权利要求1所述的增强安全的SM9数字签名协同生成方法,其特征是:将用户的身份标识IDA所对应的SM9标识私钥dA分成dA1、dA2的方法包括:知道dA的装置在[1,n-1]中随机选择两个整数c1、c2且(c1+c2)modn≠0,然后计算dA1=[c1(c1+c2)-1]dA,dA2=[c2(c1+c2)-1]dA,其中(c1+c2)-1是(c1+c2)的模n乘法逆,则dA1、dA2为所求;或者,知道dA的装置在[2,n-1]中随机选择一个整数t,然后计算dA1=[t]dA,dA2=dA-dA1,则dA1、dA2为所求;或者,知道dA的装置在[1,n-1]中随机选择一个整数t,然后计算dA1=[t]P1,dA2=dA-dA1,其中P1是SM9双线性映射中的群G1的生成元;若dA2不是零元,则dA1、dA2为所求,若dA2是零元,则重新选择t,重新计算dA1、dA2,直到dA2不是零元;所述知道dA的装置是第1号装置、第2号装置中的一个装置,或者两个装置之外的一个装置。3.根据权利要求1所述的增强安全的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号装置。4.根据权利要求1所述的增强安全的SM9数字签名协同生成方法,其特征是:若在计算得到S之前,未检查w与g^h是否相等,则在计算得到S后,若检查发现S为零元,则两个装置重新进行数字签名的生成。5.一种基于权利要求1-4中任一项所述的增强安全的SM9数字签名协同生成方法的SM9数字签名协同生成系统,其特征是:所述系统包括两个分别标号为第1号、第2号的装置;当需要使用用户的SM9标识私钥dA针对消息M进行数字签名时,两个装置按所述SM9数字...

【专利技术属性】
技术研发人员:龙毅宏
申请(专利权)人:武汉理工大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1