论文部分内容阅读
摘要:Java智能卡的应用已日益广泛,由于其中涉及到了身份认证、移动通信和电子支付等敏感信息,所以必须为Java智能卡制定完善的安全机制。针对此问题,对Java智能卡的结构和各种安全机制进行了介绍和探讨,分析了Java智能卡的安全性。
关键词:Java智能卡;事务处理;防火墙
中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)24-6015-02
The Security of Java Smart Card
WANG Ming-fei
(Department of Computer Science and Technology, China University of Mining and Technology, Xuzhou 221008, China)
Abstract: Now, Java Card are using widely, due to these applets relates to the authentication、 mobile communications、 electronic payment and other sensitive information, so it is necessary to establish completed security mechanisms for Java Smart Card. For this problem, the structure of the Java Smart Card and a variety of security mechanisms are discussed, and analyzed the Java Card security.
Key words: Java smart card; transaction; firewall
智能卡(Smart Card)是將集成电路芯片镶嵌在塑料基片中,封装成卡的形式,其外形和磁条卡相似,它里面所包含的集成电路芯片带有微处理器和存储器,具有存储、加密和数据处理的能力,可被看作为微小型计算机,另外一般智能卡都加上了RFID模块,可以与外界的读卡器进行非接触式通讯。与目前仍在广泛使用的磁卡相比,智能卡具有安全性高、可靠性强、存储量大等优点。
Java智能卡是在智能卡技术的基础上发展而来的,是目前世界上三大智能卡领先技术(Java CardTM、Windows?誖 Powered Smart 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相隔离,以保证某一个Applet或者恶意程序不能随便访问其他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
[8] 刘慧.Java智能卡的安全性分析与研究[D].济南:山东大学,2008.
关键词:Java智能卡;事务处理;防火墙
中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)24-6015-02
The Security of Java Smart Card
WANG Ming-fei
(Department of Computer Science and Technology, China University of Mining and Technology, Xuzhou 221008, China)
Abstract: Now, Java Card are using widely, due to these applets relates to the authentication、 mobile communications、 electronic payment and other sensitive information, so it is necessary to establish completed security mechanisms for Java Smart Card. For this problem, the structure of the Java Smart Card and a variety of security mechanisms are discussed, and analyzed the Java Card security.
Key words: Java smart card; transaction; firewall
智能卡(Smart Card)是將集成电路芯片镶嵌在塑料基片中,封装成卡的形式,其外形和磁条卡相似,它里面所包含的集成电路芯片带有微处理器和存储器,具有存储、加密和数据处理的能力,可被看作为微小型计算机,另外一般智能卡都加上了RFID模块,可以与外界的读卡器进行非接触式通讯。与目前仍在广泛使用的磁卡相比,智能卡具有安全性高、可靠性强、存储量大等优点。
Java智能卡是在智能卡技术的基础上发展而来的,是目前世界上三大智能卡领先技术(Java CardTM、Windows?誖 Powered Smart 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相隔离,以保证某一个Applet或者恶意程序不能随便访问其他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
[8] 刘慧.Java智能卡的安全性分析与研究[D].济南:山东大学,2008.