一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理方法、片上系统和计算设备与流程

2022-11-12 11:00:08 来源:中国专利 TAG:


1.本技术涉及信息安全技术领域,具体涉及一种数据处理方法、片上系统和计算设备。


背景技术:

2.椭圆曲线加密算法(ellipse curve ctyptography,ecc),是一种公钥加密技术,以椭圆曲线理论为基础,实现信息加密及解密和数字签名及验签。其中,椭圆曲线多倍点运算是椭圆曲线群中开销最大的运算,相关技术中,片上系统在执行椭圆曲线多倍点运算时,运算效率较差。


技术实现要素:

3.有鉴于此,本技术实施例提供一种数据处理方法、片上系统和计算设备,以提高片上系统执行椭圆曲线基点多倍点运算的运算效率。
4.第一方面,提供了一种数据处理方法,所述方法应用于片上系统,所述片上系统包括控制单元、密码引擎单元以及存储单元,所述控制单元、所述密码引擎单元以及所述存储单元依次相连,所述密码引擎单元搭载了一种或多种密码运算,所述一种或多种密码运算包括基于椭圆曲线的第一密码运算,所述方法包括:所述密码引擎单元接收所述控制单元的调用指令,所述调用指令用于调用所述密码引擎单元执行所述第一密码运算;所述密码引擎单元从所述存储单元中获取预计算信息,所述预计算信息记录了一个或多个数值与椭圆曲线基点的倍点运算结果;所述密码引擎单元根据所述一个或多个数值与椭圆曲线基点的倍点运算结果,计算所述第一密码运算中的多倍点运算的运算结果。
5.本技术实施例在计算椭圆曲线多倍点运算时,片上系统中的密码引擎单元可以查询预先存储的一个或多个数值与椭圆曲线基点的预计算结果,并根据查询到的预计算结果加速椭圆曲线多倍点运算,这样一来,就避免了在线进行复杂的多倍点运算,有助于提高片上系统的运算效率。
6.可选地,所述预计算信息包括m进制下的n个进制位中的每个进制位对应的预计算子信息,所述每个进制位对应的预计算子信息包括所述每个进制位的m种取值与椭圆曲线基点的倍点运算结果,其中m和n均为大于1的正整数,所述密码引擎单元根据所述预计算信息,执行所述第一密码运算中的多倍点运算,包括:所述密码引擎单元对数值k进行m进制分解,得到所述n个进制位的目标值,其中k表示多倍点运算的倍数;所述密码引擎单元根据所述n个进制位的目标值,分别查询所述n个进制位对应的预计算子信息,得到n个倍点运算结果;所述密码引擎单元对所述n个倍点运算结果进行点加运算,得到所述多倍点运算的运算结果。
7.为了节省存储空间并实现高效运算,本技术预先存储多倍点运算的倍数k基于m进制分解后,得到的n个进制位对应的预计算子信息。在执行多倍点运算时,根据每个进制位的取值,在预计算子信息中查找倍点运算结果。根据n个倍点运算结果,将多倍点运算转化
为点加运算,避免片上系统执行倍点运算,有利于进一步提高运算效率。
8.可选地,所述m等于2的q次幂,其中q的取值小于等于16。
9.本技术中,将椭圆曲线多倍点运算的倍数k基于m进制分解,得到n个进制位,其中,m等于2的q次幂。随着q取值的增加,n的值越小,点加运算的次数越少,但是预计算信息所占内存空间越大。当q的取值小于等于16,能够有效均衡点加运算的次数和存储预计算信息所占内存空间的大小。
10.可选地,q的取值为8。
11.进一步的,q的取值为8,以更好的平衡点加运算的次数和存储预计算信息所占内存空间的大小。
12.可选地,所述第一密码运算为基于椭圆曲线运算的数字签名运算,所述调用指令还包括待签名的消息,所述密码引擎单元根据所述一个或多个数值与椭圆曲线基点的倍点运算结果,计算所述第一密码运算中的多倍点运算的运算结果,包括:所述密码引擎单元根据所述一个或多个数值与椭圆曲线基点的倍点运算结果,计算所述数字签名运算中的多倍点运算的运算结果;所述方法还包括:所述密码引擎单元根据所述多倍点运算的运算结果,计算所述消息的数字签名。
13.本技术实施例提供的数据处理方案,可以应用于数字签名运算中,以提高片上系统执行数字签名运算的效率。
14.可选地,所述方法还包括:所述密码引擎单元向所述控制单元发送所述数字签名。
15.本技术中密码引擎单元还可以向控制单元发送已生成的数字签名,便于控制单元将数字签名发送给请求签名的用户。
16.可选地,所述第一密码运算为基于椭圆曲线运算的签名验签运算,所述调用指令还包括待验证的数字签名,所述密码引擎单元根据所述一个或多个数值与椭圆曲线基点的倍点运算结果,计算所述第一密码运算中的多倍点运算的运算结果,包括:所述密码引擎单元根据所述一个或多个数值与椭圆曲线基点的倍点运算结果,计算所述签名验签运算中的多倍点运算;所述方法还包括:所述密码引擎单元根据所述多倍点运算的运算结果,计算所述数字签名的验签结果。
17.本技术实施例提供的数据处理方案,可以应用于数字签名验签运算中,以提高片上系统执行数字签名验签运算的效率。
18.可选地,所述方法还包括:所述密码引擎单元向所述控制单元发送所述数字签名的验签结果。
19.本技术中密码引擎单元还可以向控制单元发送数字签名的验签结果,便于控制单元将数字签名验签结果发送给请求验签的用户。
20.第二方面,提供了一种片上系统,包括控制单元和密码引擎单元,所述控制单元与所述密码引擎单元相连,所述密码引擎单元搭载了一种或多种密码运算,所述密码引擎单元用于接收所述控制单元的调用指令,以执行如第一方面所述的方法。
21.第三方面,提供了一种计算设备,其特征在于,包括如第二方面所述的片上系统。
22.第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面中的方法。
23.第五方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当
所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面中的方法。
附图说明
24.图1为本技术实施例提供的一种片上系统的硬件架构示意图。
25.图2为本技术实施例提供的一种数据处理方法的流程示意图。
26.图3为本技术实施提供的另一种数据处理方法的流程示意图。
27.图4为本技术实施例提供的一种片上系统的数据处理流程示意图。
28.图5为本技术实施例提供的另一种片上系统的数据处理流程示意图。
29.图6为本技术实施例提供的另一种片上系统的硬件架构示意图。
30.图7为本技术实施例提供的一种计算设备的结构示意图。
具体实施方式
31.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。
32.椭圆曲线加密算法(ellipse curve ctyptography,ecc),是一种公钥加密技术,以椭圆曲线理论为基础,实现信息加密及解密和数字签名及签名验签。sm2椭圆曲线公钥密码算法是ecc算法的一种。sm2系列算法不仅是国密算法的重要组成部分,还是我国网络空间安全的核心技术之一。sm2数字签名算法能够使用较短长度秘钥的同时提供较高的安全性。
33.首先对椭圆曲线加密算法进行简单介绍。椭圆曲线加密算法是基于椭圆曲线数学理论实现的一种非对称加密算法。椭圆曲线可以为的曲线,其中,a、b为椭圆曲线的参数。椭圆曲线加密算法涉及到椭圆曲线的点加运算及倍点运算。椭圆曲线的点加运算可以表示椭圆曲线上a点和b点的点加,用运算式a b表示;椭圆曲线的倍点运算可以分为2倍点运算及多倍点运算。其中,2倍点运算用于表示椭圆曲线上a点和a点的点加,用运算式2a表示,多倍点运算用于表示k个椭圆曲线上的a点的点加,用运算式[k]a表示,其中k为椭圆曲线多倍点运算的倍数。
[0034]
在电子商务等网络环境下,在进行网上交易时,需要在买方、卖方及中间服务商之间进行信息交换,将各交易行为汇集在一起,交易行为例如可以是签订合同、订购、付费等。为了保证交易的合法性,需要交易各方能够提供唯一鉴别各自具有法律效应的数字签名,以确认签名者的身份及数据的完整性。
[0035]
下面对基于椭圆曲线加密算法的数字签名算法进行介绍。设待签名的信息为m,信息m的数字签名为(r,s),其中r为数字签名的第一分量,s为数字签名的第二分量。
[0036]
生成数字签名的过程包括:在步骤1,置。
[0037]
为签名者用户a的杂凑值,在一些实施例中,,其中,用于标识用户a的身份标识、为用户身份标识、a、b分别为椭圆曲线的参数,为椭圆曲线素数域中的元素、、为椭圆曲线上基点g的坐标、、为用户a的公钥的坐标。用户a的密钥对包括用户a的私钥和用户a的公钥。表示将签名
者用户a的杂凑值及待签名信息进行拼接,和m可以分别为比特串或字节串。
[0038]
在步骤2,计算。
[0039]
将e的数据类型转化为整数,即计算待加密的信息m及的杂凑值e。
[0040]
在步骤3,用随机数发生器产生随机数k,。
[0041]
随机发生器可以是国家密码管理局批准的随机数发生器。该随机数k为用于对签名信息m进行数字签名的私钥。在一些实施例中,私钥k为192-256位的二进制大整数,即私钥k从低位到高位依次包括192-256位进制数。
[0042]
在步骤4,计算用于对签名信息m进行数字签名的公钥,=[k]g。
[0043]
在步骤5,计算数字签名(r,s)。
[0044]
数字签名中的第一分量,若或,则返回步骤3。
[0045]
数字签名中的第二分量,若,则返回步骤3。
[0046]
在步骤6,返回信息m的数字签名(r,s)。
[0047]
对于接收到的消息及该消息的数字签名(,),验证数字签名的过程包括:在步骤1,对接收的数字签名(,)进行检验。
[0048]
具体的,检验是否成立,若不成立则验证不通过;检验是否成立,若不成立则验证不通过。
[0049]
在步骤2,置。
[0050]
在步骤3,计算。
[0051]
在步骤4,计算,若,则验证不通过。
[0052]
在步骤5,计算椭圆曲线点(,),(,)=。
[0053]
在步骤6,计算,检验是否成立,若成立则验证通过;否则验证不通过。
[0054]
ecc加密算法中,例如上述数字签名及验签算法中,主要涉及椭圆曲线点加运算、椭圆曲线二倍点运算及椭圆曲线多倍点运算。其中,椭圆曲线多倍点运算是椭圆曲线群中开销最大的运算,其计算效率决定了加密算法的性能表现。椭圆曲线多倍点运算例如可以是上述签名运算中步骤3,计算用于对签名信息m进行数字签名的公钥(),()=[k]g,以及验证运算中的步骤5,计算椭圆曲线点(,),(,)=。由于ecc加密算法中大量且复杂的椭圆曲线运算,尤其是椭圆曲线倍点运算,频繁海量的椭圆曲线多倍点运算会给服务器带来极大的计算处理压力,造成服务质量下降甚至系统崩溃等问题。
[0055]
为了提高椭圆曲线倍点运算的运算效率,降低服务器的处理压力,相关技术提供了两种椭圆曲线倍点运算的快速计算方法。一种是基于大数非相邻形式(non-adjacent form, naf)的优化算法,另一种是基于滑动窗口的优化算法。下面对相关技术提出的优化算法进行简单的介绍。naf优化算法及基于滑动窗口的优化算法都是在二进制算法上的优化。在二进制算法中,将用于数字签名的私钥k可以表示为如下形式:
式中,l为k的进制位数,为第i位的系数,,例如,对于256位的大整数k,可以表示为:则[k]g可以表示为:硬件,例如片上系统,在执行上述计算时,从l-1依次至0,计算,之后将的各项加起来。这种方法需要l-1次2倍点运算及w-1次点加运算,其中,w为中非零的个数。naf优化算法通过对k的编码方式进行优化,减少进制位中取值为1的数量,以减少点加的次数。滑动窗口优化算法通过跳过进制位中取值为0的方式,减少运算量。
[0056]
然而,在椭圆曲线素数域下,相关技术提供的优化算法对计算效率的提升有限,还需进一步提升。以k为256位大整数为例,naf算法在计算该椭圆曲线倍点运算时,大约需要256次椭圆曲线二倍点运算和85次点加运算。滑动窗口优化算法在预算阶段需要1次二倍点运算和次点加运算,主循环需要255次二倍点运算和次点加运算,其中为窗口宽度。
[0057]
为了进一步提升片上系统执行椭圆曲线多倍点运算的运算效率,本技术实施例提供一种数据处理方法、片上系统和计算设备。
[0058]
如前文提到,ecc加密算法中,椭圆曲线倍点运算是椭圆曲线群中开销最大的运算,因此,本技术通过预先存储的用于计算椭圆曲线倍点运算的预计算信息,提高多倍点运算的计算效率。下面结合具体实施例对本技术进行介绍。
[0059]
图1为本技术实施例提供的一种片上系统的硬件架构示意图。图1所示的片上系统100可以设置于计算设备中。该片上系统100可以包括控制单元110,密码引擎单元120、以及存储单元130。控制单元110、密码引擎单元120、以及存储单元130依次相连。密码引擎单元120搭载了一种或多种密码运算,一种或多种密码运算例如可以是基于椭圆曲线的数字签名算法、基于椭圆曲线的数字签名验签算法、以及基于椭圆曲线的信息加密算法等。其中,基于椭圆曲线的数字签名或签名验签算法例如可以是sm2国密算法。
[0060]
控制单元110例如可以是处理器(亦或者是处理器核),控制单元110用于接收密码运算的请求,及返回密码运算的结果。控制单元110还用于向密码引擎单元120发送调用指令,调用指令用于调用密码引擎单元120执行密码运算。以数字签名及验签算法为例,在签名时,用户发起签名请求时,控制单元110收到用户的请求后,可以调用密码引擎单元120请求sm2算法进行签名操作。控制单元110还可以接收密码引擎单元120发送的数字签名的结果,并将签名结果返回给请求签名的用户;在验签时,用户发起验签请求时,控制单元110收
到用户的请求后,可以调用密码引擎单元120请求sm2算法进行验签操作。控制单元110还可以接收密码引擎单元120发送的验签结果,并将验签结果返回给请求验签的用户。
[0061]
存储单元130例如可以是静态随机存储器(static random-access memory,sram),例如还可以是动态随机存取存储器(dynamic random access memory,dram),应当理解,本技术对存储单元130的具体形式不做限定,可以根据实际的应用场景灵活选择。
[0062]
存储单元130存储记录一个或多个数值与椭圆曲线基点的倍点运算的预计算结果。换句话说,存储单元130存储了一个或多个[k]g的预计算结果,其中g为椭圆曲线加密算法中的基点,k为任意整数。换句话说,存储单元存储了一个或多个取值的k与基点g的椭圆曲线倍点运算的运算结果。
[0063]
密码引擎单元120位于控制单元110与存储单元130之间,用于响应于控制单元110的调用指令,从存储单元130获取预计算结果,根据预计算结果,执行多倍点运算。在一些实施例中,密码引擎单元120为密码加速引擎,该密码加速引擎上搭载了sm2签名验签算法。
[0064]
下面结合图2对密码引擎单元进行示例性介绍。图2为本技术实施例提供的一种数据处理方法的流程示意图。图2所示的数据处理流程可以由密码引擎单元120执行。
[0065]
在步骤s210,接收控制单元的调用指令。
[0066]
密码引擎单元接收控制单元的调用指令,该调用指令用于调用密码引擎执行第一密码运算。如前文提到,密码引擎单元搭载了一种或多种基于椭圆曲线的密码运算,第一密码运算为前文提到的一种或多种密码运算中的一种。第一密码运算例如可以是基于椭圆曲线运算的数字签名运算,例如还可以是基于椭圆曲线运算的签名验签运算。
[0067]
在步骤s220,从存储单元中获取预计算结果。
[0068]
如前文介绍,存储单元存储了一个或多个[k]g的预计算结果,其中g为椭圆曲线加密算法中的基点,k为椭圆曲线多倍点运算的倍数,k为任意整数。从存储单元中获取一个或多个预计算结果,该预计算结果用于计算第一密码运算的多倍点运算。
[0069]
在步骤s230,根据一个或多个数值与椭圆曲线基点的倍点运算结果,计算第一密码运算中的多倍点运算。
[0070]
一个或多个[k]g的预计算结果可以是用于计算第一密码运算的多倍点运算的中间结果,即根据一个或多个中间结果计算第一密码运算中的多倍点运算。
[0071]
可见,在计算椭圆曲线多倍点运算时,片上系统中的密码引擎单元能查询预先存储的一个或多个数值与椭圆曲线基点的预计算结果,根据预计算结果加速椭圆曲线多倍点运算,这样,可以避免在线执行复杂的多倍点运算,有助于提高片上系统的运算效率。
[0072]
在一些实施例中,可以将椭圆曲线多倍点运算的倍数k进行m进制分解。基于m进制分解之后,可以得到n个进制位,其中,m和n是大于1的正整数。话句话说,对于任意倍数k,可以表示为m进制的形式,基于m进制展开后,倍数k可以由下面的公式表达:其中,,话句话说,m进制可以为进制。以倍数k为256位二进制大整数为例,基于2进制分解时,k可以分解为256个进制位;基于4进制分解时,k可以分解为128个进制位;基于16进制分解时,k可以分解为64个进制位;基于256进制分解时,k可以分为32个进制位

