Java智能卡

2024-09-30

Java智能卡(共3篇)

Java智能卡 篇1

Java智能卡是在智能卡技术的基础上发展起来的, 是Java技术和智能卡技术的有机结合体。Java智能卡是在智能卡硬件系统的基础上, 在卡片内通过软件构建的一个支持Java程序下载、安装和运行的软、硬件系统。

1 Java智能卡关键技术的研究

1.1 Java智能卡的文件结构

卡片内文件分3类, 分别为:主控文件MF (Master File) 、专用文件DF (Dedicated File) 、基本文件EF (Elementary File) 。卡片内文件结构最多为3层目录, 即MF-DF-DF一般两层基本够用, 即MF-DF。

MF是整个文件系统的根, 每张卡有且只有一个MF, 它是在卡片的个人化过程中首先被建立起来的, 在卡片整个生命周期内一直存在并保持有效, 在物理上, MF占有的存储空间包括MF文件头的大小以及MF所管理的EF和DF的存储空间。DF是在MF下针对不同应用建立起来的一种文件, 存储了某个应用的全部数据和与之相关的安全数据。DF下可以包括EF。EF存储了各种应用的数据和管理信息, 它存在于MF和DF之下。

1.2 Java智能卡中的通信机制

智能卡与读/写卡器之间的通信, 是单向的接收或发送的, 两个方向不能同时传送接收数据。智能卡与读/写卡器之间的数据传输是按照APDU协议来实现的。APDU (Application Protocol Data Units, 应用协议数据单元) 的内容可以是命令, 也可以是响应信息。智能卡与读/写卡器之间的通信, 都采用主从结构模型, 即智能卡处于被动地位, 从属地位, 只有收到读/写卡器发出的命令A P D U后, 才会进行相应的信息处理[3,4]。

当智能卡接收到读/写卡器发出来的A P D U命令后。执行此命令所规定的指令, 然后再向读/写卡器返回一个响应A P D U, 智能卡和读/写卡器之间的通信就是通过相互交换A P D U命令和响应A P D U来完成的。A P D U协议, 即智能卡与读/写卡器之间的应用层协议, 有两种结构, 读/写卡器使用的发送命令结构, C-A P D U (CommandAPDU) ;智能卡使用的响应命令结构, R-A P D U (R e s p o n s e A P D U) 。这两种结构是成对使用的。具体APDU协议的定义请参照IS07816-4规范。

Java智能卡与终端间的通信由APDU对象来完成。当终端发送一条命令给卡片时, J C R E首先将该命令的命令头存储到A P D U对象中, 然后将该对象作为一个输入参数, 调用当前活动的Applet的process方法;Applet的process方法执行时, 将根据传入的A P D U对象中存储的命令头中I N S字节, 判断该命令为何种命令, 并当该命令有输入数据时, 调用A P D U类中定义的接收方法接收命令数据, 即可得到完整的终端命令;若A p p l e t需要返回数据给终端, Applet将再次填充APDU对象的通信缓冲区数组, 再调用APDU类定义的发送方法, JCRE就会将输出数据发送给终端。

1.3 Java智能卡中的异常处理机制

在JCVM平台的异常处理中, 根据产生异常对象的不同, 可将异常分为三大类:虚拟机抛出异常、用户动态抛出异常和用户静态抛出异常。 (1) 虚拟机抛出异常是指虚拟机在运行时检测到的异常, 它主要包括Error和Runtime Exception, 是因系统内部错误或编程错误所产生的异常。 (2) 用户动态抛出异常是指用户在程序中使用t h r o w语句抛出的异常, 其处理过程同Runtime Exception。 (3) 用户静态抛出异常是指用户通过throw It () 方法抛出的异常。由于JCVM中用于对象分配的堆 (Heap) 是设在卡片内的EEPROM中的, 而EEPROM的容量是非常有限的。通常为16K或32K, 为了节约卡内的存储资源, Java智能卡异常类Card Exception和Card Runtime Exception中提供了可以直接调用JCVM所拥有的异常对象实例的静态方法throw It () 。应用程序并不是通过新创建一个异常类的实例来抛出异常, 而是通过上述throw It () 方法来实现的。throw It () 静态方法为卡片提供了直接终止应用的运行并返回出错代码的手段。由此减少了卡片内生成的许多无用的异常实例, 节约了卡内资源。

