数字签名方法、装置以及密码设备与流程

文档序号:12067808阅读:517来源:国知局
数字签名方法、装置以及密码设备与流程

本发明涉及密码学技术领域,特别是涉及一种数字签名方法、装置以及密码设备。



背景技术:

由于多倍点运算需要消耗大量的计算资源,会制约数字签名装置的效率。为了提高计算椭圆曲线多倍点运算的效率,传统技术提出了很多的优化方法,基本思想是改变随机数k的形式从而减少点加、多倍点运算,或者采用预先计算并存储2rG,或者采用更高效的有限域计算方法等。

具体的,例如传统技术提出一种通过在GPU预先计算并存储椭圆曲线多倍点运算,然后由CPU调用存储的预先计算完成签名计算的步骤。这种技术方案可以通过预先计算来解决签名请求的突发业务,通过闲时计算多倍点运算并存储,以便在出现业务高峰时不会增加业务延迟。另一种为根据多个多倍点运算的历史数据来导出一个新的多倍点运算结果,其基本过程为获取并存储服务器返回的多个的历史数据,然后,根据历史数据导出签名参数。

在实现过程中,发明人发现传统技术中至少存在如下问题:一方面,传统技术对于重负载的场合,提交的签名请求可能超出硬件设备计算多倍点的运算能力,此时缓冲区可能一直处于没有数据的状态,预先计算的缓冲机制会完全失效。另一方面,攻击者可以通过监视跟踪历史数据的签名结果,并通过相关数据构建线性方程组,从而提取到用户私钥,即传统技术在抵抗线性攻击方面也存在弱点,且受限于硬件设备的性能,难以满足海量用户并发执行的签名需求,制约了数字签名效率。



技术实现要素:

基于此,有必要针对以上问题,提供一种数字签名方法、装置以及密码设备。

为了实现上述目的,本发明技术方案的实施例为:

一方面,提供了一种数字签名方法,包括以下步骤:

获取椭圆曲线上的多倍点点乘运算结果,并根据点乘运算结果,生成签名材料数据;

对签名材料数据进行混淆运算处理,得到混淆签名材料数据;

根据混淆签名材料数据执行数字签名,获取签名结果。

一方面,还提供了一种数字签名装置,包括:

签名材料生成单元,用于获取椭圆曲线上的多倍点点乘运算结果,并根据点乘运算结果,生成签名材料数据;

混淆倍增单元,用于对签名材料数据进行混淆运算处理,得到混淆签名材料数据;

签名单元,用于根据混淆签名材料数据执行数字签名,获取签名结果。

另一方面,提供了一种数字签名密码设备,其被配置为获取椭圆曲线上的多倍点点乘运算结果,并根据点乘运算结果,生成签名材料数据;对签名材料数据进行混淆运算处理,得到混淆签名材料数据;根据混淆签名材料数据执行数字签名,获取签名结果。

上述技术方案具有如下有益效果:

本发明数字签名方法、装置以及密码设备,无需产生真随机数再计算多倍点运算,而是通过对已知多倍点运算结果进行基于点加的混淆运算,从而抵抗线性攻击,并获得足够高的运算效率。基于低速硬件设备产生的随机数及点乘运算结果,采用混淆算法来产生更多的多倍点运算结果,从而提高签名的效率。通过混淆算法,使得混淆输出结果之间的相关性较低,可以有效抵抗线性攻击。经过检验本发明输出的随机序列仍然可以满足随机数检测规范的要求。

附图说明

图1为本发明数字签名方法实施例1的流程示意图;

图2为本发明数字签名方法实施例1中以二维数组读取签名材料数据的示意图;

图3为本发明数字签名方法实施例1中进行Stencil运算中宽度参数s=1时的元素在矩阵中的位置关系示意图;

图4为本发明数字签名方法实施例1中进行Stencil运算中宽度参数s=2时的元素在矩阵中的位置关系示意图;

图5为本发明数字签名装置实施例1的结构示意图;

图6为本发明数字签名密码设备的具体结构示意图;

图7为本发明数字签名密码设备实施例1的结构示意图;

图8为本发明数字签名密码设备实施例2的结构示意图;

图9为本发明数字签名密码设备实施例3的结构示意图;

图10为本发明数字签名密码系统实施例1的结构示意图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的首选实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

本发明数字签名方法、装置以及密码设备一具体应用场景:

椭圆曲线密码(简称ECC)是一种基于在有限域上定义的椭圆曲线的数学难题的公开密钥体制。令p>3为素数,有限域Fp上的椭圆曲线方程可以存在多种形式,其中典型的椭圆曲线方程形如y2=x3+ax+b,该方程由满足a3+27b2≠0modp的参数a,b∈Fp确定,在该椭圆曲线上的所有点及无穷远点O构成椭圆曲线点集E(Fp)={(x,y)|x,y∈Fp,y2=x3+ax+b}∪{O},椭圆曲线点集E(Fp)的阶为n=#E(Fp)。在椭圆曲线上定义点加运算,则椭圆曲线点集E(Fp)构成一个Abel群。

