基于余数系统的rsa密码处理方法及协处理器的制作方法

文档序号:6426373阅读:260来源:国知局
专利名称:基于余数系统的rsa密码处理方法及协处理器的制作方法
技术领域
本发明涉及信息技术安全及微处理器设计。具体讲,涉及基于余数系统的RSA密码协处理器。
背景技术
RSA 公钥加密算法是 1977 年由 Ron Rivest、Adi Shamirh 和 LenAdleman 在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。随着计算机网络和信息技术的发展,信息安全在各领域发挥着越来越重要的作用,其中密码学已经成为信息安全技术的核心。RSA是目前公认的在理论和实际应用中最为成熟和完善的一种公钥密码体制,它是基于大整数因子分解的困难性来确保RSA算法的安全性。目前大多数使用公钥密码进行加密和数字签名都是使用RSA算法。大数模幂运算是RSA算法的核心运算,它是由一系列大数模乘运算构成,大数位数需要在数百bit到上千bit,因此运算量非常大,是加解密运算速度慢的主要瓶颈。RSA 密码系统的算法并不复杂,但它依赖于长整数的模乘幂运算,很难获得比较高的数据处理度。模幂运算由一系列的模乘法运算完成,在实现长整数的模乘法运算的所有算法中, Montgomery算法不依赖于长整数的比较和除法,是一种便于硬件实现的算法,所以应用最为广泛。