2.4 Java智能卡中的事务处理机制

在实际操作中, Java智能卡执行过程中可能会出错, 例如系统突然掉电、Applet非正常终止等情况, 这时就会要求智能卡内的数据恢复到在这之前的状态。同样, 在对Java智能卡中的数据进行更新时, 整个通信过程中, 也必须保证卡片上数据的完整性和一致性。所以, 智能卡必须提供一种合适的事务处理机制来保持敏感数据的操作完整性。

J a v a智能卡平台的事务处理机制由JCRE完成。JCRE必须保证对永久对象的某个成员或类成员的更新操作是原子性的:同样, JCRE必须保证对数据块的更新操作是原子性的。事务处理机制只对永久数据的更新有效, 对于临时对象及全局数组, 不能维持其操作的原子性。为了保证未提交事务的回滚, JCRE定义了一个事务处理缓冲区, 该缓冲区保存着被更新数据的初始值, 一旦Applet主动退出或事务提交完成前发生错误, JCRE将本次事务中的数据恢复到事务处理缓冲区中的初始值。

2结语

Java智能卡是在智能卡技术的基础上发展起来的, 是Java技术和智能卡技术的有机结合体。Java智能卡技术慢慢开始被应用于银行信用卡、3GSIM卡、身份ID卡等领域, 随着时间的推移、技术和应用环境的改善以及成本的降低, Java智能卡技术必将得到普及和应用。

参考文献

[1]张剑峰, 钱晶晶, 谈慧宇, 等.智能卡抗DPA攻击的设计与实现[J].中国防伪报道, 2009, 9.

[2]甘信丹, 姜梅, 赵梅.一种改进的基于智能卡的身份认证方案[J].电脑知识与技术, 2009, 28.

[3]吴俊军, 马鑫龙, 张新访.一种新的Java智能卡上字节码校验算法[J].计算机工程与科学, 2008, 30 (3) .

Java智能卡的安全性 篇2

Java智能卡是在智能卡技术的基础上发展而来的,是目前世界上三大智能卡领先技术(Java Card TM、Windows誖Powered Smar Cards、MULTOSTM)之一。Java智能卡是在智能卡的硬件系统基础之上在卡片内通过软件构建的一个支持Java程序下载、安装、运行和卸载的软、硬件系统。它在有限资源的智能卡环境中支持Java语言的一个子集,成为Java嵌入式的一种新应用。Java智能卡充分利用了Java的平台无关性,使得Java技术“一次编写,随处运行”的思想在智能卡上得以实现。国外对Java卡的研究较早,并已广泛运用,而我们国内的研究较晚,但发展很快。目前,Java卡主要运用于身份识别、交通、通信及金融等领域,其中涉及到了身份认证和电子支付等一些敏感和隐私信息,这就给Java智能卡的安全性提出了很高的要求。

1 Java卡概述

Java智能卡系统由以下几部分组成:

1)智能卡硬件系统,一个典型的Java Card硬件设备由一个8位或16位的运行在3.7MHz的中央处理器、1K的RAM和多于16K的非易失性存储器(EEPROM或Flash)构成。

2)底层操作系统,完成基本的I/O通信、存储、加密等基本操作。

3)Java智能卡虚拟机(JCVM),是用来支持字节码运行的虚拟机模型,解释执行Java语言,以实现智能卡平台Java语言的硬件无关特性。由于智能卡的有限的空间,JCVM只支持Java语言的一个有限的子集。

4)Java智能卡类库(API),包括Java智能卡运行的核心类库和应用扩展类库,为Applet的开发提供统一的应用编程接口,是Java语言的一个子集。

5)Java智能卡运行环境(JCRE),包括Java智能卡虚拟机、API类库以及其他的支持服务,如卡内Applet间的安全隔离机制和对象共享机制、事务处理、逻辑通道等。

