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

上传人:小** 文档编号:2238132 上传时间:2018-08-03 格式:PDF 页数:8 大小:403.57KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410427294.6

申请日:

2014.08.27

公开号:

CN104463027A

公开日:

2015.03.25

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 21/77申请公布日:20150325|||著录事项变更 IPC(主分类):G06F 21/77变更事项:申请人变更前:北京中电华大电子设计有限责任公司变更后:北京中电华大电子设计有限责任公司变更事项:地址变更前:100102 北京市朝阳区利泽中二路2号望京科技创业园A座五层变更后:102209 北京市昌平区北七家未来科技城南区中国电子网络安全和信息化产业基地C栋|||实质审查的生效IPC(主分类):G06F21/77申请日:20140827|||公开

IPC分类号:

G06F21/77(2013.01)I; G06F9/44

主分类号:

G06F21/77

申请人:

北京中电华大电子设计有限责任公司

发明人:

王赟; 于忠华; 杨念东; 陈波涛

地址:

100102北京市朝阳区利泽中二路2号望京科技创业园A座五层

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明实现了一种实现软件条件分支功耗均衡的方法,并将其应用于智能卡芯片的安全防护领域,消除了条件分支语句程序运行期间时间和功耗上的差异,隐藏和破坏了分支跳转操作在功耗上的相关性,从而达到软件防护简单功耗分析攻击的目的。本发明能够有效地防御针对芯片的功耗攻击,可应用于高安全芯片的软件安全性设计中。

权利要求书

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

2.  如权利要求1所述的方法,其特征在于对条件分支语句进行转换,具体实施步骤如下:
1)将条件分支处理程序整理为函数或模块,保证各个条件分支处理函数或模块的操作流程的指令执行周期和功耗外部特征曲线一致;
2)建立索引表存储条件分支处理程序地址,将各条件分支处理程序的地址提取出来,按照一定形式顺序存储到一块内存地址中;
3)建立分支条件与索引号的对应关系,将分支条件作为处理程序偏移地址的索引号,可以通过分支条件直接对应到索引表的位置;
4)改写条件分支处理程序,将条件分支语句和条件分支语句中的函数调用,换为通过索引号访问函数地址,并通过函数地址调用函数。

3.  如权利要求1或2所述的方法,其特征在于:可以使条件分支语句编译后对应的执行周期数不定的汇编指令转换为执行周期数固定的汇编指令。

说明书

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

一种实现软件条件分支功耗均衡的方法.pdf_第1页
第1页 / 共8页
一种实现软件条件分支功耗均衡的方法.pdf_第2页
第2页 / 共8页
一种实现软件条件分支功耗均衡的方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《一种实现软件条件分支功耗均衡的方法.pdf》由会员分享,可在线阅读,更多相关《一种实现软件条件分支功耗均衡的方法.pdf(8页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 (43)申请公布日 (21)申请号 201410427294.6(22)申请日 2014.08.27G06F 21/77(2013.01)G06F 9/44(2006.01)(71)申请人 北京中电华大电子设计有限责任公司地址 100102 北京市朝阳区利泽中二路 2 号望京科技创业园 A 座五层(72)发明人 王赟 于忠华 杨念东 陈波涛(54) 发明名称一种实现软件条件分支功耗均衡的方法(57) 摘要本发明实现了一种实现软件条件分支功耗均衡的方法,并将其应用于智能卡芯片的安全防护领域,消除了条件分支语句程序运行期间时间和功耗上的差异,隐藏和破坏了分支跳转操作在功耗上的相。

2、关性,从而达到软件防护简单功耗分析攻击的目的。本发明能够有效地防御针对芯片的功耗攻击,可应用于高安全芯片的软件安全性设计中。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书1页 说明书3页 附图3页(10)申请公布号 CN 104463027 A(43)申请公布日 2015.03.25CN 104463027 A1/1 页21.一种实现条件分支功耗均衡的方法,其特征在于 :建立条件分支处理程序地址和条件分支判断条件的索引表,将条件判断的跳转操作,转换为根据索引值查找并加载跳转条件分支处理程序,对于所有的条件分支,以分支判断条件作为索引值,先找到索引值的偏。

3、移,检索到条件分支处理程序地址,读出处理程序地址并通过条件分支处理程序的地址对其进行调用,加载程序并执行,将条件判断的分支跳转操作从而消除条件分支差异产生的运行时间和功耗上的差异。2.如权利要求 1 所述的方法,其特征在于对条件分支语句进行转换,具体实施步骤如下:1) 将条件分支处理程序整理为函数或模块,保证各个条件分支处理函数或模块的操作流程的指令执行周期和功耗外部特征曲线一致 ;2) 建立索引表存储条件分支处理程序地址,将各条件分支处理程序的地址提取出来,按照一定形式顺序存储到一块内存地址中 ;3) 建立分支条件与索引号的对应关系,将分支条件作为处理程序偏移地址的索引号,可以通过分支条件直。

