一种抗旁路攻击算法及其芯片的制作方法

文档序号:6561267阅读:196来源:国知局

专利名称::一种抗旁路攻击算法及其芯片的制作方法
技术领域
:本发明涉及信息安全技术,特别是涉及一种抗旁路攻击RSA算法的芯片及其算法的技术。背录技术加密作为信息安全的一个重要分支,一直受到广泛的关注。一方面,人们不断地研究加密算法自身的安全性。另一方面,关于加密算法的实现也是大家讨论的热门话题之一。一个较为普遍的认识是芯片是实现加密逻辑的一个很好的途径。加密算法在芯片内部实现可以避免很多用软件来实现而带来的弊端。软件实现中存在的密钥容易泄漏,内存可能被扫描,甚至算法受到窜改的问题在芯片实现中都可以得到很好的解决。然而,随着集成电路分析技术的发展,近些年出现了很多针对加密芯片的攻击方法。其中较为普遍、容易实现的是旁路攻击(SideChannelAttack)。旁路攻击是基于芯片物理特征的分析技术,包括故障分析技术、时间分析技术、简单功耗分析技术、差分功耗分析技术、电磁辐射分析技术等。利用这些技术,攻击者可以在获得密码运算载体的情况下,不破坏芯片正常运算,而快速获得密钥,从而破译整个密码系统。普通RSA算法芯片在运算时间,运算功耗上都有漏洞。例如RSA的核心运算模幂都是通过将幂指数(密钥)表示成二进制加法链,再将链上的每一位对应的模乘串连起来实现的当加法链上的位是1时,需要完成一次取模的乘法和一次取模的平方;当某位是0时,则只需要做一次取模平方。前后两者所消耗的时间基本成两倍关系。攻击者可以根据运算时间的区别很容易地得到密钥。在功耗攻击方面,研究发现,平方运算和乘法运算的功耗波形有着可以辨别的区别,利用与前面相同的原理,攻击者也可以获取RSA加密芯片内部的密钥。另外,除了模幂运算,RSA中的模约减运算也同时存在风险。由于模约减运算中大量使用一个操作数固定的减法运算,而不同操作数的减法运算的统计功耗特性也是可以辨别出来的,所以普通模约减算法也存在信息泄漏。为了使垂设计出的芯片具有抗旁路攻击的特性,人们提出了引入随机数来随机化内部处理流程的设想。其中一种有效的RSA抗攻击方法被称作MIST。其每次模幂运算都引入一组随机数对加法链进行随机处理从而得到一组随机的模乘运算。模乘运算的随机性掩盖了大部分幂指数的信息,保证了算法实现的安全性。然而,该方法只能保证模幂运算的安全,却忽略了模约减运算的安全性。由于MIST中随机加法链的生成要用到大量模约减运算,且固定在减法一端的操作数只从2,3,5当中选取,攻击者完全可以利用前面所述的模约减漏洞得到整个随机数组,进而破解MIST算法。
发明内容针对上述现有技术中存在的缺陷,本发明所要解决的技术问题是提供一种无统计特性,有较大攻击难度的抗旁路攻击RSA算法及其芯片。为了解决上述技术问题,本发明所提供的一种抗旁路攻击RSA算法的芯片,其特征在于,包括一接口模块(IFC),用于完成芯片内外数据的交互,设芯片的输入、输出端;一随机数模块(RNG),用于产生随机数;一存储器模块(MEM),分别连接接口模块和随机数模块,用于存储RSA需要计算的大数、中间和最终结果;一模幂模块(EXP),连接存储器模块,用于完成采用MIST算法的模幂运算;一模约减模块(RED),分别连接模约减模块和存储器模块,用于完成普通的模约减算法,计算余数和商;一控制模块(CTRL),分别连接模幂模块、模约减模块、存储器模块和接口模块,用于控制整个RSA设计的流程,使得模幂运算和模约减运算并行运行,并通过调用RED实现随机化的模约减运算。.进-—步地,所述模幂模块(EXP)用于完成Montgomery预计算(CMD—EXP—RR)、Montgomery计算(CMD—EXP—MONT)、模幂(CMD—EXP—EXP)、数据搬移(CMD—EXP—MOV)、乘加(CMD—EXP—MUL—ADD)以及模幂结果处理(CMD_EXP_FINISH)。进一步地,所述模幂模块(EXP)由两个子模块组成EXP控制子模块(ExpCtrl),负责解析Montgomery预计算、Montgomery计算、模幂、数据搬移、乘加以及模幂结果处理的六个EXP任务命令;Montgomery模乘运算子模块(MMM),用于完成MUL、SQU、M0V、CMP、INI以及MA各项基本操作。进一步地,所述Montgomery模乘运算子模块MMM包括MMMCtrl单元和PE处理单元,其中MMMCtrl单元控制对数据的读取和写入;PE处理单元用于数据处理。进一步地,所述PE处理单元中使用了一个乘法器aXcc,—个加法器a+a,以及一个4-2压縮器。需要注意的是MMM对平方运算作出了改进,使得其所需计算周期是同等长度下乘法的四分之三。该改进原理如下令X二(Xh,…,x。),计算XXX可以用以下算法<table>complextableseeoriginaldocumentpage8</column></row><table>算法第5、6行是区别与普通乘法的地方,j没有像i那样从O增加到l-l。为了解决上述技术问题,本发明所提供的一种抗旁路攻击RSA算法芯片的抗旁路攻击RSA算法表示成乂smodW,其特征在于,该运算过程在控制模块CTRL中的步骤1)根据大数N得到H,其用于计算A的Montgomery表示<formula>complexformulaseeoriginaldocumentpage8</formula>;2)计算A的Montgomery表示,并且计算MIST(模糊)算法和模约减算法RandRed直到RedB等于O;3)调整第二步得到的结果,并把其从Montgomery表示转化为普通表示。进一步地,所述步骤2)中的MIST算法TheMistExponentiationAlgorithm[6]MistExp(B,A){RemB=B;StartA=A;ResultA=1;While(RedB>0){Choosearandom"divisor"d;r=RedBmodd;if(r*0)ResultA=StartArxResultA;StartA=StartAd;RemB=RedB/d;Return(ResultA);该算法的第8行在本发明中已经被替换成RandRed,并且除了第一个RaridRed之外,其他的RandRed都可以和模幂运算并行运算。作为基本运算的模乘运算是通过Montgomery算法来实现的。进一步地,所述步骤2)中的模约减算法RandRed,其特征在于,如要计算Emodd,则算法描述如下RandRed(E,d){选取一个随机数rand;d'=dxrand;(Q,r')=Red(E,d');(Q',r)=Red(r',d);Q=Qxrand+Q';Return(Q,r);d是在MIST算法中从2,3,5中选取的操作数,而Red是普通的模约减函数。本发明提供的抗旁路攻击RSA算法的芯片及其算法的有益效果由于改进后的算法调用了两次普通模约减算法。第一个模约减算法需要重复的减法次数较多,甚至可以接近密钥的长度;第二个模约减算法调用的减法次数取决于选取的随机数的大小,一般较少。如果随机数从3,5,6,7,9,10,11,12,13,14中选取,对于第一个模约减调用,固定的操作数从3个扩大到30个,大大增加了攻击者的攻击难度。对于第二次模约减,减法次数不会超过10次,这意味着无法得到固定操作数的统计特性,从而无法通过观察功耗波形获取内部运算的数据。保证了芯片工作的安全性。'图1是本发明实施例抗旁路攻击RSA算法芯片的结构示意框图2是本发明实施例芯片的控制模块(CTRL)的状态转换图3是本发明实施例芯片的模幂模块(EXP)中Montgomery模乘运算子模块(MMM)的PE处理单元的结构示意图4是本发明实施例芯片的随机数模块(RNG)的结构示意图。具体实施例方式以下结合对本发明的实施例作进一步详细描述,但本实施例并不用于限制本发明,凡是采用本发明的相似结构、方法及其相似变化,均应列入本发明的保护范围。本发明通过引入随机数,提出了一种更为安全的模约减算法RandRed。同时结合MIST算法,给出一个抗旁路攻击的RSA芯片设计方法。在引入随机数之后,固定在减法运算一端的操作数选择空间大大增加,使得攻击者需要在大量数据中确定用于计算的操作数。如要计算Emodd,则算法描述如下-RandRed(E,d){选取一个随机数rand;d'=dxrand;(Q,r')=Red(E,d');(Q',r)=Red(r',d);Q=Qxrand+Q';Return(Q,r);d是在MIST算法中从2,3,5中选取的操作数,而Red是普通的模约减函数。改进后的算法调用了两次普通模约减算法。第一个模约减算法需要重复的减法次数较多,甚至可以接近密钥的长度;第二个模约减算法调用的减法次数取决于选取的随机数的大小,一般较少。如果随机数从3,5,6,7,9,10,11,12,13,14中选取,对于第一个模约减调用,固定的操作数从3个扩大到30个,大大增加了攻击者的攻击难度。对于第二次模约减,减法次数不会超过10次,这意味着无法得到固定操作数的统计特性。本发明通过引入MIST算法和随机化的模约减算法来实现RSA运算。芯片整体框图如图l所示。芯片包括六个功能模块一接口模块(IFC),用于完成芯片内外数据的交互,设芯片的输入、输出端;一随机数模块(RNG),用于产生随机数;一存储器模块(MEM),分别连接接口模块和随机数模块,用于存储RSA需要计算的大数、中间和最终结果;一模幂模块(EXP),连接存储器模块,用于完成采用MIST算法的模幂运算;一模约减模块(RED),分别连接模约减模块和存储器模块,用于完成普通的模约减算法,计算余数和商;一控制模块(CTRL),分别连接模幂模块、模约减模块、存储器模块和接口模块,用于控制整个RSA设计的流程,使得模幂运算和模约减运算并行运行,并通过调用RED实现随机化的模约减运算。本发明所涉及到的算法除了以上给出的随机化的模约减算法外,还有MIST算法和Montgomery模乘算法。以下给出MIST算法-TheMistExponentiationAlgorithm[6]MistExp(B,A){RemB-B;StartA=A;ResultA=1;While(RedB>0){Choosearandom"divisor"djr=RedBmodd;if(r#0)HesultA=StartArxResultA;StartA-StartAd;RemB=RedB/d;Return(ResultA);该算法的第8行在本发明中已经被替换成RandRed,并且除了第一个RandRed之外,其他的RandRed都可以和模幂运算并行运算。作为基本运算的模乘运算是通过Montgomery算法来实现的。模块分述控制模块(CTRL),将整个RSA运算表示成XsmodW,该运算过程被CTRL分成三个步骤1)根据大数N得到H,其用于计算A的Montgomery表示(MontA=(H*A))modN);2)计算A的Montgomery表示,并且计算MIST和RandRed直到RedB等于0;3)调整第二步得到的结果,并把其从Montgomery表示转化为普通表示。CTRL中的状态转换图如图2所示。状态图分两条路径。其一是预计算路径。当状态机接到预计算命令时,跳转到RedRR状态,计算Montgomery预计算所需要的数据,之后再跳转到ExpRR进行Montgomery预计算。结束后跳回空闲状态。另一条路径是模幂计算路径。如果状态机接到模幂命令,则从空闲状态Idle跳转到计算Montgomery数状态(ExpMont),接着计算以上所涉及的RandRed函数第三行运算(RedRandO)。之后进入RandRed函数第四行运算(RedRandl)和第五行运算(ExpMulAdd),至此便计算出了随机加法链的第一个数,此后的运算可以由模幂模块(EXP)和模约减模块(RED)并行计算。EXP—直进行模幂运算,RED进行RandRed函数第三、四行运算,直到幂指数B等于0为止。所以可以分成ERExpRandO和ERExpRandl两个状态。B等于0后,进行最后一次模幂运算(ExpExp)。如果最终结果无需调整(Valid-1),则直接返回空闲状态,否则进入RED普通模约减状态(RedDiv)进行调整。最后调用EXP模块将结果搬运到结果输出SRAM中(ExpMov)并返回空闲状态(Idle)。除了控制芯片状态的转换,CTRL还负责分配存储单元给EXP和RED模块。对存储器的访问分三种方式,其一只有EXP才能访问MEM;其二只有RED才能访问MEM;其三EXP和RED都能对存储器进行访问。根据状态的不同,访问状态在这三种状态间进行跳转。存储模块(MEM),RSA算法的一个特点是运算数据较大(称之为大数)。建议使用SRAM来存储这些数据。拿密钥长度最长可达2048,处理位宽为32为例,MEM中需要使用5个70X32SRAM(A,B,N,TY,TR)和1个36X64S腿(T)。SRAMA,B,N分别用于写入RSA操作数A,B和N。TY,TR被用来模幂运算的中间结果,其中TR还用于存储最终结果,SRAMT存储的是Montgomery模乘运算的中间结果。这些SRAM根据EXP单元给出的选择信号,将被映射到各个EXP的操作数上。具体的映射关系将在3.2.3节给出。模幂模块(EXP),EXP完成的任务有Montgomery预计算(CMD—EXP_RR)、Montgomery计算(CMD—EXP_M0NT)、模幂(CMD—EXP—EXP)、数据搬移(CMD_EXP_MOV)、乘加(CMD—EXP—MUL—ADD)以及模幂结果处理(CMD—EXP—FINISH)。.CMD—EXP—RR:H的计算分两步进行Mont2=2X2'modN以及H=(Mont2)rmodN,其中r=「(LlogN」+2)/a1(a是设计中乘法的位宽)。CMD—EXP—RR用于完成第二步H=(Mont2)rmodN运算。而第一步Mont2=2X2rmodN由RED单元得到。MEM单元计算出r后,将N的长度和r送给RED单元,得到结果后也将r按由低到高的顺序传给EXP单元,EXP据此按照普通的模幂运算计算出H。CMD—EXP—MONT:该任务完成将输入的RSA操作数A转化成Montgomery表示MontA。BPMontA=Mont(A,H,N),其中Mont表示Montgomery模乘运算。CMD—EXP—EXP:完成加法链上一个元素(ExpRand,Re)所对应的运算。各元素对应的运算如表1所示。<table>complextableseeoriginaldocumentpage14</column></row><table>操作栏内括号表示一次Montgomery模乘运算。例如(A,TY,A)表示Mont(A,TY,N),最后将结果存储在A中。在完成(2,1)对应的运算后,需要将A和TY的地址输入输出等控制线调换。CMD一EXP一EXP总是和RED并行执行的,每当CMD一EXP一EXP运算时,RED同时计算下一次CMD—EXP—EXP所需要的SC。CMD_EXP—FINISH:当RedB等于0,RED可以停止工作,而EXP需要将最后一组SC计算完,这个工作由CMD—EXP—.FINISH完成,其计算过程和CMD_EXP—EXP完全一样,参照表1所示。CMD_EXP_M0V:所完成的工作较为简单,就是把一个存储器中的数据转移到另一个存储器。主要用在当CMD—EXP—FINISH计算出的结果大于N时,需要由RED来完成一次模约减,而该结果无法由RED本身来存储在TR中,所以需要运用CMD_EXP—MOV来完成。CMD—EXP_MUL—ADD:用于完成RandRed中最后一条语句,由于Montgomery模乘运算中由mXN+T的运算,所以两者可以复用硬件资源(一个乘法器和一个加法器)。EXP由两个子模块组成EXP控制子模块(ExpCtrl)以及Montgomery模乘运算子模块(MMM)。ExpCtrl负责解析以上列出的六个EXP任务命令,并根据表1将他们分解成更为基本的模乘和转移操作。MMM完成各项基本操作。MMM所需要完成的任务有MUL、SQU、M0V、CMP、INI以及MA。MUL:采用Montgomery算法的取模乘法;在表1中,所有前两个操作数不同的操作都属于这个范围。SQU:考虑到设计已经釆用了MIST算法,即使攻击者能分辨出乘法和平方的区别也无法得到密钥。所以可以针对平方运算中的冗余进行优化,而不需要考虑改进的安全性。表1中所有前两个操作数相同的操作都属于这个范围。MOV:完成将一个存储器中的数据转移到另一个存储器。CMP:在完成Montgomery模乘之后需要判断结果是否大于N,CMP就是完成这个操作。INI:对TR存储器进行初始化写入l。(MIST算法描述的第5行)MA:完成CMD一EXPJIUL—ADD的任务。MMM包括MMMCtrl和PE处理单元,其中MMMCtrl控制对数据的读取和写入;PE负责数据处理。PE中使用了一个乘法器aXa,一个加法器a+a,以及一个4-2压縮器。需要注意的是MMM对平方运算作出了改进,使得其所需计算周期是同等长度下乘法的四分之三。该改进原理如下令X^(Xw,,x。),计算XXX可以用以下算法TheImprovedSquareAlgorithmSquare(X){result=0;for(i=0;i<l;i++){for(j=0;j<i;j++)result=2*Xj*Xj*2a*('+j)+result;result=Xj*xj*2a*('+j)+result;Return(result);算法第5、6行是区别与普通乘法的地方,j没有像i那样从0增加到1-1。而是在第6行采用乘以2来改进,由于只需要将乘法器输出结果向高位映射一位,改进代价较小。PE的另一个特点是对中间结果的读取、写入处理。在PE工作过程中,一个周期内即需要读取a位的上一次结果,同时又要写入a位的本次运算结果。考虑到双口RAM面积较单口大,将中间结果存储器的位宽设为2a,这样每次读和写都可以完成2a位的数据传输,将读写操作交替进行便可以满足计算要求,同时使用的TRAM是单口的。PE单元结构图如图3所示。PE主要由一个乘法器、一个4一2压缩器和一个加法器组成。根据需要给乘法器选择输入的数据,乘法器得到的结果存在寄存器PRODUCT中,长度是2a,其中高a位输入到寄存器PRODUCT—H中,在下一个时钟送到4一2压缩器,低a位直接输入到4一2压缩器,进入4一2压縮器的数还有加法器结果的进位以及中间计算结果。压縮器压縮的结果直接给加法器进行计算并存储在寄存器SUM0中。SUM1和SUM2用于缓存结果数据,配合SRAM存储单元的写入。模约减模块(RED),RED只完成普通的模约减运算,前文中所提到的随机化模约减算法是通过CTRL根据算法和随机数调用RED完成的。RED单元具体完成的任务有计算Bmodd'(CMD—RED—B—MCC)、计算r,modd(CMD—RED_RACC_D)、模约减(CMD—RED—DIV)、为Montgomery预计算进行的特殊模约减(CMD_RED_RR)。CMD一RED—B一DACC:完成随机化模约减算法中调用的第一个模约减运算,将余数写入r',商写回B。CMD—RED—RACC_D:完成随机化模约减算法中调用的第二个模约减运算,将余数写入r,商写入Q'。CMD—RED—DIV:用于调整Montgomery模乘结果,只计算余数,余数写入A存储器。CMD一REDJRR:完成Mont2的计算,为计算H作准备,只计算余数,余数写入A存储器。本模块采用算法如下TheClassicalReductionAlgorithmRed(E,d){i=Length(E)-Length(d);c=0;Q=0;r=E(i+1);while(i20Mif(c=1)c:r=2xr+E[i〗+d;elsec:r=2xr+E[i〗-d;Q[i]=NOTc;i=i-1;if(c=1)r=r+Return(Q,r);}随机数模块(RNG),RNG利用噪声产生真随机数,内设一个计数器,每64个时钟读取一位随机数,并将该位移入一个移位寄存器。CTRL处于EXP_M0NT和EXP—MUL_ADD的开始周期读取一次这个6位移位寄存器,其中三位用作MIST算法中的d,另外三位用作RandRed的randoRNG结构如图4所示。随机数由两部分组成一个是利用随机噪声源组成的随机种子产生器(RBG)。另一部分是一个伪随机网络,由线性移位寄存器(LFSR)和固定位的异或组成。由固定位异或得到的结果再和RBG产生的种子再异或一次,作为LFSR的输入。最终的输出由一个计数器(Counter)控制,在给定的时间间隔后输出LFSR的低位部分。权利要求1、一种抗旁路攻击RSA算法的芯片,其特征在于,包括一接口模块(IFC),用于完成芯片内外数据的交互,设芯片的输入、输出端;一随机数模块(RNG),用于产生随机数;一存储器模块(MEM),分别连接接口模块和随机数模块,用于存储RSA需要计算的大数、中间和最终结果;一模幂模块(EXP),连接存储器模块,用于完成采用MIST算法的模幂运算;一模约减模块(RED),分别连接模约减模块和存储器模块,用于完成普通的模约减算法,计算余数和商;一控制模块(CTRL),分别连接模幂模块、模约减模块、存储器模块和接口模块,用于控制整个RSA设计的流程,使得模幂运算和模约减运算并行运行,并通过调用RED实现随机化的模约减运算。2、根据权利要求1所述的抗旁路攻击RSA算法的芯片,其特征在于,所述模幂模块(EXP)用于完成Montgomery预计算(CMD—EXP—RR)、Montgomery计算(CMD—EXP—MONT)、模幂(CMD_EXP—EXP)、数据搬移(CMD—EXP—MOV)、乘加(CMD—EXP_MUL—ADD)以及模幂结果处理(CMD_EXP—FINISH)。3、根据权利要求1所述的抗旁路攻击RSA算法的芯片,其特征在于,所述模幂模块(EXP)由两个子模块组成EXP控制子模块(ExpCtrl),负责解析Montgomery预计算、Montgomery计算、模幂、数据搬移、乘加以及模幂结果处理的六个EXP任务命令;Montgomery模乘运算子模块(■),用于完成MUL、SQU、M0V、CMP、INI以及MA各项基本操作。4、根据权利要求3所述的抗旁路攻击RSA算法的芯片,其特征在于,所述Montgomery模乘运算子模块MMM包括MMMCtrl单元和PE处理单元,其中MMMCtrl单元控制对数据的读取和写入;PE处理单元用于数据处理。5、根据权利要求4所述的抗旁路攻击RSA算法的芯片,其特征在于,所述PE处理单元中使用了一个乘法器aXa,—个加法器a+oc,以及一个4-2压縮器;该改进原理如下令X-(x卜b…,x。),计算XXX可以用以下算法TheImprovedSquareAlgorithmSquare(X){result=0;for(i=0;i<l;i++){for(j=0;j<i;j++)result=2*Xi*xj*2a*(i+j)+result;result=Xi*xj*2a*(i+j)+result;Return(result);算法第5、6行的j没有像i那样从0增加到l-l。6、一种权利要求1所述的抗旁路攻击RSA算法的芯片的抗旁路攻击RSA算法,表示成^^modiV,其特征在于,该运算过程在控制模块CTRL中的步骤1)根据大数N得到H,其用于计算A的Montgomery表示(=modiV);2)计算A的Montgomery表示,并且计算MIST(模糊)算法和模约减算法RandRed直到RedB等于0;3)调整第二步得到的结果,并把其从Montgomery表示转化为普通表示。7、根据权利要求6所述的抗旁路攻击RSA算法,其特征在于,所述步骤2)中的MIST算法TheMistExponentiationAlgorithm[6]MistExp(B,A){RemB=B;StartA=A;ResultA=1;While(RedB>0){Choosearandom"divisor"d;r=RedBmodif(r*0)ResultA=StartArxResultA;StartA-StartAd;RemB=RedB/d;Return(ResultA);该算法的第8行已经被替换成RandRed,并且除了第一个RandRed之外,其他的RandRed都可以和模幂运算并行运算。8、根据权利要求6所述的抗旁路攻击RSA算法,其特征在于,所述步骤2)中的模约减算法RandRed,其特征在于,如要计算Emodd,则算法描述如下RandRed(E,d){选取一个随机数rand;d'=dxrand;(Q,r')=Red(E,d');(Q',r)=Red(r',d);Q=Qxrand+Q';Return(Q,r);d是在MIST算法中从2,3,5中选取的操作数,而Red是普通的模约减函数。全文摘要本发明公开一种抗旁路攻击RSA算法的芯片及其算法,涉及信息安全
技术领域
;该芯片包括用于完成芯片内外数据的交互的接口模块,用于产生随机数的随机数模块(RNG),用于存储RSA需要计算的大数、中间和最终结果的存储器模块(MEM),用于完成采用MIST算法的模幂运算的模幂模块(EXP),用于完成普通的模约减算法,计算余数和商模约减模块(RED),用于控制整个RSA设计的流程,使得模幂运算和模约减运算并行运行,并通过调用RED实现随机化的模约减运算的控制模块(CTRL)。本发明通过引入随机数,提出了一种更为安全的模约减算法RandRed,使本发明具有无统计特性,有较大攻击难度的特点。文档编号G06F21/00GK101196964SQ20061011923公开日2008年6月11日申请日期2006年12月7日优先权日2006年12月7日发明者周玉洁,晗秦,谭咏伟,陈志敏申请人:上海安创信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1