System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机应用设计领域,特别涉及一种基于椭圆曲线签名的加密方法、装置、终端及介质。
技术介绍
1、目前有很多需要专用密码设备(例如密码卡或ukey等)使用国密sm2算法完成批量签名的场景。例如用户对大量数据进行签名,用户使用云平台接口提供多个交易数据的签名,使用移动端的协同签名等。由于ukey签名性能通常比较低,移动端小程序协同签名性能也不高,在使用大量或批量签名的场景可能会成为瓶颈。所以本文提出一种基于椭圆曲线签名的加密方法,可以将密码设备的sm2签名的部分运算量交由辅助签名运算设备完成,密码设备仅需完成少量的运算即可。使用密码设备能够保护私钥的安全性,外部无法获取私钥;辅助签名运算设备不会有私钥的参与,也不会泄露私钥,可以使用通用的客户端或多台服务器。例如客户端使用ukey签名或协同签名时,可以使用客户端作为辅助签名运算设备;服务端使用密码卡签名时,可以使用多台服务器作为辅助签名运算设备。同时该方法也适用于其它的椭圆曲线签名算法,例如ecdsa或schnorr等签名算法。
2、国密sm2签名的过程为:
3、获取sm2椭圆曲线的相关参数,sm2在fp上的椭圆曲线有相关确定值的推荐参数(p,n,a,b,xg,yg,h)。其中fp是素域(p为大于3的素数),a与b是fp中的两个元素,满足y2=x3+ax+b。基点g=(xg,yg),是椭圆曲线上的非无穷远点,n是基点g的阶,h是余因子。
4、签名者a的可辨别标识ida,记entla是由ida的比特长度转换成的两个字节。可辨别标识也有相关
5、国密sm2签名的具体步骤为:
6、1、计算za=h256(entla||ida||a||b||xg||yg||xa||ya)。其中h256为国密sm3散列算法;
7、2、计算e=hv(za||m)。其中hv为国密sm3散列算法,得到待签名的散列值e;
8、3、产生随机数k∈[1,n-1];
9、4、计算椭圆曲线点(x1,y1)=[k]*g;
10、5、计算r=(e+x1)mod n,如果r==0或r+k==n则跳转步骤3;
11、6、计算s=((1+da)-1*(k–r*da))mod n,如果s==0则跳转步骤3;
12、7、输出签名值(r,s)。
13、其中步骤1和2可认为是sm2签名预处理,生成待签名的散列值e。该过程并不涉及签名中需保密的参数,可由密码设备外部处理。所以密码设备实际运算是步骤3至6,并输出步骤7的签名结果。其中第6步运算可以优化为s=(t*(k+r)-r)mod n,其中t=(1+da)-1modn。所以步骤5和步骤6的计算量为3次有限域加运算和1次有限域乘运算。
14、当用户想要进行大规模的签名过程时,运算的压力较大,加密算法的性能无法满足需求。
技术实现思路
1、本专利技术旨在对椭圆曲线签名方法进行改进。为此,本专利技术提出一种基于椭圆曲线签名的加密方法,能够提高使用了椭圆曲线签名算法过程中密码设备的签名性能。
2、本专利技术还提出一种具有上述签名加密方法的设备、终端及介质。
3、根据本专利技术的第一方面实施例的基于椭圆曲线签名的加密方法,其特征在于,所述方法应用于至少两个终端,分别为密码端和辅助端:
4、密码端生成若干个不重复的随机数组成私钥组合因子表并存储,依据所述私钥组合因子表计算对应的公钥组合因子表,并将所述公钥组合因子表发送至所述辅助端;
5、密码端基于签名者标识信息和待签名数据计算得到待签名的散列值;
6、密码端生成第一随机数,依据所述第一随机数通过私钥组合因子表计算其结果值,并将所述第一随机数发送至辅助端;
7、辅助端根据所述第一随机数和公钥组合因子表计算得到随机数对应的签名中间值,并将所述签名中间值返回至所述密码端;
8、密码端基于所述结果值和签名中间值计算签名值。
9、根据本专利技术实施例的基于椭圆曲线签名的加密方法,至少具有如下有益效果:该方法以国密sm2加密方法为例,将其中将生成随机数k,并计算[k]*g或[k]*p,的步骤,替换为私钥组合因子表的x个元素组合的有限域加运算和对应的公钥组合因子表的x个元素组合的椭圆曲线的点加运算,并将x个公钥元素组合的椭圆曲线的点加运算交由辅助签名运算设备完成,减少了密码设备的运算次数,提高了大规模签名时候的性能,还不会增加泄密的风险。
10、根据本专利技术的一些实施例,所述密码端基于签名者标识信息和待签名数据计算得到待签名的散列值的步骤,包括:
11、根据签名者的标识信息,与椭圆曲线推荐参数、签名者公钥,使用国密sm3散列算法生成第一杂凑值;
12、将所述第一杂凑值与待签名数据级联并利用国密sm3散列算法生成第二杂凑值,并将所述第二杂凑值作为待签名的散列值。
13、根据本专利技术的一些实施例,所述辅助端通过多台多进和/或线程并行的方式进行处理,根据所述第一随机数从公钥组合因子表选取可重复的n个元素,并行计算n个元素的加法运算。
14、根据本专利技术的一些实施例,所述方法基于移动端实现,包括客户端和服务端,具体包括:
15、客户端生成第一随机数,依据所述第一随机数通过私钥组合因子表计算其对应结果值;
16、服务端获取所述第一随机数,并根据所述第一随机数和公钥组合因子表计算得到所述第一随机数对应的第一签名中间值,并生成第二随机数,基于所述第二随机数和第一签名中间结果值计算得到第二签名中间值;
17、服务端依据所述待签名散列值和所述第二签名中间值计算得到第三签名中间值,并将所述第三签名中间值返回给所述客户端;
18、客户端基于所述第三签名中间值和第一结果值计算签名值,用于替换原签名算法中的随机数和点乘结果并计算签名值。
19、根据本专利技术的第二方面实施例的基于椭圆曲线签名的加密装置,其特征在于,该装置包括至少两个终端,分别为密码端和辅助端:
20、密码端中的初始化模块,能够生成若干个不重复的随机数组成私钥组合因子表并存储,依据所述私钥组合因子表计算对应的公钥组合因子表,并将所述公钥组合因子表发送至所述辅助端;
21、密码端中的预处理模块,能够基于签名者标识信息和待签名数据计算得到待签名的散列值;
22、密码端中的私钥计算模块,能够能够生成随机数,依据所述随机数通过私钥组合因子表计算其对应结果值,并将所述结果值发送至辅助端;
23、辅助端中的中间签名模块,能够根据所述随机数和公钥组合因子表计算得到随机数对应的签名中间值,并将所述签名中间值返回至所述密码端;
24、密码端中的签名结合模块,能够基于所述签名中间值计算签名值,,用于替换原签名算法中的随机本文档来自技高网...
【技术保护点】
1.一种基于椭圆曲线签名的加密方法,其特征在于,所述方法应用于至少两个终端,分别为密码端和辅助端:
2.根据权利要求1所述的方法,其特征在于,所述密码端基于签名者标识信息和待签名数据计算得到待签名的散列值的步骤,包括:
3.根据权利要求1所述的方法,其特征在于,所述辅助端通过多台多进和/或线程并行的方式进行处理,根据所述第一随机数从公钥组合因子表选取可重复的N个元素,并行计算N个元素的加法运算结果。
4.根据权利要求1所述的方法,其特征在于,所述方法基于移动端实现,包括客户端和服务端,具体包括:
5.一种基于椭圆曲线签名的加密方法装置,其特征在于,该装置包括至少两个终端,分别为密码端和辅助端:
6.根据权利要求5所述的装置,其特征在于,所述预处理模块,包括:
7.根据权利要求5所述的装置,其特征在于,所述辅助端通过多台多进和/或线程并行的方式进行处理,根据所述第一随机数从公钥组合因子表选取可重复的N个元素,并行计算N个元素的加法运算结果。
8.根据权利要求5所述的装置,其特征在于,所述装置基于移动
9.一种终端,包括:存储器、处理器及存储在该存储器上并可在该处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1至4中任一项所述的方法。
10.一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1至4中任一项所述的方法。
...【技术特征摘要】
1.一种基于椭圆曲线签名的加密方法,其特征在于,所述方法应用于至少两个终端,分别为密码端和辅助端:
2.根据权利要求1所述的方法,其特征在于,所述密码端基于签名者标识信息和待签名数据计算得到待签名的散列值的步骤,包括:
3.根据权利要求1所述的方法,其特征在于,所述辅助端通过多台多进和/或线程并行的方式进行处理,根据所述第一随机数从公钥组合因子表选取可重复的n个元素,并行计算n个元素的加法运算结果。
4.根据权利要求1所述的方法,其特征在于,所述方法基于移动端实现,包括客户端和服务端,具体包括:
5.一种基于椭圆曲线签名的加密方法装置,其特征在于,该装置包括至少两个终端,分别为密码端和辅助端:
6.根据权...
【专利技术属性】
技术研发人员:郑杰骞,钟源,王申,刘培,赵晋,周勇,
申请(专利权)人:航天信息股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。