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

技术编号:25269922 阅读:23 留言:0更新日期:2020-08-14 23:03
本发明专利技术提出一种用于椭圆曲线密码的倍点运算方法,包括:根据椭圆曲线阶的位数N比特计算椭圆曲线上点(x,y)占用空间;将椭圆曲线阶的位数N依据V比特划分为(N+V‑1)/V份单元,计算椭圆曲线上点(x,y)的数量和查找表的大小;根据查找表的大小和设备内存大小计算V的最大值;计算

【技术实现步骤摘要】
一种用于椭圆曲线密码的倍点运算方法及系统
本专利技术涉及密码
,具体涉及一种用于椭圆曲线密码的倍点运算方法及系统。
技术介绍
椭圆曲线密码(EllipticCurveCryptography,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参数确定过程:/n根据椭圆曲线阶的位数N比特计算椭圆曲线上点(x,y)的占用空间;/n设定V比特,依据V比特将椭圆曲线阶的位数N划分为(N+V-1)/V份单元,计算椭圆曲线上点(x,y)的数量;/n根据所述椭圆曲线上点(x,y)的数量计算查找表的大小;/n根据所述查找表的大小和设备内存大小计算V的最大值;/n查找表生成过程:/n计算

【技术特征摘要】
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的点乘结果。


2.根据权利要求1所述的倍点运算方法,其特征在于,所述椭圆曲线上点(x,y)的数量计算具体为:
根据所述椭圆曲线上点(x,y)的数量计算查找表的大小具体为:



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


3.根据权利要求1或2所述的倍点运算方法,其特征在于,椭圆曲线上点(x,y)的占用空间为N/4字节。


4.根据权利要求1所述的倍点运算方法,其特征在于,所述倍点运算方法还包括标记设置过程:
将预设V的阈值设置为是否使用查找表进行倍点运算的标记,若V不小于预设的阈值时,则使用查找表进行倍点运算;否则,使用非查找表方法进行倍点运算。


5.根据权利要求4所述的倍点运算方法,其特征在于,在所述标记设置设置过程中,预先通过对使用查找表进行倍点运算和使用非查找表方法进行倍点运算的运算量进行比较来设置V的阈值。


6.一种用于椭圆曲线密码的倍点运算系统,其特征在于,所述系统包括:参数确定单元、查找表生成单元和倍点运算单元;
所述参数确定单元包括第一计算模块和划分模块;
所述划分模块,用于将椭圆曲线阶的位数...

【专利技术属性】
技术研发人员:彭金辉张朝阳雷宗华廖正赟刘武忠卫志刚
申请(专利权)人:郑州信大捷安信息技术股份有限公司
类型:发明
国别省市:河南;41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1