椭圆曲线上的运算可以采用不同的坐标系来表达,常用的坐标系是仿射坐标系和Jacobi投影坐标系,以下分别加以介绍。

仿射坐标系:平面上过一定点O作两条相交的坐标轴x和y,它们的交角是ω。以定点O作为原点,在每条坐标轴上定义长度单位(分别是OE1、OE2),这样就在平面上建立了一个仿射坐标系。对于平面上任一点M,过M作两坐标轴的平行线,与坐标轴分别交于M1、M2,它们在两轴的坐标分别标记为x、y,于是点M就对应有序数组(x,y)。

Jacobi投影坐标系:Jacobi投影坐标系下的点(X,Y,Z)与仿射坐标系下的点(x,y)一一对应。给定仿射坐标系下的座标(x,y),转换成Jacobi投影坐标系下的坐标为(X,Y,Z),其中X=x、Y=y、Z=1;给定Jacobi投影坐标系下的坐标(X,Y,Z),转换成仿射坐标系下的座标为(x,y),且满足x=X/Z2、y=Y/Z3。同时,仿射坐标系下的无穷远点∞和Jacobi投影坐标系下的点(1,1,0)对应。

在椭圆曲线上任取两点P(x1,y1)、Q(x2,y2),令O表示无穷远点,定义点加运算R(xR,yR)=P+Q,其运算规则如下:

(1)P+O=O+P=P;

(2)-P=(x1,-y1),P+(-P)=O;

(3)若Q≠-P,则

其中,当x1≠x2时,当x1=x2时,

在椭圆曲线上任取点P(x,y),令O表示无穷远点,定义倍点运算R(xR,yR)=2P。倍点运算等同于点加运算中P=Q,其运算规则如下:

(1)若y=0,则R=2P=O;

(2)若y≠0,则其中

上述点加、倍点运算公式均定义在有限域Fp上,其中包含有限域上的加法、乘法和求逆等运算。在有限域Fp上,加法、乘法均为模p运算,譬如任意x,y∈Fp,则加法定义为z=(x+y)modp,z∈Fp。所述求逆运算是指给出任意点x∈Fp,找出另一个点y∈Fp使得条件xy=1满足。在有限域Fp上,求逆运算比乘法运算复杂度更高,而转换成Jacobi投影坐标则可以避免求逆运算,因此在工程应用中更多地采用Jacobi投影坐标系。

Jacobi投影坐标系中,在椭圆曲线上任取两点P(X1,Y1,Z1)、Q(X2,Y2,Z2),点加运算R(X3,Y3,Z3)=P+Q的运算规则为:

Jacobi投影坐标系中,在椭圆曲线上任取点P(X1,Y1,Z1),倍点运算R(X3,Y3,Z3)=2P的运算规则为:

在上述数学基础上,可以执行多倍点运算对于任意整数k=(kt-1,...,k1,k0)2,P∈E(Fp),令O表示无穷远点,kG按以下步骤计算:

(1)Q←O;

(2)For i from 0 to t-1 do

a)If ki=1 then Q←Q+P

b)P←2P

(3)输出Q。

可以看出,利用点加、倍点运算即可完成多倍点运算Q=kP。

ECDSA算法(椭圆曲线数字签名算法)是广泛使用的标准签名算法。首先选择装置参数,如有限域类型和表示方法,曲线参数a,b,以及一个曲线上的基点G∈Fp以及G的阶n,要求n必须为一个大素数。参数确定之后,ECDSA算法分为密钥产生、数字签名以及签名验证3个模块分别执行不同的功能。

密钥产生:

1、在区间[1,n-1]上随机产生一个整数d。

2、计算多倍点运算Q=dG。

3、公开Q为公钥,保留d为私钥。

数字签名:

1、使用安全散列函数H对需要签名的消息M进行杂凑计算e=H(M)。

2、随机生成一个区间[1,n-1]上的本地秘密随机数k,并计算kG=(x1,y1),其中x1为多倍点运算结果的x坐标,y1为多倍点运算的y坐标。

3、计算r=x1modn。

4、计算s=k-1(e+dr)modn。

5、数据(r,s)为ECDSA算法下对消息M的签名。

签名验证:

1、使用与签名一样的散列函数H计算e=H(M)。

2、计算c=s-1modn。

3、计算μ1=ecmodn,μ2=rcmodn。

4、计算(x1,y1)=μ1G+μ2Q,其中G为基点,Q为用户公钥。

