了解Java Card体系结构 API和运行 环境的内部工作原理

本文详细探讨了Java Card的体系结构,包括其生命周期、虚拟机、applet及对象的生命周期,以及2.0语言子集和框架。此外,还讨论了Java Card的安全性和内部工作原理,指导如何编写Java Card小应用程序。文章引用了相关资源,为深入研究Java Card技术提供了入口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.cn-java.com/www1/?action-viewnews-itemid-363

摘要

Java Card是能运行Java 程序的智能卡。针对这种新的Java平台,Sun公司的JavaSoft部门已经制订了Java Card 2.0 API技术规范,目前,已有若干授权方正在智能卡上实现这种API。要编写与2.0兼容的Java Card 应用程序,开发人员需要从体系结构上了解Java Card的内涵,其内核类的含义,以及如何针对智能卡开发应用程序。 本文将详细讨论Java Card技术,为您,即开发人员,提供 有关智能卡内 Java平台 的系统体系结构、应用编程接口和运行环境的技术指南。( 4,000字)

作者:Zhiqun Chen,Rinaldo Di Giorgio专稿
本文将首先简单介绍智能卡,并简要回顾智能卡标准ISO 7816。根据Java Developer (开发人员专栏)以前发表的有关智能卡的文章,本文将首先回答这样一个问题:"什么是Java Card?",并简单介绍Java Card系统体系结构。然后,将集中讨论与Java Card相关的若干问题(包括Java Card的生命周期;Java Card 2.0语言子集和API库类;以及Java Card的安全性)。随后还将讨论Java Card运行环境和Java Card工作原理。最后举例说明Java Card的应用:针对Java Card编写的电子钱包应用程序。
本文中凡提到Java Card时均指Java Card 2.0。
什么是智能卡?
智能卡与信用卡大小相同,可通过嵌入到其塑料基体中硅片上的电子电路来存储和处理信息。智能卡主要分为两类:包含有微处理器并具有读、写和计算功能的智能卡(如小型微电脑)。另一类为没有微处理器的内存卡 ,它只能存储信息。内存卡利用安全逻辑算法控制对存储器的存取。
所有智能卡都包括三类存储器:
永久不变存储器(persistent non-mutable memory);永久可变存储器(persistent mutable memory);和非永久可变存储器(non-persistent mutable memory)。ROM、EEPROM和RAM是目前智能卡的三类存储器中使用最普遍的。永久存储器又称非易失性存储器。在本文中我们将交替使用术语永久存储器和非易失性存储器。
国际标准组织规定的ISO 7816第1-7部分包括覆盖智能卡各个方面的一组标准。ISO 7816包括:
  • 物理特性(第1部分)
  • 尺寸和触点位置(第2部分)
  • 电子信号和传输协议(第3部分)
  • 行业间交换指令(第4部分)
  • 应用程序标识符(第5部分)
  • 行业间数据元素(第6部分)
  • 行业间SCQL指令(第7部分)

下图表示智能卡的物理特性,在ISO 7816第1部分中有规定。
Physical Characteristics ---物理特性
Magnetic Stripe ( Back of card ) ---磁条(卡的背面)
Contacts ---触点
Embossing area --- 刻字区
Front of Card ---卡的正面


有关ISO 7816和智能卡的详细情况,请参见"智能卡:入门"。
一般的说,智能卡不包括电源,显示屏,或键盘。它通过其8个触点,利用串行通信接口与外部世界交互。ISO 7816第2部分对智能卡的尺寸和触点位置有详细规定。下图表示智能卡的触点。

Eight Contact Points --- 8个触点
Power Supplier ---电源
Reset ---复位
Check ---检查
Ground ---接地
Optional Contact ---可选触点
Input/Output ---输入/输出
Optional Contacts ---可选触点

智能卡插入可能与另一台计算机相连的卡接收设备(CAD)。卡接收设备又可称作终端、读卡器和IFD (接口设备)。 都具有相同的基本功能,即向智能卡提供电源和建立数据传输连接。

当两台计算机彼此进行通信时,它们交换根据一系列协议构造的数据包。类似地,智能卡也使用自己的数据包---称作APDU (应用协议数据单元)与外部世界对话。APDU包含一条指令或响应信息。在智能卡的世界里 采用的是主 从 模式,而智能卡永远扮演从动的角色。换句话说,智能卡总是在等待来自终端的 命令APDU。随后,它执行APDU规定的动作,并以一个 应答APDU向终端作出回答。智能卡与终端之间互相交换 命令APDU和 应答APDU。

下表分别表示 命令APDU和 应答APDU的格式。ISO 7816第4部分对APDU的结构有专门描述。
命令APDU
标题头(必须) 主体(可选)
CLA INS P1 P2 Lc 数据字段 Le

标题 头对被选指令进行编码。它包括4个字段:类(CLA)、指令(INS)、和参数1和2 (P1和P2)。每个字段包含一个字节:
  • CLA:类字节。在很多智能卡上,这个字节用来表示应用程序。
  • INS:指令字节。这个字节表示指令代码。
  • P1-P2:参数字节。这些字节对 命令APDU提供进一步说明。

Lc表示 命令APDU的数据字段的字节数;Le表示以下 应答APDU 的数据字段希望的字节数。
应答APDU
主体(可选) 尾部(必须)
数据字段 SW1 SW2

状态 字节 SW1和SW2表示 命令APDU在智能卡中的处理状态。

什么是Java Card?

Java Card是能运行Java程序的智能卡。Java Card 2.0技术规范刊登在http://www.javasoft.com/javacard上。它包括有关在智能卡上创建Java Card虚拟机和应用编程接口(API)的详细信息。 最低系统要求为16 kbps只读存储器(ROM)、8 kbps EEPRO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值