发明内容
为克服现有技术的不足,能够加速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,M′2,...,M′k)B′,Mr=Mmodmr;
输出:r=xyM-1(modN)在两组基和冗余基下的表示,r≤(k+2)N;
Step1:
Step1.1:zi=(xi×yi)modmi;
Step1.2:
Step2:(q1,q2,L,qk)B→(q′1,q′2,L,q′k)B′andqr;
Step3:rr=(xr×yr+qr×Nr)×Mr(modmr);
r′i=(x′i×y′i+q′i×N′i)×M′i(modm′i)(i=1,2,L,k);
Step3.1:z′i=(x′i×y′i)modm′i;
Step3.2:w′i=(z′i+q′i×N′i)modm′i;
Step3.3:r′i=(w′i×M′i)modm′i;
Step4:(r′1,r′2,L,r′k)B′→(r1,r2,L,rk)B;
其中,第一步和第三步是简单的模乘和模加运算,进行并行执行;第二步和第四步是两组基下的转换,其分解步骤如下:
第一次基转换算法:
由基B到基B’的转换算法;
输入:(q1,q2,...,qk)B;
输出:(q′1,q′2,...,q′k)B′andqr;
第二次基转换算法:
由基B’到基B的转换算法:
输入:(r′1,r′2,L,r′k)B′andrr;
输出:(r1,r2,L,rk)B;
Step1:
Step2:
其中,B=(m
1,m
2,...,m
k),and
B是一组基,其中m
i是基的元素,每一个m
i32bit,M是所有m
i的乘积,M
i是M除以m
i得到的结果;
k是一组基中元素的个数;
B′=(m′
1,m′
2,...,m′
k),and
B′是另一组基,其中m
i′是基的元素,每一个m
i′32bit,
是所有m′
i的乘积,
是
除以m′
i得到的结果;
mr是一个32bit的冗余基,xr、yr、qr、Nr、Mr分别是x、y、q、N、M对mr取余;
N是RSA算法中的模数,N
i是N对m
i取余,N
i′是N对m
i′取余,
是N对m
i求逆并取负值;
M′=(M1′,M2′Λ,Mk′)B′,M′是M在基B′下的表示,M′i是M对每一个mi′取余;
其中x是1024bit的数据,xi是x对mi取余;
xi′=xmodmi′其中x是1024bit的数据,xi′是x对mi′取余;
其中Mi=M/mi, 代表Mi模mi并求逆;
qi、zi、z′i、w′i、li、β分别是32bit的中间数据;
r是结果,其中ri是r在mi下的表示,ri′是r在mi′下的表示,rr是r在mr下的表示,
是M
j对m
i′取余,
是
对m′
i求逆,
是
对m
i取余,
是
对m
r取余,
是
对m
i取余;
一部分数据在每次计算过程中都是相同的,属于固定数据,在PC机上进行预计算并存储在所设计协处理器的LUT功能单元中,无需通过协处理器进行计算,以减少转化的整体时间,这些预计算数据包括算法中的
基于余数系统的RSA密码协处理器,基于TTA-Like架构来实现1024bit的RSA加解密算法,整体结构为:采用8条总线来进行数据之间的传输,需要进行数据通讯的功能单元之间通过总线进行连接,处理器中包括2个存取数据单元LDST、3个查表单元LUT、1个寄存器组RU、1个跳转功能单元JMP、1个算术逻辑运算单元ALU和8个模乘累加功能单元MMAC;存取数据单元是唯一能与RAM进行交互的功能单元,LDST访问数据存储器DataMemory时,支持两种寻址方式:直接寻址和偏移寻址,完成直接寻址取数、直接寻址存数、偏移寻址取数和偏移寻址存数;查表单元是与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乘法结果进行模(232-Ci)的运算,得到(a*b)mod(232-Ci)的结果;第三级流水为完成累加功能,即将本次模乘结果与上一次模乘结果进行累加;
其中在第二级流水中,假设P为第一级流水产生的64bit乘法结果,mi为模数,即232-Ci,其中Ci为不大于214-1的数,P1表示P的高32bit,P0表示P的低32bit,则:
64bit的数P模上数Ci(不大于214-1),转化为47bit的数p1ci+p0模上数Ci
输入:64bit的P,P1表示P的高32bit,P0表示P的低32bi其中不大于214-1的数Ci
输出:p′=p1ci+p0,其中p′不大于47bit
得到的p1ci+p0中,p1不大于32bit,ci不大于14bit,p0为32bit,所以p1ci+p0不大于47bit;同理,令p′=p1ci+p0再执行一次这样的操作得到(p′1ci+p′0)mod(232-mi),此时得到的p′1不大于14bit,ci也不大于14bit,p′0不大于32bit,相加后的不大于33bit;比较p′1ci+p′0与232-Ci的大小,如果大于232-Ci则进行一次相减操作,此时得到的结果便是(a*b)mod(232-Ci);
在第三级流水中,主要完成(a′+b′)mod(232-Ci),其中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-Ci)或(a-b)mod(232-Ci),其中alu1_o_mod为模数操作数寄存器,这里模数都是232-Ci的形式,
送给alu1_o_mod的数是Ci,而不是232-Ci,本FU在各数据到达后先根据alu_type来选择是完成那种操作,如果是alu_type是001,则完成模加运算,010完成模减运算,100完成对alu_t_dat的左移位操作;本FU首先对alu1_o_subtractor进行按位取反并在最低位后补1操作,和直接在最低位的后一位补0操作,对alu_t_dat进行最低位的后一位补1操作,这样就可以利用一个多路选择器进行选择,用一个加法器完成加法或减法的操作。
本发明的基于余数系统的RSA算法处理器,根据算法特点充分发掘了数据级和指令级的并行性,在此基础上设计了适用于流水和并行计算的功能单元,有效地避免了大量的冗余数据写回过程,提高了RSA加解密性能;本发明采用L-R二进制扫描模幂算法和RNSMontgomery模乘算法,将复杂的大数模乘运算转换成了处理器容易实现的32bit数的模乘,模加,模乘累加操作,同时大数分解产生的各部分数据之间并无相互的计算依赖关系,有效地提高了大数模幂运算的数据级并行性。
具体实施方式
基于RNS(Residue Number System,余数系统)的Montgomery模乘算法是对RSA算法的有效实现。Montgomery模乘中基本操作是加法和乘法。RNS的优势是加法、减法、乘法是非常简单的小数运算,可为独立的计算RNS中的每个元素,这就使得Montgomery乘法和RNS算法结合能实现快速并行处理。
本发明是一种TTA-Like架构的密码处理器,充分利用RNS的并行性来实现RSA算法,通过设计专门的模乘单元,利用各功能单元之间的级联,有效的提高了RSA的加解密性能。
本发明是基于余数系统的RSA密码协处理器。研究表明,在未来的集成电路设计中,大规模的并行处理技术将取代传统的串行处理方式,以满足对集成电路处理能力和处理速度日益提高的要求。余数系统作为一种并行数值表示系统,充分挖掘了计算密集型任务的数据并行性,能有效地提高任务的处理性能。
余数系统由一组两两互质的余数基B=(m1,m2,...,mk)来定义的,一个二进制数X在该余数系统中表示为:
X=(x1,x2,...xk)
其中,xi=X mod mi,记为<X>mi。当X≤M=m1×m2×...×mk时,这样的表示是唯一的,M称为该余数系统的动态范围。余数系统中的运算有如下关系,即高斯模运算准则:
若
其中,
表示加法、减法和乘法。各部分运算分量之间是相互独立的,不存在依赖关系,可以并行处理。
本发明是基于TTA架构设计的余数系统RSA算法处理器。传统的处理器是以一个个操作来触发运算的处理器,传输触发架构(TTA,Transport Triggered Architecture)处理器则不同,它是以数据的传输来触发运算的处理器。TTA架构处理器内部多条总线并行执行指令,是指令级并行的处理器。TTA架构处理器中,把运算的任务分配到各个功能单元,每个功能单元都由三类寄存器组成,即Operand寄存器、Trigger寄存器和Result寄存器。其中Operand寄存器作为运算操作数,Trigger寄存器也是运算的操作数,但给Trigger寄存器传输数据时,该功能单元的运算被触发,经过约定的时钟周期后,运算得到最终结果并存于Result寄存器。
一个典型的TTA操作和传输架构处理器,整体架构由控制单元、各种不同的功能单元、通用寄存器堆和各种互连网络组成。设计者可以根据计算任务任意的增加、减少不同的功能单元或寄存器来调整处理器计算能力;根据各模块之间的连接改变总线宽度、数目。因为这种灵活性,使其非常适合作为协处理器配合功能强大的通用处理器完成计算数据密集型的任务。
与VLIW在一条指令中打包多个操作不同,TTA则是在一条指令中打包多个数据传输。每条指令包含n个Slot,n由所设计处理器的总线条数决定,可以使指令达到高度并行。每个Slot由Source和Destination两段组成,即操作数的来源和传送到的目的地地址。Source中的最高位来决定数据来源是立即数或寄存器的地址。这样所有的操作都由数据传输来触发完成,功能单元运算出来的结果放在功能单元的结果寄存器,可以通过总线传输到需要的功能单元或寄存器。
例如,内部有两条总线的处理器,要完成f=a*b+c*d,其中a,b,c,d来自其他功能单元的结果寄存器或通用寄存器,则要完成上面的运算,需要用到两个功能单元,即加法功能单元ADDSUB,以及乘法功能单元MUL,假设这两个功能单元的Latency都为1个时钟周期。功能单元名称后加“_O”表示其Operand寄存器,同样“_T”表示其Trigger寄存器,“_R”则表示其Result寄存器。上面运算的程序如下:
1.a->ADDSUB_O,b->ADDSUB_T;
2.c->ADDSUB_O,d->ADDSUB_T;
3.ADDSUB_R->MUL_O,NOP;
4.ADDSUB_R->MUL_T,NOP;
5.NOP,NOP;
6.MUL_R->f,NOP;
本发明实例中,基于余数系统,设计面向RSA的TTA-Like架构密码协处理器,其中设计主要包括以下几个方面:
一、基于余数系统的RSA密码算法调度
大数模幂运算是RSA算法的核心运算,决定了RSA加解密的运算速度。模幂是一个非常复杂的运算,不适合软件实现。大数模幂运算性能主要依赖于大数模乘运算的速度,其算法的实施流程如表1所示。
表1 L-R二进制扫描模幂算法
1985年,针对大数模乘运算,Montgomery提出了一种有效算法-Montgomery模乘算法,使得模幂运算很容易实现。之后,许多针对不同应用的改进算法相继被提出来。本发明实施基于余数系统的改进Montgomery模乘算法,此算法将一个1024bit的大数分解成33个32bit的小数参与运算,并且各个32bit数据之间不存在依赖,可以并行执行,大大提高了系统的并行性。
表2 RNS Montgomery模乘算法
其中第一步和第三步是简单的模乘和模加运算,可以并行执行;第二步和第四步是两组基下的转换,运算比较复杂,也是算法的关键部分,其分解步骤如下:
表3 第一次基转换算法
表4 第二次基转换算法
其中一部分数据可以进行预计算以减少转化的整体时间,如 等。
由L-R二进制扫描模幂算法和RNS Montgomery模乘算法,将复杂的大数模乘运算转换成了处理器容易实现的32bit数的模乘,模加,模乘累加操作,同时大数分解产生的各部分数据之间并无相互的计算依赖关系,有效地提高了大数模幂运算的数据级并行性。
二、处理器核心运算功能单元设计
功能单元(Function Unit,FU)是RSA密码协处理器中可配置性最灵活的部分,也是处理器的基本运算部件,它直接决定了处理器的性能,是基于余数系统的RSA密码协处理器设计的关键。根据模幂运算的特性,本处理器设计了以下核心运算功能单元:
1、MMAC
MMAC主要完成模乘、模加、模乘累加功能。模乘是影响模幂运算性能的关键,模乘的速度决定了整个RSA协处理器的性能。MMAC功能单元有两个operand寄存器、一个trigger寄存器和一个result寄存器,两个operand寄存器分别为乘数寄存器和模数寄存器,功能单元延时为3,支持三种触发方式mul、mac和clr,能够完成模乘、模乘累加和清零操作。
本FU分三级流水来完成模乘累加功能,如图1所示。第一级流水完成两个32bit的数相乘;第二级流水将第一级流水产生的64bit乘法结果进行模(232-Ci)的运算,得到(a*b)mod(232-Ci)的结果;第三级流水为完成累加功能,即将本次模乘结果与上一次模乘结果进行累加。
其中在第二级流水中,假设P为第一级流水产生的64bit乘法结果,mi为模数,即232-Ci,其中Ci为不大于214-1的数,P1表示P的高32bit,P0表示P的低32bit,则:
得到的p1ci+p0中,p1不大于32bit,ci不大于14bit,p0为32bit,所以p1ci+p0不大于47bit。同理,令p′=p1ci+p0再执行一次这样的操作得到(p′1ci+p′0)mod(232-mi),此时得到的p′1不大于14bit,ci也不大于14bit,p′0不大于32bit,相加后的p′不大于33bit。只需要比较一下p′=p1ci+p0与232-Ci的大小,如果大于232-Ci则进行一次相减操作,此时得到的结果便是(a*b)mod(232-Ci)。
在第三级流水中,主要完成(a′+b′)mod(232-Ci),其中a′为模乘后得到的结果,b′为上次累加的结果。FU第三级流水中第一个加法器完成c′=a′+b′,第二个加法器主要完成d=c′+Ci,后面的两个多路选择器为,如果d大于232,则执行一次相减操作,若d小于232,则d即为所得结果。
2、逻辑运算功能单元ALU
ALU单元用来实现包括模加、模减和32bit数左移一位的逻辑功能,该FU内部结构如图3所示,包括两个Operand寄存器、一个trigger寄存器和一个Result寄存器。trigger type包括3个信号,也就是有3种触发方式。ALU单元在一个时钟周期内只有一个trigger type信号有效,触发后一个周期延时后得到结果,结果放在Result寄存器里面。如图2所示。
在FU的内部结构中,有模加和模减两种运算,主要完成:(a+b)mod(232-Ci)或(a-b)mod(232-Ci)。其中alu1_o_mod为模数操作数寄存器,这里模数都是232-Ci的形式,送给alu1_o_mod的数是Ci,而不是232-Ci。本FU在各数据到达后先根据alu_type来选择是完成那种操作,如果是alu_type是001,则完成模加运算,010完成模减运算,100完成对alu_t_dat的左移位操作。为了节省面积和提高运算时间,本FU首先对alu1_o_subtractor进行按位取反并在最低位后补1操作,和直接在最低位的后一位补0操作,对alu_t_dat进行最低位的后一位补1操作,这样就可以利用一个多路选择器进行选择,用一个加法器完成加法或减法的操作,节省了本FU的面积。同理,后面进行模运算时同样按此方法设计。
3、JMP跳转功能单元
如图8所示,JMP功能单元完成跳转功能,能够支持条件跳转和立即跳转,其结构如图所示,有两个Operand寄存器:jmp_o_from存储跳转时的当前地址,指定跳转的起始位置,jmp_o_to存储跳转的目的地址,指定跳转后的位置。JMP单元将PC直接连接进来,实时和jmp_o_from进行比较,一旦二者匹配,将根据触发方式决定跳转情况。JMP单元支持三种触发方式,其中jmp_t_cnt触发直接跳转,其值为循环的次数,如果是没有循环的直接跳转,该值为2;jmp_t_ifl和jmp_t_ifm触发条件跳转,分别表示根据最低位或最高位是否为1来执行跳转。JMP单元结合ALU和LADSB单元能够实现几乎全部的跳转功能,功能单元延时为2。
4、LDST存取数据功能单元
如图9所示,存储器访问功能单元(LDST)在基于TTA的椭圆曲线密码处理器中作用特殊,是唯一能与数据存储器直接交互的FU,结构如图。LDST访问数据存储器(Data Memory)时,支持两种寻址方式:直接寻址和偏移寻址。其内部结构有2个Operand寄存器,分别是装载存储数据的寄存器Idst_o,和装载访问Memory基地址的寄存器Idst_o_bas,基地址寄存器在偏移寻址时用到。直接寻址时直接将trigger寄存器Idst_t_addr中的值作为访问Memory的地址,偏移寻址时,将trigger寄存器Idst_t_addr与operand寄存器Idst_o_bias相加的值再作为访问Memory的地址。访问数据存储器时,有读和写两种操作,即取数load和存数store,各有两种寻址方式,组合起来便有4种触发方式:直接寻址取数Idst_t_Ida、偏移寻址取数Idst_t_Idb、直接寻址存数Idst_t_sta和偏移寻址存数Idst_t_stb。
5、LUT查表功能单元
如图10所示,LUT单元可以完成以4Bank形式的查表,即同一周期从ROM里Load4个在同一地址上的32bit预计算数据,以及以Burst形式加载32个连续地址存放的预计算数据。luta_t_lub完成4bank查表操作,每个bank32bit,4bank共用一个地址,即对应的Table是128bit位宽。luta_t_lubs完成连续32次的4bank查表操作,只需送首地址,其它地址自动生成,可提前被打断。luta_r_a′,′luta_r_b′,′luta_r_c′,′luta_r_d为四个结果寄存器,_r_a对应当前地址的最低32bit数据。
三、RSA密码协处理器整体架构设计
1、处理器流水线设计及指令格式
基于余数系统的RSA密码协处理器的流水线运行结构如图3所示。
该处理器采用混合流水机制,主要包含两个过程:传输流水和功能单元流水。传输流水包括IF、ID、OF三个阶段,而功能单元流水的级数由当前功能单元的pipeline stage决定,为E0-En阶段。其中,IF为取指阶段。该阶段将根据当前处理器中PC值,从Ins Memory中取出相应的指令。ID为译码阶段,将指令中的各个部分翻译成相应的地址和数据选通信号,并触发相应的存储器访问或FU结果寄存器访问。OF为取操作数阶段,将ID阶段访问得到的数据通过总线传递到FU的数据寄存器中。E0-En阶段为功能单元的具体执行阶段,在最后一个执行阶段将其中,在最后一个stage将计算结果写入到结果寄存器中。
基于余数系统的RSA密码协处理器本质上只有一条指令,即MOVE,用来表示数据从源寄存器传输到目的寄存器。与操作触发的处理器不同,指令中本身并没有操作码,处理器赋予某些目的寄存器触发功能,称为触发(Trigger)寄存器,当目的寄存器是这些特殊的触发寄存器时,就会触发相应的运算。具体来说,指令格式如图4所示。每条指令分为8个slot,总共112bit,每条总线一个slot,为14bit。每个slot由两部分组成:一个是数据来自何处(SRC),另一个是数据去往何处(DEST),各7bit。数据来源可以是FU的Result寄存器、通用寄存器,或者是立即数。在SRC中,若最高位为0,则表示SRC数据来源于寄存器,其余位数表示寄存器地址的编号;若为1,则表示SRC部分为立即数,其余位数表示立即数的数值。DEST部分表示目的寄存器的地址编号。目的寄存器可以是FU的Operand寄存器、Trigger寄存器或者是通用寄存器。
2、处理器数据通路设计
本发明设计的基于余数系统的RSA密码协处理器是基于TTA-Like架构来实现1024bit的RSA加解密算法。整体结构如图5所示,设计采用8条总线来进行数据之间的传输,因为总线采用松耦合连接方式,为了减少面积,设计中只需把需要进行数据通讯的功能单元之间通过总线进行连接,图中实心黑点表示该寄存器与总线有连接。
处理器中包括2个存取数据单元(LDST)、3个查表单元(LUT)、1个寄存器组(RU)、1个跳转功能单元(JMP)、1个算术逻辑运算单元(ALU)和8个模乘累加功能单元(MMAC)。存取数据单元是唯一能与RAM进行交互的功能单元,LDST访问数据存储器(Data Memory)时,支持两种寻址方式:直接寻址和偏移寻址。可以完成直接寻址取数、直接寻址存数、偏移寻址取数和偏移寻址存数。查表单元是与ROM进行交互的功能单元,其所联通的ROM存储的是前述预计算的数据。LUT单元可以完成以4Bank形式的查表,即同一周期从ROM里Load4个在同一地址上的32bit预计算数据;以及以Burst形式Load 32个连续地址存放的预计算数据。寄存器组用来暂存操作数或者运算结果,跳转功能单元用来支持绝对跳转、条件跳转和循环操作。
除总线外,功能单元之间还设计了额外的数据通路,用以降低总线数据冲突,提高指令级并行性。其中第二个数据存取单元(LDST2)和前四个MMAC之间、第3个查表单元(LUT3)和后四个的MMAC之间存在着直接的数据通路,使得通过LDST2和LUT3为MMAC提供数据时,避免占用总线,有效地降低了总线上的数据冲突,加快整体的计算速度。
处理器中的模乘累加功能单元(MMAC)是进行模乘运算的核心计算功能单元,主要完成模乘、模加、模乘累加操作。通过分析表2中的step1.1,step1.2以及表3中的step1和step2的第一次累加,发现这顺序执行的4步,每一步的其中一个乘数是上一次计算的结果,另一个乘数为预计算的数据,即存放在LUT中的数据,而模数与上一步在上一个计算时刻的模数相同。这样的运算执行特点适用于流水线操作模式。每一步功能单元的运算结果和模数送入下一步运算功能单元,作为其下一个时刻的操作数之一和模数,这四步共需要4个基本功能单元即4个MMAC,称MMAC1-MMAC4为第一组运算逻辑。因此,在第一组运算逻辑的MMAC之间设计了额外的数据通路,用来进行操作数和模数的流水化传递,此时4个MMAC相互级联,从总线的角度来看这四个MMAC是一个整体。其基本的执行流程如图6所示。
当进行表3中step2的第2到第32次累加时,4个MMAC功能单元进行独立的运算,每一个MMAC作为冗余的功能单元,进行单独的累加运算,此时,从总线来看,4个MMAC之间没有任何联系,并行地进行计算,提高计算时的数据并行性。
分析表3中step3.1、step3.2、step3.3以及表4中step1、step2、step3,其基本的运算逻辑为模加、模乘、模乘累加,为了与第一组运算逻辑配合,这里同时设计4个MMAC,即MMAC5-MMAC8,称为第二组运算逻辑,进行独立的运算,在运算过程中,由LUT3提供一个操作数和模数。其基本的执行流程入图7所示。
通过这些功能单元之间的额外数据通路,可以有效的降低额外的数据写回过程,减少了功能单元取操作数过程对总线的占用,避免了大量的总线数据冲突,有效的挖掘了计算过程中的指令级并行性,提升了RSA加解密的执行速度。
英文字符说明:
RSA:由Ron Rivest、Adi Shamirh和LenAdleman开发的一种公钥加密算法。
RNS:Residue Number System,余数系统。
TTA:Transport Triggered Architecture,传输触发架构。
FU:Function Unit,功能单元。
MMAC:Modular Multiplication Accumulate,模乘累加。
LDST:Load/Store,数据存取单元。
LUT:Look-up Table,查表单元。
RU:Register Unit,寄存器组。
JMP:Jump跳转功能单元。
ALU:Arithmetic Logic Unit,算术逻辑单元。
VLIW:Very Long Instruction Word,超长指令字。
文中:L_R:Left to Right,从左到右对密钥进行扫描。
B是一组基,其中m
i是基的元素,每一个m
i32bit。M是所有m
i的乘积。M
i是M除以m
i得到的结果。
k是一组基中元素的个数。
B′=(m′
1,m′
2,...,m′
k),and
B′是另一组基,其中m
i′是基的元素,每一个m
i′32bit。
是所有m′
i的乘积。
是
除以m′
i得到的结果。
mr是一个32bit的冗余基。xr、yr、qr、Nr、Mr分别是x、y、q、N、M对mr取余。
N是RSA算法中的模数。Ni是N对mi取余。Ni′是N对mi′取余。是N对mi求逆并取负值。
M′=(M1′,M2′Λ,Mk′)B′,M′是M在基B′下的表示,M′i是M对每一个mi′取余。
其中x是1024bit的数据,xi是x对mi取余。
xi′=xmodmi′其中x是1024bit的数据,xi′是x对mi′取余。
其中Mi=M/mi, 代表Mi模mi并求逆。
qi、zi、z′i、w′i、li、β分别是32bit的中间数据。
r是结果,其中ri是r在mi下的表示,ri′是r在mi′下的表示,rr是r在mr下的表示,
是M
j对m
i′取余。
是
对m′
i求逆。
是
对m
i取余。
是
对m
r取余。
是
对m
i取余。