智能卡攻击技术与安全策略的研究
0 引言
近年来智能卡市场呈现出以几何级数增长的态势,智能卡以其特有的安全可靠性,被广泛应用于从单个器件到大型复杂系统的安全解决方案。然而随着智能卡的日益普及,针对智能卡安全漏洞的专用攻击技术也在同步发展。分析智能卡面临的安全攻击,研究相应的防御措施,对于保证整个智能卡应用系统的安全性有重大的意义。本文首先分析了目前主要的智能卡攻击技术,并有针对性地提出相应的安全设计策略。
1 智能卡的软硬件结构
智能卡是将具有存储、加密及数据处理能力的集成电路芯片镶嵌于塑料基片上制成的卡片,其硬件主要由微处理器和存储器两部分构成,加上固化于卡中的智能卡操作系统(COS)及应用软件,一张智能卡即构成了一台便携和抗损的微型计算机。
智能卡的硬件构成包括:CPU、存储器(含RAM、ROM 和EEPROM 等)、卡与读写终端通讯的I/O 接口以及测试与安全逻辑,如图1 所示。作为芯片核心的微处理器多采用8 位字长的CPU(更高位的CPU 也正在开始应用),负责完成所有运算和数据交换功能。卡内的存储器容量一般都不是很大,其中,ROM 中固化的是操作系统代码及自测程序,其容量取决于所采用的微处理器,典型值为32 KB;RAM 用于存放临时数据或中间数据,例如短期密码、临时变量和堆栈数据等,容量通常不超过1 KB;EEPROM 中则存储了智能卡的各种应用信息,如加密数据和应用文件等,有时还包括部分COS 代码,容量通常介于2 KB 到32 KB 之间,这部分存储资源可供用户开发利用。
智能卡操作系统COS 的主要功能是控制智能卡和外界的信息交换,管理智能卡内的存储器并在卡内部完成各种命令的处理。卡中的数据以树型文件结构的形式组织存放。卡与终端之间通过命令响应对的形式交换信息。
CPU 与COS 的存在使智能卡能够方便地采用PIN 校验、加密技术及认证技术等来强化智能卡的安全性,但这并不意味着智能卡是绝对安全的。在智能卡的设计阶段、生产环境、生产流程及使用过程中会遇到各种潜在的威胁。攻击者可能采取各种探测方法以获取硬件安全机制、访问控制机制、鉴别机制、数据保护系统、存储体分区、密码模块程序的设计细节
以及初始化数据、私有数据、口令或密码密钥等敏感数据,并可能通过修改智能卡上重要安全数据的方法,非法获得对智能卡的使用权。这些攻击对智能卡的安全构成很大威胁。
2 智能卡攻击技术分析
对智能卡的攻击可分3 种基本类型:逻辑攻击、物理攻击和边频攻击。下面就这3 种攻击技术的具体实施方式加以分析。
2.1 逻辑攻击技术分析
逻辑攻击的主要方法是对处理器的通信接口进行分析,以期发现智能卡协议、密码算法及其实现过程中所潜藏的逻辑缺陷,包括潜藏未用的命令、不良参数与缓冲器溢出、文件存取漏洞、恶意进程、通信协议和加密协议的设计与执行过程等。逻辑攻击者在软件的执行过程中插入窃听程序,利用这些缺陷诱骗卡泄露机密数据或允许非期望的数据修改。从所需的设备来看,逻辑攻击的成本可以说是相当低的,攻击者只需具备智能卡、读写器和PC 机即可。其另一优点在于非入侵式的攻击模式以及可轻松地复制。
2.2 物理攻击技术分析
虽然智能卡的所有功能似乎都封闭在单个的芯片中,然而仍然有可能对其实施反向工程。用于实施物理攻击的主要方法包括:
(1)微探针技术:攻击者通常使用发烟硝酸去除包裹裸片的环氧树脂;用丙酮/去离子水/异丙醇完成清洗;氢氟酸超声浴进一步去除芯片的各层金属。在去除芯片封装之后,通过金丝键合恢复芯片功能焊盘与外界的电气连接,最后可以使用亚微米级微探针获取感兴趣的信号,从而分析出智能卡的有关设计信息和存储结构,甚至直接读取出存储器的信息进行分析。
(2)版图重构:利用高倍光学及射电显微镜研究电路的连接模式,跟踪金属连线穿越可见模块(如ROM、RAM、EEPROM、ALU、指令译码器等)的边界,可以迅速识别芯片上的一些基本结构,如数据线和地址线。
(3)聚离子束(FIB)技术:采用镓粒子束攻击芯片表面,在不破坏芯片表面电路结构的情况下,用含有不同气体的粒子束,可在芯片上沉积出导线、绝缘体甚至半导体。采用这种方法可重新连接测试电路的熔断丝,或将多层芯片中深藏在内部的信号连到芯片的表面,或加粗加强过于纤细脆弱无法置放探针的导线,从而形成一个新的“探针台”。技术人员可利用激光干涉仪工作台观察芯片单个晶体的微细结构以及其它的电路结构。
物理攻击是实现成功探测的强有力手段,但其缺点在于入侵式的攻击模式,同时需要昂贵的高端实验室设备和专门的探测技术。
2.3 边频攻击技术分析
边频攻击是通过观察电路中的某些物理量如能量消耗、电磁辐射、时间等的变化规律来分析智能卡的加密数据;或通过干扰电路中的某些物理量如电压、电磁辐射、温度、光和X射线、频率等来操纵智能卡的行为。边频攻击方法主要包括以下两种方式:
(1)差分能量分析(differential power analysis,DPA)差分能量分析(DPA)攻击是通过用示波镜检测电子器件的能量消耗来获知其行为。攻击者只需知道算法的明文(输入)或密文(输出),通过分析和比较一系列的能量轨迹就可重现加密密钥。
DPA攻击的基础是假设被处理的数据与能量消耗之间存在某种联系,换句话说,假设处理0 比1 所用的能量要少(反之亦然),那么对两个不同数据执行同一算法的两个能量轨迹会由于输入数据的不同而产生微小的差别。用计算机严格按时钟计算两条轨迹的差得到差分轨迹,差分轨迹中出现峰值的时刻即是输入数据产生差别的时钟周期。如此检查加密算法的所有输入以及每一对0 和1 产生的差分轨迹,就可以识别出它们出现在程序代码中的确切时间,从而获取加密密钥。
(2)能量短脉冲干扰
微处理器要求在稳定的电压下工作,能量供应的中断就好像突然冲击程序运行或复位电路。然而,一个短而巧妙的脉冲可以引起单步的程序错误而微处理器仍能继续执行程序。例如,CPU读取存储单元的内容,三极管用一个阈值来检测存储单元的值以确定所读的是逻辑0 或1。突然出现的能量短脉冲对存储值和逻辑值都会产生影响。如图2 所示,与逻辑0对应的低电平在正常的操作状态下可能低于阈值电平,然而由于短脉冲的能量下压可能导致其高于阈值电平。许多加密算法都易受这一类故障注入的影响。采用差分故障分析(differentialfault analysis,DFA)技术将正确的与错误的密码编码相比较从而析出秘藏的密钥。
短脉冲干扰的第2 种攻击方式是将PIN 校验失败转为成功以欺骗处理器。更为严格的一种方式是在处理器正要将校验失败写入存储器时完全关闭电源,从而避免PIN 校验失败计数器溢出。
短脉冲干扰的第3种应用是攻击发送限制计数器,从而导致整个存储器内容输出到串行接口。
3 智能卡的安全设计策略
某些信息安全系统采用了智能卡来提高系统的安全性却无视其弱点,导致系统安全解决方案有着其自身的安全漏洞,甚至于更不安全。针对上述智能卡攻击技术,本节为设计者提供相应的安全设计策略。
3.1 逻辑攻击的安全设计策略
系统对逻辑攻击的敏感性很大程度上取决于软件的复杂程度,然而窃听程序的数目也会随着程序代码的增加而增长。对付窃听程序以及软件缺陷的安全策略包括:①结构化设计:以小的功能模块构建软件,使程序易于理解和校验;②正规的校验:使用数学模型来检验功能;③测试:对软件的运行进行。
在智能卡领域,接口与应用的标准化、应用Java卡操作系统以及评估实验室的普及已成为几大趋势。即便如此,智能卡仍远未能对逻辑攻击免疫,软件复杂程度的提高总是会带来引入新漏洞的危险。
3.2 物理攻击的安全设计策略
仅在数年前智能卡芯片是使用常规芯片制造中的“退役设备”来生产的,这是因为芯片的功能要求低,相应价格也低。今天智能卡市场的巨大增长及功能复杂程度的迅速提高使得厂商能够负担先进的设备和精细的设计。应对物理攻击的关键在于提高芯片设计的复杂程度和芯片制造的精细程度,具体措施包括:
(1)减小形体尺寸:过去5 年来芯片上的晶体管与导线已由1 m 降至小于200 nm,这么小的尺寸已无法使用光学显微镜来分析,也使放置探针变得极为困难,但高倍显微镜与FIB技术仍能得手。
(2)多层电路设计:不仅是增加电路的层数,而且将包含敏感数据线的层(掩埋层)隐藏在较不敏感的层之下,使微探针技术的使用受到一定限制。
(3)顶层的传感器保护网:在芯片的表面加上一层格状的带有保护信号的激活网络,当入侵行为发生时,该信号中断,使内存的内容清零。这种技术能够有效地防止激光切割及探针类的探测技术。然而技术娴熟的入侵高手仍可绕过传感器保护网探测被保护层。因此增强型的传感器保护网使用大量表面上无关且频繁变化的信号,这将大大降低FIB 技术探测内部电路层的成功率。
(4)锁存电路:在智能卡的处理器中设置锁存位。当出现异常情况,如温度、压力、电压、电流等出现不安全的情况并对芯片内的敏感数据产生威胁时,它会发出解锁电平,同时立即清除芯片中的敏感数据。注意此项功能的设置与用户所采用的安全策略有关,否则容易引起用户不满。
(5)随机多线程:设计多线程处理器结构,由硬件控制处理器,在每一个指令组随机有N 个或多个线程在执行。这样的处理器由多组寄存器、程序计数器、指令寄存器等组成,组合逻辑采取随机改变的方式。
(6)自毁技术:在芯片的最外层沉积一层薄薄的金属膜,并在其上可加5 V 的电压,然后在最外面用塑料封装起来。这样,芯片就好像穿了一层导电的衣服。当攻击者用精密机械探针插入芯片内企图探测里面的密码时,将会引起短路从而烧毁芯片。
3.3 边频攻击的安全设计策略
近年来,新兴的边频攻击技术因其非入侵式的攻击模式及较高的收益成本比而大行其道。尽管智能卡业界对于边频攻击的解决方案已有了越来越多的认识,然而许多智能卡对于这类攻击仍毫无免疫力。应对边频攻击的安全策略基本分为3 个层面:硬件、软件和应用层面。
3.3.1 硬件级的反措施
(1)采用平衡电路降低信号能量以及设置金属防护以抑制电磁发射。
(2)执行并行随机处理来加大幅值噪声水平。例如,内部编程电压产生电路可用作并行噪声发生器。
(3)随处理中断引入时间噪声和不同的时钟频率。对差分轨迹进行计算机处理的基础是轨迹可排列。在加入轨迹之前处理器的工作步骤应是同步的。时间噪声会防止或至少妨碍轨迹很好地排列。
(4)严格的电压、频率和温度检测以防止能量短脉冲干扰改变智能卡的环境。然而使用精确的传感器也会影响可靠性,并在某些终端中导致潜在的故障。
3.3.2 软件层面的反措施
(1)采用随机处理顺序来减少相关的信号。例如,算法中的平行置换(诸如DES 中的S-盒)可依随机的顺序来完成,置换的数目重新排序,则可将一次置换产生的信号分解。
(2)利用随机延时和改变路径来增加计时噪声。计时噪声会妨碍轨迹的排列,并降低差分轨迹的质量。
(3)消除密钥值及中间媒介值的时间依存性。
(4)用随机值来隐蔽中间媒介值。能量的泄露取决于一个数据中的位数。如果在实际数据上加上随机数据,处理完之后再减去,那么传递的路径将不会泄露有用的信息。不过,这种隐蔽将会导致传递函数的非线性性并产生错误的结果。因此,这些函数需要仔细地重新设计以补偿由随机数据引起的背离。
(5)通过检查关键的程序流向以及加密运算结果来实现故障监测。求两次运算结果并加以比较是检测结果有效性的方法之一,但若两次都注入同样的错误的则无法检测出来。因此最佳的方法是由结果反向运算求出其输入,并与原来的输入进行比较。
3.3.3 应用级的反措施
(1)重设计数器,用于限制攻击者试探的次数。连续3 次PIN 校验失败后自锁是防范差分能量分析的有效方法。
(2)限制加密算法中输入输出的控制和可见度。如果只能选择部分输入,或只有部分算法的结果返回,攻击者就无法完成差分能量分析。
4 结束语
智能卡应用系统是一个安全环境很复杂的系统,智能卡攻击方法的有效性以攻击者所获得的效益高于其耗费的时间、精力、经费等作为标准,防范措施的技巧多在于增加攻击成功的难度和成本。然而这些防范措施将增加设计的复杂程度和成本。因此在具体应用时必须根据系统所要求的安全级别,来探索在降低安全威胁与增加安全成本之间寻找最佳平衡点的安全设计策略。
(文/深圳职业技术学院电子信息工程学院,毛丰江, 温希东)