本发明涉及固态硬盘,更具体地说是一种ssd的国密sm2签名验证方法及系统。
背景技术:
目前,数据安全越来越受到人们的重视,具有加密功能的ssd(solidstatedrives固态硬盘)应用日益广泛,但目前的具有加密功能的ssd实现国密sm2签名验证需要消耗较大的存储空间,占用cpu资源,软件控制复杂,且工作效率低。
技术实现要素:
本发明的目的在于克服现有技术的不足,提供一种ssd的国密sm2签名验证方法及系统。
为实现上述目的,本发明采用以下技术方案:一种ssd的国密sm2签名验证方法,所述方法包括:
获取ahb总线发送的配置数据;
对配置数据进行处理;
将处理后得到的相关参数进行点乘运算;
利于点乘运算得到的数据进行签名计算,得到带有签名信息的计算值;
验证带有签名信息的计算值,并将验证结果保存。
其进一步技术方案为:所述对配置数据进行处理的步骤,具体包括以下步骤:
解析配置数据;
将解析后的数据送入核心控制单元。
其进一步技术方案为:所述将处理后得到的相关参数进行点乘运算的步骤,具体包括以下步骤:
核心控制单元调用点乘运算单元和模逆计算单元进行运算,其中,所述点乘运算单元包括点加计算和倍点计算;
点乘运算单元调用点乘基本计算单元、乘法运算单元以及带pipeline的模fx运算单元进行运算。
其进一步技术方案为:所述利于点乘运算得到的数据进行签名计算,得到带有签名信息的计算值的步骤,具体包括以下步骤:
获取点乘运算得到的计算值和私钥随机数;
核心控制单元调用模n运算单元进行加模、乘模以及模逆计算;
模n运算单元控制模n的除法运算单元和乘法运算单元进行运算。
其进一步技术方案为:所述验证带有签名信息的计算值,并将验证结果保存的步骤,具体包括以下步骤:
获取寄存器中最新计算得到的值;
将新的计算值与寄存器中带有签名信息的计算值进行比较;
若数值相同,则验证通过;
若数值不同,则验证不通过。
一种ssd的国密sm2签名验证系统,所述系统包括获取单元、处理单元、运算单元、签名计算单元以及验证单元;
所述获取单元,用于获取ahb总线发送的配置数据;
所述处理单元,用于对配置数据进行处理;
所述运算单元,用于将处理后得到的相关参数进行点乘运算;
所述签名计算单元,用于利于点乘运算得到的数据进行签名计算,得到带有签名信息的计算值;
所述验证单元,用于验证带有签名信息的计算值,并将验证结果保存。
其进一步技术方案为:所述处理单元包括解析模块以及写入模块;
所述解析模块,用于解析配置数据;
所述写入模块,用于将解析后的数据送入核心控制单元。
其进一步技术方案为:所述运算单元包括所述核心控制单元调用模块以及点乘运算单元调用模块;
所述核心控制单元调用模块,用于核心控制单元调用点乘运算单元和模逆计算单元进行运算,其中,所述点乘运算单元包括点加计算和倍点计算;
所述点乘运算单元调用模块,用于点乘运算单元调用点乘基本计算单元、乘法运算单元以及带pipeline的模fx运算单元进行运算。
其进一步技术方案为:所述签名计算单元包括私钥随机数模块、模n运算模块以及模n控制模块;
所述私钥随机数模块,用于获取点乘运算得到的计算值和私钥随机数;
所述模n运算模块,用于核心控制单元调用模n运算单元进行加模、乘模以及模逆计算;
所述模n控制模块,用于模n运算单元控制模n的除法运算单元和乘法运算单元进行运算。
其进一步技术方案为:所述验证单元包括计算值获取模块以及比较模块;
所述计算值获取模块,用于获取寄存器中最新计算得到的值;
所述比较模块,用于将新的计算值与寄存器中带有签名信息的计算值进行比较,若数值相同,则验证通过,若数值不同,则验证不通过。
本发明与现有技术相比的有益效果是:本发明一种ssd的国密sm2签名验证方法及系统通过获取ahb总线发送的配置数据,然后对配置数据进行处理得到签名验证中所需要的各类数据参数,即可实现国密sm2签名验证,减少了存储资源的消耗,释放cpu性能,签名验证速度更快。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明技术手段,可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征及优点能够更明显易懂,以下特举较佳实施例,详细说明如下。
附图说明
图1为本发明一种ssd的国密sm2签名验证方法具体实施例的流程图;
图2为本发明一种ssd的国密sm2签名验证方法具体实施例中对配置数据进行处理的流程图;
图3为本发明一种ssd的国密sm2签名验证方法具体实施例中进行点乘运算的流程图;
图4为本发明一种ssd的国密sm2签名验证方法具体实施例中签名计算的流程图;
图5为本发明一种ssd的国密sm2签名验证方法具体实施例中签名信息验证的流程图;
图6为本发明一种ssd的国密sm2签名验证系统具体实施例的结构图;
图7为本发明一种ssd的国密sm2签名验证系统具体实施例中处理单元的结构图;
图8为本发明一种ssd的国密sm2签名验证系统具体实施例中运算单元的结构图;
图9为本发明一种ssd的国密sm2签名验证系统具体实施例中签名计算单元的结构图;
图10为本发明一种ssd的国密sm2签名验证系统具体实施例中验证单元的结构图。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
应当理解,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体/操作/对象与另一个实体/操作/对象区分开来,而不一定要求或者暗示这些实体/操作/对象之间存在任何这种实际的关系或者顺序。
还应当理解,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
如图1-5所示,本发明提供了一种ssd的国密sm2签名验证方法,该方法包括:
s10、获取ahb总线发送的配置数据;
s20、对配置数据进行处理;
s30、将处理后得到的相关参数进行点乘运算;
s40、利于点乘运算得到的数据进行签名计算,得到带有签名信息的计算值;
s50、验证带有签名信息的计算值,并将验证结果保存。
具体的,寄存器会接收ahb总线发送的配置数据,然后对配置数据进行处理得到签名验证中所需要的各类数据参数,即可实现国密sm2签名验证,本发明减少了存储资源的消耗,能够释放cpu性能,提高了签名验证速度。
在某些实施例中,步骤s20具体包括以下步骤:
s201、解析配置数据;
s202、将解析后的数据送入核心控制单元。
具体的,解析的数据包括杂凑值、系统参数、基点g的阶、签名用的随机数、基点g、公钥以及私钥。这些解析出来的数据会发送到核心控制单元中,以实现签名或者验证功能。
在某些实施例中,步骤s30具体包括以下步骤:
s301、核心控制单元调用点乘运算单元和模逆计算单元进行运算,其中,点乘运算单元包括点加计算和倍点计算;
s302、点乘运算单元调用点乘基本计算单元、乘法运算单元以及带pipeline的模fx运算单元进行运算。
具体的,点乘运算单元包括点加计算和倍点计算,基于二元域的标准投影下的点加/倍点运算如下:
输入(x1,y1,z1)(x2,y2,z2);
输出(x3,y3,z3);
点加运算公式:
z3=(λ1+λ2)3(z1z2)
λ1=x1z2
λ2=x2z1
进一步化简公式,方便逻辑实现,考虑pipeline的实现,提高计算性能:
stp1:r7=z1*z2
stp2:r1=x1*z2
stp3:r2=x2*z1
stp4:r4=y1*z2
stp5:r5=y2*z1
stp6:t0=(r1^r2)*r7
stp7:t1=(r1^r2)*(r1^r2)
stp8:t2=r2*r4
stp9:t3=r1*r5
stp10:z2=t0*t1
stp11:t4=(t2^t3)*r7
stp12:t2=r1*r2
stp13:t0=r1*t1
stp14:t3=t2*(r1^r2)
stp15:t2=r4*(r1^r2)
stp16:t0=(r4^r5)*(t0^t3^t4)
stp17:x2=(t3^t4)*(r1^r2)
stp18:t4=t1*t2
stp19:y2=t0^x2^t4
倍点运算公式:
z3=(x1z1)3
x3=(x1z1)(bz14+x14)
y3=x14(x12+y1z1)+x14x1z1+bz14(x12+y1z1)
进一步化简公式,方便逻辑实现,考虑pipeline的实现,提高计算性能:
stp1:r7=z1*z1
stp2:r1=x1*z1
stp3:r2=x1*x1
stp4:r4=r1*r1
stp5:r5=y1*z1
stp6:r5=r2^r5
stp7:t0=r1*r1
stp8:t2=r7*r7
stp9:t1=r2*r2
stp10:t3=b*t2
stp11:z2=r1*t0
stp12:x2=r1*(t1^t3)
stp13:t4=t1*r5
stp14:t3=t2*r5
stp15:t2=t1*r1
stp16:t3=b*t3
stp17:y2=t2^t3^t4^x2
模逆计算单元的计算如下:
输入:a(gf(2257))
输出:a-1
stp1:t=a2//模方
stp2:x=at=a3//模乘,输出为x
stp3:t=x2//模方
stp4:t=t2//执行1次,相当于进行2次平方
stp5:x=xt//模乘
stp6:t=x2//模方
stp7:t=t2//执行3次,相当于进行4次平方
stp8:x=xt//模乘
stp9:t=x2//模方
stp10:t=t2//执行7次,相当于进行8次平方
stp11:x=xt//模乘
stp12:t=x2//模方
stp13:t=t2//执行15次,相当于进行16次平方
stp14:x=xt//模乘
stp15:t=x2//模方
stp16:t=t2//执行31次,相当于进行32次平方
stp17:x=xt//模乘
stp18:t=x2//模方
stp19:t=t2//执行63次,相当于进行64次平方
stp20:x=xt//模乘
stp21:t=x2//模方
stp22:t=t2//执行127次,相当于进行128次平方
stp23:x=xt//模乘
stp27:a=x2//即为逆
采用本算法的可以提高运算速度,例如当m=257,需要256次模平方和8次模乘操作,而现有的算法如m=257时,需要进行256次模平方和255次模乘操作。
在某些实施例中,步骤s40具体包括以下步骤:
s401、获取点乘运算得到的计算值和私钥随机数;
s402、核心控制单元调用模n运算单元进行加模、乘模以及模逆计算;
s403、模n运算单元控制模n的除法运算单元和乘法运算单元进行运算。
具体的,除法运算单元:n为基点g的阶,n*g=0;输入被除数dividend(位宽为多项式基长度的2倍),输出除数divisor(位宽为多项式基的长度),输出余数(remainder);
乘法运算单元:输入待乘的a/b(位宽均为多项式基的长度),输出为乘后的数据(位宽为多项式基长度的2倍)。
在某些实施例中,步骤s50具体包括以下步骤:
s501、获取寄存器中最新计算得到的值;
s502、将新的计算值与寄存器中带有签名信息的计算值进行比较;
s503、若数值相同,则验证通过;
s504、若数值不同,则验证不通过。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
对应于上述实施例所述的一种ssd的国密sm2签名验证方法,本发明提供了一种ssd的国密sm2签名验证系统。
如图6-10所示,一种ssd的国密sm2签名验证系统,系统包括获取单元、处理单元、运算单元、签名计算单元以及验证单元;
获取单元1,用于获取ahb总线发送的配置数据;
处理单元2,用于对配置数据进行处理;
运算单元3,用于将处理后得到的相关参数进行点乘运算;
签名计算单元4,用于利于点乘运算得到的数据进行签名计算,得到带有签名信息的计算值;
验证单元5,用于验证带有签名信息的计算值,并将验证结果保存。
具体的,寄存器会接收ahb总线发送的配置数据,然后对配置数据进行处理得到签名验证中所需要的各类数据参数,即可实现国密sm2签名验证,本发明减少了存储资源的消耗,能够释放cpu性能,提高了签名验证速度。
在某些实施例中,处理单元2包括解析模块21以及写入模块22;
解析模块21,用于解析配置数据;
写入模块22,用于将解析后的数据送入核心控制单元。
具体的,解析的数据包括杂凑值、系统参数、基点g的阶、签名用的随机数、基点g、公钥以及私钥。这些解析出来的数据会发送到核心控制单元中,以实现签名或者验证功能。
在某些实施例中,运算单元3包括核心控制单元调用模块31以及点乘运算单元调用模块32;
核心控制单元调用模块31,用于核心控制单元调用点乘运算单元和模逆计算单元进行运算,其中,点乘运算单元包括点加计算和倍点计算;
点乘运算单元调用模块32,用于点乘运算单元调用点乘基本计算单元、乘法运算单元以及带pipeline的模fx运算单元进行运算。
s301、核心控制单元调用点乘运算单元和模逆计算单元进行运算,其中,点乘运算单元包括点加计算和倍点计算;
s302、点乘运算单元调用点乘基本计算单元、乘法运算单元以及带pipeline的模fx运算单元进行运算。
具体的,点乘运算单元包括点加计算和倍点计算,基于二元域的标准投影下的点加/倍点运算如下:
输入(x1,y1,z1)(x2,y2,z2);
输出(x3,y3,z3);
点加运算公式:
z3=(λ1+λ2)3(z1z2)
λ1=x1z2
λ2=x2z1
进一步化简公式,方便逻辑实现,考虑pipeline的实现,提高计算性能:
stp1:r7=z1*z2
stp2:r1=x1*z2
stp3:r2=x2*z1
stp4:r4=y1*z2
stp5:r5=y2*z1
stp6:t0=(r1^r2)*r7
stp7:t1=(r1^r2)*(r1^r2)
stp8:t2=r2*r4
stp9:t3=r1*r5
stp10:z2=t0*t1
stp11:t4=(t2^t3)*r7
stp12:t2=r1*r2
stp13:t0=r1*t1
stp14:t3=t2*(r1^r2)
stp15:t2=r4*(r1^r2)
stp16:t0=(r4^r5)*(t0^t3^t4)
stp17:x2=(t3^t4)*(r1^r2)
stp18:t4=t1*t2
stp19:y2=t0^x2^t4
倍点运算公式:
z3=(x1z1)3
x3=(x1z1)(bz14+x14)
y3=x14(x12+y1z1)+x14x1z1+bz14(x12+y1z1)
进一步化简公式,方便逻辑实现,考虑pipeline的实现,提高计算性能:
stp1:r7=z1*z1
stp2:r1=x1*z1
stp3:r2=x1*x1
stp4:r4=r1*r1
stp5:r5=y1*z1
stp6:r5=r2^r5
stp7:t0=r1*r1
stp8:t2=r7*r7
stp9:t1=r2*r2
stp10:t3=b*t2
stp11:z2=r1*t0
stp12:x2=r1*(t1^t3)
stp13:t4=t1*r5
stp14:t3=t2*r5
stp15:t2=t1*r1
stp16:t3=b*t3
stp17:y2=t2^t3^t4^x2
模逆计算单元的计算如下:
输入:a(gf(2257))
输出:a-1
stp1:t=a2//模方
stp2:x=at=a3//模乘,输出为x
stp3:t=x2//模方
stp4:t=t2//执行1次,相当于进行2次平方
stp5:x=xt//模乘
stp6:t=x2//模方
stp7:t=t2//执行3次,相当于进行4次平方
stp8:x=xt//模乘
stp9:t=x2//模方
stp10:t=t2//执行7次,相当于进行8次平方
stp11:x=xt//模乘
stp12:t=x2//模方
stp13:t=t2//执行15次,相当于进行16次平方
stp14:x=xt//模乘
stp15:t=x2//模方
stp16:t=t2//执行31次,相当于进行32次平方
stp17:x=xt//模乘
stp18:t=x2//模方
stp19:t=t2//执行63次,相当于进行64次平方
stp20:x=xt//模乘
stp21:t=x2//模方
stp22:t=t2//执行127次,相当于进行128次平方
stp23:x=xt//模乘
stp27:a=x2//即为逆
采用本算法的可以提高运算速度,例如当m=257,需要256次模平方和8次模乘操作,而现有的算法如m=257时,需要进行256次模平方和255次模乘操作。
在某些实施例中,签名计算单元4包括私钥随机数模块41、模n运算模块42以及模n控制模块43;
私钥随机数模块41,用于获取点乘运算得到的计算值和私钥随机数;
模n运算模块42,用于核心控制单元调用模n运算单元进行加模、乘模以及模逆计算;
模n控制模块43,用于模n运算单元控制模n的除法运算单元和乘法运算单元进行运算。
具体的,除法运算单元:n为基点g的阶,n*g=0;输入被除数dividend(位宽为多项式基长度的2倍),输出除数divisor(位宽为多项式基的长度),输出余数(remainder);
乘法运算单元:输入待乘的a/b(位宽均为多项式基的长度),输出为乘后的数据(位宽为多项式基长度的2倍)。
在某些实施例中,验证单元5包括计算值获取模块51以及比较模块2;
计算值获取模块51,用于获取寄存器中最新计算得到的值;
比较模块52,用于将新的计算值与寄存器中带有签名信息的计算值进行比较,若数值相同,则验证通过,若数值不同,则验证不通过。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。