CN101470598A - 提高大整数Montgomery模乘运算速度的方法 - Google Patents
提高大整数Montgomery模乘运算速度的方法 Download PDFInfo
- Publication number
- CN101470598A CN101470598A CNA2007103045678A CN200710304567A CN101470598A CN 101470598 A CN101470598 A CN 101470598A CN A2007103045678 A CNA2007103045678 A CN A2007103045678A CN 200710304567 A CN200710304567 A CN 200710304567A CN 101470598 A CN101470598 A CN 101470598A
- Authority
- CN
- China
- Prior art keywords
- make
- mod
- big integer
- calculate successively
- calculate
- 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
Landscapes
- Complex Calculations (AREA)
Abstract
本发明为一种提高大整数Montgomery模乘运算速度的方法,其包括的步骤为:步骤a:将两个大整数乘数X、Y分别拆分为高数位Xha=X/r,Yhb=Y/rn-,和低数位Xla=X mod r,Y1b=Y mod rn-;步骤b:并行计算XhaYhb,XhaY1br-nmod M,X1aYhbr-mod M,XlaYlbr-nmod M;步骤c:计算(XhaYhb+XhaY1br-nmodM+XlaYhbr-mod M+X1aY1br-nmod M)mod M的值,得到最终结果;其中M为大整数,r=2w为最小字处理单元,n为大整数M的字个数。
Description
技术领域
本发明涉及的是一种加密算法,特别涉及的是一种提高大整数Montgomery模乘运算速度的方法。
背景技术
随着Internet的迅猛发展,网络安全问题显得越来越重要,相关网络安全协议应运而生,而这些协议又是以高效安全的加密算法为前提的。
加密算法分为对称加密算法和非对称加密算法。在网络上进行数据传输时,通常使用对称加密算法加密所要传输的数据,而用非对称加密算法加密密钥。
就非对称加密算法来说,目前RSA与ECC的应用比较普及。RSA与大素数域上的ECC的底层运算都离不开大整数模乘运算,大整数模乘运算的速度直接决定了RSA与ECC加密算法的速度。
在目前的所有有效的大整数模乘算法中,Montgomery算法在大多数环境下被认为是最为高效的。而在具体以字为单位实现Montgomery算法的方法中,CIOS(Coarsely Integrated Operand Scanning)算法复杂度最低。现将此算法描述如下:
假设Montgomery算法的参数为(M,M′[0],r,n,X,Y),M为大整数,r=2w为最小字处理单元,n为大整数的字个数。M′[0]=M-1[0]mod r。X,Y为要计算Montgomery模乘的乘数。CIOS算法如下:
for i=0 to n-1{
C=0;
for j=0 to n -1{
(C,S)=T[j]+Xha[j]*Ylb[i]+C;
}
(C,S)=T[n]+C;
T[n]=S;
T[n+1]=C;
C=0;
m=T[0]*M′[0]mod r;
(C,S)=T[0]+m*M′[0]
for j=1 to n -1{
(C,S)=T[j]+m*M[j]+C;
T[j-1]=S;
}
(C,S)=T[n]+C;
T[n-1]=S;
T[n]=T[n+1]+C;
}
在大整数运算中,关键运算为乘法运算,加法运算时间都可忽略不计,上述CIOS中乘法的次数为2n2+n。如何减少乘法运算的次数,成为改进MontgomeryCIOS算法的关键。
一些学者注意到了这一点,文章《Dual-Residue Montgomery Multiplication》也阐述了一种提高速度的方案,该文章的主要创新点如下:
为了提高运算速度,他将乘数中的一个拆分为高低项之和,Y=YHra+YL,然后并行计算XYHr-b mod M,XYLr-n mod M的值。
因为b<n所以XYHr-b mod M通过CIOS算法比原来的运算量小,而XYLr-nmod M中的YL的字数比原来少,而两项的计算又是并行的,所以运算速度比原来得到提高。
鉴于上述问题,本发明创作者经过长时间的研究和试验,在此算法的基础上获得一种提高大整数运算速度的方法。
发明内容
本发明的目的在于,提供一种提高大整数Montgomery模乘运算速度的方法,用以克服上述缺陷。
为实现上述目的,本发明采用的技术方案在于,提供一种提高大整数Montgomery模乘运算速度的方法,其包括的步骤为:
其中M为大整数,r=2w为最小字处理单元,n为大整数M的字个数。
步骤b11:取i=0;
步骤b13:令(C,S)=T[n]+C;T[n]=S;T[n+1]=C;C=0;m=T[0]*M′[0]mod r;
步骤b14:令(C,S)=T[0]+m*M′[0],从j=1到n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b15:令(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
其中,i、j、C为变量,M为大整数,r=2w为最小字处理单元,n为大整数M的字个数,M′[0]=M-1[0]mod r。
步骤b21:令i=0;
步骤b23:令(C,S)=T[n]+C;T[n]=S;T[n+1]=C;C=0;m=T[0]*M′[0]modr;
步骤b24:令(C,S)=T[0]+m*M′[0],从j=1到j=n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b25:令(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
其中,i、j、C为变量,M为大整数,r=2w为最小字处理单元,n为大整数M的字个数,M′[0]=M-1[0]mod r。
其中,所述步骤b中计算XlaYlbr-n mod M的步骤为:
步骤b31:令i=0;
步骤b32:令C=0,从j=0到依次计算(C,S)=T[j]+Xha[j]*Ylb[i]+C;T[j]=S;
步骤b33:令(C,S)=T[n]+C;T[n]=S;T[n+1]=C;C=0;m=T[0]*M′[0]mod r;
步骤b34:令(C,S)=T[0]+m*M′[0],从j=1到j=n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b35:(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
步骤b38:令C=0;m=T[0]*M′[0]mod r;
步骤b39:令(C,S)=T[0]+m*M′[0],从j=1到j=n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b3A:(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
步骤b3B:如果i<n-1,则令i=i+1并执行上述步骤b38;否则返回T[0]...T[n-1];
其中,i、j、C为变量,M为大整数,r=2w为最小字处理单元,n为大整数M的字个数,M′[0]=M-1[0]mod r。
与现有技术相比本发明的优点在于,首先其是针对Montgomery算法本身的改进;其次在n充分大时,本发明比Montgomery CIOS实现节省约的时间37.5%,比《Dual-Residue Montgomery Multiplication》中的对偶剩余算法的还要快,该算法约节省时间25%。
具体实施方式
申请人认为具体实施方式里,阐述的比较清楚不需要在配合附图进行说明,对本发明上述的和另外的技术特征和优点下边将作更详细的说明。
本发明的提高大整数Montgomery模乘运算速度的方法的流程,其是以Montgomery算法为基础的,利用对偶剩余原理,将两个乘数分别拆分为高低项之和,然后并行计算拆分后的Montgomery模乘,从而使得大整数模乘速度提高0.6倍。其包括的步骤为:
其中M为大整数,r=2w为最小字处理单元,n为大整数M的字个数。
其中,所述步骤b中计算的步骤为:
步骤b11:取i=0;
步骤b13:令(C,S)=T]n]+C;T[n]=S;T[n+1]=C;C=0;m=T[0]*M′[0]mod r;
步骤b14:令(C,S)=T[0]+m*M′[0],从j=1到n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b15:令(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
其中,i、j、C为变量,M为大整数,r=2w为最小字处理单元,n为大整数M的字个数,M′[0]=M-1[0]mod r。
步骤b21:令i=0;
步骤b23:令(C,S)=T[n]+C;T[n]=S;T[n+1]=C;C=0;m=T[0]*M′[0]mod r;
步骤b24:令(C,S)=T[0]+m*M′[0],从j=1到j=n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b25:令(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
其中,i、j、C为变量,M为大整数,r=2w为最小字处理单元,n为大整数M的字个数,M′[0]=M-1[0]mod r。
其中,所述步骤b中计算XlaYlbr-n mod M的步骤为:
步骤b31:令i=0;
步骤b33:令(C,S)=T[n]+C;T[n]=S;T[n+1]=C;C=0;m=T[0]*M′[0]mod r;
步骤b34:令(C,S)=T[0]+m*M′[0],从j=1到j=n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b35:(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
步骤b37:令
步骤b38:令C=0;m=T[0]*M′[0]mod r;
步骤b39:令(C,S)=T[0]+m*M′[0],从j=1到j=n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b3A:(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
步骤b3B:如果i<n-1,则令i=i+1并执行上述步骤b38;否则返回T[o]...T[n-1];
其中,i、j、C为变量,M为大整数,r=2w为最小字处理单元,n为大整数M的字个数,M′[0]=M-1[0]mod r。
以16进制表示如下:
M:6C7511628CC295716464B4F4D98AB347C452724FF9B5A55FB
F792769BEC2A64AA187B72835E72610A8679317B867061131
F583F34943021745C1F45A7EF5066D13E6241DBCF3307A82A
605E653891
M′[0]:25758871
r:232
n:32
X:6C7511628CC295716464B4F4D98AB347C452724FF9B5A55FB
F792769BEC2A64AA187B72835E72610A8679317B867061131
F583F34943021745C1F45A7EF1043D24E7341BBBF12019287
5012613337
Y:6C7511628CC295716464B4F4D98AB347C452724FF9B5A55FB
F792769BEC2A64AA187B72835E72610A8679317B867061131
F583F34943021745C1F45A7EF2734B6597211CCEF15015253
E012E11732
按照上述方法,首先对X,Y进行拆分,然后并行计算,最后进行模加运算,即可得到最终结果。
以上所述仅为本发明的较佳实施例,对本发明而言仅仅是说明性的,而非限制性的。本专业技术人员理解,在本发明权利要求所限定的精神和范围内可对其进行许多改变,修改,甚至等效,但都将落入本发明的保护范围内。
Claims (4)
步骤b11:取i=0;
步骤b13:令(C,S)=T[n]+C;T[n]=S;T[n+1]=C;C=0;m=T[0]*M′[0]mod r;
步骤b14:令(C,S)=T[0]+m*M′[0],从j=1到n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b15:令(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
其中,i、j、C为变量,M为大整数,r=2w为最小字处理单元,n为大整数M的字个数,M′[0]=M-1[0]mod r。
步骤b21:令i=0;
步骤b23:令(C,S)=T[n]+C;T[n]=S;T[n+1]=C;C=0;m=T[0]*M′[0]mod r;
步骤b24:令(C,S)=T[0]+m*M′[0],从j=1到j=n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b25:令(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
步骤b26:如果返回T[0]...T[n-1];否则令i=i+1,执行上述步骤b22;
其中,i、j、C为变量,M为大整数,r=2w为最小字处理单元,n为大整数M的字个数,M′[0]=M-1[0]mod r。
4、根据权利要求1所述的提高大整数Montgomery模乘运算速度的方法,其特征在于,所述步骤b中计算XlaYlbr-nmod M的步骤为:
步骤b31:令i=0;
步骤b33:令(C,S)=T[n]+C;T[n]=S;T[n+1]=C;C=0;m=T[0]*M′[0]mod r;
步骤b34:令(C,S)=T[0]+m*M′[0],从j=1到j=n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b35:(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
步骤b36:如果则i=i+1,执行上述步骤b32;
步骤b37:令
步骤b38:令C=0;m=T[0]*M′[0]mod r;
步骤b39:令(C,S)=T[0]+m*M′[0],从j=1到j=n-1依次计算(C,S)=T[j]+m*M[j]+C;T[j-1]=S;
步骤b3A:(C,S)=T[n]+C;T[n-1]=S;T[n]=T[n+1]+C;
步骤b3B:如果i<n-1,则令i=i+1并执行上述步骤b38;否则返回T[0]...T[n-1];
其中,i、j、C为变量,M为大整数,r=2w为最小字处理单元,n为大整数M的字个数,M′[0]=M-1[0]mod r。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007103045678A CN101470598A (zh) | 2007-12-28 | 2007-12-28 | 提高大整数Montgomery模乘运算速度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007103045678A CN101470598A (zh) | 2007-12-28 | 2007-12-28 | 提高大整数Montgomery模乘运算速度的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101470598A true CN101470598A (zh) | 2009-07-01 |
Family
ID=40828091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007103045678A Pending CN101470598A (zh) | 2007-12-28 | 2007-12-28 | 提高大整数Montgomery模乘运算速度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101470598A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986261A (zh) * | 2010-11-27 | 2011-03-16 | 无锡高枕科技有限公司 | 基为16的高速Montgomery模乘法器VLSI |
CN102411489A (zh) * | 2011-10-18 | 2012-04-11 | 飞天诚信科技股份有限公司 | 一种嵌入式系统中的数据处理方法及装置 |
CN102571342A (zh) * | 2010-12-27 | 2012-07-11 | 北京中电华大电子设计有限责任公司 | 一种rsa算法数字签名方法 |
CN103684763A (zh) * | 2012-09-19 | 2014-03-26 | 北京握奇数据系统有限公司 | 基于rsa算法的数据加密方法、装置及智能卡 |
CN104793922A (zh) * | 2015-05-04 | 2015-07-22 | 中国科学院软件研究所 | 一种大整数乘法Comba算法基于OpenMP的并行实现方法 |
CN104951279A (zh) * | 2015-05-27 | 2015-09-30 | 四川卫士通信息安全平台技术有限公司 | 一种基于NEON引擎的向量化Montgomery模乘器的设计方法 |
CN109933304A (zh) * | 2019-03-20 | 2019-06-25 | 四川卫士通信息安全平台技术有限公司 | 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法 |
-
2007
- 2007-12-28 CN CNA2007103045678A patent/CN101470598A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986261A (zh) * | 2010-11-27 | 2011-03-16 | 无锡高枕科技有限公司 | 基为16的高速Montgomery模乘法器VLSI |
CN102571342A (zh) * | 2010-12-27 | 2012-07-11 | 北京中电华大电子设计有限责任公司 | 一种rsa算法数字签名方法 |
CN102571342B (zh) * | 2010-12-27 | 2016-01-06 | 北京中电华大电子设计有限责任公司 | 一种rsa算法数字签名方法 |
CN102411489A (zh) * | 2011-10-18 | 2012-04-11 | 飞天诚信科技股份有限公司 | 一种嵌入式系统中的数据处理方法及装置 |
CN102411489B (zh) * | 2011-10-18 | 2014-06-04 | 飞天诚信科技股份有限公司 | 一种嵌入式系统中的数据处理方法及装置 |
CN103684763A (zh) * | 2012-09-19 | 2014-03-26 | 北京握奇数据系统有限公司 | 基于rsa算法的数据加密方法、装置及智能卡 |
CN104793922A (zh) * | 2015-05-04 | 2015-07-22 | 中国科学院软件研究所 | 一种大整数乘法Comba算法基于OpenMP的并行实现方法 |
CN104793922B (zh) * | 2015-05-04 | 2017-08-25 | 中国科学院软件研究所 | 一种大整数乘法Comba算法基于OpenMP的并行实现方法 |
CN104951279A (zh) * | 2015-05-27 | 2015-09-30 | 四川卫士通信息安全平台技术有限公司 | 一种基于NEON引擎的向量化Montgomery模乘器的设计方法 |
CN104951279B (zh) * | 2015-05-27 | 2018-03-20 | 四川卫士通信息安全平台技术有限公司 | 一种基于NEON引擎的向量化Montgomery模乘器的设计方法 |
CN109933304A (zh) * | 2019-03-20 | 2019-06-25 | 四川卫士通信息安全平台技术有限公司 | 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101470598A (zh) | 提高大整数Montgomery模乘运算速度的方法 | |
CN103176767B (zh) | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 | |
CN102629189B (zh) | 基于fpga的流水浮点乘累加方法 | |
CN102591615A (zh) | 结构化混合位宽乘法运算方法及装置 | |
CN103942031A (zh) | 椭圆域曲线运算方法和椭圆域曲线运算器 | |
CN109165006B (zh) | Softmax函数的设计优化及硬件实现方法及系统 | |
Xie et al. | Efficient FPGA implementation of low-complexity systolic Karatsuba multiplier over $ GF (2^{m}) $ based on NIST polynomials | |
CN102393812A (zh) | 椭圆曲线密码体制中的快速点乘算法的实现方法 | |
CN106650306A (zh) | 基于链置换的四位bcd码加法器的设计方法 | |
Saha et al. | Vedic divider: Novel architecture (ASIC) for high speed VLSI applications | |
CN113467754B (zh) | 一种基于分解约简的格加密模乘运算装置 | |
CN108595149B (zh) | 可重构乘加运算装置 | |
CN106371803B (zh) | 用于蒙哥马利域的计算方法和计算装置 | |
Özcan et al. | A fast digit based Montgomery multiplier designed for FPGAs with DSP resources | |
CN103699733A (zh) | 一种光照模型系统及实现方法 | |
Mishra et al. | Synthesis comparison of Karatsuba multiplierusing polynomial multiplication, vedic multiplier and classical multiplier | |
CN111930674B (zh) | 乘累加运算装置及方法、异构智能处理器及电子设备 | |
Nezhad et al. | High-speed multiplier design using multi-operand multipliers | |
CN112631546A (zh) | 基于ko-8算法的高性能模乘器 | |
Taheri et al. | Efficient Reverse Converter Design for Five Moduli Set { | |
Sakamoto et al. | Low-latency pairing processor architecture using fully-unrolled quotient pipelining montgomery multiplier | |
Singh et al. | Energy Efficient Vedic Multiplier | |
Shylashree et al. | Efficient Implementation of Scalar Multiplication for Elliptic Curve Cryptography using Ancient Indian Vedic Mathematics over GF (p) | |
CN104750457B (zh) | 一种基于模幂运算的数据处理方法和装置 | |
CN101764787B (zh) | 基于ucps协议中ecc素数特殊性的快速模乘方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20090701 |