(计算机系统结构专业论文)基于可信计算的java智能卡虚拟机设计与实现.pdf_第1页
(计算机系统结构专业论文)基于可信计算的java智能卡虚拟机设计与实现.pdf_第2页
(计算机系统结构专业论文)基于可信计算的java智能卡虚拟机设计与实现.pdf_第3页
(计算机系统结构专业论文)基于可信计算的java智能卡虚拟机设计与实现.pdf_第4页
(计算机系统结构专业论文)基于可信计算的java智能卡虚拟机设计与实现.pdf_第5页
已阅读5页,还剩87页未读 继续免费阅读

(计算机系统结构专业论文)基于可信计算的java智能卡虚拟机设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 j a v a 智能卡技术和可信计算技术是当前信息安全领域中的两个主要研究方向。 一方面,j a v a 智能卡以其特有的多应用性,越来越受到业界的重视,并得以广泛 应用。与此同时,j a v a 智能卡的多应用性也引发了相应的安全问题。目前已经出 现了多种针对j a v a 智能卡计算环境的攻击手段,这些不安全因素在一定程度上妨 碍了j a v a 智能卡的进一步普及和应用。 另一方面,为了增强现有p c 终端体系结构的安全性,于1 9 9 9 年成立的可信 计算组织( t r u s t e dc o m p u t i n gg r o u p ,简称t c g ) 也推出了其可信计算技术规范, 其目的是通过建立信任根和可信度量机制,力争在现有的,不可信p c 环境中建立 起可信的计算环境。但由于当前缺少基于可信计算技术的操作系统,因此,当前 可信计算技术在实际应用中同样面临着一些难以解决的技术问题。 本论文在对这两种技术进行分析和研究的基础上,探索性地提出向j a v a 智能 卡虚拟机中引入可信计算技术,以提高j a v a 智能卡计算环境安全性的设想,并以 此为基础设计和开发了一套基于可信计算技术的j a v a 智能卡卡内虚拟机。 关键词: j a v a 智能卡可信计算技术可信度量j a v a 智能卡卡内虚拟机 a b s t r a c t j a v as m a nc a r da n dt r u s t e dc o m p u t i n gt e c h n o l o g ya r ec u r r e n t l yt w om a i nr e s e a r c h d l r e c t i o ni nt h ef i e l do fi n f o r m a t i o ns e c u r i t y o nt h eo n e h a n d ,j a v as m 卸nc a r di sg e t t i n g m o r ea n dm o r ea t t r a c t i v e ,a n dw i d e l ya p p l i e df o ri t sm u l t i a p p l i c a t i o n u 响n u i l a t e l v c o 玎e s p o n d i n gs a f e t yi s s u e sa r ea l s ob r o u g h t , b e c a u s eo fi t sm u l t i a p p l i c a t i o n m o r ea n d m o r ea t t a c k sa g a i n s tj a v ac a r dc o m p u t i n ge n v i r o n m e n ta r i s e r e c e n t l y , a n dd e f i n i t e l v h a m p e ri t sf u r t h e rp r e v a l e n c ea n da p p l i c a t i o n s o nt h eo t h e rh a n d ,i no r d e rt oe n h a n c et h es e c u r i t yo ft h e e x i s t i n ga r c h i t e c m r eo f t h ep ct e r m i n a l ,t h et r u s t e d c o m p u t i n gp l a t f o r ma l l i a n c es e t t i n gu pi n19 9 9a l s o 1 a u l l c h e ot h e i rt r u s t e dc o m p u t i n gt e c h n i c a ls p e c i f i c a t i o n s t h e g o a lo ft h e i rs t u d i e si s t ob u i l dat r u s t e dc o m p u t i n ge n v i r o n m e n ti nt h ee x i s t i n gu n t r u s t e dp cb y f i r s t l ys 甜i n g u par o o to ft r u s t , a n dat r u s t e dm e a s u r e m e n tm e c h a n i s m h o w e v e r , f o r i a c ko fc r e d i b l e o p e r a t i n gs y s t e mb a s e do nt h et r u s t e dc o m p u t i n gt e c h n o l o g y , t h ec u r r e n tt 1 1 l s t e d c o m p u t i n gt e c h n o l o g yi sa l s of a c i n gt h ed i f f i c u l ti s s u e si np r a c t i c a lu s e i nt b i sp a p e r , b a s e do nt h ea n a l y s i so ft h e s et w ot e c h n o l o g i e s ,ap r o p o s a l 锄d 托i a t e dd e s i g na n di m p l e m e n t a t i o no ft h et r u s t e dc o m p u t i n gb a s e dj a v ac 砌v i m 出 m t u ma l ep r e s e n t e df o re n h a n c i n gt h es e c u r i t yo f j a v ac a r d c o m p u t i n ge n v i r o 姗e n t s b yi n t r o d u c i n gt r u s t e dc o m p u t i n gt e c h n o l o g yi n t ot h ej a v ac 砌v i r t l l a jm a c h i n e k 啊o r d sj a v as m a r tc a r d t r u s t e d c o m p u t i n gt e c h n 0 1 0 9 y t r u s t e d m e a s u r e m e n to n - c a r dj a v ac a r dv i r t u a lm a c h i n e 创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中 不包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学 或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所 做的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:日期捌:2 :至罗 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论 文在解密后遵守此规定) 本人签名: 导师签名: 第l 章绪论 第1 章绪论 本文分析了j a v a 智能卡技术应用和可信计算技术应用在当面临的主要安全性 问题。在国内外研究的基础上,探索性地将j a v a 智能卡技术与可信计算技术结合 起来,确定了课题的主要研究内容和研究思路。 1 1 课题的来源及意义 j a v a 智能卡技术和可信计算技术是当前信息安全领域中的两个主要研究方向。 一方面,j a v a 智能卡以其特有的多应用性i l 】,越来越受到业界的重视,并得以广泛 的应用。另一方面,为了增强现有p c 终端体系结构的安全性,于1 9 9 9 年成立的 可信计算组织( t r u s t e dc o m p u t i n gg r o u p ,简称t c g ) 也推出了其可信计算技术规 范,其目的是通过建立信任根和可信度量机制,力争在现有的不可信p c 环境中建 立起可信的计算环境1 2 】。 但是,当前无论是j a v a 智能卡技术还是可信计算技术在面向应用的转化过程 中,都面临计算环境的可信和安全性问题。一方面,目前已经出现多种针对j a v a 智能卡安全计算环境的攻击1 3 】。另一方面,由于现在尚无支持可信计算技术的操作 系统问世,因此,目前在建立可信度量机制和信任传递链上还没有一种有效可行 的技术方案,这使得可信计算技术在其应用的过程中,同样面临着诸多技术难题。 通过对上述两种技术的分析和研究,我们认为在当前条件( 主要是还没有基 于可信计算平台,即t p m 的新型操作系统出现) 的限制下,在现有的个人电脑系 统中建立可信计算机制的难度很大。这主要是因为,由t p m 建立起来的可信源, 无法通过建立信任传递链的方式向外传递。 既然目前在p c 环境中建立信任传递链的难度很大,那么是否可以换一种思路, 将需要处理的关键应用引入具有可信计算环境的平台或终端中去执行,从而实现 可信计算呢。我们认为对于某些类型的应用( 例如,针对电子商务中的交易应用、 支付应用或电子政务中的签名应用等) 采用这种思路是完全可行的。 分析个人电脑( p c ) 计算环境面临的安全问题不难发现,当前的p c 操作系统 没有安全的输入和输出设备是其计算环境不可信的主要原因之一。例如,用户从 键盘输入的数据和从显示设备上看到的数据都有可能被篡改,且位于p c 计算环境 中的应用程序也可能会被劫持。 另一方面,对于p c 操作系统用户来说,操作系统具有复杂性和不可控性。因 此,基于当前p c 操作系统建立可信计算机制的难度很大。解决上述问题的途径之 一,是设计一个软硬件系统相对简单,却拥有可信计算环境的计算平台。然后通 过这个可信的计算平台来配合不可信的p c 计算环境,实现某类对安全性要求很高 2 基于可信计算的j a v a 智能卡虚拟机的设计与实现 的应用。 如果对原有智能卡设备( 例如u s b k e y ) 进行改造,添加显示和键盘等输入输 出设备,使用户作为整个关键计算的直接参与者加入进来,就可进一步提高关键 计算的安全性和可信性。我们认为这样的平台已经具备了可信计算安全平台的基 本要素,如图1 1 所示。 数据瀛 - - ,空蝴 图1 1 用户参与的可信计算平台 传统智能卡技术在应用功能上存在着单一性的不足,而j a v a 智能卡则具有多 应用的优势,人们可以根据需要开发适合自己所需的j a v a 应用程序,所以选用j a v a 智能卡来构建可信计算安全平台能够最大限度地提高可信计算平台的通用性。 需要注意的是,在引入j a v a 智能卡的同时,也必须面对j a v a 智能卡自身面临 的安全性问题。而j a v a 智能卡的安全性与其主要部件,j a v a 智能卡卡内虚拟机的 安全性密不可分,因此,设计一个可信的j a v a 智能卡卡内虚拟机具有重要的意义。 伴随互联网和移动通信技术的发展,j a v a 智能卡正以不可替代的优势成为未 来智能卡市场的发展趋势【4 】。尤其是在欧美等国,j a v a 智能卡的应用已经相当普及 【5 】。因此,对j a v a 智能卡及其应用技术进行深入的研究,开发具有自主知识产权 的j a v a 智能卡产品,以适应不断发展的,网络时代的应用需求,也是本课题研究 的意义之一。 针对上述问题,北京大明五洲公司结合自身发展需求,提出了“可信通用计 算平台”的研究课题,其核心思想是以j a v a 智能卡为基础,将j a v a 虚拟机移植到 当前己被广泛使用的安全设备智能密码钥匙u s b k e y 中,使利用j a v a 语言开 发多应用程序的灵活性与u s b k e y 的安全性相结合,从而实现一种可应对各类安 全计算应用( 例如,网上支付,以及数字文档可信签名) 需求的“可信通用计算 平台 。本人作为该课题的主要设计和开发人员之一,参与了可信j a v a 智能卡虚 拟机方案的设计、开发,以及集成测试等工作。 1 2 当前研究现状 随着j a v a 智能卡的广泛应用,有关j a v a 智能卡技术安全性的研究也开始逐渐 受到人们的重视。如何既确保j a v a 智能卡虚拟机的执行效率和性能,又确保其计 第1 章绪论 算环境的安全性一直是这一领域的研究热点。 当前,j a v a 智能卡的安全计算环境主要依靠以下三种安全机制来实现,即代 码类型安全校验机制、运行时的防火墙机制、对象间的安全共享访问机制。 从本质上看,j a v a 智能卡技术是j a v a 虚拟机技术向有限资源设备平台的移植。 而j a v a 虚拟机则可以被看作一台抽象的,面向堆栈结构的计算机,拥有自己的指 令集和运行存储空间1 6 。 j a v a 智能卡应用程序被称为a p p l e t 。在经过卡外虚拟机编译和转换后,a p p l e t 将被转换为虚拟机指令集,并以字节码的形式出现。而这些字节码再经由卡内虚 拟机执行,从而实现a p p l e t 中设计的应用程序逻辑。 从功能上看,基本的j a v a 智能卡虚拟机方案主要负责解释执行字节码指令, j a v a 虚拟机通过其核心部件解释器,将字节码翻译为与指定硬件系统相关的 本地代码,并执行这些代码。这种方案适合资源相对较少的嵌入式设备。除基本 方案外,为了提高字节码的执行效率,还相继出现了动态编译技术、j i t 编译执行 技术【7 , 5 0 、h o t s p o t 技术,和以硬件方式实现的j a v a 智能卡虚拟机技术【8 ,1 1 】。但这些 技术,在安全性、资源的消耗性以及灵活和通用性上都存在着一定的局限。可以 说,当前,如何构造一种既具灵活性又具通用性的高效字节码解释器是j a v a 智能 卡领域中的一个热门研究方向。 此外,j a v a 智能卡在实际应用中可能面临各种形式的安全性攻击。例如,针 对j a v a 语言类型安全机制的攻击【9 】和j a v a 智能卡共享访问机制的攻击【l o 】等。而这 些j a v a 智能卡安全问题则是一个涉及代码类型校验机制、运行时防火墙机制、安 全下载机制等多方面因素的问题。例如,j a v a 智能卡a p p l e t 在被编译和转换为字 节码指令后,还必须对其进行安全性校验,如a p p l e t 运行过程中的栈溢出检查、 非法跳转指令检查和非法类型转换检查( 将整数型变量转换为对象引用型变量的 数据类型转换操作等) 。 理想情况下,可以通过对j a v a 智能卡指令类型系统进行形式化描述,并结合 j a v a 智能卡虚拟机的特点,采用在卡外生成代码,而在卡内进行校验的方法解决 部分上述问题【1 2 1 。但是,由于当前j a v a 智能卡自身拥有的资源较少,因此,这一 解决方案并没有得以广泛应用。此外,当前j a v a 智能卡运行机制在某些设计( 例 如共享对象访问机制【l o 】) 上同样存在着安全隐患,这也是通过单独的安全类型校 验措施所无法解决,而需要进一步研究的问题之一。 为此,本人尝试性地在现有j a v a 智能卡系统中引入可信计算技术【2 j ,以期能 够进一步解决j a v a 智能卡当前所面临的计算环境安全性问题。 4 基于可信计算的j a v a 智能卡虚拟机的设计与实现 1 3 论文研究的主要内容和结构安排 本文将对j a v a 智能卡所面对的安全性问题进行讨论,对j a v a 智能卡技术规范 2 2 中规定的j a v a 智能卡卡内虚拟结构进行改进,结合可信计算思想,提出并实现 一套基于可信计算的j a v a 智能卡虚拟机方案,以期提高和增强j a v a 智能卡的应用 安全性。其中主要参考了t c g 规范中制定的可信度量机制和可信报告机制。本文 的研究内容主要包括两部分,即j a v a 智能卡虚拟机技术和可信计算技术的研究和 安全性分析,以及基于可信度量的j a v a 智能卡虚拟机的设计与实现。 鉴于本文介绍的虚拟机设计与实现方案的具体内容涉及项目研发所有者 大明五洲公司的知识产权,因此本文没有给出该方案的具体实现细节。 本论文的结构安排如下: 第1 章绪论,简要描述j a v a 智能卡的应用发展概况和当前的主要研究方向, 指出了当前j a v a 智能卡应用所面临的安全问题,确定本文的主要研究内容和研究 思路。 第2 章j a v a 智能卡及j a v a 智能卡虚拟机技术研究。本章首先对j a v a 智能卡 技术进行了简要介绍。然后,针对j a v a 智能卡当前运行机制的安全性进行分析, 指出了j a v a 智能卡面对的主要安全威胁,为建立可信j a v a 智能卡卡内虚拟机提供 分析依据。 第3 章可信计算技术研究,本章首先对可信计算技术进行简要的介绍。接下 来对当前基于可信计算技术的应用安全性进行了分析。其中,重点分析了在p c 环 境中建立可信度量机制的难点所在,为其后在j a v a 智能卡卡内虚拟机中引入可信 计算机制提供了理论依据。 第4 章基于可信度量的j a v a 智能卡卡内虚拟机分析与设计。本章给出了一套 基于可信计算技术的j a v a 智能卡卡内虚拟机设计方案,并尝试性地给出了该方案 的形式化描述。 第5 章基于可信度量的j a v a 智能卡卡内虚拟机实现方案。在分析和设计的基 础上,给出了可信j a v a 智能卡卡内虚拟机的实现方案。 第6 章总结全文并对未来的研究方向进行了展望。 1 4 本章小结 本章介绍了基于可信计算的j a v a 智能卡卡内虚拟机这一课题的来源、意义, 以及研究对象的背景历史和当前的研究现状。总结出目前研究工作的重点,并阐 述了本课题的研究目标和方向。最后,对论文的内容安排进行了总体介绍。 第2 章j a v a 智能卡及j a v a 智能卡虚拟机技术研究 5 第2 章j a v a 智能卡及j a v a 智能卡虚拟机技术研究 j a v a 智能卡是一种能运行j a v a 语言程序的智能卡,它在资源有限的智能卡环 境中支持j a v a 语言的一个子集,是j a v a 嵌入到智能卡中的一种新的应用【1 3 1 。j a v a 智能卡的出现,使原有嵌入式设备只能实现单一或有限应用的局面得以突破,使 得真正意义上的一卡多应用成为现实。 2 1j a v a 智能卡原理 j a v a 智能卡是一种基于j a v a 语言的智能卡技术。即在智能卡原有的硬件系统 之上,构造的一个支持j a v a 程序下载、安装和运行的软硬件系统。 j a v a 智能卡不仅保留了智能卡应用自身具体备的便捷性和安全性,同时,还 继承了j a v a 技术的硬件无关特性,将智能卡应用程序的开发同智能卡硬件系统相 分离,简化了应用程序的开发,提高了应用程序的可重用性。j a v a 智能卡系统主 要包括以下功能模块: 智能卡硬件系统。包括微处理器、易失( r a m ) 和非易失性存储器 ( e 2 p r o m ) 、通信电路、加密协处理器等模块。 与智能卡硬件系统相关的本地方法集。完成基本的i o 通信、存储、加密 等对硬件进行控制操作的本地方法集( n a t i v em e t h o d ) 。 j a v a 卡虚拟机j c v m ( j a v ac a r dv i r t u a lm a c h i n e ) 。在智能卡硬件系统上 通过软件构造的用于解释执行字节码的虚拟计算机,以及其他一些安全机 制,如卡内防火墙安全机制和对象共享机制等。 j a v a 智能卡基础类库( j a v ac a r da p i ) 。包括支持j a v a 智能卡运行的核心 类库和应用扩展类库。 j a v a 智能卡运行环境j c r e ( j a v ac a r dr u n t i m ee n v i r o n m e n t ) 。包括j a v a 智能卡卡内虚拟机、a p i 类库、事务处理、数据通信( a p d up a s e r ) ,以 及逻辑通道等。 j a v a 智能卡应用管理组件( j c r eo b jm a n a g e r ) 。完成对卡上a p p l e t 的安 装、注册和删除。 智能卡本地操作系统( c a r do p e r a t i o ns y s t e m ) 。j a v a 智能卡系统可以建立 在原本已有操作系统的智能卡上。这样的j a v a 智能卡可以进一步提高多应 用性,也可以保留原有的智能卡应用。此外,还可大大降低j a v a 智能卡系 统的构造复杂度。该模块是可选的。 j a v a 智能卡应用( j a v aa p p l e t ) 。运行于j a v a 智能卡上的j a v a 应用程序 a p p l e t 。 6 基于可信计算的j a v a 智能卡虚拟机的设计与实现 上述各功能模块之间的关系如图2 1 所示: j a v ac a r dr u n t i m ee n v i r o n m e n ts t r u c t u r g i a ac a r dj a v ac a r d j a i :- ac a r d a 翔l d l a p 鹏2 聃3 i = 瞄d 朗诎 0, 加锄 船z 涮a 班 a p d u 叮 l n 咖知晒岫d 】c r e 嘶脚l k c a r do p d r a a o as y s t e m ( o p t i o n ) 1 e e f r o m 臌伪f 1 c a r dh a 栅a 倒 a p e u c t l m m a n d 图2 1j a v a 智能卡体系结构【1 4 】 2 2j a v a 智能卡虚拟机技术 j a v a 智能卡虚拟机j c v m ( j a v ac a n dv i r t u a lm a c h i n e ) 是用于支持字节码运行 的虚拟计算机。正是有了j a v a 智能卡虚拟机,j a v a 智能卡平台才具备了硬件无关 的特性。与p c 平台不同的是,由于j a v a 智能卡拥有的资源有限,因此无法在j a v a 智能卡中实现j c v m 的全部功能。针对这一限制,典型的解决方案是将j a v a 智能 卡虚拟机按其负责的功能进行折分,将其划分为卡外和卡内虚拟机两个部分【1 5 1 。 其中,卡外虚拟机工作于p c 或工作站环境中,负责将编译后的类文件转换成 更加紧凑、高效的安装下载文件c a p 文件( c o n v e r t e da p p l e t ,简称c a p ) 。j a v a a p p l e t 语言经转换后将形成与j a v a 语句相对应的字节码( b y t e c o d e ) ,并被保存 于c a p 文件的方法( m e t h o d ) 组件中。 而卡内虚拟机则工作于j a v a 智能卡平台中,通过将c a p 中的字节码转换为智 能卡硬件和操作系统可以识别的本地方法集这一方式来执行这些字节码。卡内虚 拟机的设计不仅直接关系j a v a 智能卡的运行效率,还直接影响j a v a 智能卡计算环 境的安全性。因此,卡内虚拟机是j a v a 智能卡的核心部件,也是整个系统设计和 实现的关键所在,j a v a 智能卡虚拟机的总体结构如图2 2 所示: 第2 章j a v a 智能卡及j a v a 智能卡虚拟机技术研究 7 c l a s s f i l a s 图2 2j a v a 智能卡虚拟机的总体结构( j c v ma r c h i t e c t u r e ) 2 3j a v a 智能卡虚拟机面临的安全性问题 以嵌入式j a v a 为支撑的智能卡可以为用户提供一个广阔的应用开发平台。按 照s u n 公司发布的j a v ac a r da p p l e t 开发规范i l6 。,用户可根据自己的需要开发各类 应用程序。这使得j a v a 智能卡平台更具通用性。另一方面,也直接导致j a v a 智能 卡计算环境的安全性将面临更大的威胁。这是因为,从某种意义上讲,j a v a 智能 卡平台已成为一个小型的多应用系统。因此,恶意的应用程序可能会与合法应用 程序一样被下载到j a v a 智能卡中。从而像p c 平台一样,遭受恶意代码的攻击。当 前,针对j a v a 智能卡的主要攻击大致可以分为两类:即针对j a v a 语言类型系统的 攻击【9 , 1 7 , 1 8 1 和针对j a v a 智能卡对象隔离和共享机制的攻击1 0 , 1 8 】。本章将就这两类安 全性问题展开分析和讨论。 2 3 1 基于j a v a 类型系统的安全性问题 2 3 1 1 攻击原理 j a v a 语言从语言层上克服了很多其他语言所面临的传统安全问题。使用j a v a 语言编写的应用程序无法直接访问硬件,或任意地访问内存空间。而这取决于j a v a 的虚拟机机制和j a v a 语言的类型检查机制。在语言层上,j a v a 语言没有像其他语 言那样提供指针数据类型,而且j a v a 语言的类型一致性原则也禁止用户在编写j a v a 代码时,执行某些强制类型的数据转换操作。 例如,在c 语言中可以使用语句缸宰p = ( i n t 幸) 0 ,来声明一个指针类型的变 量,让其指向存放常数0 所在的内存空间。但实际上,该指针还可被用于指向 系统中的任意一内存地址空间。这一灵活的特性最终衍生出许多典型的攻击手段。 例如,使用缓冲区溢出攻击系统程序的代码、数据以及受保护的机密信息【1 9 , 2 0 1 等。 在j a v a 智能卡中,j a v a 虚拟机将对象创建并组织到堆空间【2 1 】中,然后通过提 8 基于可信计算的j a v a 智能卡虚拟机的设计与实现 供引用( r e f e r e n c e ) 类型的方式向用户开放访问这些对象的途径。一个引用型变 量既可以间接,或直接地指向某一对象拥有的内存区域,也可指向该对象所属内 存空间中的一个具体的偏移位置。 j a v a 智能卡虚拟机使用基于符号( t o k e n ) 的动态链接机制【2 1 1 。即,卡外虚拟 机在对j a v aa p p l e t 程序进行编译时,会将对象引用( 即物理地址) 直接编译为符 号( t o k e n ) ,而卡内虚拟机在解释执行字节码时,再将这些t o k e n 动态地解析为 要访问的对象的物理地址,从而实现对卡内对象的访问。这一机制有效地解决了 上面介绍的内存地址空间的安全访问问题。此外j a v a 语言严格规定了类型一致性 原则,不允许其他数据类型到引用类型的强制性转换。例如,像图2 3 中代码所示 的那样,将一个引用类型的数据赋给i n t 型变量的操作是非法的。 p r i x r a t ei r ai l l e g a l t y p e f u a ( o b j e c tr e f ) ( r d 啪r 匠 ) ( c o l i a l o a d0 川哿第0 号局部变量中的数据 ( o x ls ) 砌d 载到操作数栈的栈顶 h t l l m 所旬调用者返加一个整型数据 r o x 7 奶 图中字节码a t o a d o 和i r 甑髓的1 6 进制值分别为o x l 8 和0 x 7 9 图2 3 违反j a v a 语言类型一致性原则的j a v aa p p l e t 代码及其字节码 上述代码中,变量r e f 为o b j e c t 型的引用型变量,而函数i l l e g a l t y p e f u n 的返 回值为一个整型变量。由于上述代码违反了j a v a 语言的类型一致性原则,将无法 通过j a v a 语言类型校验机制的检查。考虑下面的正确代码。 舱m ti l l e g a l t y p e f u n ( o b j e c tr e f ) r d :啪2 4 ; b i p u s h2 4 巾将2 4 压入操作数栈栈顶 ( o x lo0 x 18 ) 砌口载到操作数栈的本顶 蛔钿m ,向调用者返加个整型数据 字节码b 细懈h 和好甑姐的1 6 进制值分别为o x l o 和0 x 7 9 , 操作数2 4 的1 6 进制值为o x l 8 图2 4 符合j a v a 语言类型一致性原则的j a v aa p p l e t 代码及其字节码 如果攻击者能够对j a v aa p p l e t 对应的字节码进行篡改,将打破j a v a 语言的类 第2 章j a v a 智能卡及j a v a 智能卡虚拟机技术研究 9 型一致性机制,从而实现恶意攻击。例如,攻击者将上述字节码序列中的“0 x 1 00 x 1 8 0 x 7 9 ,更改为“0 x 1 80 x 7 9 ,那么将出现图2 3 中所述的违反j a v a 语言类型一 致性原则的代码攻击。 正如前面介绍的那样,受j a v a 智能卡中资源的限制,j a v a 智能卡不得不将j a v a a p p l e t 的代码转换和类型检验工作交由卡外虚拟机执行。然后,再由j c r e 的下载 安装组件将包含字节码的c a p 文件下载到j a v a 智能卡内瞄】,并最后交由卡内虚拟 机执行。由于卡外虚拟机的转换和校验工作发生于不可信的p c 环境中,因此,存 在着攻击者篡改字节码,以实现攻击j a v a 语言类型系统的可能性。 2 3 1 2 防范手段 针对上述攻击,可以采用以下两种防犯手段: 基于字节码签名的安全下载机制。 即在安全的p c 环境下,使用p i g 机制对卡外虚拟机转换的字节码进行签名。 然后通过设计相应的j c r e 安全下载组件,对将要下载到卡内的字节码进行验证, 以确保其完整性四】。采用这种安全下载机制可有效地防范针对j a v a 语言类型系统 的攻击。但这种解决方案限制了用户自由下载和安装j a v aa p p l e t 的权利。同时, 可信第三方( t r u s t e dt h i r dp a r t y ,简称t t p ) 的引入也在一定程度上降低了j a v a 智能卡的应用灵活性。目前基于字节码签名下载机制的j a v a 智能卡也被称为封闭 ( c l o s e ) 型j a v a 智能卡,而对应的另一类则被称为开放( o p e n ) 型j a v a 智能卡。 基于卡内字节码校验的j a v a 虚拟机。 解决上述攻击的另一措施是在j a v a 智能卡内构建字节码校验器【2 4 】,在解释器 解释执行相应的代码之前,首先对字节码的类型进行检验,只有符合j a v a 语言类 型一致性原则,才允许将其下载到j a v a 智能卡内。显然,这种措施比采用前一种 更为灵活。 实际上,j a v a 智能卡虚拟指令集已为实现字节码校验对指令进行了详细地划 分。例如,将局部变量加载到操作数栈的指令可分为以下三种:a l o a d 、s l o a d 、i l o a d , 依次表示将r e f e r e n c e ( 引用) 型、s h o r t 型和h a t 型的数据加载到栈顶。相应的返回 指令也可分为三种( 除直接返回r e t u r n 外) ,即a r e t u m 、s r e t u m 、i r e t u m ,分别依 次表示向调用者返回r e f e r e n c e 型、s h o r t 型和i n t 型的数据。上述三类将数据加载 到操作数栈和将数据返回调用者的指令在实现上并无本质区别,但将这些指令按 其处理的数据类型进行细化正是为了便于进一步实现字节码校验功能。例如,如 果出现图2 4 中所示的情况,虚拟机中的字节码校验器将通过指令序列“a l o a d0 、 i r e t u m 判断出操作数栈顶的数据类型( r e f e r e n c e 型数据) 与向调用者返回的数据 类型( i n t 型数据) 不一致。从而拒下载该a p p l e t 应用程序。 l o 基于可信计算的j a v a 智能卡虚拟机的设计与实现 图2 5 使用字节码校验实现类型一致性检查 这一解决方案的不足之处在于,字节码校验功能会耗费大量的系统资源l l7 j ( 例 如时间、内存等) 。因此字节码校验多出现于p c 计算机环境下的j a v a 平台之中。 由于j a v a 智能卡的资源非常有限,因此目前实现字节码校验机制的j a v a 智能卡产 品很少。表2 1 【2 5 】列出了欧美主要j a v a 智能卡厂商2 0 0 6 年的产品性能介绍。其 v e r i f i e r 一列用于指明该产品是否在卡内虚拟机中实现了字节码校检功能,如表中 所示,除c y b e r f l e x 一家外,其余厂商都没有提供字节码校验功能。 表3 12 0 0 6 年欧美主要j a v a 智能卡厂商生产的产品性能表 j a v a ( a r t ll o a dp :w g l l li r u t a lp a r a mk 耐m c 越( |b 】o c ks l z ev e r i f i e rd e l m ! z j ( ( ) p 2 0 一 2 5 5 | ( 0 p 4 l t l2 5 5一 _ p n - b e t f l p x3 2 kc f( a i o2 溺下l 知 c v l w r f l e x 戳k( 蕾c fa i o2 弱t ly e s g & d2 1 1t 2c b c 2 5 5 _” g & de x l _ t n a6 , 1 t 2 2 5 5 - g & de x l 州 t3 0t l2 弱 o h e r t h u rc o s n l o6 - it 22 5 5 ( 其中t l 表示字节码校验功能基于t r u s t e dl o g i c 实现) 此外,无论采用安全下载机制,还是卡内字节码校验机制,虽然能够在很大 程度上提高j a v a 智能卡的安全性,但都不是万无一失的。目前,针对j a v a 智能卡 的,最有效的攻击手段是边通道( s i d e c h a n n e l ) 【2 6 2 7 , 2 8 】攻击。例如,典型的针对 e 2 p r o m 的毛刺攻击( g l i t c h a t t a c ko ne 2 p r o m ) 和针对数据总线的激光干扰攻击 【4 l j ( 1 a s e ra t t a c ko n ad a t ab u s ) 。借助这些攻击手段,攻击者可以实现忽略或跳过 某些关键指令、增加或减少某一循环,以及篡改数据总线上数据的目的1 1 7 j 。因此, 构建具有运行时安全检查功能的卡内j a v a 虚拟机是十分必要的。 2 3 2 基于j a v a 智能卡对象隔离与安全共享访问机制的安全问题 j a v a 智能卡支持多应用,允许将多个a p p l e t 下载到智能卡内运行,因此应用 程序间存在着相互访问的可能性。j a v a 智能卡虚拟机为此提供了名为防火墙的对 象访问安全机制2 2 1 ,以防止一个a p p l e t 对象越权访问其他a p p l e t 对象的情况发生。 2 3 2 1j a v a 智能卡的对象访问隔离机制 第2 章j a v a 智能卡及j a v a 智能卡虚拟机技术研究 1 1 j a v a 智能卡以执行上下文为单位( c o n t e x t ) 【2 2 】( 每一应用包对应一个执行上 下文) 将j a v a 智能卡中的对象划分为不同的受保护对象区域。防火墙则是一个执 行上下文和另一个执行上下文之间的界限。每当创建一个应用程序对象实例时, 系统都将为之分配一个执行上下文。同一j a v a 包中的所有a p p l e t 对象实例共享相 同的执行上下文。防火墙机制规定,同一执行上下文中,各应用程序间的对象访 问是合法的,而跨包访问其他执行上下文中的对象是非法的。 此外,在j a v a 智卡系统中,j a v a 智能卡运行环境( j c r e ) 同样被分配了一 个独立的执行上下文【2 2 1 ,且该执行上下文有权访问任何执行上下文中的应用程序 对象。因此,从应用程序执行上下文切换到j c r e 执行上下文的操作是被防火墙所 禁止的。防火墙的运行机制如图2 6 所示: f i r e w a l l 图2 6j a v a 智能卡的防火墙机制 2 3 2 2j a v a 智能卡的对象共享访问机制 为了实现应用程序间的合法访问,j a v a 智能卡系统制定了共享对象接口访问 机制【2 2 】。嵌入式j a v a 语言中定义了一种特殊的抽象类,被称为共享接e 1 1 2 9 j ,该类 中的方法可供a p p l e t 应用程序访问,共享接口只用于声明需要共享的方法,而其 他类则可通过重载指定方法的方式来实现该共享接口。 实现共享接口的类的实例化对象也被称为共享接口对象 2 2 1 ( s h a r e b l ei n t e r f a c e o b j e c t ,简称s i o ) 。在共享接口对象中,只有共享接口定义的方法才可越过防火 墙被其他a p p l e t 所访问。例如,一个客户端a p p l e tc 通过共享接口访问另一执行 上下文内,服务器a p p l e tj 中某一对象方法,;的基本过程如下所示: 1 若服务器a p p l e ts 想向外开放其共享对象伉,那么a p p l e ts 首先需要定义 一可共享接口厶,该接口扩展了j a v ac a r d f r a m e w o r k s h a r e b l e 接口。接下 1 2 基于可信计算的j a v a 智能卡虚拟机的设计与实现 来还需要在刚刚定义的共享接口中声明可供客户端a p p l e tc 访问的公用方 法z 。 2 定义好可供客户端a p p l e tc 访问的共享接口后,需要继续在服务器端a p p l e t s 中定义用于实现上述共享接口的类g ,该类需具体实现共享接口中定义 的方法z 。 3 服务器端a p p l e t s 创建类g 的对象实例q 。由于仍属于a p p l e t s ,因此防 火墙允许a p p l e t s 访问q 的域和方法。 4 此时,如果客户端a p p l e tc 需要访问a p p l e ts 的对象仍。它首先需要调用 j c s y s t e m g e t s h e r a b l e a p p l e t i n t e r f a c e 方法,并向该方法提供要访问a p p l e ts 的a i d ( 每一a p p l e t 对应一个a i d 号) 。 5 请求消息通过j c r e 传递时,j c r e 将首先根据a p p l e tc 提供的a i d 号在 内部的a p p l e t 注册表中查找a p p l e ts o 找到a p p 彪ts 后,j c r e 将调用a p p l e t s 的g e t s h a r e a b l e a p p l e t i n t e r f a c e o b je c t 方法,同时将a p p l e tc 的a i d 作为该 函数的参数传递给a p p l e ts 。 6 a p p 彪ts 在接到请求后,通过g e t s h a r e a b l e a p p l e t i n t e r f a c e o b j e c t 方法自行( 例 如通过客户端的a i d 号) 决定是否将自己的共享接口对象仍共享给a p p l e t c 。若同意共享该资源,a p p l e t s 将向a p p l e tc 返回一个指向共享对象倪的 引用。 7 a p p 跆tc 在获得指向仗的对象引用后,首先将其转换为s i o 对象,接下来 就可通过调用此s i o 中的共享接口方法石向a p p 彪ts 请求相应的服务了。 由于a p p l e t s 与a p p l e t c 拥有不同的执行上下文,因此共享过程中需要切换执 行上下文。上述共享对象的访问过程如图2 7 所示: 囤国囤 艇两嘲曩赫料嘲舸椭聃睁耐胂 d n , a 哪i ll 广1i 图2 7j a v a 智能卡共享对象访问机制 2 3 2 3 对象隔离与安全共享访问机制的安全性分析 j a v a 智能卡的对象共享机制虽然为各a p p l e t 应用之间的交互提供了途径,但 第2 章j a v a 智能卡及j a v a 智能卡虚拟机技术研究 1 3 由于其设计并不严密,因此存在着很大的安全漏洞。 易遭受a i d 扮演攻击 从上面的介绍中,不难看出服务器a p p l e ts 在调用j c s y s t e m g e t s h a r e a b l e a p p l e t i n t e r f a c e o b j e c t 方法决定是否授予请求方a p p l e tc 访问其共享对象 仍时,只对c 的a i d 进行了验证。换言之,j a v a 智能卡的这一共享机制,实际上 只是基于a i d 身份信息的单因子认证。因此,存在针对身份识别信息触d 进行攻 击的安全风险。一旦恶意代码e v a l ( 在此用a p p l e t 。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论