当前位置: 首页 > 专利查询>北京大学专利>正文

一种SM2公钥密码的数字签名快速生成方法技术

技术编号:20925738 阅读:29 留言:0更新日期:2019-04-20 11:43
本发明专利技术公布了一种SM2公钥密码的数字签名快速生成方法,在SM2签名服务器平台上,基于GM/T 0003.2‑2012 SM2椭圆曲线公钥密码标准中的SM2签名生成算法进行优化,是一种SM2签名生成算法的快速计算方法,能够快速实现SM2数字签名算法中的签名生成,以及SM2推荐参数中256比特素数域上的快速计算。本发明专利技术针对现有方法中的签名方案和有限域计算进行优化,与通用的椭圆曲线上的优化方法相比,本发明专利技术属于针对SM2算法的专门优化,在SM2签名服务器平台上,特别是应用于使用推荐SM2参数、私钥生命周期较长的服务器平台,计算开销小,能够有效提速。

A Fast Digital Signature Generation Method for SM2 Public Key Cryptography

The invention discloses a fast digital signature generation method for SM2 public key cryptography. On the SM2 signature server platform, the SM2 signature generation algorithm based on GM/T 0003.2 2012 SM2 elliptic curve public key cryptography standard is optimized. It is a fast calculation method of SM2 signature generation algorithm, which can quickly realize the signature generation in SM2 digital signature algorithm and 2 of SM2 recommended parameters. Fast computation over 56 bit prime field. Compared with the general optimization method on elliptic curve, the present invention belongs to the special optimization for SM2 algorithm. It is applied to SM2 signature server platform, especially to the server platform with recommended SM2 parameters and long private key life cycle, and has low computational overhead and can effectively speed up.

