基于蒙哥马利模乘的数据处理方法、模乘运算方法及装置与流程

文档序号:11917459阅读:455来源:国知局
基于蒙哥马利模乘的数据处理方法、模乘运算方法及装置与流程

本发明涉及数据加密的技术领域,具体涉及一种基于蒙哥马利模乘的数据处理方法、模乘运算方法及装置。



背景技术:

RSA、ECC和SM2是目前广泛使用的公钥密码算法。其中,RSA算法中的模幂运算、ECC和SM2算法中的点乘运算,都会大量使用到大数模乘。可以说,大数模乘是上述公钥加密算法中的核心运算,直接决定了上述公钥加密算法的性能。

蒙哥马利模乘是目前主流的大数模乘实现方法。相对于对输入数据直接进行模乘运算,蒙哥马利模乘不仅可以节省一倍的存储空间,还可以避免除法运算,通过移位的方式达到取模的效果,有效提高数据的处理效率。

然而,目前在实现任意长度的蒙哥马利模乘运算时,计算量较大,且计算效率较低。



技术实现要素:

本发明解决的技术问题是如何降低蒙哥马利模乘器运算的计算量,提高计算效率。

为解决上述技术问题,本发明实施例提供一种基于蒙哥马利模乘的数据处理方法,所述方法包括:

当接收到模数N时,计算得到第一值s2,以根据所述第一值s2,调用蒙哥马利模乘器,对待处理的数据执行模乘运算;采用如下步骤计算所述第一值s2:

将所述模数N左移n-c位,获得N1;计算R对N1取模后的值,得到计算结果s1,并将所述s1写入至第一存储器,其中,R=2n,w为所述蒙哥马利模乘器的位长,k为满足k*w≥c的最小整数,n=k*w,c为所述模数N的位长,k及N均为正整数;

对所述第一存储器的值s1执行一次模加运算后,得到计算结果s21,将所述计算结果s21作为第二存储器的初始值写入至所述第二存储器;调用所述蒙哥马利模乘器对所述第二存储器的初始值s21执行n-1次模乘运算,并将第n-1次模乘运算的结果R2mod N作为所述第一值s2输出。

本发明实施例还提供了一种模乘运算方法,所述方法包括:

按照上述的基于蒙哥马利模乘的数据处理方法计算获得第一值s2;

当接收到待处理的数据A及B时,根据所述第一值s2,对所述待处理的数据A与R2执行蒙哥马利模乘运算,获得运算结果y1,以及计算所述待处理的数据B与R2执行蒙哥马利模乘运算,获得运算结果y2;

对运算结果y1和y2执行蒙哥马利模乘运算,获得运算结果y3;

对运算结果y3与数值1执行蒙哥马利模乘运算,获得所述待处理的数据A及B的模乘运算结果y。

本发明实施例还提供了一种基于蒙哥马利模乘的数据处理装置,所述装置包括:

第一计算单元,适于当接收到模数N时,计算得到第一值s2,以根据所述第一值s2,调用蒙哥马利模乘器,对待处理的数据执行模乘运算;所述第一计算单元包括:

第一计算子单元,适于将所述模数N左移n-c位,获得N1;计算R对N1取模后的值,得到计算结果s1,并将所述s1写入至第一存储器,其中,R=2n,w为所述蒙哥马利模乘器的位长,k为满足k*w≥c的最小整数,n=k*w,c为所述模数N的位长,k及N均为正整数;

第二计算子单元,适于对所述第一存储器的值s1执行一次模加运算后,得到计算结果s21,将所述计算结果s21作为第二存储器的初始值写入至所述第二存储器;调用所述蒙哥马利模乘器对所述第二存储器的初始值s21执行n-1次模乘运算,并将第n-1次模乘运算的结果R2mod N作为所述第一值s2输出。

本发明实施例还提供了一种模乘运算装置,所述装置包括:

上述的基于蒙哥马利模乘的数据处理装置,通过所述数据处理装置获得 所述第一值s2;

第二计算单元,适于当接收到待处理的数据A及B时,根据所述第一值s2,对所述待处理的数据A与R2执行蒙哥马利模乘运算,获得运算结果y1,以及计算所述待处理的数据B与R2执行蒙哥马利模乘运算,获得运算结果y2;

第三计算单元,适于对运算结果y1和y2执行蒙哥马利模乘运算,获得运算结果y3;

第四计算单元,适于对运算结果y3与数值1执行蒙哥马利模乘运算,获得所述待处理的数据A及B的模乘运算结果y。

与现有技术相比,本发明实施例的技术方案具有以下有益效果:

在基于蒙哥马利模乘计算中间值s1时,通过将位长为c的模数N左移n-c位,可以获得位长为n的N1,仅需要n-c次模加运算即可获得位长为n的s1的值,因此相对于现有技术中的方案,在获得s1的值的过程中,可以有效减少计算量,提高计算效率。并且由于c为任意值,因此,应用所述方法可以实现任意长度的蒙哥马利模乘运算。

附图说明

图1是本发明实施中一种模乘运算方法的流程图;

图2是本发明实施例中一种基于蒙哥马利模乘的数据处理方法的流程图;

图3是本发明实施中一种基于蒙哥马利模乘的数据处理装置的结构示意图;

图4是本发明实施中一种模乘运算装置的结构示意图。

具体实施方式

目前,在基于蒙哥马利模乘计算s1时,通常令s1=0xFF…F-N+1,其中,0xFF…F的位长为n,n为机器字长的整数倍,N为模数,进而可以通过0xFF…F与模数N之间的模减运算来获得s1的值,此时s1的位长为n。因此,上述方法仅能实现机器字长整数倍的蒙哥马利模乘运算。

并且,由于硬件实现模减运算时,如果两数相减的结果超过硬件的位长 即溢出,则需要对两数相减的结果再与模数N相减,直至与模数相减后的结果没有溢出,并将此时与模数相减后的结果作为两数模减运算的结果,因此,在基于蒙哥马利模乘计算s1时,通常需要进行2n-c次减法运算,才能获得s1的值,导致模乘运算的计算量仍然较大,计算效率较低。

针对上述问题,本发明实施例提供了一种基于蒙哥马利模乘的数据处理方法,所述方法在基于蒙哥马利模乘计算s1时,通过将位长为c的模数N左移n-c位,可以获得位长为n的N1,进而可以通过n-c次模加运算来获得位长为n的s1的值。相对于现有技术中的方案,在获得s1的值的过程中,可以有效减少计算量,提高计算效率。并且由于c为任意值,因此,应用所述方法可以帮助实现任意长度的蒙哥马利模乘运算。

为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

如图1所示,本发明实施例提供了一种模乘运算方法,所述方法可以包括如下步骤:

步骤11,计算第一值s2。

在具体实施中,所述第一值s2的值为R2mod N,位长为c。其中,R=2n,w通常为机器字长的蒙哥马利模乘器的位长,例如,w的值通常为8bit,16bit或32bit等。k为满足k*w≥c的最小整数,n=k*w,c为所述模数N的位长,c、k及N均为正整数。

需要说明的是,在接收到模数N的值时,即可计算第一值s2。这样,在接收到待处理的数据时,即可根据所述第一值s2将待处理的数据由实数域转换为蒙哥马利域,以对待处理的数据进行模乘运算。

步骤12,当接收到待处理的数据A及B时,根据所述第一值s2,对所述待处理的数据A与R2执行蒙哥马利模乘运算,获得运算结果y1,以及计算所述待处理的数据B与R2执行蒙哥马利模乘运算,获得运算结果y2。

在具体实施中,所述待处理的数据A及B的位长为任意值。当接收到待处理的数据A时,对所述待处理的数据A与R2执行蒙哥马利模乘运算,即计算M(A,R2,R,N),获得运算结果y1=A*R2*R-1mod N=A*R mod N。当 接收到待处理的数据B时,对所述待处理的数据B与R2执行蒙哥马利模乘运算,即计算M(B,R2,R,N),获得运算结果y2=B*R2*R-1mod N=B*R mod N。

步骤13,对运算结果y1和y2执行蒙哥马利模乘运算,获得运算结果y3。

在具体实施中,对运算结果y1和y2执行蒙哥马利模乘运算,即计算M(A*R,B*R,R,N),获得运算结果y3=(A*R)*(B*R)*R-1mod N=A*B*R mod N。

步骤14,对运算结果y3与数值1执行蒙哥马利模乘运算,获得所述待处理的数据A及B的模乘运算结果y。

在具体实施中,对运算结果y3执行蒙哥马利模乘运算,即计算M(A*B*R,1,R,N)mod N,获得运算结果y=A*B*R*1*R-1mod N=A*B mod N,且y的位长为c。

通常情况下,当所述第一值s2的位长为c时,调用蒙哥马利模乘器可以获得位长为c的运算结果。而当所述第一值s2的位长为n时,c≠n,调用蒙哥马利模乘器仍然可以获得位长为c的运算结果。以下结合对蒙哥马利模乘运算的具体过程对运算结果的位长证明如下:

以蒙哥马利模乘器的输入数据为A及B为例,A及B的位长为k*w,w为所述蒙哥马利模乘器的位长。模数N的低w位为N[0],N[0]*N[0]’mod r=1,r=2w。令m=r-N[0]’,C’的初始值为0。

所述蒙哥马利模乘器每次对输入数据A及B的w位进行处理。所述蒙哥马利模乘器对输入数据A及B的第i个w位进行处理时,i为整数,依次执行以下步骤,直至获得对输入数据A及B的第i个w位进行处理的运算结果C’[i]:q=(C’[0]+A[i]*B[0])*m mod r;C’[i]=(C’[i-1]+A[i]*B+q*N)/r;当C’[i]≥N时,将C’[i]-N的结果作为所述C’[i]的值。当i在0至k-1内依次取值时,可以获得C’[k-1]。