4、接对应到索引表的位置 ;4) 改写条件分支处理程序,将条件分支语句和条件分支语句中的函数调用,换为通过索引号访问函数地址,并通过函数地址调用函数。3.如权利要求 1 或 2 所述的方法,其特征在于 :可以使条件分支语句编译后对应的执行周期数不定的汇编指令转换为执行周期数固定的汇编指令。权 利 要 求 书CN 104463027 A1/3 页3一种实现软件条件分支功耗均衡的方法技术领域0001 本发明主要应用于智能卡安全领域,也可以适用于各种需要防御计时攻击和简单功耗攻击的安全芯片中。背景技术0002 智能卡 (SmartCard),也叫 IC 卡,是一个使用集成电路工艺制造的带有微处理芯片的、。

5、具有标准规格的卡片。0003 随着社会和科技的发展,智能卡的应用越来与普及,给人们生活带来巨大的方便。但是,自从1996年Kocher提出了差分功耗攻击方法以来,业界对功耗攻击方法进行了深入研究。功耗 ( 能量 ) 分析攻击的研究,同时也给智能卡带来了安全方面的威胁。恶意使用者可能通过对智能卡工作功耗的分析得到工作状态信息,进而获取智能卡的敏感信息。0004 功耗 ( 能量 ) 分析攻击已被公认为一种获得智能卡芯片秘密信息的强有力工具,其基本原理是芯片设备的瞬时能量消耗与其所执行的操作及操作的数据之间具有相关性。功耗分析攻击,按照对侧信息分析的原理,可以将其分为简单能量分析 (SPA)、差分能。

6、量分析 (DPA) 以及相关能量分析 (CPA) 等。0005 举例来说,通常高级语言的条件分支语句,如 if-else,switch-case 等,经过编译器编译后,对应的汇编代码通常是条件跳转指令。而对于绝大部分微处理器,条件跳转指令在判断条件成立和不成立时,对应的指令周期数是不同的。指令中判断条件不成立时,指令仅执行判断操作,判断条件成立时,指令处理执行判断操作外,还要执行跳转操作。因此会造成同一条分支语句,由于分支条件的不同,导致指令运行时间和功耗上产生差异。通过这种差异,使用简单功耗分析,就有可能分析出智能卡芯片的工作状态、程序处理流程信息,带来安全隐患。0006 比如在增强型805。

7、1单片机中,条件跳转指令JB和JNB,在判断条件不成立时,该指令的执行周期数为 3,但判断条件成立时,该指令的执行周期为 4。同样,条件跳转指令 JC和 JNC,在两种不同条件下的执行周期分别为 2 和 3。ARM Cotex-M0 处理器中,条件跳转指令,如 BNE、BEQ 等,判断条件不成立时,指令的执行周期数为 1,而判断条件成立时,指令的执行周期数为 3。0007 这些条件跳转指令由于判断条件不同引起的执行时间上的差异,会体现在功耗曲线上,通过这种差异,使用简单功耗分析可以分析出条件分支语句实际执行的分支,从而获取智能卡芯片的工作状态,或程序处理流程信息,带来安全隐患。0008 从上述。

8、信息可以看出,对于智能卡等产品,如何保护好卡片工作时的功耗信息非常重要。功耗信息通常与智能卡正在进行的操作有关,比如智能卡芯片处理不同的指令会引起功耗的差异,这种差异规律性可以很容易地从功耗轨迹上看到。简单功耗分析即根据功耗轨迹直接得到智能卡操作相关的信息,这些信息有可能泄露智能卡的关键技术。0009 因此,必须实施相应的防护技术来保护智能卡安全。由于功耗分析的基本原理是芯片设备的瞬时能量消耗与其所执行的操作及操作的数据之间具有相关性,所以如果能够说 明 书CN 104463027 A2/3 页4隐藏或者破坏这种相关性,就会大大增强芯片防御功耗分析攻击的能力。发明内容0010 本发明中,采用一。

9、种软件分支均衡方法,将程序中分支判断和跳转操作的流程差异消除,隐藏了分支跳转操作在时间上的相关性,对于针对分支跳转语句功耗分析的攻击,有一定的防御能力。0011 本发明的内容在于,实现了一种将条件判断的分支语句转换为分支处理程序地址的索引和调用,并将其应用于智能卡芯片的安全防护领域,消除了分支差异产生的程序运行期间时间和功耗上的差异,隐藏和破坏了分支跳转操作在功耗上的相关性,从而达到软件防护简单功耗分析攻击和计时攻击的目的。0012 一种实现软件分支功耗均衡的方法,通过建立分支处理程序地址和分支判断条件的索引表,将条件判断的跳转操作,转换为转根据索引值查找并加载跳转分支处理程序,对于所有的分支。

