在这篇文章中我们将讨论一种目前较为流行的智能卡:JAVA智能卡。我们将介绍JAVA卡的基本概念和如何用它来开发一些简单的应用。我们的目的是使一些有初步JAVA语言知识的读者了解智能卡,了解JAVA智能卡,并能用JAVA卡开发一些简单的应用。我们在讨论JAVA卡和它的APPLET之前先讨论一些智能卡方面的知识。
智能卡与安全
本章主要讨论智能卡的基本知识和智能卡的安全特性。有关智能卡的基本知识的介绍主要围绕两部分进行:智能卡的概念和智能卡与外界的通信。其中关于智能卡的概念,我们将介绍智能卡的定义,类型和它的一些简单应用。在讨论智能卡与外界的通信部分,我们将介绍接触式智能卡的国际规范ISO7816,从而了解智能卡与读卡器的通信方式和协议,智能卡的文件系统,和对智能卡操作的指令系统(APDU)。关于智能卡的安全特性部分,我们将介绍智能卡使用方式的安全性和所支持的安全算法。
概述
说到智能卡,相信大家都已经看见过或使用过。例如,打IC电话的IC卡,手机里的SIM卡,银行里的IC银行卡等等。那什么是智能卡呢?简单而言,智能卡是一种芯片卡,计算芯片镶嵌在一张名片大小的塑料卡片上,从而完成数据的存储与计算。可以通过一种叫读卡器的设备访问智能卡中的数据。那为什么要使用智能卡呢?因为今天使用智能卡的系统,如银行,通信,交通等系统,都通过使用智能卡的特性获取了其他系统所没有的安全性和灵活性。
为什么使用智能卡?
正由于智能卡在当今网络系统应用中的最突出的两个特点:个人身份性和密文性。智能卡的出现大大提高了交易的方便性和安全性。
个人身份性是指智能卡可以表明持卡人的身份。当今各式各样的交易最终都要确认交易方的身份。打个比方,你欠了债要写一张欠条,债主可以让你签名来表明这是你的欠条,也可以让你画押来表明这是你的欠条。而现在智能卡通过存储在卡里的一个ID号就可以方便的表明你的身份了。既简单又安全。
密文性是指智能卡可以以密文的形式存储某些数据。有些智能卡还能利用自带的微处理器进行动态的数据加减密。
充分利用智能卡的个人身份性和密文性,就可以为任何类型网络的数据传递和身份认证提供安全性,从而能大幅度提高现行系统的安全性和便利性。
除此之外,智能卡还有:大容量性,稳定性,可携带性,兼容性好等特点。
智能卡应用
如今智能卡在以下行业内扮演着重要的角色:
电信业
智能卡在电信业中最著名的应用是:GSM中的SIM卡,和IC电话机中的IC卡。
SIM卡是GSM网络中的个人身份模块,即SIM卡中有一个ID来唯一确定该卡的身份。这个ID号会被GSM的鉴权中心,计费中心等使用。
IC电话机中的IC卡中存储着剩余话费的金额。IC电话机会依据通话时间,通话的费率对IC卡存储的金额进行扣除。
银行业
银行业是智能卡展示才华的另一舞台。离线交易是智能卡的一大卖点。通过复杂的加减密算法,和完善的密钥管理系统,POS终端的对银行智能卡进行离线的交易处理,而无须每次交易都用MODEM拨号到后台数据库进行查询。
交通运输
交通运输是智能卡另一个舞台,一种叫非接触式卡的智能卡在这一领域扮演主要角色。如香港地铁的八达通卡,用户进入地铁站时,只要将八达通卡在人口处的一个装置上晃一下,地铁人口处的门就会自动打开,同时八达通卡上的存储的余额就会变少。当八达通卡上的存储的余额变为零时,用户就需要对卡进行充值。
智能卡的类型
按嵌入的芯片种类分,智能卡可以分为以下几类:
接触式卡
这种卡需要一种叫作读卡器的装置进行信息的读写操作。与信用卡上是一个磁带条不同,这种卡的表面上镶嵌着一个小的金属片,当把卡插入读卡器时,这个小金属片就会同一个电子接头相接触,通过这个电子接头对芯片读写数据。从卡的结构来分,接触式卡主要分为以下两类卡:
存储卡
存储卡不包含复杂的处理器,它不能动态的管理文件。存储卡与读卡器的通信是同步通信。IC电话机中的IC卡就是存储卡。
微处理器卡
微处理器卡是我们在这要主要讨论的。她与存储卡的最大的区别就是:她具有动态处理数据的功能。微处理器卡的系统结构有的象PC机。她也有ROM,RAM,CPU和EEPROM。以下的讨论如无特别指出,讨论的对象都是微处理器卡。象SIM卡,银行卡等都是微处理器卡。
非接触式卡
另一种是非接触式智能卡,这种卡看上去和普通的塑料信用卡很相似,但却在卡体中内嵌了一个天线和一个微电子芯片,当把它放近读卡器的天线时,它们之间就可以完成一次信息交换。这使其不用与耦合感应器做任何接触,就可与之交换信息,并且处理时间极短,这一特性,使非接触式智能卡在一些象高速公路收费站这样要求大批量超快速运转的场所成为理想的解决方案。
国际标准
智能卡能在世界各地推广,在不同系统中发挥她的作用,国际规范的制定是必不可少的。例如,智能卡的尺寸是由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:接触式卡智能卡附加指令与安全参数
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)从ISO7816规范的发展,我们可以清楚地看到接触式智能卡的从简单到复杂慢慢完善的发展轨迹。ISO7816是研究接触式智能卡的基础,如果你对接触式智能卡感兴趣,那ISO7816可是必不可缺的资料。
针对某些特殊的应用,如数字蜂窝式移动电话、信用卡(象Europay卡、Mastercard卡和 Visa卡)、电子钱夹(象Visacash、Multos与Proton)也制订了一系列相应的标准。例如,在中国应用最多最广泛的GSM系统中的SIM卡就得遵循GSM11.11, GSM11.14, GSM03.40等一系列规范。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)而我们这次讨论的主题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功能和打印交易功能。一般还有磁卡读写功能。