【技术实现步骤摘要】
一种SM2公钥密码的数字签名快速生成方法
本专利技术涉及数字签名
,特别是涉及一种SM2公钥密码的快速计算方法,针对国产商用密码算法SM2数字签名生成算法的快速计算方法,以及针对SM2推荐参数的快速计算方法。
技术介绍
SM2椭圆曲线公钥密码算法是由国家密码管理局在2012年发布的一系列基于椭圆曲线密码的密码标准(GM/T0003.2-2012SM2椭圆曲线公钥密码标准),这些标准以中华人民共和国密码行业标准发布,其中包含SM2数字签名算法(参见GM/T0003.2-2012中的第2部分)、密钥交换协议、公钥加密算法以及推荐的256比特素数域椭圆曲线参数(参见GM/T0003.2-2012中的第5部分:参数定义)。虽然SM2标准中的算法和协议可以基于任何满足椭圆曲线密码要求的素域或二进制域曲线参数,但是,只有采用了推荐参数的SM2实现才能够满足标准化和互联互通的要求。签名算法运算时间较长,需要对算法进行优化。SM2数字签名算法在GM/T0003.2-2012标准中的推荐参数上的计算方法分为签名方案、椭圆曲线算数和有限域计算三个层次,现有的SM2优化方法均是对椭圆曲线上的签名算法的通用优化方法,并未针对SM2具体的结构和使用的参数进行优化加速,也没有结合SM2的应用场景进行分析优化,在通用的服务器平台,如ARM,X86服务器平台上,优化的程度有限,速度提升不明显,在对签名速度有要求的应用场景下,通用的椭圆曲线的优化加速方法难以满足计算速度的需求。
技术实现思路
为了克服上述现有技术的不足,本专利技术提供一种SM2公钥密码的数字签名快速生成方法,是一种SM2签名生成算法的快速计算方法,基于GM/T0003.2-2012SM2椭圆曲线公钥密码标准中的SM2签名生成算法进行优化,能够快速实现SM2数字签名算法中的签名生成,以及SM2推荐参数中256比特素数域上的快速计算。本专利技术针对现有方法中的签名方案和有限域计算进行优化,与通用的椭圆曲线上的优化方法相比,本专利技术属于针对SM2算法的专门优化,在通用的计算平台,如ARM、X86平台上,特别是应用于使用推荐SM2参数、私钥生命周期较长的服务器平台,提速效果好。标准SM2签名算法和推荐参数如下:给定SM2公钥密码的推荐椭圆曲线参数(GM/T0003.2-2012SM2椭圆曲线公钥密码标准的第5部分中定义的参数),其中G为椭圆曲线点群的生成元点,n是椭圆曲线点群的阶;设待签名的消息为M,签名方的身份和公钥的杂凑值为ZA,用于签名的私钥为d,对应的公钥为P=[d]G,这里[d]G表示椭圆曲线点的标量乘法。SM2的推荐参数的椭圆曲线由素数域Fp上的方程y2=x3-3x+b定义,其中有限域参数p是一个256比特的素数,标准中以十六进制的值给出,可以验证p的值等同于如下表示方式:p=2256-2224-296+264-1SM2数字签名的生成包括如下步骤:1.1)令其中符号||表示比特串的连接,是需要杂凑运算的比特串;1.2)计算函数Hv()为密码杂凑函数,e是计算得到的杂凑值的整数形式;其中,在SM2标准中推荐采用GM/T0004-2012SM3密码杂凑算法中的SM3密码杂凑函数;1.3)生成随机数整数k∈[1,n-1];1.4)计算得到椭圆曲线点(x1,y1),其中(x1,y1)=[k]G;1.5)计算r=e+x1modn,若r=0或r+k=n,返回第1.3)步;1.6)计算s=(1+d)-1·(k-r·d)modn,若s=0则返回第1.3)步;1.7)输出(r,s)为签名值。本专利技术提供的技术方案是:一种SM2(椭圆曲线)公钥密码的数字签名的快速生成方法,在SM2签名服务器平台上,将基于GM/T0003.2-2012SM2椭圆曲线公钥密码标准中的SM2签名生成算法进行优化。将SM2签名算法进行变形分割为两个阶段进行两阶段SM2签名基础上,对椭圆曲线定义的数学运算进行针对性的加速和优化;在生成数字签名的典型应用场景中,签名方通常会采用固定的长生命周期签名私钥,在此期间签名私钥是不变的。本专利技术在私钥周期较长、使用推荐参数的SM2应用场景和平台上,能够大大提高签名和验证签名的速度;技术方案包括:第一,将SM2签名算法进行变形,分为两个阶段,预计算阶段和签名生成阶段;SM2数字签名由预计算部分和生成签名两部分共同构成,签名方首先执行私钥d相关的预计算过程,并将结果保存为t,在签名生成阶段读取预计算结果t参与签名计算,并且签名生成阶段仅需要预计算的结果t,不再需要原私钥d。其中预计算阶段在一定时间内只需要计算一次(私钥生命周期内),签名生成阶段在每次签名的时候都需要计算,但比标准SM2签名所需的计算要少。第二,在使用了推荐参数的两阶段SM2签名的基础上,针对SM2推荐参数的数学特点,对其椭圆曲线定义的素数域的乘法、求逆等数学运算进行针对性的加速和优化,加快椭圆曲线算数的速度,进一步提高签名和验证签名的计算速度。1)生成一个新的SM2密钥对,并确定SM2密钥对的生命周期,其中私钥为d;2)预计算阶段:计算t←(1+d)-1modn,将将t安全存储在本地,生命周期与秘钥的生命周期相同;3)需要签名时,利用步骤2)事先保存的变量t,计算SM2签名,方法是在计算签名值(r,s)的时候,用公式s=t·(k+r)-rmodn代替标准算法步骤1.6)的s=(1+d)-1.(k-r·d)modn,其余计算过程保持不变;4)当秘钥生命周期结束的时候,删除秘钥对和保存的变量t,重新从步骤1)开始计算。当密钥的生命周期没有结束,私钥d不变的情况下,每次签名都只需要计算步骤3)。步骤3)签名生成阶段计算SM2签名具体执行如下操作:2.1)令2.2)计算并将e转换为整数;2.3)生成随机数k∈[1,n-1];2.4)计算椭圆曲线点(x1,y1)=[k]G;2.5)计算r=e+x1modn,若r=0或r+k=n,返回第2.3)步;2.6)计算s=t·(k+r)-rmodn,若s=0则返回第2.3)步;2.7)输出(r,s)为签名值。可以证明两阶段SM2签名算法和标准的签名算法生成的签名值是相同的(r,s),即两阶段SM2签名算法的第2.6步和SM2签名生成标准算法中第1.6步是等效的,参数相同的情况下s=t·(k+r)-r=(1+d)-1·(k-r·d)modn,证明如下:(1+d)-1(k-rd)≡(1+d)-1(k+r-r(1+d))≡(1+d)-1(k+r)-r≡t(k+r)-rmodn因此本专利技术方法可以生成正确的SM2数字签名。在上述SM2公钥密码的两阶段签名算法的基础上,本专利技术还提供一种SM2推荐参数下的椭圆曲线运算的优化加速方法,针对SM2标准中给出的特定推荐参数中给出的有限域进行快速优化计算,包括:素数域Fp乘法加速方法和素数域Fp求逆的加速方法;从而获得性能提升,不仅提高了签名速度,同时也可以提升验证签名的速度。SM2的数字签名、密钥交换协议和公钥加密方案中的椭圆曲线点乘计算都依赖于推荐参数有限域上的计算,SM2中涉及的椭圆曲线算数涉及素数域Fp上的加法、减法、乘法、平方和求逆(乘法逆元)计算,其中乘法(平方)和求逆的计算较慢,针对SM2推荐参数的特定p值,本专利技术提供模乘和求逆的快速计算本文档来自技高网...

【技术保护点】
1.一种SM2公钥密码的数字签名的快速生成方法,在SM2签名服务器平台上,通过将SM2签名算法进行变形,分为两个阶段,包括预计算阶段和签名生成阶段,使得SM2签名算法优化为两阶段SM2签名,从而有效提高进行签名的速度;设定G为椭圆曲线点群的生成元点;n是椭圆曲线点群的阶;待签名的消息为M;签名方的身份和公钥的杂凑值为ZA;用于签名的私钥为d;包括如下步骤:步骤一,生成一个新的SM2密钥对,并确定SM2密钥对的生命周期,其中私钥为d;步骤二,在预计算阶段,签名方首先执行私钥d相关的预计算过程,并将结果保存为t;预计算阶段生命周期与秘钥的生命周期相同,在私钥生命周期内只需要计算一次;预计算过程为:t←(1+d)

【技术特征摘要】
1.一种SM2公钥密码的数字签名的快速生成方法,在SM2签名服务器平台上,通过将SM2签名算法进行变形,分为两个阶段,包括预计算阶段和签名生成阶段,使得SM2签名算法优化为两阶段SM2签名,从而有效提高进行签名的速度;设定G为椭圆曲线点群的生成元点;n是椭圆曲线点群的阶;待签名的消息为M;签名方的身份和公钥的杂凑值为ZA;用于签名的私钥为d;包括如下步骤:步骤一,生成一个新的SM2密钥对,并确定SM2密钥对的生命周期,其中私钥为d;步骤二,在预计算阶段,签名方首先执行私钥d相关的预计算过程,并将结果保存为t;预计算阶段生命周期与秘钥的生命周期相同,在私钥生命周期内只需要计算一次;预计算过程为:t←(1+d)-1modn;步骤三,在签名生成阶段,读取预计算结果t参与签名计算;签名生成阶段仅需要预计算的结果t,不再需要私钥d;签名生成阶段在每次签名时均进行计算;需要签名时计算SM2签名具体执行如下操作:31)在计算签名值(r,s)时,采用公式s=t·(k+r)-rmodn代替标准算法的公式s=(1+d)-1·(k-r·d)modn,其余计算过程保持不变;其中:k为随机生成的整数,k∈[1,n-1];r=e+x1modn;e是计算得到的杂凑值的整数形式,函数Hv()为密码杂凑函数;是需要杂凑运算的比特串,符号||表示比特串的连接;(x1,y1)=[k]G;(x1,y1)为椭圆曲线点;32)当秘钥生命周期结束时,删除秘钥对和保存的变量t,重新从步骤一开始计算;输出签名值(r,s),由此实现SM2公钥密码的数字签名的快速生成。2.如权利要求1所述SM2公钥密码的数字签名的快速生成方法,其特征是,步骤31)计算签名值(r,s)具体执行如下操作:311)令312)计算并将e转换为整数;313)生成随机数k∈[1,n-1];314)计算椭圆曲线点(x1,y1)=[k]G;315)计算r=e+x1modn,若r=0或r+k=n,返回操作313);316)计算s=t·(k+r)-rmodn,若s=0则返回操作313);输出(r,s)为签名值。3.如权利要求1或2所述SM2公钥密码的数字签名的快速生成方法,其特征是,所述SM2签名服务器平台为支持ARM或者X86指令集的SM2签名服务器。4.一种在使用推荐参数的SM2计算平台上优化加速椭圆曲线运算的方法,其特征是,SM2的数字签名、密钥交换协议和公钥加密中,椭圆曲线点乘计算均依赖于推荐参数有限域上的计算;所述方法在使用推荐参数的SM2计算平台上,针对SM2标准中的特定推荐参数的有限域进行快速优化计算,从而加快椭圆曲线算数的速度,进一步提高签名和验证签名的计算速度;包括:素数域Fp乘法加速方法和素数域Fp求逆的加速方法。5.如权利要求4所述的在使用推荐参数的SM2计算平台上优化加速椭圆曲线运算的方法,其特征是,素数域Fp乘法加速方法包括如下步骤:A1)将素数域上的乘法运...

【专利技术属性】
技术研发人员:关志陈霄王珂陈钟南湘浩
申请(专利权)人:北京大学
类型:发明
国别省市:北京,11

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

1