CN115344237A - 结合Karatsuba和蒙哥马利模乘的数据处理方法 - Google Patents
结合Karatsuba和蒙哥马利模乘的数据处理方法 Download PDFInfo
- Publication number
- CN115344237A CN115344237A CN202211279542.8A CN202211279542A CN115344237A CN 115344237 A CN115344237 A CN 115344237A CN 202211279542 A CN202211279542 A CN 202211279542A CN 115344237 A CN115344237 A CN 115344237A
- Authority
- CN
- China
- Prior art keywords
- result
- register
- bit
- multiplier
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种结合Karatsuba和蒙哥马利模乘的数据处理方法,涉及数据加密领域,该方法结合Karatsuba和蒙哥马利模乘以快速实现模乘运算,利用小位宽的乘法器即可快速完成乘法运算,Karatsuba可以加速大整数乘法的运算,降低大整数乘法的计算复杂度,而且本申请在设计乘法器位宽时,直接预留进位,使得乘法运算和加法运算可以同步推进,从而可以优化整个数据处理过程的时序,进一步缩短计算耗时,从而可以在占用较小面积的基础上还可以有较少的计算耗时,电路面积与计算时间都有较优的表现。
Description
技术领域
本申请涉及数据加密领域,尤其是一种结合Karatsuba和蒙哥马利模乘的数据处理方法。
背景技术
公钥密码体制使用不同的加密密钥和解密密钥,其具有运算速度快的优点,被广泛应用于各种高性能数据密集应用场景中,可以为互联网通信提供安全及完整性保障。常见的公钥密码体制的加密算法包括RSA加密算法、ECC(Elliptic Curve Cryptography,椭圆曲线密码学)加密算法、IBC(Identity-Based Cryptograph,基于标识的密码学)加密算法等。其中,ECC加密算法比如SM2算法,IBC加密算法比如SM9算法。
公钥密码体制的各种加密算法的计算最终都会分解成有限域上的基本算数运算,包括模加运算、模减运算、模乘运算和模逆运算等。其中,模乘运算和模逆运算对资源和时间的消耗远大于模加运算和模减运算,而模逆运算的被调用频率较低且通常可以通过多次调用模乘运算来实现,因此高效完成模乘运算是提高加密算法的算法速度的核心。在加密算法中,大整数模乘(Large Integer Modular Multiplication)是常见的模乘运算,也是对计算耗时和资源消耗最严重的基本算数运算。大整数模乘可以表示为,其中、、均为二进制的大整数,其运算性能往往直接影响整个加密算法的性能。
在普通算法中,在计算模时,利用的是带余除法,除法运算需要太多次乘法,计算复杂度较高,蒙哥马利(Montgomery)模乘通过将除法计算转化成简单的移位计算,可以大幅度提高大整数模乘的运算速度。但是,以公钥密码体制中操作数和常见的有256bit的情况为例,一次完整蒙哥马利模乘需要进行3次完整256bit*256bit二进制乘法,目前常见的实现包括:(1)使用1个256bit*256bit乘法器;(2)使用若干256bit*32bit乘法器和若干加法器;(3)使用若干64bit*64bit乘法器和若干加法器;(4)使用若干2bit*2bit乘法器和若干加法器。在上述各种实现方法中,使用大位宽的乘法器会增加电路面积,消耗较多的硬件资源,尤其是使用256bit*256bit乘法器时往往导致电路面积过大而无法被接受,使用小位宽的乘法器虽然可以减小电路面积,但会导致需要多次运算迭代,使得计算时间大大增加。因此目前在加密算法中引入蒙哥马利模乘虽然可以一定程度上优化加密算法的性能,但是计算效率还是不够理想。
发明内容
本申请人针对上述问题及技术需求,提出了一种结合Karatsuba和蒙哥马利模乘的数据处理方法,本申请的技术方案如下:
一种结合Karatsuba和蒙哥马利模乘的数据处理方法,该数据处理方法包括:
将两个模乘操作数和分别拆分为若干个位宽的子操作数,通过模乘操作数和拆分得到的各个子操作数以及子操作数的加法结果利用位宽的乘法器、基于Karatsuba算法求解得到两个模乘操作数和的第一乘积结果,其中,乘法器的位宽满足子操作数的加法结果的位宽需求且小于预定阈值;
将第二乘积结果的低位结果以及位宽为的模乘操作数分别拆分为若干个位宽的子操作数,通过和模乘操作数拆分得到的各个子操作数以及子操作数的加法结果利用位宽的乘法器、基于Karatsuba算法求解得到和模乘操作数的第三乘积结果;
本申请的有益技术效果是:
本申请公开了一种结合Karatsuba和蒙哥马利模乘的数据处理方法,该方法结合Karatsuba和蒙哥马利模乘可以快速计算模乘的方法,Karatsuba可以加速大整数乘法的运算,且Karatsuba还可以得到想要的指定的计算位宽,通过小位宽的乘法器即可快速完成乘法运算,降低大整数乘法的计算复杂度,而且本申请在设计乘法器位宽时,直接预留进位,使得乘法运算和加法运算可以同步推进,从而可以优化整个数据处理过程的时序,进一步缩短计算耗时,从而可以在占用较小面积的基础上还可以有较少的计算耗时,电路面积与计算时间都有较优的表现。
进一步的,在电路面积可接受的基础上,可以增加使用的乘法器结合并行运算设计进一步缩短计算耗时,具有较高的运算并行度,从而可以提高模乘运算的运算效率。
附图说明
图1是本申请一个实施例的数据处理方法的方法流程图。
图2是本申请一个实施例的数据处理方法的求解示意图。
图3是一个实施例中用于实现本申请的数据处理方法的数据处理电路的电路结构图。
具体实施方式
下面结合附图对本申请的具体实施方式做进一步说明。
本申请公开了一种结合Karatsuba和蒙哥马利模乘的数据处理方法,该数据处理方法用于高效处理得到的模乘结果,其中,模乘操作数、和都是二进制的大整数,所谓的大整数表示模乘操作数的位宽超过预设值,比如模乘操作数的位宽达到64bit或者达到256bit即称为大整数。该数据处理方法得到的模乘结果的方法包括如下步骤,请参考图1所示的流程图以及图2所示的计算示意图:
在本申请中,由于和均为大整数,直接计算和的全积较为耗时,因此为了降低计算复杂度,将两个模乘操作数和分别拆分为若干个位宽的子操作数,每个子操作数包括相应的模乘操作数的连续位的内容,且各个子操作数的内容连续而不重合。
由于本申请将大位宽的模乘操作数拆分为小位宽的子操作数,然后以小位宽的子操作数以及子操作数的加法结果作为处理对象执行乘法运算,因此本申请使用的乘法器的位宽小于预定阈值,该预定阈值可以自定义设置,也即本申请使用小位宽的乘法器即可,从而减小电路面积,而且乘法规模也较小,从而减少计算耗时。
另外,由于本申请不仅要对子操作数执行乘法操作,而且要对子操作数的加法结果执行乘法操作,而子操作数的加法结果由多个子操作数执行加法操作得到,在执行加法操作过程中可能会产生进位,导致子操作数的加法结果的位宽大于子操作数的位宽。因此为了适应子操作数的加法结果的位宽,本申请使用的乘法器的位宽且满足子操作数的加法结果的位宽需求,从而可以为进位预留位宽,实现乘法运算与加法运算的同步推进,从而进一步优化计算时序,减少计算耗时。
步骤130,基于蒙哥马利模乘计算第一乘积结果的低位结果与中间参数的第二乘积结果。上述步骤120计算得到的第一乘积结果包括高位部分的以及低位部分的,仅取低位结果进入步骤130与中间参数相乘,其中,中间参数,,且和的最大公约数为1。
而与上述步骤120类似,该步骤中,与的位宽也都为,与也都是大整数,直接计算与的全积同样较为耗时。所以该步骤的计算方法与上述步骤120类似,将第二乘积结果的低位结果以及位宽为的模乘操作数分别拆分为若干个位宽的子操作数,通过和拆分得到的各个子操作数以及子操作数的加法结果利用位宽的乘法器、基于Karatsuba算法求解得到和模乘操作数的第三乘积结果。
步骤150,基于第三乘积结果输出的结果,即作为的模乘结果。在得到第三乘积结果后需要与第一乘积结果相加得到,而使用蒙哥马利模乘的目的是最后得到的的低位部分为零,这样对进行移位操作即能得到最终的模乘结果。因此只需确定是否会通过的低位部分和的低位部分相加产生进位即可正确计算的高位部分来得到最终的模乘结果。通过验证可知,最终计算时并不需要添加和,因为:(1)如果,那么会使第二乘积结果,继而会使第三乘积结果,因此,不会产生进位。(2)如果,则一定是非零的二进制整数,因为结果要为零,此时总是生成的进位,那么只需要计算即可。
在本申请提供的方案中,使用Karatsuba算法与蒙哥马利模乘结合来计算的模乘结果,通过Karatsuba算法完成步骤120和步骤140两步中的大整数乘法运算,从而可以减少计算耗时。而且直接预留进位所需的位宽,使用满足子操作数的加法结果的位宽需求的乘法器来实现乘法运算,实现乘法运算与加法运算的同步推进,进一步减少计算耗时。
在一个实施例中,针对现有加密算法常见的256bit操作数的应用场景,本申请提供的数据处理方法中两个模乘操作数和的位宽均为,对每个模乘操作数拆分得到的4个子操作数的位宽均为。第二乘积结果的低位结果以及模乘操作数的位宽均为,对拆分得到的4个子操作数的位宽均为,对模乘操作数拆分得到的4个子操作数的位宽均为。基于本申请提供的方法,对每个模乘操作数拆分得到的多个子操作数相加得到的加法结果的位宽最多为66bit,对拆分得到的多个子操作数相加得到的加法结果的位宽最多为66bit,对模乘操作数拆分得到的多个子操作数相加得到的加法结果的位宽最多为66bit。该数据处理方法使用的乘法器的位宽,相比于直接使用64bit位宽的乘法器,使用66bit的乘法器时可以直接存储乘数的进位。
对于典型的模乘操作数、和都是256bit的场景,利用该实施例这种拆分成4个子操作数,使用66bit的乘法器实现的方法可以加快执行速度。同样针对模乘操作数、和都是256bit的场景:(1)当直接使用64bit的乘法器完成蒙哥马利模乘需要进行48个计算周期。(2)当基于FIOS(Finely Integrated Operand Scanning)、SOS(Separated Operand Scanning)、CIOS(Coarsely Integrated Operand Scanning)、FIPS(Finely Integrated Operand Scanning)、CIHS(Coarsely Integrated HybirdScanning) 这五种不同类型的蒙哥马利扩展算法,使用64bit的乘法器完成模乘运算时,可以将计算耗时降低至38个计算周期。(3)在使用本申请的数据处理方法,结合Karatsuba算法与蒙哥马利模乘,并利用单个66bit的乘法器完成时,只需个计算周期即可得到的模乘结果,其中,,符号表示向上取整。在取的情况下代入数据可计算得到可以将计算耗时降低至28个计算周期。
在另一个实施例中,进一步的,该数据处理方法使用多个乘法器结合并行运算设计,可以进一步减小计算大整数模乘的计算耗时。基于该实施例结合Karatsuba算法与蒙哥马利模乘,并利用个66bit的乘法器并行运算的场景,该数据处理方法通过个计算周期得到。其中,表示与乘法器的个数对应的额外计算周期数,是并行运算时不同电路器件必须增加的必要的等待周期,当使用的乘法器的个数不同的,所需的额外计算周期数也会存在不同。
但是增加乘法器会增加电路面积,因此综合考虑计算耗时和电路面积,在一个实施例中,使用两个66bit的乘法器实现该数据处理方法。以取、为例,通过并行运算设计可以使得,最终总计只需16个计算周期即可。而对比同样使用两个乘法器的FIOS蒙哥马利扩展算法,其在最优情况下需要使用4个额外计算周期数。FIOS、SOS、CIOS依次需要28个计算周期、24个计算周期和24个计算周期。因此本申请中这种方法,并行度更高,可以使用更少的计算周期完成,且所需的额外计算周期数也是相对较小的。
接下去,该实施例针对使用两个66bit的乘法器结合并行运算设计实现该数据处理方法的时序过程介绍如下:
上述步骤120和步骤140的计算过程是相同的,该实施例以基于Karatsuba算法求解得到任意两个位宽均为256bit的乘数和的乘积结果为例对这两种情况做统一描述。当乘数和分别为模乘操作数和时,对应得到的乘积结果即为第一乘积结果。当乘数和分别为和模乘操作数时,对应得到的乘积结果即为第三乘积结果。
在对乘数和拆分为子操作数时,对乘数拆分得到的4个64bit的子操作数、、和,其中,包括乘数的0到63位,包括乘数的64到127位,包括乘数的128到191位,包括乘数的192到255位。类似的,对乘数拆分得到的4个64bit的子操作数、、和,其中,包括乘数的0到63位,包括乘数的64到127位,包括乘数的128到191位,包括乘数的192到255位。
计算乘数的子操作数的加法结果包括:、、、以及。其中,在由子操作数计算得到、、和的过程中可能产生进位,所以、、和在加法产生的进位的作用下位宽最多为65bit。而又可能再产生进位,所以在加法产生的进位的作用下位宽最多为66bit。
在完成对乘数和的拆分后,使用位宽的乘法器计算乘数的子操作数与乘数的子操作数的乘积,以及使用位宽的乘法器计算乘数的子操作数的加法结果与乘数的子操作数的加法结果的乘积,继而计算得到乘数和的乘积结果。经过本申请的并行运算设计,通过五个计算周期即可以得到乘积结果,包括如下过程:
(1)在第一个计算周期,利用两个乘法器并行地分别计算以及,计算与之和并在当前计算周期结束后更新存入寄存器,计算和的位操作结果并在当前计算周期结束后更新存入寄存器。在一个实施例中,将作为高位部分、作为低位部分,执行二进制数拼接得到和的位操作结果,加快运算。
(2)在第二个计算周期,利用两个乘法器并行地分别计算以及,计算与之和并在当前计算周期结束后更新存入寄存器,计算和的位操作结果并在当前计算周期结束后更新存入寄存器。计算和的位操作结果与寄存器存储数据之和、并在当前计算周期结束后更新存入寄存器。这里的寄存器存储数据即为第一个计算周期更新存入的数据。在一个实施例中,将作为高位部分、将作为低位部分,直接执行二进制数拼接得到和的位操作结果。
(3)在第三个计算周期,利用两个乘法器并行地分别计算以及,计算与寄存器存储数据之差并暂时赋值给,计算与寄存器存储数据之差并暂时赋值给。在当前周期结束后将更新存入寄存器,在当前周期结束后将更新存入寄存器。计算与寄存器存储数据的位操作结果并在当前周期结束后更新存入寄存器,计算与寄存器存储数据的位操作结果并在当前周期结束后更新存入寄存器。
在一个实施例中,对左移64位并与寄存器存储数据相加得到位操作结果,对左移64位并与寄存器存储数据相加得到位操作结果。由于与寄存器存储数据的位操作结果可能产生进位,因此为了避免丢位,在该计算周期内执行逻辑运算得到所需的位操作结果,而不直接执行二进制数拼接。对于与寄存器存储数据的位操作结果同理。
(4)在第四个计算周期,利用两个乘法器并行地分别计算以及。计算与之和并在当前计算周期结束后更新存入寄存器,计算寄存器存储数据与寄存器存储数据之和、并在当前计算周期结束后更新存储入寄存器;计算和的位操作结果与寄存器存储数据之差并在当前计算周期结束后更新存储在寄存器。在一个实施例中,对左移128位并与相加得到位操作结果,同样的,为了避免丢位,通过执行逻辑运算得到所需的位操作结果。
(5)在第五个计算周期,利用一个乘法器计算,计算减去寄存器存储数据以及减去寄存器存储数据的结果并暂时赋值给,计算与寄存器存储数据的位操作结果并暂时赋值给;计算寄存器存储数据和寄存器存储数据的位操作结果与之和作为乘积结果。
在一个实施例中,将左移64位并与寄存器存储数据相加得到位操作结果,将寄存器存储数据作为高位部分、将寄存器存储数据作为低位部分执行二进制数拼接得到位操作结果。同理,为了避免丢位,通过执行逻辑运算得到与寄存器存储数据的位操作结果。而寄存器存储数据与寄存器存储数据的位操作结果不存在进位,因此可以直接执行二进制数拼接,以减少计算耗时。
在上述过程中,暂时赋值的数据可以在当前计算周期中继续使用,而使用到的寄存器存储数据都是当前计算周期取出的、上一个计算周期存入寄存器中的数据。各个计算周期内,除了乘法操作之外,没有数据依赖关系的其他计算步骤也都可以并行操作。
在一个实施例中,在使用两个66bit的乘法器结合并行运算设计的基础上,上述步骤130基于蒙哥马利模乘计算与中间参数的第二乘积结果需要使用到5个计算周期,在该步骤中,同样需要对和进行拆分,包括将256bit位宽的拆分为、、和,其中,包括的0到63位,包括的64到127位,包括的128到191位,包括的192到255位。将中间参数拆分为、、和,包括中间参数的0到63位,包括中间参数的64到127位,包括中间参数的128到191位,包括中间参数的192到255位。则通过5个计算周期计算得到第二乘积结果的过程包括:
(2)在第二个计算周期,利用两个乘法器并行地分别计算以及,计算寄存器存储数据左移64位与相加后的结果并暂时赋值给,在当前计算周期结束后将更新存入寄存器,计算、寄存器存储数据以及之和并在当前计算周期结束后更新存入寄存器。
基于上述实施例提供的利用两个66bit实现的并行运算过程,上述步骤150利用寄存器存储的数据输出所需的模乘结果的方法包括:当第一乘积结果的低位结果,且时输出。当第一乘积结果的低位结果,且时,输出。当第一乘积结果的低位结果,且时,输出。当第一乘积结果的低位结果,且时,输出。其中,表示第三乘积结果与寄存器存储数据之和。
在经过5个计算周期得到第一乘积结果,此时需要先将第一乘积结果存入寄存器中,由此会产生额外计算周期数。然后在下一个计算周期再从寄存器中取出第一乘积结果的低位结果使用并再经过5个计算周期得到第二乘积结果,最后经过5个计算周期得到第三乘积结果后,乘法部分已经全部计算完成,但是这个时候还需要执行若干个加法操作得到最终的模乘结果,但是目前的加法器已经都参与过计算,不能立刻再进行输入,这样会覆盖掉之前的结果,所以也需要先将第三乘积结果更新存入寄存器中,再放到下个周期进行计算,由此又产生了额外计算周期数。所以在使用两个66bit乘法器并行运算实现该数据处理方法时,总共产生了2个额外计算周期数,总计需要16个计算周期。在最后一个计算周期中,可以将寄存器中存储的第三乘积结果取出并按上述逻辑进行加法运算后最终输出模乘结果。
基于上述实施例描述的并行运算过程,该实施例对16个计算周期的计算过程分别描述如下:
上述16个计算周期中,计算周期1~5中的乘数和分别为模乘操作数和,对应得到的乘积结果即为第一乘积结果存入寄存器。计算周期6将寄存器中的数据读出得到,计算周期6~10基于蒙哥马利模乘计算与中间参数的第二乘积结果并存入寄存器。计算周期11将寄存器中的数据读出得到,计算周期11~15中的乘数和分别为和,对应得到的乘积结果即为第三乘积结果存入寄存器。计算周期16通过多次加法操作将可能输出的多种结果均计算出来并暂时赋值给、、、,最终输出其中一个所需的值作为模乘结果。在上述时序列表中,符号表示在计算周期结束后更新存入对应的寄存器,符号表示将计算结果暂时赋值给对应的参数以供当前计算周期后续操作步骤使用,符号为左移运算符,表示执行计算暂时赋值给,然后在当前计算周期结束后执行将更新存入寄存器,其他依次类推。
在一个实施例中,用于实现上述实施例的数据处理方法的数据处理电路请参考图3,包括两个位宽为66bit的乘法器M1和M2,还包括第一加法器组、第二加法器组、包含多个寄存器的寄存器组、四个四选一多路选择器MUX1、MUX2、MUX3和MUX4、两个五选二多路选择器MUX5和MUX6、一个数据选择器MUX7以及控制器,控制器控制所有四选一多路选择器、五选二多路选择器、数据选择器和寄存器组。
MUX1的四个输入端分别获取模乘操作数的四个子操作数,MUX2的四个输入端分别获取模乘操作数的四个子操作数,MUX3的四个输入端分别获取模乘操作数的四个子操作数,MUX4的四个输入端分别获取中间参数的四个子操作数。
MUX5的五个输入端分别连接MUX1的输出端、MUX2的输出端、MUX3的输出端、MUX4的输出端以及寄存器组的输出端,MUX5的两个输出端连接第一加法器组。
MUX6的五个输入端分别连接MUX1的输出端、MUX2的输出端、第一加法器组的两个输出端以及寄存器组的输出端。MUX6的一个输出端分别连接两个乘法器的一个输入端,MUX6的另一个输出端分别连接两个乘法器的另一个输入端。
MUX7的三个输入端分别连接两个乘法器的输出端以及寄存器的输出端,MUX7引出两个输出端连接第二加法器组的两个输入端,MUX7还引出输出端连接寄存器组的输入端,第二加法器组的输出端连接寄存器组的输入端。
基于图3所示的数据处理电路,输入的数据首先进入第一加法器组进行处理,输出的结果通过MUX6进入到两个66bit的乘法器中做并行的乘法运算,得到的一部分乘法结果存入寄存器组中的相应寄存器中,等待下次返回给输入。另一部分乘法结果进入第二加法器组中进行加法运算,得到的加法结果存入寄存器组中的相应寄存器中等待下次返回给输入。
在一个实施例中,第一加法器组包括4个64bit的加法器。第二加法器组包括2个132bit的加法器、1个256bit的加法器和1个384bit的加法器,该实施例提供的数据处理电路可以在电路面积可接受范围内,使用最少的寄存器和最少的加法器。
以上所述的仅是本申请的优选实施方式,本申请不限于以上实施例。可以理解,本领域技术人员在不脱离本申请的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本申请的保护范围之内。
Claims (10)
1.一种结合Karatsuba和蒙哥马利模乘的数据处理方法,其特征在于,所述数据处理方法包括:
将两个模乘操作数和分别拆分为若干个位宽的子操作数,通过模乘操作数和拆分得到的各个子操作数以及子操作数的加法结果利用位宽的乘法器、基于Karatsuba算法求解得到两个模乘操作数和的第一乘积结果,其中,乘法器的位宽满足子操作数的加法结果的位宽需求且小于预定阈值;
将所述第二乘积结果的低位结果以及位宽为的模乘操作数分别拆分为若干个位宽的子操作数,通过和模乘操作数拆分得到的各个子操作数以及子操作数的加法结果利用位宽的乘法器、基于Karatsuba算法求解得到和模乘操作数的第三乘积结果;
对乘数拆分得到的4个64bit的子操作数、、和,包括乘数的0到63位,包括乘数的64到127位,包括乘数的128到191位,包括乘数的192到255位;对乘数拆分得到的4个64bit的子操作数、、和,包括乘数的0到63位,包括乘数的64到127位,包括乘数的128到191位,包括乘数的192到255位;
在第二个计算周期,利用两个乘法器并行地分别计算以及,计算与之和并在当前计算周期结束后更新存入寄存器,计算和的位操作结果并在当前计算周期结束后更新存入寄存器,计算和的位操作结果与寄存器存储数据之和、并在当前计算周期结束后更新存入寄存器;
在第三个计算周期,利用两个乘法器并行地分别计算以及,计算与寄存器存储数据之差并暂时赋值给,计算与寄存器存储数据之差并暂时赋值给,在当前周期结束后将更新存入寄存器,在当前周期结束后将更新存入寄存器;计算与寄存器存储数据的位操作结果并在当前周期结束后更新存入寄存器,计算与寄存器存储数据的位操作结果并在当前周期结束后更新存入寄存器;
在第四个计算周期,利用两个乘法器并行地分别计算以及,计算与之和并在当前计算周期结束后更新存入寄存器,计算寄存器存储数据与寄存器存储数据之和、并在当前计算周期结束后更新存储入寄存器;计算和的位操作结果与寄存器存储数据之差并在当前计算周期结束后更新存储在寄存器;
在第二个计算周期,利用两个乘法器并行地分别计算以及,计算寄存器存储数据左移64位与相加后的结果并暂时赋值给,在当前计算周期结束后将更新存入寄存器,计算、寄存器存储数据以及之和并在当前计算周期结束后更新存入寄存器;
10.根据权利要求8所述的数据处理方法,其特征在于,用于实现所述数据处理方法的数据处理电路包括两个位宽为66bit的乘法器、第一加法器组、第二加法器组、包含多个寄存器的寄存器组、四个四选一多路选择器MUX1、MUX2、MUX3和MUX4、两个五选二多路选择器MUX5和MUX6、一个数据选择器MUX7以及控制器,所述控制器控制所有四选一多路选择器、五选二多路选择器、数据选择器和寄存器组;
MUX1的四个输入端分别获取模乘操作数的四个子操作数,MUX2的四个输入端分别获取模乘操作数的四个子操作数,MUX3的四个输入端分别获取模乘操作数的四个子操作数,MUX4的四个输入端分别获取中间参数的四个子操作数;
MUX5的五个输入端分别连接MUX1的输出端、MUX2的输出端、MUX3的输出端、MUX4的输出端以及所述寄存器组的输出端,MUX5的两个输出端连接所述第一加法器组;
MUX6的五个输入端分别连接MUX1的输出端、MUX2的输出端、所述第一加法器组的两个输出端以及所述寄存器组的输出端;MUX6的一个输出端分别连接两个乘法器的一个输入端,MUX6的另一个输出端分别连接两个乘法器的另一个输入端;
MUX7的三个输入端分别连接两个乘法器的输出端以及所述寄存器的输出端,MUX7引出两个输出端连接所述第二加法器组的两个输入端,MUX7还引出输出端连接所述寄存器组的输入端,所述第二加法器组的输出端连接所述寄存器组的输入端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211279542.8A CN115344237B (zh) | 2022-10-19 | 2022-10-19 | 结合Karatsuba和蒙哥马利模乘的数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211279542.8A CN115344237B (zh) | 2022-10-19 | 2022-10-19 | 结合Karatsuba和蒙哥马利模乘的数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115344237A true CN115344237A (zh) | 2022-11-15 |
CN115344237B CN115344237B (zh) | 2023-03-28 |
Family
ID=83957343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211279542.8A Active CN115344237B (zh) | 2022-10-19 | 2022-10-19 | 结合Karatsuba和蒙哥马利模乘的数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115344237B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827555A (zh) * | 2022-11-30 | 2023-03-21 | 格兰菲智能科技有限公司 | 数据处理方法、计算机设备、存储介质和乘法器结构 |
CN116225366A (zh) * | 2023-03-06 | 2023-06-06 | 开源网安物联网技术(武汉)有限公司 | 应用于嵌入式流水cpu内核的乘法指令扩展方法及装置 |
CN117134917A (zh) * | 2023-08-09 | 2023-11-28 | 北京融数联智科技有限公司 | 一种用于椭圆曲线加密的快速模运算方法和装置 |
CN117234458A (zh) * | 2023-11-09 | 2023-12-15 | 深圳大普微电子股份有限公司 | 乘法阵列、数据处理方法、处理终端及存储介质 |
CN117555515A (zh) * | 2024-01-11 | 2024-02-13 | 成都市晶蓉微电子有限公司 | 一种用于平衡性能与面积的数字asic串并结合乘法器 |
CN117785129A (zh) * | 2024-02-23 | 2024-03-29 | 蓝象智联(杭州)科技有限公司 | 一种基于gpu的蒙哥马利模乘运算方法 |
CN115827555B (zh) * | 2022-11-30 | 2024-05-28 | 格兰菲智能科技有限公司 | 数据处理方法、计算机设备、存储介质和乘法器结构 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0927928A1 (fr) * | 1997-12-31 | 1999-07-07 | Sgs Thomson Microelectronics Sa | Procédé de production amélioré d'un paramètre JO associé à la mise en oeuvre d'opérations modulaires selon la méthode de Montgomery |
CN1786900A (zh) * | 2005-10-28 | 2006-06-14 | 清华大学 | 基于改进的蒙哥马利算法的模乘器 |
CN103793199A (zh) * | 2014-01-24 | 2014-05-14 | 天津大学 | 一种支持双域的快速rsa密码协处理器 |
CN110351087A (zh) * | 2019-09-06 | 2019-10-18 | 南京秉速科技有限公司 | 流水线型的蒙哥马利模乘运算方法及计算装置 |
-
2022
- 2022-10-19 CN CN202211279542.8A patent/CN115344237B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0927928A1 (fr) * | 1997-12-31 | 1999-07-07 | Sgs Thomson Microelectronics Sa | Procédé de production amélioré d'un paramètre JO associé à la mise en oeuvre d'opérations modulaires selon la méthode de Montgomery |
CN1786900A (zh) * | 2005-10-28 | 2006-06-14 | 清华大学 | 基于改进的蒙哥马利算法的模乘器 |
CN103793199A (zh) * | 2014-01-24 | 2014-05-14 | 天津大学 | 一种支持双域的快速rsa密码协处理器 |
CN110351087A (zh) * | 2019-09-06 | 2019-10-18 | 南京秉速科技有限公司 | 流水线型的蒙哥马利模乘运算方法及计算装置 |
Non-Patent Citations (1)
Title |
---|
麻永新等: "基为4的可扩展模乘运算器设计", 《计算机工程与应用》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827555A (zh) * | 2022-11-30 | 2023-03-21 | 格兰菲智能科技有限公司 | 数据处理方法、计算机设备、存储介质和乘法器结构 |
CN115827555B (zh) * | 2022-11-30 | 2024-05-28 | 格兰菲智能科技有限公司 | 数据处理方法、计算机设备、存储介质和乘法器结构 |
CN116225366A (zh) * | 2023-03-06 | 2023-06-06 | 开源网安物联网技术(武汉)有限公司 | 应用于嵌入式流水cpu内核的乘法指令扩展方法及装置 |
CN116225366B (zh) * | 2023-03-06 | 2024-04-05 | 开源网安物联网技术(武汉)有限公司 | 应用于嵌入式流水cpu内核的乘法指令扩展方法及装置 |
CN117134917A (zh) * | 2023-08-09 | 2023-11-28 | 北京融数联智科技有限公司 | 一种用于椭圆曲线加密的快速模运算方法和装置 |
CN117134917B (zh) * | 2023-08-09 | 2024-04-26 | 北京融数联智科技有限公司 | 一种用于椭圆曲线加密的快速模运算方法和装置 |
CN117234458A (zh) * | 2023-11-09 | 2023-12-15 | 深圳大普微电子股份有限公司 | 乘法阵列、数据处理方法、处理终端及存储介质 |
CN117234458B (zh) * | 2023-11-09 | 2024-02-23 | 深圳大普微电子股份有限公司 | 乘法阵列、数据处理方法、处理终端及存储介质 |
CN117555515A (zh) * | 2024-01-11 | 2024-02-13 | 成都市晶蓉微电子有限公司 | 一种用于平衡性能与面积的数字asic串并结合乘法器 |
CN117555515B (zh) * | 2024-01-11 | 2024-04-02 | 成都市晶蓉微电子有限公司 | 一种用于平衡性能与面积的数字asic串并结合乘法器 |
CN117785129A (zh) * | 2024-02-23 | 2024-03-29 | 蓝象智联(杭州)科技有限公司 | 一种基于gpu的蒙哥马利模乘运算方法 |
CN117785129B (zh) * | 2024-02-23 | 2024-05-07 | 蓝象智联(杭州)科技有限公司 | 一种基于gpu的蒙哥马利模乘运算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115344237B (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115344237B (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
Erdem et al. | A general digit-serial architecture for montgomery modular multiplication | |
Kuang et al. | Low-cost high-performance VLSI architecture for Montgomery modular multiplication | |
CN110351087B (zh) | 流水线型的蒙哥马利模乘运算方法 | |
Lai et al. | Elixir: High-throughput cost-effective dual-field processors and the design framework for elliptic curve cryptography | |
CN109814838B (zh) | 获取加解密运算中的中间结果组的方法、硬件装置和系统 | |
Morales‐Sandoval et al. | Scalable GF (p) Montgomery multiplier based on a digit–digit computation approach | |
US7046800B1 (en) | Scalable methods and apparatus for Montgomery multiplication | |
Tian et al. | Ultra-fast modular multiplication implementation for isogeny-based post-quantum cryptography | |
CN113467750A (zh) | 用于基数为4的srt算法的大整数位宽除法电路及方法 | |
WO2001076132A1 (en) | Scalable and unified multiplication methods and apparatus | |
KR20220049212A (ko) | 모듈러 연산을 위한 워드 병렬 연산 방법 | |
TW202319909A (zh) | 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置 | |
Feng et al. | A high performance FPGA implementation of 256-bit elliptic curve cryptography processor over GF (p) | |
US7607165B2 (en) | Method and apparatus for multiplication and/or modular reduction processing | |
Hu et al. | Low-power reconfigurable architecture of elliptic curve cryptography for IoT | |
CN115270155A (zh) | 一种获取大数拓展最大公约数的方法及硬件架构 | |
Mahapatra et al. | RSA cryptosystem with modified Montgomery modular multiplier | |
Issad et al. | Efficient and scalable hardware implementation of montgomery modular multiplication | |
CN113467752A (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
Nadjia et al. | High throughput parallel montgomery modular exponentiation on FPGA | |
Prema et al. | Enhanced high speed modular multiplier using Karatsuba algorithm | |
Xie et al. | Low-complexity systolic multiplier for GF (2 m) using toeplitz matrix-vector product method | |
CN116820394B (zh) | 一种面向椭圆曲线加密算法的标量乘电路 | |
US11954487B2 (en) | Techniques, devices, and instruction set architecture for efficient modular division and inversion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |