华南师范大学物理与电信工程学院 张健 刘寿强 广州保利网络科技有限公司 周海涛 -------------------------------------------------------------------------------- 摘 要:智能卡已经越来越多的出现在人们的生活之中,其安全性也越来越重要,现在Java智能卡已普遍使用。本文就智能卡的应用以及Java语言结构体系说明了Java 智能卡的工作原理,并着重分析Java语言、Java平台的安全性及其安全机制,论述了Java 智能卡的安全性。
广州保利网络科技有限公司 周海涛
--------------------------------------------------------------------------------
摘 要:智能卡已经越来越多的出现在人们的生活之中,其安全性也越来越重要,现在Java智能卡已普遍使用。本文就智能卡的应用以及Java语言结构体系说明了Java 智能卡的工作原理,并着重分析Java语言、Java平台的安全性及其安全机制,论述了Java 智能卡的安全性。
关键词:智能卡, Java Card ,安全机制
1 智能卡简介
智能卡,也称为CPU卡,集成了微处理芯片、CPU、ROM、RAM、COS和EEPROM,能储存信息和图像,由于具备读/写能力,信息可随时更新。相应的,编码信息受到保护,可防止被偷窃或遭受物理性损坏。而近来,由于智能卡的优点越来越被人们认可,它的应用范围也越来越广泛。现在的智能卡主要分为五大类:存储智能卡、处理器智能卡、电子钱包、安全卡、Java卡。
智能卡是硬件的便携部分,它必须借助于其它设备才能获取对某种显示设备或是网络的访问。这种设备通常称阅读器,阅读器使应用程序能够从智能卡接收或是发出命令。在市场上有许多种类的阅读器,其中最为流行的是serial、PCCard和keyboard模型。智能卡一般通过两种方式与阅读器互通信,一种是接触智能卡:当智能卡前端的芯片与阅读器相接触时,两者之间才传递信息。另一种是无接触智能卡:这种信息传递通过天线来进行,省去了手工插入或拔出智能卡的动作。当卡靠近阅读器,信息就传递并自动进行读取。
同时智能卡能在世界各地推广,在不同系统中发挥其作用,国际规范的制定是必不可少的。最基本的智能卡标准是ISO7816。ISO7816标准规定了卡用塑料的一些物理特性(如图1,图2略),包括温差范围、弹性、电子触点的位置以及内置微芯片和外界进行信息交换的方式等。还有另外一些标准分别对智能卡通信以及智能卡的不同功能进行规范。在本文中主要讨论的是Java Card,它首先遵循ISO7816的规范,另外它还遵循Java卡的一些规范
2 Java在智能卡中的应用
Java智能卡( Java Card)是将智能卡(Smart Card)技术与Java语言编程和开发相结合的技术 ,它克服了智能卡硬件和软件开发技术太专业、开发周期长等阻碍智能卡普及的缺点,允许智能卡以及其他作了限制的存储设备运行Java编写的应用程序。Java智能卡技术制定了一个安全、便捷且多功能的智能卡平台,归并了许多Java语言的优点。现在它广泛应用于金融、公益事业、医疗卫生、体育、社会保险、工商税务、组织结构、电信、交通管理、智能建筑以及旅游等领域的电子数据和身份识别。
Java Card解决方案是用只支持具有Java语言特征的子集和分开的模型来实现Java C 虚拟机。因此Java 卡技术基本上定义的是一个平台,为 Java 卡平台编写的应用程序称为Applet。由于是分开的虚拟机结构。此平台在时间上和空间上分布在智能卡和台式机环境之间,由3个技术要求组成,即Java Card 2.1 API技术要求,Java Card 2.1运行环境技术要求以及Java Card
2.1虚拟机技术要求。
Sun日前宣布将推出 Java Card 技术2.2版,将进一步领导的Java Card的开放式安全标准,加强对多重应用智能卡的支持。
Java 卡有点象一部功能齐全,但规模较小的电脑,其硬件主要是为了保证 Java 卡的运行环境的需要,其最小的硬件配置要求为:
(1)512 bytes RAM:主要用于存放程序执行时的堆栈、暂存资料以及作为I/O的缓冲区。
(2)24 KB ROM: 主要用于存放操作系统以及运行环境(Runtime Environment),如 JAVA 虚拟机、Applet 等。
(3)8 KB EEPROM:用于储存我们开发并装载至 Java 卡上的Applet。
(4)8-bit processor: Java 卡需要至少8位的处理器支持。
Java 卡可以想像为一部 PC 的缩影,它的内部结构由 OS、native functions、Java VM(Java 虚拟机)、Java Framework 以及架构在此上的应用程序(Applet)所构成。图3为 Java 卡内部结构:在此结构中,最底层的 OS(操作系统) and Native Functions(基本函数)是负责低层的处理工作,如同 PC 的操作系统。Java 虚拟机处于OS and Native Functions 之上,它的存在实现了卡接口的统一和编程语言的统一。并且也隐藏了卡底层各个卡供应商不同的技术。Java 卡 Framework 为开发人员定义了一整套编程接口类,主要负责执行 Java 卡 Applet 以及提供 Applet 执行所需要的环境。Industry Add-on Classes 则是服务方所提供的类,使得企业与公司能够提供属于自己的服务程序。Java 卡的最上层就是所谓的 Java 卡 Applet,也就是我们要进行开发的应用。如图3所示,一个 Java 卡可以执行多个 Java 卡 Applet。每个 Applet 是靠 AID (应用ID号)来识别的。但是要特别注意,Java 卡的执行环境并不支援多线程,所以一次只能执行一个 Applet,并且 Applet 与 Applet 之间也有防火