论文部分内容阅读
摘要: Java智能卡是一种能运行Java语言程序的智能卡。现在Java智能卡已普遍使用,其安全性也越来越重要。针对此问题,对Java语言、Java智能卡平台的安全性及其安全机制进行了研究,讨论了Java智能卡的安全性。
关键词: Java智能卡;安全性;防火墙
中图分类号:TP393.08文献标识码:A文章编号:1009-3044(2009)22-0000-00
智能卡(Smart Card)也称为CPU卡,是将集成电路芯片封装在一个塑料基片上,通过芯片内的通信模块,智能卡可以和外部设备通信,完成数据传输、存储和处理,实现各种业务。早期的智能卡实际上并不是严格意义下的智能卡,只是一种存储卡。因为它没有片上微处理器,而只有少量的存储单元和固化的逻辑电路。随着技术的发展,出现了微处理器卡,能够提供更高的安全性和更多的功能。这种卡不能直接和外部交换数据,而是通过外部设备对微处理器发送一组指令,再由微处理器执行相关的操作,并把数据返回给外部设备。
由于Java语言的平台无关性、高安全性和易开发性,在智能卡应用中有相当的优势。Java智能卡(Java Smart Card)是能运行Java语言的智能卡, 它将智能卡技术和Java语言的开发和应用技术很好地结合起来,定义了标准的应用编程接口和运行环境。由于Java语言特有的平台无关性,可以在同一张卡上保存不同开发商提供的应用程序,使得Java卡的应用范围越来越广泛:打IC电话的IC卡,手机里的SIM卡,银行里的IC银行卡和无线网络的安全模块卡等,Java智能卡的应用可以说已涉及到各个领域。
1 Java智能卡概述
Java智能卡通常由8位处理器和有限的RAM及非易失性存储器(EEPROM或Flash)组成。高端的Java卡还带有RSA加解密专用芯片以及32位处理器,可以把Java卡看成是一种安装了Java虚拟机的智能卡。由于Java智能卡芯片的运行速度以及卡上内存大小的限制,所以Java智能卡虚拟机并不支持普通Java语言的一些数据类型和功能,如基本数据类型中的float、double、long和char类型以及多维数组、安全管理器、安全管理器、多线程、垃圾回收等等功能。
Java 智能卡解决方案是用只支持具有Java语言特征的子集和分开的模型来实现Java智能卡虚拟机。因此Java 智能卡技术基本上定义的是一个平台。Java智能卡平台分为虚拟机(JCVM)和API两部分,这两部分合起来定义了所谓的Java卡运行环境(JCRE),JCRE应用提供接口。任何按照标准JCRE开发的应用可以在任意的Java卡平台上运行。为 Java 卡平台编写的应用程序称为Applet。
2 Java智能卡的安全性研究
Java智能卡同传统的智能IC卡相比有许多优点,其中,作为新一代智能卡,Java智能卡平台提供了比传统的智能卡更为完善的安全机制。由于智能卡的广泛使用,其安全性已经成了非常重要的一个因素。Java智能卡安全性应从整个系统全局进行考虑。
2.1 Java语言的安全性
Java语言是一种强安全性语言,Java语言有很多固有的安全特性可以保障Java卡平台的安全性。如:Java语言是一种面向对象语言;Java语言提供了类型和程序的名字空间管理;Java语言是强类型语言,而且不支持指针:Java语言支持透明的内存分配,等等。但是,由于智能卡资源有限,因此Java卡平台仅仅支持Java语言的一个子集。这个子集能够很好地与智能卡以及其它一些微型设备编程相匹配,同时对Java卡平台的安全性也产生了一定的影响。
Java语言安全性面对的一个很大难题是如何保护类型安全同时又允许动态类加载。在Java卡平台中不支持动态类加载,这可以加强类型安全性。因此在这个问题上Java卡平台就要比完整的Java语言有更好的安全性。另外,线程的使用和实现都很困难,而且线程还会大大增加虚拟机的开销,影响虚拟机的性能。不支持线程使应用程序代码的安全性分析变得更加容易。当然,舍去一部分Java语言特性也会给Java卡平台安全性带来一些风险,比如多应用安全性问题等。Java卡平台也提供更多的安全机制来保证它的安全性。
2.2 Java智能卡平台的安全性
在Java平台运行时间,安全以沙盒模型思想中心,一个Applet可以围绕着它的沙盒运行但不能超出它。沙盒模型是由Applet防火墙来补充的,JCRE为每个运行Applet分配一个上下文(context),对一个对象的访问是由Java卡解释器控制的,它的控制基于被访问对象的类型和当前活动的context是否是该对象的context。除此而外,Java卡运行时间规则指定了一组JCRE执行要求以保证运行时间安全。
Java卡平台的安全性由Java语言的安全性和定义在Java卡平台之上的附加安全保护机制组成。由于智能卡有许多的安全考虑,发行者期望智能卡有一个能够满足特定要求的安全计算平台, Java卡平台上的附加安全特性有:临时和永久对象;原子体和事务;Applet防火墙;对象共享;Applet中固有方法。
2.3 Java智能卡平台的安全机制
项目对有关Java卡平台安全机制的设计要求如下:
1)由于卡在实际应用中会出现误操作或读卡机断电等异常情况需要保证出现这种情况后卡上数据不会丢失。
2)因为Java卡可以动态下载Applet,要求能有效防止一些恶意的Applet 窃取或修改卡上原有Applet 的重要数据。
下面将分别给出这两个问题的解决方案。
2.3.1 原子性和事务处理
在Java卡平台中数据被存储在实例中,由于在对数据的操作中可能会出现操作失败或断电,为保持这种情况下的操作前后的数据一致性,因此对Java卡的数据操作规定了安全保障。
Java卡平台必须保证一个域的更新是原子性操作,也就是说,当更新出现错误或读卡机突然断电时,平台能保证域中的内容在下次启动时恢复为更改前的值。
对一些数据块的更新也必须是原子性操作,这就是事务处理的含义。 要么数据块的所有值都更新,要么所有数据值都恢复到原先的值。 它与原子性的含义一样,只是处理的数据块范围更广,可以是一个字节,也可以是一个Java对象实例的所有数据。
之所以将原子性及事务处理操作的具体实现放在虚拟机中完成,而将控制权交给虚拟机上层的系统类库,这是因为Java卡虚拟机只是解释运行Java 语言,并不知道应该对哪些数据进行原子性或事务处理操作,那些需要进行原子性或事务操作的数据可以通过在编写时调用系统类库的方法来指定。
2.3.2 Java应用防火墙
Java卡平台通过防火墙机制为卡上的多个应用提供安全的运行环境,多个不同的Applet能够共存在一张单独的卡上,所以为了保证一个Java智能卡应用程序(Applet)中的账户密码等信息不被别的Applet随意访问,需要在Applet之间设置防火墙来隔离非法访问。防火墙机制是Java智能卡运行环境的一个安全特性,它提供的对含有共享执行的对象中存贮数据使用的详细控制。防火墙机制在内存中为每个应用提供一块私有空间。因此,即使某个应用出现错误或者有敌意应用都不能影响其它应用。
在开发过程中由于开发者的错误或者设计上的漏洞所引起的一个应用程序的敏感数据可以被其它应用程序访问,Java卡防火墙可有效地防止了经常出现的这种安全性问题。防火墙的本质是将Java卡平台的对象系统划分为互相独立被保护的对象空间,这些对象空间被称为上下文。所有的在同一个Java包中的应用实例共享一个上下文。这些应用实例之间都有防火墙,因此任意一个应用实例可以自由地访问处于同一个Java包中的其它应用实例。JCRE有它自己的上下文,这个上下文与其它的应用实例的上下文不同,它有特殊的系统权限,以至于它可以执行应用实例的上下文所不能执行的操作。
3 结论
在智能卡的使用中,安全性总是最重要的方面。Java语言由于其良好的安全性能,自然成为了对安全性、保密性和可靠性等要求严格的智能卡应用的首选。 通过在Java卡虚拟机中实现事务处理机制,在应用中可以保证卡的数据不会因误操作或读卡器的不正常中断而受到破坏。 而且Java卡中的防火墙技术保证了Applet能在一个高安全模式下建立、安装和运行,防止了有恶意的程序对系统其他部分的破坏,同时Java卡平台也保证发行者可以通过扩展加密算法类库,来定义进一步的安全性要求和策略以满足它们特定产业的要求。正因为Java卡平台能提供这些多方面的安全性能,所以它的应用范围也越来越广泛。
参考文献:
[1] 陈华,李大兴. 智能卡的安全性[J]. 通信保密,2000,83(3):26-29.
[2] Wolfgang Rankl,Wolfgang Effing. 智能卡大全----智能卡的结构功能应用(第3版)[M].北京:电子工业出版社,2005.
[3] 刘慧. Java智能卡的安全性分析与研究[硕士学位论文][D]. 济南:山东大学,2008
[4] 王爱英.智能卡技术[M].北京:清华大学出版社,1996.
[5] 刘嵩岩. 毛志刚. 叶以正. Java 卡的研究与实现[J]. 微电子学,2000,1(6).
[6] 马多贺. Java智能卡开发及应用技术研究[D]. 哈尔滨工业大学学报, 2006,6.
关键词: Java智能卡;安全性;防火墙
中图分类号:TP393.08文献标识码:A文章编号:1009-3044(2009)22-0000-00
智能卡(Smart Card)也称为CPU卡,是将集成电路芯片封装在一个塑料基片上,通过芯片内的通信模块,智能卡可以和外部设备通信,完成数据传输、存储和处理,实现各种业务。早期的智能卡实际上并不是严格意义下的智能卡,只是一种存储卡。因为它没有片上微处理器,而只有少量的存储单元和固化的逻辑电路。随着技术的发展,出现了微处理器卡,能够提供更高的安全性和更多的功能。这种卡不能直接和外部交换数据,而是通过外部设备对微处理器发送一组指令,再由微处理器执行相关的操作,并把数据返回给外部设备。
由于Java语言的平台无关性、高安全性和易开发性,在智能卡应用中有相当的优势。Java智能卡(Java Smart Card)是能运行Java语言的智能卡, 它将智能卡技术和Java语言的开发和应用技术很好地结合起来,定义了标准的应用编程接口和运行环境。由于Java语言特有的平台无关性,可以在同一张卡上保存不同开发商提供的应用程序,使得Java卡的应用范围越来越广泛:打IC电话的IC卡,手机里的SIM卡,银行里的IC银行卡和无线网络的安全模块卡等,Java智能卡的应用可以说已涉及到各个领域。
1 Java智能卡概述
Java智能卡通常由8位处理器和有限的RAM及非易失性存储器(EEPROM或Flash)组成。高端的Java卡还带有RSA加解密专用芯片以及32位处理器,可以把Java卡看成是一种安装了Java虚拟机的智能卡。由于Java智能卡芯片的运行速度以及卡上内存大小的限制,所以Java智能卡虚拟机并不支持普通Java语言的一些数据类型和功能,如基本数据类型中的float、double、long和char类型以及多维数组、安全管理器、安全管理器、多线程、垃圾回收等等功能。
Java 智能卡解决方案是用只支持具有Java语言特征的子集和分开的模型来实现Java智能卡虚拟机。因此Java 智能卡技术基本上定义的是一个平台。Java智能卡平台分为虚拟机(JCVM)和API两部分,这两部分合起来定义了所谓的Java卡运行环境(JCRE),JCRE应用提供接口。任何按照标准JCRE开发的应用可以在任意的Java卡平台上运行。为 Java 卡平台编写的应用程序称为Applet。
2 Java智能卡的安全性研究
Java智能卡同传统的智能IC卡相比有许多优点,其中,作为新一代智能卡,Java智能卡平台提供了比传统的智能卡更为完善的安全机制。由于智能卡的广泛使用,其安全性已经成了非常重要的一个因素。Java智能卡安全性应从整个系统全局进行考虑。
2.1 Java语言的安全性
Java语言是一种强安全性语言,Java语言有很多固有的安全特性可以保障Java卡平台的安全性。如:Java语言是一种面向对象语言;Java语言提供了类型和程序的名字空间管理;Java语言是强类型语言,而且不支持指针:Java语言支持透明的内存分配,等等。但是,由于智能卡资源有限,因此Java卡平台仅仅支持Java语言的一个子集。这个子集能够很好地与智能卡以及其它一些微型设备编程相匹配,同时对Java卡平台的安全性也产生了一定的影响。
Java语言安全性面对的一个很大难题是如何保护类型安全同时又允许动态类加载。在Java卡平台中不支持动态类加载,这可以加强类型安全性。因此在这个问题上Java卡平台就要比完整的Java语言有更好的安全性。另外,线程的使用和实现都很困难,而且线程还会大大增加虚拟机的开销,影响虚拟机的性能。不支持线程使应用程序代码的安全性分析变得更加容易。当然,舍去一部分Java语言特性也会给Java卡平台安全性带来一些风险,比如多应用安全性问题等。Java卡平台也提供更多的安全机制来保证它的安全性。
2.2 Java智能卡平台的安全性
在Java平台运行时间,安全以沙盒模型思想中心,一个Applet可以围绕着它的沙盒运行但不能超出它。沙盒模型是由Applet防火墙来补充的,JCRE为每个运行Applet分配一个上下文(context),对一个对象的访问是由Java卡解释器控制的,它的控制基于被访问对象的类型和当前活动的context是否是该对象的context。除此而外,Java卡运行时间规则指定了一组JCRE执行要求以保证运行时间安全。
Java卡平台的安全性由Java语言的安全性和定义在Java卡平台之上的附加安全保护机制组成。由于智能卡有许多的安全考虑,发行者期望智能卡有一个能够满足特定要求的安全计算平台, Java卡平台上的附加安全特性有:临时和永久对象;原子体和事务;Applet防火墙;对象共享;Applet中固有方法。
2.3 Java智能卡平台的安全机制
项目对有关Java卡平台安全机制的设计要求如下:
1)由于卡在实际应用中会出现误操作或读卡机断电等异常情况需要保证出现这种情况后卡上数据不会丢失。
2)因为Java卡可以动态下载Applet,要求能有效防止一些恶意的Applet 窃取或修改卡上原有Applet 的重要数据。
下面将分别给出这两个问题的解决方案。
2.3.1 原子性和事务处理
在Java卡平台中数据被存储在实例中,由于在对数据的操作中可能会出现操作失败或断电,为保持这种情况下的操作前后的数据一致性,因此对Java卡的数据操作规定了安全保障。
Java卡平台必须保证一个域的更新是原子性操作,也就是说,当更新出现错误或读卡机突然断电时,平台能保证域中的内容在下次启动时恢复为更改前的值。
对一些数据块的更新也必须是原子性操作,这就是事务处理的含义。 要么数据块的所有值都更新,要么所有数据值都恢复到原先的值。 它与原子性的含义一样,只是处理的数据块范围更广,可以是一个字节,也可以是一个Java对象实例的所有数据。
之所以将原子性及事务处理操作的具体实现放在虚拟机中完成,而将控制权交给虚拟机上层的系统类库,这是因为Java卡虚拟机只是解释运行Java 语言,并不知道应该对哪些数据进行原子性或事务处理操作,那些需要进行原子性或事务操作的数据可以通过在编写时调用系统类库的方法来指定。
2.3.2 Java应用防火墙
Java卡平台通过防火墙机制为卡上的多个应用提供安全的运行环境,多个不同的Applet能够共存在一张单独的卡上,所以为了保证一个Java智能卡应用程序(Applet)中的账户密码等信息不被别的Applet随意访问,需要在Applet之间设置防火墙来隔离非法访问。防火墙机制是Java智能卡运行环境的一个安全特性,它提供的对含有共享执行的对象中存贮数据使用的详细控制。防火墙机制在内存中为每个应用提供一块私有空间。因此,即使某个应用出现错误或者有敌意应用都不能影响其它应用。
在开发过程中由于开发者的错误或者设计上的漏洞所引起的一个应用程序的敏感数据可以被其它应用程序访问,Java卡防火墙可有效地防止了经常出现的这种安全性问题。防火墙的本质是将Java卡平台的对象系统划分为互相独立被保护的对象空间,这些对象空间被称为上下文。所有的在同一个Java包中的应用实例共享一个上下文。这些应用实例之间都有防火墙,因此任意一个应用实例可以自由地访问处于同一个Java包中的其它应用实例。JCRE有它自己的上下文,这个上下文与其它的应用实例的上下文不同,它有特殊的系统权限,以至于它可以执行应用实例的上下文所不能执行的操作。
3 结论
在智能卡的使用中,安全性总是最重要的方面。Java语言由于其良好的安全性能,自然成为了对安全性、保密性和可靠性等要求严格的智能卡应用的首选。 通过在Java卡虚拟机中实现事务处理机制,在应用中可以保证卡的数据不会因误操作或读卡器的不正常中断而受到破坏。 而且Java卡中的防火墙技术保证了Applet能在一个高安全模式下建立、安装和运行,防止了有恶意的程序对系统其他部分的破坏,同时Java卡平台也保证发行者可以通过扩展加密算法类库,来定义进一步的安全性要求和策略以满足它们特定产业的要求。正因为Java卡平台能提供这些多方面的安全性能,所以它的应用范围也越来越广泛。
参考文献:
[1] 陈华,李大兴. 智能卡的安全性[J]. 通信保密,2000,83(3):26-29.
[2] Wolfgang Rankl,Wolfgang Effing. 智能卡大全----智能卡的结构功能应用(第3版)[M].北京:电子工业出版社,2005.
[3] 刘慧. Java智能卡的安全性分析与研究[硕士学位论文][D]. 济南:山东大学,2008
[4] 王爱英.智能卡技术[M].北京:清华大学出版社,1996.
[5] 刘嵩岩. 毛志刚. 叶以正. Java 卡的研究与实现[J]. 微电子学,2000,1(6).
[6] 马多贺. Java智能卡开发及应用技术研究[D]. 哈尔滨工业大学学报, 2006,6.