【技术实现步骤摘要】
本专利技术属于信息安全
,特别是SM2数字签名生成方法及系统。
技术介绍
在公开密钥密码体制中,为了保障用户私钥的安全性,用户的私钥通常是存储在专门的密码硬件中使用,如存储在USBKey、SmartCard中使用,且私钥不能从密码硬件中导出。但是,在有些情况下,比如,由于成本的原因,或者由于没有合适的密码硬件(如移动通信终端),使得用户无法依赖密码硬件来存储私钥、以及使用私钥进行密码运算。对于这种情况,目前最常用的方法是使用纯软件的密码模块,并将用户私钥保存在用户计算装置本地的永久存储介质中(如个人电脑的磁盘、移动通信终端内的电子盘),并通过PIN(PersonalIdentificationNumber)码对私钥进行保护。当需要使用用户私钥时,软件密码模块从用户计算装置的永久存储介质读取用户私钥(必要时要求用户输入PIN码),然后进行密码运算。这种采用纯软件密码模、将用户私钥保存在用户计算装置本地的方式存在用户私钥泄露的风险,比如,攻击者通过木马窃取保存在用户计算装置中的用户私钥,破解用户保护私钥的PIN码,从而获得用户私钥;而且这种采用纯软件密码模块的方式,用户私钥最终需以明文形式导入到内存中使用,这样攻击者有可能通过一定的攻击方式,窃取存放在内存中的用户私钥。如何在不采用密码硬件的情况下,安全存储和使用用户私钥具有现实的需求,对此问题的解决具有很好的实际应用意义。对此问题常见的解决方案是,将用户私钥通过一定的方式分割成多份,每份称为秘密份额,然后将每份秘密份额存储到不同的计算装置中,尤其是将部分秘密份额存放在安全保护措施到位、安全条件好的专业 ...
【技术保护点】
一种SM2数字签名生成方法,其特征是:生成SM2数字签名时有m个装置参与,其中m大于或等于2;m个装置分别被称为装置1,装置2,…,装置m;在生成数字签名前,针对参与数字签名生成的m个装置进行如下初始化操作:给m个装置中的每个装置都分配1份秘密份额,其中装置i的秘密份额或从装置i的秘密份额导出的秘密数是di,i=1,2,…,m,其中,di是区间[1,n‑1]内的整数,而n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶;m个装置的秘密份额或者从秘密份额导出的秘密数与用户的SM2私钥dA满足关系:(1+dA)‑1dA mod n=(d1+d2+…+dm)mod n,其中(1+dA)‑1是(1+dA)的模n乘法逆;在区间[1,n‑1]内随机选择一个整数b,计算c=(1+dA)‑1b mod n;计算Gb=[b]G,其中G是SM2椭圆曲线点群的基点;将c、Gb分发给所有m个装置;当需要使用用户的SM2私钥dA针对消息M进行数字签名时,m个装置按如下方式进行数字签名的生成:首先,m个装置通过交互,计算得到Q=[k1+k2+…+km]Gb,r=(e+x ...
【技术特征摘要】
1.一种SM2数字签名生成方法,其特征是:生成SM2数字签名时有m个装置参与,其中m大于或等于2;m个装置分别被称为装置1,装置2,…,装置m;在生成数字签名前,针对参与数字签名生成的m个装置进行如下初始化操作:给m个装置中的每个装置都分配1份秘密份额,其中装置i的秘密份额或从装置i的秘密份额导出的秘密数是di,i=1,2,…,m,其中,di是区间[1,n-1]内的整数,而n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶;m个装置的秘密份额或者从秘密份额导出的秘密数与用户的SM2私钥dA满足关系:(1+dA)-1dAmodn=(d1+d2+…+dm)modn,其中(1+dA)-1是(1+dA)的模n乘法逆;在区间[1,n-1]内随机选择一个整数b,计算c=(1+dA)-1bmodn;计算Gb=[b]G,其中G是SM2椭圆曲线点群的基点;将c、Gb分发给所有m个装置;当需要使用用户的SM2私钥dA针对消息M进行数字签名时,m个装置按如下方式进行数字签名的生成:首先,m个装置通过交互,计算得到Q=[k1+k2+…+km]Gb,r=(e+x1)modn,且得到的r、Q满足:r≠0且[r]G+Q不是SM2椭圆曲线点群的零元,其中ki是计算Q的过程中装置i在区间[1,n-1]中随机选择的一个整数,i=1,2,…,m,x1取自(x1,y1)=Q,e是从用户标识和消息M导出的杂凑值;之后,每个装置计算si=(cki-dir)modn,其中i=1,2,…,m,si是对应装置i所进行的计算;最后,m个装置中的一个装置计算得到s=(s1+s2+…+sm)modn;则(r,s)即为使用用户的SM2私钥dA对消息M的数字签名。2.根据权利要求1所述的SM2数字签名生成方法,其特征是:在针对消息M进行数字签名时,m个装置按如下方式,或者按与如下方式等同的方式,通过交互计算得到Q=[k1+k2+…+km]Gb,r=(e+x1)modn,且得到的r、Q满足:r≠0且[r]G+Q不是SM2椭圆曲线点群的零元:m个装置中的每个装置在区间[1,n-1]中随机选择一个整数ki,计算得到Qi=[ki]Gb,其中,i=1,2,…,m,分别表示装置i随机选择的整数ki,所进行的计算及计算得到的Qi;之后,由m个装置中的一个装置计算Q=Q1+Q2+…+Qm,此时,Q=[k1+k2+…+km]Gb;若进行Q=Q1+Q2+…+Qm计算的是装置j,其中j=1,或2,…,或m,则在完成Q的计算后,装置j检查Q是否是SM2椭圆曲线点群的零元,若是,则装置j重新选择kj,重新计算Qj,重新计算Q=Q1+Q2+…+Qm,重新判断Q是否是零元,重复此过程,直到Q不是零元;若Q不是零元,则装置j取(x1,y1)=Q,计算r=(e+x1)modn;若计算得到的r、Q满足:r≠0且[r]G+Q不是SM2椭圆曲线点群的零元,则Q、r的计算完成;否则,装置j重新在区间[1,n-1]中随机选择一个整数kj,然后重新计算Qj、Q=Q1+Q2+…+Qm,重新判断Q是否是零元,以及在Q不是零元时重新计算r=(e+x1)modn,重复此过程,直到r≠0且[r]G+Q不是SM2椭圆曲线点群的零元;或者,若r=0或[r]G+Q是SM2椭圆曲线点群的零元,则所有m个装置一起从头重新进行Q、r的计算,直到r≠0且[r]G+Q不是SM2椭圆曲线点群的零元;所述等同的方式,即同样能得到Q=[k1+k2+…+km]Gb、并在Q不是SM2椭圆曲线点群的零元时依据Q计算得到r,且使得r、Q满足r≠0且[r]G+Q不是SM2椭圆曲线点群的零元的方式。3.根据权利要求2所述的SM2数字签名生成方法,其特征是:若计算Q=Q1+Q2+…+Qm、r=(e+x1)modn的装置,在计算得到Q、r后,仅检查r是否为零,不检查[r]G+Q是否是SM2椭圆曲线点群的零元,且仅在r=0时重新进行Q、r计算,则:根据s1,s2,…,sm计算s的装置,若检查发现(s+r)modn=0,则放弃计算得到的s,数字签名生成过程中计算Q、r的装置j,其中j=1,或2,…,或m,重新在区间[1,n-1]中随机选择一个整数kj,重新计算Qj,重新计算Q=Q1+Q2+…+Qm,重新判断Q是否是零元,以及在Q不是零元时重新计算r=(e+x1)modn,之后每个装置i重新计算si,i=1,2,…m,然后由一个装置根据s1,s2,…,sm计算s,重复此过程,直到最后计算得到的s满足(s+r)modn≠0;或者根据s1,s2,…,sm计算s的装置,若检查发现(s+r)modn=0,则所有m个装置一起从头重新进行Q、r的计算,直到最后计算得到的s满足(s+r)modn≠0。4.一种基于权利要求1-3中任一项的SM2数字签名生成系统,其特征是:所述SM2数字签名生成系统包括m个装置,其中m大于或等于2;所述m个装置中的每个装置是一个密码服务器或一个用户计算装置;所述m个装置按所述数字签名生成方法,生成使用用户的SM2私钥dA针对消息M的数字签...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。