5、计算v=x1modn,若v=r则为一个合法签名,否则验证不通过。

在ECDSA签名运算中使用了一次一密的思想,引入随机数k来保护用户私钥d,但是签名方程一般都是线性方程,因此随机数k必须满足隐私性。一旦泄露随机数k,或者k容易被猜测或者计算出来,则会导致用户私钥d被计算出来。

本发明数字签名方法实施例1:

为了解决传统技术在抵抗线性攻击方面存在弱点,且受限于硬件设备的性能,难以满足海量用户并发执行的签名需求,制约了数字签名效率的问题,本发明提供了一种数字签名方法实施例1;图1为本发明数字签名方法实施例1的流程示意图;如图1所示,可以包括以下步骤:

步骤S110:获取椭圆曲线上的多倍点点乘运算结果,并根据点乘运算结果,生成签名材料数据;

步骤S120:对签名材料数据进行混淆运算处理,得到混淆签名材料数据;

步骤S130:根据混淆签名材料数据执行数字签名,获取签名结果。

具体而言,本发明的数字签名方法,不需要产生真随机数再计算多倍点运算,而是通过对已知多倍点运算结果进行基于点加的混淆运算,与此同时确保经过混淆之后输出的随机数k满足相关的检测规范,从而抵抗线性攻击,并获得足够高的运算效率。

进一步的,本发明各实施可以通过签名材料发生器(可以包括随机数发生器和点乘部件)生成一组随机数{k1,k2,...,kL},并计算在椭圆曲线E上的点乘运算结果Qi=kiG;其中,G为基点;i表示一组随机数及其多倍点运算结果的序号,或者数组下标。

为了获得Qi,分别可以通过随机数发生器、点乘部件获取到相关的结果;其中随机数发生器利用物理噪声来产生真随机数k(一般来说,真随机数必须由物理部件产生,软件产生的一般称为伪随机数),然后利用点乘部件计算kG结果(即多倍点点乘运算结果)。

签名材料生成器可以周期性地产生k和一组kG,然后依次输出每一个k和kG=(x,y)结果,其中(x,y)表示多倍点运算结果的x坐标、y坐标;输出的签名材料数据可表示为三元组M={(ki,xi,yi),i=1,2,…,L}。在一个具体的示例中,取L=65536,其中,L是签名材料生成器产生的一组随机数的个数,选择参数L没有绝对的依据,如果L很大则输出一组结果的时间很长,如果L很小则后面将多倍点运算结果组织成矩阵的行数、列数太小,从而倍增系数也很小。

进一步的,可以通过混淆倍增器实现以上步骤S120(详情可参见下文内容),在一个具体示例中,本发明各实施还可以通过下述步骤生成签名材料:1、预先计算签名材料数据并存储,然后输入至混淆倍增器;2、将混淆倍增器输出的混淆签名材料再次反馈作为混淆倍增器的输入。

进一步的,可以通过签名部件实现以上步骤S130;签名部件可以用来根据输入的原文摘要e、签名材料x、私钥d来计算获取签名结果(r,s)。在一个具体示例中,签名部件可以执行ECDSA签名算法。在一个具体示例中,签名部件还可以执行国家密码管理局定义的SM2签名算法。

在一个具体的实施例中,步骤S120对签名材料数据进行混淆运算处理,得到混淆签名材料数据的步骤之前包括步骤:

根据一维数组方式,写入存储签名材料数据;

根据二维数组方式,输出签名材料数据。

具体而言,混淆倍增器可以包括矩阵随机访问存储器和混淆器;其中可以通过矩阵随机访问存储器实现以上步骤;

每当签名材料发生器计算出一组签名材料M,可以将这些数据存储在矩阵随机访问存储器中。矩阵随机访问存储器可以数组方式写入,而这些数据可以按照二维数组进行组织,也就是说按一维数组写入数据,按二维数组读取数据,而采用矩阵随机访问存储器,使得本发明各实施例可以执行stencil操作,从而产生很好的混淆效果。对于L=65536,转换为二维矩阵之后,横坐标、纵坐标的取值范围可以为i,j∈{0,1,2,...,m-1},m=256,其中,m表示矩阵在一个维度的元素个数,而矩阵元素的坐标最大值为m-1。

在一个具体的实施例中,在根据二维数组方式,输出签名材料数据的步骤中:

当输入的签名材料数据中待访问的二维数组元素的坐标超出了预设的有效坐标范围时,将坐标对应二维数组相对应维度的元素个数进行求模转换,并输出转换后坐标对应二维数组元素的签名材料数据。

具体而言,在读取时可以根据输入的横坐标i、纵坐标j来随机访问,当输入的坐标超出了有效的坐标范围,矩阵随机访问寄存器可以对m求模转换为有效坐标;本发明各实施例采用这样处理方式可以有效处理坐标越界的问题。图2为本发明数字签名方法实施例1中以二维数组读取签名材料数据的示意图;如图2所示,输入m将会转换为0,而输入-1将会转换为m-1。

在一个具体的实施例中,在根据二维数组方式,输出签名材料数据的步骤中:

更改二维数组各维度的元素个数,调节输出混淆签名材料数据的速率。

具体而言,可以改变矩阵随机访问存储器中二维数组的尺寸m,一般取2的幂次,如16,64,256,512。对于不同的矩阵尺寸,签名材料生成器在计算一组数据消耗的时间也不同,而混淆倍增器每一轮输出的混淆签名材料数据的个数也相应发生变化。通过改变参数m,可以实现根据系统当前负载来调节输出混淆签名材料的速率,获得最佳的系统效能。

在一个具体的实施例中,根据一维数组方式,写入存储签名材料数据的步骤可以包括:

根据Jacobi投影坐标的编码格式,存储签名材料数据中元素的坐标。

具体而言,在矩阵随机访问存储器中保存的kG点的坐标采用Jacobi投影坐标(X,Y,Z),这样可以避免执行点加运算中涉及求逆元的运算,提高处理速度。在签名部件中需要使用射影坐标,因此在某个环节需要转换坐标,譬如在混淆器输出阶段,或者签名部件使用x坐标之前进行转换。

在一个具体的实施例中,对读取出的签名材料数据进行混淆运算处理,得到混淆签名材料数据的步骤包括:

对根据二维数组方式输出的签名材料数据进行Stencil运算,得到混淆签名材料数据。

具体而言,可以通过混淆器实现上述步骤;在一个具体示例中,混淆器可以为签名材料构成的矩阵中的每一个元素执行Stencil(模板)运算,从而产生新的签名材料;在本发明的各实施例中并非必须使用stencil运算,本发明采用混淆算法的基本原则是可以抵抗线性攻击。

对于某个矩阵元素e(i,j),Stencil运算需要分别从矩阵随机访问寄存器中读取以下5个元素:e(i,j),e(i±s,j),e(i,j±s),其中,i表示矩阵元素e的横坐标,j表示矩阵元素e的纵坐标,s为Stencil模式的宽度参数;这些元素在矩阵中的位置关系如图3、图4所示,图3为本发明数字签名方法实施例1中进行Stencil运算中宽度参数s=1时的元素在矩阵中的位置关系示意图;图4为本发明数字签名方法实施例1中进行Stencil运算中宽度参数s=2时的元素在矩阵中的位置关系示意图。

在一个具体的实施例中,对根据二维数组方式输出的签名材料数据进行Stencil运算,得到混淆签名材料数据的步骤中:

基于以下公式分别获取经过混淆的随机数和混淆签名材料数据:

k′i,j=ki,j+ki+s,j+ki-s,j+ki,j+s+ki,j-smod n

Xi,j=Qi,j+Qi+s,j+Qi-s,j+Qi,j+s+Qi,j-s

其中,n为椭圆曲线基点的阶;Xi,j为根据二维数组方式输出的签名材料数据;i为根据二维数组方式输出的签名材料数据中元素的横坐标,j为根据二维数组方式输出的签名材料数据中元素的纵坐标;k为随机数;k’是经过混淆的随机数;Q=kG为点乘运算结果;s为Stencil运算的宽度参数。

具体而言,为了实现混淆效果,混淆器可以对这些元素执行椭圆曲线E上的点加运算,输出一个新的签名材料X(i,j)。在计算中随机数k与椭圆曲线的点Q=(x,y)被分开进行,分别计算:

k’i,j=ki,j+ki+s,j+ki-s,j+ki,j+s+ki,j-smod n

Xi,j=Qi,j+Qi+s,j+Qi-s,j+Qi,j+s+Qi,j-s

其中,n是椭圆曲线基点的阶;矩阵某个元素是一个二元组:k,Q,其中k是随机数,Q=kG是多倍点运算结果;

可以利用椭圆曲线的数学性质,对于GF(p)上的椭圆曲线E,对于任意随机数k1和k2,满足以下关系:kG=k1G+k2G,其中k=(k1+k2)mod n。根据这个性质,执行Stencil计算的结果也是一个三元组:(k’,x’,y’),它们满足点乘关系:(x′,y’)=k’G。其中,k’是经过混淆的随机数,x’和y’是多倍点运算kG结果的坐标。

在一个具体的实施例中,对根据二维数组方式输出的签名材料数据进行Stencil运算,得到混淆签名材料数据的步骤中:

对于一组根据二维数组方式输出的签名材料数据,根据预设的Stencil运算的各宽度参数,分别输出若干组经过变换的混淆签名材料数据。

