智能卡能在世界各地推广,在不同系统中发挥她的作用,国际规范的制定是必不可少的。例如,智能卡的尺寸是由ISO7810标准规定的。ISO7816标准规定了卡用塑料的一些物理特性,包括温差范围、弹性、电子触点的位置以及内置微芯片和外界进行信息交换的方式等。
例如根据智能卡规范(ISO7816.1),接触式智能卡共有8个触点,定义如下图。智能卡正是通过这8个触点与外界进行通信的。 触点 定义 触点 定义 C1 Vcc 供电电压 C5 GND 接地 C2 RST 重置信号 C6 Vpp 编程电压 C3 CLK 时钟信号 C7 I/O 数据输入/ 输出 C4 保留 C8 保留
其中ISO7816是接触式卡智能卡必须遵循的国际规范。目前ISO7816已经陆续发布了9个部分:
ISO7816-1:接触式卡智能卡的物理特性
ISO7816-2:接触式卡智能卡触点的尺寸与位置
ISO7816-3:接触式卡智能卡的电信号和传输协议
ISO7816-4:接触式卡智能卡与外界交互的接口
ISO7816-5:接触式卡智能卡应用的命名方式与注册系统
ISO7816-6:接触式卡智能卡与外界交互的数据对象
ISO7816-7:接触式卡智能卡的结构化查询语句
ISO7816-8:接触式卡智能卡与安全有关的指令
ISO7816-9:接触式卡智能卡附加指令与安全参数
从ISO7816规范的发展,我们可以清楚地看到接触式智能卡的从简单到复杂慢慢完善的发展轨迹。ISO7816是研究接触式智能卡的基础,如果你对接触式智能卡感兴趣,那ISO7816可是必不可缺的资料。
针对某些特殊的应用,如数字蜂窝式移动电话、信用卡(象Europay卡、Mastercard卡和 Visa卡)、电子钱夹(象Visacash、Multos与Proton)也制订了一系列相应的标准。例如,在中国应用最多最广泛的GSM系统中的SIM卡就得遵循GSM11.11, GSM11.14, GSM03.40等一系列规范。
而我们这次讨论的主题JAVA卡,她首先遵循ISO7816的规范,除此之外,她还遵循JAVA卡的一些规范:
Java Card 2.1.1 Runtime Environment Specification
Java Card 2.1.1 Virtual Machine Specification
Java Card 2.1.1 Application Programming Interfaces Specification
读卡器与终端
在讨论读卡器之前,我们先搞清“读卡器”这一概念。广义来讲,“读卡器”指所有可以对卡进行读写的设备。不过,在智能卡业,“读卡器”是指那种必须与电脑相连,接受电脑发出相应指令来控制完成对卡的操作的设备。与“读卡器”对应的设备,我们称之为“终端”。“终端”是指那种能独立对卡进行操作的设备,而无需电脑的帮助。读卡器和终端都可以完成对智能卡的读写。
由于读卡器比终端更依赖于电脑,从而她比终端拥有更多的灵活性。最简单的使用读卡器的方式就是与PC相连。一般PC可以通过RS232串口,USB接口,PCMCIA接口,软盘接口,并口,红外线口等与读卡器取得联系。PC通过这些接口向读卡器发出ISO指令,读卡器收到指令后即对卡进行指令命令的读写,当卡完成这次读写操作后,回给读卡器一个指令成功与否的相应,而读卡器收到卡的相应后即告诉PC,PC这时根据相应的结果进行下一个ISO指令的操作。有关对智能卡的详细操作指令,请参阅[智能卡的接口协议]。一般我们对智能卡进行编程,大多选用读卡器来完成对卡的操作。
一种最常见的终端就是商场和宾馆中使用的POS机。她最大的特点:拥有自己的操作平台和开发系统,能对卡进行独立的读写,有Modem功能和打印交易功能。一般还有磁卡读写功能。
智能卡的文件系统
智能卡的文件系统有的象DOS的树形文件系统。按ISO7816.4规定,智能卡的文件分为:DF(Dedicated File )和EF(Elementary File)。DF包含一些控制信息,它可以成为EF或DF的父文件。这有的象DOS中的目录文件。EF是数据单位的集合,它不能成为任何文件的父文件。这有的象DOS中的TXT文件。
一般而言,智能卡文件系统都有一个必须的根文件(ROOT)。它是DF文件。一般叫它MF(Master File主文件)。
每个文件(包括DF和EF)都有一个文件的ID(两个字节)。如ROOT的ID一般为“3F00”。如要对文件进行读写操作,就必须先用“选择”(Select)命令来选择该文件的ID。
EF的文件类型有:透明EF,线性定长EF,线性变长EF,循环EF。对后三种EF文件的操作需通过对它们所包含的记录进行操作。如你有兴趣希望进一步了解智能卡的文件结构,请参阅ISO7816。
智能卡的接口协议
一般而言,智能卡自身是没有电源,显示器,键盘,哪它是如何与外界进行通信的呢?在上面的文章中,我们已经知道:智能卡是通过它的8个触点与读卡器进行通信的。那它们是如何进行通信的呢?我们知道当两台PC进行通信时,进行数据交换时,它们必须服从一定的通信协议。卡与读卡器的通信也是如此。根据ISO7816.4规定,智能卡与外界的通信数据接口为:APDU(Application Protocol DataUnits,应用协议数据单元)。APDU既制定了命令格式,也制定了响应格式。在卡的领域中,卡始终处在“主仆”关系中的“仆”的地位,即智能卡只能等待读卡器或终端向它发送APDU,收到APDU后,智能卡执行APDU中的命令,而后返回APDU响应。通过APDU命令和它的响应,卡就完成了与读卡器或终端的通信。以下就是APDU的格式: Command APDU(APDU 命令) Mandatory Header(强制部分) Conditional Body(非强制部分) CLA INS P1 P2 Lc Data field Le
“强制部分”表明这是APDU命令必须包括的部分,它包括: class (CLA)-, instruction (INS), and parameters 1 and 2 (P1 and P2). 每部分有一个字节。“非强制部分”表明并不是所有的APDU都有这些部分。
其栏位所表示的意义分别为:
CLA - Class Byte,用於识别applet
INS - Instruction Byte ,下达给applet之指令
P1 - 第一个指令参数
P2 - 第二个指令参数 (P1,P2 根据INS不同,也有不同的含义)
Lc - Data Field之长度
Data Field - 资料栏位
Le - 回传资料之长度
Response APDU (APDU 响应) Conditional Body(非强制部分) Mandatory Trailer(强制部分) Data field SW1 SW2
其栏位所表示的意义分别为:
Data Field - return之资料栏位
SW1 - 执行状态参数1 (1 字节)
SW2 - 执行状态参数2 (1字节)
一般SW1 + SW2 =“9000”表明指令执行成功。
一个例子:
如果我们要选择(Select)SIM卡的ROOT文件,则APDU命令的格式如下: CLA INS P1 P2 Lc Data A0 A4 00 00 02 3F00 A0 代表这是SIM卡、A4代表这是Select指令、P1,P2在Select指令中没有用、Lc说明Data的长度为2个字节、Data=3F00,是ROOT的文件ID
而APDU响应为:9F1A,说明指令成功完成,而且你可以用Get Response命令得到1A长度的响应数据。关于对SIM卡的操作,请参考GSM11.11文档。
智能卡的安全性
安全
由于智能卡采用了不同的安全机理,这种安全机理主要体现在以下两方面:其中用于微处理器卡的比用于只读存储器卡的要复杂一些。
从卡上信息的读取方面来控制:
限制智能卡用户的范围
有些智能卡,任何人都可以读取卡上信息,象记录病人姓名和血型的医疗卡,这种智能卡一般不设密码,只要拿到卡的人都可以读取卡上信息。 这时卡体本身就是一种保护。
对于只许持卡人读取信息的智能卡通常采用一种叫PIN(个人识别码)的密码形式来保护卡上的信息,一般PIN由4至8位数字组成,通过键盘输入读卡器,它允许持卡人输入三次密码,如果三次输的都不对,卡就会被锁住,只有PIN码对了,用户才能对卡进行操作。当前也有一些更高级的密码形式在开发研制之中。
对于只许第三方读取信息的智能卡便只有发卡人才能读取卡上信息。(譬如只有发卡行可以改写电子钱夹上的信息)。这时这些智能卡由16-32位数字的密码来保护。
限制读取智能卡信息的的方式(只读、可添加、可修改或可擦写)。存储在智能卡上的信息一般被划分为若干个部分:
只读信息
只可添加的信息
只可更新的信息
无法读取的信息
这样有些密码信息可以存储在无法读取的存储区域中。
从卡的结构和支持的加密算法来控制
如上所述只有知道密码的人才能使权使用智能卡,但如果需要通过无线电或电话线将卡上的信息向异地传送,就还必须要有额外的防护手段。
防护手段之一就是加密,这就好象把要传送的信息翻译成了谁也看不懂的外语。微处理器智能卡有加密和解密(把看不懂的东西再翻译回来)的功能,使得在传送存储在卡上的信息的同时,也不用担心会发生泄密。
通过加密,智能卡可以把信息翻译成数以亿计的“外语”,并且在须要通信时,可以随机地选择其一。这种防范机制可以确保所用的卡和计算机都真实有效,使得几乎没有可能半路窃取传送的信息。
阅读(1349) | 评论(0) | 转发(0) |