[发明专利]一种基于SM2基点的点乘运算方法在审
申请号: | 201410681320.8 | 申请日: | 2015-08-03 |
公开(公告)号: | CN104506316A | 公开(公告)日: | 2015-07-29 |
发明(设计)人: | 吴庆国;张世雄;李元正 | 申请(专利权)人: | 成都卫士通信息产业股份有限公司 |
主分类号: | H04L9/32 | 分类号: | H04L9/32 |
代理公司: | 成都九鼎天元知识产权代理有限公司 51214 | 代理人: | 袁春晓 |
地址: | 610041 四*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 sm2 基点 运算 方法 | ||
技术领域
本发明涉及密码算法实现领域。
背景技术
椭圆曲线公钥密码体制(Elliptic Curve Cryptosystem,简称ECC),即基于椭圆曲线离散对数问题的各种公钥密码体制,最早于1985年由N.Koblitz和V.Miller各自独立地提出。它的基本思路是利用有限域上的椭圆曲线有限群代替基于离散对数问题的有限循环群所得到的一类密码体制。
在相同安全强度的情况下,ECC的密钥长度只有RSA密钥长度的1/6甚至更少,运算速度比RSA快,且可选择多种曲线参数。ECC以其高效率、高安全强度优势,在信息安全应用中具有巨大的市场发展空间。
SM2算法是由中国国家密码管理局牵头制定的商用密码算法,SM2算法基于ECC算法改造而成,包含一组推荐的曲线参数,SM2算法的密钥长度为256位。目前,我国正在商用密码领域大力推广应用SM2系列商用密码算法。
点乘运算是实现SM2算法的核心运算。SM2算法的点乘算法即计算kP,其中,k是随机选取的一个大正整数,P是椭圆曲线上的一个点。一次点乘运算可分解为多次的点加(Point Add)运算和双倍点(Point Double)运算。
现有的点乘运算的分解如错误!未找到引用源。所示,无论P点是否为基点,在一次点乘运算中包含256轮运算,每一轮根据k每一位的值不同而执行不同的运算,其中Point Double运算除最后一轮不执行外,其他每轮都要执行。也就是说一次点乘运算中包含255轮双倍点运算,具体做法是将运算P点乘2作为与k值第0位对应的双倍点运算的结果,将与k值前一位对应的双倍点运算结果乘2作为与k值当前位对应的双倍点运算结果,以此类推得到与k值第254位对应的双倍点运算结果。
而Point Add运算则仅当k的当前位为1时才执行,而为0时则不执行,前一轮Point Add的运算结果和Point Double的运算结果会作为后一轮的Point Add的输入。
可见在点乘运算中,每轮的Point Double运算与上一轮的Point Double运算结果有关,而与上一轮的Point Add的结果无关,如果P为一个特定的点,则可以对此特定点P的Point Double运算进行优化。
发明内容
本发明所要解决的技术问题是:针对上述存在的问题,一种基于SM2基点的点乘运算方法,通过降低点乘运算中的计算复杂度有效地提升SM2算法的性能。
本发明采用的技术方案如下:首先将SM2基点的双倍点运算结果计算出来并存储:对SM2基点进行双倍点运算,将运算结果与k值第0位对应并存储;对与k值前一位对应的双倍点运算的结果进行双倍点运算,将运算结果作为与k值当前位对应的双倍点运算的结果并存储;依次类推直到得到与k值第254位对应的双倍点运算的结果并存储。
然后执行以下运算:
判断k值的第0位是否为1,若是则将SM2基点与零点相加得到与k值第0位对应的点加运算的结果,若k值的第0位不为1则将零点作为与k值第0位对应的点加运算的结果;
判断k值的下一位是否为1,若是则将与k值前一位对应的点加运算的结果与k值前一位对应的双倍点运算结果相加的结果作为与k值当前位对应的点加运算结果,否则将与k值前一位对应的点加运算结果作为与k值当前位对应的点加运算结果;依次类推直到得到与k值第255位对应的点加运算结果。
由于SM2算法包含了一组推荐的曲线参数,该曲线参数中包含了一个固定的基点坐标值又称为SM2基点。SM2算法在做签名、验签运算中,均要使用该基点与k进行运算。本发明预先计算出SM2算法基点的255轮Point Double的值。当P点为SM2基点时,则可省掉255轮Point Double的运算,直接从预先计算的Point Double运算结果中进行拷贝即可(如错误!未找到引用源。所示)。
单次Point Double比Point Add的运算量少20%,但每次点乘运算中,Point Double运算的次数要比Point Add多一倍左右,因此,通过本发明提供的预计算方法,可将SM2算法基点的点乘运算性能提升一倍以上。SM2签名运算中只有一次点乘运算,就是基点的点乘运算,SM2签名验证运算和加密运算有两次点乘运算,其中一次是基点的点乘运算。因此,本发明的有益效果是:显著地提升SM2算法签名、签名验证、加密运算的性能。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1为现有的点乘运算分解图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都卫士通信息产业股份有限公司,未经成都卫士通信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410681320.8/2.html,转载请声明来源钻瓜专利网。