CN102571342A - 一种rsa算法数字签名方法 - Google Patents
一种rsa算法数字签名方法 Download PDFInfo
- Publication number
- CN102571342A CN102571342A CN2010106223132A CN201010622313A CN102571342A CN 102571342 A CN102571342 A CN 102571342A CN 2010106223132 A CN2010106223132 A CN 2010106223132A CN 201010622313 A CN201010622313 A CN 201010622313A CN 102571342 A CN102571342 A CN 102571342A
- Authority
- CN
- China
- Prior art keywords
- mod
- calculate
- length
- long
- rsa
- 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
Landscapes
- Complex Calculations (AREA)
Abstract
本发明设计一种RSA算法数字签名方法,基于1024位的硬件协处理器实现1408位的RSA私钥运算技术,主要应用于智能卡安全计算领域,是利用小位长的模乘器计算大位长的RSA私钥运算中的参数,例如利用1024位的模乘器计算1408位或者2048位RSA私钥运算中的参数。RSA的私钥运算利用中国剩余定理,可以将其主要运算——模幂运算的运算长度降低,但是其中关键参数的运算,例如:C mod P、C mod Q和乘法运算。其中C表示明文,长度是P和Q的两倍。而乘法运算是利用模乘器进行了加速,其最终结果也超出了模乘器的运算能力。技术中主要是利用模运算算法变形,将C拆分成两个小位长的数,计算C mod P;通过四次乘法运算计算大于模乘器长度的乘法运算。
Description
技术领域:
本发明主要应用于智能卡安全计算领域。
背景技术:
RSA私钥运算主要涉及到两个关键技术:
1.使用蒙哥马利模乘算法:
记蒙哥马利模乘为MonMul(a,b,m),则:
MonMul(a,b,m)=a*b*R-1mod m,其中a,b,m的位长为L,R=2L,R-1满足R-1*R modm=1,mod为取模运算。
2.使用中国剩余定理进行加速:
记RSA私钥运算的输入数据为C,RSA的私钥参数为p,q,d和n,其中p和q的位长为L/2,d和n的位长为L,则RSA私钥运算Cd mod n,通过中国剩余定义可以转化为关于p和q的模幂运算,提高运行速度。以下是使用中国剩余定理进行RSA私钥运算的简要说明,本发明主要是对其中的参数Cp和Cq计算方法的改进。
准备:计算参数dp=d mod(p-1),dq=d mod(q-1)和qInv,qInv满足qInv*q modp=1。当RSA体系中的密钥固定时,这些参数可以作为常数预先计算出来,不必在每次进行RSA私钥运算时进行计算,因此计算上述参数不占用RSA私钥运算的时间,只是为了叙述方便,在这里简单介绍上述参数的来由。
1.计算Cp和Cq,Cp=C mod p,Cq=C mod q,其中C为RSA私钥运算的输入数据。
2.计算Mp和Mq,其中Mp=Cpdp mod p,Mq=Cpdq mod q
3.计算Mpq,Mpq=(Mp-Mq)*qInv mod p
4.计算Res=Mpq*q+Mq。
在步骤1中的取模运算中,由于软件取模函数计算效率低下,所以一般情况下使用硬件蒙哥马利模乘计算器计算。但是在实际应用中,上述中国剩余定理的计算过程中,步骤2和3中使用L/2位长的蒙哥马利模乘器可以满足需求,而在步骤1和4中,需使用L位长的硬件蒙哥马利模乘器。
发明内容:
本发明在步骤1和步骤4中使用L/2位长的蒙哥马利模乘器进行计算,因此可以在只需RSA私钥运算的芯片中采用小位长的模乘器,实现大于模乘器位长的公钥运算,以这种方式运算,对硬件的要求就减少一半位数,不考虑其他资源,小位长硬件协处理器可支持大于模乘器位长的私钥运算,同时,增添的软件开销也可以在应用接受的范围内。从而降低芯片成本,或者使用现有的有限资源应对市场变化,有助于产品快速上市。
步骤1中计算C mod P时使用以下方法:
1.将C分为等长度的两个部分,记CH为高L/2部分,CL为低L/2部分,这样,L长度的C被拆分为两个L/2长度的数据,并且C=CH<<L/2+CL,其中“<<”为向左平移操作。
2.进一步分析CH<<L/2,L/2长度的CH向左平移L/2后,还是L长度,超出了蒙哥马利模乘器计算长度,因此此处还需要将转换,其实,CH<<L/2=CH*2L/2。我们可以看到这里的2L/2是L/2位长的蒙哥马利模乘算法中的常数R。
3.那么C mod P可表示为(CH*R+CL)mod P,将括号展开后,可得到CH*R mod P+CL mod P。其中CL和P的长度一样,其取模操作可以用减法实现,记为CLP。
4.由于MonMul(a,b,m)=a*b*R-1mod m,那么只需计算MonMul(CH,R2,p),就可以得到CH*R mod P,也即CH<<L/2mod P,记为CHP。
5.最后计算CHP+CLP即所需的C mod P,用同样的方法,计算C mod Q。
步骤4中使用蒙哥马利算法计算乘法,由于最终结果是L长度,因此需要将Mpq和q的高位补“0”填充至L长,然后使用L位长的蒙哥马利模乘器计算乘法,此时,MonMul(a,b,m)中m=2L-1,长度为L。改进的方法如下:
1.将Mpq和Q作为a*b的输入数据,将L/2位长的a和b拆分为等长度的两部分,其中aH表示a的高L/4部分,aL表示a的低L/4部分,bH表示b的高L/4部分,bL表示b的低L/4部分。
2.将aL用“0”填充至L/2长,记为aL0,将bL用“0”填充至L/2长,记为bL0,其实aL=aL0,bL=bL0。记L/2长的0xFF为m,用蒙哥马利模乘器计算MonMul(aL0,bL0,m)=aL0*bL0*R-1 mod m,由于m为2L-1,那么R-1=1,实际上,aL0*bL0*R-1mod m=aL*bL。
3.用同样的步骤计算aH*bL,bH*aL,bH*aH,最后计算aLbL+aHbL<<(L/4)+bHaL<<(L/2)+bHaH<<(3L/4),即可得到a*b。
附图说明:
图1是计算C mod P的改进方法示意图。
图2是使用小位长蒙哥马利模乘器计算L位长的乘法的示意图。
具体实施方式
使用本发明可以使L/2位长的模乘器计算L位长的RSA私钥运算,以便降低芯片成本,或者利用有限资源满足市场的变化,有助于产品的快速开发和上市。当需要使用小位长的模乘器来实现大位长的RSA私钥运算时可以采用本算法。具体步骤如下:
计算C mod P时使用以下方法:
1.将C分为等长度的两个部分,记CH为高L/2部分,CL为低L/2部分,这样,L长度的C被拆分为两个L/2长度的数据,并且C=CH<<L/2+CL,其中“<<”为向左平移操作。
2.进一步分析CH<<L/2,L/2长度的CH向左平移L/2后,还是L长度,超出了蒙哥马利模乘器计算长度,因此此处还需要将转换,其实,CH<<L/2=CH*2L/2。我们可以看到这里的2L/2是L/2位长的蒙哥马利模乘算法中的常数R。
3.那么C mod P可表示为(CH*R+CL)mod P,将括号展开后,可得到CH*R mod P+CL mod P。其中CL和P的长度一样,其取模操作可以用减法实现,记为CLP。
4.由于MonMul(a,b,m)=a*b*R-1mod m,那么只需计算MonMul(CH,R2,p),就可以得到CH*R mod P,也即CH<<L/2mod P,记为CHP。
5.最后计算CHP+CLP即所需的C mod P,用同样的方法,计算C mod Q。
步骤4中使用蒙哥马利算法计算乘法,由于最终结果是L长度,因此需要将Mpq和q的高位补“0”填充至L长,然后使用L位长的蒙哥马利模乘器计算乘法,此时,MonMul(a,b,m)中m=2L-1,长度为L。改进的方法如下:
1.将Mpq和Q作为a*b的输入数据,将L/2位长的a和b拆分为等长度的两部分,其中aH表示a的高L/4部分,aL表示a的低L/4部分,bH表示b的高L/4部分,bL表示b的低L/4部分。
2.将aL用“0”填充至L/2长,记为aL0,将bL用“0”填充至L/2长,记为bL0,其实aL=aL0,bL=bL0。记L/2长的0xFF为m,用蒙哥马利模乘器计算MonMul(aL0,bL0,m)=aL0*bL0*R-1mod m,由于m为2L-1,那么R-1=1,实际上,aL0*bL0*R-1mod m=aL*bL。
3.用同样的步骤计算aH*bL,bH*aL,bH*aH,最后计算aLbL+aHbL<<(L/4)+bHaL<<(L/2)+bHaH<<(3L/4),即可得到a*b。
Claims (1)
1.一种RSA算法数字签名方法,其特征在于步骤如下:
(1)计算Cp和Cq,其中Cp=C mod P,Cq=C mod Q,C为RSA私钥运算的输入数据;P,Q,d和n为RSA的私钥参数,P和Q的位长为L/2,d和n的位长为L,mod为取模运算;
(2)将C分为等长度的两个部分,记CH为高L/2部分,CL为低L/2部分,并且C=CH<<L/2+CL,其中“<<”为向左平移操作;CH<<L/2=CH*2L/2,记R=2L/2;
(3)C mod P=(CH*R+CL)mod P,将括号展开后,得到CH*R mod P+CL modP,其中CL和P的长度一样,取模操作用减法实现,记为CLP;
(4)计算MonMul(CH,R2,P),得到CH*R mod P,即CH<<L/2mod P,记为CHP;
(5)最后计算CHP+CLP得到C mod P,用同样的方法,计算C mod Q;
(6)计算Mp和Mq,其中Mp=Cpdp mod P,Mq=Cpdq mod Q;
(7)计算Mpq,Mpq=(Mp-Mq)*qInv mod Q;
(8)计算Res=Mpq*Q+Mq;将Mpq和Q的高位补“0”填充至L长,使用L位长的蒙哥马利模乘器计算乘法,将Mpq和Q作为a*b的输入数据,将L/2位长的a和b拆分为等长度的两部分,其中aH表示a的高L/4部分,aL表示a的低L/4部分,bH表示b的高L/4部分,bL表示b的低L/4部分;
(9)将aL用“0”填充至L/2长,记为aL0,将bL用“0”填充至L/2长,记为bL0,记L/2长的0xFF为m,用蒙哥马利模乘器计算MonMul(aL0,bL0,m)=aL0*bL0*R-1 mod m;
(10)用同样的步骤计算aH*bL,bH*aL,bH*aH,最后计算aLbL+aHbL<<(L/4)+bHaL<<(L/2)+bHaH<<(3L/4),即可得到a*b。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010622313.2A CN102571342B (zh) | 2010-12-27 | 2010-12-27 | 一种rsa算法数字签名方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010622313.2A CN102571342B (zh) | 2010-12-27 | 2010-12-27 | 一种rsa算法数字签名方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102571342A true CN102571342A (zh) | 2012-07-11 |
CN102571342B CN102571342B (zh) | 2016-01-06 |
Family
ID=46415884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010622313.2A Active CN102571342B (zh) | 2010-12-27 | 2010-12-27 | 一种rsa算法数字签名方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102571342B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103209073A (zh) * | 2013-01-17 | 2013-07-17 | 北京昆腾微电子有限公司 | 使用rsa公开密钥加密算法的电子部件中的防攻击方法和装置 |
CN103401681A (zh) * | 2013-07-02 | 2013-11-20 | 北京华大信安科技有限公司 | 取模方法、取模装置及芯片 |
CN103580869A (zh) * | 2013-11-06 | 2014-02-12 | 北京华大信安科技有限公司 | 一种crt-rsa签名方法及装置 |
CN103684763A (zh) * | 2012-09-19 | 2014-03-26 | 北京握奇数据系统有限公司 | 基于rsa算法的数据加密方法、装置及智能卡 |
WO2014169783A1 (zh) * | 2013-04-16 | 2014-10-23 | 飞天诚信科技股份有限公司 | 一种在嵌入式系统中实现大数预计算的方法 |
CN103209073B (zh) * | 2013-01-17 | 2016-11-30 | 昆腾微电子股份有限公司 | 使用rsa公开密钥加密算法的电子部件中的防攻击方法和装置 |
CN107196764A (zh) * | 2017-07-19 | 2017-09-22 | 龙迅半导体(合肥)股份有限公司 | 一种rsa加解密处理方法和装置 |
CN108242994A (zh) * | 2016-12-26 | 2018-07-03 | 阿里巴巴集团控股有限公司 | 密钥的处理方法和装置 |
CN110113169A (zh) * | 2019-04-15 | 2019-08-09 | 北京三未信安科技发展有限公司 | 基于rsa的协同数字签名方法、装置及电子设备 |
CN117992990A (zh) * | 2024-04-01 | 2024-05-07 | 国网山东省电力公司济南供电公司 | 一种高效的电力数据同态加密方法、处理器及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1392472A (zh) * | 2002-07-31 | 2003-01-22 | 清华大学 | Vlsi用的蒙格玛丽模乘算法及智能卡模乘器的vlsi结构 |
CN1694061A (zh) * | 2005-05-18 | 2005-11-09 | 上海迪申电子科技有限责任公司 | 操作数长度可伸缩的蒙哥马利模乘算法 |
CN101470598A (zh) * | 2007-12-28 | 2009-07-01 | 航天信息股份有限公司 | 提高大整数Montgomery模乘运算速度的方法 |
-
2010
- 2010-12-27 CN CN201010622313.2A patent/CN102571342B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1392472A (zh) * | 2002-07-31 | 2003-01-22 | 清华大学 | Vlsi用的蒙格玛丽模乘算法及智能卡模乘器的vlsi结构 |
CN1694061A (zh) * | 2005-05-18 | 2005-11-09 | 上海迪申电子科技有限责任公司 | 操作数长度可伸缩的蒙哥马利模乘算法 |
CN101470598A (zh) * | 2007-12-28 | 2009-07-01 | 航天信息股份有限公司 | 提高大整数Montgomery模乘运算速度的方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103684763A (zh) * | 2012-09-19 | 2014-03-26 | 北京握奇数据系统有限公司 | 基于rsa算法的数据加密方法、装置及智能卡 |
CN103209073A (zh) * | 2013-01-17 | 2013-07-17 | 北京昆腾微电子有限公司 | 使用rsa公开密钥加密算法的电子部件中的防攻击方法和装置 |
CN103209073B (zh) * | 2013-01-17 | 2016-11-30 | 昆腾微电子股份有限公司 | 使用rsa公开密钥加密算法的电子部件中的防攻击方法和装置 |
US9851948B2 (en) | 2013-04-16 | 2017-12-26 | Feitian Technologies Co., Ltd. | Method for implementing precomputation of large number in embedded system |
WO2014169783A1 (zh) * | 2013-04-16 | 2014-10-23 | 飞天诚信科技股份有限公司 | 一种在嵌入式系统中实现大数预计算的方法 |
CN103401681B (zh) * | 2013-07-02 | 2016-08-31 | 北京华大信安科技有限公司 | 取模方法、取模装置及芯片 |
CN103401681A (zh) * | 2013-07-02 | 2013-11-20 | 北京华大信安科技有限公司 | 取模方法、取模装置及芯片 |
CN103580869B (zh) * | 2013-11-06 | 2016-09-21 | 北京华大信安科技有限公司 | 一种crt-rsa签名方法及装置 |
CN103580869A (zh) * | 2013-11-06 | 2014-02-12 | 北京华大信安科技有限公司 | 一种crt-rsa签名方法及装置 |
CN108242994A (zh) * | 2016-12-26 | 2018-07-03 | 阿里巴巴集团控股有限公司 | 密钥的处理方法和装置 |
CN107196764A (zh) * | 2017-07-19 | 2017-09-22 | 龙迅半导体(合肥)股份有限公司 | 一种rsa加解密处理方法和装置 |
CN110113169A (zh) * | 2019-04-15 | 2019-08-09 | 北京三未信安科技发展有限公司 | 基于rsa的协同数字签名方法、装置及电子设备 |
CN110113169B (zh) * | 2019-04-15 | 2021-11-12 | 北京三未信安科技发展有限公司 | 基于rsa的协同数字签名方法、装置及电子设备 |
CN117992990A (zh) * | 2024-04-01 | 2024-05-07 | 国网山东省电力公司济南供电公司 | 一种高效的电力数据同态加密方法、处理器及存储介质 |
CN117992990B (zh) * | 2024-04-01 | 2024-05-31 | 国网山东省电力公司济南供电公司 | 一种高效的电力数据同态加密方法、处理器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102571342B (zh) | 2016-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102571342A (zh) | 一种rsa算法数字签名方法 | |
Bernstein et al. | Curve41417: Karatsuba revisited | |
Roy et al. | Tile before multiplication: An efficient strategy to optimize DSP multiplier for accelerating prime field ECC for NIST curves | |
KR102132261B1 (ko) | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 | |
EP4156595A1 (en) | Combined post-quantum security utilizing redefined polynomial calculation | |
Zheng et al. | Exploiting the floating-point computing power of GPUs for RSA | |
Li et al. | Research in fast modular exponentiation algorithm based on FPGA | |
CN104699452A (zh) | 一种素域gf(p)下实现位宽可变的模乘法器 | |
CN103339665A (zh) | 用于多位数除法或模变换的方法 | |
CN101788900B (zh) | 基于dna自组装技术的椭圆曲线密码系统的破译方法及系统 | |
VR et al. | An improved quad Itoh-Tsujii algorithm for FPGAs | |
US20140286488A1 (en) | Determining a Division Remainder and Ascertaining Prime Number Candidates for a Cryptographic Application | |
CN102646033B (zh) | 提供了加密和签名功能的rsa算法的实现方法和装置 | |
McLoone et al. | Coarsely integrated operand scanning (CIOS) architecture for high-speed Montgomery modular multiplication | |
Cho et al. | Faster elliptic curve arithmetic for triple-base chain by reordering sequences of field operations | |
Verma et al. | FPGA implementation of RSA based on carry save Montgomery modular multiplication | |
Rahman et al. | Efficient hardware implementation of RSA cryptography | |
Wu et al. | Improved RNS Montgomery modular multiplication with residue recovery | |
Zhao et al. | Exploring the speed limit of SM2 | |
Tamura et al. | Implementation and Evaluation of modular multiplication based on Coarsely Integrated Operand Scanning | |
Wu | High-Performance RNS Modular Exponentiation by Sum-Residue Reduction | |
Zhou et al. | New algorithm and fast VLSI implementation for modular inversion in galois field GF (p) | |
Al-Khatib et al. | Hardware Designs and Architectures for Projective Montgomery ECC over GF (p) benefiting from mapping elliptic curve computations to different degrees of parallelism | |
Zhang et al. | Research on Encryption Technology of CAA Software Based on RSA Algorithm and Hardware Information Extraction | |
de Macedo Mourelle et al. | Fast reconfigurable hardware for the M-ary modular exponentiation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 102209 Beijing, Beiqijia, the future of science and technology in the south area of China electronic network security and information technology industry base C building, Applicant after: Beijing CEC Huada Electronic Design Co., Ltd. Address before: 100102 Beijing City, Chaoyang District Lize two Road No. 2, Wangjing science and Technology Park A block five layer Applicant before: Beijing CEC Huada Electronic Design Co., Ltd. |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |