CN101366035B - 用于执行中间代码编译的应用程序的方法 - Google Patents

用于执行中间代码编译的应用程序的方法 Download PDF

Info

Publication number
CN101366035B
CN101366035B CN2006800525319A CN200680052531A CN101366035B CN 101366035 B CN101366035 B CN 101366035B CN 2006800525319 A CN2006800525319 A CN 2006800525319A CN 200680052531 A CN200680052531 A CN 200680052531A CN 101366035 B CN101366035 B CN 101366035B
Authority
CN
China
Prior art keywords
intermediate code
verification
virtual machine
data item
computing
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
CN2006800525319A
Other languages
English (en)
Other versions
CN101366035A (zh
Inventor
P·吉拉尔德
B·冈扎尔沃
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.)
Thales Digital Security France Easy Stock Co
Thales DIS Design Services SAS
Original Assignee
Gemplus Card International SA
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 Gemplus Card International SA filed Critical Gemplus Card International SA
Publication of CN101366035A publication Critical patent/CN101366035A/zh
Application granted granted Critical
Publication of CN101366035B publication Critical patent/CN101366035B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种用于在配备了用于解释中间代码的虚拟执行机的便携数字设备(10)上执行以中间代码编译的应用程序的方法。本发明的特征在于包括应用安全执行模式的步骤,其中由虚拟机解释中间代码的步骤包括以下步骤:对于为了执行代码定义的算术和/或逻辑运算而处理的代码的各数据(val1,val2),生成通过预定函数与代码的所述数据相关的控制数据(Chk(val1),Chk(val2));与所述运算的执行并行执行通过所述预定函数与代码定义的所述运算相关的控制运算,并对控制数据起作用。

Description

