CN112134704B - 一种sm2性能优化实现方法 - Google Patents
一种sm2性能优化实现方法 Download PDFInfo
- Publication number
- CN112134704B CN112134704B CN202010992268.3A CN202010992268A CN112134704B CN 112134704 B CN112134704 B CN 112134704B CN 202010992268 A CN202010992268 A CN 202010992268A CN 112134704 B CN112134704 B CN 112134704B
- Authority
- CN
- China
- Prior art keywords
- point
- multiplication
- elliptic curve
- coordinate system
- addition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种sm2性能优化实现方法,其所述方法为针对sm2的椭圆曲线上的点运算进行优化,包括:(1)将椭圆曲线点的标准坐标转化到仿射坐标系;(2)在仿射坐标系下,使用预计算优化椭圆曲线点加、倍点和点乘运算过程。本发明使用了转化仿射坐标和预计算来优化椭圆曲线点加、倍点和点乘运算过程,从而减少点加、倍点和点乘运算的次数,提高运算效率。
Description
技术领域
本发明涉及是一种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的点乘运算结果。
进一步的,当仿射坐标系为雅各比坐标系,且椭圆曲线点为一般点P时,点乘的运算过程如下:
(1)计算表:
table[j]=(j+1)Pj=0,1,…,15
(2)计算一般点P的点乘kP时,先对k使用窗口大小等于5的booth编码,使得每个窗口中的5bit所表示的整数都是绝对值小于等于16的有符号数;然后通过52次查表、52次点加和260次倍点计算点乘;本步骤过程如下:
其中,ki是k的第i个窗口;point_mul_P()为椭圆曲线点为一般点P的点乘运算;booth_encode5为窗口大小等于5的booth编码,R在point_mul_P()中为椭圆曲线点为一般点P的点乘运算结果。
进一步的,对于椭圆曲线点加、倍点和点乘运算中的模乘,使用蒙哥马利模乘运算。
进一步的,对于椭圆曲线点加、倍点和点乘运算中的模乘,使用蒙哥马利模乘运算的方法为:
(1)对于椭圆曲线点加、倍点和点乘运算中的模乘表示为:
a×b mod p
其中,a、b为大整数,p为模数;
(2)将椭圆曲线点加、倍点和点乘运算中的模乘在蒙哥马利域中转化为:
MM(A,B)=A×B×2-Lmod p
其中,l为中间参数,A=a*L mod p,B=b*L mod p;
(3)当模数p满足-1/pmod 2s=1,s=32或64,则蒙哥马利模乘运算过程如下:
其中,K为运算次数,r为椭圆曲线点加、倍点和点乘运算中的模乘在蒙哥马利域中的表示;montgomery()为蒙哥马利模乘运算。
进一步的,L=256。
进一步的,在64位操作系统中,s=64,K=4。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、本发明使用了转化仿射坐标和预计算来优化椭圆曲线点加、倍点和点乘运算过程,从而减少点加、倍点和点乘运算的次数,提高运算效率。
2、本发明使用了蒙哥马利模乘运算,以进一步对椭圆曲线点加、倍点和点乘运算进行优化。
3、本发明使用了汇编语言实现点加、倍点和点乘运算,以及蒙哥马利模乘运算,使用SIMD指令和BMI2指令进一步加快运算速度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明对sm2性能优化的流程图。
图2为本发明中的倍点运算流程图。
图3为本发明中的点加运算流程图。
图4为本发明中使用的booth编码和查表示意图。
图5为本发明中的点乘生成点运算流程图。
图6为本发明中的点乘一般点运算流程图。
图7为本发明中的蒙哥马利模乘算法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明的一种sm2性能优化实现方法,为针对sm2的椭圆曲线(sm2p256曲线)上的点运算进行优化,该椭圆曲线的方程为:
y2=x3+ax+b
sm2的椭圆曲线(sm2p256曲线)常用且较为耗时的点运算是点加、倍点和点乘运算:
点加运算为P+Q,P≠Q,其中P、Q为椭圆曲线上的两个点;
倍点运算为P+Q=2P,P=Q;
点乘运算为kP=P+P+...+P,即k个点相加,其中k为整数。
因此,本发明的sm2性能优化实际上是针对sm2的椭圆曲线(sm2p256曲线)上的点加、倍点和点乘运算进行优化。本发明从两个步骤进行优化:
第一步:将椭圆曲线点的标准坐标转化到仿射坐标系;椭圆曲线点的标准坐标形式为(x,y),在进行点的运算时可转化为仿射坐标以减少求逆的运算,从而节省运算时间。所述仿射坐标系一般分为雅各比坐标系、标准仿射坐标系或Chudnovsky仿射坐标系。以雅各比仿射坐标系为例,椭圆曲线点的标准坐标(x,y)对应的雅各比坐标为(X,Y,Z),其中满足x=X/Z2,y=Y/Z3。
第二步:在仿射坐标系下,使用预计算优化椭圆曲线点加、倍点和点乘运算过程。即通过预计算的方法提高效率。
1、倍点运算
当仿射坐标系为雅各比坐标系时,如图2所示,椭圆曲线倍点的运算过程如下:
P=(X1,Y1,Z1),R=(X3,Y3,Z3)=P+P;
point_double(R,P);
其中,P为椭圆曲线上的点,X1,Y1,Z1为点P的雅各比坐标;point_double()为椭圆曲线倍点运算;R在point_double()中为倍点运算结果,X3,Y3,Z3为倍点运算结果的雅各比坐标。
2、点加运算
当仿射坐标系为雅各比坐标系时,如图3所示,椭圆曲线点加的运算过程如下:
其中,P、Q为椭圆曲线上的两点,X1,Y1,Z1为点P的雅各比坐标,X2,Y2,Z2为点Q的雅各比坐标;point_add()为椭圆曲线点加运算;point_double()为椭圆曲线倍点运算;R在point_add()中为点加运算结果,R在point_double()中为倍点运算结果,X3,Y3,Z3为点加运算结果的雅各比坐标。
3、点乘运算
计算点乘运算时,根据椭圆曲线点是生成元G或者是一般点P,点乘运算不同。
3.1、椭圆曲线点为生成元G
由于椭圆曲线生成元G为固定的点,因此可以采用大量的预计算来提高效率。即,当仿射坐标系为雅各比坐标系,且椭圆曲线点为生成元G时,点乘的运算过程如下:
(1)将把256bit分成37个窗口,每个窗口7bit,计算表:
table[i][j]=27i·(j+1)Gi=0,1,…,36,j=0,1,…,63
并把表中每一个点的雅各布Z坐标转换成1,以减少存储量,预计算表大小约150KB;
(2)计算生成元G的点乘kG时,先对k使用窗口大小等于7的booth编码,使得每个窗口中的7bit所表示的整数都是绝对值小于等于64的有符号数;然后通过36次查表和36次点加计算点乘,booth编码和查表的示例如图4所示;如图5所示,本步骤过程如下:
其中,ki是k的第i个窗口;point_mul_G()为椭圆曲线点为生成元G的点乘运算;booth_encode7为窗口大小等于7的booth编码,R在point_mul_G()中为椭圆曲线点为生成元G的点乘运算结果。
3.2、椭圆曲线点为一般点P
由于椭圆曲线一般点P不是固定的点,不能用大量的预计算来提高运算速度,取而代之的是用更小的窗口和更少的预计算来加速一般点P的点乘运算。即当仿射坐标系为雅各比坐标系,且椭圆曲线点为一般点P时,如图6所示,点乘的运算过程如下:
(1)计算表:
table[j]=(j+1)Pj=0,1,…,15
(2)计算一般点P的点乘kP时,先对k使用窗口大小等于5的booth编码,使得每个窗口中的5bit所表示的整数都是绝对值小于等于16的有符号数;然后通过52次查表、52次点加和260次倍点计算点乘;本步骤过程如下:
其中,ki是k的第i个窗口;point_mul_P()为椭圆曲线点为一般点P的点乘运算;booth_encode_5为窗口大小等于5的booth编码,R在point_mul_P()中为椭圆曲线点为一般点P的点乘运算结果。
综上所述,本发明使用了转化仿射坐标和预计算来优化椭圆曲线点加、倍点和点乘运算过程,从而减少点加、倍点和点乘运算的次数,提高运算效率。
4、模乘优化
蒙哥马利模乘运算是高效计算模乘运算的技术,因此,本发明对于椭圆曲线点加、倍点和点乘运算中的模乘,使用蒙哥马利模乘运算,以进一步对椭圆曲线点加、倍点和点乘运算进行优化。具体地:
(1)对于椭圆曲线点加、倍点和点乘运算中的模乘表示为:
a×b mod p
其中,a、b为大整数,p为模数;
(2)将椭圆曲线点加、倍点和点乘运算中的模乘在蒙哥马利域中转化为:
MM(A,B)=A×B×2-Lmod p
其中,l为中间参数,A=a*L mod p,B=b*L mod p;
(3)当模数p满足-1/pmod 2s=1,s=32或64,如图7所示,则蒙哥马利模乘运算过程如下:
其中,K为运算次数,r为椭圆曲线点加、倍点和点乘运算中的模乘在蒙哥马利域中的表示;montgomery()为蒙哥马利模乘运算。
与普通的模乘运算相比,蒙哥马利模乘运算将大整数的模运算简化成模2s和除2s,这些运算可以用移位来高效实现。对于椭圆曲线参数p,其长度为256bit,因此一般设置L=256。而在64位操作系统中,可设置s=64,K=4。
从点加、倍点和点乘运算,以及蒙哥马利模乘运算的过程中可以看出,本发明使用了汇编语言实现点加、倍点和点乘运算,以及蒙哥马利模乘运算,使用SIMD指令和BMI2指令进一步加快运算速度。
示例:
测试环境为:操作系统:Ubuntu18.04;CPU:i7-6700 3.41GHz(单线程)
通过本发明优化后的运算效率如表1所示。
表1:
从表1中可以看出,按照本发明的优化方法实现的sm2算法比国密SSL的算法实现效率更高,可以明显提高运算效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种sm2性能优化实现方法,其特征在于,所述方法为针对sm2的椭圆曲线上的点运算进行优化,包括:
将椭圆曲线点的标准坐标转化到仿射坐标系;
在仿射坐标系下,使用预计算优化椭圆曲线点加、倍点和点乘运算过程;
所述仿射坐标系为雅各比坐标系、标准仿射坐标系或Chudnovsky仿射坐标系;当仿射坐标系为雅各比坐标系,且椭圆曲线点为生成元G时,点乘的运算过程如下:
(1)将把256bit分成37个窗口,每个窗口7bit,计算表:
table[i][j]=27i·(j+1)G i=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的点乘运算结果。
4.根据权利要求1所述的sm2性能优化实现方法,其特征在于,当仿射坐标系为雅各比坐标系,且椭圆曲线点为一般点P时,点乘的运算过程如下:
(1)计算表:
table[j]=(j+1)P j=0,1,…,15
(2)计算一般点P的点乘kP时,先对k使用窗口大小等于5的booth编码,使得每个窗口中的5bit所表示的整数都是绝对值小于等于16的有符号数;然后通过52次查表、52次点加和260次倍点计算点乘;本步骤过程如下:
其中,ki是k的第i个窗口;point_mul_P()为椭圆曲线点为一般点P的点乘运算;booth_encode5()为窗口大小等于5的booth编码,R在point_mul_P()中为椭圆曲线点为一般点P的点乘运算结果。
5.根据权利要求1-4任一项所述的sm2性能优化实现方法,其特征在于,对于椭圆曲线点加、倍点和点乘运算中的模乘,使用蒙哥马利模乘运算。
6.根据权利要求5所述的sm2性能优化实现方法,其特征在于,对于椭圆曲线点加、倍点和点乘运算中的模乘,使用蒙哥马利模乘运算的方法为:
(1)对于椭圆曲线点加、倍点和点乘运算中的模乘表示为:
a×b mod p
其中,a、b为大整数,p为模数;
(2)将椭圆曲线点加、倍点和点乘运算中的模乘在蒙哥马利域中转化为:
MM(A,B)=A×B×2-Lmod p
其中,l为中间参数,A=a*L mod p,B=b*L mod p;
(3)当模数p满足-1/p mod 2s=1,s=32或64,则蒙哥马利模乘运算过程如下:
其中,K为运算次数,r为椭圆曲线点加、倍点和点乘运算中的模乘在蒙哥马利域中的表示;montgomery()为蒙哥马利模乘运算。
7.根据权利要求6所述的sm2性能优化实现方法,其特征在于,L=256。
8.根据权利要求6所述的sm2性能优化实现方法,其特征在于,在64位操作系统中,s=64,K=4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010992268.3A CN112134704B (zh) | 2020-09-21 | 2020-09-21 | 一种sm2性能优化实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010992268.3A CN112134704B (zh) | 2020-09-21 | 2020-09-21 | 一种sm2性能优化实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112134704A CN112134704A (zh) | 2020-12-25 |
CN112134704B true CN112134704B (zh) | 2022-04-01 |
Family
ID=73841685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010992268.3A Active CN112134704B (zh) | 2020-09-21 | 2020-09-21 | 一种sm2性能优化实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112134704B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114531241B (zh) * | 2022-04-22 | 2022-08-30 | 北京智芯微电子科技有限公司 | 数据加密方法、装置、使用该方法的电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503730A (zh) * | 2014-10-24 | 2015-04-08 | 山东华芯半导体有限公司 | 一种基于指令的大数点加、倍点运算电路及实现方法 |
CN106549769A (zh) * | 2016-12-08 | 2017-03-29 | 广东工业大学 | 一种素域Fp下SM2椭圆曲线签名系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104482A (zh) * | 2009-12-21 | 2011-06-22 | 上海华虹集成电路有限责任公司 | 椭圆曲线密码体制中无穷远点在仿射坐标系下的表示方法 |
CN102761413B (zh) * | 2011-04-27 | 2015-06-10 | 航天信息股份有限公司 | p元域SM2椭圆曲线公钥密码算法的实现系统 |
US9967098B2 (en) * | 2015-12-23 | 2018-05-08 | Intel Corporation | Elliptic curve hardware integrated circuit |
WO2018145191A1 (en) * | 2017-02-13 | 2018-08-16 | Infosec Global Inc. | System and method for optimized elliptic curve cryptography operations |
CN108964914B (zh) * | 2017-05-17 | 2020-08-25 | 中国科学技术大学 | 抗侧信道攻击的sm2点乘架构 |
CN107547201B (zh) * | 2017-09-28 | 2020-06-16 | 哈尔滨工程大学 | 一种提高椭圆曲线密码体制中的标量乘计算效率的方法 |
CN108667623B (zh) * | 2018-05-28 | 2021-10-19 | 广东工业大学 | 一种sm2椭圆曲线签名验证算法 |
-
2020
- 2020-09-21 CN CN202010992268.3A patent/CN112134704B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503730A (zh) * | 2014-10-24 | 2015-04-08 | 山东华芯半导体有限公司 | 一种基于指令的大数点加、倍点运算电路及实现方法 |
CN106549769A (zh) * | 2016-12-08 | 2017-03-29 | 广东工业大学 | 一种素域Fp下SM2椭圆曲线签名系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112134704A (zh) | 2020-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2935823C (en) | Accelerated verification of digital signatures and public keys | |
US8411855B1 (en) | Size optimization for large elliptic curve cryptography scalar multiplication acceleration tables | |
CN109145616B (zh) | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 | |
WO2015164996A1 (zh) | 椭圆域曲线运算方法和椭圆域曲线运算器 | |
CN113221193B (zh) | 基于gpu的sm2数字签名与验签快速实现方法及系统 | |
CN113628094A (zh) | 一种基于gpu的高吞吐量sm2数字签名计算系统及方法 | |
EP2350811A1 (en) | Method and apparatus for modulus reduction | |
CN113010142A (zh) | 一种新型脉动结点式标量点乘的双域实现系统及方法 | |
CN112134704B (zh) | 一种sm2性能优化实现方法 | |
CN112350827B (zh) | 一种基于Koblitz曲线的加速标量乘计算的椭圆曲线加解密方法和系统 | |
Long | Binary quadratic forms | |
CN116527274B (zh) | 基于多标量乘快速计算的椭圆曲线验签方法及系统 | |
CN113467754A (zh) | 一种基于分解约简的格加密模乘运算方法及架构 | |
CN111897578A (zh) | 一种特征为2的椭圆曲线上标量乘的并行处理方法及装置 | |
JP2009042787A (ja) | 楕円曲線上の有限体演算の加速方法 | |
JP4423900B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム | |
US20060198516A1 (en) | Systems and methods for generating random addition chains | |
CN114338042A (zh) | 一种国密SM2算法曲线中对于阶n的高速等时模逆算法 | |
Seo et al. | MoTE-ECC based encryption on MSP430 | |
JP4502817B2 (ja) | 楕円曲線スカラー倍計算方法および装置 | |
CN114143005B (zh) | 一种Tate双线性对及其变体的加速方法 | |
CN115374458A (zh) | 基于同态加密的自适应大整数模乘运算方法和装置 | |
KR101811286B1 (ko) | 전력분석공격을 방지할 수 있는 타원 곡선 암호화 장치 및 그 방법 | |
CN117714072A (zh) | 一种基于加速Montgomery模乘运算的SM2签名方法 | |
JP2005316038A (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |