CN114527956B - 抗spa攻击的sm2算法中非定点标量乘法的计算方法 - Google Patents
抗spa攻击的sm2算法中非定点标量乘法的计算方法 Download PDFInfo
- Publication number
- CN114527956B CN114527956B CN202210089581.5A CN202210089581A CN114527956B CN 114527956 B CN114527956 B CN 114527956B CN 202210089581 A CN202210089581 A CN 202210089581A CN 114527956 B CN114527956 B CN 114527956B
- Authority
- CN
- China
- Prior art keywords
- scalar
- calculation
- algorithm
- point
- multiplication
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 91
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 90
- 238000000034 method Methods 0.000 claims abstract description 61
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 abstract description 26
- 238000005457 optimization Methods 0.000 abstract description 8
- 230000006872 improvement Effects 0.000 abstract description 4
- 238000007792 addition Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000009467 reduction Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种抗SPA攻击的SM2算法中非定点标量乘法的计算方法、装置、电子设备及存储介质,其中,方法包括:展开待运算的乘法中的标量得到标量展开式;根据预先计算的多个小倍数点和所述标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的循环计算。通过提出新的求模逆算法和复用中间数据改进算法流程,结合实现过程中对分支选择的进一步优化大幅提高抗SPA攻击的实现方案的运行速度。由此,解决了抗SPA攻击的SM2算法非定点标量乘法实现效率不高等问题。
Description
技术领域
本申请涉及信息安全技术领域,特别涉及一种抗SPA攻击的SM2算法中非定点标量乘法的计算方法、装置、电子设备及存储介质。
背景技术
SM2是我国自主设计的基于椭圆曲线的商用公钥密码算法标准,已在金融行业等关键领域得到广泛使用,其采用由国家密码局推荐的256位椭圆曲线参数。SM2中椭圆曲线上的非定点标量乘法是计算一个256位的标量k与一个椭圆曲线上的非固定点P的乘积[k]P。作为耗时最长的运算,非定点标量乘法的速度直接决定了SM2算法的效率。非定点标量乘法的计算使用椭圆曲线上点的倍点和点加组合完成,而这些基础的点运算由素域上的加法、减法、乘法和求逆组合而成。
简单功耗分析(Simple Power Analysis,SPA)攻击是一种分析算法运行时的能量曲线以破解密钥的侧信道攻击方法。减少分支跳转语句和固定算法流程是在密码算法实现时常用的抗SPA攻击方法。为了密码算法安全性,SM2的非定点标量乘法实现需要充分考虑抗SPA攻击的要求。
对SM2算法非定点标量乘法进行抗SPA攻击的速度优化实现可以直接提高SM2算法的性能,利于国产SM2密码算法的推广,但是相关技术中的抗SPA攻击的SM2实现方案性能相对较低,亟待解决。
发明内容
本申请提供一种抗SPA攻击的SM2算法中非定点标量乘法的计算方法、装置、电子设备及存储介质,以解决相关技术中抗SPA攻击的SM2算法非定点标量乘法实现效率不高等问题。
本申请第一方面实施例提供一种抗SPA攻击的SM2算法中非定点标量乘法的计算,包括以下步骤:将待运算的标量乘法计算公式中的标量进行展开,得到所述标量的展开式;根据预先计算的多个小倍数点和所述标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的循环计算。
可选地,在本申请的一个实施例中,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的计算之前,还包括:根据多个椭圆曲线上的非固定点计算所述标量的展开式的小倍数点。
可选地,在本申请的一个实施例中,将待运算的标量乘法计算公式中的标量进行展开,包括:将所述标量按照预设窗口大小进行展开。
可选地,在本申请的一个实施例中,将待运算的标量乘法计算公式中的标量进行展开,包括:根据窗口大小w对标量k使用次连续的移w位操作完成展开,获得展开式
可选地,在本申请的一个实施例中,计算多个椭圆曲线上的非固定点的小倍数点,包括:采用中间数据复用方法使用多次点加法预计算所述非固定点P,[2]P直到[2wi-1]P的坐标,得到多个所述小倍数点。
可选地,在本申请的一个实施例中,根据预先计算的多个小倍数点和所述标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的计算,包括:设置索引i,从开始往下遍历到0,结果记为R,初始化为Ο,其中,w为展开窗口大小;每次循环均计算出[2w]R和[2w]R+[ki]R两个点的坐标,再根据ki的取值情况选择一个点进入下一次循环,其中,k为所述标量。
可选地,在本申请的一个实施例中,进行待运算的标量乘法计算公式的循环计算,包括:在所述循环计算中,调用素域的加法、减法、乘法和求逆运算,其中,所述素域乘法使用蒙哥马利模乘算法,所述素域求逆使用蒙哥马利模逆算法。
本申请第二方面实施例提供一种抗SPA攻击的SM2算法中非定点标量乘法的计算装置,包括:展开模块,用于将待运算的标量乘法计算公式中的标量进行展开,得到所述标量的展开式;计算模块,用于根据预先计算的多个小倍数点和所述标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的循环计算。
本申请第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以执行如上述实施例所述的抗SPA攻击的SM2算法中非定点标量乘法的计算方法。
本申请第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以执行如上述实施例所述的抗SPA攻击的SM2算法中非定点标量乘法的计算方法。
由此,本申请至少具有如下有益效果:
通过将待运算的标量乘法计算公式中的标量进行展开,得到标量的展开式;根据预先计算的多个小倍数点和标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的循环计算。通过对标量乘法使用的基础算法进行深入优化,大幅提高抗SPA攻击的实现方案的运行速度。由此,解决了抗SPA攻击的SM2算法非定点标量乘法实现效率不高等问题。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本申请实施例提供的一种抗SPA攻击的SM2算法中非定点标量乘法的计算方法的流程图;
图2为根据本申请一个实施例提供的快速约减操作原理图;
图3为根据本申请一个实施例提供的原始的蒙哥马利模逆算法示意图;
图4为根据本申请一个实施例提供的优化后蒙哥马利模逆算法示意图;
图5为根据本申请一个实施例提供的抗SPA攻击的SM2算法中非定点标量乘法的计算方法优化实现总体框架图;
图6为根据本申请实施例的抗SPA攻击的SM2算法中非定点标量乘法的计算装置的示例图;
图7为申请实施例提供的电子设备的结构示意图。
附图标记说明:展开模块-100、计算模块-200、存储器-701、处理器-702、通信接口-703。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的一种抗SPA攻击的SM2算法中非定点标量乘法的计算方法、装置、电子设备及存储介质。针对上述背景技术中提到的抗SPA攻击的SM2算法非定点标量乘法实现效率不高的问题,本申请提供了一种抗SPA攻击的SM2算法中非定点标量乘法的计算方法,在该方法中,主要通过标量乘法[k]P中的k按窗口大小w展开为2w进制;预计算若干P的小整数倍点保存备用以及基于展开式使用倍点法和点加法完成[k]P运算三部分,结合分支简化、中间数据复用和寄存器使用策略优化这三种技术,对标量乘法的基础算法和底层实现进行深入优化。同时融合PBSM算法和窗口法思想,基于分支固定策略保证实现的抗SPA攻击性质。最终使得抗SPA攻击的SM2算法非定点标量乘法运算速度有大幅提升。由此,解决了抗SPA攻击的SM2算法非定点标量乘法实现效率不高等问题。
具体而言,图1为本申请实施例所提供的一种抗SPA攻击的SM2算法中非定点标量乘法的计算方法的流程示意图。
如图1所示,该抗SPA攻击的SM2算法中非定点标量乘法的计算方法包括以下步骤:
在步骤S101中,将待运算的标量乘法计算公式中的标量进行展开,得到标量的展开式。
可选地,在本申请的一个实施例中,将待运算的标量乘法计算公式中的标量进行展开,包括:将标量k按照预设窗口大小w进行展开。
需要注意的是,标量展开过程具体为将待运算的标量乘法[k]P中标量k按给定窗口大小w使用次连续的移w位操作完成展开,获得展开式/>同时,窗口大小w可根据实际情况进行设置,该展开式将用于指导主循环过程。主要在中间数据复用过程中对其进行多次调用,上述主循环及中间数据复用的具体执行过程将在下述进行详细介绍。
在步骤S102中,根据预先计算的多个小倍数点和标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的循环计算。
可选地,在本申请的一个实施例中,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的计算之前,还包括:根据多个椭圆曲线上的非固定点计算标量的展开式的小倍数点。
具体地,根据点P计算展开式中可能出现的全部若干个小倍数点的过程即为点的预计算过程。在该过程中计算多个椭圆曲线上的非固定点的小倍数点,包括:采用中间数据复用方法使用多次点加法预计算非固定点P,[2]P直到[2wi-1]P的坐标,得到多个小倍数点。
可选地,在本申请的一个实施例中,根据预先计算的多个小倍数点和标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的计算,包括:设置主循环的索引i,从开始往下遍历到0,结果记为R,初始化为Ο,其中,w为展开窗口大小;每次循环均计算出[2w]R和[2w]R+[ki]R两个点的坐标,再根据ki的取值情况选择一个点进入下一次循环,上述过程即为标量乘法主循环过程,其中,k为标量。
需要说明的是,标量乘法主循环过程结合PBSM算法和窗口法的思想,根据k的展开式和点P的预计算表使用倍点和点加两种运算完成[k]P的计算,从而保证了每次固定使用w次倍点和一次点加处理k展开式中的一项,进而保证了抗SPA攻击的性质。
可选地,在本申请的一个实施例中,进行待运算的标量乘法计算公式的循环计算,包括:在循环计算中,调用素域的加法、减法、乘法和求逆运算,其中,素域乘法使用蒙哥马利模乘算法,素域求逆使用蒙哥马利模逆算法。
需要说明的是,点的预计算过程和标量乘法主循环过程都会频繁调用素域上的加法、减法、乘法和求逆这四个基础运算模块,素数域运算是本申请实施例计算过程中基础运算部分,包括加法、减法、乘法和求逆。
其中,p是SM2算法标准选用的素数,本申请根据SM2的椭圆曲线参数对底层素数域进行实现,采用素数为256位素数p=2256-2224-296+264-1。因此选择字长为64的大整数表示。该素域中元素a被表示为其中i为遍历素数域元素a每个系数的索引,ai表示组成a的第i个64位系数。素数域运算中的加法和减法比较简单,只要对各个系数做带进位或者借位的加和减,最后进行减p或加p进行正规化即可。
举例而言,素域上加法模块先做两整数a和b的加法获得c=a+b,再计算c′=c-p。最后根据减法借位情况使用条件选择指令从c和c′中选取得到最终结果。上述的素域上减法模块先做两整数a和b的减法获得c=a-b,再计算c′=c+p。最后根据加法进位情况使用条件选择指令从c和c′中选取得到最终结果。
素域上乘法模块使用改进后的蒙哥马利模乘算法。在计算时,原始的蒙哥马利模乘使用乘法完成模约减操作,其利用SM2选择的素数p的良好性质,即只使用移位和加法而非乘法完成模约减步骤,在具体实现时使用mulx、adcx和adox进行指令并行化。本申请的实施例使用优化的约减方式提高模乘效率,快速约减原理如图2所示。由于p=2256-296-2224+264-1,将最末64位的数字t0在模p意义上等价于2256t0+264t0-2224t0-296t0。即相当于将t0分别进行四次移位后,与较高系数进行加减。由此可快速地将t0归0,将复杂的使用乘法完成模约减的过程转化为简单的几次加减,大幅减少了时间消耗。
素数域上的求逆模块使用改进后的蒙哥马利模逆算法。原始的蒙哥马利模逆算法如图3所示,其中主循环过程每次只最多处理中间变量u或v的一个2因子。但利用tzcnt指令可以实现一次处理全部的2因子。此外模逆算法每次主循环退出后可以确定u和v的奇偶性情况,本申请根据这一点进一步简化循环过程,利用分支简化思想改进模逆算法,由此设计了优化的蒙哥马利模逆算法,如图4所示。该算法使用tzcnt指令一次性处理多个比特位,使用奇偶性预判定的思路固定循环中分支走向,大幅减少算法循环次数。
需要注意的是,基础的点运算通过调用上述底层素数域上的运算来实现,以用于执行点的标量乘法运算。本申请的实施例使用Jacobian坐标与仿射坐标的混合点加算法、Jacobian坐标的二倍点算法和Z坐标相等的Jacobian坐标点加算法。
举例而言,记(Xi,Yi,Zi)为一个椭圆曲线点的Jacobian坐标,Xi,Yi,Zi分别为点的三个坐标分量。上述三个算法的运算式如下:
1、Jacobian坐标与仿射坐标的混合点加算法计算(X3,Y3,Z3)=(X1,Y1,Z1)+(X2,Y2,1)的算式为:
2、Z坐标相等时,Jacobian坐标点加算法计算(X3,Y3,Z3)=[2](X1,Y1,Z)的算式为:
3、Jacobian坐标的二倍点算法计算(X3,Y3,Z3)=(X1,Y1,Z1)+(X1,Y1,Z1)的算式为:
非定点的标量乘法运算过程建立在底层素数域运算以及基础点运算的实现基础之上,即根据预先计算的多个小倍数点和标量的展开式,利用固定数目的倍点运算和点加运算实现待运算的标量乘法计算公式的循环计算。本申请通过采用上述非定点标量乘法的计算方法,在底层素域运算模块中,乘法较改进前加速20%,模逆较改进前加速30%。加法和减法由于使用条件选择代替分支跳转具备抗SPA攻击的性质。由于算法的改进和具体实现时对细节的深入优化,本申请的实施例执行一次SM2算法非定点标量乘法用时恒定,具有抗SPA攻击性质,且每次计算消耗时钟周期数较已有最好同类实现减少约11.5%。
下面通过一个具体实施例对本申请的一种抗SPA攻击的SM2算法中非定点标量乘法的计算方法进行详细说明。
图5为抗SPA攻击的SM2算法中非定点标量乘法的计算方法优化实现总体框架图,如图5所示,计算一个非定点的标量乘法R=[k]P分为三步:首先,将标量k按给定窗口大小进行展开;其次,预计算点P的若干个小倍数点;最后,进行主循环过程根据k的展开式和点P的预计算表使用倍点和点加两种运算完成[k]P的计算。下面以窗口大小w设为5为例进行分析。
1)标量k的展开
需要将k按窗口大小为5进行展开,得到形式的展开式。展开步骤如下:
Step1.1令i=0;
Step1.2重复Step 3到Step 5直到i>51;
Step1.3 ki=k mod 32,k=k>>5;
Step1.4若ki>16,则ki=ki-32,k=k+1;
Step1.5 i=i+1;
Step1.6返回k展开式的系数序列(k51,k50,…,k1,k0)。
2)点P的预计算
需要计算点P的若干小倍数点坐标以便主循环过程使用。步骤如下:
Step2.1使用一次倍点和连续14次点加计算出[2]P,[3]P直到[16]P的坐标;
Step2.2将[1]P,[2]P到[15]P的坐标Y分量取反,分别得到[-1]P,[-2]P到[-15]P的坐标;
Step2.3随机取一个点坐标记为[0]P;
Step2.4返回预计算点坐标序列([-15]P,[-14]P,…,[-1]P,[0]P,[1]P,…,[15]P,[16]P)。
3)主循环过程
主循环需要根据标量展开式组合预计算得到的各点计算出R=[k]P。下面给出主循环步骤,其中,R0和R1为中间变量;[ki>0]为一逻辑判定式,当ki>0时取值为1,否则取0。
Step 3.1令i=51,R0=Ο,R1=Ο;
Step 3.2重复Step 3到Step 5直到i=-1;
Step 3.3
Step 3.4i=i-1;
Step 3.5返回
需要注意的是,上述计算过程的点加和倍点使用次数和使用顺序均固定,与k和P的取值均无关,这保证了该实现的抗SPA攻击性质。
根据本申请实例提出的一种抗SPA攻击的SM2算法中非定点标量乘法的计算方法,主要通过进行底层素数域运算,使用素数域运算实现基础点运算,继而利用固定数目的点加和倍点运算结合PBSM算法和窗口法思想三个部分,实现抗SPA攻击的非定点标量乘法。本申请的实施例计算一次标量乘法需约18.5万个时钟周期,而现有的SM2算法非定点标量乘法抗SPA攻击实现的最快速度是每次运算约21.9万个时钟周期,提速约11.5%。可见,由于本申请对SM2算法的实现过程的深入优化,使得这种抗SPA攻击的实现方案运行速度大幅提高。此外,本申请实现的加速主要来源于对底层素数域运算算法的深入优化实现,这可以应用到其它同类椭圆曲线运算的优化实现上。
其次参照附图描述根据本申请实施例提出的一种抗SPA攻击的SM2算法中非定点标量乘法的计算装置。
图6是本申请实施例的抗SPA攻击的SM2算法中非定点标量乘法的计算装置的方框示意图。
如图6所示,该抗SPA攻击的SM2算法中非定点标量乘法的计算装置10包括:展开模块100和计算模块200。
其中,展开模块100用于将待运算的标量乘法计算公式中的标量进行展开,得到标量的展开式。计算模块200用于根据预先计算的多个小倍数点和标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的循环计算。
可选地,在本申请的实施例中,抗SPA攻击的SM2算法中非定点标量乘法的计算装置10还包括:预计算模块,用于利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的计算之前,根据多个椭圆曲线上的非固定点计算标量的展开式的小倍数点。
可选地,在本申请的实施例中,展开模块100具体用于根据窗口大小w对标量k使用次连续的移w位操作完成展开,获得展开式/>
可选地,在本申请的实施例中,预计算模块具体用于采用中间数据复用方法使用多次点加法预计算非固定点P,[2]P直到[2wi-1]P的坐标,得到多个小倍数点。
可选地,在本申请的实施例中,计算模块200还包括:遍历单元,用于设置索引i,从开始往下遍历到0,结果记为R,初始化为Ο,其中,w为展开窗口大小;循环单元,用于每次循环均计算出[2w]R和[2w]R+[ki]R两个点的坐标,再根据ki的取值情况选择一个点进入下一次循环,其中,k为标量。
可选地,在本申请的实施例中,计算模块200还包括:调用单元,用于在循环计算中,调用素域的加法、减法、乘法和求逆运算,其中,素域乘法使用蒙哥马利模乘算法,素域求逆使用蒙哥马利模逆算法。
需要说明的是,前述对抗SPA攻击的SM2算法中非定点标量乘法的计算方法实施例的解释说明也适用于该实施例的抗SPA攻击的SM2算法中非定点标量乘法的计算装置,此处不再赘述。
根据本申请实例提出的一种抗SPA攻击的SM2算法中非定点标量乘法的计算装置,通过标量乘法[k]P中的k按窗口大小w展开为2w进制;预计算若干P的小整数倍点保存备用以及基于展开式使用倍点法和点加法完成[k]P运算三部分,结合分支简化、中间数据复用和寄存器使用策略优化这三种技术,对标量乘法的基础算法和底层实现进行深入优化。同时融合PBSM算法和窗口法思想,基于分支固定策略保证实现的抗SPA攻击性质。最终使得抗SPA攻击的SM2算法非定点标量乘法运算速度有大幅提升,有利于国产SM2密码算法的推广,具有重要意义。
图7为本申请实施例提供的电子设备的结构示意图。该电子设备可以包括:
存储器701、处理器702及存储在存储器701上并可在处理器702上运行的计算机程序。处理器702执行程序时实现上述实施例中提供的抗SPA攻击的SM2算法中非定点标量乘法的计算方法。
进一步地,电子设备还包括:
通信接口703,用于存储器701和处理器702之间的通信。
存储器701,用于存放可在处理器702上运行的计算机程序。
存储器701可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器701、处理器702和通信接口703独立实现,则通信接口703、存储器701和处理器702可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器701、处理器702及通信接口703,集成在一块芯片上实现,则存储器701、处理器702及通信接口703可以通过内部接口完成相互间的通信。
处理器702可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上的抗SPA攻击的SM2算法中非定点标量乘法的计算方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
Claims (4)
1.一种抗SPA攻击的SM2算法中非定点标量乘法的计算方法,其特征在于,包括以下步骤:
将待运算的标量乘法计算公式中的标量进行展开,得到所述标量的展开式;
根据预先计算的多个小倍数点和所述标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的循环计算;
所述利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的计算之前,还包括:根据多个椭圆曲线上的非固定点计算所述标量的展开式的小倍数点;
所述将待运算的标量乘法计算公式中的标量进行展开,包括:将所述标量按照预设窗口大小进行展开;
所述将待运算的标量乘法计算公式中的标量进行展开,包括:根据窗口大小w对标量k使用次连续的移w位操作完成展开,获得展开式/>
所述计算多个椭圆曲线上的非固定点的小倍数点,包括:采用中间数据复用方法使用多次点加法预计算所述非固定点P,[2]P直到[2wi-1]P的坐标,得到多个所述小倍数点;
所述根据预先计算的多个小倍数点和所述标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的计算,包括:
设置索引i,从开始往下遍历到0,结果记为P,初始化为Ο,其中,w为展开窗口大小;
每次循环均计算出[2w]R和[2w]R+[ki]R两个点的坐标,再根据ki的取值情况选择一个点进入下一次循环,其中,k为所述标量;
所述进行待运算的标量乘法计算公式的循环计算,包括:在所述循环计算中,调用素域的加法、减法、乘法和求逆运算,其中,所述素域乘法使用蒙哥马利模乘算法,所述素域求逆使用蒙哥马利模逆算法。
2.一种抗SPA攻击的SM2算法中非定点标量乘法的计算装置,用于执行权利要求1所述的抗SPA攻击的SM2算法中非定点标量乘法的计算方法,其特征在于,包括:
展开模块,用于将待运算的标量乘法计算公式中的标量进行展开,得到所述标量的展开式;
计算模块,用于根据预先计算的多个小倍数点和所述标量的展开式,利用固定数目的倍点运算和点加运算进行待运算的标量乘法计算公式的循环计算。
3.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1所述的抗SPA攻击的SM2算法中非定点标量乘法的计算方法。
4.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1所述的抗SPA攻击的SM2算法中非定点标量乘法的计算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210089581.5A CN114527956B (zh) | 2022-01-25 | 2022-01-25 | 抗spa攻击的sm2算法中非定点标量乘法的计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210089581.5A CN114527956B (zh) | 2022-01-25 | 2022-01-25 | 抗spa攻击的sm2算法中非定点标量乘法的计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114527956A CN114527956A (zh) | 2022-05-24 |
CN114527956B true CN114527956B (zh) | 2024-05-10 |
Family
ID=81622056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210089581.5A Active CN114527956B (zh) | 2022-01-25 | 2022-01-25 | 抗spa攻击的sm2算法中非定点标量乘法的计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114527956B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117896067A (zh) * | 2024-03-13 | 2024-04-16 | 杭州金智塔科技有限公司 | 适用于国密sm2算法的并行模约减方法及装置 |
CN117972761A (zh) * | 2024-04-01 | 2024-05-03 | 杭州金智塔科技有限公司 | 基于国密sm2算法的数据处理方法以及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2010101116A4 (en) * | 2010-10-13 | 2010-11-11 | Shah, P G Mr | An apparatus and method of SPA resistant elliptical scalar multiplication on the resource constrained wireless sensor network platform. |
CN109145616A (zh) * | 2018-08-01 | 2019-01-04 | 上海交通大学 | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 |
CN109582284A (zh) * | 2018-11-16 | 2019-04-05 | 大唐微电子技术有限公司 | 一种芯片中的标量乘实现方法及装置、计算机可读存储介质 |
CN110611559A (zh) * | 2019-08-21 | 2019-12-24 | 广东工业大学 | 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 |
CN111897578A (zh) * | 2020-07-31 | 2020-11-06 | 中国科学院信息工程研究所 | 一种特征为2的椭圆曲线上标量乘的并行处理方法及装置 |
CN111966324A (zh) * | 2020-08-19 | 2020-11-20 | 哈尔滨理工大学 | 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质 |
CN112350827A (zh) * | 2020-09-29 | 2021-02-09 | 中国科学院信息工程研究所 | 一种基于Koblitz曲线的加速标量乘计算的椭圆曲线加解密方法和系统 |
CN113628094A (zh) * | 2021-07-29 | 2021-11-09 | 西安电子科技大学 | 一种基于gpu的高吞吐量sm2数字签名计算系统及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4284320B2 (ja) * | 2003-08-06 | 2009-06-24 | 富士通株式会社 | 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム |
EP1946205B1 (en) * | 2005-10-18 | 2010-04-14 | Telecom Italia S.p.A. | A method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems |
US7991154B2 (en) * | 2008-05-14 | 2011-08-02 | Univeristy of Castilla-La Mancha | Exponentiation method using multibase number representation |
FR3017476B1 (fr) * | 2014-02-12 | 2017-06-09 | Secure-Ic Sas | Procede de contremesure pour un composant electronique mettant en œuvre un algorithme de cryptographie sur une courbe elliptique |
-
2022
- 2022-01-25 CN CN202210089581.5A patent/CN114527956B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2010101116A4 (en) * | 2010-10-13 | 2010-11-11 | Shah, P G Mr | An apparatus and method of SPA resistant elliptical scalar multiplication on the resource constrained wireless sensor network platform. |
CN109145616A (zh) * | 2018-08-01 | 2019-01-04 | 上海交通大学 | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 |
CN109582284A (zh) * | 2018-11-16 | 2019-04-05 | 大唐微电子技术有限公司 | 一种芯片中的标量乘实现方法及装置、计算机可读存储介质 |
CN110611559A (zh) * | 2019-08-21 | 2019-12-24 | 广东工业大学 | 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 |
CN111897578A (zh) * | 2020-07-31 | 2020-11-06 | 中国科学院信息工程研究所 | 一种特征为2的椭圆曲线上标量乘的并行处理方法及装置 |
CN111966324A (zh) * | 2020-08-19 | 2020-11-20 | 哈尔滨理工大学 | 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质 |
CN112350827A (zh) * | 2020-09-29 | 2021-02-09 | 中国科学院信息工程研究所 | 一种基于Koblitz曲线的加速标量乘计算的椭圆曲线加解密方法和系统 |
CN113628094A (zh) * | 2021-07-29 | 2021-11-09 | 西安电子科技大学 | 一种基于gpu的高吞吐量sm2数字签名计算系统及方法 |
Non-Patent Citations (2)
Title |
---|
一种安全高效的椭圆曲线密码抗功耗攻击算法;张莉华等;测控技术;20160818;第35卷(第08期);118-121 * |
抗能量分析攻击的阶乘展开式标量乘算法;郭彬等;科技通报;20160630;第32卷(第06期);149-153 * |
Also Published As
Publication number | Publication date |
---|---|
CN114527956A (zh) | 2022-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114527956B (zh) | 抗spa攻击的sm2算法中非定点标量乘法的计算方法 | |
Öztürk et al. | Low-power elliptic curve cryptography using scaled modular arithmetic | |
Lutz et al. | High performance FPGA based elliptic curve cryptographic co-processor | |
CN110611559B (zh) | 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 | |
JP5116770B2 (ja) | フォールディングを用いるモジュール削減 | |
WO2015164996A1 (zh) | 椭圆域曲线运算方法和椭圆域曲线运算器 | |
US20030081771A1 (en) | Elliptic curve converting device, elliptic curve converting method, elliptic curve utilization device and elliptic curve generating device | |
US6567832B1 (en) | Device, method, and storage medium for exponentiation and elliptic curve exponentiation | |
WO2010048719A1 (en) | Method and apparatus for modulus reduction | |
CN113783702A (zh) | 一种椭圆曲线数字签名与验签的硬件实现方法和系统 | |
JP2002229445A (ja) | べき乗剰余演算器 | |
CN109933304B (zh) | 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法 | |
CN112650471A (zh) | 用于处理掩蔽数据的处理器和方法 | |
CN115801244A (zh) | 用于资源受限处理器的后量子密码算法实现方法及系统 | |
CN101630244B (zh) | 一种流水线型椭圆曲线双标量乘法系统及方法 | |
CN101971138B (zh) | 用于计算椭圆曲线上的点的倍数的设备和方法 | |
KR20130128695A (ko) | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 | |
CN105574269B (zh) | 一种专用指令处理器的设计验证方法 | |
JP2000353077A (ja) | 多倍長演算装置 | |
Will et al. | Computing mod without mod | |
Gaubatz | Versatile Montgomery multiplier architectures | |
Mishra | Pipelined computation of scalar multiplication in elliptic curve cryptosystems | |
JP2004125891A (ja) | べき乗剰余演算器 | |
CN114594925A (zh) | 适用于sm2加密运算的高效模乘电路及其运算方法 | |
KR100297110B1 (ko) | 모듈러곱셈기 |
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 |