具体而言,为了实现倍增效应,对于矩阵随机访问存储器中保存的一组输入签名材料数据,混淆器会使用不同的宽度参数s分别输出若干组经过变换的混淆签名材料数据。其中宽度参数s的取值范围为s∩{0,1,2,...,N},N<m/2-1;其中,N是设定的一个参数,指s的最大值;m表示矩阵在一个维度的元素个数。

进一步的,倍增器可以首先设定宽度参数s=1,对于矩阵随机访问存储器中保存的每一个元素分别计算其Stencil混淆结果,将所有计算结果按从左到右,自上而下的顺序输出为第1组混淆签名材料数据F1={Xi,j,s=1}。然后倍增器将F1={Xi,j,s=1}覆盖矩阵随机访问存储器中的数据。然后倍增器增加宽度参数为s=2,利用矩阵随机访问存储器中保存的签名材料计算Stencil混淆结果,输出为第2组混淆签名材料数据F2={Xi,j,s=2}。以此类推,直至计算到第N组混淆签名材料数据FN={Xi,j,s=N}。在这个实施例中,增加宽度参数之后的计算是基于上一组宽度参数的计算结果进行迭代运算,这样可以进一步增加混淆输出结果的非相关性。

在一个具体的实施例中,根据混淆签名材料数据进行数字签名,获取签名结果的步骤之前还包括步骤:

获取混淆签名材料数据中元素的二元组类型坐标数据;

根据二元组类型坐标数据进行数字签名,获取签名结果。

具体而言,由于ECDSA或SM2签名算法中只使用了kG计算结果的x坐标,为了节省资源,混淆倍增器可以仅仅输出二元组F={(ki,xi),i=1,2,…,L},将y坐标丢弃。

在一个具体的实施例中,上述Stencil运算的宽度参数s的取值范围为:

s∈{0,1,2,...,N},N<m/2-1

其中,s为所述Stencil运算的宽度参数;N为预设的参数,表示s的最大值,即为混淆签名材料数据的输出数量(在本发明的各实施例中也可以称N为倍增率);m为所述根据二维数组方式输出的签名材料数据在一个维度的元素个数。

具体而言,如果s取值超过最大坐标的一半,由于坐标的折叠关系,会导致输出结果存在重复,从而破坏了参数k的随机性。

在一个具体的实例中,对签名材料数据进行混淆运算处理,得到混淆签名材料数据的步骤包括:

分别获取签名材料数据的待处理数据组数量和混淆签名材料数据的当前处理数据组数量,根据待处理数据组数量和当前处理数据组数量确定对签名材料数据进行混淆运算处理的时间周期。

具体而言,由于混淆操作执行若干个椭圆曲线E上的点加运算,其计算效率远远高于点乘运算。在签名材料生成器计算一组签名材料数据的时间周期内,混淆器有足够的时间可以输出N组混淆签名材料数据。这类似于变压器的工作模式,通过一组低码率的输入来驱动输出一组高码率的输出结果,其中参数N为混淆倍增器的倍增率。

而为了避免破坏k的随机性,倍增率N存在一个最大限值,如果混淆倍增器完成了N组混淆签名材料数据的计算,而签名材料生成器尚未送来一组新的签名材料数据,则混淆倍增器需要插入等待周期。如果签名材料生成器送来一组新的签名材料数据,而混淆倍增器尚未完成上一组混淆计算,则签名材料生成器需要插入等待周期。换言之,签名材料生成器和混淆倍增器之间需要建立相互通信机制,避免传入新的签名材料数据破坏上一组数据的计算过程。在系统设计中,应该选择合适的二维数组尺寸m以及倍增率N,使得签名材料生成器产生一组签名材料数据的时间与混淆倍增器输出N组混淆签名材料数据消耗的时间基本接近,获得最佳匹配的运算效率。

在一个具体示例中,对签名材料数据进行混淆运算处理,得到混淆签名材料数据的步骤之前可以包括步骤:

根据一维数组方式,写入存储签名材料数据;

根据三维数组方式,输出签名材料数据。

在一个具体示例中,对签名材料数据进行混淆运算处理,得到混淆签名材料数据的步骤可以包括:

对根据三维数组方式输出的签名材料数据进行Stencil运算,得到混淆签名材料数据。

具体而言,在矩阵随机访问存储器中将签名材料数据组织为三维数组,此时可以读取三维空间中的7个数据来执行三维Stencil运算,虽然在一定程度上增加了计算复杂性,却能够增加混淆过程中随机数k之间关系的非线性度,使得线性攻击更加难以实施。

在一个具体示例中,根据混淆签名材料数据执行数字签名,获取签名结果的步骤之后包括步骤:

获取根据混淆签名材料数据执行数字签名的执行频率,根据执行频率预测待执行的数字签名次数;

根据待执行的数字签名次数,返回对签名材料数据进行混淆运算处理,得到混淆签名材料数据的步骤。

具体而言,可以统计每秒执行的签名次数,预测下一秒需要执行的签名次数,进而动态调整倍增率N、二维数组的尺寸m、GPU(图形处理器:Graphics Processing Unit)启动的线程数等,根据负载情况来动态调整系统效能。

进一步的,还可以改变混淆倍增器的倍增率N,根据系统当前负载来调节输出签名材料数据的速率,获得最佳的系统效能。例如当前系统负载较小,则降低倍增率N,从而降低系统能耗。

在一个具体示例中,对签名材料数据进行混淆运算处理,得到混淆签名材料数据的步骤可以包括:

随机选取若干组签名材料数据进行混淆运算处理,得到混淆签名材料数据。

具体而言,当需要获得更高的倍增率时,混淆器可以从矩阵随机访问寄存器中随机选择N个元素,执行点加操作并输出。采用Stencil运算虽然可以有效增加混淆输出数据之间的非线性度,但是倍增率存在最大值限制(m/2-1)。采用随机选择N个元素进行混淆,增加了线性攻击的风险,但是可以获得更高的倍增率。

在一个具体示例中,在执行Stencil运算时可以按照以下规则进行:将元素按照水平、垂直进行分组,每两个元素进行组合,如横坐标允许的组合为<i-1,i+1>、<i-1,i>、<i,i+1>,纵坐标允许的组合为<j-1,j+1>、<j-1,j>、<j-1,j>。在需要进行计算时,按照上面给出的顺序来选择元素的组合顺序,例如对于计算s=1即第一组混淆签名材料数据,一个Stencil运算可以包括以下几个步骤:

(a)计算Xa=e(i-1,j)+e(i+1,j);(b)计算Xb=e(i,j-1)+e(I,j+1);(c)计算Xa+Xb+e(i,j)。

其中,Stencil运算涉及一个十字架的5个元素,此处将水平方向左、右置两个位置的元素优先组合,将垂直方向的上、下两个元素优先组合,最后在叠加中心位置的元素;在上述计算过程中,每当计算2个原始输入元素的点加,将计算的中间结果保存到一个Key-Value存储系统,其中关键字Key设置为用于计算的两个元素的坐标:(x1,x2,y1,y2)。

在执行s>1的其他组Stencil运算时,首先尝试上面给出的3中可能的横坐标、纵坐标组合,通过查询Key-Value存储系统判断这种组合的两个元素点加是否曾经被计算过。如果某个组合在Key-Value存储系统中已经被保存,则不需要再次计算,而可以被直接使用。通过此示例,可以通过保存中间结果来提高混淆倍增器的计算效率。

进一步的,本发明数字签名方法通过采用Stencil运算来混淆数据,任何两个混淆数据之间最多可能有2个输入元素相同,其他3个元素均不相同,攻击者无法通过将若干个输出的混淆数据进行线性运算来构造出一个数学等式。这个特性可以保证混淆算法不会带来对随机数k或者私钥d的线性攻击。

在一个具体的实施例中,步骤S130根据混淆签名材料数据进行数字签名,获取签名结果的步骤之前还包括步骤:

根据混淆运算处理的宽度参数,对混淆签名材料数据进行重新排序,得到无重复数据的混淆签名材料数据;

具体而言,混淆倍增器还可以包括输出重排存储器。本发明各实施可以通过输出重排存储器改变倍增器计算出来的混淆签名材料数据的排列顺序,从而改善由多个随机数k进行Stencil运算之后输出的随机数k’的随机性质。

输出重排存储器的处理对象可以是混淆器在某个宽度参数s输出的一组混淆签名材料数据,对于不同组的数据不会混合排序。

输出重排存储器的处理对象也可以是混淆器在多个宽度参数s输出的混淆签名材料数据的集合。

对于输出的一组数据,基于线性反馈移位寄存器(LFSR)的输出来将混淆签名材料数据重新排序。对于不同阶的LFSR必须使用不同抽头配置的生成多项式,才能获得最长的不重复序列。如对于L=65536的系统,应使用16阶的LFSR,其生成可以代表LFSR的反馈抽头的多项式Xn+X5+X3+X2+1,即将寄存器当前状态的第0、2、3、5、n几个比特执行模2加操作之后作为反馈结果输入到寄存器中;通过设定一个寄存器初值,然后依次计算执行一次移位操作之后的下一个寄存器状态,将寄存器的值作为一维数组的坐标,读取混淆器输出数据的某个元素。通过这个变换,某一组65536个数据只会被重新排序,但是数据不会出现重复。

