[发明专利]一种sm2性能优化实现方法有效

专利信息
申请号: 202010992268.3 申请日: 2020-09-21
公开(公告)号: CN112134704B 公开(公告)日: 2022-04-01
发明(设计)人: 姜孟杉;王震;白健;安红章 申请(专利权)人: 中国电子科技网络信息安全有限公司
主分类号: H04L9/30 分类号: H04L9/30
代理公司: 成都九鼎天元知识产权代理有限公司 51214 代理人: 徐静
地址: 610207 四川省成都市*** 国省代码: 四川;51
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 sm2 性能 优化 实现 方法
【说明书】:

发明公开了一种sm2性能优化实现方法,其所述方法为针对sm2的椭圆曲线上的点运算进行优化,包括:(1)将椭圆曲线点的标准坐标转化到仿射坐标系;(2)在仿射坐标系下,使用预计算优化椭圆曲线点加、倍点和点乘运算过程。本发明使用了转化仿射坐标和预计算来优化椭圆曲线点加、倍点和点乘运算过程,从而减少点加、倍点和点乘运算的次数,提高运算效率。

技术领域

本发明涉及是一种sm2性能优化实现方法。

背景技术

国密sm2是国家密码管理局发布的椭圆曲线公钥密码算法,目前已广泛应用于包括金融领域在内的商用密码体系中。

针对sm2p256曲线(椭圆曲线)优化sm2算法,计算效率是椭圆曲线密码体制中最关心的问题之一,在sm2签名、密钥交换和加密算法中,椭圆曲线上点运算占据了绝大部分的计算量。因此,需要对椭圆曲线上的点运算进行优化,以提高运算效率。

发明内容

本发明所要解决的技术问题是:针对上述存在的问题,提供一种sm2性能优化实现方法。

本发明采用的技术方案如下:

一种sm2性能优化实现方法,所述方法为针对sm2的椭圆曲线上的点运算进行优化,包括:

将椭圆曲线点的标准坐标转化到仿射坐标系;

在仿射坐标系下,使用预计算优化椭圆曲线点加、倍点和点乘运算过程。

进一步的,所述仿射坐标系为雅各比坐标系、标准仿射坐标系或Chudnovsky仿射坐标系。

进一步的,当仿射坐标系为雅各比坐标系时,椭圆曲线倍点的运算过程如下:

P=(X1,Y1,Z1),R=(X3,Y3,Z3)=P+P;

point_double(R,P);

其中,P为椭圆曲线上的点;point_double()为椭圆曲线倍点运算;R为倍点运算结果。

进一步的,当仿射坐标系为雅各比坐标系时,椭圆曲线点加的运算过程如下:

其中,P、Q为椭圆曲线上的两点;point_add()为椭圆曲线点加运算;point_double()为椭圆曲线倍点运算;R在point_add()中为点加运算结果;R在point_double()中为倍点运算结果。

进一步的,当仿射坐标系为雅各比坐标系,且椭圆曲线点为生成元G时,点乘的运算过程如下:

(1)将把256bit分成37个窗口,每个窗口7bit,计算表:

table[i][j]=27i·(j+1Gi=0,1,…,36,j=0,1,…,63

并把表中每一个点的雅各布Z坐标转换成1;

(2)计算生成元G的点乘kG时,先对k使用窗口大小等于7的booth编码,使得每个窗口中的7bit所表示的整数都是绝对值小于等于64的有符号数;然后通过36次查表和36次点加计算点乘;本步骤过程如下:

其中,ki是k的第i个窗口;point_mul_G()为椭圆曲线点为生成元G的点乘运算;booth_encode7为窗口大小等于7的booth编码,R在point_mul_G()中为椭圆曲线点为生成元G的点乘运算结果。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电子科技网络信息安全有限公司,未经中国电子科技网络信息安全有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202010992268.3/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top