你好,欢迎访问达普芯片交易网!|  电话:010-82614113

智能卡防护基础:智能卡操作系统

发布时间:2008-11-21阅读:1237

  硬件的防护机制形成了操作系统软件防护机制的基础,没有可以疏漏的潜在的弱点。因为防护机制的这三 个部分:硬件、操作系统和应用是以逻辑“与”的关系连系起来的。可以用一个链条来比拟,其中最弱的一 环决定了打破的强度。如果在智能卡中某个特定的机制失效了,则整个安全性就瓦解了,尤其是作为实际应 用基础的操作系统,其信息与处理必须受到保护。

  以下将特别讨论防御典型攻击的保护方法,而不是一般的智能卡的安全功能。绝大多数的这类功能也对操 作的安全性和防御攻击有显著的贡献。因此,需要参阅第5章有关的各节。

  (1)防护:在复位之后对软件和硬件进行测试

  当操作系统被初始化后,至少应对硬件的最重要的部分进行测试,以了解它们是否处于正常工作状态,例 如对RAM的测试是绝对必要的,因为当芯片在运转时所有的访问条件都被存储在RAM中,而单独一位的失效就 有可能导致整个安全性崩溃。对ROM和EEPROM的最重要的部分进行校验和的计算与比较也同样是必需的。至 少CPU用传送ATR进行隐含测试,因为机器命令的大多数都必须无差错地执行才使得ATR的传送成为可能。对 CPU或任何可能存在的NPU通常限于抽样测试,因为对于正常的运作而完整测试所有功能将占用太多的时间和 代码。

  如果操作系统发现了一个硬仵或校验和的差错,这里有两种方式可继续下去。第1个选择是使软件立即跳 转到一个无尽循环中去,这意味着不可能送出ATR也不会接收后继的命令。这种做法的主要不利之处是不可 能从外部识别这种运转状态产生的原因。无法说明问题·是压焊引线开路,芯片破裂或是EEPROM中的校验和 错误。第2个选择比较好,即卡在本身切断或进入无尽循环之前能送出一个特殊的ATR,此错误的ATR至少向 外部给出一个关于智能卡内部发生了什么事情的指示。然而不可忽视的事实是发送这个表明出错的ATR需要 CPU的大量功能,RAM的少量字节和在ROM中的数百字节的程序代码。

  (2)防护:在操作系统中分开层次

  在各个层次之间定义的传送参数用来分开层次,这是智能卡操作系统稳定而坚固的标志。由于在操作系统内分开了层次,使得操作系统内可能存在的设计或编程差错都减少了。这当然不是说错误就不会发生,而其效果是错误不像在浓缩的编程代码的操作系统中那样大量,层次的分开使得在某层中出现的错误难以传播到其他层次之中。

  (3)防护:控制数据传送

  另一个非常重要的安全因素是控制数据传送的过程以防止对存储器的非授权访问。对智能卡的整个来往通信都是经过被操作系统控制的I/0接口进行的,没有其他可能的访问形式。这体现了在智能卡中的一种有效的存储器保护方式,这样保证了操作系统始终保持着对存储区访问的有效控制。

  传输协议由传输管理程序控制,应能截留所有可能的不正确输入,必须没有靠操纵传送的字组来影响对数据传输处理的可能,防止在未经正当授权的情况下使数据从存储器传送到终端。

  (4)防护:重要存储内容的校验和

  文件的结构,特别是文件的头标(换言之即文件描述符),应能用校验和予以保护。使得操作系统至少有可能检测出任何存储在存储器中的数据的无意识的改变。对每个文件来说,面向对象的访问条件,就被存储在文件的这一部分中,出于这一原因此这种需求就特别重要了。

  对智能卡操作系统来说,EEPROM中的所有存储区都具有生死攸关的重要性,必须用差错检测码(EDC)予以保护,每当该区域被访问或其所含编码被调用执行时,必须在访问或编码执行被允许的处理之前对其内容的一致性进行验证。

  (5)防护:应用的密钥

  某些操作系统把含有应用及其文件的单独的DF加以密封,使得各个应用相互被隔离开。当然这仅仅是基于软件的保护,并没有芯片的硬件支持,因之保护的水平并不像它能达到的那么高。即使是这种用软件手段对应用的密封在出现一差错的情况下也有着极大的好处,因为在未经事先明确选择的情况下使得文件管理器不可能超出此DE的界限,结果是使文件中的存储器错误至少被限制在相关的Dl"之内。

  如果在硬件中存在着存储器管理单元MMU(Mem。ry Management Unit)对操作系统提供支持,不同的应用相互之间可完全被隔离。在这种情况下,即使能在一个应用中操纵软件也不可能获得对其他应用的存储区的未授权的访问。

  (6)防护:隐蔽操作系统的活动

  每当向EEPROM写入数据时,首先要把芯片中的电荷泵接通,这就增加了芯片的电流损耗,使用简单的测试设各能很容易测出来。对操作系统的设计必须考虑到这一事实,即完全有可能从外部来确定EEPROM写访问出现的时刻,智能卡的软件必须阻止攻击者从这一点取得好处的可能,参见图1。

  重要的是从测量卡所吸取的电流中不可能得出关于机器程序的处理和决策方面的任何结论,如果能利用这种测量去可靠地判断在命令执行完成并回送代码之前比较PIN的结果,则这种信息可以非常方便地用来分析PIN之值。

  (7)防护:面向对象的访问条件

  早期的智能卡应用总是基于两个中央管理的访问机制,中央访问控制器的不利之处是软件或存储器的差错能全面影响智能卡的安全。现代的面向对象的文件管理系统,访问条件存储在各个文件之中,有着存储器的差错只影响单个文件的好处,而所有其他文件的安全性则保持不变。对于所有的分布系统来说,这实际上是一个基本特性,它们的编程要困难些,但由于其自足性却能提供坚固得多的安全性去抵抗攻击或差错。