用于执行中间代码编译的应用程序的方法
技术领域
本发明涉及便携数字装置中引入的软件和执行环境,特别是涉及用于在配备了虚拟执行机的便携数字装置上执行以中间语言编译的应用程序期间,保护以中间语言编译的该应用程序的执行免受错误攻击的方法。
背景技术
下文中,便携装置将表示任何便携数字装置、如便携计算机,但也可以是配备了结合处理器和存储器的微处理器、如芯片卡的任何装置。
创建可互通应用的需求引起了中间编程语言的发展。因此,这些语言的主要目标是使其软件与它们必须在其上执行的硬件无关。然后将软件项设计成采取与基础体系结构无关的中间代码的形式来执行。
因此,使程序员一般脱离与特定硬件关联的限制。因而极大地扩展了从Java源语言编译之后所得到的中间语言、如Java字节码。还可能提到从各种可能的源语言、如C++或C#编译之后所得到的中间语言MSIL(“Microsoft中间语言),它用于.Net或DotNet(注册商标)环境的上下文。
因此,中间代码通常对应于软件的编译形式。通过Java或其它中间语言、如.Net编译的这种软件无法这样由预期执行以中间代码形式进行编译的程序的装置的处理器来执行。需要引入软件层,它的主要目标是将中间代码解释为可由主机装置的处理器执行的指令。这个软件层称作“虚拟机”。例如,JAVA虚拟机使得能够在实现它的给定平台上执行Java软件项。
通常,以包含与软件的编译形式对应的.class文件组成的模块集合形式来分配Java软件项。每个编译文件对应于类类型的数据结构,因而包括与这个类相关的信息,即类的元素的描述(它的常数、它的字段、它的方法)、类所使用并在其它类中定义的元素的描述(字段和方法)以及可由Java虚拟机的解释器解释的、采取指令形式的、类的方法的代码(字节码)。
在一种简化方式中,.class文件具有例如以下结构:
Figure GSB00000775122000021
因此,举例来说,在电子钱包Java应用的上下文中,能够定义命名为“Purse”、具有其字段“balance”及其方法“decrementBalance()”的类。.class文件可具有以下结构:
Figure GSB00000775122000022
因此,根据这个示例,类“Purse”的方法的执行包括从balance字段的当前实例中减去值1。
由便携装置上安装的Java虚拟机来实现对应Java软件的执行。
这个虚拟机将ClassFile的信息转换成工作存储器中的数据结构,它们是该虚拟机特定的并且允许这个虚拟机解释和执行软件。
为此,虚拟机具有特定的指令集,各指令在一个或多个八位组上编码。虚拟机的指令集包括例如一定数量的常规指令,例如算术运算、逻辑运算和跳转。虚拟机通常具有执行堆栈,它使用从零开始编号的局部变量,但是也可使用寄存器。
目前,通过虚拟机来执行应用程序不是完全安全的,特别是相对于一般的攻击、尤其是错误攻击。例如,在操纵这个值以便由虚拟机解释更新这个字段的方法期间,在注入错误之后可修改上述示例中由“balance”字段表示的敏感值,从而导致在堆栈中设置balance字段的最终值,它与正常预计的不同,例如可能迫使balance字段为其最大值。
保护中间代码的应用程序在由卡上的虚拟机执行期间免受错误攻击的一种已知方式包括:在将要执行的应用程序的实际代码中加入冗余校验和代码。
例如,为了保护上述代码,能够在Java中使用balance字段的补码值作为校验和数据项,表示为~balance,它返回二进制balance值的1补码,并且能够在由虚拟机执行方法期间与更新balance值并行更新这个校验和数据项值。然后,另一方面对于balance字段、另一方面对于补码~balance字段并行执行的两个更新计算的结果的比较使得能够检验已经用于执行计算的数据项的完整性。因而修改的Java代码则具有以下结构:
Figure GSB00000775122000031
用于保护Java代码的执行的安全的这样一种方法的缺点在于,它消耗大量资源和计算时间,这在受限环境、如芯片卡中是不利的。
另外,Java应用程序(或者通过另一种中间语言的应用程序)的开发人员则必须开发其应用程序的代码,同时考虑这种限制,以便保护代码的敏感部分。
发明内容
本发明的目的在于解决这些缺点的一个或多个。因此,本发明涉及一种用于在配备了用于解释中间代码的虚拟执行机的便携数字装置上执行以中间代码编译的应用程序的方法,其特征在于,它包括应用安全执行模式的步骤,其中由虚拟机解释中间代码的步骤包括以下步骤:
-对于为了执行代码定义的算术和/或逻辑运算而操纵的代码的各数据项,生成校验和数据项,通过预定函数将它与代码的所述数据项链接,
-与执行所述运算并行执行校验和运算,它通过所述预定函数与代码所定义的所述运算链接并对校验和数据项起作用。
优选地,该方法还包括以下步骤:
-通过比较所述运算得到的结果来检验所执行的计算的完整性。
有利地,检验步骤包括:检验分别为代码定义的运算和校验和运算的所述运算得到的结果通过预定函数来链接。
根据第一实施例,该方法包括由虚拟机使用可由所述虚拟机操纵的两个独立数据结构,分别为专用于操纵代码的数据项以便执行代码定义的运算的数据结构以及专用于操纵对应校验和数据项以便执行对应校验和运算的数据结构。
优选地,将根据这个第一实施例、由虚拟机所使用的数据结构组织成堆栈。
在一个变形例中,将根据这个第一实施例、由虚拟机所使用的数据结构组织成寄存器。
根据第二实施例,该方法包括由虚拟机使用单个数据结构,以便一方面操纵用于执行代码定义的运算的代码的数据项以及另一方面操纵用于执行对应校验和运算的对应校验和数据项。
优选地,将虚拟机所使用的单个数据结构组织成堆栈。
有利地,所使用的预定函数定义组射(group morphism)。
优选地连续应用安全执行模式。
根据一个变形例,随机应用安全执行模式。
根据另一个变形例,在检测到特定条件时应用安全执行模式。优选地,应用安全执行模式的条件是部分代码的解释的函数。
根据一个实施例,数字装置是引入了Java或DotNet类型的虚拟机的芯片卡。
本发明还涉及用于在便携数字装置上执行以中间代码编译的应用程序的虚拟机,其特征在于,它可存储在装置的非易失性存储器中,并且能够实现如上所述的方法。
本发明还涉及包括存储根据本发明的虚拟机的非易失性存储器的便携数字装置。
根据一个实施例,这个装置是芯片卡。
本发明涉及一种用于在配备了用于解释中间代码的虚拟执行机的便携数字装置(10)上执行以所述中间代码编译的应用程序的方法,其特征在于,所述方法包括应用安全执行模式的步骤,其中由所述虚拟机解释所述中间代码的步骤包括以下步骤:
-对于为了执行所述中间代码定义的算术和/或逻辑运算而操纵的所述中间代码的各数据项(val1,val2),生成校验和数据项(Chk(val1),Chk(val2)),通过预定函数将所述校验和数据项与所述中间代码的所述数据项链接,
-与执行所述算术和/或逻辑运算并行执行校验和运算,所述校验和运算通过所述预定函数与所述中间代码所定义的所述算术和/或逻辑运算链接并对所述校验和数据项起作用。
根据一个实施例,所述的方法,其特征在于,它还包括以下步骤
-通过比较由所述算术和/或逻辑运算以及所述校验和运算得到的结果(result,Chk(result))来检验所执行的计算的完整性。
根据一个实施例,所述的方法,其特征在于,所述检验步骤包括:检验通过分别为所述中间代码定义的所述算术和/或逻辑运算和所述校验和运算的所述算术和/或逻辑运算以及所述校验和运算得到的结果通过所述预定函数来链接。
根据一个实施例,所述的方法,其特征在于,所述方法包括由所述虚拟机使用可由所述虚拟机操纵的两个独立数据结构(20,30),分别为专用于操纵所述中间代码的数据项以便执行所述中间代码定义的所述算术和/或逻辑运算的数据结构(20)以及专用于操纵对应校验和数据项以便执行对应校验和运算的数据结构(30)。
根据一个实施例,所述的方法,其特征在于,将所述虚拟机所使用的所述数据结构(20,30)组织成堆栈。
根据一个实施例,所述的方法,其特征在于,将所述虚拟机所使用的所述数据结构组织成寄存器。
根据一个实施例,所述的方法,其特征在于,所述方法包括由所述虚拟机使用单个数据结构,以便一方面操纵用于执行所述中间代码定义的所述算术和/或逻辑运算的所述中间代码的数据项以及另一方面操纵用于执行对应校验和运算的对应校验和数据项。
根据一个实施例,所述的方法,其特征在于,将所述虚拟机所使用的所述单个数据结构组织成堆栈。
根据一个实施例,所述的方法,其特征在于,所使用的所述预定函数定义组射。
根据一个实施例,所述的方法,其特征在于,连续应用安全执行模式。
根据一个实施例,所述的方法,其特征在于,随机应用安全执行模式。
根据一个实施例,所述的方法,其特征在于,在检测到特定条件时应用安全执行模式。
根据一个实施例,所述的方法,其特征在于,应用所述安全执行模式的条件是部分所述中间代码的解释的函数。
根据一个实施例,所述的方法,其特征在于,所述便携数字装置是引入了Java或DotNet类型的虚拟机的芯片卡(10)。
附图说明
通过阅读作为非限制性示例给出的、参照附图进行的描述,本发明的其它特征和优点将变得非常清楚,附图包括:
图1和图2示出用于以安全模式执行中间代码的应用程序的本发明的一个优选实施例。
具体实施方式
因此,本发明提出保护在配备了用于解释应用程序的代码的虚拟执行机的便携数字装置上执行以中间代码编译的应用程序的安全。
根据第一实施例,在其中安装了堆栈型虚拟机的数字装置、如芯片卡10上实现根据本发明、用于保证安全的方法。虚拟机的执行堆栈20由一种数据结构形成,可由虚拟机通过该数据结构来操纵应用程序的中间代码的数据项。
本发明的原理则包括对常规堆栈型虚拟机增加安全堆栈30,它并行地再现常规执行堆栈上所执行的计算,以便校验常规执行堆栈上发生的运算的完整性。因此,根据本发明,对于认为是敏感的数据项起作用的任何代码必须在常规执行堆栈和安全堆栈上均产生动作。
为此,由虚拟机解释应用程序的中间代码的操作必须经过修改,以便传播常规堆栈和安全堆栈上的代码所定义的运算。但是,根据本发明的一个特征,通过安全堆栈操纵以便与常规执行堆栈上执行代码定义的运算并行执行这个运算的数据项不是与常规堆栈上所处理的相同的代码的数据项。
更具体来说,每次将表示为val的数据项置于常规执行堆栈时,表示为Chk(val)的对应校验和数据项被生成并加入安全堆栈。数据项Chk(val)预计通过预定函数Chk与数据项val链接。另外,每次在执行堆栈上使用代码的数据项val来执行算术和/或逻辑运算时,在安全堆栈上使用数据项Chk(val)来执行对应校验和运算。
因此,虚拟机的安全堆栈的有益效果是,通过检查数据项val是否置于执行堆栈上、然后将对应校验和数据项Chk(val)置于安全堆栈上,就能够在任何时刻校验它在执行敏感运算期间在常规执行堆栈上操纵的数据项val的完整性。
为此,代码的数据项以及对应校验和数据项通过具有特定数学性质的预定校验和函数相互链接,下面进行说明。
例如,设V是具有长度s的寄存器上的值的空间。对于长度为32位的寄存器,这给出:
V=[-2147483648,2147483647]=[-231,231-1]
设O是集合V,具有以下常规逻辑和算术运算(+、-、×、/、&、|)。
设F是集合V,具有按照以下方式符号化的运算的集合(⊙、◆、□、○)。
根据本发明的校验和函数Chk则可描述如下:
Chk:0 O-------------→F,使得对于集合中的任何运算op(+、-、×、/、&、|),在集合中存在对应的运算cop(
Figure GSB00000775122000082
⊙、◆、□、○),使得:
Chk(a op b)=Chk(a)cop Chk(b)
例如,在Java语言的上下文中,1补码的上述函数~可写作函数Chk的特例,如下所示:
a    |----------------------→~a
其中
Figure GSB00000775122000091
在数学上,校验和函数Chk可定义为从空间O到空间F的组射,涉及F中的所有运算。
因此可以看到,对于对作为当前虚拟机的常规算术空间的空间V中的一个或多个数据项起作用的任何逻辑或算术运算,能够找到使用所定义的函数Chk的等效计算,使用通过函数Chk与第一计算中使用的运算符op链接的运算符cop,并对于通过函数Chk与第一计算中使用的数据项链接的所谓的校验和数据项的一个或多个起作用。
图1示出根据上述原理、在常规执行堆栈和安全堆栈上执行给定中间代码的一个示例。
设中间代码定义的算术运算包括添加先前置于常规堆栈20中的两个整数val1和val2。然后生成对应校验和数据项Chk(val1)和Chk(val2),以便置于安全堆栈30中。然后,从常规执行堆栈20中弹出数据项val1和val2以便执行代码定义的算术运算+,而从安全堆栈30中弹出对应校验和数据项Chk(val1)和Chk(val2)以便并行执行与代码定义的运算+对应的运算,其中数据项通过函数Chk与校验和数据项链接。
如图2所示,然后将result=val1+val2的结果置于常规堆栈上,而对应校验和算术运算的结果Chk(result)置于安全堆栈上。
再看Java语言的上下文中的上述示例,其中可由函数~来定义校验和函数Chk,校验和结果Chk(result)是~val1+~val2+1。
同样,如果由虚拟机来执行减法运算,则在安全堆栈上执行对应运算。例如,如果中间代码定义的算术运算包括减去先前置于常规堆栈20中的两个整数val1和val2,则通过对校验和数据项~val1和~val2起作用,在安全堆栈30上并行执行对应校验和算术运算,并且置于安全堆栈上的对应校验和算术运算的校验和结果Chk(result)是~val1-~val2-1。
本发明的原理适用于涉及算术和/或逻辑运算的任何中间代码的行为。
因此,通过检验通常必须通过应用预定校验和函数Chk相互链接的、常规执行堆栈与安全堆栈上的结果之间的对应性,能够检验所执行的计算的完整性。
可通过可选方式来实现检验完整性的步骤。例如,它可被推迟、在预定时刻甚至随机地执行。
可设想与参照图1和图2所述、由虚拟机使用两个独立堆栈不同的实施例。例如,根据一个变形例,虚拟机只使用单个堆栈,并且交替堆叠中间代码的信息项和通过预定函数Chk所定义的对应校验和信息项。
本发明还可在寄存器类型的虚拟机的上下文中来实现。在这种情况下,将用于存储中间代码的信息项的虚拟机的各寄存器与专用于存储通过预定函数Chk从代码的信息项所定义的对应校验和信息项的安全寄存器进行匹配。
有利地,虚拟机可通过常规模式或者通过安全模式进行操作,其中,如上所述,将数据项的计算和操纵与对于校验和数据项的并行计算和操纵进行匹配。
根据第一变形例,可提供使虚拟机仅以安全模式进行操作。
根据另一个变形例,仅在应用程序的开发人员例如使用特定API进行请求时,才可应用到安全模式的转变(passage)。
根据另一个变形例,可随机执行到安全模式的转变。例如,决定30%的操作时间必须在安全模式中,而分配是随机的。
最后,可在检测到条件或特定事件例如执行特定类的方法、读取特定字段等时执行到安全模式的转变。