10、,以分支判断条件作为索引值,先找到索引值的偏移,检索到分支处理程序地址,读出处理程序地址并通过分支处理程序的地址对其进行调用,加载程序并执行将条件判断的分支跳转操作从而消除分支差异产生的运行时间和功耗上的差异。0013 其中对条件分支语句进行转换,具体实施步骤如下 :0014 1) 将分支处理程序整理为函数或模块,保证各个分支处理函数或模块的操作流程的指令执行周期和功耗外部特征曲线一致 ;0015 2) 建立索引表存储分支处理程序地址,将各分支处理程序的地址提取出来,按照一定形式顺序存储到一块内存地址中 ;0016 3) 建立分支条件与索引号的对应关系,将分支条件作为处理程序偏移地址的索引号,。

11、可以通过分支条件直接对应到索引表的位置,该对应关系应该在操作上具有一致性 ;0017 4) 改写分支处理程序,将分支语句和分支语句中的函数调用,换为通过索引号访问函数地址,并通过函数地址调用函数。0018 本发明中将条件判断的分支跳转操作,转换为根据索引值查找并加载分支处理程序。对于所有的分支,都是分两步 :找到索引值的偏移,读出处理程序地址,加载程序并执行。以上步骤中,对应的汇编指令包括带偏移的数据传输指令和含目标地址的直接跳转指令,比如 8051 单片机中,对应 MOV 指令和 JMPA+DPTR 指令 ;ARM Cotex-M0 中,对应 MOV 指令和 BX Rm 指令,这类指令的执行。

12、周期都是固定的。所以,通过这种转换,可以消除条件分支间的差异。根据功耗攻击的特点,如果各个分支跳转和执行时序和功耗统一的情况下,分支跳转指令就不会产生的时序和功耗方面的差异。使用该发明的方法,可以破坏程序操作和芯片功耗之间的相关性,因此起到了对简单功耗分析攻击的防御效果。附图说明0019 图 1 常规的分支跳转执行流程0020 图 2 本发明中的分支跳转执行流程0021 图 3 本发明中分支跳转索引表与分支处理程序映射关系图具体实施方式说 明 书CN 104463027 A3/3 页50022 下面结合附图和具体实施方式对本发明技术方案做进一步详细说明。0023 图 1 是常规的分支跳转程序执。

13、行流程,常规的分支跳转程序执行流程包括如下步骤 :步骤 101,设置条件判断的变量值。步骤 102,通过分支条件语句 ( 如 if-else) 进行条件判断,并转向对应的分支语句进行执行,在此步骤中,由于判断条件不同,条件判断语句,有可能产生跳转操作,也有可能不产生跳转操作,所以会引起程序执行时间和功耗上的差异。步骤 103 和 104 是不同的分支处理程序。0024 本发明提出的新方法,将条件判断的分支语句转换为分支处理程序地址的索引和调用,消除了分支差异产生的程序运行期间时间和功耗上的差异。采用该方法后,分支跳转程序执行流程转换为以下几个步骤,如图 2 所示 :步骤 201,设置条件判断的。

14、变量值,这一步与常规的分支跳转程序执行流程一样。步骤202,根据分支跳转条件与分支处理程序地址的索引关系,通过分支跳转条件查找到分支处理程序的地址。步骤 203,通过分支处理程序地址,调用执行分支处理程序。0025 实现本发明中的分支跳转执行流程,需要按照以下步骤对条件分支语句进行转换,具体实施步骤如下 :0026 1) 编写分支处理程序,将分支处理程序整理为函数或模块。各个分支处理函数的操作流程,要保证指令执行周期和功耗外部特征曲线一致 ;0027 2) 建立索引表存储分支处理程序地址,将各分支处理程序的地址提取出来,按照一定形式 ( 如数组 ) 顺序存储到一块内存地址中,如图 3 中步骤 。

15、302 所示 ;0028 3) 建立分支条件与索引号的对应关系,将分支条件作为处理程序偏移地址的索引号,可以通过分支条件直接对应到索引表的位置,该对应关系应该在操作上具有一致性( 如数组下标进行检索 ),如图 3 中步骤 303 所示 ;0029 4) 改写分支处理程序,将分支语句和分支语句中的函数调用,换为通过索引号访问函数地址,并通过函数地址调用函数。0030 通过这种方式的转换,所有的分支跳转语句都对应同样的操作步骤,且执行时序和功耗达成统一。0031 以上所述,仅为本发明的较佳实例,用于帮助理解本发明的方法及其核心思想,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说 明 书CN 104463027 A1/3 页6图1说 明 书 附 图CN 104463027 A2/3 页7图2说 明 书 附 图CN 104463027 A3/3 页8图3说 明 书 附 图CN 104463027 A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1