在一个具体示例中,输出重排存储器是一个可选的部件,如果Stencil输出的随机数序列k’满足了特定的检测规范,可以不需要这个部件。

本发明数字签名方法各实施例,无需产生真随机数再计算多倍点运算,而是通过对已知多倍点运算结果进行基于点加的混淆运算,从而抵抗线性攻击,并获得足够高的运算效率。基于低速硬件设备产生的随机数及点乘运算结果,采用混淆算法来产生更多的多倍点运算结果,从而提高签名的效率。通过混淆算法,使得混淆输出结果之间的相关性较低,可以有效抵抗线性攻击。经过检验本发明输出的随机序列仍然可以满足随机数检测规范的要求。

本发明数字签名装置实施例1:

为了解决传统技术在抵抗线性攻击方面存在弱点,且受限于硬件设备的性能,难以满足海量用户并发执行的签名需求,制约了数字签名效率的问题,同时基于以上数字签名方法各实施例的技术方案,本发明还提供了一种数字签名装置实施例1;图5为本发明数字签名装置实施例1的结构示意图;如图5所示,可以包括:

签名材料生成单元510,用于获取椭圆曲线上的多倍点点乘运算结果,并根据点乘运算结果,生成签名材料数据;

混淆倍增单元520,用于对签名材料数据进行混淆运算处理,得到混淆签名材料数据;

签名单元530,用于根据混淆签名材料数据执行数字签名,获取签名结果。

在一个具体的实施例中,混淆倍增单元520包括:

随机访问存储模块522,用于根据一维数组方式,写入存储签名材料数据;并根据二维数组方式,输出签名材料数据;

混淆模块524,用于对随机访问存储模块522输出的签名材料数据进行Stencil运算,得到所述混淆签名材料数据。

具体而言,本发明数字签名装置各实施例中的单元模块可以对应实现上述数字签名方法各实施例中的方法步骤,此处不再赘述其具体的实现过程。

本发明数字签名装置,无需产生真随机数再计算多倍点运算,而是通过混淆倍增单元对已知多倍点运算结果进行基于点加的混淆运算,从而抵抗线性攻击,并获得足够高的运算效率。基于低速硬件设备产生的随机数及点乘运算结果,采用混淆倍增单元来产生更多的多倍点运算结果,从而提高签名的效率。通过混淆算法,使得混淆输出结果之间的相关性较低,可以有效抵抗线性攻击。经过检验本发明输出的随机序列仍然可以满足随机数检测规范的要求。

本发明数字签名密码设备:

为了解决传统技术在抵抗线性攻击方面存在弱点,且受限于硬件设备的性能,难以满足海量用户并发执行的签名需求,制约了数字签名效率的问题,同时基于以上数字签名方法的技术思想,同时为了详细说明本发明的技术方案,本发明还提供了一种数字签名密码设备,其被配置为获取椭圆曲线上的多倍点点乘运算结果,并根据点乘运算结果,生成签名材料数据;对签名材料数据进行混淆运算处理,得到混淆签名材料数据;根据混淆签名材料数据执行数字签名,获取签名结果。

图6为本发明数字签名密码设备的具体结构示意图,如图6所示,数字签名密码设备的系统架构可以包括签名材料生成器、混淆倍增器、签名部件。其中,签名材料生成器可以包括随机数发生器和点乘部件;混淆倍增器可以包括矩阵随机访问存储器、混淆器以及输出重排存储器。

具体而言,签名材料生成器获取椭圆曲线上的多倍点点乘运算结果,并根据点乘运算结果,生成签名材料数据;混淆倍增器对签名材料数据进行混淆运算处理,得到混淆签名材料数据;签名部件根据混淆签名材料数据执行数字签名,获取签名结果。

本发明数字签名密码设备实施例1:

为了解决传统技术在抵抗线性攻击方面存在弱点,且受限于硬件设备的性能,难以满足海量用户并发执行的签名需求,制约了数字签名效率的问题,同时基于以上数字签名方法的技术思想,本发明提供了一种数字签名密码设备实施例1,图7为本发明数字签名密码设备实施例1的结构示意图;如图7所示,可以包括密码卡和图形处理器;密码卡包括签名材料生成器和签名部件;图形处理器包括混淆倍增器;

签名材料生成器获取椭圆曲线上的多倍点点乘运算结果,并根据点乘运算结果,生成签名材料数据;混淆倍增器对签名材料数据进行混淆运算处理,得到混淆签名材料数据;签名部件根据混淆签名材料数据执行数字签名,获取签名结果。

具体而言,本发明各实施例可以在密码卡中实现签名材料生成器、签名部件的功能,在图形加速器(GPU)中实现混淆倍增器。而采用这种系统配置,可以由密码卡卸载生成签名材料的运算,由GPU实现高并发来提高混淆倍增器的倍增率。

