CN112099760B - 国密sm2算法中点加与倍点的单乘法器无缝调度方法 - Google Patents
国密sm2算法中点加与倍点的单乘法器无缝调度方法 Download PDFInfo
- Publication number
- CN112099760B CN112099760B CN202010857644.8A CN202010857644A CN112099760B CN 112099760 B CN112099760 B CN 112099760B CN 202010857644 A CN202010857644 A CN 202010857644A CN 112099760 B CN112099760 B CN 112099760B
- Authority
- CN
- China
- Prior art keywords
- point
- period
- scheduling
- calculation
- elliptic curve
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种国密SM2算法中点加与倍点的单乘法器无缝调度方法及装置,该方法包括:获取雅克比投影坐标下的SM2椭圆曲线方程;根据倍点调度方案对SM2椭圆曲线方程上的点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)进行调度计算;根据点加调度方案对SM2椭圆曲线方程上的点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)进行调度计算;将倍点和点加的调度计算过程映射到两级流水倍点和点加硬件计算架构中。该方法通过合理调度单个256位乘法器可以在8个时钟周期完成雅克比坐标下倍点过程,同时可以在11个时钟周期内完成雅克比仿射混合点加过程。
Description
技术领域
本发明涉及信息安全技术领域,特别涉及一种国密SM2算法中点加与倍点的单乘法器无缝调度方法。
背景技术
椭圆曲线密码学是构建公钥密码体制的重要组成部分。国密SM2签名验签、加密解密协议属于椭圆曲线密码学的范畴,其计算主体是椭圆曲线上的单点乘和双点乘,因而点乘的时间开销直接影响着顶层协议的执行速度。点乘向下可以细分为一系列的倍点和点加运算,这两种运算都定义在椭圆曲线上,计算过程较为复杂,因而通过合理调度乘法器硬件单元,设计低时钟周期的倍点和点加过程并使两种运算可以无缝衔接对于提升顶层签名验签、加密解密协议时间性能具有重要意义。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种国密SM2算法中点加与倍点的单乘法器无缝调度方法,该方法通过合理调度单个256位乘法器可以在8个时钟周期完成雅克比坐标下倍点过程,同时可以在11个时钟周期内完成雅克比仿射混合点加过程。
本发明的另一个目的在于提出一种国密SM2算法中点加与倍点的单乘法器无缝调度装置。
为达到上述目的,本发明一方面实施例提出了一种国密SM2算法中点加与倍点的单乘法器无缝调度方法,包括:
获取雅克比投影坐标下的SM2椭圆曲线方程;
根据倍点调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)进行调度计算;
根据点加调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)进行调度计算;
将倍点和点加的调度计算过程映射到两级流水倍点和点加硬件计算架构中。
为达到上述目的,本发明另一方面实施例提出了一种国密SM2算法中点加与倍点的单乘法器无缝调度装置,包括:
获取模块,用于获取雅克比投影坐标下的SM2椭圆曲线方程;
第一调度模块,用于根据倍点调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)进行调度计算;
第二调度模块,用于根据点加调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)进行调度计算;
映射模块,用于将倍点和点加的调度计算过程映射到两级流水倍点和点加硬件计算架构中。
本发明实施例的国密SM2算法中点加与倍点的单乘法器无缝调度方法及装置,有益效果为:
可以实现在单个256位乘法器条件下两级流水倍点和点加的调度方案,其时钟周期消耗为别为8个和11个,而且各自内部以及互相衔接过程可以做到不需要插入空拍,整个点乘分解出的倍点和点加调度过程乘法器这一核心计算单元的利用率始终为100%。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的数字签名生成算法流程图;
图2为根据本发明一个实施例的椭圆曲线上的倍点和点加的图形描述示意图;
图3为根据本发明一个实施例的国密SM2算法中点加与倍点的单乘法器无缝调度方法流程图;
图4为根据本发明一个实施例的两级流水倍点和点加硬件计算架构结构示意图;
图5为根据本发明一个实施例的国密SM2算法中点加与倍点的单乘法器无缝调度装置结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
本发明实施例要解决的技术问题是:在单个乘法器运算核心的条件下,怎样构建时钟周期数尽可能少而且内部以及互相过渡没有空拍的椭圆曲线倍点和点加的调度方案。基于已有低时钟周期数的倍点和点加过程,SM2中点乘以及顶层的签名验签、加密解密过程可以有更好的时间性能表现。
以国密《SM2椭圆曲线公钥密码算法第2部分:数字签名算法》中的签名过程为例,整个协议的计算主体出现在第四步,即计算椭圆曲线上点乘(x1,y1)=[k]G,如说明书图1所示。在椭圆曲线上,点乘也被称为标量乘,它描述的是同样的k个基点G相加的过程。因为加法定义在椭圆曲线上,过程并不简单,所以为了加速整个点乘过程,首先要寻找好的累加方案,一方面相加的次数越少越好,另一方面每一次相加消耗的时钟周期数也应越少越好。
对于第一方面,已有简单实用的方案可以将点乘分解为一系列倍点-点加过程,如算法1所描述,其中O表示椭圆曲线上无穷远点。算法1可使整体的加法数量由原来的k-1个变为其中k(2)表示标量k的二进制展开表示,HW()为汉明重量函数,即特定进制下某一个数非零位的个数。从统计意义上看,HW(k(2))可以近似为特别是在k二进制展开位数达到上百位的情形下,正如SM2中情况。倍点是特殊的点加,对应的是相加的两个点相同的情形。椭圆曲线上的倍点和点加的图形描述如图2所示。
算法1:由最高位向最低位分解点乘为倍点与点加过程
输入:椭圆曲线上基点G,二进制表示的标量k(2)
输出:椭圆曲线上点R=[k]G
1.R=O
2.从最高位向最低位逐位扫描k(2),取得当前位置比特ki
3.R=2R
4.如果ki=1,R=R+G
5.如果当前位置对应k的最低位,结束运算,返回R,否则返回到步骤2。
针对第二方面,可以使用雅克比投影坐标可以避免在倍点和点加过程中引入复杂的域上模逆运算,此坐标系统下对应的SM2椭圆曲线方程为Y2=X3-3XZ4+bZ6,注意在此情形下,椭圆曲线参数a取特殊值-3。令P=(X1:Y1:Z1)且满足P≠-P,倍点R=2P=(X3:Y3:Z3),其各坐标计算公式为:
X3=(3X1 2-3Z1 4)2-8X1Y1 2
Y3=(3X1 2-3Z1 4)(4X1Y1 2-X3)-8Y1 4
Z3=2Y1Z1
令P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3),其各坐标计算公式为:
X3=(Y2Z1 3-Y1)2-(X2Z1 2-X1)2(X1+X2Z1 2)
Y3=(Y2Z1 3-Y1)(X1(X2Z1 2-X1)2-X3)-Y1(X2Z1 2-X1)3
Z3=(X2Z1 2-X1)Z1。
下面参照附图描述根据本发明实施例提出的国密SM2算法中点加与倍点的单乘法器无缝调度方法及装置。
首先将参照附图描述根据本发明实施例提出的国密SM2算法中点加与倍点的单乘法器无缝调度方法。
图3为根据本发明一个实施例的国密SM2算法中点加与倍点的单乘法器无缝调度方法流程图。
如图3所示,该国密SM2算法中点加与倍点的单乘法器无缝调度方法包括以下步骤:
步骤S1,获取雅克比投影坐标下的SM2椭圆曲线方程。
上述已经介绍,使用雅克比投影坐标来避免在倍点和点加过程中引入复杂的域上模逆运算,此坐标系统下对应的SM2椭圆曲线方程为Y2=X3-3XZ4+bZ6。
步骤S2,根据倍点调度方案对SM2椭圆曲线方程上的点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)进行调度计算。
本发明实施例中的调度方案利用硬件计算架构实现,除了计算核心256位乘法器之外,外围电路包括1)14个256位寄存器的寄存器堆(其中R8保留给椭圆曲线参数a,以后续支持a自定义的情形),2)512比特乘积快速约减单元,3)一个模加减器。附图如图4所示。
对于SM2椭圆曲线方程上的单个点P进行倍点调度计算消耗的周期为8个,对于SM2椭圆曲线方程上的单个点P、Q,进行点加调度计算消耗的周期为11个。
寄存器堆包括14个寄存器R1-R14,在倍点调度方案中,P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)计算过程如下:
初始化寄存器堆中R10=X1,R12=Y1,R14=Z1,R13=Z1 2,注意首次执行倍点操作时输入点通常为仿射坐标点,即此时Z1=1。操作前面的序号标志着对应的周期编号。
周期0:R1=R10+R13=X1+Z1 2
周期1:R5=2R12R12=2Y1 2; 周期1:R3=3R10-3R13=3X1-3Z1 2
周期2:R7=R1R3=3(X1 2-Z1 4)
周期3:R2=2R10R5=4X1Y1 2
周期4:R4=R7R7=(3X1 2-3Z1 4)2
周期5:R6=2R5R5=8Y1 4
周期6:R13=2R5R13=4Y1 2Z1 2;周期6:R1=3R2-R4=12X1Y1 2-(3X1 2-3Z1 4)2
周期7:R12=R7R1-R6=3(X1 2-Z1 4)(12X1Y1 2-(3X1 2-3Z1 4)2)-8Y1 4;
周期7:R10=R4-2R2=(3X1 2-3Z1 4)2-8X1Y1 2
周期8:R14=2R12R14=2Y1Z1
计算结果X3,Y3,Z3,Z3 2分别保存在R10,R12,R14,R13中,具体各硬件单元在每个周期执行的操作如表1所示,表1为雅克比坐标系统下倍点过程无缝调度方案。
表1
根据倍点的调度细节,容易看到在点乘分解出需要计算倍点-倍点,即连续两个倍点的情形下,整体的调度方案可以做到不需要额外插入空拍。详细计算情况如表2所示,表2为雅克比坐标系统下连续倍点无缝调度方案。其中第9个周期之后的操作对应第二次倍点的计算过程。第二次计算中对应的坐标X,Y,Z,Z2的初始值是第一次倍点计算的结果,如前所述,分别保存在R10,R12,R14,R13中。
表2
步骤S3,根据点加调度方案对SM2椭圆曲线方程上的点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)进行调度计算。
寄存器堆包括14个寄存器R1-R14,点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)计算为:
初始化寄存器堆中R10=X1,R12=Y1,R14=Z1,R13=Z1 2,R9=X2,R11=Y2。输入的叠加点Q一般为已知横纵坐标的仿射点,因而其Z坐标为1。
周期1:R1=R13R9-R10=X2Z1 2-X1
周期2:R3=R13R14=Z1 3
周期3:R5=R1R1=(X2Z1 2-X1)2
周期4:R7=R3R11-R12=Y2Z1 3-Y1
周期5:R2=R1R5=(X2Z1 2-X1)3
周期6:R4=R5R10=X1(X2Z1 2-X1)2
周期7:R6=R7R7-R2=(Y2Z1 3-Y1)2-(X2Z1 2-X1)3
周期8:R2=R2R12=Y1(X2Z1 2-X1)3
周期9:R13=R5R13=(X2Z1 2-X1)2Z1 2;
周期9:R3=3R4-R6=3X1(X2Z1 2-X1)2-(Y2Z1 3-Y1)2+(X2Z1 2-X1)3
周期10:R12=R3R7-R2=(Y2Z1 3-Y1)((X2Z1 2-X1)2(X2Z1 2+2X1)-(Y2Z1 3-Y1)2)-Y1(X2Z1 2-X1)3;
周期10:10R10=R6-2R4=(Y2Z1 3-Y1)2-(X2Z1 2-X1)2(X2Z1 2+X1)2
周期11:R14=R1R14=Z1(X2Z1 2-X1)
计算结果X3,Y3,Z3,Z3 2分别保存在R10,R12,R14,R13中,具体各硬件单元在每个周期执行的操作如表3所示。表3为雅克比-仿射混合坐标点加过程无缝调度方案。
表3
同样地,根据点加的调度细节,容易看到在点乘分解出需要计算点加-点加,即连续两个点加的情形下(在SM2数字签名中[k]G计算中不会出现,但是在SM2验签中[s’]G+[t]PA中会出现),整体的调度方案可以做到不需要额外插入空拍。详细计算情况如表4所示,表4为雅克比-仿射混合坐标连续点加无缝调度方案。其中第12个周期之后的操作对应第二次点加的计算过程。第二次计算中对应的坐标X,Y,Z,Z2的初始值是第一次点加计算的结果,如前所述,分别保存在R10,R12,R14,R13中。
表4
步骤S4,将倍点和点加的调度计算过程映射到两级流水倍点和点加硬件计算架构中。
可以理解的是,步骤S2和步骤S3为平行步骤,在实际应用中,根据需要进行倍点调度方案或点加调度方案,或倍点调度方案与点加调度方案的组合。
进一步地,在本发明的实施例中,通过两级流水倍点和点加硬件计算架构进行连续两个倍点及连续两个点加的计算。
更进一步地,在本发明的一个实施例中,将倍点和点加两个调度计算方案进行拼接,进行倍点-点加或点加-倍点的调度计算。
具体地,按照已有的倍点调度和点加调度,在出现倍点-点加或点加-倍点这样的计算情形时,计算过程仍然可以像倍点-倍点和点加-点加那样通过简单地把两种调度方案拼接到一块来得到。详细的调度过程由表5、表6描述:其中表5为雅克比-仿射混合坐标倍点-点加无缝调度方案,表6为雅克比-仿射混合坐标点加-倍点无缝调度方案。
表5
表6
在表5中,前8个周期为倍点计算过程,后11个周期为点加计算过程,第二次计算中对应的坐标X,Y,Z,Z2的初始值是第一次倍点计算的结果,如前所述,分别保存在R10,R12,R14,R13中。
在表6中,前11个周期为点加计算过程,后8个周期为倍点计算过程,第二次计算中对应的坐标X,Y,Z,Z2的初始值是第一次点加计算的结果,如前所述,分别保存在R10,R12,R14,R13中。
综上,在SM2椭圆曲线参数下,通过合理调度单个256位乘法器可以在8个时钟周期完成雅克比坐标下倍点过程,同时可以在11个时钟周期内完成雅克比仿射混合点加过程,而且如表1至表6所示,两种操作内部以及互相衔接都不需要插入空拍,意味着在此过程中乘法器核心计算资源使用率一直是100%,为设计高性能的点乘模块以及顶层的签名验签、加密解密系统打好了基础。
根据本发明实施例提出的国密SM2算法中点加与倍点的单乘法器无缝调度方法,通过一种雅克比坐标下倍点、点加子运算内部以及之间无缝衔接的单个256位乘法器两级流水调度方案。乘法器作为核心计算资源,搭配约减单元、小型寄存器堆和一个模加减器,SM2中倍点和点加运算可以分别用8个时钟周期和11个时钟周期完成,在其基础上可以方便地构建高性能的SM2签名验签、加密解密硬件单元。
其次参照附图描述根据本发明实施例提出的国密SM2算法中点加与倍点的单乘法器无缝调度装置。
图5为本发明一个实施例的国密SM2算法中点加与倍点的单乘法器无缝调度装置结构示意图。
如图5所示,该国密SM2算法中点加与倍点的单乘法器无缝调度装置包括:获取模块501、第一调度模块502、第二调度模快503和映射模块504。
获取模块501,用于获取雅克比投影坐标下的SM2椭圆曲线方程。
第一调度模块502,用于根据倍点调度方案对SM2椭圆曲线方程上的点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)进行调度计算。
第二调度模块503,用于根据点加调度方案对SM2椭圆曲线方程上的点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)进行调度计算。
映射模块504,用于将倍点和点加的调度计算过程映射到两级流水倍点和点加硬件计算架构中。
进一步地,在本发明的一个实施例中,对于SM2椭圆曲线方程上的单个点P进行倍点调度计算消耗的周期为8个,对于SM2椭圆曲线方程上的单个点P、Q,进行点加调度计算消耗的周期为11个。
需要说明的是,前述对方法实施例的解释说明也适用于该实施例的装置,此处不再赘述。
根据本发明实施例提出的国密SM2算法中点加与倍点的单乘法器无缝调度装置,通过一种雅克比坐标下倍点、点加子运算内部以及之间无缝衔接的单个256位乘法器两级流水调度方案。乘法器作为核心计算资源,搭配约减单元、小型寄存器堆和一个模加减器,SM2中倍点和点加运算可以分别用8个时钟周期和11个时钟周期完成,在其基础上可以方便地构建高性能的SM2签名验签、加密解密硬件单元。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (8)
1.一种国密SM2算法中点加与倍点的单乘法器无缝调度方法,其特征在于,包括以下步骤:
获取雅克比投影坐标下的SM2椭圆曲线方程;
根据倍点调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)进行调度计算;
根据点加调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)进行调度计算;
将倍点和点加的调度计算过程映射到两级流水倍点和点加硬件计算架构中,
其中,根据倍点调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)进行调度计算,包括:
寄存器堆包括14个寄存器R1-R14,点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)计算为:
初始化寄存器堆中R10=X1,R12=Y1,R14=Z1,R13=Z1 2;
周期0:R1=R10+R13=X1+Z1 2
周期1:R5=2R12R12=2Y1 2;周期1:R3=3R10-3R13=3X1-3Z1 2
周期2:R7=R1R3=3(X1 2-Z1 4)
周期3:R2=2R10R5=4X1Y1 2
周期4:R4=R7R7=(3X1 2-3Z1 4)2
周期5:R6=2R5R5=8Y1 4
周期6:R13=2R5R13=4Y1 2Z1 2;周期6:R1=3R2-R4=12X1Y1 2-(3X1 2-3Z1 4)2
周期7:R12=R7R1-R6=3(X1 2-Z1 4)(12X1Y1 2-(3X1 2-3Z1 4)2)-8Y1 4;
周期7:R10=R4-2R2=(3X1 2-3Z1 4)2-8X1Y1 2
周期8:R14=2R12R14=2Y1Z1
计算结果X3,Y3,Z3,Z3 2分别保存在R10,R12,R14,R13中,将各个计算结果映射到所述两级流水倍点和点加硬件计算架构中,
对于根据点加调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)进行调度计算,包括:所述寄存器堆包括14个寄存器R1-R14,点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)计算为:
初始化寄存器堆中R10=X1,R12=Y1,R14=Z1,R13=Z1 2,R9=X2,R11=Y2;
周期1:R1=R13R9-R10=X2Z1 2-X1
周期2:R3=R13R14=Z1 3
周期3:R5=R1R1=(X2Z1 2-X1)2
周期4:R7=R3R11-R12=Y2Z1 3-Y1
周期5:R2=R1R5=(X2Z1 2-X1)3
周期6:R4=R5R10=X1(X2Z1 2-X1)2
周期7:R6=R7R7-R2=(Y2Z1 3-Y1)2-(X2Z1 2-X1)3
周期8:R2=R2R12=Y1(X2Z1 2-X1)3
周期9:R13=R5R13=(X2Z1 2-X1)2Z1 2;
周期9:R3=3R4-R6=3X1(X2Z1 2-X1)2-(Y2Z1 3-Y1)2+(X2Z1 2-X1)3
周期10:R12=R3R7-R2=(Y2Z1 3-Y1)((X2Z1 2-X1)2(X2Z1 2+2X1)-(Y2Z1 3-Y1)2)-Y1(X2Z1 2-X1)3;
周期10:10R10=R6-2R4=(Y2Z1 3-Y1)2-(X2Z1 2-X1)2(X2Z1 2+X1)2
周期11:R14=R1R14=Z1(X2Z1 2-X1)
计算结果X3,Y3,Z3,Z3 2分别保存在R10,R12,R14,R13中,将各个计算结果映射到所述两级流水倍点和点加硬件计算架构中。
2.根据权利要求1所述的方法,其特征在于,所述雅克比投影坐标下的SM2椭圆曲线方程为Y2=X3-3XZ4+bZ6,对于P=(X1:Y1:Z1)且满足P≠-P,倍点R=2P=(X3:Y3:Z3),各坐标计算公式为:
X3=(3X1 2-3Z1 4)2-8X1Y1 2;
Y3=(3X1 2-3Z1 4)(4X1Y1 2-X3)-8Y1 4;
Z3=2Y1Z1;
对P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3),各坐标计算公式为:
X3=(Y2Z1 3-Y1)2-(X2Z1 2-X1)2(X1+X2Z1 2);
Y3=(Y2Z1 3-Y1)(X1(X2Z1 2-X1)2-X3)-Y1(X2Z1 2-X1)3;
Z3=(X2Z1 2-X1)Z1。
3.根据权利要求1所述的方法,其特征在于,对于所述SM2椭圆曲线方程上的单个点P进行倍点调度计算消耗的周期为8个,对于所述SM2椭圆曲线方程上的单个点P、Q,进行点加调度计算消耗的周期为11个。
4.根据权利要求1所述的方法,其特征在于,所述两级流水倍点和点加硬件计算架构包括:乘法器,包括多个寄存器的寄存器堆,约减单元和模加减器。
5.根据权利要求1所述的方法,其特征在于,通过所述两级流水倍点和点加硬件计算架构进行连续两个倍点及连续两个点加的计算。
6.根据权利要求1所述的方法,其特征在于,将倍点和点加两个调度计算方案进行拼接,进行倍点-点加或点加-倍点的调度计算。
7.一种国密SM2算法中点加与倍点的单乘法器无缝调度装置,其特征在于,包括:
获取模块,用于获取雅克比投影坐标下的SM2椭圆曲线方程;
第一调度模块,用于根据倍点调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)进行调度计算;
第二调度模块,用于根据点加调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)进行调度计算;
映射模块,用于将倍点和点加的调度计算过程映射到两级流水倍点和点加硬件计算架构中,
其中,根据倍点调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)进行调度计算,包括:
寄存器堆包括14个寄存器R1-R14,点P=(X1:Y1:Z1),倍点R=2P=(X3:Y3:Z3)计算为:
初始化寄存器堆中R10=X1,R12=Y1,R14=Z1,R13=Z1 2;
周期0:R1=R10+R13=X1+Z1 2
周期1:R5=2R12R12=2Y1 2;周期1:R3=3R10-3R13=3X1-3Z1 2
周期2:R7=R1R3=3(X1 2-Z1 4)
周期3:R2=2R10R5=4X1Y1 2
周期4:R4=R7R7=(3X1 2-3Z1 4)2
周期5:R6=2R5R5=8Y1 4
周期6:R13=2R5R13=4Y1 2Z1 2;周期6:R1=3R2-R4=12X1Y1 2-(3X1 2-3Z1 4)2
周期7:R12=R7R1-R6=3(X1 2-Z1 4)(12X1Y1 2-(3X1 2-3Z1 4)2)-8Y1 4;
周期7:R10=R4-2R2=(3X1 2-3Z1 4)2-8X1Y1 2
周期8:R14=2R12R14=2Y1Z1
计算结果X3,Y3,Z3,Z3 2分别保存在R10,R12,R14,R13中,将各个计算结果映射到所述两级流水倍点和点加硬件计算架构中,
对于根据点加调度方案对所述SM2椭圆曲线方程上的点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)进行调度计算,包括:所述寄存器堆包括14个寄存器R1-R14,点P=(X1:Y1:Z1),Q=(X2:Y2:1),点加R=P+Q=(X3:Y3:Z3)计算为:
初始化寄存器堆中R10=X1,R12=Y1,R14=Z1,R13=Z1 2,R9=X2,R11=Y2;
周期1:R1=R13R9-R10=X2Z1 2-X1
周期2:R3=R13R14=Z1 3
周期3:R5=R1R1=(X2Z1 2-X1)2
周期4:R7=R3R11-R12=Y2Z1 3-Y1
周期5:R2=R1R5=(X2Z1 2-X1)3
周期6:R4=R5R10=X1(X2Z1 2-X1)2
周期7:R6=R7R7-R2=(Y2Z1 3-Y1)2-(X2Z1 2-X1)3
周期8:R2=R2R12=Y1(X2Z1 2-X1)3
周期9:R13=R5R13=(X2Z1 2-X1)2Z1 2;
周期9:R3=3R4-R6=3X1(X2Z1 2-X1)2-(Y2Z1 3-Y1)2+(X2Z1 2-X1)3
周期10:R12=R3R7-R2=(Y2Z1 3-Y1)((X2Z1 2-X1)2(X2Z1 2+2X1)-(Y2Z1 3-Y1)2)-Y1(X2Z1 2-X1)3;
周期10:10R10=R6-2R4=(Y2Z1 3-Y1)2-(X2Z1 2-X1)2(X2Z1 2+X1)2
周期11:R14=R1R14=Z1(X2Z1 2-X1)
计算结果X3,Y3,Z3,Z3 2分别保存在R10,R12,R14,R13中,将各个计算结果映射到所述两级流水倍点和点加硬件计算架构中。
8.根据权利要求7所述的装置,其特征在于,对于所述SM2椭圆曲线方程上的单个点P进行倍点调度计算消耗的周期为8个,对于所述SM2椭圆曲线方程上的单个点P、Q,进行点加调度计算消耗的周期为11个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010857644.8A CN112099760B (zh) | 2020-08-24 | 2020-08-24 | 国密sm2算法中点加与倍点的单乘法器无缝调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010857644.8A CN112099760B (zh) | 2020-08-24 | 2020-08-24 | 国密sm2算法中点加与倍点的单乘法器无缝调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099760A CN112099760A (zh) | 2020-12-18 |
CN112099760B true CN112099760B (zh) | 2022-11-11 |
Family
ID=73754169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010857644.8A Active CN112099760B (zh) | 2020-08-24 | 2020-08-24 | 国密sm2算法中点加与倍点的单乘法器无缝调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099760B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472540B (zh) * | 2021-07-01 | 2023-05-09 | 罗克佳华(重庆)科技有限公司 | 生成密文的方法、装置、电子设备及存储介质 |
CN114465735B (zh) * | 2022-04-12 | 2022-06-17 | 北京象帝先计算技术有限公司 | 验签系统、电子装置、电子设备及验签方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101547089A (zh) * | 2008-03-28 | 2009-09-30 | 上海爱信诺航芯电子科技有限公司 | 集成电路中素数域椭圆曲线密码算法的实现方法 |
CN101782845A (zh) * | 2009-01-20 | 2010-07-21 | 北京华大信安科技有限公司 | 一种椭圆曲线密码的高速运算装置和方法 |
CN108306735A (zh) * | 2017-12-29 | 2018-07-20 | 成都锐成芯微科技股份有限公司 | 椭圆曲线点乘运算的硬件实现方法及其系统 |
CN108650087A (zh) * | 2018-05-16 | 2018-10-12 | 广东工业大学 | 一种二进制域F2m下的SM2椭圆曲线签名点乘加密方法 |
CN110611559A (zh) * | 2019-08-21 | 2019-12-24 | 广东工业大学 | 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2828779B1 (fr) * | 2001-08-17 | 2004-01-16 | Gemplus Card Int | Procede de calcul universel applique a des points d'une courbe elliptique |
-
2020
- 2020-08-24 CN CN202010857644.8A patent/CN112099760B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101547089A (zh) * | 2008-03-28 | 2009-09-30 | 上海爱信诺航芯电子科技有限公司 | 集成电路中素数域椭圆曲线密码算法的实现方法 |
CN101782845A (zh) * | 2009-01-20 | 2010-07-21 | 北京华大信安科技有限公司 | 一种椭圆曲线密码的高速运算装置和方法 |
CN108306735A (zh) * | 2017-12-29 | 2018-07-20 | 成都锐成芯微科技股份有限公司 | 椭圆曲线点乘运算的硬件实现方法及其系统 |
CN108650087A (zh) * | 2018-05-16 | 2018-10-12 | 广东工业大学 | 一种二进制域F2m下的SM2椭圆曲线签名点乘加密方法 |
CN110611559A (zh) * | 2019-08-21 | 2019-12-24 | 广东工业大学 | 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 |
Non-Patent Citations (1)
Title |
---|
C语言实现椭圆曲线点加;导导96;《https://blog.csdn.net/weixin_44830789/article/details/106749470》;20200614;正文第1页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112099760A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang et al. | Efficient implementation of public key cryptosystems on mote sensors (short paper) | |
CN110611559B (zh) | 基于算法层的抗侧信道攻击sm2点乘架构及其运算方法 | |
CN112099760B (zh) | 国密sm2算法中点加与倍点的单乘法器无缝调度方法 | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
US20110161390A1 (en) | Modular multiplication processing apparatus | |
CN103942031B (zh) | 椭圆域曲线运算方法 | |
CN100428140C (zh) | 椭圆曲线密码体制协处理器的实现方法 | |
CN103631660A (zh) | 在gpu中进行大整数计算时的存储资源分配方法及装置 | |
CN107004084A (zh) | 用于加密操作的乘法掩码 | |
JP2002229445A (ja) | べき乗剰余演算器 | |
Kim et al. | New hybrid method for isogeny-based cryptosystems using Edwards curves | |
CN101971138B (zh) | 用于计算椭圆曲线上的点的倍数的设备和方法 | |
JP5403630B2 (ja) | スカラ倍算器及びスカラ倍算プログラム | |
CN111314080B (zh) | 一种基于sm9算法的协同签名方法、装置、介质 | |
KR101223498B1 (ko) | 타원 곡선 암호 방식에서 공개키를 생성하는 방법 및 상기방법을 수행하는 시스템 | |
JP2004004341A (ja) | べき乗剰余計算装置、べき乗剰余計算方法及びプログラム | |
JP2009042787A (ja) | 楕円曲線上の有限体演算の加速方法 | |
CN111897578A (zh) | 一种特征为2的椭圆曲线上标量乘的并行处理方法及装置 | |
CN112134704B (zh) | 一种sm2性能优化实现方法 | |
Stogbauer | Efficient Algorithms for pairing-based cryptosystems | |
JP2002358010A (ja) | べき乗剰余演算器 | |
CN113505383A (zh) | 一种ecdsa算法执行系统及方法 | |
Bos et al. | Efficient Modular Multiplication | |
KR100974624B1 (ko) | 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 | |
US8290151B2 (en) | Device and method for determining an inverse of a value related to a modulus |
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 |