CN106919833A - 安全芯片中防止功耗泄露的方法 - Google Patents
安全芯片中防止功耗泄露的方法 Download PDFInfo
- Publication number
- CN106919833A CN106919833A CN201511000568.4A CN201511000568A CN106919833A CN 106919833 A CN106919833 A CN 106919833A CN 201511000568 A CN201511000568 A CN 201511000568A CN 106919833 A CN106919833 A CN 106919833A
- Authority
- CN
- China
- Prior art keywords
- random number
- program
- chip
- execution
- subprocess
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种安全芯片中防止功耗泄露的方法,包括:步骤1,假设在某程序中存在N个互不依赖的过程,所述N个过程的初始执行顺序是P[1]、P[2]……P[N];步骤2,获取一个随机数R;步骤3,通过随机数R给N个过程的先后执行顺序重新排序;步骤4,根据步骤3排好的顺序执行所有的过程。本发明在程序设计阶段进行整体规划,把程序执行划分成若干个互不依赖的过程;同时通过随机数打乱所有过程的执行顺序,使得攻击者不能准确地对故障注入点进行判断和分析,从而有效抵御侧信道攻击和故障注入攻击,提高芯片的安全性。本发明适用于所有涉及到安全领域的智能卡芯片或非智能卡芯片,特别适用于应用密码安全芯片的金融卡、交通卡等。
Description
技术领域
本发明涉及芯片中的安全执行领域,具体涉及一种芯片中执行指令流程时防止软件自身造成功耗泄露的方法。
背景技术
随着科技的快速发展,攻击者的攻击手段也日新月异,特别在安全芯片的程序执行整个过程中,攻击者可以在任意地方使用任意方法对芯片进行攻击,而在安全芯片的程序执行中,需要保证程序执行的安全性。在传统的程序设计中,几乎没有全局地考虑程序执行安全性的问题,只是在某些比较关键的局部做了一些防护和检测的动作。在传统的程序执行过程中,程序在开发完成后就已经形成固定的顺序,现假如程序有N个过程P[1]、P[2]……P[N],它们在程序中的排列顺序也是从1一直到N,那么在程序运行的时候始终都是先执行完过程P[1],再执行过程P[2],然后按顺序依次执行一直到过程P[N],此时完成程序的执行。如果在前述N个过程P[1]、P[2]……P[N]的执行过程中,其中某个过程是涉及敏感信息的,这时候传统方法才会采用安全的方法对涉及敏感信息的该过程进行重点保护。
事实上,在这个科技发达的年代,上述保护方法是远远不够的。首先,对涉及到敏感信息的某过程过于保护反而可能在无意间暴露该过程本身;其次,黑客未必按照常理出牌,它们往往不会直接攻击被保护得严严实实的地方,它山之石,可以攻玉,黑客往往通过其它过程的信息绕过被保护的某过程,从而达到攻击芯片的目的。
在实际的应用中,安全芯片所有涉及到安全信息的执行过程都有可能泄露敏感信息,黑客往往不去攻击重点保护的秘钥计算过程,而可能在程序一开始执行的时候就已经对系统进行攻击,导致芯片在运行时并没有按照预先设计的那样运行;或者,黑客可能会在多次执行后发现芯片的执行规律,从而获取了相关的芯片信息,继而利用该信息对芯片进行更多更深的分析。
发明内容
本发明所要解决的技术问题是提供一种安全芯片中防止功耗泄露的方法,可以提高芯片抵抗SCA(Side Channel Attack,即侧信道攻击)攻击和DFA(Differential FaultInjection Analysis,即故障注入分析)攻击的能力。
为解决上述技术问题,本发明提供的安全芯片中防止功耗泄露的方法,包括如下步骤:
步骤1,假设在某程序中存在N个互不依赖的过程P[1]、P[2]……P[N],所述N个过程的初始执行顺序是P[1]、P[2]……P[N];
步骤2,获取一个随机数R;
步骤3,通过所述随机数R给N个过程的先后执行顺序重新排序;
步骤4,根据步骤3排好的顺序执行所有的过程P[1],P[2]……P[N]。
步骤1中所述的N为大于或等于2的整数。
步骤1中所述的互不依赖的过程,包括在程序执行时没有先后顺序的所有过程,所述的过程包括函数、一段代码等任何形式的可执行的操作。
步骤2中所述的随机数,包括任意扰乱执行次序的随机数。
步骤3中所述的通过随机数R给N个过程的先后执行顺序排序,包括使用通过随机数R参与而制定的任何方法。
当程序中的任意过程P可继续分解成若干互不依赖的子过程时,按照步骤1至步骤4执行所述互不依赖的子过程,若子过程仍可继续分解,那么继续套用步骤1至步骤4的方法,直至所有子过程不可分解。
鉴于传统的编程方法在安全芯片中存在功耗泄露的问题,本发明提供了一种安全芯片中防止功耗泄露的方法,相对于传统的方法,该方法具有更强地抵抗SCA攻击和DFA攻击的能力。因此,特别适用于所有涉及到安全领域的安全芯片。
本发明的设计理念在于将程序执行过程化和模块化P[1]、P[2]……P[N];再根据随机数R而制定出一定的方法将程序中互不依赖的所有过程的执行顺序重新打乱;然后再按照打乱后的顺序执行程序中所有的过程。同时,本发明还可以根据过程的具体设计,将步骤1到步骤4运用于所有的过程内部,例如可将过程P[1]拆分成若干个互不依赖的子过程,然后通过随机数R通过另一种不相同的方法对P[1]的所有子过程排序,然后根据排序后的顺序执行子过程;子过程也可以依据此编程方法继续拆分成子程序,由此可循环下去,直到程序的所有过程再也不能拆分成子过程为止。
采用本发明的方法,当芯片执行中特别是在金融交易、敏感信息运算等高度保密的 执行过程中受到潜在SCA攻击和DFA攻击时,能够有效地抵抗故障攻击、侧信道分析和模板攻击。
本发明适用于所有安全领域的芯片软件应用中,特别适用于应用密码安全芯片的金融卡、交通卡等等。
附图说明
附图1是本发明的安全芯片中防止功耗泄露的方法的流程图。
具体实施方式
下面结合附图与具体实施方式对本发明作进一步详细的说明。
如图1所示,本发明提供的安全芯片中防止功耗泄露的方法,包括如下步骤:
步骤1,假设在某程序中存在N个互不依赖的过程P[1]、P[2]……P[N],所述N个过程的初始执行顺序是P[1]、P[2]……P[N];
步骤2,获取一个随机数R;
步骤3,通过所述随机数R给N个过程的先后执行顺序重新排序;
步骤4,根据步骤3排好的顺序执行所有的过程P[1],P[2]……P[N]。
其中,步骤1中所述的N为大于或等于2的整数。
其中,步骤1中所述的互不依赖的过程,包括在程序执行时没有先后顺序的所有过程,所述的过程包括函数、一段代码等任何形式的可执行的操作。
其中,步骤2中所述的随机数,包括任意扰乱执行次序的随机数。
其中,步骤3中所述的通过随机数R给N个过程的先后执行顺序排序,包括使用通过随机数R参与而制定的任何方法。
为了便于表述,在下面的实施例中假设某程序中有五个互不依赖的过程P[1]、P[2]、P[3]、P[4]和P[5],并且这五个过程都不可继续分解为任何子过程;获取随机数为R,通过随机数R设计一方法f(R),利用该方法f(R)能够打乱P[1]、P[2]、P[3]、P[4]和P[5]的执行顺序。
具体来说,以完成DES_CBC运算为例,在此实施例中,传统的方法如下:
第一步,装载数据;
第二步,装载秘钥;
第三步,装载IV向量;
第四步,配置芯片使其符合DES_CBC工作模式以及特性;
第五步,启动硬件执行DES_CBC运算。
而根据本发明,可以将该实施例设计包括如下过程:
过程1,P[1]:启动硬件扰动措施;
过程2,P[2]:启动软件扰动措施;
过程3,P[3]:装载数据;
过程4,P[4]:装载秘钥;
过程5,P[5]:装载IV向量;
过程6,P[6]:配置芯片使其符合DES_CBC工作模式以及特性;
过程7,P[7]:启动硬件执行DES_CBC运算。
通过分析可知,以上七个过程中仅有P[7]是必须最后执行的,也就是说P[7]跟其余六个过程有先后依赖关系的,所以这里不对P[7]进行随机执行,而P[1]到P[6]则是相互平行的过程,互不依赖,它们的执行时机对整个运算过程没有任何影响。所以接下来的步骤是设计一个以随机数参与的方法,使得每次执行DES_CBC的运算,过程P[1]到P[6]都是随机执行的。
接下来需要采用一个与随机数相关的方法,为了简易说明,这里以一简单方法作为示例:首先,生成一个符合国际标准的真随机数R;程序执行开始,首先判断真随机数R的最低比特是否为1,如果是1则执行过程P[1],同时在过程排队里去掉P[1],如果不是1则不执行过程P[1],在过程排队里不去掉P[1];然后真随机数R右移一位,接着判断真随机数R的最低比特是否为1,如果是1则执行过程P[2],同时在过程排队里去掉P[2],如果不是1则不执行过程P[2],在过程排队里不去掉P[2];然后真随机数R进行右移一位,如此重复,直到所有过程都全部执行完毕。
由于真随机数的0、1比特分配特性是以50%的1和50%的0出现的,那么若要完全地执行以上所有过程,所生成的真随机数比特长度需要是过程总数的3倍以上。
接下来,我们还发现,在过程P[1]到P[6]中,它们内部是可以继续细化成各自的子过程的。以装载数据P[3]为例,假设装载的数据是16个字节,并且假设系统按字节写,那么装载这16个字节的过程中,哪一个字节先装载和后装载对计算并无影响,所以可以把这个过程分成16个子过程,然后同样地再以本发明的方法对这16个子过程进 行随机执行。如此,其他的过程都可以这么去执行。
对于系统来说,在程序执行之前,需要统计所有随机的过程数和子过程数的总数,然后生成比特长度至少为该总数3倍的真随机数。
从上述的具体实施例中不难看出所有过程的执行时机完成取决于随机数的相应比特位是否为1。而随机数的比特位是否为1是随机的,所以所有过程在安全芯片中的执行时机也是随机的。同时每次启动程序,随机数都会进行更新,也就是说,程序也将会重新排列所有过程的执行顺序。
综上所述,本发明在芯片中安全执行程序时,由于加入了随机性因子,从而扰乱了所有过程执行的时机,使得攻击者进行DFA攻击试验时无法确定操作的执行时机,进行SPA(Simple Power Analysis,即简单功耗分析)攻击试验时也无法找到明显的功耗特征。与传统方法相比,本发明满足了抵御SCA、DFA、SPA等等攻击手段,安全性有了质的飞跃。
以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员可对通过随机数打乱执行顺序的方法等做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (7)
1.一种安全芯片中防止功耗泄露的方法,其特征在于,包括如下步骤:
步骤1,假设在某程序中存在N个互不依赖的过程P[1]、P[2]……P[N],所述N个过程的初始执行顺序是P[1]、P[2]……P[N];
步骤2,获取一个随机数R;
步骤3,通过所述随机数R给N个过程的先后执行顺序重新排序;
步骤4,根据步骤3排好的顺序执行所有的过程P[1],P[2]……P[N]。
2.如权利要求1所述的方法,其特征在于:步骤1中所述的N为大于或等于2的整数。
3.如权利要求1所述的方法,其特征在于:步骤1中所述的互不依赖的过程,包括在程序执行时没有先后顺序的所有过程,所述过程包括任何形式的可执行的操作。
4.如权利要求3所述的方法,其特征在于,所述的过程为函数或一段代码。
5.如权利要求1所述的方法,其特征在于:步骤2中所述的随机数,包括任意扰乱执行次序的随机数。
6.如权利要求1所述的方法,其特征在于:步骤3中所述的通过随机数R给N个过程的先后执行顺序排序,包括使用通过随机数R参与而制定的任何方法。
7.如权利要求1所述的方法,其特征在于:当程序中的任意过程P可继续分解成若干互不依赖的子过程时,按照步骤1至步骤4执行所述互不依赖的子过程,若子过程仍可继续分解,那么继续套用步骤1至步骤4的方法,直至所有子过程不可分解。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511000568.4A CN106919833A (zh) | 2015-12-28 | 2015-12-28 | 安全芯片中防止功耗泄露的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511000568.4A CN106919833A (zh) | 2015-12-28 | 2015-12-28 | 安全芯片中防止功耗泄露的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106919833A true CN106919833A (zh) | 2017-07-04 |
Family
ID=59456401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511000568.4A Pending CN106919833A (zh) | 2015-12-28 | 2015-12-28 | 安全芯片中防止功耗泄露的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106919833A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108875415A (zh) * | 2018-06-28 | 2018-11-23 | 福建超瑞创原信息技术有限公司 | 一种随机检测的安全方法及装置 |
WO2021046978A1 (zh) * | 2019-09-12 | 2021-03-18 | 华中科技大学 | 一种抗简单功耗分析攻击的高斯采样电路 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1714328A (zh) * | 2002-11-22 | 2005-12-28 | 皇家飞利浦电子股份有限公司 | 微控制器和用于处理微控制器编程的相关方法 |
CN101689232A (zh) * | 2007-06-29 | 2010-03-31 | 艾利森电话股份有限公司 | 对计算机程序代码的执行轨迹进行模糊化 |
WO2012085482A1 (fr) * | 2010-12-24 | 2012-06-28 | Morpho | Protection des applets contre les analyses par canaux caches |
CN104657680A (zh) * | 2013-11-20 | 2015-05-27 | 上海华虹集成电路有限责任公司 | 芯片中抵御模板攻击的数据传输方法 |
-
2015
- 2015-12-28 CN CN201511000568.4A patent/CN106919833A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1714328A (zh) * | 2002-11-22 | 2005-12-28 | 皇家飞利浦电子股份有限公司 | 微控制器和用于处理微控制器编程的相关方法 |
CN101689232A (zh) * | 2007-06-29 | 2010-03-31 | 艾利森电话股份有限公司 | 对计算机程序代码的执行轨迹进行模糊化 |
WO2012085482A1 (fr) * | 2010-12-24 | 2012-06-28 | Morpho | Protection des applets contre les analyses par canaux caches |
CN104657680A (zh) * | 2013-11-20 | 2015-05-27 | 上海华虹集成电路有限责任公司 | 芯片中抵御模板攻击的数据传输方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108875415A (zh) * | 2018-06-28 | 2018-11-23 | 福建超瑞创原信息技术有限公司 | 一种随机检测的安全方法及装置 |
WO2021046978A1 (zh) * | 2019-09-12 | 2021-03-18 | 华中科技大学 | 一种抗简单功耗分析攻击的高斯采样电路 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106096338B (zh) | 一种具有数据流混淆的虚拟化软件保护方法 | |
Liao et al. | Soliaudit: Smart contract vulnerability assessment based on machine learning and fuzz testing | |
Wu et al. | {KEPLER}: Facilitating control-flow hijacking primitive evaluation for Linux kernel vulnerabilities | |
Bilar | Opcodes as predictor for malware | |
Alrabaee et al. | Sigma: A semantic integrated graph matching approach for identifying reused functions in binary code | |
CN105787305B (zh) | 一种抵抗符号执行和污点分析的软件保护方法 | |
Agosta et al. | A code morphing methodology to automate power analysis countermeasures | |
JP7154365B2 (ja) | ソフトウェアコードをセキュアにするための方法 | |
CN105653905B (zh) | 一种基于api安全属性隐藏与攻击威胁监控的软件保护方法 | |
CN102722672B (zh) | 一种检测运行环境真实性的方法及装置 | |
CN103413075A (zh) | 一种通过虚拟机保护java可执行程序的方法及设备 | |
CN103413073A (zh) | 一种保护java可执行程序的方法及设备 | |
CN103903043B (zh) | 一种智能卡三位一体抗侧信道攻击防护方法和系统 | |
CN105045715B (zh) | 基于编程模式和模式匹配的漏洞聚类方法 | |
Angelini et al. | Ropmate: Visually assisting the creation of rop-based exploits | |
Tofighi-Shirazi et al. | Dose: Deobfuscation based on semantic equivalence | |
Lounis | Stochastic-based semantics of attack-defense trees for security assessment | |
CN106919833A (zh) | 安全芯片中防止功耗泄露的方法 | |
Yang et al. | How secure is split manufacturing in preventing hardware trojan? | |
CN105956425B (zh) | 一种基于smali代码混淆的Android应用保护方法 | |
Salmani | Gradual-N-Justification (GNJ) to reduce false-positive hardware Trojan detection in gate-level Netlist | |
CN105653908A (zh) | 一种隐式反调试保护方法 | |
Deng et al. | A Pattern‐Based Software Testing Framework for Exploitability Evaluation of Metadata Corruption Vulnerabilities | |
Kibria et al. | FSMx-Ultra: Finite State Machine Extraction from Gate-Level Netlist for Security Assessment | |
US20050055563A1 (en) | Device and method for generating an operation code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170704 |
|
WD01 | Invention patent application deemed withdrawn after publication |