一种rsa算法数字签名方法

文档序号:7898838阅读:694来源:国知局
专利名称:一种rsa算法数字签名方法
技术领域
本发明主要应用于智能卡安全计算领域。
背景技术
RSA私钥运算主要涉及到两个关键技术1.使用蒙哥马利模乘算法记蒙哥马利模乘为MonMul (a, b,m),则MonMul (a, b, m) = a*b*R_1mod m,其中 a, b, m 的位长为 L, R = 2L, IT1 满足 mo dm = 1, mod为取娱运算。2.使用中国剰余定理进行加速记RSA私钥运算的输入数据为C,RSA的私钥參数为p,q,d和n,其中ρ和q的位长为L/2,d和η的位长为L,则RSA私钥运算Cd mod n,通过中国剰余定义可以转化为关于 P和q的模幂运算,提高运行速度。以下是使用中国剰余定理进行RSA私钥运算的简要说明,本发明主要是对其中的參数Cp和Cq计算方法的改进。准备计算參数 dp = d mod(p-l), dq = d mod(q-l)禾ロ qlnv,qlnv 满足 qlnv*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 ρ, Mq = Cpdq mod q3.计算 Mpq, Mpq= (Mp-Mq)氺qlnv mod ρ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*2レ2。我们可以看到这里的2リ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,ρ),就可以得到 CH*R mod P,也即 CH << L/2mod P,记为 CHP。5.最后计算CHP+CLP即所需的C mod P,用同样的方法,计算C mod Q。步骤4中使用蒙哥马利算法计算乘法,由于最终结果是L长度,因此需要将Mpq和 q的高位补“O”填充至L长,然后使用L位长的蒙哥马利模乘器计算乘法,此时,MonMul (a, b,m)中!11 = 2^1,长度为し改进的方法如下1.将Mpq和Q作为的输入数据,将L/2位长的a和b拆分为等长度的两部分, 其中aH表示a的高L/4部分,aL表示a的低L/4部分,bH表示b的高L/4部分,bL表示b 的低L/4部分。2.将aL用“O”填充至L/2长,记为aLO,将bL用“O”填充至L/2长,记为bLO,其实aL = aLO, bL = bLO。记L/2长的OxFF为m,用蒙哥马利模乘器计算MonMul (aLO, bLO, m) = aL0*bL0*R_1 mod m,由于 m 为 2L_1,那么 IT1 = 1,实际上,ali^bliM^mod 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_lmod m,那么只需计算 MonMul (CH, R2,ρ),就可以得至Ij CH*R mod P,也即 CH << L/2mod P,记为 CHP。5.最后计算CHP+CLP即所需的C mod P,用同样的方法,计算C mod Q。步骤4中使用蒙哥马利算法计算乘法,由于最终结果是L长度,因此需要将Mpq和 q的高位补“O”填充至L长,然后使用L位长的蒙哥马利模乘器计算乘法,此时,MonMul (a, b,m)中!11 = 2^1,长度为し改进的方法如下1.将Mpq和Q作为^b的输入数据,将L/2位长的a和b拆分为等长度的两部分, 其中aH表示a的高L/4部分,aL表示a的低L/4部分,bH表示b的高L/4部分,bL表示b 的低L/4部分。2.将aL用“O”填充至L/2长,记为aLO,将bL用“O”填充至L/2长,记为bLO,其实aL = aL0,bL = bLO。记L/2长的OxFF为m,用蒙哥马利模乘器计算MonMul (aLO, bLO,m) =aL0*bL0*R-lmod m,由于 m 为 2L-1,那么 R-I = 1,实际上,aL0*bL0*R_lmod m = aL*bL。3.用同样的步骤计算 aH*bL,bH*aL, bH*aH,最后计算 aLbL+aHbL < < (L/4) +bHaL くく (L/2) +bHaH くく (3L/4),即可得到 a*b。
权利要求
1. ー种RSA算法数字签名方法,其特征在于步骤如下(1)计算Cp和Cq,其中Cp= C mod P,Cq = C mod Q,C为RSA私钥运算的输入数据; P,Q,d和η为RSA的私钥參数,P和Q的位长为L/2,d和η的位长为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得到Cmod P,用同样的方法,计算C mod Q;(6)计算Mp 禾ロ Mq,其中 Mp = Cpdp mod P, Mq = Cpdq mod Q ;(7)计算Mpq, Mpq= (Mp-Mq) *qlnv mod Q ;(8)计算Res= Mpq*Q+Mq ;将Mpq和Q的高位补“O”填充至L长,使用L位长的蒙哥马利模乘器计算乘法,将Mpq和Q作为的输入数据,将L/2位长的a和b拆分为等长度的两部分,其中aH表示a的高L/4部分,aL表示a的低L/4部分,bH表示b的高L/4部分, bL表示b的低L/4部分;(9)将aL用“O”填充至L/2长,记为aLO,将bL用“O”填充至L/2长,记为bLO,记L/2 长的 OxFF 为 m,用蒙哥马利模乘器计算 MonMul (aLO, bLO, m) = aL0*bL0*R_l mod m ;(10)用同样的步骤计算aH*bL,bH*aL,bWaH,最后计算 aLbL+aHbL < < (L/4) +bHaL くく (L/2) +bHaH << (3L/4),即可得到 a*b。
全文摘要
本发明设计一种RSA算法数字签名方法,基于1024位的硬件协处理器实现1408位的RSA私钥运算技术,主要应用于智能卡安全计算领域,是利用小位长的模乘器计算大位长的RSA私钥运算中的参数,例如利用1024位的模乘器计算1408位或者2048位RSA私钥运算中的参数。RSA的私钥运算利用中国剩余定理,可以将其主要运算——模幂运算的运算长度降低,但是其中关键参数的运算,例如C mod P、C mod Q和乘法运算。其中C表示明文,长度是P和Q的两倍。而乘法运算是利用模乘器进行了加速,其最终结果也超出了模乘器的运算能力。技术中主要是利用模运算算法变形,将C拆分成两个小位长的数,计算C mod P;通过四次乘法运算计算大于模乘器长度的乘法运算。
文档编号H04L9/08GK102571342SQ20101062231
公开日2012年7月11日 申请日期2010年12月27日 优先权日2010年12月27日
发明者汪涛, 范楠迪, 马宁 申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1