摘 要: 智能卡的应用越来越广泛,针对智能卡的攻击手段越来越先进。本文首先分析了针对智能卡的几种常见硬件攻击的原理,根据“软件防御”思想,提出了几种具体的针对硬件攻击的软件的防御措施和方法,这些措施和方法具有低开销、高效率的特点。
1 引言
智能卡技术的发明与应用是计算机技术的一项重大革命,它作为个人身份标识和安全信息载体被广泛地应用于金融、医疗、交通、电信等多个领域,深层次地影响:蕾人们的生产生活。单张智能卡要保护的资产价值可能不高,但整个智能卡领域涉及到的资产可能数额巨大;攻击者攻破单张卡的获利与其付出的努力可能无法相比,但是成功攻破之后所获得的经验可能使得对同类卡的攻击变得容易,随后的累计获利将十分巨大。因此,近年来针对智能卡的硬件攻击技术不断得到发展,同时由于相对于其它昂贵的信息技术产品来说,智能卡价格低廉,通常在几十到几百元人民币之间,所以攻击者只需花费很少的代价就可以获得多个智能卡来进行攻击性试验。因此,智能卡所面临的安全威胁越来越严峻,然而为保护智能卡而实施的硬件安全加固又较为昂贵,找到一种低廉而又有效的智能卡安全防护技术显得尤为重要。
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的时候增加一定长度的冗余数据,用来保证数据的完整性。一种简单的方法就是在每组数据的后面增加循环冗余码。如果对于数据完整性有着更加严格的要求,可以采用一个简单的哈希函数计算出每组数据的杂凑值。
通过数据冗余,还可以有效地防止主动攻击对智能卡内关键数据的修改(比如安全位、指令下载控制位等),并且由于仅仅是对数据存储格式的变化,这种措施可以在不影响卡内原有程序结构的情况下,加固智能卡的安全性。
|