本发明涉及数据加密的技术领域,具体涉及一种基于蒙哥马利模乘的数据处理方法、模乘运算方法和装置。
背景技术:
RSA、ECC和SM2是目前广泛使用的公钥密码算法。其中,RSA算法中的模幂运算、ECC和SM2算法中的点乘运算,都会大量使用到大数模乘。可以说,大数模乘是上述公钥加密算法中的核心运算,直接决定了上述公钥加密算法的性能。
蒙哥马利模乘是目前主流的大数模乘实现方法。相对于对输入数据直接进行模乘运算,蒙哥马利模乘不仅可以节省一倍的存储空间,还可以避免除法运算,通过移位的方式达到取模的效果,有效提高数据的处理效率。
然而,目前在实现任意长度的蒙哥马利模乘运算时,计算量仍然较大,导致计算效率较低。
技术实现要素:
本发明解决的技术问题是如何降低蒙哥马利模乘器运算的计算量,提高计算效率。
为解决上述技术问题,本发明实施例提供一种基于蒙哥马利模乘的数据处理方法,所述方法包括:
当接收到模数N时,计算第一值s2,以根据所述第一值s2,调用蒙哥马利模乘器,对待处理的数据执行模乘运算;采用如下步骤计算所述第一值s2:
获取第一存储器的初始值s10,所述初始值s10的位长为n,且高n-c位为0,低c位为1,w为所述蒙哥马利模乘器的位长,k为满足k*w≥c的最小整数,n=k*w,c为所述模数N的位长,c、k及N均为正整数;
将所述初始值s10与模数N的差再与1求和,得到计算结果s11,并将所 述计算结果s11写入所述第一存储器;对所述第一存储器的值s11执行n-c次模加运算,得到计算结果s1n-c+1;将计算结果s1n-c+1对N取模后的结果s1写入至所述第一存储器;
对所述第一存储器的值s1执行一次模加运算,获得计算结果s21,并将所述计算结果s21作为第二存储器的初始值写入至所述第二存储器;调用所述蒙哥马利模乘器对所述第二存储器的初始值执行n-1次模乘运算,并将第n-1次模乘运算的结果R2mod N作为所述第一值s2输出,其中R=2n。
本发明实施例还提供了一种模乘运算方法,所述方法包括:
按照上述的基于蒙哥马利模乘的数据处理方法计算获得第一值s2;
当接收到待处理的数据A及B时,根据所述第一值s2,对所述待处理的数据A与R2执行蒙哥马利模乘运算,获得运算结果y1,以及计算所述待处理的数据B与R2执行蒙哥马利模乘运算,获得运算结果y2;
对运算结果y1和y2执行蒙哥马利模乘运算,获得运算结果y3;
对运算结果y3与数值1执行蒙哥马利模乘运算,获得所述待处理的数据A及B的模乘运算结果y。
本发明实施例还提供了一种基于蒙哥马利模乘的数据处理装置,所述装置包括:
第一计算单元,适于当接收到模数N时,计算第一值s2,以根据所述第一值s2,调用蒙哥马利模乘器,对待处理的数据执行模乘运算,所述第一计算单元包括:
获取子单元,适于获取第一存储器的初始值s10,所述初始值s10的位长为n,且高n-c位为0,低c位为1,w为所述蒙哥马利模乘器的位长,k为满足k*w≥c的最小整数,n=k*w,c为所述模数N的位长,c、k及N均为正整数;
第一计算子单元,适于将所述初始值s10与模数N的差再与1求和,得到计算结果s11,并将所述计算结果s11写入所述第一存储器;对所述第一存储器的值s11执行n-c次模加运算,得到计算结果s1n-c+1;将计算结果s1n-c+1对 N取模后的结果s1写入至所述第一存储器;
第二计算子单元,适于对所述第一存储器的值s1执行一次模加运算,获得计算结果s21,并将所述计算结果s21作为第二存储器的初始值写入至所述第二存储器;调用所述蒙哥马利模乘器对所述第二存储器的初始值执行n-1次模乘运算,并将第n-1次模乘运算的结果R2mod N作为所述第一值s2输出,其中R=2n。
本发明实施例还提供了一种模乘运算装置,所述装置包括:
上述的基于蒙哥马利模乘的数据处理装置,通过所述数据处理装置获得所述第一值s2;
第二计算单元,适于当接收到待处理的数据A及B时,根据所述第一值s2,对所述待处理的数据A与R2执行蒙哥马利模乘运算,获得运算结果y1,以及计算所述待处理的数据B与R2执行蒙哥马利模乘运算,获得运算结果y2;
第三计算单元,适于对运算结果y1和y2执行蒙哥马利模乘运算,获得运算结果y3;
第四计算单元,适于对运算结果y3与数值1执行蒙哥马利模乘运算,获得所述待处理的数据A及B的模乘运算结果y。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
在基于蒙哥马利模乘计算s1时,通过设置第一存储器的初始值s10的位长为n,且高n-c位为0,低c位为1,进而可以在获得s11后,仅通过n-c次模加运算即能获得s1的值,由此可以根据s1获得第一值s2。相对于现有技术中的方案,可以有效减少计算量,提高计算效率。并且,由于c为任意值,因此,应用所述方法可以实现任意长度的蒙哥马利模乘运算。
附图说明
图1是本发明实施中一种模乘运算方法的流程图;
图2是本发明实施例中一种基于蒙哥马利模乘的数据处理方法的流程图;
图3是本发明实施中一种基于蒙哥马利模乘的数据处理装置的结构示意图;
图4是本发明实施中一种模乘运算装置的结构示意图。
具体实施方式
目前,在基于蒙哥马利模乘计算s1时,通常令s10=0xFF…F-N+1,其中,0xFF…F的位长为n,n为机器字长的整数倍,N为模数,进而可以通过0xFF…F与模数N之间的模减运算来获得s1的值,此时s1的位长为n。因此,上述方法仅能实现机器字长整数倍的蒙哥马利模乘运算。并且,由于硬件实现模减运算时,如果两数相减的结果超过硬件的位长即溢出,则需要对两数相减的结果再与模数N相减,直至与模数相减后的结果没有溢出,并将此时与模数相减后的结果作为两数模减运算的结果,因此,在基于蒙哥马利模乘计算s1时,通常需要进行2n-c次减法运算,才能获得s1的值,导致模乘运算的计算量仍然较大,计算效率较低。
针对上述问题,本发明实施例提供了一种基于蒙哥马利模乘的数据处理方法,所述方法在基于蒙哥马利模乘计算s1时,通过设置第一存储器的初始值s10的位长为n,且高n-c位为0,低c位为1,进而可以在对s11执行n-c次模加运算后,获得位长为n的s11,从而可以根据s11获得s1的值,最终根据s1的值对待处理的数据进行后续的模乘运算。由于c为任意值,因此,利用所述方法可以帮助实现任意位长的蒙哥马利模乘运算。并且,相对于现有技术中的方案,仅通过n-c次模加运算即可获得s1的值,因此,在实现任意位长的蒙哥马利模乘运算过程中,可以有效减少计算量,提高计算效率。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
如图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时,对所述待处理的数据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与数值1执行蒙哥马利模乘运算,即计算M(A*B*R,1,R,N)mod N,获得运算结果y=A*B*R*1*R-1mod N=A*B mod N,且y的位长为c。
在具体实施中,可以采用多种方法计算第一值s2,以根据所述第一值s2,调用蒙哥马利模乘器,对待处理的数据执行模乘运算。为了降低计算量,在本发明的一实施例中,可以采用如图2所示的方法计算第一值s2。具体地,所述方法可以包括如下步骤:
步骤21,获取第一存储器的初始值s10,所述初始值s10的位长为n,且高n-c位为0,低c位为1。
也就是说,当获得n以及模数N的位长c后,根据所述n及c的值,可 以获得s10。例如,当n=5,c=3时,s10=00111。当n=8,c=7时,s10=01111111。
步骤22,将所述初始值s10与模数N的差再与1求和,得到计算结果s11,并将所述计算结果s11写入所述第一存储器;对所述第一存储器的值s11执行n-c次模加运算,得到计算结果s12;将计算结果s12对N取模后的结果s1写入至所述第一存储器。
在具体实施中,令s11=s10-N+1。
对s11执行1次模加运算后,获得s12=(s11+s11)mod N;
对s12执行1次模加运算后,获得s13=(s12+s12)mod N;
对s13执行1次模加运算后,获得s14=(s13+s13)mod N;
……
依此类推,直至执行模加运算的次数为n-c次,获得第n-c次模加运算的结果s1n-c+1=(s1n-c+s1n-c)mod N。令s1=s1n-c+1mod N,将s1写入至所述第一存储器。由于s1是根据s10获得的,因此所述s1的位长为c。
步骤23,对所述第一存储器的值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输出。
由于所述s2也是根据s10获得的,因此s2的位长也为n。
由上述内容可知,采用图2中所示实施例的方法计算s1时,通过设置s10的位长为n,且高n-c位为0,低c位为1,因此,对s11执行n-c次模加运算后,即可获得位长为c的s1,并可以利用位长为c的s1直接进行后续的模乘运算。相对于通过执行2n-c次减法运算来获得s1的值,可以有效减少计算量,尤其在n>c时,效果更加明显。并且,由于c为任意值,因此应用上述方法可以实现任意位长的蒙哥马利模乘运算。
为了使本领域技术人员更好地理解和实现本发明,以下对上述方法对应的装置进行详细描述。
如图3所示,本发明实施例提供了一种基于蒙哥马利模乘的数据处理装置,所述装置可以包括:第一计算单元31。其中,所述第一计算单元31适于当接收到模数N时,计算第一值s2,以根据所述第一值s2,调用蒙哥马利模乘器,对待处理的数据执行模乘运算。
在具体实施中,所述第一计算单元31可以包括:获取子单元310,第一计算子单元311以及第二计算子单元312。其中:
所述获取子单元310适于获取第一存储器的初始值s10,所述初始值s10的位长为n,且高n-c位为0,低c位为1,n为蒙哥马利模乘的位长,且n=k*w,w为所述蒙哥马利模乘器的位长,k为满足k*w≥c的最小整数,c为所述模数N的位长,c、k及N均为正整数。
所述第一计算子单元311适于将所述初始值s10与模数N的差再与1求和,得到计算结果s11,并将所述计算结果s11写入所述第一存储器;对所述第一存储器的值s11执行n-c次模加运算,得到计算结果s1n-c+1;将计算结果s1n-c+1对N取模后的结果s1写入至所述第一存储器。
所述第二计算子单元312适于对所述第一存储器的值s1执行一次模加运算,获得计算结果s21,并将所述计算结果s21作为第二存储器的初始值写入 至所述第二存储器;调用所述蒙哥马利模乘器对所述第二存储器的初始值执行n-1次模乘运算,并将第n-1次模乘运算的结果R2mod N作为所述第一值s2输出,其中R=2n。
如图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、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。