Claims (14)

1.一种用于在配备了用于解释中间代码的虚拟执行机的便携数字装置(10)上执行以所述中间代码编译的应用程序的方法,其特征在于,所述方法包括应用安全执行模式的步骤,其中由所述虚拟机解释所述中间代码的步骤包括以下步骤:
-对于为了执行所述中间代码定义的算术和/或逻辑运算而操纵的所述中间代码的各数据项(val1,val2),生成校验和数据项(Chk(val1),Chk(val2)),通过预定函数将所述校验和数据项与所述中间代码的所述数据项链接,
-与执行所述算术和/或逻辑运算并行执行校验和运算,所述校验和运算通过所述预定函数与所述中间代码所定义的所述算术和/或逻辑运算链接并对所述校验和数据项起作用。
2.如权利要求1所述的方法,其特征在于,它还包括以下步骤
-通过比较由所述算术和/或逻辑运算以及所述校验和运算得到的结果(result,Chk(result))来检验所执行的计算的完整性。
3.如权利要求2所述的方法,其特征在于,所述检验步骤包括:检验通过分别为所述中间代码定义的所述算术和/或逻辑运算和所述校验和运算的所述算术和/或逻辑运算以及所述校验和运算得到的结果通过所述预定函数来链接。
4.如权利要求1、2或3所述的方法,其特征在于,所述方法包括由所述虚拟机使用可由所述虚拟机操纵的两个独立数据结构(20,30),分别为专用于操纵所述中间代码的数据项以便执行所述中间代码定义的所述算术和/或逻辑运算的数据结构(20)以及专用于操纵对应校验和数据项以便执行对应校验和运算的数据结构(30)。
5.如权利要求4所述的方法,其特征在于,将所述虚拟机所使用的所述数据结构(20,30)组织成堆栈。
6.如权利要求4所述的方法,其特征在于,将所述虚拟机所使用的所述数据结构组织成寄存器。
7.如权利要求1、2或3所述的方法,其特征在于,所述方法包括由所述虚拟机使用单个数据结构,以便一方面操纵用于执行所述中间代码定义的所述算术和/或逻辑运算的所述中间代码的数据项以及另一方面操纵用于执行对应校验和运算的对应校验和数据项。
8.如权利要求7所述的方法,其特征在于,将所述虚拟机所使用的所述单个数据结构组织成堆栈。
9.如权利要求1、2或3所述的方法,其特征在于,所使用的所述预定函数定义组射。
10.如权利要求1、2或3所述的方法,其特征在于,连续应用安全执行模式。
11.如权利要求1、2或3所述的方法,其特征在于,随机应用安全执行模式。
12.如权利要求1、2或3所述的方法,其特征在于,在检测到特定条件时应用安全执行模式。
13.如权利要求12所述的方法,其特征在于,应用所述安全执行模式的条件是部分所述中间代码的解释的函数。
14.如权利要求1-3中的任一项所述的方法,其特征在于,所述便携数字装置是引入了Java或DotNet类型的虚拟机的芯片卡(10)。
CN2006800525319A 2005-12-13 2006-12-12 用于执行中间代码编译的应用程序的方法 Active CN101366035B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0512627 2005-12-13
FR0512627 2005-12-13
PCT/EP2006/069623 WO2007068706A1 (fr) 2005-12-13 2006-12-12 Procede pour securiser l'execution d'un code logiciel en langage intermediaire dans un appareil portatif

