IC卡是从磁条卡发展而来,它是将一个集成电路芯片封装在一个卡片中。与磁条卡相比,IC卡可靠性好,存储容量大,而且具有一定的“智能”。
IC卡大致分为存储器卡与“智能”卡两个最常用的大类,存储器卡是将一个EEPROM存储器芯片封装在卡片中,使卡片具有“记忆”功能。信息可以“写入(存)”卡内或从卡内“读出(取)”,原则上存取过程是不受限制的,整个存储空间也是开放的,对存储空间的管理是在卡片外部进行,这使得存储器卡缺乏良好的安全性。
之后存储器卡有了一些改进,主要是增加了密码验证功能对信息的存取过程进行控制,但仍然缺乏较好的存储管理功能。
而“智能”卡则不仅将EEPROM存储器封装进卡中,同时还将一个“微控制器(MCU:MicroController Unit)”集成到卡片中,这个MCU中具有对卡片上EEPROM存储器进行管理的一套软件,(这套软件通常被称为“卡片操作系统(COS:Card Operation System)”),从卡片外部发送数据到卡内都要经过MCU进行处理。也就是说,MCU及其搭载的软件(COS)控制着信息的存取过程,同时也管理着存储器的分配与使用。
综上所述,我们可以看出IC卡的实质是:信息的存取。而智能卡所谓的“智能”,就是对存取过程的“严格”控制与对存储器的“灵活”管理,目的是使存放在卡内的信息更安全且易于使用。
2、IC卡的相关规范
IC卡是一种很规范的产品,不论其外形,还是其内部芯片的电气特性,甚至于其应用方法都受一些较严格的协议控制。最基础最重要的一套规范是ISO/IEC 7816协议。这套协议不仅规定了IC卡的机械电气特性,而且还规定了IC卡(特别是智能卡)的应用方法(包括COS中很多数据结构)。
除了7816协议之外,在各个可能应用IC卡的特定领域内还有一些更为具体的协议,比如在中国,金融领域制定PBOC规范,交通管理体系,社会福利体系都有其特定的规范。这些协议规范都是建立在7816协议基础之上,且将7816协议加以具体化形成的。
当然,7816协议并不是独立存在(定义)的,它里面有很多概念引自于其它一些相关的协议规范。比如在7816协议中有一些数据的组织采用了“BER-TLV”,而有关“BER-TLV”这个概念的详细表述则是在IEC 8825 ASN.1协议中给出。由此可见7816协议并非完全独出心裁,能够采用规范的概念的场合就不自作主张。这使得各种协议规范形成一个严密的体系。
3、智能卡如何管理其存储器
一般的存储器卡不具备管理存储器的能力,这种管理要在卡外部进行。具有存储管理能力的卡只有“智能”卡。因此下面的讨论都是针对“智能”卡的。
简单的把存储器划分成一些块进行管理是最常用的一种办法,但此办法在实现的的时候不能过于简单,若要求用户记忆存储器中各个块的编号及属性未免太难于使用了。因此我们通常要在逻辑上更抽象的描述存储块。
试想在普通的桌面计算机上我们的大容量存储装置(硬盘之类)也是分块管理的,我们习惯称之为“按扇区方式”组织。但我们在通常使用过程中并不关心(不知道)“扇区”这样的概念,而只是看到一个个“文件”和“子目录”。所谓“文件”,其实就是保存在一系列存储块中的一组数据,而“子目录”就是将一组文件组织在一起的一种形式。“文件”与“子目录”使我们易于使用数据。
7816协议规定了智能卡采用“文件”的形式管理卡内存储器,它将卡内的文件分为3类:MF、DF和EF。
MF(Master File)相当于桌面系统中的“根目录”,DF(Dedicated File)相当于桌面系统中的“子目录”,而EF(Elementary File)则是一个个保存数据的具体文件了。
与桌面系统不同的是智能卡中DF级数(相当于目录层数的概念)通常是固定的,一般为1级(MF – DF),也有的为两级(MF – DF – SubDF)结构,但7816协议本身并不严格规定DF的级数。另外,7816协议对EF文件的类型有基本的定义,所以卡上的文件很多都是有一定格式的(如“定长记录”文件),并不是像桌面系统中的文件那样给出偏移量和长度就能操作的“透明”结构。
对于更高层的协议(如EMV、PBOC),对EF文件的类型有更具体的规定,这种规定往往为了适应本领域的应用。比如PBOC协议规定的“钱包文件”,就是为让智能卡适用于金融领域。但要注意这些具体的规定最终要“映射”到7816协议中的某个文件格式中。
4、智能卡如何对信息存取过程进行控制
对保存在卡中的文件不是随随便便就可以读出或修改的。每种智能卡都有一整套规则(也可理解为一个安全模型)限制对文件的存取操作。各个协议一般只规定了一个智能卡应该具备哪些算法(DES、3DES、RSA等),在一些特定领域里还会规定必须采用哪个算法才能保证安全。至于这些算法是以怎样的形式运用到安全模型中则没有过于严格的要求。
另外,卡与卡终端(能够对卡进行存取操作的设备)之间的通信在某些情况下要求是安全的,就是说信息在卡与卡终端之间传递时不应被第3方破解,也不应该失去其完整性。7816协议规定了“安全报文传递”规则,符合7816协议的智能卡都应支持这个规则。
有些卡(或对卡的某些操作)要求在特定的卡终端上进行,有时还要求持卡人授权进行,这些特殊情况要求卡与卡终端之间,卡与持卡人之间能够相互确认。卡与持卡人之间的认证是大家比较熟悉的,每个卡都有PIN码,就是做这个用的。