本发明数字签名密码设备实施例2:

为了解决传统技术在抵抗线性攻击方面存在弱点,且受限于硬件设备的性能,难以满足海量用户并发执行的签名需求,制约了数字签名效率的问题,同时基于以上数字签名方法的技术思想,本发明还提供了一种数字签名密码设备实施例2;图8为本发明数字签名密码设备实施例2的结构示意图;如图8所示,可以包括密码卡和图形处理器;密码卡包括签名部件;图形处理器包括签名材料生成器和混淆倍增器;

签名材料生成器获取椭圆曲线上的多倍点点乘运算结果,并根据点乘运算结果,生成签名材料数据;混淆倍增器对签名材料数据进行混淆运算处理,得到混淆签名材料数据;签名部件根据混淆签名材料数据执行数字签名,获取签名结果。

具体而言,可以在图形加速器(GPU)中实现签名材料生成器、混淆倍增器,在密码卡中实现签名部件。此时,可以根据GPU每个线程的ID来计算一个不同的宽度参数s,从而提高程序计算的并发性。

本发明数字签名密码设备实施例3:

为了解决传统技术在抵抗线性攻击方面存在弱点,且受限于硬件设备的性能,难以满足海量用户并发执行的签名需求,制约了数字签名效率的问题,同时基于以上数字签名方法的技术思想,本发明还提供了一种数字签名密码设备实施例3;图9为本发明数字签名密码设备实施例3的结构示意图;如图3所示,还可以在同一个密码设备,例如密码卡中实现签名材料生成器、混淆倍增器和签名部件的功能。如果在密码卡外部实现签名材料生成器,然后送入密码卡内部完成后续处理,攻击者可以通过输入一组具有相同随机数k的签名材料,进而通过数学手段获得用户私钥。在密码卡的工作环境不受控的环境下,必须保证签名材料也在密码卡内部产生,才能避免泄漏用户私钥。

本发明数字签名密码设备的各实施例,无需产生真随机数再计算多倍点运算,而是通过对已知多倍点运算结果进行基于点加的混淆运算,从而抵抗线性攻击,并获得足够高的运算效率。基于低速硬件设备产生的随机数及点乘运算结果,采用混淆算法来产生更多的多倍点运算结果,从而提高签名的效率。通过混淆算法,使得混淆输出结果之间的相关性较低,可以有效抵抗线性攻击。经过检验本发明输出的随机序列仍然可以满足随机数检测规范的要求。

本发明数字签名密码系统实施例1:

为了解决传统技术在抵抗线性攻击方面存在弱点,且受限于硬件设备的性能,难以满足海量用户并发执行的签名需求,制约了数字签名效率的问题,同时基于以上数字签名方法、装置以及密码设备的技术思想,本发明还提供了一种数字签名密码系统实施例1;图10为本发明数字签名密码系统实施例1的结构示意图,如图10所示,可以包括第一密码设备、第二密码设备和中央处理器;第一密码设备包括签名材料生成器;第二密码设备包括签名部件和混淆倍增器;

签名材料生成器获取椭圆曲线上的多倍点点乘运算结果,并根据点乘运算结果,生成签名材料数据;

中央处理器从签名材料生成器中获取述签名材料数据,并将签名材料数据传输给混淆倍增器;

混淆倍增器对签名材料数据进行混淆运算处理,得到混淆签名材料数据;签名部件根据混淆签名材料数据执行数字签名,获取签名结果。

具体而言,可以在一个密码设备中实现签名材料生成器,在另一个密码设备中实现混淆倍增器和签名部件,两个密码设备中分别设置一个预共享密钥,由CPU从一个密码设备中获取签名材料,然后送入另一个密码设备中使用。本实施例也可以避免泄漏随机数,同时可以将负载分配到不同的密码设备,获得更佳的算法执行效率。本发明各实施例中的密码设备可以包括加密机、动态口令、密码键盘以及密钥分发器等。

本发明数字签名密码系统,无需产生真随机数再计算多倍点运算,而是通过对已知多倍点运算结果进行基于点加的混淆运算,从而抵抗线性攻击,并获得足够高的运算效率。基于低速硬件设备产生的随机数及点乘运算结果,采用混淆算法来产生更多的多倍点运算结果,从而提高签名的效率。通过混淆算法,使得混淆输出结果之间的相关性较低,可以有效抵抗线性攻击。经过检验本发明输出的随机序列仍然可以满足随机数检测规范的要求。

需要说明的是,以上本发明数字签名密码设备以及数字签名密码系统各实施例中的各器件或设备可以对应实现上述数字签名方法各实施例中的方法步骤,此处不再赘述其具体的实现过程。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1