CN113434247B - 一种java卡虚拟机的安全防护方法 - Google Patents

一种java卡虚拟机的安全防护方法 Download PDF

Info

Publication number
CN113434247B
CN113434247B CN202110667344.8A CN202110667344A CN113434247B CN 113434247 B CN113434247 B CN 113434247B CN 202110667344 A CN202110667344 A CN 202110667344A CN 113434247 B CN113434247 B CN 113434247B
Authority
CN
China
Prior art keywords
pointer
value
virtual machine
stack
current operation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110667344.8A
Other languages
English (en)
Other versions
CN113434247A (zh
Inventor
张新访
董逢华
周杰
姚成正
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Tianyu Information Industry Co Ltd
Original Assignee
Wuhan Tianyu Information Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Tianyu Information Industry Co Ltd filed Critical Wuhan Tianyu Information Industry Co Ltd
Priority to CN202110667344.8A priority Critical patent/CN113434247B/zh
Publication of CN113434247A publication Critical patent/CN113434247A/zh
Application granted granted Critical
Publication of CN113434247B publication Critical patent/CN113434247B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Abstract

本发明公开了一种JAVA卡虚拟机的安全防护方法,涉及智能卡技术领域,包括对JAVA卡虚拟机的指针均创建冗余备份变量,并在JAVA对象数据头中增加校验和;JAVA卡虚拟机复位初始化时,初始化各指针并将各指针的值赋值给各自的冗余备份变量;进行JAVA卡虚拟机对字节码执行类型的判断:当执行类型为执行字节码并对栈数据操作、执行对象成员访问字节码或执行方法返回字节码时,基于指针、各指针的冗余备份变量,以及数据校验和,进行安全检查,以判断是否正常执行字节码。本发明能够有效增强虚拟机的安全防护能力,增强JAVA卡虚拟机的使用安全。

Description

一种JAVA卡虚拟机的安全防护方法
技术领域
本发明涉及智能卡技术领域,具体涉及一种JAVA卡虚拟机的安全防护方法。
背景技术
随着JAVA(一种计算机编程语言)智能卡的普遍使用,JAVA智能卡的使用安全也越来越受到广泛关注,黑客可针对JAVA智能卡卡上装载的应用进行恶意攻击,从而非法窃取卡上应用存储的私密或敏感数据。
由于JAVA卡虚拟机有应用之间的防火墙措施,因此无法通过常规的手段去获取私密数据,当前,常见的攻击手段是通过激光攻击卡片的内存,修改JAVA虚拟机的虚拟机程序指针、虚拟机堆栈指针、虚拟机方法帧指针等,对操作堆栈以及E2(非易失性存储区)中的数据的过程进行旁路攻击,越过防火墙对卡内的存储数据进行非法访问,从而对JAVA卡虚拟机的使用安全造成威胁。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种JAVA卡虚拟机的安全防护方法,能够有效增强虚拟机的安全防护能力,增强JAVA卡虚拟机的使用安全。
为达到以上目的,本发明采取的技术方案是,包括:
对JAVA卡虚拟机的指针均创建冗余备份变量,并在JAVA对象数据头中增加校验和;
JAVA卡虚拟机复位初始化时,初始化各指针并将各指针的值赋值给各自的冗余备份变量;
进行JAVA卡虚拟机对字节码执行类型的判断:
当执行类型为调用JAVA方法字节码时,创建方法帧并将创建的方法帧压入方法栈中,根据调用JAVA方法字节码时传入的局部变量大小和操作数栈大小,更新指针以及指针的冗余备份变量;
当执行类型为执行字节码并对栈数据操作、执行对象成员访问字节码或执行方法返回字节码时,基于指针、各指针的冗余备份变量,以及数据校验和,进行安全检查,以判断是否正常执行字节码。
在上述技术方案的基础上,
所述指针包括字节码程序指针、操作栈指针、当前操作栈底指针和当前操作栈顶指针;
所述创建冗余备份变量,具体为:创建字节码程序指针冗余备份变量、操作栈指针冗余备份变量、当前操作栈底指针冗余备份变量和当前操作栈顶指针冗余备份变量。
在上述技术方案的基础上,所述将各指针的值赋值给各自的冗余备份变量,具体步骤包括:
将字节码程序指针的值赋值给字节码程序指针冗余备份变量,使字节码程序指针的值与字节码程序指针冗余备份变量的值相同;
将操作栈指针的值赋值给操作栈指针冗余备份变量,使操作栈指针的值与操作栈指针冗余备份变量的值相同;
将当前操作栈底指针的值赋值给当前操作栈底指针冗余备份变量,使当前操作栈底指针的值与当前操作栈底指针冗余备份变量的值相同;
将当前操作栈顶指针的值赋值给当前操作栈顶指针冗余备份变量,使当前操作栈顶指针的值与当前操作栈顶指针冗余备份的值相同。
在上述技术方案的基础上,在进行JAVA卡虚拟机对字节码执行类型的判断之前,还包括:
判断字节码程序指针与字节码程序指针冗余备份变量是否相等,若是,则进行JAVA卡虚拟机对字节码执行类型的判断,若否,则终止JAVA卡虚拟机的运行。
在上述技术方案的基础上,
所述方法帧中备份有JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值、当前操作栈顶指针的值和检验值;
所述检验值为对方法帧中备份的JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值和当前操作栈顶指针的值计算后得到。
在上述技术方案的基础上,所述根据调用JAVA方法字节码时传入的局部变量大小和操作数栈大小,更新指针以及指针的冗余备份变量,具体步骤为:
根据调用JAVA方法字节码时传入的局部变量大小和操作数栈大小,更新当前操作栈底指针和当前操作栈顶指针,以及当前操作栈底指针冗余备份变量和当前操作栈顶指针冗余备份变量。
在上述技术方案的基础上,当执行类型为执行方法返回字节码时,安全检查的具体步骤为:
从方法栈中弹出方法帧,并获取方法帧中备份的JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值和当前操作栈顶指针的值;
对获取的JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值和当前操作栈顶指针的值进行校验值计算,得到检查校验值;
判断检查校验值与方法帧中备份的校验值是否相同,若是,则安全检查通过,正常执行字节码,反之,则终止JAVA卡虚拟机的运行。
在上述技术方案的基础上,当执行类型为执行字节码并对栈数据操作时,安全检查的具体步骤为:
当入栈操作检查通过、弹栈操作检查通过、当前操作栈底指针的值与当前操作栈底指针冗余备份变量的值相等、操作栈指针的值与操作栈指针冗余备份变量的值相等、当前操作栈顶指针的值与当前操作栈顶指针冗余备份的值相等、入栈操作时栈中保存的值与输入的值是否相等且弹栈操作时栈中保存的值与实际读出的值是否相等,则安全检查通过,正常执行字节码,反之,则终止JAVA卡虚拟机的运行;
其中,当入栈操作时操作栈指针的值与操作数据大小的和,小于或等于当前操作栈顶指针的值,且大于当前操作栈底指针的的值,则入栈操作检查通过,反之,则入栈操作检查不通过;
其中,弹栈操作时操作栈指针的值与操作数据大小的和,小于当前操作栈顶指针的值,且大于或等于当前操作栈底指针的的值,则弹栈操作检查通过,反之,则弹栈操作检查不通过。
在上述技术方案的基础上,当执行类型为执行对象成员访问字节码时,安全检查的具体步骤为:
S501:计算当前操作对象数据头的检验和,并判断计算得到的检验和与JAVA对象数据头中增加的校验和是否相等,若是,则转到S502,若否,则转到S505;
S502:从对象所属类中读取操作对象实例的大小以确定成员索引范围,然后判断成员访问成员索引范围是否越界,若是,则转到S505,若否,则转到S503;
S503:进行对象成员读取检测,并当对象成员读取检测通过时,转到S504,不通过则转到S505;或者进行对象成员写入检测,当对象成员写入检测通过时,转到S504,不通过则转到S505;
S504:安全检查通过,正常执行字节码;
S505:终止JAVA卡虚拟机的运行。
在上述技术方案的基础上,
所述对象成员读取检测为:对读取对象成员数据进行二次读出,判断二次读出的对象成员数据是否相同,若是,则对象成员读取检测通过,若否,则对象成员读取检测不通过;
所述对象成员写入检测为:写入对象成员数据后,将写入的对象成员数据进行读出,判断写入的对象成员数据和读出的对象成员数据是否相同,若是,则对象成员写入检测通过,若否,则对象成员写入检测不通过。
与现有技术相比,本发明的优点在于:通过软件方式,实现对JAVA卡虚拟机指针的冗余保护,并对方法帧内容进行完整性保护,使得虚拟机运行进行内部数据读取时若遭受外部攻击能及时检测到,冰及时终止系统的运行,有效的增强了虚拟机的安全防护能力,增强JAVA卡虚拟机的使用安全。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种JAVA卡虚拟机的安全防护方法的流程图。
具体实施方式
本发明实施例提供一种JAVA卡虚拟机的安全防护方法,通过软件方式,实现对JAVA卡虚拟机指针的冗余保护,并对方法帧内容进行完整性保护,使得虚拟机运行进行内部数据读取时若遭受外部攻击能及时检测到,冰及时终止系统的运行,有效的增强了虚拟机的安全防护能力,增强JAVA卡虚拟机的使用安全。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,本发明实施例提供一种JAVA卡虚拟机的安全防护方法,具体包括以下步骤:
S1:对JAVA卡虚拟机的指针均创建冗余备份变量,并在JAVA对象数据头中增加校验和;
S2:JAVA卡虚拟机复位初始化时,初始化各指针并将各指针的值赋值给各自的冗余备份变量;
S3:进行JAVA卡虚拟机对字节码执行类型的判断,当执行类型为调用JAVA方法字节码时,转到S4,当执行类型为执行字节码并对栈数据操作、执行对象成员访问字节码或执行方法返回字节码时,转到S5;图1中的非调用JAVA方法字节码指执行字节码并对栈数据操作、执行对象成员访问字节码或执行方法返回字节码。
S4:创建方法帧并将创建的方法帧压入方法栈中,根据调用JAVA方法字节码时传入的局部变量大小和操作数栈大小,更新指针以及指针的冗余备份变量;
S5:基于指针、各指针的冗余备份变量,以及数据校验和,进行安全检查,以判断是否正常执行字节码。
本发明实施例中,指针包括字节码程序指针、操作栈指针、当前操作栈底指针和当前操作栈顶指针。创建冗余备份变量,具体为:创建字节码程序指针冗余备份变量、操作栈指针冗余备份变量、当前操作栈底指针冗余备份变量和当前操作栈顶指针冗余备份变量。
本发明实施例中,将各指针的值赋值给各自的冗余备份变量,具体步骤包括:
将字节码程序指针的值赋值给字节码程序指针冗余备份变量,使字节码程序指针的值与字节码程序指针冗余备份变量的值相同;
将操作栈指针的值赋值给操作栈指针冗余备份变量,使操作栈指针的值与操作栈指针冗余备份变量的值相同;
将当前操作栈底指针的值赋值给当前操作栈底指针冗余备份变量,使当前操作栈底指针的值与当前操作栈底指针冗余备份变量的值相同;
将当前操作栈顶指针的值赋值给当前操作栈顶指针冗余备份变量,使当前操作栈顶指针的值与当前操作栈顶指针冗余备份的值相同。
本发明实施例中,在进行JAVA卡虚拟机对字节码执行类型的判断之前,还包括:判断字节码程序指针与字节码程序指针冗余备份变量是否相等,若是,则进行JAVA卡虚拟机对字节码执行类型的判断,若否,则说明字节码程序指针和字节码程序指针冗余备份变量中的某一个的值被篡改,则终止JAVA卡虚拟机的运行。
本发明实施例中,方法帧中备份有JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值、当前操作栈顶指针的值和检验值;检验值为对方法帧中备份的JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值和当前操作栈顶指针的值计算后得到。
本发明实施例中,根据调用JAVA方法字节码时传入的局部变量大小和操作数栈大小,更新指针以及指针的冗余备份变量,具体步骤为:根据调用JAVA方法字节码时传入的局部变量大小和操作数栈大小,更新当前操作栈底指针和当前操作栈顶指针,以及当前操作栈底指针冗余备份变量和当前操作栈顶指针冗余备份变量。
本发明实施例中,当执行类型为执行方法返回字节码时,安全检查的具体步骤为:
S511:从方法栈中弹出方法帧,并获取方法帧中备份的JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值和当前操作栈顶指针的值;
S512:对获取的JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值和当前操作栈顶指针的值进行校验值计算,得到检查校验值;
S513:判断检查校验值与方法帧中备份的校验值是否相同,若是,则安全检查通过,正常执行字节码,反之,则说明其中的某一个值被篡改,则终止JAVA卡虚拟机的运行。具体的,当安全检查通过时,将方法帧中的内容还原到对应的变量中,并更新其备份值,然后正常执行字节码,且在执行过程中对字节码程序指针和字节码程序指针冗余备份变量进行相同的增值减值操作。
本发明实施例中,当执行类型为执行字节码并对栈数据操作时,安全检查的具体步骤为:
当入栈操作检查通过、弹栈操作检查通过、当前操作栈底指针的值与当前操作栈底指针冗余备份变量的值相等、操作栈指针的值与操作栈指针冗余备份变量的值相等、当前操作栈顶指针的值与当前操作栈顶指针冗余备份的值相等、入栈操作时栈中保存的值与输入的值是否相等且弹栈操作时栈中保存的值与实际读出的值是否相等,则安全检查通过,正常执行字节码,反之,则终止JAVA卡虚拟机的运行;
其中,当入栈操作时操作栈指针的值与操作数据大小的和,小于或等于当前操作栈顶指针的值,且大于当前操作栈底指针的的值,则入栈操作检查通过,反之,则入栈操作检查不通过;弹栈操作时操作栈指针的值与操作数据大小的和,小于当前操作栈顶指针的值,且大于或等于当前操作栈底指针的的值,则弹栈操作检查通过,反之,则弹栈操作检查不通过。
其中,当安全检查通过,正常执行字节码对栈数据操作,并对操作栈指针和操作栈指针冗余备份变量做相同的增减值操作。
本发明实施例中,当执行类型为执行对象成员访问字节码时,安全检查的具体步骤为:
S501:计算当前操作对象数据头的检验和,并判断计算得到的检验和与JAVA对象数据头中增加的校验和是否相等,若是,则说明对象结构正确,则转到S502,若否,则说明对象数据头被篡改,则转到S505;
S502:从对象所属类中读取操作对象实例的大小以确定成员索引范围,然后判断成员访问成员索引范围是否越界,若是,则说明字节码被篡改,则转到S505,若否,则转到S503;
S503:进行对象成员读取检测,并当对象成员读取检测通过时,转到S504,不通过,则说明受到攻击,则转到S505;或者进行对象成员写入检测,当对象成员写入检测通过时,转到S504,不通过则说明受到攻击,则转到S505;
S504:安全检查通过,正常执行字节码;
S505:终止JAVA卡虚拟机的运行。
本发明实施例中,对于每一个字节码均按照上述方式进行操作,当当前字节码操作完成后,再进行下一个字节码,依此类推。
本发明实施例的安全防护方法,采用多种软件手段安全的方法,通过软件的方式,增加对字节码程序指针、操作栈指针、当前操作栈底指针、当前操作栈顶指针等常用指针的冗余保护,同时对方法帧内容进行完整性保护,通过运行时字节码操作数据段的合法访问检测能力,并且对对象结构头,以及对象操作其成员访问时进行二次校验,保证了对象成员数据写入和读出数据的无法被旁路,使虚拟机运行进行内部数据读取时若遭受外部攻击能及时检测到,并及时终止系统的运行,有效的增强了虚拟机的安全防护能力。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

Claims (10)

1.一种JAVA卡虚拟机的安全防护方法,其特征在于,具体包括以下步骤:
对JAVA卡虚拟机的指针均创建冗余备份变量,并在JAVA对象数据头中增加校验和;
JAVA卡虚拟机复位初始化时,初始化各指针并将各指针的值赋值给各自的冗余备份变量;
进行JAVA卡虚拟机对字节码执行类型的判断:
当执行类型为调用JAVA方法字节码时,创建方法帧并将创建的方法帧压入方法栈中,根据调用JAVA方法字节码时传入的局部变量大小和操作数栈大小,更新指针以及指针的冗余备份变量;
当执行类型为执行字节码并对栈数据操作、执行对象成员访问字节码或执行方法返回字节码时,基于指针、各指针的冗余备份变量,以及数据校验和,进行安全检查,以判断是否正常执行字节码。
2.如权利要求1所述的一种JAVA卡虚拟机的安全防护方法,其特征在于:
所述指针包括字节码程序指针、操作栈指针、当前操作栈底指针和当前操作栈顶指针;
所述创建冗余备份变量,具体为:创建字节码程序指针冗余备份变量、操作栈指针冗余备份变量、当前操作栈底指针冗余备份变量和当前操作栈顶指针冗余备份变量。
3.如权利要求2所述的一种JAVA卡虚拟机的安全防护方法,其特征在于,所述将各指针的值赋值给各自的冗余备份变量,具体步骤包括:
将字节码程序指针的值赋值给字节码程序指针冗余备份变量,使字节码程序指针的值与字节码程序指针冗余备份变量的值相同;
将操作栈指针的值赋值给操作栈指针冗余备份变量,使操作栈指针的值与操作栈指针冗余备份变量的值相同;
将当前操作栈底指针的值赋值给当前操作栈底指针冗余备份变量,使当前操作栈底指针的值与当前操作栈底指针冗余备份变量的值相同;
将当前操作栈顶指针的值赋值给当前操作栈顶指针冗余备份变量,使当前操作栈顶指针的值与当前操作栈顶指针冗余备份的值相同。
4.如权利要求2所述的一种JAVA卡虚拟机的安全防护方法,其特征在于,在进行JAVA卡虚拟机对字节码执行类型的判断之前,还包括:
判断字节码程序指针与字节码程序指针冗余备份变量是否相等,若是,则进行JAVA卡虚拟机对字节码执行类型的判断,若否,则终止JAVA卡虚拟机的运行。
5.如权利要求2所述的一种JAVA卡虚拟机的安全防护方法,其特征在于:
所述方法帧中备份有JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值、当前操作栈顶指针的值和检验值;
所述检验值为对方法帧中备份的JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值和当前操作栈顶指针的值计算后得到。
6.如权利要求5所述的一种JAVA卡虚拟机的安全防护方法,其特征在于,所述根据调用JAVA方法字节码时传入的局部变量大小和操作数栈大小,更新指针以及指针的冗余备份变量,具体步骤为:
根据调用JAVA方法字节码时传入的局部变量大小和操作数栈大小,更新当前操作栈底指针和当前操作栈顶指针,以及当前操作栈底指针冗余备份变量和当前操作栈顶指针冗余备份变量。
7.如权利要求5所述的一种JAVA卡虚拟机的安全防护方法,其特征在于,当执行类型为执行方法返回字节码时,安全检查的具体步骤为:
从方法栈中弹出方法帧,并获取方法帧中备份的JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值和当前操作栈顶指针的值;
对获取的JAVA卡虚拟机上下文运行环境、字节码程序指针的值、操作栈指针的值、当前操作栈底指针的值和当前操作栈顶指针的值进行校验值计算,得到检查校验值;
判断检查校验值与方法帧中备份的校验值是否相同,若是,则安全检查通过,正常执行字节码,反之,则终止JAVA卡虚拟机的运行。
8.如权利要求2所述的一种JAVA卡虚拟机的安全防护方法,其特征在于,当执行类型为执行字节码并对栈数据操作时,安全检查的具体步骤为:
当入栈操作检查通过、弹栈操作检查通过、当前操作栈底指针的值与当前操作栈底指针冗余备份变量的值相等、操作栈指针的值与操作栈指针冗余备份变量的值相等、当前操作栈顶指针的值与当前操作栈顶指针冗余备份的值相等、入栈操作时栈中保存的值与输入的值是否相等且弹栈操作时栈中保存的值与实际读出的值是否相等,则安全检查通过,正常执行字节码,反之,则终止JAVA卡虚拟机的运行;
其中,当入栈操作时操作栈指针的值与操作数据大小的和,小于或等于当前操作栈顶指针的值,且大于当前操作栈底指针的的值,则入栈操作检查通过,反之,则入栈操作检查不通过;
其中,弹栈操作时操作栈指针的值与操作数据大小的和,小于当前操作栈顶指针的值,且大于或等于当前操作栈底指针的的值,则弹栈操作检查通过,反之,则弹栈操作检查不通过。
9.如权利要求2所述的一种JAVA卡虚拟机的安全防护方法,其特征在于,当执行类型为执行对象成员访问字节码时,安全检查的具体步骤为:
S501:计算当前操作对象数据头的检验和,并判断计算得到的检验和与JAVA对象数据头中增加的校验和是否相等,若是,则转到S502,若否,则转到S505;
S502:从对象所属类中读取操作对象实例的大小以确定成员索引范围,然后判断成员访问成员索引范围是否越界,若是,则转到S505,若否,则转到S503;
S503:进行对象成员读取检测,并当对象成员读取检测通过时,转到S504,不通过则转到S505;或者进行对象成员写入检测,当对象成员写入检测通过时,转到S504,不通过则转到S505;
S504:安全检查通过,正常执行字节码;
S505:终止JAVA卡虚拟机的运行。
10.如权利要求9所述的一种JAVA卡虚拟机的安全防护方法,其特征在于:
所述对象成员读取检测为:对读取对象成员数据进行二次读出,判断二次读出的对象成员数据是否相同,若是,则对象成员读取检测通过,若否,则对象成员读取检测不通过;
所述对象成员写入检测为:写入对象成员数据后,将写入的对象成员数据进行读出,判断写入的对象成员数据和读出的对象成员数据是否相同,若是,则对象成员写入检测通过,若否,则对象成员写入检测不通过。
CN202110667344.8A 2021-06-16 2021-06-16 一种java卡虚拟机的安全防护方法 Active CN113434247B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110667344.8A CN113434247B (zh) 2021-06-16 2021-06-16 一种java卡虚拟机的安全防护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110667344.8A CN113434247B (zh) 2021-06-16 2021-06-16 一种java卡虚拟机的安全防护方法

Publications (2)

Publication Number Publication Date
CN113434247A CN113434247A (zh) 2021-09-24
CN113434247B true CN113434247B (zh) 2023-12-26

Family

ID=77756159

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110667344.8A Active CN113434247B (zh) 2021-06-16 2021-06-16 一种java卡虚拟机的安全防护方法

Country Status (1)

Country Link
CN (1) CN113434247B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6622205B1 (en) * 1999-05-07 2003-09-16 Giesecke & Devrient Gmbh Process for the secure writing of a pointer for a circular memory
CN1687862A (zh) * 2005-06-16 2005-10-26 北京航空航天大学 智能卡安全环境的控制方法
CN101727331A (zh) * 2008-10-24 2010-06-09 国际商业机器公司 升级活动虚拟机的客户操作系统的方法和设备
CN102495754A (zh) * 2011-10-27 2012-06-13 飞天诚信科技股份有限公司 基于缓存的java卡事务处理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002077878A1 (en) * 2001-03-26 2002-10-03 Galois Connections Inc Crypto-pointers for secure data storage
US7870112B2 (en) * 2004-06-30 2011-01-11 Oracle International Corporation Efficient memory usage for unified document object model implementation for Java

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6622205B1 (en) * 1999-05-07 2003-09-16 Giesecke & Devrient Gmbh Process for the secure writing of a pointer for a circular memory
CN1687862A (zh) * 2005-06-16 2005-10-26 北京航空航天大学 智能卡安全环境的控制方法
CN101727331A (zh) * 2008-10-24 2010-06-09 国际商业机器公司 升级活动虚拟机的客户操作系统的方法和设备
CN102495754A (zh) * 2011-10-27 2012-06-13 飞天诚信科技股份有限公司 基于缓存的java卡事务处理方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
JAVA CARD多任务切换机制实现及应用;王博然;周祥;;北京工业职业技术学院学报(01);全文 *
Java卡虚拟机的安全攻击技术及防御技术研究;崔炳荣;刘亮;甘杰;张海峰;陈雷;尹国龙;;电子技术应用(10);全文 *
Type Information Elimination form Objects on Architecture with Tagged Pointers Support;Andrey Rodchenko, etal.;《IEEE Transactions on Computers》;第67卷(第1期);全文 *
一种使用CFT的Java卡内字节码校验算法;吴俊军;马鑫龙;;小型微型计算机系统(12);全文 *
基于北斗RDSS的核辐射监测应急通讯方法;王廷银;林明贵;陈达;吴允平;;计算机系统应用(12);全文 *
智能卡数据安全体系中备份机制的分析与设计;李战元;《中国优秀硕士学位论文全文数据库》;全文 *

Also Published As

Publication number Publication date
CN113434247A (zh) 2021-09-24

Similar Documents

Publication Publication Date Title
EP3779745B1 (en) Code pointer authentication for hardware flow control
CN100489728C (zh) 一种建立计算机中可信任运行环境的方法
EP2842041B1 (en) Data processing system and method for operating a data processing system
EP3198399B1 (en) Detecting a change to system management mode bios code
WO2007015204A2 (en) A secure terminal, a routine and a method of protecting a secret key
CN105260659A (zh) 一种基于qemu的内核级代码重用型攻击检测方法
US20090328211A1 (en) Control flow deviation detection for software security
CN107330323B (zh) 一种基于Pin工具的ROP及其变种攻击的动态检测方法
US20070174622A1 (en) Protection of data of a memory associated with a microprocessor
US20070006224A1 (en) Controlled execution of a program used for a virtual machine on a portable data carrier
CN107220560B (zh) 一种基于数据缓存扩充的嵌入式系统数据完整性保护方法
US20080034264A1 (en) Dynamic redundancy checker against fault injection
CN113434247B (zh) 一种java卡虚拟机的安全防护方法
CN103019865A (zh) 虚拟机监控方法和系统
CN115964758A (zh) 一种基于TrustZone的内核数据完整性保护方法
US8458790B2 (en) Defending smart cards against attacks by redundant processing
CN114637988A (zh) 一种面向二进制的函数级软件随机化方法
US9483641B2 (en) Method and device for the performance of a function by a microcircuit
CN114981811A (zh) 用于软件安全的装置和方法
KR20210057239A (ko) 안티 디버깅 무력화 장치 및 그 방법
US7806319B2 (en) System and method for protection of data contained in an integrated circuit
US20220197828A1 (en) Method of protecting a system such as a microcontroller, and corresponding system
KR101986028B1 (ko) 코드 포인터 보수를 사용하여 프로세싱 흐름에 대한 공격에 대해 장치를 보호하기 위한 시스템 및 방법
CN103455445A (zh) 智能卡系统抵抗故障攻击的方法
US20120131634A1 (en) Method of executing an application embedded in a portable electronic device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant