- COS(Chip Operating System片内操作系统)
- COS 出现背景
随着IC卡从简单的同步卡发展到异步卡,从简单的EPROM卡发展到内带微处理器的智能卡(又称CPU卡),对IC卡的各种要求越来越高。而卡本身所需要的各种管理工作也越来越复杂,因此就迫切地需要有一种工具来解决这一矛盾,而内部带有微处理器的智能卡的出现,使得这种工具的实现变成了现实。COS的出现不仅大大地改善了智能卡的交互界面,使智能卡的管理变得容易。
- COS概述
COS的全称是Chip Operating System(片内操作系统),它一般是紧紧围绕着它所服务的智能卡的特点而开发的。由于不可避免地受到了智能卡内微处理器芯片的性能及内存容量的影响,因此,COS在很大程度上不同于我们通常所能见到的微机上的操作系统(例如DOS、UNIX等)。
首先,COS是一个专用系统而不是通用系统。即:一种COS一般都只能应用于特定的某种(或者是某些)智能卡,不同卡内的COS一般是不相同的。因为COS一般都是根据某种智能卡的特点及其应用范围而特定设计开发的,尽管它们在所实际完成的功能上可能大部分都遵循着同一个国际标准。
COS的主要功能是控制智能卡同外界的信息交换,管理智能卡内的存储器并在卡内部完成各种命令的处理。其中,与外界进行信息交换是COS最基本的要求。在交换过程中,COS所遵循的信息交换协议目前包括两类:异步字符传输的T=0协议以及异步分组传输的T=l协议。
- COS 体系
所有的COS都必须能够解决至少三个问题,即:文件操作、鉴别与核实、安全机制。事实上,鉴别与核实和安全机制都属于智能卡的安全体系的范畴之中。但再具体地分析一下,则我们实际上可以把从读写设备(即接口设备IFD)发出命令到卡给出响应的一个完整过程划分为四个阶段,也可以说是四个功能模块:传送管理器(TM)、安全管理器(SM)、应用管理器(AM)、文件管理器(FM)。
在这里需要提起注意的是,智能卡中的“文件”概念与我们通常所说的“文件”是有区别的。尽管智能卡中的文件内存储的也是数据单元或记录,但它们都是与智能卡的具体应用直接相关的。一般而言,一个具体的应用必然要对应于智能卡中的一个文件,因此,智能卡中的文件不存在通常所谓的文件共享的情况。而且,这种文件不仅在逻辑上必须是完整的,在物理组织上也都是连续的。此外,智能卡中的文件尽管也可以拥有文件名,但对文件的标识依靠的是与卡中文件—一对应的文件标识符,而不是文件名。因为智能卡中的文件名是允许重复的,它在本质上只是文件的一种助记符,并不能完全代表整个文件。
(1)传送管理(Transmission Manager)
传送管理主要是依据智能卡所使用的信息传输协议,对由读写设备发出的命令进行接收。同时,把对命令的响应按照传输协汉的格式发送出去。由此可见,这一部分主要和智能卡具体使用的通信协议有关,而且,所采用的通信协议越复杂,这一部分实现起来也就越困难、越复杂。
我们在前面提到过目前智能技术卡采用的传输协议一般是T=0协议和T=1协议,如果说这两类协议的COS在实现功能上有什么不同的话,主要就是在传送管理器的实现上有不同。不过,无论是采用T=0协议还T=1协议,智能卡在信息交换时使用的都是异步通信模式;而且由于智能卡的数据端口只有一个,此信息交换也只能采用半双工的方式,即在任一时刻,数据端口上最多只能有一方(智能卡或者读写设备)在发送数据。T=0、T=1协议的不同之处在于它们数据传输的单位和格式不一样,T=0协议以单字节的字符为基本单位,T=1协议则以有一定长度的数据块为传输的基本单位。
如果传送管理器认为对命令的接收是正确的,那么,它一般是只将接收到的命令的信息部分传到下一功能模块,即安全管理器,而滤掉诸如起始位、停止位之类的附加信息。相应地,当传送管理器在向读写设备发送应答的时候,则应该对每个传送单位加上信息交换协议中所规定的各种必要的附属信息。
(2)安全体系(Security Structure)
智能卡的安全体系是智能卡COS中一个极为重要的部分,它涉及到卡的鉴别与核实方式的选择,包括COS在对卡中文件进行访问时的权限控制机制,还关系到卡中信息的保密机制。可以认为,智能卡之所以能够迅速地发展并且流行起来.其中一个重要的原因就在于它能够通过COS的安全体系给用户提供一个较高的安全和安全机制 。安全机制可以认为是安全状态实现转移所采用的转移方法和手段,通常包括:通行字鉴别,密码鉴别,数据鉴别及数据加密。
鉴别与核实:鉴别与核实其实是两个不同的概念,但是由于它们二者在所实现的功能上十分地相似,所以我们同时对它们进行讨论,这样也有利于在比较中掌握这两个概念。
通常所谓的鉴别(Authentication)指的是对智能卡(或者是读写设备)的合法性的验证,即是如何判定一张智能卡(或读写设备)不是伪造的卡(或读写设备)的问题;而核实(verlfy)是指对智能卡的持有者的合法性的验证,也就是如何判定一个持卡人是经过了合法的授权的问题。
鉴别则是通过智能卡和读写设备双方同时对任意一个相同的随机数进行某种相同的加密运算(目前常用DES算法),然后判断双方运算结果的一致性来达到验证的目的。根据所鉴别的对象的不同,COS又把鉴别分为内部鉴别(Internal Authentlcation)和外部鉴别(EXternal Authentication)两类。这里所说的"内部"、"外部"均以智能卡作为参照点,因此,内部鉴别就是读写设备对智能卡的合法性进行的验证;外部签别就是智能卡对读写设备的合法性进行的验证。
密码管理:目前智能卡中常用的数据加密算法是DES算法。采用DES算法的原因是因为该算法已被证明是一个十分成功的加密算法,而且算法的运算复杂度相对而言也较小,比较适用于智能卡这样运算能力不是很强的情况。 DES算法的密码(或称密钥)长度是64位的。COS把数据加密时要用到的密码组织在一起,以文件的形式储存起来,称为密码文件。最简单的密码文件就是长度为8个字节的记录的集合,其中的每个记录对应着一个DES密码;较为复杂的密码文件的记录中则可能还包含着该记录所对应的密码的各种属性和为了保证每个记录的完整性而附加的校验和信息。其中的记录头部分存储的就是密码的属性信息,不论是什么样的密码文件,作为一个文件本身,COS都是通过对文件访问的安全控制机制来保证密码文件的安全性的。
当需要进行数据加密运算时,COS就从密码文件中选取密码加入运算。从密码文件中读出密码时,与读取应用数据一样,只要直接给出密码所在的地址就可以了。当然,最简单的产生密码的方法是直接从密码文件中随机读出一个密码作为加密用密码。但是这样的机制可能会多次选中同一密码,从而给窃听者提供破译的机会,安全性不太高。因此,比较好的办法是在随机抽取出一个密码后再对密码本身作一些处理,尽量减少其重复出现的机会。
(3)应用管理器(AppIication Manager)
应用管理器的主要任务在于对智能卡接收的命令的可执行性进行判断。关于如何判断一条命令的可执行性,我们已经在安全体系一节中作了说明,所以我们可以认为,应用管理器的实现主要是智能卡应用软件的安全机制的实现问题。而因为智能卡的各个应用都以文件的形式存在,所以应用管理器的本质就是我们将要在下一节加以讨论的文件访问的安全控制问题。正是基于这一点,我们也可以把应用管理器看作是文件管理器的一个部分。
(4)文件管理器(File Manager)
与安全一样,文件也是COS中的一个极为重要的概念。所谓文件,是指关于数据单元或卡中记录的有组织的集合。COS通过给每种应用建立一个对应文件的方法来实现它对各个应用的存储及管理。因此,COS的应用文件中存储的都是与应用程序有关的各种数据或记录。此外,对某些智能卡的COS,可能还包含有对应用文件进行控制的应用控制文件。在COS中,所有的文件都有一个唯一的文件标识符(Filel Identifier),因此通过文件标识符就可以直接查找所需的文件。此外,每个文件还可以有一个文件名作为助记符,它与文件标识符的不同之处在于它是可以重复的。COS中的各文件在智能卡的个人化过程中由发行商(Issuer)根据卡的应用而创建,对卡的用户而言通常是不能对文件进行创建或删除的。但是用户可以根据情况对文件内容进行修改,可以对文件中的记录或数据单元进行增加、删除等操作。
(1) 文件系统:COS的文件按照其所处的逻辑层次可以分为三类; 主文件(Master File),专用文件(Dedicated File) 以及基本文件(Elementary File)。其中,主文件对任何COS都是必不可少的,它是包含有文件控制信息及可分配存储区的唯一文件,其作用相当于是COS文件系统的根文件,处于COS文件系统的最高层;基本文件也是必不可少的一个部分,它是实际用来存储应用的数据单元或记录的文件,处于文件系统的最底层,而专用文件是可选的,它存储的主要是文件的控制信息、文件的位置、大小等数据信息。我们可以用下图的树状结构来形象地描述一个COS的文件系统的基本结构。
当然,对于具体的某个COS产品,很可能由于应用的不同,对文件的实际分类表示会有所不同。它的文件分为三类: COS文件(COS File)、密码文件(Key File)和钱包文件(Purses File)。其中所谓的COS文件保存有基本的应用数据;密码文件存储的是进行数据加密时要用到的密码;钱包文件的作用有些类似 于我们日常生活中的钱包。由此可见,它的这三类文件本质上又都介于基本文件(EF)类。
- CPU卡
- CPU卡概述
CPU卡:CPU卡内具有中央处理器(CPU)、随机存储器(RAM)、程序存储器(ROM)、数据存储器(EEPROM)以及片内操作系统(COS),CPU卡不仅仅是单一的非接触卡,而是一个带有卡片操作系统(COS)的应用平台,装有COS的CPU卡相当于一台微型计算机,不仅具有数据存储功能,同时具有命令处理、计算和数据加密等功能。
CPU卡一卡通具备最高安全级别,CPU卡采用动态密码,并且是一用一密即同一张卡,每刷一次卡的认证密码都不相同,有效防止重复卡、仿制卡、卡上数据/金额非法修改等安全漏洞,提高整个系统的安全性。
- CPU卡文件结构
MF | master file 主控文件 |
DF | directory file 目录文件 |
EF | elementary file 基本文件 |
MF | 每个CPU卡只有一个,用于存储卡的控制信息与管理信息。复位后作为当前文件,只有文件头。 | ||||||||||||
DF | 只有文件头,存放目录的管控信息。 | ||||||||||||
EF | 有文件头和文件体。用来存放用户数据或密钥。EF文件分为透明二进制文件与记录文件。
|
DF/EF必须在MF下创建,每个DF包含多个DF/EF,包含下级目录的文件为DDF,不包含的为ADF(应用数据文件)
文件头:包含文件类型,标识符,主体大小,权限,校验等信息。
文件标识:FID (FFFF不能用作标识)
短文件标识:SFI
- CPU卡命了报文结构
CPU卡命令报文个字段含义
代码 | 中文含义 | 备注 |
CLA | 命令类别Class | 1字节 |
INS | 命令指令Instruction | 1字节 |
P1 | 参数1 | 1字节 |
P2 | 参数2 | 1字节 |
Lc | 命令数据域Data长度 | 1字节 |
Data | 命令数据域 |
|
Le | 应答数据域长度 | 1字节 |
命令域中除了Data,都是1字节十六进制数。数据域则是十六进制数串,可以是二进制数、BCD码或文字的ASCII码等等。这有点像汇编语言。调用命令函数时,把命令串代入对应参数即可。
·
6200 | 警告 信息未提供” |
· 6281 | 警告 回送数据可能” |
· 6282 | 警告 文件长度小于Le” |
· 6283 | 警告 选中的文件无效” |
· 6284 | 警告 FCI格式与P2指定的不符” |
· 6300 | 警告 鉴别失败” |
· 63Cx | 警告 校验失败(x-允许重试次数)” |
· 6400 | 状态标志位没有变” |
· 6581 | 内存失败” |
· 6700 | 长度错误” |
· 6882 | 不支持安全报文” |
· 6981 | 命令与文件结构不相容,当前文件非所需文件” |
· 6982 | 操作条件(AC)不满足,没有校验PIN” |
· 6983 | 您的卡已被锁定” |
· 6984 | 随机数无效,引用的数据无效” |
· 6985 | 使用条件不满足” |
· 6986 | 不满足命令执行条件(不允许的命令,INS有错)” |
· 6987 | MAC丢失” |
· 6988 | MAC不正确” |
· 698D | 保留” |
· 6A80 | 数据域参数不正确” |
· 6A81 | 功能不支持;创建不允许;目录无效;应用锁定” |
· 6A82 | 该文件未找到” |
· 6A83 | 该记录未找到” |
· 6A84 | 文件预留空间不足” |
· 6A86 | P1或P2不正确” |
· 6A88 | 引用数据未找到” |
· 6B00 | 参数错误” |
· 6Cxx | Le长度错误,实际长度是xx” |
· 6E00 | 不支持的类:CLA有错” |
· 6F00 | 数据无效” |
· 6F01 | 连接中断” |
· 6D00 | 不支持的指令代码” |
· 9301 | 您的卡余额不足” |
· 9302 | MAC2错误” |
· 9303 | 应用被永久锁定” |
· 9401 | 您的卡余额不足” |
· 9402 | 交易计数器达到最大值” |
· 9403 | 密钥索引不支持” |
· 9406 | 所需MAC不可用” |
· 6900 | 不能处理” |
· 6901 | 命令不接受(无效状态)” |
· 61xx | 正常 需发GET RESPONSE命令” 读取指令00C00000xx |
· 6600 | 接收通讯超时” |
· 6601 | 接收字符奇偶错” |
· 6602 | 校验和不对” |
· 6603 | 警告 当前DF文件无FCI” |
· 6604 | 警告 当前DF下无SF或KF” |
· 6E81 | 卡片已离开” |