6)Java智能卡应用(Applet),运行于Java卡上的应用程序,如GSM应用、电子钱包应用。Java智能卡可以安装多个Applet,每个Applet被赋予一个唯一的AID,通过AID,JCRE可以分别激活或取消激活Java智能卡中的各个Applet,并且它们之间互不影响。

2 Java智能卡的安全机制

由于Java智能卡支持多个Applet存在于一张智能卡中,并且允许用户自主下载、安装和卸载Applet。我们从两个角度去考虑Java智能卡的安全,一是Applet本身,二是多个Applet之间。Applet本身的安全性,一部分基于java语言的安全性和编码结构的安全性,这更多的依靠于软件开发人员的编码能力,我们在此不考虑此因素。下面我们从三个方面来考虑Java智能卡的安全机制。

2.1 原子性和事务处理

原子性指事务是一个完整的操作,事务的所有元素作为一个整体进行提交或回滚,如果事务中的任何元素操作失败,则整个事务将失败。智能卡平台的原子性是指在卡片运行过程中,当进行某些永久数据的更新操作,发生错误、中断或掉电等异常时,卡片应该保证这些永久数据的更新操作是一致的,即全做或者完全不做。

事务处理就是逻辑上对一组数据的操作,例如乘坐公交车,将乘车费从卡上扣除。对于事务来说,关键在于如何保证该过程的原子性,即该事务的所有数据更改操作全部完成或者全部不进行,即保持原值。对于智能卡这种安全性要求系数较高的设备来说,完善的事务处理尤为重要。在某些情况下,智能卡用户在使用过程中不小心在运行未结束时移走了卡片或关闭了终端电源等,智能卡就必须保证敏感数据的操作完整性。

Java智能卡平台的事务处理机制由JCRE来完成,其提供了两种等级的事务处理机制:一、JCRE保证对永久对象的某个成员或某个类成员的更新操作是原子性的;二、JCRE可以提供一个事务处理模式,在该模式下,Applet可以将一批要更新的数据放到一个事务中来,JCRE将会保证此事务中所有更新操作的原子性。

2.2 Applet防火墙

智能卡支持在一张卡上同时存在多个Applet,那么Java智能卡平台就要提供一种机制将Applet相隔离,以保证某一个Apple或者恶意程序不能随便访问其他Applet的对象或域。在Java智能卡中,Applet的隔离是通过Applet防火墙来实现的。如果一个对象是属于一个被它自己的防火墙所保护的applet,那么其他的Applet要访问这个对象时就必须满足一定的安全规则。JCVM运行时将会自动进行相关安全校验,以防止不同Applet间的非法数据访问。

2.2.1 上下文(Context)

Java智能卡中的防火墙将Java智能卡对象系统分为不同的保护对象区域,称为执行上下文(Context),而防火墙则是一个执行上下文和另一个执行上下文之间的界限。每当产生一个应用程序对象实例,系统都为之分配一个执行上下文,且此执行上下文实质上为一组执行上下文,同一Java包中的所有Applet对象实例都共享相同的组执行上下文,在同一组执行上下文中,各Applet之间的对象访问是允许的,而访问另一组执行上下文中的对象是被防火墙所禁止的。

Java智能卡运行环境(JCRE)拥有自己的执行上下文,此执行上下文拥有特殊的访问权限,它可访问任何执行上下文中的应用程序对象,而从Applet执行上下文到JCRE执行上下文是被防火墙禁止的。

2.2.2 上下文切换

通常情况下,对象的访问都是在同一Applet内完成的,也就不用进行上下文的切换,只有当不同上下文中的Applet通过共享接口调用时,上下文切换才会出现。

在一个上下文切换过程中,前一个上下文和对象所有者信息将被压入一个内部的VM堆栈中,后面的那一个上下文成为当前激活的上下文,这个被调用的方法将在这个新的上下文中执行,当这个方法调用结束时,JCVM执行一个恢复上下文的切换,原来的(这个方法调用者的)上下文从堆栈中弹出恢复为当前激活的上下文。上下文的切换是可以嵌套的,嵌套的最大深度依赖于可用的VM的堆栈空间大小。

