CN110611559B - 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 - Google Patents
基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 Download PDFInfo
- Publication number
- CN110611559B CN110611559B CN201910773954.9A CN201910773954A CN110611559B CN 110611559 B CN110611559 B CN 110611559B CN 201910773954 A CN201910773954 A CN 201910773954A CN 110611559 B CN110611559 B CN 110611559B
- Authority
- CN
- China
- Prior art keywords
- module
- point
- naf
- point multiplication
- result
- 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
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/002—Countermeasures against attacks on cryptographic mechanisms
-
- 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/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- 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)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于算法层的抗侧信道攻击SM2点乘架构及其运算方法,通过随机化NAF窗口值从而随机化每次进行点乘运算的标量值,使得每次计算参与的基点坐标不同来抵抗差分功耗分析攻击;通过引入随机移位寄存器,在进行点加与倍点迭代过程中加入冗余运算,从而消除点加倍点运算次数与密钥的关系进而抵御简单功耗分析SPA、差分功耗分析DPA、高阶差分功耗攻击HO_DPA、模板攻击,并在点加与倍点引入伪操作运算从而达到平衡功耗的目的。本发明解决了现有的SM2点乘算法无法对多种侧信道攻击有效防御的问题,具有更高的安全性,并兼顾椭圆曲线密码系统下其他的密码运算,提高了资源利用率。
Description
技术领域
本发明涉及密码学技术领域,尤其涉及基于算法层的抗侧信道攻击SM2点乘架构及其运算方法。
背景技术
国家密码管理局于2010年12月17日发布了SM2椭圆曲线公钥密码算法,其在数学理论上是十分安全的,但是由于在实现过程中设备在进行密码运算过程中会泄漏密钥信息等,所以密码系统容易受到侧信道密码分析攻击。侧信道攻击SM2的目标是利用在点乘运算过程中泄漏的侧信道信息来推测私钥和随机数。
目前传统的点乘算优于在点乘运算过程中需要根据密钥执行点加、倍点运算,其存在明显条件跳转,容易受到简单功耗分析SPA已获取密钥,如使用一般二进制方法的点乘算法容易收到SPA的攻击。为了抵抗SPA的攻击,现有研究中提出一种每轮循环都进行点加的运算,无论密钥的当前位是“0”或“1”,均要进行点加运算,每一轮进行相同的操作就避免了不同的能量消耗,该算法可以抵抗SPA攻击,但是由于点加结果存在不存储的情况,故该算法会受到DPA的攻击;此外,为了加速点乘,现有研究中还提出了窗口NAF法,通过设计固定窗口以减少点加次数,并抵抗SPA攻击,但由于预计算表格与倍点点加位置确定,无法抵抗DPA与模板攻击TA。其次SM2点乘容易受到故障分析攻击,攻击者可以通过往运行SM2点乘运算处理器注入错误,并获取错误输出,通过对错误输出进行分析从而获取有关密钥信息。
综上所述,目前SM2点乘算法存在包括简单功耗分析SPA、差分功耗分析DPA、模板攻击、错误故障攻击等的多种侧信道攻击。
发明内容
本发明为解决现有的SM2点乘算法无法对多种侧信道攻击有效防御的问题,提供了基于算法层的抗侧信道攻击SM2点乘架构及其运算方法。
为实现以上发明目的,而采用的技术手段是:
基于算法层的抗侧信道攻击SM2点乘架构,包括预处理模块、主控制模块、NAF编码及NAF预计算模块、NAF点乘模块、随机寄存器模块、坐标变换模块、结果输出模块、运算器及存储模块;
所述主控制模块用于控制所述预处理模块、NAF编码及NAF预计算模块、随机寄存器模块、坐标变换模块、运算器及存储模块之间的数据传输以及运算状态,并控制结果输出模块输出最终结果;
所述预处理模块用于进行随机化处理产生三种随机信息,所述随机信息包括标量值k、NAF窗口值、点乘输入基点P坐标;在本优选方案中,这些随机信息可以利用随机数发生器产生;通过对输入点P坐标随机化,标量k的随机化使得每次计算参与的坐标不同来抵御SPA攻击,随机化NAF窗口法使得标量值的NAF编码方式不固定,同样预计算的点的个数也不固定,攻击者无法利用多次点乘运算方式获取大量功耗波形从而建立攻击模板,进行模板攻击;
所述NAF编码及NAF预计算模块用于根据所述预处理模块产生的随机化NAF窗口值对标量值k进行NAF编码,并根据所述随机化NAF窗口值大小预计算随机化基点坐标值Pi=iP,将编码及预计算结果存放至所述运算器及存储模块;
所述随机寄存器模块用于产生随机数据,所述随机数据用于进行所述NAF点乘模块中的点加与倍点的伪操作;
所述NAF点乘模块用于获取所述运算器及存储模块的编码及预计算结果以及所述随机寄存器模块的随机数据并进行雅可比坐标系下的点乘运算,所述点乘运算包括点加与倍点的循环运算以及点加与倍点的伪操作;在本优选方案中,由于点乘运算是由点加以及倍点组合构成的运算,两种运算方式不同,所对应的功耗也不同。为了防止SPA、DPA攻击,本优选方案采用将两种运算进行平衡,利用雅克比坐标下倍点、以及雅克比-仿射坐标点加算法进行倍点与点加运算,并在两者运算中添加伪操作使得两者的运算产生的功耗趋于一致。由于点加、倍点的平衡,攻击者将无法准确判断点加倍点的执行位置以及点加运算的执行内容,其次随机移位寄存器所带来的伪操作将使得泄漏的侧信道信息中混合了标量k以及FSR所带来的随机因素,攻击者将无法建立起正确的攻击模板进而恢复标量值,从而该方法可以抵御模板攻击、以及部分的高阶差分功耗分析HO-DPA。
所述坐标变换模块用于对所述NAF点乘模块的点乘运算结果从雅克比坐标系转换为仿射坐标下;
所述结果输出模块用于接收主控制模块的指令,验证所述坐标变换模块的转换结果是否在SM2椭圆曲线上,并输出验证结果及所述坐标变换模块的转换结果;在本优选方案中,经过点的验证,攻击者将无法通过实现反复将SM2在错误干扰下输出的正确结果与在错误干扰下的输出结果进行相关性分析,从而推导出标量值,实现通过验证防止攻击者对点乘算法进行错误攻击。
所述运算器及存储模块包括用于所述NAF点乘模块进行点加与倍点运算的乘法器和加法器,以及用于存储所述NAF编码及NAF预计算模块得到的编码及预计算结果的存储寄存器。
优选的,所述预处理模块进行随机化处理产生标量值k包括:在标量运算时引入随机数r,计算标量值k=k+rN,其中N为椭圆曲线点的阶。在本优选方案中,考虑实际运算效率,引入的随机数r尽量取较小的随机数。
优选的,所述预处理模块进行随机化处理产生点乘输入基点P坐标包括:引入随机量z对基点P坐标进行雅克比坐标的随机化转换,即将基点P表示为等价的投影坐标点(xz2,yz3,z),其中z为随机数。
优选的,所述预处理模块进行随机化处理产生随机化NAF窗口值包括:通过随机数m定义NAF窗口值的大小。在本优选方案中,由于引进随机NAF窗口值从而使得NAF的编码方式随机化,使得每次进行标量乘运算k的NAF编码各不同,存在一定随机性,攻击者同样需要大量的波形及数据才能进行模板攻击。
优选的,所述NAF编码及NAF预计算模块根据所述预处理模块产生的随机化NAF窗口值对标量值k进行NAF编码包括:
从所述预处理模块获取标量值k以及随机数m,通过随机数m得到NAF窗口值w;
根据NAF窗口值w对标量值k进行NAF编码,初始化i=0;判断k是否为k≥1,若是则进行下一步,若否则输出NAF编码的结果(ki-1,ki-2,...,k1,k0);
判断k是否为奇数,若为奇数,则执行ki=kmod2w以及k=k-ki的运算,否则ki=0;执行k=k/2以及i++更新,并返回上一步。
优选的,所述坐标变换模块包括模乘单元和模逆单元,对所述NAF点乘模块的点乘运算结果从雅克比坐标系转换为仿射坐标下包括:
定义所述NAF点乘模块的点乘运算结果为(X3,Y3,Z3);
模乘单元计算的结果;其中p为定义SM2椭圆曲线的素数域值,mod表示求模运算;
模逆单元计算的结果;
模乘单元计算以及/>的结果,从而得到(X3,Y3,Z3)转换为仿射坐标系下的坐标(x3,y3)。
优选的,所述结果输出模块验证所述坐标变换模块的转换结果是否在SM2椭圆曲线上,并输出验证结果及所述坐标变换模块的转换结果包括:
获取所述坐标变换模块的转换结果kP=(x3,y3),并判断其是否在椭圆SM2曲线上,其中判断公式为:其中b为SM2椭圆曲线参数;
若判断公式的等式不成立,则认为NAF点乘模块的点乘运算错误,输出运算错误的状态信号,终止运算;
若判断公式的等式成立,则认为NAF点乘模块的点乘运算正确,输出运算完成的状态信号,终止运算并将所述NAF点乘模块的点乘运算结果输出。
本发明还提供了基于算法层的抗侧信道攻击SM2点乘架构的运算方法,包括以下步骤:
S1.主控制模块接收到控制信号下发点乘启动命令后,启动所述预处理模块;
S2.所述预处理模块对所述基于算法层的抗侧信道攻击SM2点乘架构的输入进行随机化处理,包括初始的标量值k、落在椭圆曲线上的点乘输入基点P坐标,随机数r、z、m,其中基点P表示为等价的投影坐标点(xz2,yz3,z);令随机化标量值k=k+rN,N为椭圆曲线的阶;在本步骤中,当z为随机数时,则输入基点P随机化,从而能够防止DPA与计时攻击,攻击者通过输入同一个输入点得到的大量功耗波形,将存在随机性,无法进行高效以及准确的相关性分析;利用随机数和椭圆曲线阶的乘积后与标量值进行加法运算,能够有效地隐蔽标量值的信息,并且攻击通过输入相同标量值进行多次标量乘得到的功耗波形,存在随机性,同样无法进行高效以及准确的相关分析;即便攻击者能够成功获得该次运算的标量值,获取的标量值也具有随机性,不能够简单实现正确标量值的转换,从而抵御SPA、DPA攻击;
S3.通过所述NAF编码及NAF预计算模块确定随机化NAF窗口值w=[2,mw],计算NAFw(k)=(kl-1,kl-2,...,k1,k0),预计算随机化基点坐标值Pi=iP,其中i∈{1,3,5,...2w-1-1};并将编码及预计算结果存放至运算器及存储模块;
S4.对所述随机寄存器模块进行初始化,产生两位随机数据ri,将基点坐标赋值给点Q并对点Q进行随机化处理,Q←O,其中O=(0,r,0);
S5.通过所述NAF点乘模块执行包括点加与倍点的循环点乘计算,并接收所述随机寄存器模块产生的随机数据ri进行点加与倍点的伪操作:
其中在所述循环点乘计算中,定义i=l-1且i依次递减至0时结束以下循环:每次点乘计算循环首先执行Q=2Q的倍点运算操作,然后对ki进行判断,当ki≠0且ki>0时,执行Q=Q+Pki的点加运算,否则执行Q=Q-Pki的运算操作,其中点-Pki与点Pki的关系为横坐标值不变、纵坐标值变为素域下的相反数;
随机寄存器模块输出两位随机数据ri,若输出两位ri为00,则R=2Q;若输出两位ri为01,则R=Q+Pki,若输出两位ri为10或11,则不做任何操作;其中R结果为伪操作结果;
在步骤S3~S5中,通过引入了随机化NAF窗口值,使得标量值的NAF编码方式不固定,同样预计算的点的个数也不固定,攻击者无法利用多次标量乘运算方式获取大量功耗波形从而建立攻击模板,进行模板攻击;其次防御方案中的点加与倍点经过伪操作进行了平衡,并在NAF标量乘算法中引入了随机移位寄存器所带来的伪操作;由于预计算的某些特殊点的不固定,以及点加与倍点的平衡,攻击者将无法准确判断点加倍点的执行位置以及点加运算的执行内容;其次随机移位寄存器所带来的伪操作将使得泄漏的侧信道信息中混合了标量值k以及FSR所带来的随机因素,攻击者将无法建立起正确的攻击模板进而恢复标量值,从而该方法可以抵御模板攻击、以及部分的高阶差分功耗分析HO-DPA。
S6.通过所述坐标变换模块将Q的结果进行坐标转换;
S7.通过所述结果输出模块验证Q是否在SM2椭圆曲线上,若是则输出运算完成的状态信号,终止运算并将所述坐标变换模块的转换结果输出;若否则输出运算错误的状态信号,终止运算。
与现有技术相比,本发明技术方案的有益效果是:
本发明提供的基于算法层的抗侧信道攻击SM2点乘架构及其运算方法,通过随机化NAF窗口值从而随机化每次进行点乘运算的标量值,使得每次计算参与的基点坐标不同来抵抗差分功耗分析攻击;通过引入随机移位寄存器,在进行点加与倍点迭代过程中加入冗余运算,从而消除点加-倍点运算次数与密钥的关系进而抵御简单功耗分析SPA、差分功耗分析DPA、高阶差分功耗攻击HO_DPA、模板攻击,并在点加与倍点引入伪操作运算从而达到平衡功耗的目的。本发明基于算法层对现有的大部分侧信道攻击类型都有相应的防护手段,具有更高的安全性;同时由于本发明架构可以通过调整不同素数域值实现椭圆曲线密码算法ECC不同素数域下的点乘运算,便于对整个椭圆曲线密码系统进行兼容、扩展应用;另外,本发明架构中对于乘法器、加法器、寄存器存储资源进行合理规划以及共用,在实现抗侧信道攻击点乘运算的同时,兼顾椭圆曲线密码系统下其他的密码运算,提高了资源利用率。
附图说明
图1为实施例1提供的基于算法层的抗侧信道攻击SM2点乘架构图;
图2为实施例1中NAF编码的工作流程图;
图3为实施例1中坐标系转换模块的工作流程图;
图4为实施例2提供的基于算法层的抗侧信道攻击SM2点乘架构的运算方法流程图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
基于算法层的抗侧信道攻击SM2点乘架构,如图1所示,包括预处理模块、主控制模块、NAF编码及NAF预计算模块、NAF点乘模块、随机寄存器模块、坐标变换模块、结果输出模块、运算器及存储模块;在本实施例中,主控制模块为主控制器PM_FSM,随机寄存器模块为随机寄存器FSR,
所述主控制器PM_FSM用于控制所述预处理模块、NAF编码及NAF预计算模块、随机寄存器FSR、坐标变换模块、运算器及存储模块之间的数据传输以及运算状态,并控制结果输出模块输出最终结果;
所述预处理模块用于进行随机化处理产生三种随机信息,所述随机信息利用随机数发生器产生,包括标量值k、NAF窗口值、点乘输入基点P坐标;
其中进行随机化处理产生标量值k包括:在标量运算时引入随机数r,计算标量值k=k+rN,其中N为椭圆曲线点的阶;考虑实际运算效率,引入的随机数r取较小的随机数;
进行随机化处理产生点乘输入基点P坐标包括:引入随机量z对基点P坐标进行雅克比坐标的随机化转换,即将基点P表示为等价的投影坐标点(xz2,yz3,z),其中z为随机数;
进行随机化处理产生随机化NAF窗口值包括:通过随机数m定义NAF窗口值的大小;
所述NAF编码及NAF预计算模块用于根据所述预处理模块产生的随机化NAF窗口值对标量值k进行NAF编码,并根据所述随机化NAF窗口值大小预计算随机化基点坐标值Pi=iP,将编码及预计算结果存放至所述运算器及存储模块;
如图2所示,其中NAF编码及NAF预计算模块根据所述预处理模块产生的随机化NAF窗口值对标量值k进行NAF编码包括:
从所述预处理模块获取标量值k以及随机数m,通过随机数m得到NAF窗口值w;
根据NAF窗口值w对标量值k进行NAF编码,初始化i=0;判断k是否为k≥1,若是则进行下一步,若否则输出NAF编码的结果(ki-1,ki-2,...,k1,k0);
判断k是否为奇数,若为奇数,则执行ki=kmod2w以及k=k-ki的运算,否则ki=0;执行k=k/2以及i++更新,并返回上一步。
所述随机寄存器FSR用于产生随机数据,所述随机数据用于进行所述NAF点乘模块中的点加与倍点的伪操作;
所述NAF点乘模块用于获取所述运算器及存储模块的编码及预计算结果以及所述随机寄存器FSR的随机数据并进行雅可比坐标系下的点乘运算,所述点乘运算包括点加与倍点的循环运算以及点加与倍点的伪操作;
如图3所示,所述坐标变换模块用于对所述NAF点乘模块的点乘运算结果从雅克比坐标系转换为仿射坐标下;
其中坐标变换模块包括模乘单元和模逆单元,对所述NAF点乘模块的点乘运算结果从雅克比坐标系转换为仿射坐标下包括:
定义所述NAF点乘模块的点乘运算结果为(X3,Y3,Z3);
模乘单元计算的结果;其中p为定义SM2椭圆曲线的素数域值,mod表示求模运算;
模逆单元计算的结果;
模乘单元计算以及/>的结果,从而得到(X3,Y3,Z3)转换为仿射坐标系下的坐标(x3,y3)。
所述结果输出模块用于接收主控制器PM_FSM的指令,验证所述坐标变换模块的转换结果是否在SM2椭圆曲线上,并输出验证结果及所述坐标变换模块的转换结果;具体包括:
获取所述坐标变换模块的转换结果kP=(x3,y3),并判断其是否在椭圆SM2曲线上,其中判断公式为:其中b为SM2椭圆曲线参数;
若判断公式的等式不成立,则认为NAF点乘模块的点乘运算错误,输出运算错误的状态信号,终止运算;
若判断公式的等式成立,则认为NAF点乘模块的点乘运算正确,输出运算完成的状态信号,终止运算并将所述NAF点乘模块的点乘运算结果输出。
所述运算器及存储模块包括用于所述NAF点乘模块进行点加与倍点运算的乘法器和加法器,以及用于存储所述NAF编码及NAF预计算模块得到的编码及预计算结果的存储寄存器,该存储寄存器为硬件寄存器,可对数据进行读写修改并且能够保存。
实施例2
本实施例2提供了一种基于实施例1的基于算法层的抗侧信道攻击SM2点乘架构的运算方法,如图4所示,包括以下步骤:
S1.主控制器PM_FSM接收到mode控制信号下发点乘启动命令后,利用r_ctrl信号启动所述预处理模块;
S2.所述预处理模块对所述基于算法层的抗侧信道攻击SM2点乘架构的输入进行随机化处理,包括初始的标量值k、落在椭圆曲线上的点乘输入基点P坐标,随机数r、z、m,其中基点P表示为等价的投影坐标点(xz2,yz3,z);令随机化标量值k=k+rN,N为椭圆曲线的阶;
S3.通过所述NAF编码及NAF预计算模块确定随机化NAF窗口值w=[2,mw],计算NAFw(k)=(kl-1,kl-2,...,k1,k0),预计算随机化基点坐标值Pi=iP,其中i∈{1,3,5,...2w-1-1};并将编码及预计算结果存放至存储寄存器中,然后通过done信号结束该步骤;
S4.对所述随机寄存器FSR进行初始化,产生两位随机数据ri,将基点坐标赋值给点Q并对点Q进行随机化处理,Q←O,其中O=(0,r,0);
S5.通过所述NAF点乘模块执行包括点加与倍点的循环点乘计算,并接收所述随机寄存器FSR产生的随机数据ri进行点加与倍点的伪操作:
其中在所述循环点乘计算中,定义i=l-1且i依次递减至0时结束以下循环:每次点乘计算循环首先执行Q=2Q的倍点运算操作,然后对ki进行判断,当ki≠0且ki>0时,执行Q=Q+Pki的点加运算,否则执行Q=Q-Pki的运算操作,其中点-Pki与点Pki的关系为横坐标值不变、纵坐标值变为素域下的相反数;
随机寄存器FSR输出两位随机数据ri,若输出两位ri为00,则R=2Q;若输出两位ri为01,则R=Q+Pki,若输出两位ri为10或11,则不做任何操作;其中R结果为伪操作结果;
最终得到的点乘运算结果为(X3,Y3,Z3);
S6.通过所述坐标变换模块将Q的结果进行坐标转换;
S7.通过所述结果输出模块验证Q是否在SM2椭圆曲线上,若是则输出运算完成的状态信号,终止运算并将所述坐标变换模块的转换结果输出;若否则输出运算错误的状态信号,终止运算。
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (4)
1.基于算法层的抗侧信道攻击SM2点乘架构,其特征在于,包括预处理模块、主控制模块、NAF编码及NAF预计算模块、NAF点乘模块、随机寄存器模块、坐标变换模块、结果输出模块、运算器及存储模块;
所述主控制模块用于控制所述预处理模块、NAF编码及NAF预计算模块、随机寄存器模块、坐标变换模块、运算器及存储模块之间的数据传输以及运算状态,并控制结果输出模块输出最终结果;
所述预处理模块用于进行随机化处理产生三种随机信息,所述随机信息包括标量值k、NAF窗口值、点乘输入基点P坐标;所述预处理模块进行随机化处理产生随机化NAF窗口值包括:通过随机数m定义NAF窗口值的大小;
所述NAF编码及NAF预计算模块用于根据所述预处理模块产生的随机化NAF窗口值对标量值k进行NAF编码,并根据所述随机化NAF窗口值大小预计算随机化基点坐标值Pi=iP,其中,i∈{1,3,5,...2w-1-1};将编码及预计算结果存放至所述运算器及存储模块;
所述NAF编码及NAF预计算模块根据所述预处理模块产生的随机化NAF窗口值对标量值k进行NAF编码包括:
从所述预处理模块获取标量值k以及随机数m,通过随机数m得到NAF窗口值w;
根据NAF窗口值w对标量值k进行NAF编码,初始化i=0;判断k是否为k≥1,若是则进行下一步,若否则输出NAF编码的结果(ki-1,ki-2,...,k1,k0);
判断k是否为奇数,若为奇数,则执行ki=kmod2w以及k=k-ki的运算,否则ki=0;执行k=k/2以及i++更新,并返回上一步;
所述随机寄存器模块用于产生随机数据,所述随机数据用于进行所述NAF点乘模块中的点加与倍点的伪操作;
所述NAF点乘模块用于获取所述运算器及存储模块的编码及预计算结果以及所述随机寄存器模块的随机数据并进行雅可比坐标系下的点乘运算,所述点乘运算包括点加与倍点的循环运算以及点加与倍点的伪操作;
所述坐标变换模块用于对所述NAF点乘模块的点乘运算结果从雅克比坐标系转换为仿射坐标下;
所述坐标变换模块包括模乘单元和模逆单元,对所述NAF点乘模块的点乘运算结果从雅克比坐标系转换为仿射坐标下包括:
定义所述NAF点乘模块的点乘运算结果为(X3,Y3,Z3);
模乘单元计算的结果;其中p为定义SM2椭圆曲线的素数域值,mod表示求模运算;
模逆单元计算的结果;
模乘单元计算以及/>的结果,从而得到(X3,Y3,Z3)转换为仿射坐标系下的坐标(x3,y3);
所述结果输出模块用于接收主控制模块的指令,验证所述坐标变换模块的转换结果是否在SM2椭圆曲线上,并输出验证结果及所述坐标变换模块的转换结果;
所述结果输出模块验证所述坐标变换模块的转换结果是否在SM2椭圆曲线上,并输出验证结果及所述坐标变换模块的转换结果包括:
获取所述坐标变换模块的转换结果kP=(x3,y3),并判断其是否在椭圆SM2曲线上,其中判断公式为:其中b为SM2椭圆曲线参数;
若判断公式的等式不成立,则认为NAF点乘模块的点乘运算错误,输出运算错误的状态信号,终止运算;
若判断公式的等式成立,则认为NAF点乘模块的点乘运算正确,输出运算完成的状态信号,终止运算并将所述NAF点乘模块的点乘运算结果输出;
所述运算器及存储模块包括用于所述NAF点乘模块进行点加与倍点运算的乘法器和加法器,以及用于存储所述NAF编码及NAF预计算模块得到的编码及预计算结果的存储寄存器。
2.根据权利要求1所述的基于算法层的抗侧信道攻击SM2点乘架构,其特征在于,所述预处理模块进行随机化处理产生标量值k包括:在标量运算时引入随机数r,计算标量值k=k+rN,其中N为椭圆曲线点的阶。
3.根据权利要求1所述的基于算法层的抗侧信道攻击SM2点乘架构,其特征在于,所述预处理模块进行随机化处理产生点乘输入基点P坐标包括:引入随机量z对基点P坐标进行雅克比坐标的随机化转换,即将基点P表示为等价的投影坐标点(xz2,yz3,z),其中z为随机数。
4.一种权利要求1~3任一项所述的基于算法层的抗侧信道攻击SM2点乘架构的运算方法,其特征在于,包括以下步骤:
S1.主控制模块接收到控制信号下发点乘启动命令后,启动所述预处理模块;
S2.所述预处理模块对所述基于算法层的抗侧信道攻击SM2点乘架构的输入进行随机化处理,包括初始的标量值k、落在椭圆曲线上的点乘输入基点P坐标,随机数r、z、m,其中基点P表示为等价的投影坐标点(xz2,yz3,z);令随机化标量值k=k+rN,N为椭圆曲线的阶;
S3.通过所述NAF编码及NAF预计算模块确定随机化NAF窗口值w=[2,mw],计算NAFw(k)=(ki-1,ki-2,...,k1,k0),预计算随机化基点坐标值Pi=iP,其中i∈{1,3,5,...2w-1-1};并将编码及预计算结果存放至运算器及存储模块;
S4.对所述随机寄存器模块进行初始化,产生两位随机数据ri,将基点坐标赋值给点Q并对点Q进行随机化处理,Q←O,其中O=(0,r,0);
S5.通过所述NAF点乘模块执行包括点加与倍点的循环点乘计算,并接收所述随机寄存器模块产生的随机数据ri进行点加与倍点的伪操作:
其中在所述循环点乘计算中,定义i=i-1且i依次递减至0时结束以下循环:每次点乘计算循环首先执行Q=2Q的倍点运算操作,然后对ki进行判断,当ki≠0且ki>0时,执行Q=Q+Pki的点加运算,否则执行Q=Q-Pki的运算操作,其中点-Pki与点Pki的关系为横坐标值不变、纵坐标值变为素域下的相反数;
随机寄存器模块输出两位随机数据ri,若输出两位ri为00,则R=2Q;若输出两位ri为01,则R=Q+Pki若输出两位ri为10或11,则不做任何操作;其中R结果为伪操作结果;
S6.通过所述坐标变换模块将Q的结果进行坐标转换;
S7.通过所述结果输出模块验证Q是否在SM2椭圆曲线上,其中,判断公式为:y3 2=x3 3+ax3+b,若是则输出运算完成的状态信号,终止运算并将所述坐标变换模块的转换结果输出;若否则输出运算错误的状态信号,终止运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910773954.9A CN110611559B (zh) | 2019-08-21 | 2019-08-21 | 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910773954.9A CN110611559B (zh) | 2019-08-21 | 2019-08-21 | 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110611559A CN110611559A (zh) | 2019-12-24 |
CN110611559B true CN110611559B (zh) | 2023-08-22 |
Family
ID=68890634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910773954.9A Active CN110611559B (zh) | 2019-08-21 | 2019-08-21 | 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110611559B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111211886B (zh) * | 2020-04-20 | 2020-07-14 | 成都信息工程大学 | 针对sm2解密算法的能量分析检测方法 |
CN111756538B (zh) * | 2020-06-28 | 2023-10-13 | 哈尔滨理工大学 | 一种基于素数预处理的ecc标量乘法器的实现方法及装置 |
CN112099760B (zh) * | 2020-08-24 | 2022-11-11 | 清华大学 | 国密sm2算法中点加与倍点的单乘法器无缝调度方法 |
CN112131616B (zh) * | 2020-09-15 | 2022-02-18 | 郑州信大捷安信息技术股份有限公司 | 一种sm2算法的掩码运算方法及装置 |
CN112511292B (zh) * | 2021-02-05 | 2021-05-04 | 浙江地芯引力科技有限公司 | 安全芯片的工作性能检测及适应性引导方法及装置 |
CN113010142B (zh) * | 2021-03-23 | 2023-07-28 | 广州万协通信息技术有限公司 | 一种新型脉动结点式标量点乘的双域实现系统及方法 |
CN113691375B (zh) * | 2021-08-24 | 2023-08-04 | 广东工业大学 | 一种ecc椭圆曲线抗攻击的硬件架构 |
CN113609511B (zh) * | 2021-09-30 | 2021-12-21 | 北京智芯微电子科技有限公司 | 数据处理和密钥保护方法、装置、设备、存储介质 |
CN114527956B (zh) * | 2022-01-25 | 2024-05-10 | 北京航空航天大学 | 抗spa攻击的sm2算法中非定点标量乘法的计算方法 |
CN117972761A (zh) * | 2024-04-01 | 2024-05-03 | 杭州金智塔科技有限公司 | 基于国密sm2算法的数据处理方法以及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740730A (zh) * | 2014-12-10 | 2016-07-06 | 上海华虹集成电路有限责任公司 | 芯片中安全的点乘实现方法 |
CN108964914A (zh) * | 2017-05-17 | 2018-12-07 | 中国科学技术大学 | 抗侧信道攻击的sm2点乘架构 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090214023A1 (en) * | 2008-02-26 | 2009-08-27 | Al-Somani Turki F | Method for elliptic curve scalar multiplication |
-
2019
- 2019-08-21 CN CN201910773954.9A patent/CN110611559B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740730A (zh) * | 2014-12-10 | 2016-07-06 | 上海华虹集成电路有限责任公司 | 芯片中安全的点乘实现方法 |
CN108964914A (zh) * | 2017-05-17 | 2018-12-07 | 中国科学技术大学 | 抗侧信道攻击的sm2点乘架构 |
Also Published As
Publication number | Publication date |
---|---|
CN110611559A (zh) | 2019-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110611559B (zh) | 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 | |
US9313026B2 (en) | Key negotiation method and apparatus according to SM2 key exchange protocol | |
CN108964914B (zh) | 抗侧信道攻击的sm2点乘架构 | |
CN109791517B (zh) | 保护并行乘法运算免受外部监测攻击 | |
US20060280296A1 (en) | Cryptographic method and system for encrypting input data | |
WO2015164996A1 (zh) | 椭圆域曲线运算方法和椭圆域曲线运算器 | |
JP2012512574A (ja) | 鍵合意プロトコルの加速 | |
CN109145616B (zh) | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 | |
Heyse | Low-reiter: Niederreiter encryption scheme for embedded microcontrollers | |
US20110170685A1 (en) | Countermeasure method and devices for asymmetric encryption with signature scheme | |
JP2009531725A (ja) | 安全にデータを求める方法 | |
WO2009122461A1 (ja) | 電力解析攻撃への対策機能を備えた暗号化方法 | |
JP2019515353A (ja) | 暗号化べき乗アルゴリズムへのセーフ−エラーフォールトインジェクション攻撃に対する対策 | |
Aldaya et al. | From A to Z: Projective coordinates leakage in the wild | |
Koppermann et al. | 18 seconds to key exchange: Limitations of supersingular isogeny Diffie-Hellman on embedded devices | |
Campos et al. | Trouble at the CSIDH: protecting CSIDH with dummy-operations against fault injection attacks | |
JP2002229445A (ja) | べき乗剰余演算器 | |
TW200939114A (en) | Modular reduction using a special form of the modulus | |
Belyavsky et al. | Set it and forget it! Turnkey ECC for instant integration | |
Paar et al. | The RSA cryptosystem | |
US9590805B1 (en) | Ladder-based cryptographic techniques using pre-computed points | |
Lablanche et al. | Optimized implementation of the NIST PQC submission ROLLO on microcontroller | |
KR20080012634A (ko) | 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치 | |
KR102599406B1 (ko) | 영지식 증명을 위한 암호문 처리 방법 및 장치 | |
Ajani et al. | A Hybrid SAT and Lattice Reduction Approach for Integer Factorization. |
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 |