Publications (2)

Publication Number Publication Date
CN101366035A CN101366035A (zh) 2009-02-11
CN101366035B true CN101366035B (zh) 2012-09-05

Family

ID=36764534

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800525319A Active CN101366035B (zh) 2005-12-13 2006-12-12 用于执行中间代码编译的应用程序的方法

Country Status (5)

Country Link
US (1) US8661535B2 (zh)
EP (1) EP1960934B1 (zh)
CN (1) CN101366035B (zh)
AT (1) ATE550725T1 (zh)
WO (1) WO2007068706A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832682B2 (en) * 2008-03-28 2014-09-09 Vmware, Inc. Trace collection for a virtual machine
EP2332088B1 (en) * 2008-08-22 2020-10-28 Titan Automotive Solutions Verification of process integrity
FR2967275B1 (fr) 2010-11-10 2012-12-28 Oberthur Technologies Procede, programme d'ordinateur et dispositif de securisation de code intermediaire de programmation pour son execution par une machine virtuelle
FR3047584B1 (fr) * 2016-02-05 2018-03-02 Morpho Procede d'execution d'instructions d'applications orientees objet par un interpreteur
US10447478B2 (en) * 2016-06-06 2019-10-15 Microsoft Technology Licensing, Llc Cryptographic applications for a blockchain system
FR3059119B1 (fr) * 2016-11-21 2018-11-23 Safran Identity & Security Procede de protection d'un dispositif electronique executant un programme contre des attaques par injection de faute et par confusion de type.
FR3068151B1 (fr) * 2017-06-27 2022-01-28 Safran Identity & Security Procede de protection d'un dispositif electronique executant un programme contre des attaques par injection de faute
CN107341372B (zh) * 2017-07-25 2018-12-07 北京深思数盾科技股份有限公司 一种软件保护方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040186979A1 (en) * 2001-07-26 2004-09-23 Infineon Technologies Ag Processor with several calculating units
CN1609799A (zh) * 2003-10-23 2005-04-27 微软公司 资源清单

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US6760907B2 (en) * 1998-06-30 2004-07-06 Sun Microsystems, Inc. Code generation for a bytecode compiler
US6618769B1 (en) * 1999-05-27 2003-09-09 Sun Microsystems, Inc. Module-by-module verification
US6651186B1 (en) * 2000-04-28 2003-11-18 Sun Microsystems, Inc. Remote incremental program verification using API definitions
GB2367654B (en) * 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers
US20030126590A1 (en) * 2001-12-28 2003-07-03 Michael Burrows System and method for dynamic data-type checking
US7660985B2 (en) * 2003-04-30 2010-02-09 At&T Corp. Program security through stack segregation
FR2867929B1 (fr) * 2004-03-19 2007-03-02 Gemplus Card Int Procede d'authentification dynamique de programmes par un objet portable electronique

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040186979A1 (en) * 2001-07-26 2004-09-23 Infineon Technologies Ag Processor with several calculating units
CN1609799A (zh) * 2003-10-23 2005-04-27 微软公司 资源清单

