一种实现软件条件分支功耗均衡的方法技术

技术编号:11190539 阅读:77 留言:0更新日期:2015-03-25 19:13
本发明专利技术实现了一种实现软件条件分支功耗均衡的方法,并将其应用于智能卡芯片的安全防护领域,消除了条件分支语句程序运行期间时间和功耗上的差异,隐藏和破坏了分支跳转操作在功耗上的相关性,从而达到软件防护简单功耗分析攻击的目的。本发明专利技术能够有效地防御针对芯片的功耗攻击,可应用于高安全芯片的软件安全性设计中。

【技术实现步骤摘要】

本专利技术主要应用于智能卡安全领域,也可以适用于各种需要防御计时攻击和简单功耗攻击的安全芯片中。
技术介绍
智能卡(SmartCard),也叫IC卡,是一个使用集成电路工艺制造的带有微处理芯片的、具有标准规格的卡片。 随着社会和科技的发展,智能卡的应用越来与普及,给人们生活带来巨大的方便。但是,自从1996年Kocher提出了差分功耗攻击方法以来,业界对功耗攻击方法进行了深入研宄。功耗(能量)分析攻击的研宄,同时也给智能卡带来了安全方面的威胁。恶意使用者可能通过对智能卡工作功耗的分析得到工作状态信息,进而获取智能卡的敏感信息。 功耗(能量)分析攻击已被公认为一种获得智能卡芯片秘密信息的强有力工具,其基本原理是芯片设备的瞬时能量消耗与其所执行的操作及操作的数据之间具有相关性。功耗分析攻击,按照对侧信息分析的原理,可以将其分为简单能量分析(SPA)、差分能量分析(DPA)以及相关能量分析(CPA)等。 举例来说,通常高级语言的条件分支语句,如if-else,switch_case等,经过编译器编译后,对应的汇编代码通常是条件跳转指令。而对于绝大部分微处理器,条件跳转指令在判断条件成立和不成立时,对应的指令周期数是不同的。指令中判断条件不成立时,指令仅执行判断操作,判断条件成立时,指令处理执行判断操作外,还要执行跳转操作。因此会造成同一条分支语句,由于分支条件的不同,导致指令运行时间和功耗上产生差异。通过这种差异,使用简单功耗分析,就有可能分析出智能卡芯片的工作状态、程序处理流程信息,带来安全隐患。 比如在增强型8051单片机中,条件跳转指令JB和JNB,在判断条件不成立时,该指令的执行周期数为3,但判断条件成立时,该指令的执行周期为4。同样,条件跳转指令JC和JNC,在两种不同条件下的执行周期分别为2和3。ARM Cotex-MO处理器中,条件跳转指令,如BNE、BEQ等,判断条件不成立时,指令的执行周期数为1,而判断条件成立时,指令的执行周期数为3。 这些条件跳转指令由于判断条件不同引起的执行时间上的差异,会体现在功耗曲线上,通过这种差异,使用简单功耗分析可以分析出条件分支语句实际执行的分支,从而获取智能卡芯片的工作状态,或程序处理流程信息,带来安全隐患。 从上述信息可以看出,对于智能卡等产品,如何保护好卡片工作时的功耗信息非常重要。功耗信息通常与智能卡正在进行的操作有关,比如智能卡芯片处理不同的指令会引起功耗的差异,这种差异规律性可以很容易地从功耗轨迹上看到。简单功耗分析即根据功耗轨迹直接得到智能卡操作相关的信息,这些信息有可能泄露智能卡的关键技术。 因此,必须实施相应的防护技术来保护智能卡安全。由于功耗分析的基本原理是芯片设备的瞬时能量消耗与其所执行的操作及操作的数据之间具有相关性,所以如果能够隐藏或者破坏这种相关性,就会大大增强芯片防御功耗分析攻击的能力。
技术实现思路
本专利技术中,采用一种软件分支均衡方法,将程序中分支判断和跳转操作的流程差异消除,隐藏了分支跳转操作在时间上的相关性,对于针对分支跳转语句功耗分析的攻击,有一定的防御能力。 本专利技术的内容在于,实现了一种将条件判断的分支语句转换为分支处理程序地址的索引和调用,并将其应用于智能卡芯片的安全防护领域,消除了分支差异产生的程序运行期间时间和功耗上的差异,隐藏和破坏了分支跳转操作在功耗上的相关性,从而达到软件防护简单功耗分析攻击和计时攻击的目的。 一种实现软件分支功耗均衡的方法,通过建立分支处理程序地址和分支判断条件的索引表,将条件判断的跳转操作,转换为转根据索引值查找并加载跳转分支处理程序,对于所有的分支,以分支判断条件作为索引值,先找到索引值的偏移,检索到分支处理程序地址,读出处理程序地址并通过分支处理程序的地址对其进行调用,加载程序并执行将条件判断的分支跳转操作从而消除分支差异产生的运行时间和功耗上的差异。 其中对条件分支语句进行转换,具体实施步骤如下: I)将分支处理程序整理为函数或模块,保证各个分支处理函数或模块的操作流程的指令执行周期和功耗外部特征曲线一致; 2)建立索引表存储分支处理程序地址,将各分支处理程序的地址提取出来,按照一定形式顺序存储到一块内存地址中; 3)建立分支条件与索引号的对应关系,将分支条件作为处理程序偏移地址的索引号,可以通过分支条件直接对应到索引表的位置,该对应关系应该在操作上具有一致性; 4)改写分支处理程序,将分支语句和分支语句中的函数调用,换为通过索引号访问函数地址,并通过函数地址调用函数。 本专利技术中将条件判断的分支跳转操作,转换为根据索引值查找并加载分支处理程序。对于所有的分支,都是分两步:找到索引值的偏移,读出处理程序地址,加载程序并执行。以上步骤中,对应的汇编指令包括带偏移的数据传输指令和含目标地址的直接跳转指令,比如8051单片机中,对应MOV指令和JMPOA+DPTR指令;ARM Cotex-MO中,对应MOV指令和BX Rm指令,这类指令的执行周期都是固定的。所以,通过这种转换,可以消除条件分支间的差异。根据功耗攻击的特点,如果各个分支跳转和执行时序和功耗统一的情况下,分支跳转指令就不会产生的时序和功耗方面的差异。使用该专利技术的方法,可以破坏程序操作和芯片功耗之间的相关性,因此起到了对简单功耗分析攻击的防御效果。 【附图说明】 图1常规的分支跳转执行流程 图2本专利技术中的分支跳转执行流程 图3本专利技术中分支跳转索引表与分支处理程序映射关系图 【具体实施方式】 下面结合附图和【具体实施方式】对本专利技术技术方案做进一步详细说明。 图1是常规的分支跳转程序执行流程,常规的分支跳转程序执行流程包括如下步骤:步骤101,设置条件判断的变量值。步骤102,通过分支条件语句(如if-else)进行条件判断,并转向对应的分支语句进行执行,在此步骤中,由于判断条件不同,条件判断语句,有可能产生跳转操作,也有可能不产生跳转操作,所以会引起程序执行时间和功耗上的差异。步骤103和104是不同的分支处理程序。 本专利技术提出的新方法,将条件判断的分支语句转换为分支处理程序地址的索引和调用,消除了分支差异产生的程序运行期间时间和功耗上的差异。采用该方法后,分支跳转程序执行流程转换为以下几个步骤,如图2所示:步骤201,设置条件判断的变量值,这一步与常规的分支跳转程序执行流程一样。步骤202,根据分支跳转条件与分支处理程序地址的索引关系,通过分支跳转条件查找到分支处理程序的地址。步骤203,通过分支处理程序地址,调用执行分支处理程序。 实现本专利技术中的分支跳转执行流程,需要按照以下步骤对条件分支语句进行转换,具体实施步骤如下: I)编写分支处理程序,将分支处理程序整理为函数或模块。各个分支处理函数的操作流程,要保证指令执行周期和功耗外部特征曲线一致; 2)建立索引表存储分支处理程序地址,将各分支处理程序的地址提取出来,按照一定形式(如数组)顺序存储到一块内存地址中,如图3中步骤302所示; 3)建立分支条件与索引号的对应关系,将分支条件作为处理程序偏移地址的索引号,可以通过分支条件直接对应到索引表的位置,该对应关系应该在操作上具有一致性本文档来自技高网
...