图1 当电荷泵被接通时,智能卡电流损耗变化的近似表述

  (8)使智能卡退出工作

  智能卡的操作系统应当能使智能卡安全地退出工作(去活化)。在智能卡生命期的最后阶段,通过搜索那些已经不再使用而功能仍归完整的智能卡,就能用统计方法对芯片运行的软件做出很精确的分析。因此,在操作系统中必须存在有能确切地使程序的所有部分完全退出工作,防[L电气的或进行运行时间分析的可能的机制。

  (9)攻击和防御:随机数发生器

  智能卡产生的随机数被用于鉴别单个的会话期,这就是说使每次会话惟一化并与所有在此之前和之后的会话区别开来。这样做的目的是使从先前会话中窃取的数据的连续重放成为不可能。另一种形式的攻击是使智能卡产生如此多的随机数,从而使它们的序列成为可猜测的。另外一种可能性是保持对智能卡随机数的不断请求直到随机数发生器的EEPROM存储器已不再正常工作,从而使同一个数一再地被产生出来。

  如果成功的话,任何这种攻击都能绕过智能卡对终端的鉴别。但只有第1代智能卡是这样工作的。对现代的操作系统,它们都会失败。今天所产生的随机数的周期长度是如此之大,使得同一个随机数在每个智能卡的生命周期中绝不会出现两次,产生很多的随机数除了引起EEPROM出现问题,也不会再有任何用处。为此,随机数的发生就干脆被封锁了,于是阻止了任何更进一步的鉴别。

  一个高质量的随机数发生器必须满足某些额外的需求,诸如产生不可预言的随机数以及有很长的周期长度(所产生的随机数的数量在发生器本身重复之前)。此外,在某一特定应用中的所有智能卡必须产生不同的随机数。这些看起来十分明显的事,而过去在这方面却重复地发生问题!这种不同的状态是在智能卡初始化或个人化时给伪随机数发生器送入一个起始值而达到的。这个起始值通常被称为籽数,暗示了一个生物的种籽决定了所长成的植物。

在线人工客服

点击这里给我发消息

点击这里给我发消息

点击这里给我发消息

010-82614113

客服在线时间周一至周五
9:00-17:30