javacard 简介,javacard
javacard 简介,javacard
Java的技术,因为 computing resource的不同,而区分为不同性质的Java平台,如 Enterprise Java、 Embedded Java与 Java Card等。若是以Embedded Java来说,因为功能上的要求有限,并且受限於硬体资源大小(如呼叫器),所以在硬体与Java执行环境上必须有所妥协。Java Card也是基於硬体与应用的 求所开发的技术,目的是使得 Java的技术能够在如同smart card晶片般大小的有限资源下执行。所以,目前Java Card可以说是最小的Java平台。
二、简介 |
Java Card是Java 平台中最小的 subset,其设定的执行环境为smart card上的晶片或是有严格硬体限制的环境。Java Card的问世,一方面是为了推展Java的应用层次,一方面也是为了将Java平台的特性以及Java Card 的好处带到smart card上,这些好处主要有:
- Platform-Indep endent
- Multi-Applicat ion Capable
- Compatible with Existing Smart Card Standards
所以,在未来Java Card不但能够取代今日Smart Card的功能,更能够发展出多样化的应用,如身份识别、医疗资讯记录、电子钱包、门禁管控等,甚至能将许多不同的应用程式集合於一张卡上,使得这些随身的软体能够更小更实用。
JavaCard现行的版本有2.0与2.1版,其中2.0版是在1997 年底所释出,而2.1 版则是在今年刚释出。
三、运作逻辑 |
如图3-1所示Java Card实№运作的模式,主要分为二个部分。
图3-1、 JavaCard运作模式图 |
第一个部分就是 Java Card这一端,配合CAD(Card Acceptance Device ),也就是图3-1中的Card Reader来传输、读取Card中的资料,并且供给 Card所 的电源。而JavaCard本身则可以执行applet程式,使得一些敏感的资料与行为能够安全执行而不受外部程式影响。第二部分则是图3-1右方的 Terminal端,负责提供服务程式及操作介面,并透过CAD 与JavaCard沟通。
另外,在图3-1中所表示的 APDU(Application Protocol Data Units)即双箭头的部分,则是 terminal与Java Card沟通的格式与协定。由terminal 端传送给Java Card 的APDU称为Command APDU,主要适用来下达指令以及传输资料给Java Card。图二即Command APDU的格式。
图二、 Command APDU格式 |
其栏位所表示的意义分别为:
- CLA - Class Byte,用於识别applet
- INS - Instruction Byte ,下达给applet之指令
- P1 - 第一个指令参数
- P2 - 第二个指令参数
- Lc - Data Field之长度
- Data Field - 资料栏位
- Le - 回传资料之长度
其栏位所表示的意义分别为:
- Data Field - return之资料栏位
- SW1 - 执行状态参数1
- SW2 - 执行状态参数2
所以,利用上述的加法为例,Java Card applet执行後所return的值若为 short value(16-bit integer),则 Response APDU的表示法可能为:
其中Data Field为一short integer(以两个bytes表示),而SW1与SW2所表示的意义(0x9000 )即"success"或是 "no error"的意思。
四、Java Card软体架构 |
基本上我们可以将Java Card想像为一部PC的缩影,而Java Card的软体架构则具有OS、 native functions 、JCRE(Java Card Runtime Environment)以及架构在此JCRE上的应用程式(Java Card applets),事实上Java Card的软体架构也是与今日的软体架构相仿,图5-1即为Java Card之软体架构。
图4-1 Java Card之软体架构图 |
在此软体架构中,最底层的OS and Native Functions 是负责低阶的处理工作,如同今日的作业系统。而在上面两层Java Card Interpreter与Java Card APIs and Framework就是我们所谓的JCRE,主要负责执行Java Card applets以及提供 applet执行所 要的环境。而 Industry Add-on Classes则是 service provider 所提供的classes,使得企业与公司能够提供属於自己的服务程式。
Java Card的最上层就是所谓的Java Card applets,就如图5-1所示,一个 Java Card可以执行多个Java Card applets,但是要特别注意,Java Card 的执行环境并无支援Multi-thread,所以一次只能执行一个applet,并且 applet与applet之间也有firewall的阻隔。尽管如此,在Java Card的设计之中亦有让不同的 applets相互沟通的机制,我们只 要让applet implement javacard.framewor k.Shareable interface就能够分享applet 的 resource。
因为受限於体积与 resource,所以 Java Card在执行环境上的支援是相当有限的,表5-1即 Java Card执行环境的支援现况,其他详细内容请参考 references。
支援 | 不支援 |
boolean、byte、 short、int | float、double、 long、char、 Strings |
Dynamic Object Creation | Dynamic Class Loading |
Arrays | Security Manager |
Virtual mehtods | Garbage Collectioin & Finalization |
Dynamic allocation | Threads |
Packages | Cloning |
Exceptions | Multi-dimentional arrays |
Interfaces |
五、Java Ring |
Java Ring又名 Java-Powered iButton,是Dallas Semiconductor公司的产品,事实上 Java Ring只是Java Card的另外一种型态,Dallas公司将它制作成为钮扣的形状,进而镶嵌在戒指之上,成为一个Java Ring。
因为Java Ring是沿袭Java Card的规格,所以在软体的架构上是相同的。而 Java Ring在Java Card的原有的硬体架构下加强了其原有的结构,并且发展出与Java Card不同的应用层面。详细的资料请参考[3] 。
六、Java Card API |
Java Card的2.1版总共分为四个 packages,而其内容与重要的物件分述如下:
- javacard.lang package
- javacard.frame work package
- javacard.secur ity package
- javacardx.cryp to package
相关文章
- 暂无相关文章
用户点评