CN102428472B - 本地代码的安全执行 - Google Patents
本地代码的安全执行 Download PDFInfo
- Publication number
- CN102428472B CN102428472B CN201080021559.2A CN201080021559A CN102428472B CN 102428472 B CN102428472 B CN 102428472B CN 201080021559 A CN201080021559 A CN 201080021559A CN 102428472 B CN102428472 B CN 102428472B
- Authority
- CN
- China
- Prior art keywords
- instruction
- mmu
- storer
- processor
- access
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
- G06F8/437—Type checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
计算设备包括:存储器;处理器;解释器,以及存储器管理单元。解释器用于控制处理器执行包括非处理器本地格式的至少一个第一指令和处理器本地的机器代码格式的至少一个第二指令的程序。存储器管理单元适于当执行所述至少一个第二指令时控制处理器对存储器的访问,还可能控制对外围设备的访问。
Description
技术领域
本发明涉及从解释程序调用的本地代码(native code)的执行。具体地,本发明涉及作为Java应用程序的一部分的本地机器代码的执行;以及更具体地,涉及Java Card、.NET智能卡或类似环境中的本地代码的执行。
背景技术
本地代码或机器代码指的是针对计算机程序代码的取决于机器的格式。本地代码包括可以由指定处理器或计算体系结构直接执行的指令。因为不同处理器的指令集合不同,所以不能在不同平台上移植本地代码。
一种针对不能移植本地机器代码的解决方案是以一般形式(generic form)分发程序。解释代码就是这种一般形式。解释代码不依赖于机器,因此是可移植的代码。提供解释器以在指定处理器上运行这种代码。解释器是将解释代码的指令转换为指定处理器执行的本地代码的软件。
Java是通常要被解释(并非直接被编译为机器代码)的编程语言的典型例子。Java编译器将Java源代码转换为Java字节码,该Java字节码是不依赖于机器的(非本地的)代码。为了在指定平台上运行该Java字节码,称为Java虚拟机的解释器解释代码,并向处理器提供相应的机器代码指令。Java字节码的增加的移植性的一个缺点在于降低了执行代码的速度。这一部分是由于需要在运行时执行附加的解释步骤,一部分是由于程序员不能针对特定处理器优化代码,而这对于本地代码通常是可能的。
但是,Java的可移植性使得其广泛用于多种应用。一种这样的应用是智能卡技术。智能卡或芯片卡被嵌入到具备薄、平、类似卡形式的集成电路器件中。典型地,智能卡或芯片卡包括至少一个存储器,但是通常还具有提供一些处理能力的微处理器组件。它们被用于多种应用中:例如,接触式智能卡技术被用于移动电话中的用户识别模块(SIM)卡和信用卡中;基于射频识别(RFID)技术的非接触式智能卡被用于公共交通支付系统和其他电子钱包应用中。
Sun Microsystems公布的Java Card Platform Specification已经定义了由智能卡执行的Java语言的子集。这提供了完整Java语言的特征的简化子集,该简化子集适合于智能卡环境的有限处理和存储器资源。在智能卡上运行基于Java的程序的能力使得能够在支持该规范的任何智能卡上并行运行不同的软件应用程序,而不用考虑下层的处理器体系结构。这在应用程序员没有严重负担的情况下提高了灵活性和协同工作的能力。
然而,与诸如Java字节码之类的解释代码相关联的性能缺陷在诸如智能卡之类的受约束的计算环境中是尤其令人不快的。
发明内容
根据本发明的一方面,提供了一种计算设备,包括:存储器;处理器;解释器,用于控制处理器执行包括非处理器本地格式的至少一个第一指令的程序,该程序调用处理器本地的机器代码格式的至少一个第二指令;以及存储器管理单元,适于当执行所述至少一个第二指令时控制处理器对存储器的访问,并且阻止访问分配给解释器但没有分配给所述第二指令的存储器部分。
非本地代码可以是不依赖于机器的代码,例如Java字节码。本地代码是机器专有代码,使用所讨论的特定处理器的指令集合。典型地,程序的以非本地解释代码提供的一部分将调用以本地代码提供(例如编译)的函数,使得可以针对所讨论的特定处理器加速和/或优化该函数的执行。因此,以本地代码提供的指令可以包括程序的计算密集部分,例如加密函数。使用本地代码暂时绕开了解释器,直到控制被交回程序的解释部分为止。然而,这会带来安全风险,因为不能对本地机器代码执行当解释器在处理器上执行解释(非本地)代码时一般执行的检查。为了减少这种安全风险,提供存储器管理单元(MMU),以控制机器代码指令对存储器的访问。本地指令请求的所有存储器访问(例如,读和写操作)都经由MMU处理。在该方面,当本地代码被执行时,MMU履行对解释器的存储器保护角色。具体地,可以阻止本地函数访问除了通过调用本地函数的非本地程序专门分配给本地函数的存储器部分以外的存储器部分。在本发明的一些实施例中,MMU不仅可以控制访问存储器,还可能控制访问系统的一个或多个外围设备,例如输入/输出设备或密码协处理器。由于控制了存储器和可选的外围设备,这可以被看作是一种“虚拟本地执行环境”,因为其具备纯本地代码的多种优点,同时还保持了对代码执行的控制度。这会为具有速度的解释(虚拟)环境带来安全和可靠,并且为通常与本地执行环境相关的优化处理提供机会。应该注意的是MMU是硬件而解释器是软件组件。
优选地,MMU适于仅当执行所述至少一个第二指令时控制处理器对存储器的访问。
按照这种方式,仅当需要MMU进行保护时,即仅当执行本地代码时,MMU才用于存储器访问或外围设备访问。当解释非本地代码时,解释器可以执行保护,而MMU则是冗余的。
解释器可以是Java虚拟机,所述至少一个第一指令可以包括Java字节码。
计算设备可以是Java Card智能卡或者具有解释器的任何其他智能卡,例如,微软的.NET环境。
这种智能卡典型地具有极其有限的存储器和处理器资源。因此,特别期望本地代码函数可用于改善执行速度。然而,Java Card可以用于安全性很关键的应用中——例如信用卡或电子钱包应用。因此,尤其有利的是提供鲁棒的安全性,以阻止应用程序彼此干扰或者与卡操作系统相互干扰,并且阻止应用程序潜在地危及敏感数据或函数的安全。
根据本发明的另一方面,提供了一种用于包括处理器和存储器的计算设备的执行程序的方法,该程序包括非处理器本地格式的至少一个第一指令,所述至少一个第一指令调用处理器本地的机器代码格式的至少一个第二指令,所述方法包括:使用解释器解释所述至少一个第一指令,并且控制处理器执行所述至少一个第一指令;以及使用处理器执行所述至少一个第二指令,其中,使用MMU控制对存储器的访问,以阻止访问存储器的被分配给解释器但是没有分配给所述第二指令的部分。
当解释所述至少一个第一指令时,可以通过软件管理其存储器访问,以提供存储器保护。当执行所述至少一个第二指令时,MMU通过充当处于本地代码函数控制下的处理器与其希望访问的存储器及可选的外部设备之间的中介来提供存储器保护。按照这种方式,MMU充当一种“硬件防火墙”,其保护计算设备免受恶意的或错误的本地代码影响。
该方法还可以包括,在执行所述至少一个第二指令的步骤之前:检查已经把所述至少一个第二指令要访问的存储器部分分配给了所述至少一个第二指令;以及将用于所述存储器部分的映射存储在MMU的配置表中,该映射将所述至少一个第二指令请求的虚拟地址映射到存储器中的物理地址。
在运行本地代码之前,可以使用与该代码所需的存储器访问和可选的外围设备访问有关的信息来初始化MMU中的配置表(例如,查找表)。当初始化该表时,计算设备的操作系统可以检查本地代码引用的每个存储器部分和任何外围设备是否确实属于该程序,并且应当被本地代码访问。对于每个这种部分,如果检查是成功的,则将对该部分的引用添加到配置表中。这也在本地代码使用的存储器寻址格式与存储器自身的相应部分的物理地址之间建立了对应关系。一旦创建了该配置表,则MMU用作到存储器和任何外围设备的网关——本地代码仅可以访问存在于表中的那些地址或外围设备。因此,在该“虚拟本地执行环境”中运行的本地代码不能访问属于其他软件应用程序的存储器部分或外围设备。
执行至少一个第二指令的步骤可以包括使用MMU访问存储器的一部分,其中:MMU根据存储于MMU的配置表中的映射,将所述至少一个第二指令请求的虚拟地址转换为存储器的所述一部分的物理地址;如果存储器的所述一部分不属于该程序,或者属于该程序但未被分配给所述至少一个第二指令,则MMU拒绝访问。
当本地代码正在运行时,因为MMU将代码请求的存储器访问转换为物理存储器位置,所以MMU提供固有的存储器保护。如果本地代码不应该访问所请求的存储器(例如,因为所请求的存储器属于调用该存储器的程序以外的应用程序),则MMU拒绝访问。即使已经将存储器位置分配给了调用的应用程序,但是如果调用的应用程序没有将存储器分配给被调用的本地函数,则MMU也将拒绝访问。也可以将相同的保护原理应用到对计算设备的诸如外围设备之类的其他资源的访问。
所述至少一个第一指令可以包括Java字节码,解释所述至少一个第一指令的步骤可以由Java虚拟机执行。
还提供了一种计算机程序,包括计算机程序代码装置,该计算机程序代码装置适于当所述程序在计算机上运行时,执行该方法的所有步骤。
还提供一种如上所述的计算机程序,在计算机可读介质中实现。
附图说明
现在将参考附图以示例的方式描述本发明,其中:
图1是根据实施例的计算设备的框图;
图2示出了根据实施例的不同软件组件与执行环境之间的概念关系;以及
图3是根据实施例执行程序的方法的流程图。
具体实施方式
包括主机处理器的机器代码格式的指令的本地代码被计算平台的处理器直接执行,从而可以使用平台上的任何可用资源。因此,以本地代码提供的软件应用程序可能使整个平台产生故障,并且对其他应用和平台本身产生潜在的安全威胁。例如,本地代码可以读取被期望是私有的存储器,或者可以重写属于其他应用程序的存储器,从而导致应用程序崩溃。当引入恶意代码时可以故意导致该问题,或者由于无意的编程错误而偶然地产生该问题。
为了提供保护以应对这些问题,一些操作系统使用硬件防火墙,以将不同的本地应用程序彼此隔离,并且将其与操作系统本身隔离。通常由存储器管理单元(MMU)来实现该硬件防火墙。一种对于这种硬件防火墙的不同观点是将其看作虚拟化技术。每个应用程序均能获得其自身自备的虚拟硬件平台(至少包括存储器,但是还可能包括类似密码协处理器的外围设备),该虚拟硬件平台与其他虚拟硬件平台以及下层物理平台隔离。
常规来讲,这种类型的硬件存储器保护在诸如基于Java的计算设备之类的解释平台上是不必要的。对于Java应用程序来说,不需要硬件来保护应用程序免受彼此影响或者保护Java平台,因为由于Java的本质,Java应用程序不可能直接访问平台的任何资源。相反,对资源的所有访问均通过其他的软件中间层来实现。这是因为Java被实现为一种解释语言,其中,以不依赖于机器的字节码形式来提供指令。为了执行字节码指令,必须由作为Java解释器的Java虚拟机(JVM)来处理字节码指令。因为这种虚拟化,所以在从字节码到机器代码的解释过程中,可以对照Java平台的安全策略来检查应用程序的所有动作。
在特定情况下,期望在解释环境中提供设施来执行本地机器代码。这会导致产生与本地代码相关联的潜在安全问题(如上所述),原因在于解释器将不再控制执行过程。然而,直到目前为止,Java平台尚未使用MMU来解决这些问题。
即使在包括Java虚拟机和MMU二者的平台上,MMU也没有对被称为本地代码的解释程序提供保护。例如,在运行Java应用程序的个人计算机(PC)中,没有使用MMU来将本地代码与解释字节码的虚拟机相隔离。PC中的MMU将本地代码和虚拟机看作是本质上相同的程序。这意味着本地实现的代码能够访问正在运行中的虚拟机的整个存储器,因为该存储器属于相同的操作系统任务。这意味着本地代码可能损害整个运行过程。对于PC来讲,这通常是被接受的,因为安全要求相对较少。
本发明的实施例解决了诸如Java应用程序之类的解释软件程序的安全和性能问题。虽然Java语言通过不允许对资源的任何直接访问来提供安全的编程,但是这会牺牲性能。与诸如C或类似语言之类的本地语言实现相比,当在Java中编程时,多数算法(尤其是那些计算密集的算法)要慢得多。由于这个原因,通常由针对指定平台的Java库来提供标准的、公共所需的算法,所述Java库通常包含本地实现。
然而,当程序员想要使用现有Java平台但是需要添加在Java库中还没有编译的特定算法或方法时,问题就产生了。这种算法的例子可以是私有或预定(bespoke)密码算法。于是就产生了如下矛盾:在Java语言中增加算法实现起来太慢;但是在本地语言中增加算法又将破坏Java平台的安全性。对于不要求安全操作的Java平台来说,尽管本地代码可能在功能上影响整个Java平台,但是本地代码的方法是可以接受的。然而,对于注重安全性的平台来说,由于若干原因,仅增加本地代码的实现通常是不可以接受的。首先,如果在制造和认证之后可以随意增加本地代码,则针对计算平台的任何第三方的认证将是无效的。然而实践中,硬件供货商不可能针对可能的缺陷而对其客户中的每个客户开发的本地代码进行仔细地审查。实际上,客户甚至可以不允许Java平台的供货商检查客户想要增加的本地代码。因此,如果需要本地代码,则可能希望计算设备自身包括针对添加到设备中的任意本地代码函数的保护。
本发明的实施例提供了一种将本地代码添加到现有Java平台而不用危及Java平台或在Java平台上运行的其他任何应用程序的安全的方法。以这样的方式来实现该方法,其中不需要向平台供货商或向第三方评估或认证机构公开(例如)客户本地代码。
根据本发明实施例,与Java执行环境一起提供虚拟化本地执行环境。该虚拟化本地执行环境允许在Java Card使用寿命中的每个阶段安全地添加本地函数。在该虚拟化本地执行环境中,可以以本地平台的全速运行本地代码,以加速在Java平台上运行的Java应用程序。同时,通过使用存储器管理单元保证了Java平台、Java平台的应用程序和下层物理本地平台的安全性,这确保了仅属于调用Java小程序的存储器部分可以被该本地方法访问。
图1是根据实施例操作的计算设备的简化框图。处理器100执行构成计算机程序的指令。以Java字节码的形式提供该程序的一部分。由实现为也在处理器上运行的软件的虚拟机来执行这些字节码指令。原理上,在处理器上运行的虚拟机(JVM)提供Java执行环境210,该Java执行环境是Java应用程序232与本地执行环境200之间的软件中间层。在图2中示出了该原理性关系。可以存在其他的Java应用程序231。包括Java执行环境210的JVM或解释器确保了每个应用程序231、232免受彼此的影响,以及下层本地执行环境200免受所有的应用程序的影响。因此,因为在可控环境中执行恶意或不良编写的代码,所以可以安全地运行任何Java应用程序。在硬件方面,本地执行环境200包括处理器100、MMU110、存储器120和诸如外围设备130之类的其他资源。
作为程序的一部分,一个Java小程序232调用以本地代码240提供的函数。本地代码包括使用特定处理器100的指令集合的机器代码。因此,JVM不对该本地代码进行解释,并且因此在Java执行环境210的外部运行该本地代码。如果在没有其他控制的情况下直接在处理器100上运行本地代码240,则可以避开Java环境固有的保护机制。例如,如果本地代码240希望读或写物理存储器位置,则本地代码240就能进行这样的读或写。
为了消除这种安全风险,提供MMU110。该硬件设备连接在处理器100与存储器120之间。因此,必须使用MMU作为网关来执行所有的存储器访问。可以直接通过该网关传送来自(经由JVM解释的)Java字节码的请求;而对来自字节码调用的本地代码的请求进行控制。原理上,MMU包括本地代码的解释器执行环境与其他执行环境之间的硬件防火墙215(如图2中虚线所示)。在虚拟本地执行环境220中执行本地代码。通过充当硬件防火墙的MMU,保护所有的其他应用程序和环境免受本地代码影响。也可以使用MMU110来保护除存储器以外的其他资源。图1示出了外围设备130,当执行本地代码时,也可以经由MMU访问该外围设备130。对于存储器120来说,MMU110充当外围设备130与执行本地代码的处理器100之间的硬件防火墙。
现在将参考图3描述用于安全执行本地代码的方法。在步骤300中,解释器(JVM)按照常规方式解释解释代码(Java字节码)。此处,由解释器提供存储器保护。在步骤310中,解释代码调用以本地代码提供的函数。该步骤310表示操作系统(OS)在安全环境中引发对本地函数的调用。例如,可以用C代码撰写本地函数,以及针对平台的特定处理器100编译该本地函数,其中,程序是针对该平台开发的。
在将控制传递到本地代码函数以开始执行之前,针对平台的操作系统进行调用以调节MMU110。向操作系统传送诸如将需要被本地代码函数访问的存储器部分(和可能的外围设备)之类的所有的资源。这可以包括传送在本地小程序中数据的引用,以及如果必要,可以包括传送全局可用的存储器区域。对于存储器的每个这种部分(或外围设备),操作系统检查320是否许可本地代码使用所引用的资源。按照这种方式,该方法确保了本地代码函数将不能够非法地访问存储器或外围设备。如果检查成功,则将对存储器的相关部分的地址和大小的引用(或相应的对外围设备的引用)添加到MMU 110中的配置表。该查找表的格式是依赖于硬件平台的;然而,总体说来,该查找表将包括从本地代码使用的虚拟存储器地址到存储器自身中的物理存储器地址的映射以及被授权或被拒绝的对系统的外围设备的访问的列表。仅仅按照这种方式映射的存储器部分和外围设备是可以经由MMU访问的。存储器和外围设备必须通过操作系统执行的安全检查以被映射。操作系统(OS)代码执行步骤310到330。
在初始化MMU中的查找表之后,封闭(本地)的过程就可以开始了340。在本地代码函数内部,可以访问和改变已经针对其定义了从虚拟地址到物理地址的映射的所有存储器部分和外围设备。这通过将MMU 110用作针对存储器120和外围设备130的网关来实现。处理器(在本地代码的控制之下)产生使用虚拟地址的存储器访问请求。MMU通过将虚拟地址转换成物理地址并且根据请求访问存储器相关部分来响应这些请求。如果所请求的虚拟地址没有已经在MMU 110的配置表中定义的映射,则这意味着该虚拟地址在属于调用Java应用程序的存储器边界之外。在这种情况下,例如,MMU可以表示出现异常。
在步骤350中,本地代码的执行结束,将控制返回调用(Java)程序。在从本地方法调用返回之后,对于调用应用程序来说,在相关存储器部分中的所有被修改的数据都是可访问的,因为该存储器属于该应用程序。与步骤300类似,步骤350涉及解释代码。
应该注意的是:当JVM解释Java字节码的时候,JVM执行存储器(或外围设备)映射。此时,可以禁用MMU的保护功能。例如,在这种模式下,MMU可以执行简单的传送功能,而不是像执行本地代码时那样映射存储器地址。当然,在这种模式下,可以简单地通过提供直接从处理器到存储器的备选通信路径以在物理上避开MMU,来实现相同的效果。
本发明实施例提供多种有益效果——尤其是在基于Java的智能卡领域。
在卡发行之前或之后,可以通过私有函数调用来扩展Java Card。对于供货商来说,开发和认证Java Card操作系统耗时较长。服务提供商(供货商的客户)通常想要尽可能快地将其产品推向市场。如果Java应用程序代码太慢而不能满足客户的需求,那么就可以使用本发明实施例来加速应用程序的运行时间。当已经完成该卡并准备使用时,对JavaCard的开发将不会影响开发的过程。
可以保持对包括未知第三方代码的Java Card进行认证。对于认证来说,所有的源代码对于评估者来说都需要是可用的。基于商业上的原因,一些服务提供商可能根本不想公开其源代码,但是仍然想要在所认证的产品中包括二进制版本(本地代码)。本发明实施例允许这样做,因为这可以通过硬件(MMU)来保证,从而未知第三方代码不能够对系统或其他应用程序产生任何安全威胁。
类似地,可以例如通过保护商业秘密来保护第三方软件供应商的知识产权。一些库的开发者并不向Java Card操作系统的供货商或者他们的客户发布他们的源代码。根据实施例,本发明允许库开发者改写或优化他们的库来符合操作系统,而不损失执行性能,并且不必向智能卡系统的供货商或其他操作系统的维护人员披露他们的源代码。
此外,本发明实施例可以允许针对在指定平台上的不同软件的多样化需求来调整存储器映射。一些操作系统的内部结构可能不允许集成外部库。关于这种情况的一个原因可能是库采用的存储器结构不符合操作系统的原理。本发明实施例可以允许针对库执行(library execution)的存储器映射,该库执行与下层硬件的物理存储器布局给出的库执行不同。
对MMU的这种额外使用与本地代码的执行相关,该本地代码是JavaCard OS的一部分(因此,假设没有安全风险),但是基于技术的原因需要不同的地址映射。对于Java字节码来说,没有必要使用MMU,因为由解释器——Java Card运行时间环境(JCRE)——完成所有的保护(和映射)。所以,以一个大块的形式使用所需的所有存储器。
当集成库时,通常按照库利用其自身的存储器模型和布局(在库开发期间设定的布局)的方式来写入库。这种设定的一个典型例子是从存储器地址0x00开始存储所有的数据。当(使用直接的物理寻址)组合这种类型的两个或多个不同系统时,该两个或多个不同系统以可能产生不可预料的不想要结果的方式彼此相互干扰(例如两段代码使用相同存储器并且彼此相互干扰)。本发明实施例还由于针对不同库进行了执行环境的虚拟化(并且因此进行的有效隔离)而可以解决该问题。
尽管已经在附图和以上描述中详细地示出和描述了本发明,但是这种示出和描述被认为是说明性或示例性的,而非是限制性的;本发明不限于所公开的实施例。
例如,在本地代码可以经由MMU访问诸如协处理器或输入/输出(I/O)设备之类的其他硬件功能的实施例中,可以实施本发明。即,可以使用MMU的网关或硬件防火墙功能来保护硬件外围设备和存储器。对于本领域技术人员来说显而易见的是,按照这种方式访问其他硬件的可能性取决于指定实施例中使用的特定MMU和下层硬件体系结构。在这种情况下,可以将MMU重命名为“资源管理单元”RMU或者以“资源管理单元”来补充MMU,以控制对外围设备的访问。因此,贯穿本说明书,应该将对“MMU”的引用当作是包括对“RMU”的引用。
在前述示例实施例中描述的存储器120可以包括任何适当类型的存储器,包括所有类型的易失性和非易失性存储器。这包括(但不限于)静电、磁或光存储装置。在智能卡的特殊情况中,存储器一般是半导体存储器,例如随机访问存储器(RAM)或电可擦除可编程只读存储器(EEPROM).
通过学习附图、说明书和附加权利要求书,本领域技术人员在实践请求保护的发明时可以理解和实施所公开实施例的其他变体。在权利要求中,词语“包括”不排除其他元件或步骤,在不特别指明“一个”对象时,不排斥多个对象的情况。单个处理器或其他单元可以满足权利要求中所记载的若干项的功能。在互不相同的从属权利要求中记载特定特征的唯一事实并不表示不可以有利地使用这些特征的组合。不仅可以将计算机程序存储/分配在诸如光存储介质或由其他硬件一起提供或作为其他硬件的一部分的固态介质之类的适当介质上,还可以通过诸如因特网或其他有线或无线通信系统之类的其他形式进行分配。权利要求中的任何参考标记不应该解释为限制范围。
Claims (10)
1.一种计算设备,包括:
存储器;
处理器;
解释器,用于控制处理器执行包括非处理器本地格式的至少一个第一指令的程序,该程序调用处理器本地的机器代码格式的至少一个第二指令;
MMU,适于当执行所述至少一个第二指令时控制处理器对存储器的访问,MMU作为网关使所述至少一个第二指令经由MMU访问存储器,并且阻止访问分配给解释器但没有分配给所述第二指令的存储器部分;以及
操作系统,用于在处理器执行至少一个第二指令之前:
检查已经把所述至少一个第二指令要访问的存储器部分分配给了所述至少一个第二指令;以及
将用于所述存储器部分的映射存储在MMU的配置表中,该映射将所述至少一个第二指令请求的虚拟地址映射到存储器中的物理地址。
2.如权利要求1所述的计算设备,其中,MMU适于仅当执行所述至少一个第二指令时控制处理器对存储器的访问。
3.如权利要求1或2所述的计算设备,其中,解释器是Java虚拟机,以及所述至少一个第一指令包括Java字节码。
4.如权利要求1或2所述的计算设备,其中,计算设备是智能卡。
5.如权利要求1或2所述的计算设备,还包括外围设备,
其中,MMU适于当执行所述至少一个第二指令时控制处理器对外围设备的访问,并且如果已经将所述外围设备分配给解释器但是没有分配给所述第二指令,则阻止访问所述外围设备。
6.一种用于包括处理器和存储器的计算设备的执行程序的方法,该程序包括非处理器本地格式的至少一个第一指令,所述至少一个第一指令调用处理器本地的机器代码格式的至少一个第二指令,所述方法包括:
使用解释器解释所述至少一个第一指令,并且控制处理器执行所述至少一个第一指令;以及
使用处理器执行所述至少一个第二指令,其中,使用MMU控制对存储器的访问,MMU作为网关使所述至少一个第二指令经由MMU访问存储器,以阻止访问存储器的被分配给解释器但是没有分配给所述第二指令的部分,
该方法还包括,在执行至少一个第二指令的步骤之前:
检查已经把所述至少一个第二指令要访问的存储器部分分配给了所述至少一个第二指令;以及
将用于所述存储器部分的映射存储在MMU的配置表中,该映射将所述至少一个第二指令请求的虚拟地址映射到存储器中的物理地址。
7.如权利要求6所述的方法,其中执行所述至少一个第二指令的步骤包括:
使用MMU访问存储器的一部分,其中:
MMU根据存储于MMU的配置表中的映射,将所述至少一个第二指令请求的虚拟地址转换为存储器的所述一部分的物理地址;
如果没有将存储器的所述一部分分配给所述至少一个第二指令,则MMU拒绝访问。
8.如权利要求6或7所述的方法,其中,所述至少一个第一指令包括Java字节码,以及所述解释所述至少一个第一指令的步骤由Java虚拟机来执行。
9.如权利要求6或7所述的方法,其中,计算设备是智能卡。
10.如权利要求6或7所述的方法,其中,计算设备还包括外围设备,其中,在使用处理器执行所述至少一个第二指令的步骤中,
使用MMU控制对外围设备的访问,如果已经将外围设备分配给解释器但是没有分配给所述第二指令,则阻止访问外围设备。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP09160543A EP2254070A1 (en) | 2009-05-18 | 2009-05-18 | Secure execution of native code |
EP09160543.6 | 2009-05-18 | ||
PCT/IB2010/052160 WO2010134009A1 (en) | 2009-05-18 | 2010-05-15 | Secure execution of native code |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102428472A CN102428472A (zh) | 2012-04-25 |
CN102428472B true CN102428472B (zh) | 2015-04-22 |
Family
ID=40989763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080021559.2A Active CN102428472B (zh) | 2009-05-18 | 2010-05-15 | 本地代码的安全执行 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10223291B2 (zh) |
EP (1) | EP2254070A1 (zh) |
CN (1) | CN102428472B (zh) |
WO (1) | WO2010134009A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2898413B1 (en) * | 2012-09-24 | 2016-11-23 | Giesecke & Devrient GmbH | A security module and a method for optimum memory utilization |
US9659156B1 (en) * | 2014-03-20 | 2017-05-23 | Symantec Corporation | Systems and methods for protecting virtual machine program code |
US10650140B2 (en) * | 2015-03-27 | 2020-05-12 | Intel Corporation | Control-flow integrity with managed code and unmanaged code |
CN105630534A (zh) * | 2015-04-27 | 2016-06-01 | 宇龙计算机通信科技(深圳)有限公司 | 基于TrustZone架构的应用程序执行方法、装置和终端 |
CN108595245B (zh) * | 2018-03-13 | 2021-08-13 | 深圳市文鼎创数据科技有限公司 | Java卡外设访问方法及Java卡虚拟机 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1324472A (zh) * | 1998-10-29 | 2001-11-28 | 施蓝姆伯格系统公司 | 器件和用于制造集成电路防护的方法 |
US7353343B2 (en) * | 2003-07-01 | 2008-04-01 | Benq Corporation | Memory management system for preventing program execution when CPU fetches execution code from unoccupied region of memory |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6321323B1 (en) * | 1997-06-27 | 2001-11-20 | Sun Microsystems, Inc. | System and method for executing platform-independent code on a co-processor |
US6128774A (en) * | 1997-10-28 | 2000-10-03 | Necula; George C. | Safe to execute verification of software |
GB2356469B (en) * | 1999-11-17 | 2001-12-12 | Motorola Ltd | Portable data carrier memory management system and method |
EP1316014A1 (en) * | 2000-08-31 | 2003-06-04 | Koninklijke Philips Electronics N.V. | System for executing virtual machine instructions |
US7124237B2 (en) * | 2002-10-03 | 2006-10-17 | Seagate Technology Llc | Virtual machine emulation in the memory space of a programmable processor |
JP4275451B2 (ja) | 2003-04-23 | 2009-06-10 | 株式会社日立製作所 | 不正メモリアクセス検知方法及びそのプログラム |
US7380276B2 (en) * | 2004-05-20 | 2008-05-27 | Intel Corporation | Processor extensions and software verification to support type-safe language environments running with untrusted code |
EP1619572A1 (en) * | 2004-07-23 | 2006-01-25 | Texas Instruments Incorporated | System and method of identifying and preventing security violations within a computing system |
WO2007008595A2 (en) * | 2005-07-07 | 2007-01-18 | Texas Instruments Incorporated | Method and system for a multi-sharing security firewall |
US8099718B2 (en) * | 2007-11-13 | 2012-01-17 | Intel Corporation | Method and system for whitelisting software components |
US20100175104A1 (en) * | 2008-03-03 | 2010-07-08 | Khalid Atm Shafiqul | Safe and secure program execution framework with guest application space |
US8424082B2 (en) * | 2008-05-08 | 2013-04-16 | Google Inc. | Safely executing an untrusted native code module on a computing device |
US8281296B2 (en) * | 2008-08-12 | 2012-10-02 | Oracle America, Inc. | Cross-ISA inlining in a system virtual machine |
US8381288B2 (en) * | 2008-09-30 | 2013-02-19 | Intel Corporation | Restricted component access to application memory |
-
2009
- 2009-05-18 EP EP09160543A patent/EP2254070A1/en not_active Ceased
-
2010
- 2010-05-15 WO PCT/IB2010/052160 patent/WO2010134009A1/en active Application Filing
- 2010-05-15 US US13/320,526 patent/US10223291B2/en active Active
- 2010-05-15 CN CN201080021559.2A patent/CN102428472B/zh active Active
-
2011
- 2011-05-14 US US13/320,526 patent/US20120059993A1/en active Granted
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1324472A (zh) * | 1998-10-29 | 2001-11-28 | 施蓝姆伯格系统公司 | 器件和用于制造集成电路防护的方法 |
US7353343B2 (en) * | 2003-07-01 | 2008-04-01 | Benq Corporation | Memory management system for preventing program execution when CPU fetches execution code from unoccupied region of memory |
Also Published As
Publication number | Publication date |
---|---|
US10223291B2 (en) | 2019-03-05 |
WO2010134009A1 (en) | 2010-11-25 |
US20120059993A1 (en) | 2012-03-08 |
CN102428472A (zh) | 2012-04-25 |
EP2254070A1 (en) | 2010-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7607175B2 (en) | Techniques for permitting access across a context barrier on a small footprint device using an entry point object | |
US7395535B2 (en) | Techniques for permitting access across a context barrier in a small footprint device using global data structures | |
US11847225B2 (en) | Blocking access to firmware by units of system on chip | |
EP2497055B1 (en) | Secure portable object | |
US20090222835A1 (en) | Operating System for a Chip Card Comprising a Multi-Tasking Kernel | |
CN102428472B (zh) | 本地代码的安全执行 | |
EP1155365B1 (en) | Techniques for implementing security on a small footprint device using a context barrier | |
EP1163579B1 (en) | Techniques for permitting access across a context barrier on a small footprint device using run time environment privileges | |
US20140250501A1 (en) | Secure element comprising separated containers and corresponding method | |
CN116661910B (zh) | 一种应用调用的方法及装置 | |
CN109309662A (zh) | 软件防火墙 | |
US10628611B2 (en) | Exclusive execution environment within a system-on-a-chip computing system | |
US20110258397A1 (en) | Method of protection of data during the execution of a software code in an electronic device | |
CN114925368A (zh) | 用于启动应用程序的安全元件和方法 | |
JP2003196625A (ja) | Icカードプログラム及びicカード | |
US12124581B2 (en) | System on chip and operation method thereof | |
US12045336B2 (en) | Embedded secure element | |
US20180174132A1 (en) | Integrated circuit card adapted to transfer first data from a first application for use by a second application | |
US20120131634A1 (en) | Method of executing an application embedded in a portable electronic device | |
WO2022063721A1 (en) | Memory reservation for frequently-used applications in an embedded secure element | |
CN118862935A (zh) | 智能卡 | |
PIESSENS | Recent Advances in System Software Security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |