一种JAVA智能卡访问越界的检测方法技术

技术编号:15501383 阅读:134 留言:0更新日期:2017-06-03 22:46
本发明专利技术公开一种JAVA智能卡访问越界的检测方法,其用于解决现有技术中JAVA智能卡中的虚拟机解释器执行时存在访问越界的缺陷。其包括如下步骤:(S01)在将CAP文件安装到JAVA智能卡时,对CAP文件进行处理;其中,CAP文件包括多个组件,包括常量池组件、类组件和方法组件;(S02)在应用执行过程中,JAVA智能卡内的虚拟机解释器在执行CAP文件中的指令时,对CAP文件的类组件进行检查。本发明专利技术通过在执行方法调用指令invokevirtual时,对类组件的检查过程,来防止访问越界,故提高虚拟机解释器执行过程的安全性。

Detection method for JAVA smart card access cross boundary

The invention discloses a method for detecting the cross access of an JAVA smart card, which is used to solve the defect that the virtual machine interpreter in the JAVA smart card has the over accessing during the execution of the existing smart card. It includes the following steps: (S01) in the CAP file will be installed to JAVA smart card, processing the CAP file; the CAP file including a plurality of components, including components, components and components of the constant pool method; (S02) application in the implementation process, the virtual machine interpreter JAVA smart card in CAP file command, check the CAP file component. The invention prevents the access from crossing the border by checking the class components when the instruction invokevirtual is invoked by the method of execution, so that the security of the interpreter of the virtual machine is improved.

【技术实现步骤摘要】
一种JAVA智能卡访问越界的检测方法
本专利技术涉及JAVA智能卡领域,尤其涉及一种JAVA智能卡访问越界的检测方法。
技术介绍
智能卡(SmartCard)是一种带有微型处理器和存储器芯片的微型集成电路卡片,具有运算能力和信息存储功能。Java智能卡是将Java语言运行平台移植到智能卡芯片中,使得Java技术“一次编译,处处运行”的特点可以应用于智能卡上。在Java智能卡的应用开发中,开发方不需要考虑应用装载的平台和平台的特性。与传统卡片相比,Java智能卡不仅具有平台无关性,更重要的是支持一卡多应用,且具有更高的安全性。根据Java卡相关的规范,其安全机制包括应用安装前的检查,如字节码校验(BCV),应用安装过程如GP规范,应用间独立如防火墙等;但是在虚拟机解释器在执行字节码的过程,缺少安全机制保障运行时的安全,比如可能出现的访问越界或者类型强制转换等问题;其中,组件间的越界访问是暂时未解决的问题之一。根据Java卡虚拟机规范,一个应用的CAP文件由12个组件组成,安装到卡片上的组件主要有引入组件、常量池组件、类组件、方法组件、静态域组件等;为了节省卡片的存储空间,每个组件都是接连存放在EEPROM中,导致对某一个组件的访问溢出时可能访问到另一个组件的信息;类组件是用于存放应用定义的类的信息;每个类中定义的方法,包括一个是public_virtual_method_table数组,它表示public和protected虚方法的数组,也包括所有的或者任何一个它的超类所声明或者定义的方法,这些方法可以在一个类的实例上被调用;另一个是package_virtual_method_table数组,这个数组不仅包含了这个类所定义和声明的方法,同时还包括这个包中定义的任何一个或所有的它的超类所定义和声明的方法。如果在CAP文件安装到卡片上时,由于某种原因导致类组件的方法表数组内的一个元素,或者是常量池数组中的某个方法的引用出现问题,那么可能导致的结果是对Class组件的访问溢出。虚拟机执行过程的安全性一直都是困扰开发者的一个重要问题,只要CAP文件在解释执行前没被检测出漏洞,那么解释器执行过程中出现的问题就无法解决。综上,有必要设计一种JAVA智能卡访问越界的检测方法来弥补上述缺陷。
技术实现思路
本专利技术提出一种JAVA智能卡访问越界的检测方法,其用于解决现有技术中JAVA智能卡中的虚拟机解释器执行时存在访问越界的缺陷。本专利技术通过在执行方法调用指令invokevirtual时,对类组件的检查过程,来防止访问越界,故提高虚拟机解释器执行过程的安全性。本专利技术的技术方案是这样实现的:本专利技术公开一种JAVA智能卡访问越界的检测方法,其包括如下步骤:(S01)在将CAP文件安装到JAVA智能卡时,对CAP文件进行处理;其中,CAP文件包括多个组件,包括常量池组件、类组件和方法组件;(S02)在应用执行过程中,JAVA智能卡内的虚拟机解释器在执行CAP文件中的指令时,对CAP文件的类组件进行检查。其中,步骤(S01)中,CAP文件的处理方法包括:(1)在载入前,在CAP文件的每个组件后加上结束标识符;(2)在安装过程中,每次载入CAP文件的其中一个组件后,由JAVA智能卡上的安装程序执行在该组件后加上结束标识符。其中,步骤(S02)包括如下步骤:(S21)根据指令操作数定位到常量池数组,其中,指令操作数为链接到常量池组件的token值;(S22)在常量池数组中找到对应的项,获得被调用方法所在的类的引用和方法token,进而定位到类组件中确定的类以及方法表中的对应项;(S23)在类组件中,每个类的信息包括表示方法表数组大小的public_method_table_count以及表示方法表偏移基数的public_method_table_base,根据public_method_table_count和public_method_table_base两个数值,定位到数组的末尾;(S24)通过public_method_table_base+public_method_table_count*2+1直接访问到该数组的尾部,紧接着判断尾部的值,若访问到类组件的结束符,表示类组件结束,后面是方法组件,则该方法调用指令可以正确地获取到方法表中的偏移信息,此时结束检查;若访问到的不是类组件的结束符,则直接进入步骤(S25)第二阶段的检查;(S25)判断类组件中可能存在的其他数组,通过package_virtual_method_table、implemented_interface_info以及remote_interface_info的数组大小来定位到该组件的末尾,判断是否能访问到类组件的结束符,访问到结束符表示该方法表的元素数是正确的,否则说明该类组件的大小存在问题,则抛出异常。其中,步骤(S25)包括如下步骤:(251)判断package_method_table_count来确定是否有该数组,若有,则定位到该数组的末尾;(252)判断interface_count,对接口数组进行判断和定位;(253)通过类组件bitfield中的ACC_ROMOTE判断该类是否有远程接口,若有,定位至远程接口的末尾,该远程接口的类型是remote_interface_info;(254)定位到类组件末尾,判断是否能访问到类组件的结束符,访问到结束符表示该方法表的元素数是正确的,结束检查;否则说明该类组件的大小存在问题,则抛出异常,结束检查。其中,结束标识符为固定标识符或区分标识符。与现有技术相比,本专利技术具有如下优点:本专利技术在执行方法调用指令invokevirtual时,对类组件的检查过程防止访问越界,故提高了虚拟机解释器执行过程的安全性。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术方法调用指令执行时对类组件的正确访问流程框图。图2为方法调用指令执行时对类组件的溢出访问流程框图。图3为CAP文件的概述图。图4为虚拟机解释器在执行CAP文件中的指令时检查类组件的流程框图。图5为第二阶段的检查流程框图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。为了有助于和澄清随后的实施例的描述,在对本专利技术的具体实施方式进行详细说明之前,对部分术语进行解释,下列的解释应用于本说明书以及权利要求书。本专利技术中出现的CAP文件是一连串的二进制字节码。其它英文词语均为代码,不代表其它任何意义。参照图1至图5,本专利技术公开一种JAVA智能卡访问越界的检测方法,其包括如下步骤:(S01)在将CAP文件安装到JAVA智能卡时,对CAP文件进行处理;其中,CAP文件包括多个组件,包括常量池组件、类组件和方法组件;(S02)在本文档来自技高网
...
一种JAVA智能卡访问越界的检测方法

【技术保护点】
一种JAVA智能卡访问越界的检测方法,其特征在于,其包括如下步骤:(S01)在将CAP文件安装到JAVA智能卡时,对CAP文件进行处理;其中,CAP文件包括多个组件,包括常量池组件、类组件和方法组件;(S02)在应用执行过程中,JAVA智能卡内的虚拟机解释器在执行CAP文件中的指令时,对CAP文件的类组件进行检查。

【技术特征摘要】
1.一种JAVA智能卡访问越界的检测方法,其特征在于,其包括如下步骤:(S01)在将CAP文件安装到JAVA智能卡时,对CAP文件进行处理;其中,CAP文件包括多个组件,包括常量池组件、类组件和方法组件;(S02)在应用执行过程中,JAVA智能卡内的虚拟机解释器在执行CAP文件中的指令时,对CAP文件的类组件进行检查。2.如权利要求1所述的JAVA智能卡访问越界的检测方法,其特征在于,步骤(S01)中,CAP文件的处理方法包括:(1)在载入前,在CAP文件的每个组件后加上结束标识符;(2)在安装过程中,每次载入CAP文件的其中一个组件后,由JAVA智能卡上的安装程序执行在该组件后加上结束标识符。3.如权利要求2所述的JAVA智能卡访问越界的检测方法,其特征在于,步骤(S02)包括如下步骤:(S21)根据指令操作数定位到常量池数组,其中,指令操作数为链接到常量池组件的token值;(S22)在常量池数组中找到对应的项,获得被调用方法所在的类的引用和方法token,进而定位到类组件中确定的类以及方法表中的对应项;(S23)在类组件中,每个类的信息包括表示方法表数组大小的public_method_table_count以及表示方法表偏移基数的public_method_table_base,根据public_method_table_count和public_method_table_base两个数值,定位到数组的末尾;(S24)通过public_method_table_base+public_method_tabl...

【专利技术属性】
技术研发人员:洪佳欣胡建国丁颜玉凌森
申请(专利权)人:广州智慧城市发展研究院中山大学
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1