【技术保护点】
一种实现条件分支功耗均衡的方法,其特征在于:建立条件分支处理程序地址和条件分支判断条件的索引表,将条件判断的跳转操作,转换为根据索引值查找并加载跳转条件分支处理程序,对于所有的条件分支,以分支判断条件作为索引值,先找到索引值的偏移,检索到条件分支处理程序地址,读出处理程序地址并通过条件分支处理程序的地址对其进行调用,加载程序并执行,将条件判断的分支跳转操作从而消除条件分支差异产生的运行时间和功耗上的差异。

【技术特征摘要】
1.一种实现条件分支功耗均衡的方法,其特征在于: 建立条件分支处理程序地址和条件分支判断条件的索引表,将条件判断的跳转操作,转换为根据索引值查找并加载跳转条件分支处理程序,对于所有的条件分支,以分支判断条件作为索引值,先找到索引值的偏移,检索到条件分支处理程序地址,读出处理程序地址并通过条件分支处理程序的地址对其进行调用,加载程序并执行,将条件判断的分支跳转操作从而消除条件分支差异产生的运行时间和功耗上的差异。2.如权利要求1所述的方法,其特征在于对条件分支语句进行转换,具体实施步骤如下: 1)将条件分支处理程序整理为函数或模块,保证各个条件分...

【专利技术属性】
技术研发人员:王赟于忠华杨念东陈波涛
申请(专利权)人:北京中电华大电子设计有限责任公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1