Java Card简介
一引言
智能卡简介
在当今的信息化社会中,各式各样的卡在人们生活的各个方面发挥着越来越重要的作用,我们进入宾馆房门时有门进卡,在餐厅吃饭时有饭卡,在商场购物时有VIP卡,打电话时有IC电话卡等等,这些卡都有一些相同的特征,他们在一定的程度上具有智能性。
自IC卡出现以后,国际上对它有多种称法。英文名称有“Smart Card”、“IC Card”等;在我国,人们一般称之为“IC卡”或“智能卡”,智能卡将具有存储、加密及数据处理能力的集成电路芯片镶嵌于塑料基片中,涉及到微电子技术、计算机技术和信息安全技术等,作为一种成熟的高技术产品,智能卡提高了人们生活和工作的现代化程度,已成为一个国家科技发展水平的标志之一。
智能卡相关概念
1. 智能卡的定义
自智能卡问世以来,其发展已经历了相当长的一段的时间,其发展的趋势也是更加小型化和智能化,但是目前业界人士尚无统一、全面的定义,以下是几种常见的智能卡的定义:
(1) 外形和信用卡一样,但卡上含有一个符合国际标准化组织(ISO)有关标准
的集成电路芯片(IC)。
(2) 由一个或多个集成电路芯片组成,并封装成便于人们携带的卡片;具有暂
时或永久性的数据存储能力,其内容可供外部读取或供内部处理、判断;
具有逻辑和数学运算处理能力,用于识别和响应外部提供的信息和芯片本身的处理需求。
(3) IC卡就是集成电路卡。它是一种随着半导体技术的发展和社会对信息安全
性等要求的日益提高而应运而生的,具有微处理器及大容量存储器等的集成电路芯片且嵌装于塑料等基片上制成的卡片。它的外形与普通磁卡做成的信用卡十分相似,只是略厚一些。
2.智能卡的组成
智能卡系统是由智能卡本身和读卡器以及相关系统构成,
智能IC 卡的硬件部分是一个计算机系统,智能IC 卡硬件主要由CPU 、ROM 、RAM 、EEPROM 、输入输出接口、安全逻辑、加密解密运算协处理器等一
系列功能部件组成,其结构如图所示。
图智能卡硬件结构
智能卡的分类
按照不同的标准,对智能卡的分类:
按加密与否,可分为加密储存卡和非加密储存卡:
●非加密存储器卡(Memory Card)
其内嵌芯片相当于普通串行EPROM存储器,有些芯片还增加了特定区域的写保护功能,这类卡信息存储方便,使用简单,价格便宜,很多场合可替代磁卡,但由于其本身不具备信息保密功能,因此,只能用于保密性要求不高的应用场合。
●加密存储器卡(Security Card)
加密存储器卡内嵌芯片在存储区外增加了控制逻辑,在访问存储区之前需要核对密码,只有密码正确,才能进行存取操作,这类信息保密性较好,使用与普通存储器卡相类似。
按照数据读写方式,智能卡又可分为接触式IC卡和非接触式IC卡两类:
●接触式IC卡
前者由读写设备的触点和卡片上的触点相接触,进行数据读写;
●非接触式IC卡
后者则与读写设备无电路接触,由非接触式的读写技术进行读写(例如,光或无线电技术)。其内嵌芯片除了存储单元。控制逻辑外,增加了射频收发电路。这类卡一般用在存取频繁,可靠性要求特别高的场合。
按照数据交换格式分类,智能卡可以分为串行和并行两种:
●串行IC卡
智能卡和外界进行数据交换时,数据流按照串行方式输入输出。当前应用中大多数IC卡都属于串行IC卡类,串行IC卡接口简单,使用方便,国际标准化组织为之专门开发了相关标准。
●并行IC卡
与串行IC卡相反,并行IC卡的数据交换以并行方式进行,由此可以带来两方面的好处,一是数据交换速度提高,二是在现有技术条件下存储容量可以显著增加。
但由于没有形成相应的国际标准,大规模应用方面还存在一些问题。
Java Card是一种可以运行Java程序的智能卡。Java卡1.0版本的规范于1996年11月正式发布。
在Java Card出现之前,智能卡应用的研发是一个复杂漫长的过程。尽管国际规范 ISO7816 早已规定了智能卡的结构大小和通信协议,但各卡片提供商对各自的智能卡操作都有自己独特的一套指令集。而且智能卡编程接口(APIs)非常复杂,开发人员需要熟悉智能卡底层通信接口协议,内存管理及智能卡硬件等各种细节,掌握智能卡复杂的开发环境。此外,由于所有的智能卡都是在专门的开发环境中
开发出来的,即使是相同的应用,不同卡片提供商提供的卡也各不兼容,这使同一系统中使用不同卡片提供商的卡变得很复杂。
近年来,随着智能卡的优点越来越被人认可,它的应用范围已越来越广泛,市场的需求量急剧上升,越来越多的智能卡新应用也随之诞生。但与之矛盾的是:了解智能卡编程的人员却少之又少,智能卡编程的复杂性,不统一性已严重阻碍了智能卡的发展。然而这一切将随着 Java 卡的出现而改变,因为Java卡拥有下列独特的优势:
·平台独立性。符合Java卡API技术规范的Java卡小程序,将运行于使用JCAE开发而成的智能卡,从而允许开发员使用相同的Java卡小程序,在不同厂商的智能卡上运行。
·多应用功能。Java卡上可以同时存在多个不同的应用,这些应用可以来自同一个卡商,也可以来自不同的供卡商。这样一张Java卡就可以完成不同的功能,例如,它可以有电子钱包功能,同时也可以有身份鉴别功能。
·动态适应性。Java卡发行后,上面安装的应用可以根据需要进行删除或重新添加新的应用,而无需更换新的智能卡。
·灵活快速性。Java卡技术采用面向对象方法,为编写智能卡程序提供灵活性。而基于对象的API则大大简化了卡内 Applet 与终端或后台服务器的通信,使快速完成和调试 Java 卡的应用程序成为可能。
·与现行智能卡标准的兼容性。Java卡应用编程接口不仅与诸如ISO7816的国际正式标准兼容,而且与Europay/MasterCard/Visa(EMV)这样一类业界专用标准相兼容。
二 Java Card
1、Java Card结构
Java Card可以说是 Java 平台中最小的子集。
Java Card有点象一部功能齐全,但规模较小的电脑,其硬件主要是为了保证 Java 卡的运行环境的需要,它们只有有限的存储器资源和计算功能。
Java Card上的系统体系结构如下图所示。
在此结构中,
∙最底层的 OS(操作系统) and Native Functions(基本函数)是负责底层的处理工作,如同 PC 的操作系统。
∙Java 虚拟机处于OS and Native Functions 之上,它的
存在实现了卡片接口的统一和编程语言的统一,并且也隐
藏了卡底层各个供卡商不同的技术。
∙Java 卡 Framework 为开发人员定义了一整套编程接口
类,主要负责执行 Java 卡 Applet 以及提供 Applet 执
行所需要的环境。
∙Industry Add-on Classes 则是服务方所提供的类,使得
企业与公司能够提供属于自己的服务程序,例如,如果这
张卡是 GSM 网络的 SIM 卡,那么这一层就是 SIM 卡所需
的接口类。
∙Java 卡的最上层就是所谓的Applet,也就是我们要进行
开发的应用。如图所示,一个 Java 卡可以驻留多个 Java
Card Applet,每个Applet均被其AID (应用程序标识符)
唯一标识,Applet 与 Applet 之间有防火墙的阻隔。
Applet 生命周期开始于安装并在卡的注册表中注册,终止
于被从注册表中注销。一般 Applet 在卡中是没有被激活
的,只有当这个 Applet 被终端“选择”(Select) 到时,
Applet 才被激活。
2、Java Card上的Java语言及API
Java 卡上的程序是由 Java 语言写的,也是由一般的Java 编译器编译的。因为存储器资源和计算能力
有趣的java小程序有限,所以Java Card并不能支持Java语言技术规范中规定的所有语言功能。特别地,Java Card不支持:
∙动态类装载
∙安全管理器
∙线程和同步
∙对象复制
∙对象回收(finalization)
∙长基本数据类型( float、double、long、和char ) 所以支持这些功能的关键词被省略也就不足为奇了。在有更大存储器的更高级智能卡上,由虚拟机的实现者决定是否支持32位整数类型及post-issuance applet的native方法。有关Java卡Java语言的详细资料,可参阅Java Card Virtual Machine Specification.
Java Card 是Java 平台中最小的子集。根据Sun 公司公布的Java
卡规范,目前与Java 卡相关用于智能卡编程共有四个包,其中包含了3
个核心包和1个扩展包,3个核心包是Java.lang、Javacard.Framework
和Javacard.security,扩展包是pto。由于卡中存储器资
源和计算能力有限,所以Javacard并不能支持Java语言中所有的功能。
目前Java卡共支持 4 个 Packages (包),即:
∙java.lang package:提供 Java 语言一些重要的类,如
Object 类,因为所有的 Java 类皆继承它
支持Object、 Throwable和一些与虚拟机相关的exception
类,Java.lang包提供了对基本Java语言的支持。
∙javacard.framework package :是 Java 卡 API 主要的
核心 package,提供并实现了 Java 卡 Applet 基本的接
口与工具。
∙javacard.security package:提供安全机制的包
∙pto package:包含了关于加密与安全的对
象
3、Java Card的安全性
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论