新一代Java智能卡技术研究
- 格式:pdf
- 大小:263.10 KB
- 文档页数:6
《#l■V81AuLc。
LNEV31.利用智能卡实现刷卡安全支付模型研究王禄佳石巍粱宝慧(石家庄铁道学院计算机与信息工程分院河北石家庄050043)电千科学[摘要]为了保障银行卡刷营交易安全,文章首先简要地介绍智能卡技术,并利用智能卡安全特性提出使用智能卡实现刷卡安全支付模型,然后利用Java卡对本模型身份认证过程进行模拟实现。
[关键词]Java#智能k安全支付身份认证中图分类号:TP309.2文献标识码:A文章编号:1671--7597(2008)1110035--02一、前曹我国银行卡绝大部分是磁卡,与磁卡相比智能卡具有较高的安全性和可靠性。
由于用户密钥存贮于卡内,密钥在不出卡的情况下,就可以完成对数据加解密和签名。
这样就路避免不法分子窃取用户密钥,仿冒用户身份,从而达到真正防伪的功能。
目前智能卡已经广泛应用于通讯、数字电视、医疗和政府办公等大型网络系统中。
由于智能卡应用越来越广泛,银行卡智能化也快速兴起。
Sun公司与中国银联宣布合作建立“多应用智能卡联合实验室”[1]。
使得国内银行卡向智能卡迁移的步伐不断加快。
智能卡不仅可以应用于银行类安全交易而且还可以应用于电子商务类安全交易。
=、智能卡简介智能卡(Sm ar t C a r d)又称集成电路卡,即I c卡。
智能卡[2]主要由微处理器(肝u)、程序存储器(R O M)、临时工作存储器(R A M)、用户存储器、输入输出接口、安全逻辑及加密运算协处理器等组成。
片内操作系统C O S(Chi p0per a t i ng sys t em)是智能卡芯片内的一个监控软件,它是根据I c卡特点而开发的专用操作系统。
C O S完成的主要功能[3]:(I)控制卡与外界的信息交换;(2)管理卡上各种存储器;(3)在卡内执行读k器的各种操作命令。
三.商店爿卡安全支付援型此模型毛要用于用户在商店购买商品时通过银行智能卡进行刷卡交易的安全支付。
主要参与主体由银行、商店、客户组成。
1、简介Java Card 3 平台由两个版本组成Classic Edition和Connected Edition:Classic Edition是一个基于 2.2.2版本的前端兼容的演化平台,针对资源有限的设备仅支持applet-based应用。
如果你只对Classic Edition中提供的功能感兴趣的话就可以忽略Connected Edition。
Connected Edition提供了一个显著增强的运行时环境和一个新的虚拟机。
包含了一些新的面向网络的应用,例如提供了针对web应用的Servlet APIs,并且支持一些新的applet功能增强。
一个Connected Edition的应用可能会用到Classic Edition提供的特性,因此这两个版本的规范应用一起使用。
1.1动机Java Card技术使得用Java编程语言编写的程序可以运行在智能卡和其他小的资源紧张的设备上。
开发人员可以用标准的软件开发工具和环境来编译和调试程序,然后把程序转化成能被Java Card支持的格式。
Java Card上的应用程序被称为Applet,或者更明确的称为Java Card Applet 或者Card Applet(为了和浏览器Applets做区分)。
Java Card技术使得用Java语言编写的程序可以在智能卡上运行,然而如此小的设备远不足以支持Java平台的全部功能。
因此,Java Card平台仅仅支持一个被仔细挑选,定制的Java平台属性的的子集。
这个子集使得写的程序在小设备上有更好适应性,并且保持了Java语言的面向对象的特性。
一个简单的途径是定义一个代码可以在所有Java Card环境下移植的Java虚拟机的子集。
结合JVM的子集规定和信息,智能卡提供商可以在Java Card规范上构建自己的工具。
虽然手段是可行的,但有一个严重的缺点,目标平台将会丧失字节码的移植性。
Java平台的规范允许Java的代码在所有Java平台上移植,Java的“写一次,所有地方运行”的属性或许是平台的最重要的特性。
java card标准
Java Card是Java的一个子集,专为智能卡等资源受限设备设计。
其以Java Card Platform specifications(爪哇卡平台规格)为依循标准,此技术规格标准由升阳电脑所研发。
Java Card的主要特点及诉求在于移携性与安全性。
在语言级别,Java Card的所有语言结构都存在于Java中并且行为相同。
这意味着Java Card程序能被Java编译器编译成Java类文件,类文件由特定于Java Card平台的工具进行后续的处理。
但是Java Card 不支持许多Java语言功能,例如char、double、float和long类型,以及对象的finalization、对象克隆等。
此外,Java Card的字节码是由Java Card虚拟机运行的Java Card 字节码,是标准Java虚拟机运行的Java字节码的功能子集,但具有不同的编码以优化大小。
与通过编译相同Java源代码获得的Java小程序相比,Java Card小程序通常使用更少的字节码。
这节省了内存,这是资源受限设备(如智能卡)的必需品。
同时,作为设计权衡,不支持某些Java语言功能和大小限制。
存在克服大小限制的技术,例如将应用程序的代码分成低于64K限制的包。
以上内容仅供参考,建议查阅关于java card标准的资料获取更全面和准确的信息。
Java智能卡技术研究摘要:Java智能卡技术制订了一种安全、便捷且多功能的智能卡平台规范,已成为智能卡的主流发展趋势。
随着我国信息化建设的不断推进和信息技术的持续发展,Java卡已在身份认证、电子支付和信息安全领域得到了广泛的应用。
关键词:Java 智能卡技术研究Java智能卡,顾名思义就是一种能运行Java语言程序的智能卡。
其实质是,在资源非常有限的智能卡环境中,实现对Java语言部分子集的支持,从而实现能够在智能卡中运行利用这部分Java语言子集开发的应用程序的目的。
因此,可以说Java智能卡是Java嵌入到智能卡中的一种新的应用。
Java卡的出现,使原有嵌入式设备只能实现单一或有限应用的局面得以突破,使得真正意义上的一卡多应用成为现实。
1 Java智能卡的基本概念Java语言的最大特点是平台无关性,即在不同的系统平台上,都可以使用相同的代码。
Java语言的这一特性使得应用程序的移植变得更加容易。
Java智能卡又称为Java Card,Java智能卡技术的原理是在智能卡硬件系统上构建一套软件平台。
该软件平台需要实现Java程序的下载、安装以及执行功能。
其中Java程序的下载和安装功能由Java 智能卡的运行环境实现,而Java智能卡程序的执行则需要Java智能卡的运行环境、卡内虚拟机以及Java智能卡基础类库共同协调完成。
因此,可以说Java智能卡实际上是智能卡硬件系统和提供解释执行Java应用程序的软件系统的有机结合体。
2 Java智能卡的基本结构及原理2.1 从系统结构上看,Java智能卡主要由Java Applet应用层、Java 智能卡软件平台层,以及智能卡本地系统层1)Java Applet应用层。
Java智能卡规范,将运行于Java智能卡中的应用服务程序称为Java Applet。
该层相当于Java智能卡应用系统中的应用服务层。
一个Java智能卡中,可以根据需要下载多个应用各不相同的Java Applet应用程序,从而实现一卡多用的功能,例如,可以在一个Java智能卡中,下载用于实现地铁、汽车、网银、水费、气费等代收功能的Java Applet应用程序。
JA V A卡技术概述---------------------------------------------------------------------------------------------------------------------- 编辑整理:编辑:王鹏来源:门禁关键字:JA V A爪哇卡(JavaCard)技术可使以爪哇语言所写成的程序,在智能卡和其它资源受限装置上执行。
本文将让您一览爪哇卡技术,包括该系统的结构和组件。
本概述的目的在让您对爪哇卡技术有一个整体性了解,并介绍有关爪哇卡系统的重点和基本概念,以利程序开发者设计程序之用。
一、爪哇卡技术之组件爪哇卡技术包括下列部分:*精简后之爪哇程序语言以及适合智能卡应用的虚拟机(JavaCardVirtualMachine,JCVM)定义*核心之爪哇卡应用程序接口(ApplicationProgrammingInterface,API)及其延伸部分*爪哇卡之执行时期环境(JavaCardRuntimeEnvironment,JCRE)爪哇卡应用程序接口和执行时期环境是以智能卡工业标准ISO7816为模型而设计,因此,爪哇卡平台可轻易支持跟ISO7816第一到第六部分兼容的智能卡系统和应用。
爪哇卡应用程序被称为applets。
爪哇卡平台可支持多重应用(multiapplication)环境。
爪哇卡应用程序则是在爪哇之执行时期环境内处理和执行。
二、精简之爪哇卡语言若智能卡的程序可使用爪哇程序语言的所有功能写成当然最好,不过对智能卡和其它资源受限装置来说,由于运算资源有限,要完全支持爪哇程序语言是不可能也不切实际的事。
一般智能卡是以1K的随机存取内存(RAM),以及16K的非挥发性内存(EEPROM或RAM)和24K的只读存储器(ROM)规格出现,因此,爪哇卡平台仅能支持经小心选取且已规格化而有精简功能的爪哇语言。
此精简爪哇语言包含之功能,适于设计智能卡以及其它小型装置的程序,同时还能保留爪哇程序语言以对象为导向(object-oriented)的能力。
新一代Java智能卡技术研究马旭,王立,彭晓锋北京邮电大学电信工程学院,北京 (100876)E-mail:marxuxp@摘要:本文较详细地讨论了最新的Java 2.2智能卡技术,包括系统结构、运行时环境、编程模型、Java类库支持、虚拟机原理及设计,最后简要介绍了Java2.2智能卡的安全机制。
关键词: Java Card智能卡2.2,JCRE,JCVM,安全性1.引言智能卡也称为芯片卡、IC卡。
是将集成电路芯片封装在一个塑料基片上,通过芯片内的通信模块,智能卡可以和外部设备通信,完成数据传输、存储和处理,实现各种业务。
早期的智能卡实际上并不是严格意义下的智能卡,只是一种存储卡。
因为它没有片上微处理器,而只有少量的存储单元和固化的逻辑电路。
随着技术的发展,出现了微处理器卡,能够提供更高的安全性和更多的功能。
这种卡不能直接和外部交换数据,而是通过外部设备对微处理器发送一组指令,再由微处理器执行相关的操作,并把数据返回给外部设备。
由于Java语言的平台无关性、高安全性和易开发性,在智能卡应用中有相当的优势。
Java 语言刚诞生不久的1996年11月,美国Schlumberger 产品中心首先介绍了Java智能卡的API,并决定将智能卡开发重点转到保护信息安全上来。
Schlumberger 提出了Java API草案并创立了Java智能卡论坛[1]。
在广大厂商的支持下,SUN推出了Java Card 1.1规范,为Java智能卡定义了技术标准,并陆续推出了2.0、2.1、2.2版,提出了更为完整的技术要求。
目前,Java 智能卡技术已经趋于成熟,得到了广泛应用。
2.Java智能卡体系结构在智能卡硬件平台上,通过构建一个硬件或软件系统,以支持Java语言下载、运行,称为Java智能卡。
Java智能卡继承了Java技术的平台无关性,将硬件和软件分离,简化了应用程序开发,提高了程序移植性。
Java智能卡由以下几部分组成[2]:z硬件系统包括微处理器、存储器、通信电路、加密协处理器等模块z与智能卡硬件相关的本地方法集完成基本的I/O、存储、加密解密等对硬件的操作z JCVM(Java Card Virtual Machine)解释器完成对类文件的解析、构建Java栈和帧结构以支持Java字节码的执行z Java智能卡类库包括支持Java智能卡运行的核心类库和扩展类库z Java智能卡应用管理组件完成对卡上Applet的安装、注册和删除z Java智能卡运行环境包括支持卡内的Applet间的安全机制和对象共享机制,支持卡内的事务处理和异常处理z Java智能卡应用程序运行智能卡上的Java 应用程序系统结构如图1[2]。
图1 Java 智能卡系统结构 3.Java 智能卡应用程序开发和运行3.1 Java 语法规范Java 智能卡支持一个简化的Java 语法集,删除了较复杂和耗时的部分,但保留了面向对象特性。
表1[2]列出了一些支持和不支持的Java 特性表1 Java 智能卡支持和不支持的Java 特性Java 智能卡支持特性 Java 智能卡不支持特性简单数据类型 boolean byte short大数据类型 long float 等 一维数组多维数组 Java 包 类 接口以及异常字符和字符串 面向对象特性:继承 多态 虚方法 重载 动态对象生成 存取范围动态类装载 安全管理 垃圾回收和结束 线程 对象编序 可选int 关键字和32位整数数据类型对象克隆Java 智能卡也有相应的包支持,但也只是标准Java 的一个子集。
具体介绍请参见表2[2]。
表2 JCRE2.2提供的API包功能 Java.ioJava.io 的子集,基本I/O 操作 ng程序开发的基本支持类 Java.rmi定义了远程调用接口,以支持远程方法调用 Javacard.framework提供用于建立Applet,提供相应的类和接口框架 Javacard.framework.service提供允许Java 卡Applet 被设计为服务集合体的类和接口框架 Javacard.security提供Java 卡安全服务和加密机制的公共类和接口 Javacard.cyipto 包含为实现java 卡主动安全机制和加密框架的外部控制功能的扩展包编写的Java源程序首先要编译为二进制类文件,需要将此类文件进一步转换,以使其结构更紧凑,适宜于安装在智能卡上。
转换后的文件(Converted Applet, CAP)即为安装文件。
最后需要下载CAP文件,并完成其卡内安装注册。
3.2 运行时环境(JCRE)应用程序在卡内的执行由运行时环境决定,有以下三个状态:z选中状态(Select)只有应用程序被选中后才能进入处理状态与读写器交互。
z处理状态(Process)此时Java智能卡和读写器通信,执行应用程序中的process方法,通过重载此方法可以实现不同的功能。
z取消选择状态(Deselect)此时应用程序为非激活状态。
JCRE2.2支持多通道[3],最多可以有4个逻辑通道同时打开,但是由于Java卡并不支持并行同通信,所以实际上只有一个Applet处于活动通信状态。
其中Channel0为基本通道,不能够关闭,其他通道需要通过通道选择或者文件选择APDU打开。
当卡复位时,只有Channel0是打开的。
由多通道特性引出了Multiselectable概念。
即当一个通道选择了一个Applet后,其他通道也可以选择相同或者在同一个包中的Applet,具有Multiselectable性质的包需要实现Multiselectable接口。
一个Applet有多个实例在不同通道运行并不会造成信息的混乱,JCRE 精心设计的安全机制能保证两者的隔离和各自信息的安全。
有两种方法选择通道,即通道选择和文件选择,对应MANAGE CHANNEL OPEN APDU 和SELECT FILE APDU指令。
关闭通道时可以用MANAGE CHANNEL CLOSE APDU指令。
这些操作都对应一个复杂的管理流程,请参阅相关文献[2] [3]。
Java Card 2.2允许为每一个通路选择一个默认的Applet,当复位启动的时候就隐含了一个Applet实例。
打开其他通路的时候也可以有默认Applet或者选择其他Applet。
JCRE2.2新增了对远程对象调用(JCRMI)的支持,使得读卡器可以调用存储在卡内的远程方法。
实现这种机制的关键是在Javacrad.framework.service包中增加类RMIService。
请求的远程调用服务都被传递到这个类中的方法来处理。
JCRMI支持标准RMI服务的一个子集。
3.3 Java卡虚拟机(JCVM)3.3.1 JCVM体系结构Java卡虚拟机简称JCVM,是Java程序的运行环境,目前有两类JCVM实现方案。
一种是硬件的Java微处理器[4] [5] [6] [7],可以在硬件上直接执行Java字节码。
可以使用专用Java 微处理器,或者使用Java协理器。
此方案的优点是执行速度快,但是电路比较复杂,成本高,适用于一些高端应用。
另一种是软件实现[1] [2],即在智能卡上构建一个Java解释器,逐条将Java语句解释为机器码执行。
优点是结构简单,成本低,但是执行速度较慢。
解释型JCVM分为卡内和卡外两部分。
卡外虚拟机工作在PC上,主要执行文件编译、转化,生成安装文件。
卡内虚拟机工作在智能卡上,负责解释执行程序代码。
通过这种机制,Java保持了其平台无关性。
JCVM使用了一种称为token的动态链接技术[3]。
当包A(一个CAP文件)引用包B中的对象时,它并不知道此对象对应的具体物理地址,这时就可以动态地加载token来定位要引用对象的物理地址。
本质上token是CAP文件中的一些表的索引。
转化器在解析Java的类文件的时候,根据被引用的EXP文件,将类文件中使用的其他包中对象的源代码字符串转化为相应的token值存储在CAP文件中。
实际上就是一些偏移量,这些偏移量是相对于CAP文件开始位置的偏移量。
在智能卡上解析CAP文件的时候,如果遇到一个token,就说明这时候要用到别的包的对象了。
便将此token作为一个索引,在相应的表〔table〕或者数组中去查找,得到所引用对象在内存中的绝对位置。
3.3.2 CAP文件安装CAP文件的安装和解析是一个比较复杂的过程,下面予以简要介绍。
CAP文件一共有12个组件[4]。
分别为:COMPONET_Header, COMPONET_Directory, COMPONET_Applet, COMPONET_Import, COMPONET_ConstantPool, COMPONET_Class, COMPONET_Method, COMPONET_StaticField, COMPONET_ReferenceLocation, COMPONET_Export, COMPONET_Descriptor, COMPONET_Debug。
其中Applet,Export和Debug组件为可选组件,只有当需要相应功能时才需要加入。
每个组件封装为一个CAP包,包含在Jar包中。
最后在卡上只保留了5个组件:COMPONET_Method,COMPONET_Class,COMPONET_ConstantPool,COMPONET_StaticField和COMPONET_Export。
其余的组件只是安装时提取有用信息而不在卡中保存。
Java应用程序写到存储器之后,还不能立刻使用,还需要初始化和个人化。
初始化是将一些初始信息下载到永久存储区,它们是卡的通用信息。
个人化是将个人信息写到卡上,包括物理个人化和电子个人化。
物理个人化是在卡表面写上个人信息;电子个人化是将个人信息写到永久存储器中。
3.3.3 JCVM实现JCVM采用了面向堆栈的结构,但是做了进一步简化。
堆用于存放Java程序运行时创建的对象和数组,在字节码的对象创建指令运行时,JCVM将为其分配相应的空间存储。
栈主要用于方法调用时保存返回信息和上下文。
JCVM中只设置了4个寄存器,分别是pc寄存器、frame寄存器、var寄存器和optop寄存器。
pc寄存器指向当前方法中要执行的下一条语句;frame寄存器指向帧结构运行环境;var寄存器指向帧结构中局部变量区的最底端;optop指向帧结构中操作数栈的栈顶。
4. Java智能卡的安全性和完整性智能卡要得到广泛应用,首先就要解决信息的安全性和完整性问题。
Java卡中提供了多种加密和安全措施[8] [9] [10]。
每个阶段都有对应的安全措施,在文件下载安装时有相应的合法性检查,程序运行时提供数据保护和隔离机制,并提供了各种标准加密包以简化加密编程。