土木在线论坛 \ 电气工程 \ 建筑智能化 \ Java智能卡及其安全性分析

Java智能卡及其安全性分析

发布于:2005-06-18 16:24:18 来自:电气工程/建筑智能化 [复制转发]
华南师范大学物理与电信工程学院 张健 刘寿强
广州保利网络科技有限公司 周海涛


--------------------------------------------------------------------------------

摘 要:智能卡已经越来越多的出现在人们的生活之中,其安全性也越来越重要,现在Java智能卡已普遍使用。本文就智能卡的应用以及Java语言结构体系说明了Java 智能卡的工作原理,并着重分析Java语言、Java平台的安全性及其安全机制,论述了Java 智能卡的安全性。

关键词:智能卡, Java Card ,安全机制

1 智能卡简介

智能卡,也称为CPU卡,集成了微处理芯片、CPU、ROM、RAM、COS和EEPROM,能储存信息和图像,由于具备读/写能力,信息可随时更新。相应的,编码信息受到保护,可防止被偷窃或遭受物理性损坏。而近来,由于智能卡的优点越来越被人们认可,它的应用范围也越来越广泛。现在的智能卡主要分为五大类:存储智能卡、处理器智能卡、电子钱包、安全卡、Java卡。

智能卡是硬件的便携部分,它必须借助于其它设备才能获取对某种显示设备或是网络的访问。这种设备通常称阅读器,阅读器使应用程序能够从智能卡接收或是发出命令。在市场上有许多种类的阅读器,其中最为流行的是serial、PCCard和keyboard模型。智能卡一般通过两种方式与阅读器互通信,一种是接触智能卡:当智能卡前端的芯片与阅读器相接触时,两者之间才传递信息。另一种是无接触智能卡:这种信息传递通过天线来进行,省去了手工插入或拔出智能卡的动作。当卡靠近阅读器,信息就传递并自动进行读取。

同时智能卡能在世界各地推广,在不同系统中发挥其作用,国际规范的制定是必不可少的。最基本的智能卡标准是ISO7816。ISO7816标准规定了卡用塑料的一些物理特性(如图1,图2略),包括温差范围、弹性、电子触点的位置以及内置微芯片和外界进行信息交换的方式等。还有另外一些标准分别对智能卡通信以及智能卡的不同功能进行规范。在本文中主要讨论的是Java Card,它首先遵循ISO7816的规范,另外它还遵循Java卡的一些规范

2 Java在智能卡中的应用

Java智能卡( Java Card)是将智能卡(Smart Card)技术与Java语言编程和开发相结合的技术 ,它克服了智能卡硬件和软件开发技术太专业、开发周期长等阻碍智能卡普及的缺点,允许智能卡以及其他作了限制的存储设备运行Java编写的应用程序。Java智能卡技术制定了一个安全、便捷且多功能的智能卡平台,归并了许多Java语言的优点。现在它广泛应用于金融、公益事业、医疗卫生、体育、社会保险、工商税务、组织结构、电信、交通管理、智能建筑以及旅游等领域的电子数据和身份识别。

Java Card解决方案是用只支持具有Java语言特征的子集和分开的模型来实现Java C 虚拟机。因此Java 卡技术基本上定义的是一个平台,为 Java 卡平台编写的应用程序称为Applet。由于是分开的虚拟机结构。此平台在时间上和空间上分布在智能卡和台式机环境之间,由3个技术要求组成,即Java Card 2.1 API技术要求,Java Card 2.1运行环境技术要求以及Java Card

2.1虚拟机技术要求。

Sun日前宣布将推出 Java Card 技术2.2版,将进一步领导的Java Card的开放式安全标准,加强对多重应用智能卡的支持。

Java 卡有点象一部功能齐全,但规模较小的电脑,其硬件主要是为了保证 Java 卡的运行环境的需要,其最小的硬件配置要求为:
(1)512 bytes RAM:主要用于存放程序执行时的堆栈、暂存资料以及作为I/O的缓冲区。
(2)24 KB ROM: 主要用于存放操作系统以及运行环境(Runtime Environment),如 JAVA 虚拟机、Applet 等。
(3)8 KB EEPROM:用于储存我们开发并装载至 Java 卡上的Applet。
(4)8-bit processor: Java 卡需要至少8位的处理器支持。

Java 卡可以想像为一部 PC 的缩影,它的内部结构由 OS、native functions、Java VM(Java 虚拟机)、Java Framework 以及架构在此上的应用程序(Applet)所构成。图3为 Java 卡内部结构:在此结构中,最底层的 OS(操作系统) and Native Functions(基本函数)是负责低层的处理工作,如同 PC 的操作系统。Java 虚拟机处于OS and Native Functions 之上,它的存在实现了卡接口的统一和编程语言的统一。并且也隐藏了卡底层各个卡供应商不同的技术。Java 卡 Framework 为开发人员定义了一整套编程接口类,主要负责执行 Java 卡 Applet 以及提供 Applet 执行所需要的环境。Industry Add-on Classes 则是服务方所提供的类,使得企业与公司能够提供属于自己的服务程序。Java 卡的最上层就是所谓的 Java 卡 Applet,也就是我们要进行开发的应用。如图3所示,一个 Java 卡可以执行多个 Java 卡 Applet。每个 Applet 是靠 AID (应用ID号)来识别的。但是要特别注意,Java 卡的执行环境并不支援多线程,所以一次只能执行一个 Applet,并且 Applet 与 Applet 之间也有防火
  • king
    king 沙发
    3 JAVA智能卡的安全性分析

    由于智能卡的广泛使用,其安全性已经成了非常重要的一个因素。Java智能卡安全性应从整个系统全局进行考虑。

    3.1 Java的安全性

    从Java技术提供者的角度来看,Java的安全性包括以下两个方面:Java平台是一个安全、现成的平台,在平台上可以以一种安全的方式实现基于Java的功能;Java所实现的安全工具和服务使得一些领域(如企业)对安全性的需求得以满足。Java的安全性主要体现在以下几个方面:
    (1)Java语言和平台:Java语言是很严格的,它没有任何不安全的结构。Java平台包括Java语言、JVM和应用程序界面(API库)。Java卡平台支持智能卡应用的Java编程语言和虚拟机描述的子集。因此Java卡平台继承了Java语言的安全性,Java语言的安全性是Java卡平台安全性的基础。
    (2)基本安全结构:Java版本均采用了基本的安全结构。任何应用程序的安全是由它所运行的平台的安全性和设计应用它的安全性功能所决定的,安全的Java卡平台保证Applets能在一个高安全模式下建立、安装和运行,它同时也保证发行者来定义进一步的安全性要求和策略以满足它们特定产业的要求。因为安全性功能被建立在平台内,Applet开发者就能集中精力来为Applet定义一个安全策略,一个安全策略在Applet中提供的安全性有:
    · 鉴定——对Applet发布命令的主机应用的身份应被鉴定,在对象共享中,服务器Applet在给予一个服务前也应验证客户Applet的身份。
    ·保密性——Applet数据的隐性必须被保护。对于安全数据没有合法的认证就不能被访问,而对于保密数字比如PINS和私有的密码匙,永远都不许离开卡。
    ·正确性——Applet数据的正确性必须被保护,和适当的身份验证。同时不能改变Applet数据,数据改变应通过错误检查来保护。
    (3)字节代码验证和类型安全:字节代码的验证已成为发现潜在安全漏洞的关键。系统中一般用验证器JVM在运行代码段之前进行一系列的测试。因为验证器独立于Java语言或编译器,所以它也可以核查是否有Java源语言派生的字节代码。Java安全结构的最重要的目标是保证正确的Java语言规范和JVM规范。
    (4)签名应用:JDK1.1增加了对数字签名的支持,这样一个Applet的类文件在开发结束后就可以和类文件的签名一起标记并存储在JAR(Java Archive)格式中。在每一次安装过程中,可以详细指明哪个签名者(或公钥),这样当一个数字签名正确的Applet下载时,一旦Applet的签名者被验证为可信,这个Applet就可以像本地代码一样自由访问系统。

    3.2 Java卡平台的安全特性

    在Java平台运行时间,安全以沙盒模型思想中心,一个Applet可以围绕着它的沙盒运行但不能超出它。沙盒模型是由Applet防火墙来补充的,JCRE为每个运行Applet分配一个上下文(context),对一个对象的访问是由Java卡解释器控制的,它的控制基于被访问对象的类型和当前活动的context是否是该对象的context。除此而外,Java卡运行时间规则指定了一组JCRE执行要求以保证运行时间安全。

    Java卡平台的安全性由Java语言的安全性和定义在Java卡平台之上的附加安全保护机制组成。由于智能卡有许多的安全考虑,发行者期望智能卡有一个能够满足特定要求的安全计算平台, Java卡平台上的附加安全特性有:临时和永久对象;原子体和事务;Applet防火墙;对象共享;Applet中固有方法。

    3.3 java卡平台的安全机制

    安全是一个链,任何一个薄弱环节都可破坏它,Java卡安全特性通过一组机制来加强,
    Applet开发处理和运行安全程序针对不同的级别进行加强。java卡平台的安全机制体现在以下几个方面:
    (1)编译时间检查: Java编辑器进行着广泛且严密的编译时间检查,以便尽可能多地发现错误,而Java是一种类型严格的语言,编写系统没有漏洞。
    (2)类文件的证实和子集检查:虽然一个可信的编辑器能够保证Java源代码不侵犯安全规则,但类文件来自于不可信的互联网络,在Java环境中,所有装载的类文件都被一个验证器检查。类文件验证器的大多数通道上通过类文件保证它们有正确的格式和字节代码遵守一组结构限制。另外Java卡技术定义了Java语言的一个子集,转换器必须进一步检查类文件以确保只有那个子集中的数据被应用,这个过程被称为子集检查,在这一步中,转换器检查Applet不能侵犯java子集原则。
    (3)CAP文件和出口文件验证:一个Applet的类组成了一个或多个包,转换器将所有类集中于一个包,并将它们转换为一个CAP文件,同时转换器还产生了一个出口文件。由于有限的内存空间和计算能力,一个智能卡上的CAP文件验证器在卡外运行,一个CAP文件被装载在一个Java智能卡之前,验证器对它进行了静态检查。出口文件验证即检查出口文件内部,又检查它相应的CAP文件以确保它有正确格式,并满足由Java卡虚拟器条文要求的限制原则。
    (4)安装检查:安装安全包括两层,在第一层由是安装器和JCRE加强的标准安全保证,第二层是由发行者指示的安全策
    2005-06-18 16:24:18

    回复 举报
    赞同0
这个家伙什么也没有留下。。。

建筑智能化

返回版块

12.41 万条内容 · 402 人订阅

猜你喜欢

阅读下一篇

楼宇自动化系统(BAS)的应用

一座现代化、智能型的楼宇,应采用楼宇自动化控制系统。本着系统既要先进、实用、可靠,又要做到投资合理、效益最佳的目的,楼宇自控系统依据暖通空调、给排水及电气等专业要求,对楼内的机电设备和其它装置进行集中监视、控制和管理,使这些设备安全、可靠、高效地运行,最大限度地满足业主对现代化楼宇管理的需求,创造安全、健康、舒适宜人和能提高工作效率的优良环境,节约能源,减少维护人员。 本文章介绍楼宇自动化系统在给排水系统、变配电系统、照明系统及电梯系统中的使用。

回帖成功

经验值 +10