Also Published As

Publication number Publication date
ATE550725T1 (de) 2012-04-15
EP1960934B1 (fr) 2012-03-21
US20090165149A1 (en) 2009-06-25
US8661535B2 (en) 2014-02-25
CN101366035A (zh) 2009-02-11
WO2007068706A1 (fr) 2007-06-21
EP1960934A1 (fr) 2008-08-27

Similar Documents

Publication Publication Date Title
CN101366035B (zh) 用于执行中间代码编译的应用程序的方法
CN108614960B (zh) 一种基于前端字节码技术的JavaScript虚拟化保护方法
Leroy Bytecode verification on Java smart cards
Yadegari et al. A generic approach to automatic deobfuscation of executable code
US7210127B1 (en) Methods and apparatus for executing instructions in parallel
US7380242B2 (en) Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
EP1118940B1 (en) Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
Brooks Survey of automated vulnerability detection and exploit generation techniques in cyber reasoning systems
US20080288921A1 (en) Transformations for Software Obfuscation and Individualization
Hummel et al. Annotating the Java bytecodes in support of optimization
US9129137B2 (en) Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine
Li et al. Bytecode testability transformation
Zhao et al. Haepg: An automatic multi-hop exploitation generation framework
Avvenuti et al. Java bytecode verification for secure information flow
Batchelder et al. Obfuscating Java: The most pain for the least gain
JP4754635B2 (ja) 制御フロー保護機構
Hojjat et al. On strings in software model checking
League et al. Precision in practice: A type-preserving Java compiler
Cardoso et al. Towards an automatic path from Java/sup TM/bytecodes to hardware through high-level synthesis
US7155351B2 (en) Method for verifying the calculator core of a microprocessor or a microcontroller
Heinen et al. Juggrnaut–an abstract JVM
Pereira et al. Beetle: A feature-based approach to reduce staleness in profile data
Bouchenak et al. Efficient Java thread serialization
Naccache et al. Reducing the memory complexity of type-inference algorithms
Sanvido et al. XGIOTTO language report

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: GEMPLUS CARD INT

Free format text: FORMER OWNER: GEMPLUS CO.

Effective date: 20111202

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20111202

Address after: French Meudon

Applicant after: GEMALTO S.A.

Address before: French based Minos

Applicant before: GEMPLUS

C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: French Meudon

Patentee after: Thales Digital Security France

Address before: French Meudon

Patentee before: GEMALTO S.A.

TR01 Transfer of patent right

Effective date of registration: 20230403

Address after: French Meudon

Patentee after: Thales Digital Security France Easy Stock Co.

Address before: French Meudon

Patentee before: Thales Digital Security France

TR01 Transfer of patent right