发明内容
为克服现有技术的不足,能够加速RSA模乘运算速度;扩展额外的数据通路,增加 FU之间的级联,有效地避免了大量的冗余数据写回过程,充分发掘了指令级并行性,提高 RSA加解密性能。为达到上述目的,本发明采取的技术方案是,基于余数系统的RSA密码处理方法,采用RSA算法进行加解密运算,采用L-R 二进制扫描模幂算法进行RSA算法的大数模幂运算,所述L-R 二进制扫描模幂算法将大数模幂运算转化成大数模乘运算,具体为从左到右扫描幂指数的每一个二进制比特位,每扫描一个比特位,进行一次大数模平方,如果当前比特位为1,则继续进行一次大数模乘,否则,扫描下一比特位,采用改进的基于余数系统的Montgomery算法进行大数模乘运算,所述改进的Montgomery算法具体为将1024bit 的大数表示成余数系统下的数,即两组33个32bit的小数,以及1个冗余基下表示的32bit 的数,表示过程即求模过程,分解成的32bit小数分别独立参与32bit的模乘、模乘累加、模加运算,并且各个32bit数据之间不存在依赖,进行并行执行运算。所述算法具体包括下列步骤输入x,y,N在两组基和在冗余基mr下的表示,M' = (M' 1 Μ' 2,...,M' k)B,, Mr = Mmodmr ;输出r = xyM—1 (modN)在两组基和冗余基下的表示,r ( (k+2)N ;
-1Stepl -Ai = Xj x yf x (-Nj ) (mod Inj). (/ = 1,2,L ,k) _
Stepl.1 IZi=(XiXyi)Hiodmi ;
Stepl.2哟-I =(ζ · χ -N^ ) mod m^
Step2(Q1,Q2' L, qk)B — (q' q' 2, L, q' k)B,andqr ;
Step3:rr =(xr X yr+qr X Nr) X Mr (modmr);
r'「=(χ'iXy' i+q' jXN'》XM' Jmodm'i) (i =
Step3.1 :Ζ'i = (x' iXy' i)modm' i ;
Step3.2 :w'i = (z' i+q' iXN' Dmodm'
Step3.3 :r'i = (w' iXM' Jmodm' j ;
St印4:(r'r' 2,L, r' k)B' — Cr1, r2, L, rk)B ;其中,第一步和第三步是简单的模乘和模加运算,进行并行执行;第二步和第四步是两组基下的转换,其分解步骤如下第一次基转换算法由基B到基B’的转换算法;输入(qi,屮,·· ·,cik)B ;输出(q' q' 2, · · · , q' k)B- andqr ;
-ISteplJi = ^ x | Mj mod mt (i = 1,2,L ,k
kStep 2. q^ =I Σ I M . I , χ/, I , J=I J mt 1 mi
第二次基转换算法
由基B’到基B的转换算法
输入(r'1' Γ 2' Lj Γ k
输出(巧,τ2, L, rk) β ;
Stepl -Ji—-1 =r!x I Mi mod ι
St印2 -.β=IlF1 \mr {i\Mi I1
(z· = 1’2’L ,k)
)B, andrr ;
mr ι r' 'mr Step 3 r. =| Σ | Mj ‘ xlj - | βΜ ‘ ‘ (i, j = 1’ 2’L ’ k)
1 1 1其中,B= Ovm2,...,mk),andM = nf=1巧,B是一组基,其中叫是基的元素,每一个mi32bit,M是所有Hii的乘积,Mi是M除以Hii得到的结果;k是一组基中元素的个数;B' = (m' !,m' 2,...,m' k),and M = nf=1,B'是另一组基,其中 m/ 是基的元素,每一个m/ 32bit,i是所有m' i的乘积,是i除以m' i得到的结果;mr 是一个 32bit 的冗余基,xr、yr> qr、Nr、Mr 分别是 χ、y、q、N、M 对 mr 取余;N是RSA算法中的模数,Ni是N对Hii取余,Ni'是N对Hii ‘取余,-Λ^1是N对Hii求逆并取负值;M' = (M1',M2' Λ,Mk' )Β,,Μ'是M在基 B'下的表示,M' 1是] 对每一个Hii'取余;Xi =Xmodmi (0《χ《Μ = nf=1 巧)其中 χ 是 1024bit 的数据,Xi 是 χ 对 Hii 取余;Xi' = Xmodmi ‘其中 χ 是 IOMbit 的数据,Xi ‘是 χ 对 Hii ‘取余; χ= Σ X1M1 I Μ1 I modM 其中 Mi = MAii,丨 Μ-1 丨代表 Mi 模 Hii 并求逆; / =1^I i —qi、Zi、Z'β 分别是 32bit 的中间数据;r是结果,其中巧是1~在叫下的表示,是r在m/下的表示,rr是r在mr下的
表示,M;,Mr,IMT1U1 ’I Mj Ui ’IM71 U, ’ IM"1 Im,IM1 L, | L, | M Im,.
|M丄;是MJimi'取余,丨玩—丄)是玩对m' i求逆,|玩是玩对Hii取余,|玩是 ^对mr取余,I ▽ ^是斤对Hii取余;一部分数据在每次计算过程中都是相同的,属于固定数据,在PC机上进行预计算并存储在所设计协处理器的LUT功能单元中,无需通过协处理器进行计算,以减少转化的整体时间,这些预计算数据包括算法中的Μ,M7JA^1 ImijIM^Imi5IMZ1 Imy
L1JM, LiJMHmr,!MI
O基于余数系统的RSA密码协处理器,基于TTA-Like架构来实现IOMbit的RSA 加解密算法,整体结构为采用8条总线来进行数据之间的传输,需要进行数据通讯的功能单元之间通过总线进行连接,处理器中包括2个存取数据单元LDST、3个查表单元LUT、1 个寄存器组RU、1个跳转功能单元JMP、1个算术逻辑运算单元ALU和8个模乘累加功能单元MMAC ;存取数据单元是唯一能与RAM进行交互的功能单元,LDST访问数据存储器Data Memory时,支持两种寻址方式直接寻址和偏移寻址,完成直接寻址取数、直接寻址存数、 偏移寻址取数和偏移寻址存数;查表单元是与ROM进行交互的功能单元;LUT单元可以完成以4Bank形式的查表,即同一周期从ROM里Load4个在同一地址上的32bit预计算数据,以及以Burst形式加载32个连续地址存放的预计算数据;寄存器组用来暂存操作数或者运算结果,跳转功能单元用来支持绝对跳转、条件跳转和循环操作;除总线外,功能单元之间还设计了额外的数据通路其中第二个数据存取单元 LDST2和前四个MMAC之间、第3个查表单元LUT3和后四个的MMAC之间存在着直接的数据通路;处理器中的模乘累加功能单元MMAC是进行模乘运算的核心计算功能单元,主要完成模乘、模加、模乘累加操作;算术逻辑运算单元ALU用来实现包括模加、模减和32bit数左移一位的逻辑功能。模乘累加功能单元MMAC有两个operand寄存器、一个trigger寄存器和一个 result寄存器,两个operand寄存器分别为乘数寄存器和模数寄存器,功能单元延时为3, 支持三种触发方式mul、mac和clr,能够完成模乘、模乘累加和清零操作;本FU分三级流水来完成模乘累加功能第一级流水完成两个32bit的数相乘;第二级流水将第一级流水产生的64bit乘法结果进行模O32-Ci)的运算,得到(a*b) mod(232-Ci)的结果;第三级流水为完成累加功能,即将本次模乘结果与上一次模乘结果进行累加;
其中在第二级流水中,假设P为第一级流水产生的64bit乘法结果,mi为模数,即 232-(;,其中Ci为不大于214-1的数,Pl表示P的高32bit,PO表示P的低32bit,则64bit的数P模上数Ci (不大于214-1),转化为47bit的数plCi+pQ模上数Ci输入64bit的P,P1表示P的高32bit,P0表示P的低32bi其中不大于214_1的数(;输出ρ'= ρΛ+ρ。,其中 ρ'不大于 47bit
P mod Wi1 = [^1 (232 - C1 +C1) + p0 Jmod m,
=[A (232 - C1 +C1) + p0 ]mod(232 - M1)
=ti(232 -^)]Μο(1(232 -Ttil) + + 尸。)mod(232 -M1)
=(PA + p0)mod(232 - mt)得到的plCi+p0 中,P1 不大于 32bit,Ci 不大于 14bit,p0 为 32bit,所以 plCi+p0 不大于47bit ;同理,令ρ' =plCi+pQ再执行一次这样的操作得到(p' lCi+p' 0)mod(232-mi), 此时得到的P'工不大于14bit,Ci也不大于14bit,ρ'。不大于32bit,相加后的不大于 33bit ;比较p' lCi+p' ^与232-(;的大小,如果大于232-(;则进行一次相减操作,此时得到的结果便是(a*b)mod(232-Ci);在第三级流水中,主要完成(a' +b' )πι0(1(232-(;),其中a'为模乘后得到的结果,b'为上次累加的结果。FU第三级流水中第一个加法器完成c' =a' +b',第二个加法器主要完成d = c' +Ci,后面的两个多路选择器为,如果d大于232,则执行一次相减操作,若d小于232,则d即为所得结果。算术逻辑运算单元ALU包括两个Operand寄存器、一个trigger寄存器和一个 Result寄存器,trigger type包括3个信号,ALU单元在一个时钟周期内只有一个trigger type信号有效,触发后一个周期延时后得到结果,结果放在Result寄存器里面;在FU的内部结构中,有模加和模减两种运算,主要完成(a+b) mod (232-以或 (『 3)πι0(1(232-(;),其中alul_0_m0d为模数操作数寄存器,这里模数都是232-(;的形式,送给alul_0_m0d的数是Ci,而不是232-(;,本FU在各数据到达后先根据alu_type 来选择是完成那种操作,如果是alu_type是001,则完成模加运算,010完成模减运算,100 完成对alu_t_dat的左移位操作;本FU首先对alul_0_Subtract0r进行按位取反并在最低位后补1操作,和直接在最低位的后一位补0操作,对alU_t_dat进行最低位的后一位补1 操作,这样就可以利用一个多路选择器进行选择,用一个加法器完成加法或减法的操作。本发明的基于余数系统的RSA算法处理器,根据算法特点充分发掘了数据级和指
令级的并行性,在此基础上设计了适用于流水和并行计算的功能单元,有效地避免了大量
的冗余数据写回过程,提高了 RSA加解密性能;本发明采用L-R 二进制扫描模幂算法和RNS
Montgomery模乘算法,将复杂的大数模乘运算转换成了处理器容易实现的32bit数的模
乘,模加,模乘累加操作,同时大数分解产生的各部分数据之间并无相互的计算依赖关系,
有效地提高了大数模幂运算的数据级并行性。


图1模乘累加功能单元基本结构。图2算术逻辑运算功能单元基本结构。图3指令流水线。图4基于余数系统的RSA密码协处理器指令格式。图中,SRC source reg addr ; DEST :destination reg addr ;IMD immediate data。图5基于余数系统的RSA密码协处理器架构图。图6第一组运算逻辑的计算流程。图7第二组运算逻辑的计算流程。图8跳转功能单元JMP。图9LDST存取数据功能单元。图10LUT查表功能单元。
具体实施例方式基于 RNS (Residue Number System,余数系统)的 Montgomery 模乘算法是对 RSA 算法的有效实现。Montgomery模乘中基本操作是加法和乘法。RNS的优势是加法、减法、乘法是非常简单的小数运算,可为独立的计算RNS中的每个元素,这就使得Montgomery乘法和RNS算法结合能实现快速并行处理。本发明是一种TTA-Like架构的密码处理器,充分利用RNS的并行性来实现RSA算法,通过设计专门的模乘单元,利用各功能单元之间的级联,有效的提高了 RSA的加解密性能。本发明是基于余数系统的RSA密码协处理器。研究表明,在未来的集成电路设计中,大规模的并行处理技术将取代传统的串行处理方式,以满足对集成电路处理能力和处理速度日益提高的要求。余数系统作为一种并行数值表示系统,充分挖掘了计算密集型任务的数据并行性,能有效地提高任务的处理性能。余数系统由一组两两互质的余数基B= (Iii1, m2, . . . , mk)来定义的,一个二进制数 X在该余数系统中表示为
权利要求
1.一种基于余数系统的RSA密码处理方法,其特征是,采用RSA算法进行加解密运算, 采用L-R 二进制扫描模幂算法进行RSA算法的大数模幂运算,所述L-R 二进制扫描模幂算法将大数模幂运算转化成大数模乘运算,具体为从左到右扫描幂指数的每一个二进制比特位,每扫描一个比特位,进行一次大数模平方,如果当前比特位为1,则继续进行一次大数模乘,否则,扫描下一比特位,采用改进的基于余数系统的Montgomery算法进行大数模乘运算,所述改进的Montgomery算法具体为将1024bit的大数表示成余数系统下的数,即两组33个32bit的小数,以及1个冗余基下表示的32bit的数,表示过程即求模过程,分解成的32bit小数分别独立参与32bit的模乘、模乘累加、模加运算,并且各个32bit数据之间不存在依赖,进行并行执行运算。
2.根据权利要求1所述的方法,其特征是,具体包括下列步骤输入x,y,N在两组基和在冗余基mr下的表示,M' = (M' 1 Μ' 2,...,M' k)B, ,Mr = Mmodmr;输出r = xyM"1 (modN)在两组基和冗余基下的表示,
3. 一种基于余数系统的RSA密码协处理器,其特征是,基于TTA-Like架构来实现 IOMbit的RSA加解密算法,整体结构为采用8条总线来进行数据之间的传输,需要进行数据通讯的功能单元之间通过总线进行连接,处理器中包括2个存取数据单元LDST、3个查表单元LUT、1个寄存器组RU、1个跳转功能单元JMP、1个算术逻辑运算单元ALU和8个模乘累加功能单元MMAC ;存取数据单元是唯一能与RAM进行交互的功能单元,LDST访问数据存储器Data Memory时,支持两种寻址方式直接寻址和偏移寻址,完成直接寻址取数、直接寻址存数、偏移寻址取数和偏移寻址存数;查表单元是与ROM进行交互的功能单元;LUT单元可以完成以4Bank形式的查表,即同一周期从ROM里Load4个在同一地址上的预计算数据,以及以Burst形式加载32个连续地址存放的预计算数据;寄存器组用来暂存操作数或者运算结果,跳转功能单元用来支持绝对跳转、条件跳转和循环操作;除总线外,功能单元之间还设计了额外的数据通路其中第二个数据存取单元LDST2 和前四个MMAC之间、第3个查表单元LUT3和后四个的MMAC之间存在着直接的数据通路; 处理器中的模乘累加功能 单元MMAC是进行模乘运算的核心计算功能单元,主要完成模乘、模加、模乘累加操作;算术逻辑运算单元ALU用来实现包括模加、模减和32bit数左移一位的逻辑功能。
4.如权利要求3所述的协处理器,其特征是,模乘累加功能单元MMAC有两个operand 寄存器、一个trigger寄存器和一个result寄存器,两个operand寄存器分别为乘数寄存器和模数寄存器,功能单元延时为3,支持三种触发方式mul、mac和clr,能够完成模乘、模乘累加和清零操作;本FU分三级流水来完成模乘累加功能第一级流水完成两个32bit的数相乘;第二级流水将第一级流水产生的64bit乘法结果进行模O32-Ci)的运算,得到(a*b)HiodQ32-Ci)的结果;第三级流水为完成累加功能,即将本次模乘结果与上一次模乘结果进行累加;其中在第二级流水中,假设P为第一级流水产生的64bit乘法结果,mi为模数,即 232-(;,其中Ci为不大于214-1的数,Pl表示P的高32bit,P0示P的低32bit,则:64bit的数P模上数Ci (不大于214-1),转化为47bit的数plCi+p0模上数Ci输入:64bit的P,P1表示P的高32bit,PQ表示P的低32bi其中不大于214-1的数Ci输出:p' = PlCi+Po,其中ρ ‘ 不大于47bit
5.如权利要求3所述的协处理器,其特征是,算术逻辑运算单元ALU包括两个Operand 寄存器、一个trigger寄存器和一个Result寄存器,trigger type包括3个信号,ALU单元在一个时钟周期内只有一个trigger type信号有效,触发后一个周期延时后得到结果,结果放在Result寄存器里面;在FU的内部结构中,有模加和模减两种运算,主要完成=(^b)HiodO32-Ci)或(a-b)HiodO32-Ci),其中alul_0_m0d为模数操作数寄存器,这里模数都是232-Ci的形式,送给 alul_o_mod的数是Ci,而不是232-(;,本FU在各数据到达后先根据allotype来选择是完成那种操作,如果是allotype是001,则完成模加运算,010完成模减运算,100完成对alu_t_ dat的左移位操作;本FU首先对alul_0_Subtract0r进行按位取反并在最低位后补1操作, 和直接在最低位的后一位补0操作,对alU_t_dat进行最低位的后一位补1操作,这样就可以利用一个多路选择器进行选择,用一个加法器完成加法或减法的操作。
全文摘要
本发明涉及信息技术安全及微处理器设计。为能够加速RSA模乘运算速度,提高RSA加解密性能,本发明采取的技术方案是,基于余数系统的RSA密码处理方法,采用RSA算法进行加解密运算,采用L-R二进制扫描模幂算法进行RSA算法的大数模幂运算,所述改进的Montgomery算法具体为将1024bit的大数表示成余数系统下的数,即两组33个32bit的小数,以及1个冗余基下表示的32bit的数,表示过程即求模过程,分解成的32bit小数分别独立参与32bit的模乘、模乘累加、模加运算,并且各个32bit数据之间不存在依赖,进行并行执行运算。本发明主要应用于信息技术安全及微处理器设计。
文档编号G06F7/72GK102231102SQ20111016120
公开日2011年11月2日 申请日期2011年6月16日 优先权日2011年6月16日
发明者刘亚灵, 白松辉, 苏蛟, 郭炜, 魏继增 申请人:天津大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1