CN102231102A - 基于余数系统的rsa密码处理方法及协处理器 - Google Patents

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

Info

Publication number
CN102231102A
CN102231102A CN201110161204XA CN201110161204A CN102231102A CN 102231102 A CN102231102 A CN 102231102A CN 201110161204X A CN201110161204X A CN 201110161204XA CN 201110161204 A CN201110161204 A CN 201110161204A CN 102231102 A CN102231102 A CN 102231102A
Authority
CN
China
Prior art keywords
mould
data
32bit
result
algorithm
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
Application number
CN201110161204XA
Other languages
English (en)
Other versions
CN102231102B (zh
Inventor
郭炜
白松辉
苏蛟
刘亚灵
魏继增
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Phytium Technology Co Ltd
Original Assignee
Tianjin University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin University filed Critical Tianjin University
Priority to CN 201110161204 priority Critical patent/CN102231102B/zh
Publication of CN102231102A publication Critical patent/CN102231102A/zh
Application granted granted Critical
Publication of CN102231102B publication Critical patent/CN102231102B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明涉及信息技术安全及微处理器设计。为能够加速RSA模乘运算速度,提高RSA加解密性能,本发明采取的技术方案是,基于余数系统的RSA密码处理方法,采用RSA算法进行加解密运算,采用L-R二进制扫描模幂算法进行RSA算法的大数模幂运算,所述改进的Montgomery算法具体为:将1024bit的大数表示成余数系统下的数,即两组33个32bit的小数,以及1个冗余基下表示的32bit的数,表示过程即求模过程,分解成的32bit小数分别独立参与32bit的模乘、模乘累加、模加运算,并且各个32bit数据之间不存在依赖,进行并行执行运算。本发明主要应用于信息技术安全及微处理器设计。

Description

基于余数系统的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,M′2,...,M′k)B′,Mr=Mmodmr
输出:r=xyM-1(modN)在两组基和冗余基下的表示,r≤(k+2)N;
Step1: q i = x i × y i × ( - N i - 1 ) ( mod m i ) . ( i = 1,2 , L , k ) ;
Step1.1:zi=(xi×yi)modmi
Step1.2: q i = ( z i × - N i - 1 ) mod m i ;
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
Step 1 . l i = q i × | M i - 1 | m i mod m i ( i = 1,2 , L , k ;
Step 2 . q i ′ = | Σ j = 1 k | M j | m i ′ × l i | m i ′ ( i = 1,2 , L , k ) ;
第二次基转换算法:
由基B’到基B的转换算法:
输入:(r′1,r′2,L,r′k)B′andrr
输出:(r1,r2,L,rk)B
Step1: l i = r i ′ × | M ‾ i - 1 | m j ′ mod m j ′ ( i , j = 1,2 , L , k ) ;
Step2: β = | | M ‾ - 1 | m r ( Σ i = 1 k | M ‾ i | m r × l i - r r ) | m r ( i = 1,2 , L , k ) ;
Step 3 : r i = | Σ j = 1 k | M ‾ j | m i × l j - | β M ‾ | m i | m i ( i , j = 1,2 , L , k ) ;
其中,B=(m1,m2,...,mk),and
Figure BDA0000068641540000032
B是一组基,其中mi是基的元素,每一个mi32bit,M是所有mi的乘积,Mi是M除以mi得到的结果;
k是一组基中元素的个数;
B′=(m′1,m′2,...,m′k),and
Figure BDA0000068641540000033
B′是另一组基,其中mi′是基的元素,每一个mi′32bit,
Figure BDA0000068641540000034
是所有m′i的乘积,
Figure BDA0000068641540000035
Figure BDA0000068641540000036
除以m′i得到的结果;
mr是一个32bit的冗余基,xr、yr、qr、Nr、Mr分别是x、y、q、N、M对mr取余;
N是RSA算法中的模数,Ni是N对mi取余,Ni′是N对mi′取余,
Figure BDA0000068641540000037
是N对mi求逆并取负值;
M′=(M1′,M2′Λ,Mk′)B′,M′是M在基B′下的表示,M′i是M对每一个mi′取余;
x i = x mod m i ( 0 ≤ x ≤ MandM = Π i = 1 k m i ) 其中x是1024bit的数据,xi是x对mi取余;
xi′=xmodmi′其中x是1024bit的数据,xi′是x对mi′取余;
x = Σ i = 1 k x i M i | M i - 1 | m i mod M 其中Mi=M/mi | M i - 1 | m i 代表Mi模mi并求逆;
qi、zi、z′i、w′i、li、β分别是32bit的中间数据;
r是结果,其中ri是r在mi下的表示,ri′是r在mi′下的表示,rr是r在mr下的表示, M i ′ , M r , | M i - 1 | m i , | M j | m i , | M ‾ i - 1 | m j ′ , | M ‾ - 1 | m i , | M ‾ i | m i , | M ‾ i | m r , | M ‾ | m i ;
Figure BDA00000686415400000312
是Mj对mi′取余,
Figure BDA00000686415400000313
Figure BDA00000686415400000314
对m′i求逆,
Figure BDA00000686415400000315
Figure BDA00000686415400000316
对mi取余,
Figure BDA00000686415400000317
Figure BDA00000686415400000318
对mr取余,
Figure BDA00000686415400000319
Figure BDA00000686415400000320
对mi取余;
一部分数据在每次计算过程中都是相同的,属于固定数据,在PC机上进行预计算并存储在所设计协处理器的LUT功能单元中,无需通过协处理器进行计算,以减少转化的整体时间,这些预计算数据包括算法中的 M i ′ , M r , | M i - 1 | m i , | M j | m i , | M ‾ i - 1 | m j ′ , | M ‾ - 1 | m i , | M ‾ i | m i , | M ‾ i | m r , | M ‾ | m i .
基于余数系统的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
Figure BDA0000068641540000041
Figure BDA0000068641540000042
Figure BDA0000068641540000043
Figure BDA0000068641540000044
得到的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数的模乘,模加,模乘累加操作,同时大数分解产生的各部分数据之间并无相互的计算依赖关系,有效地提高了大数模幂运算的数据级并行性。
附图说明
图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=(m1,m2,...,mk)来定义的,一个二进制数X在该余数系统中表示为:
X=(x1,x2,...xk)
其中,xi=X mod mi,记为<X>mi。当X≤M=m1×m2×...×mk时,这样的表示是唯一的,M称为该余数系统的动态范围。余数系统中的运算有如下关系,即高斯模运算准则:
X &RightArrow; RNS ( x 1 , x 2 , . . . x k ) ;
Y &RightArrow; RNS ( y 1 , y 2 , . . . y k ) ;
Z = X &CircleTimes; Y ;
Z &RightArrow; RNS ( z 1 , z 2 , . . . z k ) = ( < x 1 &CircleTimes; y 1 > m 1 , < x 2 &CircleTimes; y 2 > m 2 , . . . < x k &CircleTimes; y k > m k ) ;
其中,
Figure BDA0000068641540000065
表示加法、减法和乘法。各部分运算分量之间是相互独立的,不存在依赖关系,可以并行处理。
本发明是基于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模乘算法
Figure BDA0000068641540000081
其中第一步和第三步是简单的模乘和模加运算,可以并行执行;第二步和第四步是两组基下的转换,运算比较复杂,也是算法的关键部分,其分解步骤如下:
表3  第一次基转换算法
Figure BDA0000068641540000082
表4  第二次基转换算法
Figure BDA0000068641540000083
Figure BDA0000068641540000091
其中一部分数据可以进行预计算以减少转化的整体时间,如 M i &prime; , M r , | M i - 1 | m i , | M j | m i , | M &OverBar; i - 1 | m j &prime; , | M &OverBar; - 1 | m i , | M &OverBar; i | m i , | M &OverBar; i | m r , | M &OverBar; | m i 等。
由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,则:
Figure BDA0000068641540000093
Figure BDA0000068641540000094
Figure BDA0000068641540000095
Figure BDA0000068641540000096
得到的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,从左到右对密钥进行扫描。
Figure BDA0000068641540000131
B是一组基,其中mi是基的元素,每一个mi32bit。M是所有mi的乘积。Mi是M除以mi得到的结果。
k是一组基中元素的个数。
B′=(m′1,m′2,...,m′k),andB′是另一组基,其中mi′是基的元素,每一个mi′32bit。
Figure BDA0000068641540000133
是所有m′i的乘积。
Figure BDA0000068641540000134
除以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 i = x mod m i ( 0 &le; x &le; MandM = &Pi; i = 1 k m i ) 其中x是1024bit的数据,xi是x对mi取余。
xi′=xmodmi′其中x是1024bit的数据,xi′是x对mi′取余。
x = &Sigma; i = 1 k x i M i | M i - 1 | m i mod M 其中Mi=M/mi | M i - 1 | m i 代表Mi模mi并求逆。
qi、zi、z′i、w′i、li、β分别是32bit的中间数据。
r是结果,其中ri是r在mi下的表示,ri′是r在mi′下的表示,rr是r在mr下的表示, M i &prime; , M r , | M i - 1 | m i , | M j | m i , | M &OverBar; i - 1 | m j &prime; , | M &OverBar; - 1 | m i , | M &OverBar; i | m i , | M &OverBar; i | m r , | M &OverBar; | m i
Figure BDA0000068641540000141
是Mj对mi′取余。
Figure BDA0000068641540000142
Figure BDA0000068641540000143
对m′i求逆。
Figure BDA0000068641540000145
对mi取余。
Figure BDA0000068641540000146
Figure BDA0000068641540000147
对mr取余。
Figure BDA0000068641540000148
Figure BDA0000068641540000149
对mi取余。

Claims (5)

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,M′2,...,M′k)B′,Mr=Mmodmr
输出r=xyM-1(modN)在两组基和冗余基下的表示,r<(k+2)N
Step1: q i = x i &times; y i &times; ( - N i - 1 ) ( mod m i ) . ( i = 1,2 , L , k ) ;
Step1.1:zi=(xi×yi)modmi
Step1.2: q i = ( z i &times; - N i - 1 ) mod m i ;
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
Step1. l i = q i &times; | M i - 1 | m i mod m i ( i = 1,2 , L , k ) ;
Step2. q i &prime; = | &Sigma; j = 1 k | M j | m i &prime; &times; l i | m i &prime; ( i = 1,2 , L , k ) ;
第二次基转换算法:
由基B’到基B的转换算法:
输入:(r′1,r′2,L,r′k)B′andrr
输出:(r1,r2,L,rk)B
Step1: l i = r i &prime; &times; | M &OverBar; i - 1 | m j &prime; mod m j &prime; ( i , j = 1,2 , L , k ) ;
Step2: &beta; = | | M &OverBar; - 1 | m r ( &Sigma; i = 1 k | M &OverBar; i | m r &times; l i - r r ) | m r ( i = 1,2 , L , k ) ;
Step3: r i = | &Sigma; j = 1 k | M &OverBar; j | m i &times; l j - | &beta; M &OverBar; | m i | m i ( i , j = 1,2 , L , k ) ;
其中,B=(m1,m2,...,mk),andB是一组基,其中mi是基的元素,每一个mi32bit,M是所有mi的乘积,Mi是M除以mi得到的结果;
k是一组基中元素的个数;
B′=(m′1,m′2,...,m′k),and
Figure FDA0000068641530000027
B′是另一组基,其中mi′是基的元素,每一个mi′32bit,
Figure FDA0000068641530000028
是所有m′i的乘积,
Figure FDA0000068641530000029
Figure FDA00000686415300000210
除以m′i得到的结果;
mr是一个32bit的冗余基,xr、yr、qr、Nr、Mr分别是x、y、q、N、M对mr取余;
N是RSA算法中的模数,Ni是N对mi取余,Ni′是N对mi′取余,
Figure FDA00000686415300000211
是N对mi求逆并取负值;
M′=(M1′,M2′Λ,Mk′)B′,M′是M在基B′下的表示,M′i是M对每一个mi′取余;
x i = x mod m i ( 0 &le; x &le; MandM = &Pi; i = 1 k m i ) 其中x是1024bit的数据,xi是x对mi取余;
xi′=xmodmi′其中x是1024bit的数据,xi′是x对mi′取余;
x = &Sigma; i = 1 k x i M i | M i - 1 | m i mod M 其中Mi=M/mi | M i - 1 | m i 代表Mi模mi并求逆;
qi、zi、z′i、w′i、li、β分别是32bit的中间数据;
r是结果,其中ri是r在mi下的表示,ri′是r在mi′下的表示,rr是r在mr下的表示,
M i &prime; , M r , | M i - 1 | m i , | M j | m i , | M &OverBar; i - 1 | m j &prime; , | M &OverBar; - 1 | m i , | M &OverBar; i | m i , | M &OverBar; i | m r , | M &OverBar; | m i ;
|Mj|m′i是Mj对mi′取余,对m′i求逆,对mi取余,
Figure FDA0000068641530000036
Figure FDA0000068641530000037
对mr取余,
Figure FDA0000068641530000039
对mi取余;
一部分数据在每次计算过程中都是相同的,属于固定数据,在PC机上进行预计算并存储在所设计协处理器的LUT功能单元中,无需通过协处理器进行计算,以减少转化的整体时间,这些预计算数据包括算法中的 M i &prime; , M r , | M i - 1 | m i , | M j | m i , | M &OverBar; i - 1 | m j &prime; , | M &OverBar; - 1 | m i , | M &OverBar; i | m i , | M &OverBar; i | m r , | M &OverBar; | m i .
3.一种基于余数系统的RSA密码协处理器,其特征是,基于TTA-Like架构来实现1024bit的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数左移一位的逻辑功能。
4.如权利要求3所述的协处理器,其特征是,模乘累加功能单元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
Figure FDA0000068641530000041
Figure FDA0000068641530000042
Figure FDA0000068641530000043
Figure FDA0000068641530000044
得到的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即为所得结果。
5.如权利要求3所述的协处理器,其特征是,算术逻辑运算单元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操作,这样就可以利用一个多路选择器进行选择,用一个加法器完成加法或减法的操作。
CN 201110161204 2011-06-16 2011-06-16 基于余数系统的rsa密码处理方法及协处理器 Active CN102231102B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110161204 CN102231102B (zh) 2011-06-16 2011-06-16 基于余数系统的rsa密码处理方法及协处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110161204 CN102231102B (zh) 2011-06-16 2011-06-16 基于余数系统的rsa密码处理方法及协处理器

