CN114138235A - 软硬协同的分段扫描式蒙哥马利模幂计算系统及可读存储介质 - Google Patents
软硬协同的分段扫描式蒙哥马利模幂计算系统及可读存储介质 Download PDFInfo
- Publication number
- CN114138235A CN114138235A CN202111480141.4A CN202111480141A CN114138235A CN 114138235 A CN114138235 A CN 114138235A CN 202111480141 A CN202111480141 A CN 202111480141A CN 114138235 A CN114138235 A CN 114138235A
- Authority
- CN
- China
- Prior art keywords
- module
- algorithm
- modular
- data
- modular exponentiation
- 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.)
- Pending
Links
- 238000007781 pre-processing Methods 0.000 claims abstract description 7
- 238000012937 correction Methods 0.000 claims description 30
- 238000004364 calculation method Methods 0.000 claims description 17
- 230000011218 segmentation Effects 0.000 claims description 11
- 238000000034 method Methods 0.000 claims description 9
- 230000007175 bidirectional communication Effects 0.000 claims description 6
- 238000005457 optimization Methods 0.000 claims description 6
- 230000009467 reduction Effects 0.000 abstract description 4
- 238000013461 design Methods 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000004064 recycling Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
- G06F7/722—Modular multiplication
-
- 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
- G06F7/723—Modular exponentiation
-
- 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
- G06F7/728—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 using Montgomery reduction
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)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种软硬协同的分段扫描式蒙哥马利模幂计算系统。SoC平台内置ARM处理器和FPGA资源。ARM端主要做整体任务调度,以及进制分段扫描算法所必备的数据预处理。将处理好的数据存入SRAM的特定地址中,之后启动FPGA进行运算。FPGA端实现模块化设计,包括地址生成模块,模逆模块,CIOS蒙哥马利模乘模块,分段扫描式蒙哥马利模幂控制模块等。本发明实现256bit模幂,采用6bit的分段扫描方式,需要进行()的数据预处理,存入SRAM。具体的蒙哥马利模乘模块采用CIOS算法实现,将大位宽256bit乘法进行64bit拆分,减少大位宽乘法所带来的面积消耗,同时对CIOS算法进行流水化方面的优化,将原来的两个内循环进行流水处理,仅增加少量周期完成两个内循环,提高执行效率。
Description
技术领域
本发明涉及加解密运算领域,尤其涉及一种软硬协同的分段扫描式蒙哥马利模幂计算系统及可读存储介质。
背景技术
近年来,随着计算机和电子商务的发展,人类进入了信息时代,在信息爆炸的今天,隐私的安全需求日益增多,人们对于信息的快速加密,安全传输,机密保存有了更进一步的需求。信息安全不仅关系到国家的安危,战争的走向,经济的发展等大的方面,而且关系到个人的身份信息,银行账户,信息传递等等切身利益。因此密码学的发展在电子信息领域中有更加迫切的需求,在密码学中,最基本的,是信息加密、解密分为对称加密和非对称加密,这两者的区别在于是否在加密解密时是否使用了相同的密钥。
前者由于加密和解密使用的是同一个秘钥,计算量小、加密速度快、加密效率高,但是秘钥的管理和分发非常困难,不够安全。后者加密和解密使用不同的秘钥,安全性更高,公钥是公开的,秘钥是自己保存的,不需要将私钥给别人,但是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。目前普遍认为,RSA的安全性来源于大数分解,目前并没有合适的算法来处理大数分解。RSA算法的最核心运算是有限域的模幂运算,软件处理模幂运算由于运算量过于庞大,速度一直是RSA算法的最大限制,因此模幂运算的硬件加速有广泛的应用前景。
为了加速模幂的运算过程,许多模幂优化算法需要在模幂运算前,在软件层面进行预计算,再将与计算的值作为输入值传递到FPGA,因此单纯的软件计算和FPGA运算无法兼顾两者。单纯的软件计算大数模幂效率太低,而单纯的FPGA灵活性较差,对于预计算的进行以及结果传输由较大的约束性。
发明内容
发明目的:提出一种软硬协同的分段扫描式蒙哥马利模幂计算系统,该方案结合2k分段扫描算法和蒙哥马利算法,可以自主完成整模幂运算的数据预计算以及结果数据的传输,传输到指定的FPGA地址,并启动FPGA来进行具体的模幂运算,充分利用了软件的灵活性以及FPGA的加速效果,灵活且高效的不同的模数N的模幂运算,更好的满足实际应用的需求,从而解决现有技术存在的上述问题。
第一方面,提出一种软硬协同的分段扫描式蒙哥马利模幂计算系统,具体由以下技术方案实现:
本发明具体实施是基于SoC软硬协同实现的256bit蒙哥马利模幂运算(MEmodN),ARM端用于完成整体的任务调度,以及生成2k进制分段扫描算法需要的预计算和修正系数,FPGA端完成计算密集的模幂运算。
ARM端产生2k进制分段扫描算法所需要的预算值,以及修正系数factor。本发明采用6bit分段扫描的方式,根据2k进制分段扫描算法的具体流程,共需要(26)个预计算值以及1个修正系数。
除此之外ARM端需要开发驱动模块,用于与数据预处理模块建立双向通信,驱动FPGA,与FPGA建立数据的双向通信。
FPGA端主实现模逆模块,该模块采用了扩展欧几里得算法来计算64bit模逆的值,提供给蒙哥马利模块,作为额外的预处理值。求a关于m的模逆x,即a*x≡1(mod m),将其转化为求x和y使得ax+my=1成立,其中y为额外求出的值。模逆采用直接的扩展欧几里得算法,利用欧几里得算法的性质:ax+my=a1x1+m1y1=…=1,其中递归运算来得到最终的结果,递归的边界为mn=0。核心递归代码如下所示:
式中,mod表示取模运算,/表示整除,(xn,yn)(xn-1yn-1)为相邻两次递归的求解,(an,mn)(an-1,mn-1)相邻两次递归的源数据转化。
数据分配模块,作为ARM端与FPGA端的数据交接模块,用于ARM的存取数。受限于ARM端是32位操作系统,且Avalon接口为128bit,因此该模块需要对数据的位宽进行处理。此模块也完成数据读出的功能,从SRAM中读出256bit的结果数据,对数据进行拆分。
SRAM模块,存储源数据,预算值,修正系数以及结果数据,设计为256bit位宽。
蒙哥马利模幂模块,用于实现256bit模幂的具体运算,其主要包括:256bit蒙哥马利模乘(MontMult)模块,状态机控制模块(fsm_ctrl),地址生成模块(addgent)。状态机控制模块完成整个模幂算法的控制流程,依次调用MontMult模块;
其中256bit蒙哥马利模乘模块是最核心的计算模块,其基于CIOS优化算法实现,原始的CIOS算法包括以下步骤:
步骤2、将源数据A,B,N按照64bit为单位划分为4段
步骤3、遍历源数据A[63:0]和B的四段64bit数据,依次进行乘法,分别存储为t[0]~t[3]
步骤4、在有限域下,得到修正系数m
m=t[0]×N′0
式中,t[0]表示步骤3结果的低64bit,即修正前的结果数据。
步骤5、将修正系数依次乘以N的四段并加上对应的t[0]~t[3],对结果进行修正,使得修正后的值可以被R整除,从而可以用移位操作代替除法操作。
步骤6、判断是否遍历了A的四段数据,若没有,则将A右移64bit,返回步骤3。
步骤7、由低到高拼接t[0]~t[3],记为T,若T>N,则返回T-N,否则返回T。
根据上述算法流程,原始算法由两个内循环,可以再循环方面进行流水话的优化,步骤3的分段乘法运算和步骤5的结果修正可以流水化,无需等待步骤3的循环完全结束后再开始步骤5的循环,可以在步骤3开始的下一个周期开始步骤5的计算,仅需要增加少量的周期就可以完成两个内循环的运算。
模幂运算整体采用2k进制分段扫描算法,根据分段数k取值的不同,该算法可以有不同程度的优化,主要体现在模乘的调用次数。考虑到实际的执行效率以及资源消耗,本发明选用6bit分段扫描的方式,想不传统的模幂二进制算法总体可以降低12.5%的模乘次数。6bit分段算法所需要的预算值和修正系数如下所示:
R[I]=MimodN,其中i∈{0,1,2,3…2k-1}
factor=265nmodN,其中n=256;
式中,modN表示对N的取模操作,Mi表示对源数据的幂指数操作,n表示模乘的位宽,此处为256;
蒙哥马利模幂的2k进制分段扫描算法(k=6),具体包括以下步骤:
步骤1、按照6bit为一组的准则,将幂指数E进行扫描分段,此处为256bit,需要在高位补3个零,之后按照6bit一组,得到43组6bit分段,记为R[0:42],初始化r=0。
步骤2、若r=0,根据R[r]的值来初始化S。
步骤3、若r!=0,则S=MontMult(R[r],S)
步骤3、S=MontMult(S,S)
步骤4、判断是否完成6次,若未完成则返回执行步骤4,若完成则执行步骤5。
步骤5、修正结果,S=MontMult(S,factor)
步骤6、判断是否完成扫描43组的6bit分段,若完成扫描则输出S,否则r自增1,返回步骤3。
第二方面,提出一种可读存储介质,该可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,驱动第一方面所述的计算系统执行预定计算指令。
有益效果:
本发明实现了基于SoC的软硬协同的分段扫描式蒙哥马利模幂算法,可以灵活的利用ARM进行预计算,实现不同模数N的模幂运算,较为高效的进行模幂计算。
本发明采用了模块化设计,主要实现了模逆模块以及蒙哥马利模乘模块,其中模乘模块采用了流水化的CIOS算法,高效实现模乘操作,提高效率。
本发明采用了2k进制分段扫描算法结合蒙哥马利算法,权衡资源消耗以及效率,有效降低模乘的调用次数。
本发明在硬件实现了扩展欧几里得算法的模逆模块,尽可能的利用FPGA的计算优势,提高计算效率。
附图说明
图1是本发明的软硬件实现方案总体架构。
图2是本发明的蒙哥马利CIOS模乘流程图。
图3是本发明的CIOS流水化优化示意图。
图4是本发明设计的优化后模乘波形示意图。
图5是本发明的6bit分段扫描模幂状态机。
图6是本发明的6bit分段扫描模幂的总流程。
具体实施方式
在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。
本发明具体实施是基于SoC软硬协同实现的256bit蒙哥马利模幂运算(MEmodN),ARM端用于完成整体的任务调度,以及2k进制分段扫描算法需要的预计算和修正系数,并将预计算的结果存入指定的FPGA地址,并再计算结束之后将结果数据从FPGA端搬出。FPGA端完成计算密集的任务,加速模幂的运算,具体结构见图1。
ARM端最主要的模块是预计算模块,用于产生2k进制分段扫描算法所需要的预算值,以及所需的修正系数factor。本发明采用6bit分段扫描的方式,根据2k进制分段扫描算法的具体流程,共需要(26)个预计算值以及1个修正系数,且该预计算值只与M和N有关,修正系数与位宽和N有关,因此相同模N的情况下,一次计算完成后可以固定为常数,也说明蒙哥马利算法更适用于模N固定的情况。具体需要的预算值和修正系数在下文算法介绍的部分列出。
除此之外ARM端需要开发驱动模块,用于与数据预处理模块建立双向通信,驱动FPGA,与FPGA建立数据的双向通信,具体的的驱动映射到FPGA端Avalon总线,通过Avalon总线实现具体的数据传输。
FPGA端主实现模逆模块,该模块采用了扩展欧几里得算法来计算64bit模逆的值,提供给蒙哥马利模块,作为额外的预处理值,由于模逆模块的结果是作为模幂算法的输入值使用的,具体的求a关于m的模逆x,即a*x≡1(mod m),将其转化为求x和y使得ax+my=1成立,其中y为额外求出的值。该模块并不会被大量调用,仅在模幂算法的开始调用一次,采用直接的扩展欧几里得算法,利用欧几里得算法的性质:
ax+my=a1x1+m1y1=…=1,其中递归运算来得到最终的结果,递归的边界为mn=0。核心递归代码如下所示:
式中,mod表示取模运算,/表示整除,(xn,yn)(xn-1yn-1)为相邻两次递归的求解,(an,mn)(an-1,mn-1)相邻两次递归的源数据转化。
数据分配模块,作为ARM端与FPGA端的数据交接模块,用于ARM的存取数。受限于ARM端是32位操作系统,且Avalon接口为128bit,因此实际上ARM与Avalon的交互是32bit的,而本发明是256bit的模幂运算,因此在此模块需要进行两段的数据拼接。首先要将128bit的Avalon数据接口中提取出有效的32bit,分为4拍,后将有效的数据再拼接成256bit传入SRAM。此模块也完成数据读出的功能,从SRAM中读出256bit的结果数据,对数据进行拆分。
SRAM模块,存储源数据,预算值,修正系数以及结果数据,设计为256bit位宽。
蒙哥马利模幂模块,用于实现256bit模幂的具体运算,其主要包括:256bit蒙哥马利模乘(MontMult)模块,状态机控制模块(fsm_ctrl),地址生成模块(addgent)。状态机控制模块完成整个模幂算法的流程,依次调用MontMult模块;地址生成模块用于生成源数据以及预算值的地址,从SRAM中取出对应的数,同时再计算完成的时候,生成结果数据的地址。
其中256bit蒙哥马利模乘模块是最核心的计算模块,其基于CIOS优化算法实现,具体的流程图见图2,原始的CIOS算法包括以下步骤:
步骤2、将源数据A,B,N按照64bit为单位划分为4段
步骤3、遍历源数据A[63:0]和B的四段64bit数据,依次进行乘法,分别存储为t[0]~t[3]
步骤4、在有限域下,得到修正系数m
m=t[0]×N′0
式中,t[0]表示步骤3结果的低64bit,即修正前的结果数据。
步骤5、将修正系数依次乘以N的四段并加上对应的t[0]~t[3],对结果进行修正,使得修正后的值可以被R整除,从而可以用移位操作代替除法操作。
步骤6、判断是否遍历了A的四段数据,若没有,则将A右移64bit,返回步骤3。
步骤7、由低到高拼接t[0]~t[3],记为T,若T>N,则返回T-N,否则返回T。
根据上述算法流程,原始算法由两个内循环,可以再循环方面进行流水话的优化,步骤3的分段乘法运算和步骤5的结果修正可以流水化,无需等待步骤3的循环完全结束后再开始步骤5的循环,由于是分段的乘法以及修正,因此可以在步骤3完成第一段乘法之后可以直接开始该段结果的修正。仅需要增加少量的周期就可以完成两个内循环的运算,示意图见图3,将原来的两个顺序执行内循环Inner Loop1和Inner Loop2,优化成流水计算的两个内循环,理论增加一个周期就可以完成两个内循环。
根据流水化之后的逻辑以及流程图,设计波形,见图4,由图可见信号temp_cs和temp_after仅仅相差一拍,流水的进行计算,无需等待,最后在第23个周期的时候输出最终的模乘结果。
模幂运算整体采用2k进制分段扫描算法,根据分段数k取值的不同,该算法可以有不同程度的优化,主要体现在模乘的调用次数。不同分段数所需的模乘次数,以及与传统的二进制模幂算法相比较模乘次数的降低比例如下表所示:
表1:不同分段数所需的模乘次数以及与传统的二进制模幂算法相比较模乘次数的降低比例对照表
分段数/模乘次数 | 2<sup>k</sup>进制分段扫描(次) | 降低比例(%) | 预计算值 |
4bit | 378 | 1.56 | 17 |
5bit | 357 | 7.03 | 33 |
6bit | 336 | 12.50 | 65 |
7bit | 324 | 15.62 | 129 |
8bit | 320 | 16.67 | 257 |
考虑到实际的执行效率以及资源消耗,本发明选用6bit分段扫描的方式。
因此6bit分段算法所需要的预算值和修正系数如下所示:
R[i]=MimodN,其中i∈{0,1,2,3…2k-1}
factor=265nmodN,其中n=256;
式中,modN表示对N的取模操作,Mi表示对源数据的幂指数操作,n表示模乘的位宽,此处为256;
i的二进制 | i的十进制 | R[i] |
0_000000 | 0 | 1 |
…… | …… | …… |
0_111111 | 63 | M<sup>63</sup>modN |
1_000000 | 64 | 2<sup>65×256</sup>modN |
蒙哥马利模幂的2κ进制分段扫描算法(k=6)的具体实现采用状态机的方式,见图5,状态机共有6个状态,分别是(IDLE,FETCH,INITIAL,NEXT,LOOP,MODIFY,DONE),其中。FETCH为取数状态;INITIAL是初始化状态,在整个流程中只执行一次;而LOOP为主体的循环体,在k=6的情况下,每一次大循环中,该循环需要循环6次;MODIFY为结果修正的状态。详细的流程图见图6,具体步骤如下:
步骤1、按照6bit为一组的准则,将幂指数E进行扫描分段,此处为256bit,需要在高位补3个零,之后按照6bit一组,得到43组6bit分段,记为R[0:42],初始化r=0。
步骤2、若r=0,根据R[r]的值来初始化S。
步骤3、若r!=0,则S=MontMult(R[r],S)
步骤3、S=MontMult(S,S)
步骤4、判断是否完成6次,若未完成则返回执行步骤4,若完成则执行步骤5。
步骤5、修正结果,S=MontMult(S,factor)
步骤6、判断是否完成扫描43组的6bit分段,若完成扫描则输出S,否则r自增1,返回步骤3。
至此已经完成模幂的运算,最后的S就是最终的模幂结果,对设计进行真实的仿真,得到一次完成模幂的波形图,working拉高在计算模逆,模逆运算的周期在整个模幂仅仅占用很小一部分。rdy_all拉高得到了最终结果。
如上所述,尽管参照特定的优选实施例已经表示和表述了本实施例,但其不得解释为对本实施例自身的限制。在不脱离所附权利要求定义的本实施例的精神和范围前提下,可对其在形式上和细节上做出各种变化。
Claims (10)
1.软硬协同的分段扫描式蒙哥马利模幂计算系统,其特征在于,所述系统包括:
ARM端,用于完成整体的任务调度,以及预计算;
FPGA端,与所述ARM端电性连接,用于完成计算密集的任务,执行模幂的具体运算。
2.根据权利要求1所述的计算系统,其特征在于,所述ARM端包括:
预计算模块,用于产生2k进制分段扫描模幂算法所需要的预算值,以及修正系数factor;
驱动模块,用于与数据预处理模块建立双向通信,驱动FPGA端,与FPGA端建立数据的双向通信。
3.根据权利要求1所述的计算系统,其特征在于,所述FPGA端包括:
蒙哥马利模幂模块,用于实现256bit模幂的具体运算;
模逆模块,采用欧几里得扩展算法计算64bit模逆的值,提供给蒙哥马利模块,作为预处理值;
数据分配模块,作为ARM端与FPGA端的数据交接模块,用于ARM的存取数;
SRAM模块,用于对所述ARM端的数据进行传输以及蒙哥马利模块、模逆模块的取数操作。
5.根据权利要求3所述的计算系统,其特征在于,所述蒙哥马利模幂模块包括:
256bit蒙哥马利模乘模块;
状态机控制模块,依次调用所述256bit蒙哥马利模乘模块,完成整个模幂算法的控制流程;
地址生成模块,用于生成源数据以及预算值的地址,从所述SRAM模块中取出对应的数。
6.根据权利要求5所述的计算系统,其特征在于,所述256bit蒙哥马利模乘模块基于CIOS优化算法实现,包括以下步骤:
步骤2、将源数据A,B,N按照64bit为单位划分为4段;
步骤3、遍历源数据A[63:0]和B的四段64bit数据,依次进行乘法,分别存储为t[0]~[3];
步骤4、在有限域下,得到修正系数m:
m=t[0]×N′0
式中,t[0]表示步骤3结果的低64bit,即修正前的结果数据。
骤5、将修正系数依次乘以N的四段并加上对应的t[0]~[3],对结果进行修正,使得修正后的值可以被R整除,从而可以用移位操作代替除法操作;
步骤6、判断是否遍历了A的四段数据,若没有,则将A右移64bit,返回步骤3;
步骤7、由低到高拼接t[0]~[3],记为T,若T>N,则返回T-N,否则返回T。
7.根据权利要求6所述的计算系统,其特征在于,所述步骤3的分段乘法运算和步骤5的结果修正流水化,无需等待步骤3的循环完全结束。
8.根据权利要求2所述的计算系统,其特征在于,ARM端进行预计算,得到2k进制分段扫描算法所需的预算值,预算26+1个值,并通过AvalonBus传送到SRAM里,预算值包括以下两个部分:
MimodN,其中i∈{0,1,2,3…2k-1};
factor=265nmodN,其中n=256;
式中,modN表示对N的取模操作,Mi表示对源数据的幂指数操作,n表示模乘的位宽,此处为256。
9.根据权利要求3所述的计算系统,其特征在于,所述蒙哥马利模幂模块采用2k进制分段扫描算法实现,包括以下步骤:
步骤1、按照6bit为一组的准则,将幂指数E进行扫描分段,此处为256bit,需要在高位补3个零,之后按照6bit一组,得到43组6bit分段,记为R[0:42],初始化r=0;
步骤2、若r=0,根据R[r]的值来初始化S;
步骤3、若r!=0,则S=MontMult(R[r],S);
步骤3、S=MontMult(S,S);
步骤4、判断是否完成6次,若未完成则返回执行步骤4,若完成则执行步骤5;
步骤5、修正结果,S=MontMult(S,factor);
步骤6、判断是否完成扫描43组的6bit分段,若完成扫描则输出S,否则r自增1,返回步骤3。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,驱动权利要求1至9任一项所述的计算系统执行预定计算指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111480141.4A CN114138235A (zh) | 2021-12-06 | 2021-12-06 | 软硬协同的分段扫描式蒙哥马利模幂计算系统及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111480141.4A CN114138235A (zh) | 2021-12-06 | 2021-12-06 | 软硬协同的分段扫描式蒙哥马利模幂计算系统及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138235A true CN114138235A (zh) | 2022-03-04 |
Family
ID=80384576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111480141.4A Pending CN114138235A (zh) | 2021-12-06 | 2021-12-06 | 软硬协同的分段扫描式蒙哥马利模幂计算系统及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138235A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114745099A (zh) * | 2022-04-19 | 2022-07-12 | 麦田云网(杭州)信息技术有限公司 | 一种基于FPGA的poseidon哈希算法的优化方法 |
CN114880686A (zh) * | 2022-05-30 | 2022-08-09 | 杭州医康慧联科技股份有限公司 | 基于联邦学习的硬件加速数据传输方法 |
-
2021
- 2021-12-06 CN CN202111480141.4A patent/CN114138235A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114745099A (zh) * | 2022-04-19 | 2022-07-12 | 麦田云网(杭州)信息技术有限公司 | 一种基于FPGA的poseidon哈希算法的优化方法 |
CN114880686A (zh) * | 2022-05-30 | 2022-08-09 | 杭州医康慧联科技股份有限公司 | 基于联邦学习的硬件加速数据传输方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bermudo Mera et al. | Time-memory trade-off in Toom-Cook multiplication: an application to module-lattice based cryptography | |
US20210243006A1 (en) | Integrated circuit for modular multiplication of two integers for a cryptographic method, and method for the cryptographic processing of data based on modular multiplication | |
US8229109B2 (en) | Modular reduction using folding | |
US7805478B2 (en) | Montgomery modular multiplier | |
CN110519058B (zh) | 一种对于基于格的公钥加密算法的加速方法 | |
Harrison et al. | Efficient acceleration of asymmetric cryptography on graphics hardware | |
Öztürk et al. | Low-power elliptic curve cryptography using scaled modular arithmetic | |
CN114138235A (zh) | 软硬协同的分段扫描式蒙哥马利模幂计算系统及可读存储介质 | |
US7930337B2 (en) | Multiplying two numbers | |
CN106685663A (zh) | 一种环域上误差学习问题的加密方法及电路 | |
WO2010048719A1 (en) | Method and apparatus for modulus reduction | |
CN113660076A (zh) | 基于可重构技术的同态加密系统及同态加密执行方法 | |
US8417760B2 (en) | Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication | |
JP2002229445A (ja) | べき乗剰余演算器 | |
JP3542278B2 (ja) | モンゴメリ・リダクション装置及び記録媒体 | |
CN1258710C (zh) | 用于高效模数归约和模数乘法的电路和方法 | |
JP2011512556A (ja) | 楕円曲線上の多数の点を計算する装置及び方法 | |
EP1818810B1 (en) | Circuit and method for multiplying long integer values | |
CN116366248A (zh) | 基于紧凑指令集扩展的Kyber实现方法及系统 | |
Reddy et al. | MNHOKA-PPA Efficient M-Term Non-Homogeneous Hybrid Overlap-free Karatsuba Multiplier for GF (2 n) Polynomial Multiplier | |
JP2002358010A (ja) | べき乗剰余演算器 | |
CN114594925A (zh) | 适用于sm2加密运算的高效模乘电路及其运算方法 | |
CN118233081B (zh) | 一种基于neon指令集的国密sm2底层模乘优化方法 | |
US11954487B2 (en) | Techniques, devices, and instruction set architecture for efficient modular division and inversion | |
Zeng et al. | An Efficient Module Arithmetic Logic Unit in Dual Field for Internet of Things Applications |
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 |