Java Card2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功