2.3 保证对象间访问的安全机制

Applet防火墙将一个Applet的运行限定在被指定的上下文中,为了允许Applet与其它的Applet或JCRE进行交互,以便一个上下文中的Applet可以访问一个属于另一个上下文的对象,Java卡提供了一些安全的访问机制:一、JCRE入口点对象,为JCRE执行上下文拥有的普通对象,Applet对象实例通过访问JCRE入口点对象的公用方法来完成Applet对JCRE的访问;二、全局数组,为JCRE入口点对象的特殊类型,能被所有Applet和JCRE执行上下文所共享的全局数组;三、JCRE特权,为JCRE上下文拥有的特殊的访问权限,它可以调用所有Applet中的对象的方法或访问对象的实例域,而不受Applet防火墙限制;四、共享接口,需要一个对象实例去实现,以用来使其他对象实例通过此共享接口来实现跨上下文间的对象访问。

3 总结

由于Java智能卡广泛应用于身份认证和电子支付行业,所以其安全性是必须重点考虑的。Java智能卡的原子性和事务处理机制,可以使Applet的数据不会因误操作或读卡器的不正常中断而受到破坏,在一定程度上保证了数据的安全性;Java智能卡中的防火墙机制保证了Applet的隔离,防止了某一Applet或恶意程序对其他Applet的敏感信息进行访问或破坏,同时Java智能卡也提供了跨上下文的Applet之间的对象访问安全机制,保证了Applet间的必要的相互访问的安全。由于Java智能卡的众多优点和其突出的安全性,相信将来Java智能卡的应用将会越来越广泛。

参考文献

[1]张大伟,靳伟.Java智能卡原理与应用开发[M].北京:电子工业出版社,2008.

[2]周捷,吴东辉,陈章龙.JAVA卡平台安全性的涉及与实现[J].计算机工程与应用,2004,21:114-117.

[3]李阿芳.Java智能卡的安全性研究[J].电脑知识与技术,2009,5(22):6204-6205.

[4]王晓亮.Java智能卡Applet安全下载机制的研究与实现[D].西安:西安电子科技大学,2009.

[5]王晓亮,方勇,彭彦.Java智能卡安全运行时环境的设计[J].网络安全,2009,2:39-41.

[6]程恒.Java智能卡安全运行环境的设计与实现[D].西安:西安电子科技大学,2008.

[7]http://www.oracle.com/technetwork/java/javacard/overview/index.html

Java智能卡 篇3

系统的设计被定义为用来说明一个详细的计算机系统方案的任务,也称为物理设计。因此,系统分析主要强调的是系统的业务问题,系统设计主要关注于系统的技术性或实现方面。由于是基于技术性层面的,所以系统设计跟程序设计有很大的关联,必须一一相对应,所以在开发本系统时,先进行的是代码的编写,即基于需求分析实现部分系统功能。在功能实现之后,再完善系统的设计文档。在本系统的系统设计阶段,主要分为系统架构设计、设计类图的绘制、设计顺序图的绘制、数据库设计和系统的界面设计。

1.1 系统架构

本系统是商品购物系统,系统总体架构是B/S三层架构。其中的Web服务器层采用的是Struts2框架来处理请求。图1描述了系统的总体架构。

图1展示了系统的B/S三层架构。这三层体系结构可称为前端应用层、中间信息处理层和底层数据访问层。构建系统的B/S三层架构的优势在于:在功能开发、运行、管理等方面具有高度的统一性和规范性,能够满足系统对可伸缩性、可扩展性、可靠性、可管理性、易维护性的需要,能够以组件化、模块化的方式从Internet/Intranet上为用户提供服务[3]。

基于该系统的应用架构,从程序实现的角度为系统设计了整个系统的包图。在对复杂系统建模时,通常把语义相近并倾向于同一变化的元素组织起来放入同一包中,以方便理解和处理整个模型[4]。

图2展示了该系统在设计时规划的包和包与包的依赖关系。这里绘制的包是系统的垂直分层类包图。在web-root包里面主要存放的是接口类,即系统的表示层,本系统都是JSP页面;admin.action包和user.action包里面存放的是控制类,这里的类都是Action类,主要是对系统的业务和信息进行处理,对应是Web服务器上操作模块;dao包是方便数据库操作的一个包,这个包里面的类主要是实现对数据库的操作,domain包里面的类是与数据库的表对应的实体类,类似于JavaBean,util包里面存放的是公共类,主要是把连接数据库的类放在了这个包里,这样dao包里面的类导入util包的类就可以对数据库进行操作。

1.2 设计类图

本系统的设计类图是根据实现的代码结构来绘制的,一般情况下一个系统绘制一张完整的设计类图,但是由于整个系统的控制类和界面类过多,所以将系统分成了几个模块分别绘制了各个模块的设计类图,这样图形更加简单明了,易于查看和存档。

1.3 设计顺序图

设计顺序图是面向对象设计阶段另一个重要的产物。本系统是基于Struts2框架来设计的,所以每个用例的消息传递过程基本的是按照模型来设计的,在此依然只详细介绍好友推荐用例的设计顺序图,如图3所示。

该顺序图详细描述了该用例执行时,系统内部消息的传递过程。这里的user是用例的触发者,用户->product.jsp发出收藏商品的请求,product.jsp->StoreProduct调用addStore()方法,StoreProduct->ProductDao调用方法查询商品的ID,ProductDao将搜索的商品ID返回给StoreProduct,StoreProduct->StoreDao调用查询该商品是否已被收藏的方法,该类返回未找到该商品已收藏,StoreProduct->StoreDao将收藏记录存入收藏的商品类中并返回,StoreProduct->storeSuccess.jsp提示用户收藏商品成功。在这个消息的传递过程中,jsp页面之间的跳转是依赖Struts2框架里面的struts.xml配置文件来实现的,在这个配置文件中指定每个action的方法操作成功或出错时要跳转的jsp页面。

1.4 数据库

数据库的设计取决于表的设计,按照数据库设计的规范原则,所设计的表遵循第三范式原则。就是保证数据的准确性和一致性,减少数据的冗余,减少插入、修改和删除数据时引起的数据冲突[5,6,7,8,9,10]。具有推荐功能的B2C电子商务网站后台数据库设计有很多数据表,根据本项目系统的需求,创建数据库名为huwenyi,数据表的需求说明和定义结构如下:

(1)已注册的用户表userinfo:为获取更多用户信息,挖掘对企业有用的信息,制定有效的营销策略,以便更好地实现电子产品的网上销售。

(2)管理员表admin:管理员表、有id、名称、密码等属性。

(3)订单表dingdan:订单有一个唯一的订单号,还包括下订单的日期、商品配送的收货人、地址、电话、邮编等。

(4)好友表friend:好友表有用户的id、好友的id、还有用户给好友的评分。

(5)订单的商品表orderedproduct:订单商品表来描述每个订单下具体包含哪些商品。

(6)商品评分表pingfen:商品评分表记录评分者userID,以及评分的商品productID,还记录了商品的评分。

(7)商品表product:商品表,包括有商品的名称、商品的价格、数量。

(8)收藏商品表shoucang:收藏商品表,该表的属性username标记是哪个用户收藏的,productID标记用户收藏的商品id,这样可以与商品表和用户表关联,可以查找收藏的商品信息,还可以查找目标用户收藏的所有商品。

(9)用户推荐商品表recommend:推荐商品表中有用户的名称、好友的名称还有商品的id。图4是数据库表的关系图。

1.5 界面

界面是用户与系统进行交互的桥梁,一个合格的系统界面需要满足易用性需求,使用户易学习、易掌握、易操作,而优秀的系统界面还应该包含更多能够提升用户体验的特性。本系统的主题风格是比较轻快明朗的,基于一个网页的模板,然后自己进行了一些修改,得到了现在的系统界面。

2 结语

上一篇:历史著作下一篇:创新传播方式和载体