因此,当A<N,B<N或者A>N,B>N时,均可以得出C’[k-1]-N<(r*N+r*N)/r–N=2N-N=N,进而得到C’[k-1]<2N,由此可以得出,所述蒙哥马利模乘器每次对输入数据A及B进行模乘运算的处理结果位长小于c。

在具体实施中,可以采用多种方法计算第一值s2,以根据所述第一值s2,调用蒙哥马利模乘器,对待处理的数据执行模乘运算。为了降低计算量,在本发明的一实施例中,可以采用如图2所示的方法计算第一值s2。具体地,所述方法可以包括如下步骤:

步骤21,将所述模数N左移n-c位,获得N1;计算R对N1取模后的值,得到计算结果s1,并将所述s1写入至第一存储器。

也就是说,当获得n以及模数N的位长c后,根据所述n及c的值,将所述模数N左移n-c位,即N<<<n-c,获得N1。此时N的位长为n位。再计算R mod N1,获得位长为n的s1。

步骤22,对所述第一存储器的值s1执行一次模加运算,获得计算结果s21,并将所述计算结果s21作为第二存储器的初始值写入至所述第二存储器;调用所述蒙哥马利模乘器对所述第二存储器的初始值执行n-1次模乘运算,并将第n-1次模乘运算的结果R2mod N作为所述第一值s2输出。

在具体实施中,令s21=(s1+s1)mod N,并将s21作为第二存储器的初始值。

调用蒙哥马利模乘器对s21执行1次模乘运算,获得计算结果s22=M(s21,s21,R,N);

调用蒙哥马利模乘器对s22执行1次模乘运算,获得计算结果s23=M(s22,s22,R,N);

调用蒙哥马利模乘器对s23执行1次模乘运算,获得计算结果s24=M(s23,s23,R,N);

……

依此类推,直至执行蒙哥马利模乘运算的次数为n-1次,获得计算结果s2=s2n=M(s2n-1,s2n-1,R,N)。=R2mod N,即获得第一值。此时可以将所述第一值s2输出。

由于所述s1的位长为n,因此s2的位长也为n。

由上述内容可知,采用图2中所示实施例的方法计算s1时,通过将位长 为c的模数N左移n-c位,可以获得位长为n的N1,进而可以通过n-c次模加运算能获得位长为n的s1的值,而非执行2n-c次模加运算才能获得s1的值,因此可以有效减少计算量,尤其在n>c时,效果更加明显。并且,由于c为任意值,因此应用上述方法可以实现任意位长的蒙哥马利模乘运算。

为了使本领域技术人员更好地理解和实现本发明,以下对上述方法对应的装置进行详细描述。

如图3所示,本发明实施例提供了一种基于蒙哥马利模乘的数据处理装置,所述装置可以包括:第一计算单元31。其中,所述第一计算单元31适于当接收到模数N时,计算第一值s2,以根据所述第一值s2,调用蒙哥马利模乘器,对待处理的数据执行模乘运算。

在具体实施中,所述第一计算单元31可以包括:第一计算子单元311,以及第二计算子单元312。其中:

所述第一计算子单元311适于将所述模数N左移n-c位,获得N1;计算R对N1取模后的值,得到计算结果s1,并将所述s1写入至第一存储器,其中,R=2n,w为所述蒙哥马利模乘器的位长,k为满足k*w≥c的最小整数,n=k*w,c为所述模数N的位长,k及N均为正整数。

所述第二计算子单元312适于对所述第一存储器的值s1执行一次模加运算后,得到计算结果s21,将所述计算结果s21作为第二存储器的初始值写入至所述第二存储器;调用所述蒙哥马利模乘器对所述第二存储器的初始值s21执行n-1次模乘运算,并将第n-1次模乘运算的结果=R2mod N,即获得第一值。此时可以将所述第一值s2输出。

如图4所示,本发明实施例还提供了一种模乘运算装置40,所述装置40可以包括上述基于蒙哥马利模乘的数据处理装置,第二计算单元41,第三计算单元42,第四计算单元43。其中:

通过所述第一计算单元31获得所述第一值s2后,所述第二计算单元41当接收到待处理的数据A及B时,根据所述第一值s2,对所述待处理的数据A与R2执行蒙哥马利模乘运算,获得运算结果y1,以及计算所述待处理的数据B与R2执行蒙哥马利模乘运算,获得运算结果y2。

所述第三计算单元42适于对运算结果y1和y2执行蒙哥马利模乘运算,获得运算结果y3。

所述第四计算单元43适于对运算结果y3与数值1执行蒙哥马利模乘运算,获得所述待处理的数据A及B的模乘运算结果y。

由上述内容可以看出,通过本发明实施例中基于蒙哥马利模乘的数据处理装置,可以在实现任意位长的蒙哥马利模乘运算的同时,有效降低计算量,提高计算效率。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

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