Publications (2)

Publication Number Publication Date
CN102231102A true CN102231102A (zh) 2011-11-02
CN102231102B CN102231102B (zh) 2013-08-07

Family

ID=44843669

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110161204 Active CN102231102B (zh) 2011-06-16 2011-06-16 基于余数系统的rsa密码处理方法及协处理器

Country Status (1)

Country Link
CN (1) CN102231102B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999313A (zh) * 2012-12-24 2013-03-27 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
CN103107879A (zh) * 2012-12-21 2013-05-15 杭州晟元芯片技术有限公司 一种rsa加速器
CN103207770A (zh) * 2013-04-16 2013-07-17 飞天诚信科技股份有限公司 一种在嵌入式系统中实现大数预计算的方法
CN103246494A (zh) * 2013-05-27 2013-08-14 上海爱信诺航芯电子科技有限公司 一种抵抗能量分析和错误攻击的安全模幂计算方法
CN103605495A (zh) * 2013-10-17 2014-02-26 陕西万达信息工程有限公司 一种掐头去尾电路
CN103729163A (zh) * 2013-12-05 2014-04-16 西安交通大学 一种掐头去尾移位补值电路
CN104573544A (zh) * 2013-10-28 2015-04-29 上海复旦微电子集团股份有限公司 数据的防攻击方法及装置、rsa模幂运算方法、装置和电路
CN104778147A (zh) * 2015-04-14 2015-07-15 飞天诚信科技股份有限公司 一种基于协处理器的数据处理方法
CN105871552A (zh) * 2016-06-14 2016-08-17 天津大学 双核并行rsa密码处理方法及协处理器
CN106301756A (zh) * 2016-08-22 2017-01-04 上海交通大学 用于sm2签名的大数模幂求逆功耗检测方法及其系统
CN106712950A (zh) * 2017-01-18 2017-05-24 中译语通科技(北京)有限公司 基于同余数的rsa公钥加密算法对语料数据的加密方法
CN107169380A (zh) * 2017-05-19 2017-09-15 北京大学 一种rsa电路结构及rsa加密方法
CN109271137A (zh) * 2018-09-11 2019-01-25 网御安全技术(深圳)有限公司 一种基于公钥加密算法的模乘装置及协处理器
CN109669670A (zh) * 2018-12-26 2019-04-23 贵州华芯通半导体技术有限公司 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置
CN109947393A (zh) * 2017-12-20 2019-06-28 航天信息股份有限公司 基于求余器的运算方法及装置
CN109992242A (zh) * 2017-12-29 2019-07-09 航天信息股份有限公司 基于乘法器的运算方法及装置
CN111679865A (zh) * 2020-05-22 2020-09-18 深圳职业技术学院 一种可穿戴式计算机控制方法、系统、存储介质、终端

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010086871A1 (en) * 2009-01-28 2010-08-05 Harshal Ingale A modularized micro processor design
CN101833435A (zh) * 2010-04-19 2010-09-15 天津大学 基于传输触发架构可配置处理器指令冗余消除方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010086871A1 (en) * 2009-01-28 2010-08-05 Harshal Ingale A modularized micro processor design
CN101833435A (zh) * 2010-04-19 2010-09-15 天津大学 基于传输触发架构可配置处理器指令冗余消除方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘俊等: "基于TTA技术的专用处理器设计", 《微电子学与计算机》, vol. 26, no. 11, 30 November 2009 (2009-11-30) *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103107879B (zh) * 2012-12-21 2015-08-26 杭州晟元芯片技术有限公司 一种rsa加速器
CN103107879A (zh) * 2012-12-21 2013-05-15 杭州晟元芯片技术有限公司 一种rsa加速器
CN102999313A (zh) * 2012-12-24 2013-03-27 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
CN102999313B (zh) * 2012-12-24 2016-01-20 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
CN103207770A (zh) * 2013-04-16 2013-07-17 飞天诚信科技股份有限公司 一种在嵌入式系统中实现大数预计算的方法
CN103207770B (zh) * 2013-04-16 2016-09-28 飞天诚信科技股份有限公司 一种在嵌入式系统中实现大数预计算的方法
CN103246494A (zh) * 2013-05-27 2013-08-14 上海爱信诺航芯电子科技有限公司 一种抵抗能量分析和错误攻击的安全模幂计算方法
CN103605495A (zh) * 2013-10-17 2014-02-26 陕西万达信息工程有限公司 一种掐头去尾电路
CN103605495B (zh) * 2013-10-17 2017-07-28 陕西万达信息工程有限公司 一种掐头去尾电路
CN104573544A (zh) * 2013-10-28 2015-04-29 上海复旦微电子集团股份有限公司 数据的防攻击方法及装置、rsa模幂运算方法、装置和电路
CN104573544B (zh) * 2013-10-28 2017-09-12 上海复旦微电子集团股份有限公司 数据的防攻击方法及装置、rsa模幂运算方法、装置和电路
CN103729163A (zh) * 2013-12-05 2014-04-16 西安交通大学 一种掐头去尾移位补值电路
CN104778147A (zh) * 2015-04-14 2015-07-15 飞天诚信科技股份有限公司 一种基于协处理器的数据处理方法
CN104778147B (zh) * 2015-04-14 2017-06-06 飞天诚信科技股份有限公司 一种基于协处理器的数据处理方法
CN105871552A (zh) * 2016-06-14 2016-08-17 天津大学 双核并行rsa密码处理方法及协处理器
CN106301756A (zh) * 2016-08-22 2017-01-04 上海交通大学 用于sm2签名的大数模幂求逆功耗检测方法及其系统
CN106301756B (zh) * 2016-08-22 2019-04-05 上海交通大学 用于sm2签名的大数模幂求逆功耗检测方法及其系统
CN106712950A (zh) * 2017-01-18 2017-05-24 中译语通科技(北京)有限公司 基于同余数的rsa公钥加密算法对语料数据的加密方法
CN107169380A (zh) * 2017-05-19 2017-09-15 北京大学 一种rsa电路结构及rsa加密方法
CN107169380B (zh) * 2017-05-19 2020-01-07 北京大学 一种rsa电路结构及rsa加密方法
CN109947393A (zh) * 2017-12-20 2019-06-28 航天信息股份有限公司 基于求余器的运算方法及装置
CN109947393B (zh) * 2017-12-20 2021-11-02 航天信息股份有限公司 基于求余器的运算方法及装置
CN109992242A (zh) * 2017-12-29 2019-07-09 航天信息股份有限公司 基于乘法器的运算方法及装置
CN109992242B (zh) * 2017-12-29 2021-05-28 航天信息股份有限公司 基于乘法器的运算方法及装置
CN109271137A (zh) * 2018-09-11 2019-01-25 网御安全技术(深圳)有限公司 一种基于公钥加密算法的模乘装置及协处理器
CN109669670A (zh) * 2018-12-26 2019-04-23 贵州华芯通半导体技术有限公司 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置
CN111679865A (zh) * 2020-05-22 2020-09-18 深圳职业技术学院 一种可穿戴式计算机控制方法、系统、存储介质、终端

