[发明专利]一种适合SM2算法的快速模约减方法和介质有效
申请号: | 201711383428.9 | 申请日: | 2017-12-20 |
公开(公告)号: | CN108418687B | 公开(公告)日: | 2022-02-08 |
发明(设计)人: | 何德彪;陈泌文;谢翔;李升林;孙立林 | 申请(专利权)人: | 矩阵元技术(深圳)有限公司 |
主分类号: | H04L9/30 | 分类号: | H04L9/30 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 施浩 |
地址: | 518054 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 适合 sm2 算法 快速 模约减 方法 介质 | ||
1.一种适合SM2算法的快速模约减方法,其特征在于,针对SM2椭圆曲线公钥算法推荐参数计算模约减,用于SM2算法的快速实现,方法包括:
通过数据转换得到转换数据,将512比特数模SM2椭圆曲线推荐参数问题转化为计算若干个256比特数的线性组合;
通过拆分负数项和多倍项将转换数据拆分,并用拆分数据表示转换数据,以使每个256比特数易于表示;
通过重组整合拆分数据,降低加法或减法个数;
通过计算若干个256比特数的和,完成512比特数模SM2椭圆曲线推荐参数模约减的计算;
其中,数据转换的步骤进一步包括:
步骤1.1,将c modp256进行转化,
其中p256=2256-2224-296+264-1,输入整数且可表示为c=(c2t-1,...,c2,c1,c0),
其中t=8
步骤1.2,将步骤1.1中的I2modp256进行转化,
I2modp256=([(c15,c14,c13,c12,c11,c10,c9,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,0,0,0,0,0,c8,0,0,0,0,0,0,0,0)]modp256-c8p256modp256)modp256
=([(c15,c14,c13,c12,c11,c10,c9,0,0,0,0,0,0,0,0,0)]modp256+[(c8,0,0,0,c8,-c8,0,c8)]modp256)modp256
=(I3modp256+R2modp256)modp256;
步骤1.3,将步骤1.2中的I3modp256进行转化,
I3modp256=([(c15,c14,c13,c12,c11,c10,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,0,0,0,0,c9,0,0,0,0,0,0,0,0,0)]modp256-232c9p256modp256-c9p256modp256)modp256
=([(c15,c14,c13,c12,c11,c10,0,0,0,0,0,0,0,0,0,0)]modp256+[(c9,0,0,c9,0,-c9,c9,c9)]modp256)modp256
=(I4modp256+R3modp256)modp256
步骤1.4,将步骤1.3中的I4modp256进行转化,
I4modp256=([(c15,c14,c13,c12,c11,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,0,0,0,c10,0,0,0,0,0,0,0,0,0,0)]modp256-264c10p256modp256-232c10p256modp256-c10p256modp256)modp256
=([(c15,c14,c13,c12,c11,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(c10,0,c10,0,0,0,c10,c10)]modp256)modp256
=(I5modp256+R4modp256)modp256;
步骤1.5,将步骤1.4中的I5modp256进行转化,
I5modp256=([(c15,c14,c13,c12,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,0,0,c11,0,0,0,0,0,0,0,0,0,0,0)]modp256-296c11p256modp256-264c11p256modp256-232c11p256modp256-c11p256modp256)modp256
=([(c15,c14,c13,c12,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(c11,c11,0,0,c11,0,c11,c11)]modp256)modp256
=(I6modp256+R5modp256)modp256;
步骤1.6,将步骤1.5中的I6modp256进行转化,
I6modp256=([(c15,c14,c13,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,0,c12,0,0,0,0,0,0,0,0,0,0,0,0)]modp256-2128c12p256modp256-296c12p256modp256-264c12p256modp256-232c12p256modp256-c12p256modp256)modp256
=([(c15,c14,c13,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(2c12,0,0,c12,c12,0,c12,c12)]modp256)modp256
=(I7modp256+R6modp256)modp256;
步骤1.7,将步骤1.6中的I7modp256进行转化,
I7modp256=([(c15,c14,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,c13,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256-2160c13p256modp256-2128c13p256modp256-296c3p256modp256-264c13p256modp256-232c13p256modp256-c13p256modp256)modp256
=([(c15,c14,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(2c13,0,c13,c13,2c13,-c13,c13,2c13)]modp256)modp256
=(I8modp256+R7modp256)modp256;
步骤1.8,将步骤1.7中的I8modp256进行转化,
I8modp256=([(c15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,c14,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256-2192c14p256modp256-2160c14p256modp256-2128c14p256modp256-296c14p256modp256-264c14p256modp256-232c14p256modp256-c14p256modp256)modp256
=([(c15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(2c14,c14,c14,2c14,c14,-c14,2c14,2c14)]modp256)modp256
=(I9modp256+R8modp256)modp256;
步骤1.9,将步骤1.8中的I9modp256进行转化,
I9modp256=([(c15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256-2224c15p256modp256-2192c15p256modp256-2160c15p256modp256-2128c15p256modp256-296c15p256modp256-264c15p256modp256-232c15p256modp256-c15p256modp256)modp256
=[(3c15,c15,2c15,c15,c15,0,2c15,2c15)]modp256
=R9modp256;
根据上述步骤1.1至步骤1.9的转换过程,最后用转换数据(R1,R2,...,R9)表示c modp256:
c modp256=(R1+R2+R3+R4+R5+R6+R7+R8+R9)modp256;
其中,重组整合拆分数据的过程中确保对应位置相的和不发生变化,其步骤进一步包括:
c modp256=(R1+t2+t3+R4+R5+T1+T2+T3+T4+T5+T6+T7+T8-s2-s3-s7-s8)modp256
=[(c7,c6,c5,c4,c3,c2,c1,c0)+(c8,0,0,0,c8,0,0,c8)+(c9,0,0,c9,0,0,c9,c9)+(c10,0,c100,0,0,c10,c10)+(c11,c11,0,0,c11,0,c11,c11)++2(c14,0,c15,c14,c13,0,c15,c14)+2(c12,0,0,0,0,0,c14,c13)+(0,0,0,c12,c120,c12,c12)+(c13,0,c13,c13,0,0,c13,0)+(c13,c14,c14,0,c14,0,0,0)+(c15,c15,0,c15,c15,0,0,0)+(c15,0,0,0,0,0,0,c15)+(c15,0,0,0,0,0,0,c15)-(0,0,0,0,0,c8,0,0)-(0,0,0,0,0,c9,0,0)-(0,0,0,0,0,c13,0,0)-(0,0,0,0,0,c14,0,0)]modp256
=[s0+s1+s4+s5+s6+2s9+2s10+s11+s12+s13+s14+2s15-s2-s3-s7-s8]modp256;
根据上述拆分过程,最后用重组整合数据表示c modp256:
c modp256=[s0+s1+s4+s5+s6+2s9+2s10+s11+s12+s13+s14+2s15-s2-s3-s7-s8]modp256。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于矩阵元技术(深圳)有限公司,未经矩阵元技术(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711383428.9/1.html,转载请声明来源钻瓜专利网。