JAVA Card在嵌入式领域中的应用

来源:互联网 发布:linux怎么保存退出命令 编辑:程序博客网 时间:2024/06/05 03:13

1)Java卡简介

Java卡是Java平台中最小的子集,也是一种特殊的智能卡。智能卡是一种嵌入计算机芯片的卡片,广泛应用于通信、交通、金融、证券和保险等领域。智能卡分为两大类:一类是存储器卡,另一类是微处理器卡。存储器卡仅仅被用于存储器数据。微处理器卡有数据处理的功能:它有自己的CPU、I/O端口、存储器和操作系统,可以被看作是一台微型电脑;可以安装并运行小的应用程序,通过串行通信接口与外部通信。ISO(国际标准组织)制定了智能卡的国际标准ISO 7816。

影响智能卡推广的主要因素是其不够开放,不同的卡片制造商生产的卡片的应用程序开发没有统一的标准。为了解决这个问题,工业界提出了能运行Java程序的智能卡--Java卡,并且制定了Java卡的技术规范,包括Java Card VM(Java卡虚拟机)和API的详细信息。Java Card VM位于智能卡的操作系统之一,用通用的编程语言和系统接口屏蔽了不同智能卡硬件和操作系统的区别。Java卡的框架定义了供应用程序开发者使用的API。Java卡的应用程序称为Applet,每个Applet由唯一的AID(应用程序标识符)来识别。

(2)Java卡对硬件的最低要求

512 B RAM:主要用于存储应用程序运行时的栈以及I/O缓冲区。

24 KB ROM:主要用于存储程序代码和系统的运行时系统。

8 KB EEPROM:主要用于存储Java卡的Applet和堆。

8位处理器:8位处理器是Java卡的最低要求。

(3)Java卡软件体系结构

  最底层的Card OS(操作系统)和Native Functions(基本函数)相不于个人计算机的操作系统,负责低层的处理工作。

Java Card VM位于Card OS和Native Functions之上,隐蔽了底层智能卡的不同技术,实现了卡接口的统一和编程语言的统一。

Java Card Framework(Java卡框架)为开发人员定义了一整套API,主要负责运行Java卡Applet以及为Applet运行提供所需要的环境。

Card OS、Java Card VM和Java Card Framework共同组成了JCRE(Java卡运行时环境)。Industry Specific Extensions是服务方所提供的类,使企业与公司能够提供属于自己的服务程序。例如,如果这张卡是GSM网络的SIM(用户识别模块)卡,那么这一层就是SIM卡所需的接口类。

  (4)Java Card API

  Java Card的2.1版包括四个包:Javacard.lang package、Javacard.frame work package、Javacard.security package和Javacardx.cryp to package。

  Javacard.lang package提供Java程序语言中重要的类,例如所有Java类的根类Object类。

  Javacard.frame work package是Java Card API的核心包,提供了实现Java Card Applet基本类和工具。其中ISO7816抽象接口提供了ISO7816所使用的常数值。PIN(个人识别号码)抽象接口使其子类能够验证PIN是否合法。Shareable抽象接口使得不同的Applet能够互相通信。AID类使得JCRE能够通过一个AID表来识别Applet。APDU类通过管理一个缓冲区来接收与传送终端的指令以及回传Applet运行结果与状态。Applet类是所有Java Card Applet的根类,管理Java Card Applet的生命周期。JCSystem类管理Applet与Java Card的系统资源,如AID与事务。OwnerPIN类管理卡片持有者的PIN,并提供相关验证与更新等方法。Util类提供了开发中的常用工具。

  Javacard.security package负责提供安全机制,包括Key抽象接口、KeyBuilde类和MessageDisest类。

  Javacardx.cryp to package包含了关于加密与安全的抽象接口和类。

  (5)Java卡应用的开发

  Java卡的生命周期从操作系统、JVM、API库和可选的Applet被写入Java卡的ROM开始。在正式使用之前,Java卡要经过初始化(在卡上写入制造商和发行商名称等通用信息)和个人化(在卡上写入密钥等个人信息)。然后用户就可以购买并使用Java卡了,当然还要与读卡器相配合。Applet的生命周期从被安装并注册到Java卡系统开始,在被从系统注册表中删除时结束,在被选择时激活。

  Java卡的应用程序可以用一般的Java编译器来编译。但是由于智能卡只有有限的存储器资源和计算功能,Java卡上的应用开发与普通的Java程序开发有很大的不同,很多Java语言的特性在Java卡应用的开发中都不能使用。Java卡的应用开发(在Windows系统下)过程如下:

  ①安装jdk和Java Card 2.1.1 Development Kit;

  ②设置有关环境变量;

  ③编辑Java源代码,可以使用任何Java代码编辑工具;

  ④编译Java源代码,用Java编译器编译Java源代码,生成class文件;


  ⑤生成Cap文件,在Java卡上不能直接运行class文件,必须用Java卡转换器(converter)、把class文件转换为Cap文件;

  ⑥安装Applet,用PC机和与之相连的读卡器把Cap文件安装到Java卡上。

  (6)Java卡在移动通信领域的应用

  SIM(用户识别模块)作为一张内含大规模集成电路的智能卡,目前主要用于GSM手机。最初SIM卡主要用来存储一些个人身份认证和识别信息,例如IMSI、鉴权密钥等。SIM卡不能向手机发出命令。1998年ETSI(欧洲电信标准化委员会)制定了STK卡(SIM应用工具箱技术)的技术规范,大大增强了SIM卡的能力。STK卡上可以安装运行应用程序,可以向手机发出命令,例如在手机上建立新的菜单。SIM卡还可以收发短消息甚至发起呼叫。这样就可以在SIM卡上运行客户端的软件,通过短消息与服务器交互,同时通过菜单为用户提供友好的界面。

  尽管STK对SIM卡的使用方法进行了标准化,但是各个制造商仍旧使用自己的开发工具为自选的芯片掩膜,因此引入开放的SIM卡开放平台成为必要。ETSI已在其协议中增加了有关Java Card的内容。GSM SIM卡采用Java Card API在保证安全的同时提供开放的SIM开发,使得STK应用在不同制造商的SIM卡上运行。在开发过程中,软件开发商可采用开放的开发工具,开发出与Java兼容的SIM卡应用程序。

  ETSI的协议GSM 03.19是STK Java卡的技术标准,规定了STK Java卡的体系结构。最底层是JCRE和GSM文件系统。之上是GSM框架,提供了一些供Applet接入GSM文件系统的API。在GSM框架之上是SIM Toolkit框架,负责Applet的触发、注册、安装和卸载,主动式命令的处理,Applet的安全性管理。

原创粉丝点击