SM2数字签名生成方法及系统技术方案

技术编号:14894484 阅读:60 留言:0更新日期:2017-03-29 09:48
发明专利技术涉及SM2数字签名生成方法:在[1,n‑1]中任选一整数b,计算c=(1+dA)‑1b mod n,Gb=[b]G,将Gb、c给m个装置,m≥2;m个装置分别有秘密d1、d2、…、dm且(1+dA)‑1dA mod n=(d1+d2+…+dm)mod n;需使用SM2私钥dA对消息数字签名时,m个装置协同计算Q=[k1+k2+…+km]Gb,r=(e+x1)mod n,其中(x1,y1)=Q,ki是装置i在[1,n‑1]中任选的整数,e为消息杂凑值;每个装置计算si=(cki‑dir)mod n;由任一装置计算s=(s1+s2+…+sm)mod n;则(r,s)为数字签名。

【技术实现步骤摘要】

本专利技术属于信息安全
,特别是SM2数字签名生成方法及系统
技术介绍
在公开密钥密码体制中,为了保障用户私钥的安全性,用户的私钥通常是存储在专门的密码硬件中使用,如存储在USBKey、SmartCard中使用,且私钥不能从密码硬件中导出。但是,在有些情况下,比如,由于成本的原因,或者由于没有合适的密码硬件(如移动通信终端),使得用户无法依赖密码硬件来存储私钥、以及使用私钥进行密码运算。对于这种情况,目前最常用的方法是使用纯软件的密码模块,并将用户私钥保存在用户计算装置本地的永久存储介质中(如个人电脑的磁盘、移动通信终端内的电子盘),并通过PIN(PersonalIdentificationNumber)码对私钥进行保护。当需要使用用户私钥时,软件密码模块从用户计算装置的永久存储介质读取用户私钥(必要时要求用户输入PIN码),然后进行密码运算。这种采用纯软件密码模、将用户私钥保存在用户计算装置本地的方式存在用户私钥泄露的风险,比如,攻击者通过木马窃取保存在用户计算装置中的用户私钥,破解用户保护私钥的PIN码,从而获得用户私钥;而且这种采用纯软件密码模块的方式,用户私钥最终需以明文形式导入到内存中使用,这样攻击者有可能通过一定的攻击方式,窃取存放在内存中的用户私钥。如何在不采用密码硬件的情况下,安全存储和使用用户私钥具有现实的需求,对此问题的解决具有很好的实际应用意义。对此问题常见的解决方案是,将用户私钥通过一定的方式分割成多份,每份称为秘密份额,然后将每份秘密份额存储到不同的计算装置中,尤其是将部分秘密份额存放在安全保护措施到位、安全条件好的专业的密码服务机构的在线密码服务系统中;当密码应用程序、系统需要使用用户私钥进行密码运算时,如进行数字签名或数据解密时,多个计算装置分别使用自己的秘密份额进行密码运算,最后将各装置计算的结果合并,形成最后的、使用用户私钥进行密码运算的结果(数字签名或数据解密的结果)。这里,对用户私钥进行的秘密分割可以是普通秘密分割,也可以是门限秘密分割。SM2是由国家密码管理局颁布的一种椭圆曲线公钥密码算法(参见《SM2椭圆曲线公钥密码算法》规范,国家密码管理局,2010年12月),基于此算法能实现数字签名、密钥交换及数据加密。但是,由于SM2算法独特的数字签名运算方式,通常的秘密共享(分割)方式及对应的基于秘密共享的密码运算方式无法适合于使用SM2私钥进行数字签名的情形。
技术实现思路
本专利技术的目的是提出基于秘密共享(或分割)的SM2数字签名生成,以满足没有密码硬件的情况下,安全使用用户SM2私钥进行数字签名的需求。针对本专利技术的目的,本专利技术提出了两个基于秘密共享(或分割)的SM2数字签名生成方案,下面给出具体描述。在以下对本专利技术技术方案的描述中,若P、Q是椭圆曲线点群中的元素(点),则P+Q表示P、Q的点加,[k]P表示k个椭圆曲线点P的点加,即P+P+...+P(共有k个P);省略号“...”,表示多个同样(类型的)的数据项或多个同样的运算;c-1表示整数c的模n乘法逆(即c(c)-1modn=1);多个整数相乘(包括整数符号相乘、常数与整数符号相乘),在不产生二义性的情况下,省略掉乘号“·”,如k1·k2简化为k1k2,3·c,简化位3c;modn表示模n运算(modulooperation),对应于《SM2椭圆曲线公钥密码算法》规范(国家密码管理局,2010年12月)中的modn;还有,模n运算的算子modn的优先级是最低的,如a+bmodn等同于(a+b)modn,a-bmodn等同于(a-b)modn,abmodn等同于(ab)modn。本专利技术的方案一如下。生成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的阶(SM2密码运算所使用的椭圆曲线点群是指由基点G生成的循环群;对于普通秘密共享,di就是秘密份额;对于门限秘密共享,di是从秘密份额导出的秘密数);m个装置的秘密份额或者从秘密份额导出的秘密数与用户的SM2私钥dA满足关系:(1+dA)-1dAmodn=(d1+d2+…+dm)modn,其中(1+dA)-1是(1+dA)的模n乘法逆(即(1+dA)-1与(1+dA)模n乘积为1)(这里被共享的秘密是(1+dA)-1dAmodn,对(1+dA)-1dAmodn的秘密分割可以是普通秘密分割,也可以是门限秘密分割);在区间[1,n-1]内随机选择一个整数b,计算c=(1+dA)-1bmodn(本专利技术中的b不是椭圆曲线方程的参数b);计算Gb=[b]G,其中G是SM2椭圆曲线点群的基点;将c、Gb分发给所有m个装置;(m个装置都不保存dA、b;进行这些初始化操作的可以是一个专门的密钥管理系统,或用户计算装置中的一个密码模块、密钥管理工具)当需要使用用户的SM2私钥dA针对消息M进行数字签名时,m个装置按如下方式进行数字签名的生成(需要使用用户的SM2私钥dA针对消息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导出的杂凑值(即散列值)(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范);之后,每个装置计算si=(cki-dir)modn,其中i=1,2,…,m,si对应si装置i所进行的计算;最后,m个装置中的一个装置(任一个装置)计算得到s=(s1+s2+…+sm)modn;则(r,s)即为使用用户的SM2私钥dA对消息M的数字签名。在上述数字签名生成过程中,r、e、si,i=1,2,…,m,根据计算的需要在m个装置之间传送(如通过网络传送)。在上述方案中,在针对消息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(计算过程中Q1,Q2,…,Qm可在装置间传递);若进行Q=Q1+Q2+…+Qm计算的是本文档来自技高网
...

【技术保护点】
一种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+x1)mod n,且得到的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)mod n,其中i=1,2,…,m,si是对应装置i所进行的计算;最后,m个装置中的一个装置计算得到s=(s1+s2+…+sm)mod n;则(r,s)即为使用用户的SM2私钥dA对消息M的数字签名。...

【技术特征摘要】
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的数字签...

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

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

1