软件就是指带MPU的智能IC卡中所实现的IC卡系统监控程序或IC卡操作系统,而IC卡操作系统则更为完善、复杂。
智能IC卡的硬件主要由微处理器(目前多为8位MPU)、程序存储器(ROM)、临时工作存储器(RAM)、用户存储器(目前多为EEPROM)、输入输出接口、安全逻辑及加密解密运算协处理器等组成,见图2-1。由图可见,智能IC卡的硬件就是一个小型的微处理器系统,只是在安全方面有更多的设计而已;而软件棗系统监控程序或操作系统则是智能IC卡实现其安全性的关键。
<img src=Image8.gif>
智能IC卡内部硬件组成示意图
一个典型的操作系统可以按OSI模型分成物理层(1层)、数据传输层(数据、链路层/2层)、应用协议层(应用层/7层)三层。每一层由一个或几个相应的功能模块予以实施。其典型结构见下图。
<img src=Image9.gif> IC卡操作系统的典型模块结构
其中,IFD为IC卡接口设备(IC Card Interface Device),即IC卡读写设备;ICC为IC卡(IC Card)。在IFD和ICC之间的信息交换是命令棗响应顺序结构。大多数情况下以IFD或应用终端( PC,Workstation,Server,etc)作为宿主机,它将产生命令及执行顺序。而ICC则响应宿主机的不同命令,典型的传输结构见下图:
<img src=Image10.gif>
IFD和ICC之间的典型传输结构
这样,在IFD和ICC之间传输信息的安全性必须得以保障,否则完全有被截取的可能性。IC卡操作系统对此采取了加密或隐含传输的方法,就是将待传送的命令或响应回答序列进行加密处理之后再进行传输。
同时,一个较完善的IC卡操作系统必须能够管理一个或多个相互独立的应用。它应能为有关应用提供相应的应用管理、传输管理、文件管理、安全管理等功能。不同功能之间的逻辑关系见图2-4。图中安全管理功能可由用户根据情况取舍。下面以接口设备(IFD)向IC卡(ICC)发送一命令说明其工作过程,首先传输管理模块对物理层上传输的信号进行解码并将其传递给安全管理模块;若为加密传输则该模块对其进行解密并将解密后的命令传输给应用管理模块,若不是加密传输则该模块将其直接传递给应用管理模块;应用管理模块根据预先的设计要求,检查此命令的合法性以及是否具备执行条件(与应用顺序控制有关),若检查通过则启动执行此命令;如果此命令涉及到有关信息存取,则文件管理模块检查其是否满足预先设计的存取条件,若条件满足则执行有关数据存取操作。在整个过程中,若任何一次检查失败将立即了退出并给出响应信息。响应工作过程反之亦然。
智能IC卡不同功能之间的逻辑关系
在智能IC卡中,每个应用可以具有一个个人识别码(PIN),也可以几个应用共用一个识别码,而且密码宽度更宽,密码空间更大,密码管理也更为严格。用户可以自行定义个人识别码错误输入的有效次数,为安全起见,同时也可以定义解锁密码,即一旦持卡人将个人识别码忘记而卡被锁住后,利用解锁密码(PUC)也可以将卡打开,从而具有更高的实用性和安全性。
在智能IC卡中,还特别提出了认证(Authentication)的概念,即ICC和IFD之间只有相互认证之后才能进行如数据的读、写等具体操作。认证主要用于防止伪造IC卡及有关应用终端。
认证有以下三种工作方式。
内部认证
应用终端阅读卡中的固定数据,然后导算出认证密钥。终端产生随机数并送给卡,并指定下一步应用的密钥。卡用指定密钥对该随机数进行加密,然后将经过加密的随机数送回终端。终端对该随机数进行解密,比较是否一致,若一致则内部认证成功。其具体工作过程见图。
<img src=Image11.gif>
内部认证流程图
外部认证
终端设备从IC卡中读取卡数据并导算出认证密钥。因为IC卡本身不能发送此数据,这一认证方法由终端设备控制。终端设备从IC卡中取得一随机数(通常为8字节),用认证密钥对它进行加密并且将它发送到IC卡。IC卡对这个加密值进行检查比较,见图。
<img src=Image12.gif>
外部认证流程图
相互认证
终端设备从IC卡中读取数据并导算出认证密钥。终端设备从IC卡中取得一随机数(通常为8字节)并产生它自己的随机数(通常为8字节)。这两个随机数和卡数据(连接成一个串)由认证密钥进行加密。终端设备将此加密值传送到IC卡。IC卡用终端设备指定的认证密钥对此加密值进行解密并比较。成功比较之后,IC卡用认证密钥加密终端设备的随机数和它自己的随机数,并将此加密值发送回终端设备。终端设备解密这个加密值并和它自己的随机数进行比较,见图。
<img src=Image13.gif>
相互认证流程图
从以上三种认证工作方式可以看出,加密、解密密钥只存在于IC卡和有关应用终端的内部,一旦形成决不外露。因此,密钥十分安全。每次认证以随机数为媒介,每 次认证数据均为不相同(相同概率很小),因而破译难度十分大。所以,这种工作方式具有更高的安全性。其中,加密、解密算法一般采用国际通用的DES或RSA算法。这两种算法均具有很高的安全性,将在下一节作详细的介绍。
IC卡操作系统所提供的安全功能主要有以下几种:
用户和IC卡系统的相互验证;
软硬件测试功能;
应用顺序控制和管理;
安全传输管理;
个人身份识别管理;
密钥管理;
随机数的产生及传输;
加密、解密等
<img src=Image14.gif>
(有关智能IC卡操作系统的内容将在下面章节中详细介绍。)
以上三种方法从不同层次、不同角度对IC卡进行全面的技术保护,从而使其具有很高的安全性,使非法伪造与使用几乎不可能。
以IC卡所有的以上三个层次的安全技术进行汇总,见图8。
不同功能、不同应用的IC卡,可依据所要求的安全性采用以下三种层次安全技术中相应的技术。其采取不同技术的原则是:第一,使最终应用的IC卡具有较高的性能价格比;第二,伪造的费用等远大于从中获得的效益。