应对智能卡硬件攻击的软件方法
智能卡技术的发明与应用是计算机技术的一项重大革命,它作为个人身份标识和安全信息载体被广泛地应用于金融、医疗、交通、电信等多个领域,深层次地影响:蕾人们的生产生活。单张智能卡要保护的资产价值可能不高,但整个智能卡领域涉及到的资产可能数额巨大;攻击者攻破单张卡的获利与其付出的努力可能无法相比,但是成功攻破之后所获得的经验可能使得对同类卡的攻击变得容易,随后的累计获利将十分巨大。因此,近年来针对智能卡的硬件攻击技术不断得到发展,同时由于相对于其它昂贵的信息技术产品来说,智能卡价格低廉,通常在几十到几百元人民币之间,所以攻击者只需花费很少的代价就可以获得多个智能卡来进行攻击性试验。因此,智能卡所面临的安全威胁越来越严峻,然而为保护智能卡而实施的硬件安全加固又较为昂贵,找到一种低廉而又有效的智能卡安全防护技术显得尤为重要。
2 智能卡常见硬件攻击方法
针对智能卡的硬件攻击方法有很多,按照攻击行为有无入侵智能卡硬件可以分为两大类:主动攻击和被动攻击。
2.1主动攻击
针对智能卡常见的主动攻击行为有硬件分解、电磁干扰、永续变异等,它们的一个共同特点就是使用一定的工具,如蚀刻工具、光学显微镜、探针台、激光切割机、扫描电子显微镜、聚焦离子束等,对智能卡的完整性均会造成不同程度的破坏。中介绍了一些其他的方便易行的攻击技术。按照攻击的时机不同,主动攻击又可以分为两类。一类是静态情况下获取卡内存储体内的数据和代码,一类是动态运行情况下,攻破或者绕过智能卡的安全机制以获取敏感信息。
2.2被动攻击
同主动攻击不同,利用被动攻击摄取智能卡信息时就没有那么直接和精确了,但是它对智能卡的影响是可逆的。而且,被动攻击的种类不仅仅局限在硬件攻击一个方面.而是广泛地存在于对通讯、接口、COS等多个方面的攻击之中。
2.2.1信息泄露模型
最基本的被动攻击方法就是观测法。观测法是基于程序或者密码算法在执行过程中的信息泄漏模型而来的,如图1所示。
图1 信息泄露模型
观测的对象可以是一定时间段内电能的消耗、电压的起伏,也可以是电磁辐射强度的变化等信息,进而分析它们与时间的函数,找出其中的规律。根据观测对象和角度的不同,大致可以分为以下几种攻击类型:
2.2.2功率分析
1998年6月,Kocher等三人提出了功率分析的攻击方法,即根据已知操作确定的功率值.直接分析密码算法运行时所记 录到的功率数据。常见的有简单功率分析(SPA)~1 率差分攻击(DSA)。通过分析功率消耗信号得到处理器正在处理数据的汉明重量信息,利用这些信息可以构造出数据中的等价关系,进而有可能破译出密码。
2.2.3电磁辐射分析
作为电子设备,计算机的组件在操作时常常会产生电磁辐射。攻击者如果可以检测到电磁辐射并且找到它们与底层计算和数据之间的关系,就可能获得和这些计算和数据有关的相当多的信息。同功率分析相似,电磁辐射辐射攻击fEMA1也可以分成两大类:简单电磁辐射分析(SEMA)~ 分电磁辐射分析(DEMA)。
2.2.4耗时信息分析
由于性能优化、分支和条件语句、RAM缓存的命中率或者处理器指令执行时问的不固定等诸多原因,对于不同的输入,一个加密系统所耗费的时问会有略微的不同。耗时信息攻击就是是基于对加密系统基本运算单元操作时间的测量而进行的。这可能会导致与密钥相关的信息的泄露。比如:通过精心测量完成私钥导人操作所需的时问.攻击者可以找到Diffie—Hell—man密钥交换协议中同定的参数或者RSA算法中的密钥因子,进而破译其他的密码系统,给出了一个对RC5算法的耗时信息攻击的实例。
3 基于软件的应对策略
针对这些硬件攻击手段.通常的防护措施是采用增加防护层、设置安全传感器、芯片混乱布线、内存总线加密,内存访问 控制等硬件的防护手段。但是硬件防护手段具有成本高、灵活性差的缺点.法国学者Xavier Leroy提出了一种使用软件方法来防范硬件攻击的思想.并从编程语言和静态分析的角度进行了研究。我们将这种思想称为“软件防御”,根据这一思想,本文进一步提出了几种在智能卡嵌入式软件设计中针对硬件攻击的具体的策略和方法。
3.1“软件防御”思想的基本内涵
Xavier Leroy在他的文章中指出:“使用软件方法应对硬件攻击的关键就是要看到一任何硬件攻击都不能随意改变硬件自身的运行方式”,这也是“软件防御”思想的基本内涵。
比如拿第3部分所列举出的各种类型的硬件攻击来说:主动攻击虽然具有准确高效的优点,但是却会对智能卡硬件造成不可逆转的损伤。这样就会很容易被智能卡中存在的安全传感器所发现,当然我们也可以采用软件的方法来检测,比如运行一个周期性自检的程序:被动攻击虽然不会对硬件造成不可逆转的影响,但是它对特定的敏感信息的影响是不精确的。比如使用聚焦离子束照射的方法可以在瞬问将卡上存储的数据变成全0或者是全1.但是却很将存储器上特定位置的数据改变为0或者1。
3.2“软件防御”的具体方法
3.2.1数据冗余
为防止硬件攻击行为修改智能卡存储体上的静态数据和程序代码,可以在存储数据f及程序代码1的时候增加一定长度的冗余数据,用来保证数据的完整性。一种简单的方法就是在每组数据的后面增加循环冗余码。如果对于数据完整性有着更加严格的要求,可以采用一个简单的哈希函数计算出每组数据的杂凑值。
通过数据冗余,还可以有效地防止主动攻击对智能卡内关键数据的修改(比如安全位、指令下载控制位等),并且由于仅仅是对数据存储格式的变化,这种措施可以在不影响卡内原有程序结构的情况下,加固智能卡的安全性。
3.2.2控制冗余
针对对静态数据或者关键代码的篡改,我们可以通过数据冗余的方法进行有效的防御。但是,在程序的动态执行过程中,数据冗余策略就无能为力了,因此还必须增加程序执行时控制的冗余。控制冗余的主要思想就是在包含有关键代码的函数中 添加多重控制, 以最大程度上保证程序执行是处于完全安全、可信的环境之中。比如,设置多个状态位,在程序的执行过程中不断检查这些状态位的状态,如果有一个发生了改变,程序马上退出执行。
3.2.3执行冗余
不同于主动攻击,智能卡被动攻击利用了卡内程序(密码算法1在执行过程中的信息泄露模型.不会对智能卡产生任何不可 逆的破坏.因此针对智能卡的被动攻击也必须从智能卡的信息泄露模型着手。
为了便于理解,我们假设卡内程序f密码算法1中有两段独立的f逻辑上没有继承关系、时问上没有先后关系1代码段C1和C2,代码段可以是不同层次的,既可以是大到独立的功能函数,也可以是简单的0和1。不难理解,正是由于C1和C2的差异,最终导致了程序执行过程中各种信息的产生。为了避免信息的泄露,最根本的方法就是尽可能地减少这类信息的产生。文献介绍了在编码层次减少信息产生的方法。本文给出了在程序功能函数这一级减少信息泄露的一种简单却又有效的方法一执行冗余。
对于上文所述两段独立的功能函数C1、C2,我们在编写程序时就可以设计一个这样的随机函数发生器Random0。它的输出是等概率分布的O和1。这时我们的代码就可以这样改造:
当然.这只是这一思想的一个简单的实现。如果是多个功能函数.我们就要适当改造我们的随机数发生器和条件判断结
构,如果程序中不存在这样的独立的功能函数,那么我们还需要对同一个功能构造多个不同但是等价的实现。
总之.软件防御的具体方法都是针对智能卡硬件安全的具体薄弱环节,采用数据冗余、控制冗余或者执行冗余的方法,有 针对性地进行安全加固。由于是软件的方法进行实现,同硬件安全加固相比,只需要简单的对代码进行修改,非常经济高效。
4 结束语
上面所讲述的软件防御技术虽然实现起来比较简单,但是往往需要在整个系统设计过程中集中规划才能对程序执行进
行足够的控制进而有效的抵抗各种硬件攻击行为。而且无论是数据冗余、控制冗余还是执行冗余都会给系统功能的实现增加 一定程度的负担,下一步的工作可以考虑通过综合运用现代程序设计技巧来减少这些开销。
本文作者创新点:总结出了一种智能卡的信息泄漏模型:基于“软件防御”思想,提出了几种抵抗智能卡硬件安全威胁的低开销、高效率的软件防御措施和方法。
[1] Oliver K0mmerling and Markus Kuhn. Design Principles for Tamper-Resistant Smartcard Pmcessom. Chicago: Proceedings of USENIX Workshop on Smartcard Technology,1999:9-20.
[2]Thomas S.Messerges,Ezzy A.Dabbish,Robert H_Sloan.Eamining Smart-Card Security under the Threat of Power Analysi6 Attacks.IEEE Transactions on Computers,2002,(51):541—552.
[3]Paul Kocher,Joshua Jafe and Benjamin Jun.Introduction t!DDiferential Power Analysis an d Related Attacks. http’.//www.eryptography.com/dpa/technica1.
[4]Xavier keroy.Computer security from a programming languagean d static analysis perspective.http://pauillac.inria.fr/~xlemy/publL
[5] Ross Anderson, Markus Kuhn. Low Cost Attacks on Taml~?Resistan t Devices. Springer—Verlag :5th International Workshop,LNCS,1997(1361):125-136.
[6]Helena Handschuh,Howard M.Heys.A Timing Attack on RC5.http://www.engr.man.ca/-howard/PAPERS.2004
[7] Simon Moore,Ross Anderson,Robert Mullins.Balanced SeIf-Checking Asynchronous Logic for Smart Card Applications.http://WWW.c1.cam.ac.uk/-swml 1/research/papers.2002
[8]曹宁,冯晔.智能卡的安全和应用.微计算机信息.
作者简介:
陈士超(1982.10一),男(汉族),河南商丘人,解放军信息工程大学硕士研究生,现主要从事公钥基础设施、智能卡系统研究;
徐开勇(1963.4一),男(汉族),河南罗山人,解放军信息工程大学硕士生导师,研究员,现主要从事军队信息安全系统设计、公钥基础设施研究;
陈光(1978.6一),男(汉族),河南驻马店人,硕士,讲师,现主要从事公钥基础设施、智能卡系统研究;
李福林(1980.2一),男(汉族),河北承德人,硕士,助教,现主要从事公钥基础设施、网络信息安全研究。