Also Published As

Publication number Publication date
CN102231102B (zh) 2013-08-07

Similar Documents

Publication Publication Date Title
CN102231102B (zh) 基于余数系统的rsa密码处理方法及协处理器
US8078835B2 (en) Reconfigurable array processor for floating-point operations
US7424504B2 (en) Arithmetic processor for accomodating different field sizes
CN110351087B (zh) 流水线型的蒙哥马利模乘运算方法
CN101826142B (zh) 一种可重构椭圆曲线密码处理器
Ananyi et al. Flexible hardware processor for elliptic curve cryptography over NIST prime fields
CN100435090C (zh) 可扩展高基蒙哥马利模乘算法及其电路结构
CN104395876B (zh) 没有算术和逻辑单元的计算机处理器和系统
CN100504758C (zh) 多字乘法-累加电路和蒙哥马利模乘法-累加电路
CN102184092A (zh) 基于流水线结构的专用指令集处理器
CN104679474A (zh) 有限域gf(2^227)上的乘法器及模乘算法
CN102360281B (zh) 用于微处理器的多功能定点乘加单元mac运算装置
CN103793199A (zh) 一种支持双域的快速rsa密码协处理器
US20090063606A1 (en) Methods and Apparatus for Single Stage Galois Field Operations
CN102156836A (zh) 一种椭圆曲线密码处理器
CN100367191C (zh) 一种快速流水线型除法器
Liu et al. Reverse product-scanning multiplication and squaring on 8-bit AVR processors
Li et al. Research in fast modular exponentiation algorithm based on FPGA
US20020161810A1 (en) Method and apparatus for multiplication and/or modular reduction processing
CN104346134B (zh) 用于执行缩小和舍入算术运算的数据处理装置和方法
US7475104B2 (en) System and method for providing a double adder for decimal floating point operations
CN114371828A (zh) 多项式乘法器及具有该乘法器的处理器
Gutub High speed hardware architecture to compute galois fields GF (p) montgomery inversion with scalability features
Wang et al. SMCOS: Fast and parallel modular multiplication on ARM NEON architecture for ECC
Ke et al. High-performance montgomery modular multiplier with NTT and negative wrapped convolution

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200922

Address after: No.5 building, Xin'an venture Plaza, marine high tech Development Zone, Binhai New Area, Tianjin

Patentee after: TIANJIN FEITENG INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 300072 Tianjin City, Nankai District Wei Jin Road No. 92

Patentee before: Tianjin University

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 300000 Building 5, Xin'an pioneer Plaza, Binhai New Area marine high tech Development Zone, Tianjin

Patentee after: Feiteng Information Technology Co.,Ltd.

Address before: 300000 Building 5, Xin'an pioneer Plaza, Binhai New Area marine high tech Development Zone, Tianjin

Patentee before: TIANJIN FEITENG INFORMATION TECHNOLOGY Co.,Ltd.