一种SM9签名私钥生成和数字签名方法及系统和装置制造方法及图纸

技术编号:23938215 阅读:174 留言:0更新日期:2020-04-25 03:59
发明专利技术为SM9签名私钥生成和数字签名方法及系统和装置:P

A method, system and device of SM9 signature private key generation and digital signature

【技术实现步骤摘要】
一种SM9签名私钥生成和数字签名方法及系统和装置
本专利技术属于密码
,特别是一种基于双线映射的具有抗抵赖能力的SM9签名私钥生成方法和数字签名方法及系统和装置。
技术介绍
基于标识的密码(IdentityBasedCryptography,IBC)与采用数字证书技术的PKI(PublicKeyInfrastructure)相比,由于省去了获取私钥拥有者的公钥数字证书这一麻烦环节,技术实现简单,目前日益受到人们的重视,具有广阔的应用前景。基于标识的密码,既可以用于数据加密(称为IdentityBasedEncryption,IBE),也可以用于数字签名(称为IdentityBasedSignature,IBS)。目前基于标识的密码算法大多是采用基于双线性映射(bilinearmapping,也称配对运算,Pairing)的算法,其中的双线性映射(配对运算)为:e:G1×G2→GT时,其中G1、G2(配对或双线性映射的群)是加法循环群,GT是一个乘法循环群,G1、G2、GT的阶是素数n(SM9规范中使用G1、G2、GT的阶是大写字母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([a]P,[b]Q)=e(P,Q)ab。这里a、b是[0,n-1]中的一个整数,[a]P、[b]Q表示点的P、Q的倍加或数乘。SM9是国家密码管理局颁布的一种基于双线性映射(配对运算)的标识密码算法。基于SM9密码算法能实现基于标识的数字签名、密钥交换及数据加密。在SM9密码算法中,使用用户的SM9私钥dA针对消息M生成数字签名的过程如下:计算得到w=gr,这里r是签名计算时在[1,n-1]区间内随机选择的整数,g=e(P1,Ppub),P1为G1中的生成元,Ppub为主公钥(即Ppub=[s]P2,s为主私钥或主密钥,P2为G2中的生成元,参见SM9规范;注意,这里的主私钥或主密钥,主公钥,用户的用于签名的SM9标识私钥的符号与SM9规范中使用的符号有所不同);然后,计算h=H2(M||w,n),其中H2为SM9中规定的散列函数,M||w表示M和w的字串合并,n为G1、G2、GT的阶(参见SM9规范,注意这里群的阶使用的符号与SM9规范略有不同,使用的小写字母n,而SM9规范使用的是大写字母N);若r≠h,计算S=[r-h]dA,则(h,S)为生成的数字签名;若r=h,则重新选择r,重新计算w、h,直到r≠h。给定一个消息M的数字签名(h,S),验证签名有效性的方法如下(参见SM9规范,注意,SM9规范中签名验证过程描述使用的符号为M'、(h',S'))。B1:检验h∈[1,n-1]是否成立,若不成立则验证不通过;B2:检验S∈G1是否成立,若不成立则验证不通过;B3:计算群GT中的元素g=e(P1,Ppub);B4:计算群GT中的元素t=gh;B5:计算整数h1=H1(IDA||hid,n)(这里是IDA用户的标识,hid是用一个字节表示的签名私钥生成函数识别符,H1()是SM9规范中定义的散列或哈希函数);B6:计算群G2中的元素P=[h1]P2+Ppub;B7:计算群GT中的元素u=e(S,P);B8:计算群GT中的元素w'=u·t;B9:计算整数h2=H2(M||w',n),检验h2=h是否成立,若成立则验证通过;否则验证不通过(H2()是SM9规范中定义的散列或哈希函数)。在SM9密码算法中,一个用户标识IDA所对应的用于签名的私钥由密钥生成中心(KeyGenerationCenter,KGC)或私钥生成系统的私钥生成器(PrivateKeyGenerator,PKG)按如下方式计算得到:计算t1=(H1(IDA||hid,n)+s)modn,其中H1是SM9规范中规定的散列算法,s是主私钥或主密钥,n为G1、G2、GT的阶,hid是用一个字节表示的签名私钥生成函数识别符,||表示字节串合并,modn表示求模n余数运算(注:SM9规范中主私钥或主密钥使用的符号是ks,群G1、G2、GT的阶用的符号是N,与本专利申请文件略有不同);若t1=0,则需重新产生主私钥,计算和公布主公钥,并更新已有用户的私钥;否则,计算t2=s(t1)-1modn,dA=[t2]P1,其中(t1)-1是t1的模n乘法逆,P1为群G1的生成元,符号[]表示多个元(点)的加运算(数乘运算,参见SM9规范),则dA是用户标识IDA所对应的签名私钥。在基于双线性映射(配对运算)的标识密码中,由于用户用于数字签名的私钥是由一个私钥生成系统(或私钥生成中心)生成,采用这种方式生成的用户私钥用于数字签名时无法实现抗抵赖,因为标识私钥拥有者可以说用于数字签名的私钥是私钥生成系统的运行者通过私钥生成系统产生并使用,针对消息的数字签名不是自己使用私钥签名生成的。
技术实现思路
本专利技术的目的是针对目前的基于标识的数字签名无法实现抗抵赖的问题,提出相应的解决方案。为了实现以上目的,本专利技术的技术方案包括一种SM9签名私钥生成方法、一种基于此SM9签名私钥生成方法的数字签名方法及相应的签名验证方法,以及基于此SM9签名私钥生成方法、数字签名方法的私钥生成系统和密码装置。在以下描述中,如无特别说明,整数的(如a-1,a为非0整数)逆是指该整数的模n乘法逆,或该整数的模n余数的模n乘法逆(二者等同)。本专利技术提出的SM9签名私钥生成方法具体如下。所述SM9签名私钥生成方法涉及双线性映射(配对运算)e:G1×G2→GT;群G1的生成元为P1,群G2的生成元为P2;群G1、G2、GT的阶为素数n;所述SM9签名私钥生成方法涉及服务端的标识私钥生成服务器(PrivateKeyGenerationServer)和用户端的标识私钥生成客户端(PrivateKeyGenerationClient);所述标识私钥生成服务器有[1,n-1]内的系统主密钥sm(或称系统主私钥sm);sm有对应的系统主公钥Ppub=[sm]P2,有对应的系统辅助公钥PFpub=[sm]P1;所述标识私钥生成客户端有[1,n-1]内的用户主密钥sU(或称用户主私钥sU),有群G1中的元PU1=[sU]P1,有群G2中的元PU2f=[(sU)-1]P2,其中(sU)-1是sU的模n乘法逆;所述用户端的标识私钥生成客户端和服务端的标识私钥生成服务器在不暴露各自主密钥(主私钥)的情况下以s=(sm+sU)modn为主密钥(主私钥),通过交互协同生成用户标识(如IDA)所对应的用于签名的SM9标识私钥dA,通过交互协同生成群G2中的元PU2=[(sm+sU)-1]Ppub,其中(sm+sU)-1为sm+sU(等价地(sm+sU)modn)的模n乘法逆;(协同生成dA时,本文档来自技高网
...

【技术保护点】
1.一种SM9签名私钥生成方法,其特征是:/n所述SM9签名私钥生成方法涉及双线性映射e:G

【技术特征摘要】
1.一种SM9签名私钥生成方法,其特征是:
所述SM9签名私钥生成方法涉及双线性映射e:G1×G2→GT;群G1的生成元为P1,群G2的生成元为P2;群G1、G2、GT的阶为素数n;
所述SM9签名私钥生成方法涉及服务端的标识私钥生成服务器和用户端的标识私钥生成客户端;
所述标识私钥生成服务器有[1,n-1]内的系统主密钥sm;sm有对应的系统主公钥Ppub=[sm]P2,有对应的系统辅助公钥PFpub=[sm]P1;
所述标识私钥生成客户端有[1,n-1]内的用户主密钥sU,有群G1中的元PU1=[sU]P1,有群G2中的元PU2f=[(sU)-1]P2,其中(sU)-1是sU的模n乘法逆;
所述用户端的标识私钥生成客户端和服务端的标识私钥生成服务器在不暴露各自主密钥的情况下以s=(sm+sU)modn为主密钥,通过交互协同生成用户标识所对应的用于签名的SM9标识私钥dA,通过交互协同生成群G2中的元PU2=[(sm+sU)-1]Ppub,其中(sm+sU)-1为sm+sU的模n乘法逆;
在标识私钥dA的生成过程中服务端的系统无法得到最终的dA。


2.根据权利要求1所述的SM9签名私钥生成方法,其特征是:
在协同生成用户标识所对应的用于签名的SM9标识私钥dA后,标识私钥生成客户端和标识私钥生成服务器通过数字签名或配对运算检查确定dA是否是用户标识所对应的用于签名的SM9标识私钥,若不是,则报错,若是,则完成标识私钥dA的协同生成。


3.根据权利要求1所述的SM9签名私钥生成方法,其特征是:
所述用户标识包括:不包含任何限定信息的用户原始标识,或者包含限定信息的受限定的用户标识。


4.根据权利要求1所述的SM9签名私钥生成方法,其特征是:
避免协同生成用户标识所对应的用于签名的SM9标识私钥dA和PU2的过程中因出现(sm+sU)modn=0或(hID+sm+sU)modn=0的情况而导致系统主密钥sm暴露的一种方法如下,其中hID=H1(IDA||hid,n),IDA为用户标识:
在协同生成用户标识所对应的用于签名的SM9标识私钥dA和PU2时,服务端的标识私钥生成服务器在[1,n-1]内随机选择一个整数sU0,用户端的标识私钥生成客户端在[1,n-1]内随机选择一个整数sU1;
所述标识私钥生成客户端和标识私钥生成服务器以s=(sm+sU0+sU1)modn为主密钥,在不暴露各自秘密的情况下,通过交互协同生成用户标识所对应的用于签名的SM9标识私钥dA,协同生成群G1中的元PU1=[(sU0+sU1)]P1以及群G2中的元:
PU2f=[(sU0+sU1)-1]P2、PU2=[(sm+sU0+sU1)-1]Ppub,
其中sm、sU0为标识私钥生成服务器的秘密,sU1为标识私钥生成客户端的秘密,(sm+sU0+sU1)-1为sm+sU0+sU1的模n乘法逆,(sU0+sU1)-1为sU0+sU1的模n乘法逆;
在协同生成dA、PU1、PU2f和PU2的过程中若检查发现dA为零元或(sm+sU0+sU1)modn=0或(hID+sm+sU0+sU1)modn=0或(sU0+sU1)modn=0,则标识私钥生成服务器重新在[1,n-1]内随机选择一个整数sU0,标识私钥生成客户端重新在[1,n-1]内随机选择一个整数sU1,标识私钥生成客户端和标识私钥生成服务器重新以s=(sm+sU0+sU1)modn为主密钥,通过交互协同生成用户标识所对应的用于签名的SM9标识私钥dA,重新协同生成群G1中的元PU1=[(sU0+sU1)]P1以及群G2中的元PU2f=[(sU0+sU1)-1]P2、PU2=[(sm+sU0+sU1)-1]Ppub,直到dA不为零元且(sm+sU0+sU1)modn不为0且(hID+sm+sU0+sU1)modn不为0且(sU0+sU1)modn不为0;
协同生成dA、PU1、PU2f和PU2后,(sU0+sU1)modn对应前述用户主密钥sU。


5.根据权利要求1所述的SM9签名私钥生成方法,其特征是:
避免协同生成用户标识所对应的用于签名的SM9标识私钥dA和PU2的过程中因出现(sm+sU)modn=0或(hID+sm+sU)modn=0的情况而导致系统主密钥sm暴露的一种方法如下,其中hID=H1(IDA||hid,n),IDA为用户标识:
在协同生成用户标识所对应的标识私钥dA和PU2时,服务端的标识私钥生成服务器在[1,n-1]内随机选择一个整数sU0,用户端的标识私钥生成客户端在[1,n-1]内随机选择一个整数sU1;
所述标识私钥生成客户端和标识私钥生成服务器以s=(...

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

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

1