等。继续以倍数k为192位二进制大整数为例,对k进行4进制分解,可以得到96个进制位;对k进行8进制分解,可以得到64个进制位;对k进行64进制分解,可以得到32个进制位

等。
[0073]
n个进制位中的每个进制位表示该进制下的一个进制位。例如,将256位二进制大整数k,基于256进制分解为32个进制位,其中,一个进制位表示256进制中的一位,32个进制位表示256进制中的32位。在一些实施例中,可以用8个二进制位表示256进制中一位。在256进制中,一位进制位的取值范围为[0,256)。
[0074]
如此,椭圆曲线倍点运算[k]g可以表示为:可以对上式中的每项,做预计算,并将预计算结果存储在存储单元中。由于在中,进制位有m种不同的取值,因此,可以做每个进制位的m种取值与椭圆曲线基点的倍点运算结果,将m种预计算结果作为每个进制位的预计算子信息。
[0075]
以倍数k为256位二进制大整数为例,基于256进制分解时,k可以分为32个进制位,k可以表示为:椭圆曲线倍点运算[k]g可以表示为:因此,可以预先计算、、、等32个进制位的预计算结果。因为,32个进制位中的每个进制位有256种取值,因此,对于每一个进制位需要计算该进制位下256种取值与椭圆曲线g的倍点预计算子信息。以从低位到高位,第32个进制位为例,需要计算,其中,。
[0076]
以倍数k为256位二进制大整数为例,基于16进制,分为64个进制位,k可以表示为:椭圆曲线倍点运算[k]g可以表示为:因此,可以预先计算、、、

,64个进制位的预计算结果。因为,64个进制位中的每个进制位有16种取值,因此,对于每一个进制位需要计算该进制位下16种取值与椭圆曲线g的倍点预计算子信息。以从低位到高位,第64个进制位为例,需要计算,其中,。
[0077]
在一些实施例中,可以使用查找表存储预计算信息。示例性的,可以为n个进制位中的每个进制位建立预计算表,每个预计算表可以有j项,j,第i个表的第j项可以用t[i][j]表示。。椭圆曲线倍点运算[k]g可以进一步表示为:
以倍数k为256位二进制大整数,基于256进制分解为例,可以制作32个查找表,用于存储上述的32个的运算的预计算信息。由于每个的取值在0~255之间,因此,每个查找表共有256项。其中,第j项表示为。示例性的,第13个查找表记录的是,有256种取值,因此,该查找表中记录了,共256项椭圆曲线的倍点运算的预计算子信息。
[0078]
以倍数k为256位二进制大整数,基于为进制分解为例,可以制作16个查找表,每个查找表共有16项。即对于第i个查找表,共有项,其中,第j项表示为。示例性的,第13个查找表记录的是,有种取值,因此,该查找表中记录了,共项椭圆曲线的倍点运算的预计算子信息。
[0079]
下面结合图3对本技术实施例提供的数据处理方法进行进一步地说明。
[0080]
在步骤s310,对椭圆曲线多倍点运算的倍数k进行m进制分解,得到n个进制位的目标值。
[0081]
多倍点运算的倍数k,例如可以是用于进行数字签名运算的私钥k,例如也可以是进行数字签名验签的第二数字签名分量。
[0082]
如前文提到,对椭圆多倍点运算的倍数k进行m进制分解时,可以得到n个进制位,m和n是大于1的整数。以数字签名算法中的私钥k为例,对于一个256位的大整数k可以基于256进制进行分解,得到32个进制位以及每个进制位的取值,其中,进制位的取值为进制位的目标值。换句话说,对一个256位的大整数k,基于256进制分解之后,可得到32个进制位,以及32个进制位的具体取值。
[0083]
在步骤s320,根据n个进制位的目标值,分别查询n个进制位对应的预计算子信息,得到n个倍点运算结果。
[0084]
根据进制位的具体取值,查询该进制位对应的预计算子信息,得到该进制位的倍点预计算结果。换句话说,可以以进制位的取值为索引,查询该进制位对应的预计算子信息。对于n个进制位,可以分别查询,得到n个倍点运算的结果。
[0085]
下面以预计算信息存储在查找表为例,说明一下查询的过程。
[0086]
在执行椭圆曲线倍点运算[k]g时,可以将k分解为n个进制位,之后,在第i个进制位的查找表中,根据第i个进制位的取值j在表中索引查找,从而找到第i个进制位的取值j与椭圆曲线基点g的倍点运算结果,即。对于n个进制位,都可以根据上述映射关系,找到n个进制位的取值与椭圆曲线基点的倍点运算结果。
[0087]
以多倍点运算的倍数k为256位大整数,n=32为例,n个进制位可以为()。示例的,可以根据进制位的具体取值,在进制位对应的预计算子信息中,查找的预计算信息,该计算子信息例如可以存储在查找表中。可以根据进制位的具体取值,在进制位对应的预计算子信息中,查找的预计算信息,该计算子信
息例如可以存储在查找表中。依次类推,可以根据32个进制位的具体的取值,在每个进制位对应的预计算信息中,找到32个倍点运算结果。
[0088]
在步骤s330,对n个倍点运算结果进行点加运算,得到多倍点运算的运算结果。
[0089]
由于,椭圆曲线倍点运算[k]g可以表示为:因此,对n个倍点运算结果进行点加运算,可以得到多倍点运算的运算结果。
[0090]
以多倍点运算的倍数k为256位大整数,n=32为例,将上述32个倍点运算结果进行点加运算,可以得到该多倍点运算的运算结果。
[0091]
本技术将椭圆曲线多倍点运算的倍数k基于m进制分解为n个进制位,并预先存储n个进制位对应的预计算子信息,在执行多倍点运算时,根据n个进制位的取值,查询预先存储的预计算信息,将多倍点运算转化为n个倍点运算的点加运算,大大减少了椭圆曲线基点的多倍点运算的次数,有助于提高片上系统的运算效率。
[0092]
如前文提到,椭圆曲线多倍点运算的倍数k,基于m进制分解之后,可以得到n个进制位,其中。随着q的增加,进制位n的数量线性减少。表1列出了不同进制下存储预计算信息所占的内存空间的大小。
[0093]
表1如表1,q分别为2、4、8、16、32时,n的取值分别为128、64、32、16、8。虽然进制位n的数量减少了,但是n个进制位对应的预计算信息增多了,因此导致存储占用的空间爆炸性的增长。如表1中,当m从指数倍增为时,进制位的数量从16为减少到8位。但是在进制中,每个进制位的取值有种,也就是说每个进制位需要存储种预计算子信息,在进制中,每个进制位的取值有种,也就是说每个进制位需要存储种预计算子信息。进制位的位数虽然少了一半,但是存储所占的空间是之前的32768倍。为了均衡点加运算的次数和内存空间的大小,因此,q的取值为小于或等于16。在一些实施例中,综合衡量点加次数及预计算信息所占内存空间的大小,q的取值为8,即m进制为256进制。
[0094]
当控制单元接收到用户的数字签名或签名验签请求时,控制单元向密码引擎单元发送调用指令,响应于该调用指令,密码引擎单元执行数字签名或签名验签运算,该调用指令中还包括待签名的消息或待验证的数字签名。密码引擎单元在执行完数字签名或签名验签中的椭圆曲线倍点运算之后,还可以计算待签名消息的数字签名或计算数字签名的验签结果。下面分别结合数字签名及签名验签的过程,对本技术实施例提供的数据处理方法进行介绍。
[0095]
设待签名的消息m,为了得到消息m的数字签名(r,s),作为签名者的用户a应实现以下步骤。
[0096]
在步骤1,置。
[0097]
在步骤2,计算。
[0098]
在步骤3,用随机数发生器产生随机数k,。
[0099]
在步骤4,将大整数k分解为256进制的字节序列,即,然后调用31次椭圆曲线点加运算,通过查询32个预计算表计算多倍点运算[k]g,即,在步骤5,计算数字签名(r,s)。
[0100]
数字签名中的第一分量,若或,则返回步骤3。
[0101]
数字签名中的第二分量,若,则返回步骤3。
[0102]
在步骤6,返回信息m的数字签名(r,s)。
[0103]
对于接收到的消息及该消息的数字签名(,),验证数字签名的过程包括:在步骤1,对接收的数字签名(,)进行检验。
[0104]
具体的,检验是否成立,若不成立则验证不通过;检验是否成立,若不成立则验证不通过。
[0105]
在步骤2,置。
[0106]
在步骤3,计算。
[0107]
在步骤4,计算,若,则验证不通过。
[0108]
在步骤5,将大整数分解为256进制的字节序列,即,然后调用31次椭圆曲线点加运算,通过查询32个预计算表计算多倍点运算[]g,即=在步骤6,计算椭圆曲线点(,),(,)= 。
[0109]
在步骤7,计算,检验是否成立,若成立则验证通过;否则验证不通过。
[0110]
由上述计算过程可以看出,本技术将256位大整数表示为256进制下的字节序列,在本地预先计算并存储32个椭圆曲线基点的多倍点运算查找表。在sm2数字签名或验签过程中,通过查询32个预计算表,仅需调用31次椭圆曲线点加运算即可完成椭圆曲线基点的多倍点运算,大大减少了椭圆曲线基点的运算次数,能够有效提升片上系统sm2算法的签名性能。
[0111]
图4为本技术实施例提供的一种片上系统数据处理流程示意图,图4所示的片上系统为本技术实施例提供的片上系统100的一种可能实现方式,片上系统包括控制单元410,密码加速引擎420、存储单元430,密码加速引擎420中搭载了sm2签名验签算法。如图4所示,用户发起签名请求,控制单元410收到用户的签名请求之后,调用密码加速引擎420请求sm2算法进行签名操作。密码加速引擎420访问存储单元430获取预计算表,将其作为参数传递给sm2数字签名函数并执行sm2数字签名算法。密码加速引擎420接收到sm2数字签名的执行结果后,将签名结果返回给控制单元410。签名结果经由控制单元410返回给请求签名的用户。
[0112]
图5为本技术实施例提供的另一种片上系统数据处理流程示意图,图5所示的片上系统为本技术实施例提供的片上系统100的另一种可能实现方式,片上系统包括控制单元
510,密码加速引擎520、存储单元530,密码加速引擎520中搭载了sm2签名验签算法。如图5所示,用户发起验签请求,控制单元510接收到用户请求后,调用密码加速引擎520请求sm2算法进行验签操作,密码加速引擎520访问存储单元530获取预计算表,将其作为参数传递给sm2数字验签函数并执行sm2数字验签算法。密码加速引擎520接收到sm2验签函数返回的验签结果后,经由控制单元510将验签结果返回给用户。
[0113]
图6为本技术实施例提供的另一种片上系统的硬件架构示意图。图6所示的片上系统600包括控制单元610和密码引擎单元620。控制单元610与密码引擎单元620相连,密码引擎单元620搭载了一种或多种密码运算,密码引擎单元620用于接收控制单元610的调用指令,以执行前文所述的任意一种数据处理方法。
[0114]
图7为本技术实施例提供的一种计算设备的结构示意图。图7所示的计算设备700包括片上系统710,片上系统710可以是前文中提到的任意一种片上系统。计算设备700可以是计算机设备,该计算机设备例如可以是用于执行密码运算的服务器。
[0115]
应理解,在本技术实施例中,“与a相应的b”表示b与a相关联,根据a可以确定b。但还应理解,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其它信息确定b。
[0116]
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0117]
应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0118]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0119]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0120]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0121]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字
用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,dvd))或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
[0122]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献