一种用于椭圆曲线密码的倍点运算方法及系统

文档序号:1378260 发布日期:2020-08-14 浏览:20次 >En<

阅读说明:本技术 一种用于椭圆曲线密码的倍点运算方法及系统 (Doubling point operation method and system for elliptic curve password ) 是由 彭金辉 张朝阳 雷宗华 廖正赟 刘武忠 卫志刚 于 2020-03-26 设计创作,主要内容包括:本发明提出一种用于椭圆曲线密码的倍点运算方法,包括:根据椭圆曲线阶的位数N比特计算椭圆曲线上点(x,y)占用空间;将椭圆曲线阶的位数N依据V比特划分为(N+V-1)/V份单元,计算椭圆曲线上点(x,y)的数量和查找表的大小;根据查找表的大小和设备内存大小计算V的最大值;计算&lt;Image he="133" wi="93" file="DDA0002427560710000011.GIF" imgContent="drawing" imgFormat="GIF" orientation="portrait" inline="no"&gt;&lt;/Image&gt;并依次计算k*2&lt;Sup&gt;iV&lt;/Sup&gt;G,其中,&lt;Image he="111" wi="363" file="DDA0002427560710000012.GIF" imgContent="drawing" imgFormat="GIF" orientation="portrait" inline="no"&gt;&lt;/Image&gt;k∈[1,2&lt;Sup&gt;v&lt;/Sup&gt;-1],并根据计算的结果生成划分的各个单元的查找表;计算N%V,并计算&lt;Image he="95" wi="305" file="DDA0002427560710000013.GIF" imgContent="drawing" imgFormat="GIF" orientation="portrait" inline="no"&gt;&lt;/Image&gt;其中,k∈[1,2&lt;Sup&gt;N%V&lt;/Sup&gt;-1];依据K的取值不同依次从划分的各个单元的查找表中获取相应计算结果并进行点加运算获得椭圆曲线基点G的K倍点[K]G的点乘结果;本发明根据设备资源可动态构造查找表、提高倍点运算速度。(The invention provides a point doubling operation method for elliptic curve cryptography, which comprises the following steps: calculating the occupied space of points (x, y) on the elliptic curve according to the digit N bits of the elliptic curve order; dividing the digit N of the elliptic curve order into (N &#43; V-1)/V units according to V bits, and calculating the number of points (x, y) on the elliptic curve and the size of a lookup table; calculating the maximum value of V according to the size of the lookup table and the size of the equipment memory; computing And sequentially calculating k 2 iV G, wherein, k∈[1,2 v ‑1]generating a lookup table of each divided unit according to the calculation result; calculate N% V, and calculate Wherein, k ∈ [1,2 ] N%V ‑1](ii) a According to different values of K, obtaining corresponding calculation results from the lookup tables of the divided units in sequence and carrying out point addition operation to obtain K times of points [ K ] of the elliptic curve base point G]The dot product result of G; the invention can dynamically construct a lookup table according to equipment resources and improve the speed of point doubling operation.)

一种用于椭圆曲线密码的倍点运算方法及系统

技术领域

本发明涉及密码技术领域,具体涉及一种用于椭圆曲线密码的倍点运算方法及系统。

背景技术

椭圆曲线密码(Elliptic Curve Cryptography,ECC)属于非对称密码体制,ECC具有密钥长度短、加解密速度快、对计算环境要求低、在需要通信时对带宽要求低等特点,因此,近年来,ECC被广泛应用于商用密码领域。国密SM2也是非对称密码体制,是一种基于ECC的非对称密码体制。

SM2椭圆曲线算法包括SM2加密/解密密码算法和SM2签名/验签密码算法,在SM2签名、验签和加密算法过程中,需要计算ECC椭圆曲线上一个固定点G的倍点,即计算[k]G,其中k为随机数,倍点运算是关键的一步,也是耗时最长的一步。目前,倍点运算的算法主要采用二进制展开法、加减法、滑动窗法、查表法等,其中以查表法计算速度最快,但是查表法存在占用资源(内存、闪存等)大的缺陷,已有实现并不能动态地适配各种设备资源,同样的算法在PC上可以正常有效地工作,但是在资源有限的设备中就不能正常工作。

因此如何根据设备资源来动态构造查找表、提高倍点运算的速度是目前急需解决的问题。

发明内容

本发明针对上述问题,有必要提供一种用于椭圆曲线密码的倍点运算方法及系统,其能够根据设备资源来动态构造查找表、提高倍点运算的速度。

本发明第一方面提出一种用于椭圆曲线密码的倍点运算方法,该方法包括:参数确定过程、查找表生成过程和倍点运算过程;

参数确定过程:

根据椭圆曲线阶的位数N比特计算椭圆曲线上点(x,y)的占用空间;

设定V比特,依据V比特将椭圆曲线阶的位数N划分为(N+V-1)/V份单元,计算椭圆曲线上点(x,y)的数量;

根据所述椭圆曲线上点(x,y)的数量计算查找表的大小;

根据所述查找表的大小和设备内存大小计算V的最大值;

查找表生成过程:

计算对每个k∈[1,2V-1],依次计算k*2iVG,其中, G为基点;并根据计算的结果生成所述划分的各个单元的查找表,存储于所述设备内存中;

计算N%V,并计算其中,k∈[1,2N%V-1];倍点运算过程:

依据K的取值不同依次从所述划分的各个单元的查找表中获取相应的计算结果并进行点加运算后获得椭圆曲线基点G的K倍点[K]G的点乘结果。

进一步的,所述椭圆曲线上点(x,y)的数量计算具体为:

根据所述椭圆曲线上点(x,y)的数量计算查找表的大小具体为:

根据所述查找表的大小和设备内存大小计算V的最大值具体为:令计算出V的最大值;其中S为设备内存,单位为字节。

进一步的,椭圆曲线上点(x,y)的占用空间为N/4字节。

进一步的,所述倍点运算方法还包括标记设置过程:

将预设V的阈值设置为是否使用查找表进行倍点运算的标记,若V不小于预设的阈值时,则使用查找表进行倍点运算;否则,使用非查找表方法进行倍点运算。

进一步的,在所述标记设置设置过程中,预先通过对使用查找表进行倍点运算和使用非查找表方法进行倍点运算的运算量进行比较来设置V的阈值。

本发明第二方面还提出一种用于椭圆曲线密码的倍点运算系统,所述系统包括:参数确定单元、查找表生成单元和倍点运算单元;

所述参数确定单元包括第一计算模块和划分模块;

所述划分模块,用于将椭圆曲线阶的位数N依据V比特划分为(N+V-1)/V份单元;

所述计算模块,用于根据椭圆曲线阶的位数N比特计算椭圆曲线上点(x,y)占用空间为N/4字节;还用于计算椭圆曲线上点(x,y)的数量;以及用于根据所述椭圆曲线上点(x,y)的数量计算查找表的大小,并通过所述查找表的大小和设备内存大小计算V的最大值;

所述查找表生成单元包括第二计算模块和构造模块;

所述第二计算模块,用于计算对每个k∈[1,2V-1],依次计算k*2iVG,其中,G为基点;并根据计算的结果生成所述划分的各个单元的查找表,存储于所述设备内存中;计算N%V,并计算其中,k∈[1,2N%V-1];

所述构造模块,用于根据计算的结果构造生成所述划分的各个单元的查找表,并存储于所述设备内存中;

所述倍点运算单元包括结果获取模块和点加模块;

所述结果获取模块,用于依据K的取值不同依次从所述划分的各个单元的查找表中获取相应的计算结果;

所述点加模块,用于对获取的各个计算结果进行点加运算后获得椭圆曲线基点G的K倍点[K]G的点乘结果。

进一步的,所述计算模块对所述椭圆曲线上点(x,y)的数量计算具体为:

所述计算模块根据所述椭圆曲线上点(x,y)的数量计算查找表的大小具体为:

所述计算模块根据所述查找表的大小和设备内存大小计算V的最大值具体为:令计算出V的最大值;其中S为设备内存,单位为字节。

进一步的,椭圆曲线上点(x,y)的占用空间为N/4字节。

进一步的,所述倍点运算系统还包括标记单元,所述标记单元包括设置模块和判断模块;

所述设置模块,用于将预设V的阈值设置为是否使用查找表进行倍点运算的标记;

所述判断模块,用于根据设置的所述倍点运算的V的阈值进行判断,若V不小于预设的阈值时,则使用查找表进行倍点运算;否则,使用非查找表方法进行倍点运算。

进一步的,所述标记单元还包括比较模块,用于预先通过对使用查找表进行倍点运算和使用非查找表方法进行倍点运算的运算量进行比较来设置V的阈值。

本发明具有突出的实质性特点和显著的进步,具体的说:

(1)通过椭圆曲线阶的位数N和计算的椭圆曲线上点(x,y)的数量、查找表的大小参数、设备内存大小来计算V比特的最大值;再通过计算的查找表大小、设备资源和计算的V比特的大小进行各个单元的查找表的计算,从而构造生成设备资源相对应的查找表,能够动态地适配不同的设备资源,具有适应性强的特点;

(2)在进行倍点运算的过程中,依据K取值能够通过构造生成的查找表快速获取相应的计算结果进行点加运算,提高倍点运算的计算速度,而且在设备资源较少的情况下也可以使用查找表法进行倍点运算,不受设备资源的限制;

(3)通过设置倍点运算的标记判断是否使用查找表进行倍点运算,保证系统的灵活应用,提高运算速度。

本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1示出本发明一种用于椭圆曲线密码的倍点运算方法流程图;

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

如图1所示,本发明第一方面提出一种用于椭圆曲线密码的倍点运算方法,该方法包括:参数确定过程、查找表生成过程和倍点运算过程;

参数确定过程:

根据椭圆曲线阶的位数N比特计算椭圆曲线上点(x,y)的占用空间;

设定V比特,依据V比特将椭圆曲线阶的位数N划分为(N+V-1)/V份单元,计算椭圆曲线上点(x,y)的数量;

根据所述椭圆曲线上点(x,y)的数量计算查找表的大小;

根据所述查找表的大小和设备内存大小计算V的最大值;

查找表生成过程:

计算对每个k∈[1,2V-1],依次计算k*2iVG,其中, G为基点;并根据计算的结果生成所述划分的各个单元的查找表,存储于所述设备内存中;

计算N%V,并计算其中,k∈[1,2N%V-1];

倍点运算过程:

依据K的取值不同依次从所述划分的各个单元的查找表中获取相应的计算结果并进行点加运算后获得椭圆曲线基点G的K倍点[K]G的点乘结果。

具体的,所述椭圆曲线上点(x,y)的数量计算具体为:

根据所述椭圆曲线上点(x,y)的数量计算查找表的大小具体为:

根据所述查找表的大小和设备内存大小计算V的最大值具体为:令计算出V的最大值;其中S为设备内存,单位为字节。

具体的,若N%V的值为0;在所述参数确定过程中,则将椭圆曲线阶的位数N依据V比特划分为N/V份单元,椭圆曲线上点(x,y)的数量计算具体为:

根据所述椭圆曲线上点(x,y)的数量计算查找表的大小具体为:

根据所述查找表的大小和设备内存大小计算V的最大值具体为:令计算出V的最大值;其中S为设备内存,单位为字节。

需要说明的是,代表的结果取整数,具体为向下取整,例如,则为36。

在具体的实施例中,若椭圆曲线阶的位数N为256比特(N设置为8的整数倍),设备内存为512字节,则椭圆曲线上点(x,y)占用空间为256/4=64字节;

首先,计算椭圆曲线上点(x,y)的数量为:

其次,计算查找表的大小具体为:

得出V的最大值为8比特;

将椭圆曲线阶的位数N=256依据8比特划分为32个单元,相当于要构造生成32个单元的查找表,总共占512KB;

依次计算

KG=k*2iVG=k1*20G+k2*28G+k3*216G+k4*224G+......+k32*2248G,相当于要进行32个点加运算,而32个点的的计算结果已经在构造生成的32个查找表中,仅需要知道每个查找表中K的具体取值,依据K的取值能够快速查找到相应的计算结果,大大提高了计算速度。

在具体的实施例中,若出现N%V的值不为0时,例如将椭圆曲线阶的位数N=256依据7比特划分为37个单元,相当于要构造生成37个单元的查找表,前36个单元中是依据7比特划分的,最高位也就是第37个单元包括4比特:

依次计算

KG=k*2ivG=k1*20G+k2*28G+k3*216G+k4*224G+......+k36*245G+k37*252G,相当于要进行37个点加运算,其中k1至k36的取值范围是[1,27-1],k37的取值范围是[1,24-1]。

需要说明的是,构造生成的查找表可以预先进行构造并预置到设备中,也可以在设备初始化时动态构造查找表。

在实际的应用中,设备端首先调用初始化接口,传递ECC椭圆曲线参数、设备资源等参数;初始化函数负责根据这些参数进行计算,构造出固定点G的倍点运算查找表;之后再调用倍点运算接口时,使用该查找表进行倍点运算的加速运算。

可以理解的是,椭圆曲线阶的位数N如果按照V比特正好划分为整数个单元,每个单元中都是V比特,则N%V的值为0;如果椭圆曲线阶的位数N如果按照V比特划分的时候不能完全整除,则最高位单元中少于V比特,N%V的值不为0,存在有整数部分和余数部分。计算中涉及到(2V-1)是考虑到最最低位不需要做查找表,当然在实际的设计过程中可以采用不减去1的设计方法。

具体的,所述倍点运算方法还包括标记设置过程:

将预设V的阈值设置为是否使用查找表进行倍点运算的标记,若V不小于预设的阈值时,则使用查找表进行倍点运算;否则,使用非查找表方法进行倍点运算。

具体的,在所述标记设置设置过程中,预先通过对使用查找表进行倍点运算和使用非查找表方法进行倍点运算的运算量进行比较来设置V的阈值。

本发明第二方面还提出一种用于椭圆曲线密码的倍点运算系统,所述系统包括:参数确定单元、查找表生成单元和倍点运算单元;

所述参数确定单元包括第一计算模块和划分模块;

所述划分模块,用于将椭圆曲线阶的位数N依据V比特划分为(N+V-1)/V份单元;

所述计算模块,用于根据椭圆曲线阶的位数N比特计算椭圆曲线上点(x,y)占用空间,优选的,椭圆曲线上点(x,y)的占用空间为N/4字节;还用于计算椭圆曲线上点(x,y)的数量;以及用于根据所述椭圆曲线上点(x,y)的数量计算查找表的大小,并通过所述查找表的大小和设备内存大小计算V的最大值;

所述查找表生成单元包括第二计算模块和构造模块;

所述第二计算模块,用于计算对每个k∈[1,2V-1],依次计算k*2iVG,其中,G为基点;并根据计算的结果生成所述划分的各个单元的查找表,存储于所述设备内存中;

计算N%V,并计算其中,k∈[1,2N%V-1];

所述构造模块,用于根据计算的结果构造生成所述划分的各个单元的查找表,并存储于所述设备内存中;

所述倍点运算单元包括结果获取模块和点加模块;

所述结果获取模块,用于依据K的取值不同依次从所述划分的各个单元的查找表中获取相应的计算结果;

所述点加模块,用于对获取的各个计算结果进行点加运算后获得椭圆曲线基点G的K倍点[K]G的点乘结果。

具体的,所述计算模块对所述椭圆曲线上点(x,y)的数量计算具体为:

所述计算模块根据所述椭圆曲线上点(x,y)的数量计算查找表的大小具体为:

所述计算模块根据所述查找表的大小和设备内存大小计算V的最大值具体为:令计算出V的最大值;其中S为设备内存,单位为字节。

具体的,若N%V的值为0,则所述划分模块将椭圆曲线阶的位数N依据V比特划分为N/V份单元,所述计算模块对所述椭圆曲线上点(x,y)的数量计算具体为:

所述计算模块根据所述椭圆曲线上点(x,y)的数量计算查找表的大小具体为:

所述计算模块根据所述查找表的大小和设备内存大小计算V的最大值具体为:令计算出V的最大值;其中S为设备内存,单位为字节。

具体的,所述倍点运算系统还包括标记单元,所述标记单元包括设置模块和判断模块;

所述设置模块,用于将预设V的阈值设置为是否使用查找表进行倍点运算的标记;

所述判断模块,用于根据设置的所述倍点运算的V的阈值进行判断,若V不小于预设的阈值时,则使用查找表进行倍点运算;否则,使用非查找表方法进行倍点运算。

具体的,所述标记单元还包括比较模块,用于预先通过对使用查找表进行倍点运算和使用非查找表方法进行倍点运算的运算量进行比较来设置V的阈值。

本发明通过椭圆曲线阶的位数N和计算的椭圆曲线上点(x,y)的数量、查找表的大小参数、设备内存大小来计算V比特的最大值;再通过计算的查找表大小、设备资源和计算的V比特的大小进行各个单元的查找表的计算,从而构造生成设备资源相对应的查找表,能够动态地适配不同的设备资源,具有适应性强的特点;

在进行倍点运算的过程中,依据K取值能够通过构造生成的查找表快速获取相应的计算结果进行点加运算,提高倍点运算的计算速度,而且在设备资源较少的情况下也可以使用查找表法进行倍点运算,不受设备资源的限制;

通过设置倍点运算的标记判断是否使用查找表进行倍点运算,保证系统的灵活应用,提高运算速度。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:应用程序定制化方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类