一种设计在cpu里的防止线性和差分功耗分析的方法

文档序号:6448054阅读:241来源:国知局
专利名称:一种设计在cpu里的防止线性和差分功耗分析的方法
技术领域
本发明涉及一种设计在CPU里的防止线性和差分功耗分析的方法。
背景技术
智能卡(smart card)和安全匙(security token)是由一个或多个集成电路芯片组成,并封装成便于人们携带的卡片或钥匙,在集成电路中包括中央处理器(CPU)和存储器。智能卡和安全匙具有广泛的用途,比如电子身份证、电话机管理系统、有线电视收费系统、操作人员上岗证安全保密系统、社会医疗保险应用管理系统、电子钱包系统以及信用卡等等。由于智能卡和安全匙的广泛性,它的安全性变得十分重要。一般认为智能卡和安全匙所载信息比较安全,因为它们的内部工作不暴露于攻击者。但是最近的研究表明这个假设并不正确,解密专家可以从功耗分析得到大量的有关智能卡和安全匙内部工作的信息处理。
线性功耗分析方法是直接测量智能卡或安全匙的功耗随时间的变化,通过分辨率高和敏感度高的仪器测量电流或者电磁辐射,攻击者可以记录智能卡或安全匙中程序指令的执行顺序,因为每条指令所消耗的能量是不相同的。这样攻击者可以得到许多信息。
差分功耗分析方法是比线性功耗分析方法更强大的攻击方法,攻击者通过重复测量功耗的变化,利用统计和相关分析的办法来获得智能卡或安全匙里的信息,比如说密匙。
至今已有一些方案来防止功耗分析。方案大致可以划分为两类软件和硬件。软件方案不能完全排除功耗分析的攻击,只能增加攻击者破解的时间,而且要求编程者对CPU非常了解。硬件的大部分方案都企图从CPU外部来解决问题,这些方案有使用过滤电源,使用物理层保护层(防电磁辐射),引入随机噪声,引入随机中断。这些方案的缺点是它们增加了智能卡或安全匙的费用和尺寸大小,不适合实际应用。也有硬件方案通过CPU本身来处理,但这些方案缺乏通用性以及对CPU的性能和功耗控制。

发明内容
本发明的目的是提供一种设计在CPU里的防止线性和差分功耗分析的方法。它的步骤如下1)在CPU里定义一个随机伪指令控制寄存器;2)CPU里设计一个计数器,对正常指令发射的数目进行计数;3)当条件满足时,CPU的随机伪指令发射单元将发射一条或多条伪指令;4)弥补跳转指令产生的流水线空缺;5)所有的伪指令被打上标签。
本发明的优点是这个机制的逻辑含量并不高,对CPU芯片的大小的影响很小,因而不会增加CPU芯片的成本。而且本发明的逻辑不在CPU的时序关键路径上,不影响CPU的运行最高频率。同时这个机制可伸缩性强,代码设计者可以根据功耗保密性的要求来设置,并且能够精确地控制CPU执行程序的性能和总功耗。该机制能保证代码执行的正确性。


图1是显示了一个简化的CPU的内部结构框图;图2a是一个简化的CPU的流水线示意图;图2b是跳转指令产生的流水线空缺的示意图;图3是本发明的反功耗的机理图。
具体实施例方式
本发明基本特点在于用随机伪指令混杂在正常指令之中,其实现方法概括如下1)CPU里定义一个随机伪指令控制寄存器,用于控制随机伪指令发射的周期和每次伪指令发射的个数。这两个参数本身也可以是随时间随机变化的。
2)CPU里设计一个正常指令发射计数器,对正常指令发射的数目进行计数3)当随机伪指令控制寄存器的周期小于或等于正常指令发射计数器的数值时,CPU的随机伪指令发射单元将发射一条或多条伪指令4)当条件跳转指令或非条件跳转指令发生时,CPU的流水线可能会出现空缺,这时随机伪指令发射单元将发射伪指令来补充CPU流水线空缺,一直到CPU取到正常指令为止。
5)所有的伪指令将被打上标签,表明它们不能改变CPU的状态,从而保护CPU执行程序的正确性和完整性本发明提出了一个新颖的设计方法来防止线性和差分功耗分析。为对本发明做更好的说明,本说明书将对CPU的结构及流水线作一个简短的介绍,并以它作为本发明的解析。但本发明对各种CPU具有通用性。图1显示了一个简化的CPU的内部结构框图。一个CPU大致由CPU控制寄存器组单元2、指令提取单元3、指令解码和指令发射单元4、功能模块组5和数据写回单元6组成。单元2主要用于控制了CPU的操作。以下对CPU里一条指令的操作做一个简短的介绍。其步骤可大致分为1)单元3从内存(或片上高速缓存区)提取指令,交给单元4。
2)单元4通过解码来决定指令所要去的功能模块,当指令不存在和前面指令的依赖关系以及功能模块可以接受新的指令时,单元4将指令交给单元5中的某一模块。
3)单元5执行指令,根据CPU的不同,指令集也不相同,但一般都包括逻辑运算,加减乘除,存取数据和跳转转移等等。由于每个功能模块的逻辑门电路所包括的晶体管数目及大小不同,启用每个功能模块会消耗不同的能量。这是攻击者能通过线性和差分功耗分析来获取智能卡或安全匙信息的根本原因。当功能模块执行完指令后,执行结果会交给单元6。
4)单元6将数据结果写回到CPU的通用寄存器组里,改变CPU的状态,从而完成了一个指令的操作。
为了提高CPU执行程序的效率,通常CPU采取流水线结构的执行方式。图2a显示了图1的CPU的指令流水线操作,其中,IF指令提取;DE指令解码和发射;EX指令运算;WB结果写回。由图2a可以看出在某一个时钟周期里可以有4条指令同时进行,它们分布在不同的单元里。因此实际上CPU可以在一个时钟周期里完成一条指令。但是当CPU有条件跳转指令并预测错误时,CPU的流水线会有一个空缺,如图2b所示。在此空缺里由于单元5没有执行指令,功耗比较小,容易给供给者提供指令执行的信息。有些CPU的非条件跳转指令也会出现流水线空缺。不论哪种情况,本发明为这些流水线空缺造成的功耗信息泄漏提供了解决方案。
伪指令在本发明中定义为一条能启用功能单元的,但不会改变CPU和系统状态的指令。伪指令的使用是本发明的关键。本发明的具体实施例可以参见图3和图1。本发明所需要的逻辑单元全部包含在方框7中。它包括1)一个随机伪指令控制寄存器单元8;2)一个正常指令发射计数器单元9;3)一个随机指令发射单元10;4)一个逻辑比较器11;
5)一个或门单元12;6)一个选择器单元13。
单元8是单元2中的一个寄存器,代码设计者可以通过设置单元8中的数值来控制随机伪指令的发射周期,每次伪指令发射的数目。在具体实践中,代码设计者可以根据功耗保密性,CPU执行程序的性能和总功耗的要求来灵活地调节该寄存器。设置的周期越短,或者每次发射伪指令的数目越多,功耗保密性越强。设置的周期和每次伪指令发射的数目也可以是随时间随机变化的,这时设置该寄存器主要是用来控制周期变化的上下限和每次伪指令发射数目的上下限。这样实践可以使得多次测量之间的相关性变得更小。
除单元8以外,方框7中的其余单元可以设计在单元4中。其硬件操作如下单元9对正常指令发射进行计数,每当单元4发射一条指令,该计数器加1。一旦一个或者多个伪指令被发射,该计数器清0。单元11对单元8和单元9的输出进行逻辑比较。如果单元8的数值小于或等于单元9的数值,单元11将输出逻辑1,否则输出逻辑0。单元12是一个逻辑或门操作。如果单元11输出逻辑1,或者跳转指令造成流水线空缺时(单元14),该单元输出逻辑1到单元13。单元13是个选择器,它被单元12控制,用来选择指令的数据通道。
单元10是一个随机伪指令发射器。它可以有许多方式来实现,比如可以用线性反馈移位寄存器来产生伪随机操作代码。另一种方式可以将CPU的一个或者几个通用端口接到真随机发生器上,并由CPU对其进行采样来产生真随机操作代码。指令的操作数可以沿用上一条指令的操作数,也可以用随机发生器产生。伪指令产生后,由单元13送交单元15进行指令解码,然后发射到单元5。所有这些伪指令会被打上标签,表明它们不能改变CPU和系统的状态。但是由于它们所消耗的能量和正常指令没有区别,攻击者无法区分伪指令和正常指令。来可以用来防止功耗分析。
当伪指令发射时,正常指令的数据将被保留在单元3中。当伪指令发射完成时,正常指令又重新开始从单元3中发射出来。
综上所述,采用本发明的设计方法,在正常指令中掺杂了大量的随机伪指令,并且能够隐藏跳转指令,线性功耗分析变得几乎不可能,因为攻击者无法区分伪指令和正常指令。而且由于随机伪指令的不重复性,和每次随机伪指令发射的数量的不重复性,多次功耗测量之间的相关性变得很小,这样差分功耗分析也变得异常困难。另外,本发明引入了一个随机伪指令发射控制寄存器,代码设计则可以在性能、总功耗和功耗保密性之间做出合适的选择。
权利要求
1.一种设计在CPU里的防止线性和差分功耗分析的方法,其特征在于它的步骤如下1)在CPU里定义一个随机伪指令控制寄存器;2)CPU里设计一个计数器,对正常指令发射的数目进行计数;3)当条件满足时,CPU的随机伪指令发射单元将发射一条或多条伪指令;4)弥补跳转指令产生的流水线空缺;5)所有的伪指令被打上标签。
2.根据权利要求1所述的一种设计在CPU里的防止线性和差分功耗分析的方法,其特征在于所说随机伪指令控制寄存器控制随机伪指令发射的周期和每次伪指令发射的个数。
3.根据权利要求1所述的一种设计在CPU里的防止线性和差分功耗分析的方法,其特征在于所说计数器对正常指令发射的数目进行计数并且用于和权利要求2所说的随机伪指令控制寄存器进行比较。
4.根据权利要求1所述的一种设计在CPU里的防止线性和差分功耗分析的方法,其特征在于所说随机伪指令发射单元将发射一条或多条伪指令的条件是权利要求2所说的随机伪指令控制寄存器的数值小于或等于权利要求3所说的计数器的数值。
5.根据权利要求1所述的一种设计在CPU里的防止线性和差分功耗分析的方法,其特征在于所说的弥补跳转指令产生的流水线空缺是当条件跳转指令或非条件跳转指令发生时,随机伪指令发射单元将发射伪指令来补充CPU流水线空缺,一直到CPU取到正常指令为止。
6.根据权利要求1所述的一种设计在CPU里的防止线性和差分功耗分析的方法,其特征在于所说伪指令标签表明它自己不能改变CPU的状态,从而保护CPU和系统执行程序的正确性和完整性。
全文摘要
本发明公开了一种设计在CPU里的防止线性和差分功耗分析的方法。它是应用于嵌入式CPU里防止正常指令泄漏功耗信息的一种设计方法。对于智能卡和安全匙的安全性具有重要的意义。这个设计的主要特点在于引入随机的伪指令,并控制这些伪指令的发射频率和每次伪指令的发射数目。同时,这些伪指令被用来填充CPU跳转转移指令所造成的流水线空缺。由于这些伪指令消耗的能量和正常指令没有区别,从功耗分析中提取正常指令的信息变得非常困难。这个设计的优点是逻辑含量小、不影响时序关键路径、可行性强,另一个优点是它允许代码设计者在代码运行的性能、总功耗和功耗保密性之间做出合适的选择。
文档编号G06F9/38GK1447230SQ03116089
公开日2003年10月8日 申请日期2003年3月28日 优先权日2003年3月28日
发明者王界兵, 严晓浪 申请人:杭州中天微系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1