CN101004694B - 隔离的执行上下文之间数据转移的方法和装置 - Google Patents
隔离的执行上下文之间数据转移的方法和装置 Download PDFInfo
- Publication number
- CN101004694B CN101004694B CN2007100006116A CN200710000611A CN101004694B CN 101004694 B CN101004694 B CN 101004694B CN 2007100006116 A CN2007100006116 A CN 2007100006116A CN 200710000611 A CN200710000611 A CN 200710000611A CN 101004694 B CN101004694 B CN 101004694B
- Authority
- CN
- China
- Prior art keywords
- application program
- instantiation
- isolation
- execution context
- execution
- 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
Images
Abstract
本发明描述了一种用于使由在第一个隔离的执行上下文中执行的第一个应用程序拥有的对象可以被在第二个隔离的执行上下文中执行的第二个应用程序所访问的方法。根据该方法,所述对象与所述第一个隔离的执行上下文相关联。接收到使该对象可以被第二个应用程序所访问的请求。通过将与该对象相关联的隔离的执行上下文改变为所述第二个隔离的执行上下文,将所述对象的所有权转移到第二个应用程序,从而使该对象能够被第二个应用程序所访问。
Description
技术领域
本发明涉及数据处理技术,尤其涉及在隔离的上下文之间进行数据处理的方法和装置。
背景技术
存在许多计算环境具有需要彼此交互并与诸如函数库和运行时环境等其他软件交互的多个软件应用程序。需要有一种机制来保护应用程序和该应用程序所拥有的对象,同时仍然允许交互。一种保护机制是在应用程序自己的执行上下文中执行每个应用程序(或每包应用程序)。
本文中,这被称作“隔离的执行上下文”。
隔离的执行上下文意味着第一个应用程序不能访问在另一个隔离的执行上下文中的第二个应用程序的对象(或者属于系统运行时环境的对象),除非第二个应用程序(或者系统运行时环境)显式地提供了用于访问数据的接口。然而,允许在其中(自己的上下文)创建了对象的同一隔离的执行上下文中执行的应用程序来访问该对象。可以由防火墙来执行隔离的执行上下文。例如,防火墙执行一组规则以保护对象免受未经授权的访问。
为了与在其他隔离的执行上下文中的应用程序共享数据,应用程序能够提供可共享的接口对象(SIO)。防火墙规则允许从另一个隔离的执行上下文访问可共享的接口对象(SIO)。另外,任何对象都能够作为参数而经由SIO从在一个隔离的执行上下文中的应用程序传递到在另一个隔离的执行上下文中的应用程序,而无须防火墙来确定是否遵守用于防止对在第二个应用程序执行上下文中的参数对象的未经授权访问的全部规则。换句话说,防火墙基于SIO正被用于传递对象这一事实而允许传递所述参数对象。除了对象所有权控制外,当对象被访问时,可以执行其它语言访问控制。例如,Java语言允许程序员通过声明不带属性标签“public”的类来指定仅限于从它自己的Java语言包内进行访问的对象。
然而,在SIO中将对象(包括数组)作为参数或返回值传递的过程常常作用有限。SIO的可使用的参数或返回值可能被限制于基元值、全局数组、运行时环境入口点对象和SIO。这种限制是隔离执行上下文的内在定义的一部分-参数对象自身就属于第一个应用程序的隔离执行上下文,因此不能从第二个应用程序的隔离执行上下文对其访问。通常,数组(但不是全局数组)不能从一个隔离的执行上下文传递到另一个。为了共享数组的元素,开发者可以用“get”方法创建包装器(wrapper)SIO以单独地访问每个元素。然而,由于访问所述数组的全部元素要求反复地调用“get”方法并承受每次都要通过防火墙的代价,因此使用这种包装就严重地影响了性能。
智能卡(Smart card)是应用程序程序员可能希望在其中将一个对象传递到在不同的隔离的执行上下文中的另一个应用程序的一个实例平台。智能卡是一种可类似于信用卡并包含嵌入式集成电路(IC)的卡。一些智能卡被用作蜂窝电话中的用户标识模块(SIM)卡。智能卡被设计成高度安全的,并且对其进行的窜改就会导致其所包含信息的毁坏。智能卡通常具有用于安全处理和安全存储的微处理器和存储器。也存在类似于智能卡的技术但外形因素方面却不同于智能卡。这种相关技术的实例包括智能按钮和USB令牌。这些其他的技术可以用于与智能卡类似的功能。USB令牌能够被直接插到PC的USB端口中。智能按钮和USB令牌都提供类似于智能卡的编程能力,并具有防窜改的属性。
因此,期望考虑到在使用隔离的执行上下文的计算环境或类似环境中的安全而又高性能的共享。
本节中描述的方法可以被推行,但不一定是先前已经构思或推行的方法。因此,除非本文另外指出,否则本节中描述的方法相对于本申请的权利要求来说就不是现有技术,而且也并不被本节中所含内容认为是现有技术。
发明内容
本文将描述一种用于使在第二个隔离的执行上下文中执行的第二个应用程序能够访问由在第一个隔离的执行上下文中执行的第一个应用程序拥有的对象的方法。根据实施例,所述对象与所述第一个隔离的执行上下文相关联。接收到使该对象能够被第二个应用程序访问的请求。通过将与该对象相关联的隔离的执行上下文改变为所述第二个隔离的执行上下文,将所述对象的所有权转移到第二个应用程序,从而使该对象能够被第二个应用程序访问。
根据其他方面,本文描述的方法包括了被配置为执行上述功能的机器可读介质。
附图说明
附图是用于实例示出而不是用于限制了本文描述的系统和方法。贯穿附图中的类似参考标号用于表示类似元素和类似特征。
图1是示出根据本发明的实施例的、在隔离的执行上下文之间转移对象所有权的示意图;
图2示出根据本发明的实施例的、在隔离的执行上下文之间转移对象所有权的处理过程;以及
图3是示出可以在其上实施根据本发明的实施例的计算机系统的框图。
具体实施方式
本文描述的系统和方法涉及在隔离的执行上下文之间转移对象的所有权。为了解释的目的,且为了全面理解各种系统和方法,阐述了许多具体的细节。然而,非常清楚,没有这些具体细节也可以执行本文描述的系统和方法。因此,本说明书和附图将被认为是示例性的而不是限制性的。
概述
图1是示出根据本发明的一个实施例的、具有用于在位于不同隔离的执行上下文中的应用程序之间转移对象所有权的接口的环境的示意图。转移对象所有权允许在两个应用程序之间传递所述对象。也就是说,在不转移对象所有权的情况下,第一个应用程序将该对象传递给在不同隔离的执行上下文中的第二个应用程序的任何努力都不会允许第二个应用程序访问该对象。例如,第二个应用程序将意识到所述对象的存在,但是它不能读取或修改该对象。图1示出对象A2107的所有权从应用程序A 106A转移到应用程序B106B,这分别在隔离的执行上下文102A和102B中执行。如果需要的话,应用程序B 106B能够将对象A2107的所有权转移回应用程序A 106A。
以下的实例用于示出在不同隔离的执行上下文中执行的应用程序之间转移所有权。应用程序B可以是正在管理名称和电话号码之间的映射的电话簿应用程序。应用程序B把带有用于执行电话号码的查找的方法(“查找方法”)的一个接口暴露出来。所述查找方法具有用于传递名称的字符串和用于返回电话号码的字符串。应用程序A可以是在不同的隔离的执行上下文中的期望执行名称和电话号码之间映射的应用程序。例如,应用程序A可以是响应用户的名称输入及电话号码请求而显示该电话号码的程序。应用程序A对传入用于个人名称的字符串的查找方法进行调用。因为字符串在隔离的执行上下文A中曾被实例化,所以为了使应用程序B能够读取该字符串,应用程序A就需要将所述字符串的所有权转移到应用程序B。也就是说,除非该字符串的所有权被转移到应用程序B,否则防火墙115就将防止应用程序B访问该字符串。
因此,应用程序A首先将所述字符串的所有权转移到应用程序B,然后才调用所述查找方法,在该方法中将该字符串作为参数传递。当应用程序B接收到所述调用时,它就能够访问该字符串并查找所述电话号码。该电话号码在隔离的执行上下文B中被实例化。因此,为了将所述电话号码字符串传递给应用程序A,应用程序B首先将该电话号码字符串的所有权转移到应用程序A,然后才从所述查找方法调用中返回作为返回参数的所述电话号码字符串。一旦所述电话号码字符串从所述查找方法中返回,应用程序A就能够读取该电话号码字符串。
本文提供的用于转移对象所有权的方法和系统与现有技术兼容。例如,根据本发明实施例的对象转移与Java及其他语言兼容。
隔离的执行上下文
应用程序A 106A和应用程序B 106B中的每个都分别在它们自己的隔离的执行上下文102A和102B中执行。一种用于创建隔离的执行上下文的技术是将相同的上下文标识符分配给在隔离的执行上下文中实例化的每个对象,其中,上下文标识符对于所有其他的隔离的执行上下文而言是唯一的。因此,当这些对象被实例化时,就为应用程序A 106A和可转移的对象A2107分配上下文A 102A的上下文标识符。以类似的方式,当应用程序B 106B被实例化时,就为应用程序B 106B分配隔离的执行上下文B 102B的上下文标识符。
可以通过检验试图访问对象的应用程序的上下文标识符与该对象的上下文标识符匹配,来保护在隔离的执行上下文中的对象。在一个实施例中,防火墙115用于执行这项检验。例如,因为应用程序B 106B处于与对象A2107不同的隔离的执行上下文中,所以当对象A2被应用程序A 106A所拥有时,防火墙115就将防止应用程序B 106B访问对象A2107。这可通过防火墙115确定应用程序B 106B具有和对象A2107不同的上下文标识符而被执行。
可共享的接口
应用程序A 106A使可共享的接口111能够被在隔离的执行上下文A 102A之外的应用程序所用。可共享的接口111允许访问上下文A中的对象。例如,可共享的接口111允许应用程序B 106B访问在隔离的执行上下文A 102A中的可共享的接口对象(SIO)A1。SIO允许在不同的隔离的执行上下文中的两个应用程序之间受控地共享数据而无防火墙115限制。因此,应用程序B 106B可以自由地经由可共享的接口111访问SIO A1而不受所述防火墙的限制。例如,即使SIO A1的上下文标识符不同于应用程序B 106B的上下文标识符,应用程序B 106B也能经由可共享的接口111获得对SIO A1的访问。
然而,因为对象A2 107的上下文标识符不同于应用程序B106B的上下文标识符并且对象A2107不是SIO,所以,没有经过防火墙115的限制,应用程序B 106B也许就不能访问对象A2 107。根据本发明的实施例,为了便于应用程序B 106B访问对象A2 107,对象A2 107的所有权就被转移到应用程序B 106B。
在一个实施例中,所有权的转移限于通过对可共享接口进行调用或从可共享接口返回而被传递的对象。在一个实施例中,例如,为使应用程序B 106B获得可转移对象A2 107的所有权,应用程序B向可共享接口111发起调用。另外,仅对不能从第二个隔离的执行上下文访问的对象参数要求将所有权从第一个隔离的执行上下文转移到第二个隔离的执行上下文。可能不要求转移所有权的对象的实例包括SIO、全局数组和基元数据(primitive data)。全局数组是已经被指定为可以被所有隔离的执行上下文所访问的数组对象。可以增加安全措施来限制可转移的对象A2 107的所有权的转移,使得其转移仅发生在调用诸如可共享的接口111等可共享的接口或从该接口返回期间。
在一个实施例中,SIO A1执行可共享的接口111并且SIO A1提供用于传递诸如A2 107等可转移对象的方法。SIO是提供用于外部访问的受控的访问视图(view)(在Java语言术语中为“执行”)的对象。在一个实施例中,这个受控的视图是一组定义为可共享接口111的访问方法。
在一个实施例中,所有权的转移对应用程序是透明的。例如,可共享的接口111可以包括本文所称的“代理”代码,以使得所有权的转移,而无须应用程序A 106A或应用程序B 106B调用转移对象所有权的方法或函数。在一个实施例中,通过为特定的隔离的执行上下文提供隔离的防火墙(例如防火墙115)来执行所有权的转移。通过防火墙转移所有权对拥有该对象的应用程序是透明的。
可转移的类
根据本发明的一个实施例,被定义的类的集合在不同的隔离的执行上下文中执行的应用程序之间是可转移的。因此,应用程序A106A不应该转移不在可转移的类的集合中的对象的所有权。所述被定义的可转移的类的集合的实例包括但不限于SIO数组、基元数组、字符串、基元包装器(例如,整数等等)等等。根据本发明的一个实施例,在未被定义为可转移的类中的对象可能被禁止通过转移所有权而传递。可转移的类的集合中的对象不必被应用程序显式地标记为可转移来允许转移。相反,在一个实施例中,应用程序在其上执行的计算环境定义所述可转移的对象。在运行时环境中也可以同样地指定可转移的对象类。
转移对象的所有权
A)所有权的程序化的(PROGRAMMATIC)转移
应用程序能够显式地转移它拥有的对象的所有权,然后就将所述对象(其被限制到隔离的执行上下文)传递给在另一个隔离的执行上下文中的另一个应用程序。一方面,应用程序能够通过调用方法或函数来转移对象的所有权。以下是用于转移对象所有权的两个方法实例。
transferOwnership(Object对象,URI|AID接收方)
transferOwnership(Object对象,可共享的SIO)
这些方法中的每个的第一变元(argument)都是其所有权将被转移的对象。在第一个实例方法中,第二变元表示接收方应用程序的URI(统一资源定位符)或AID(应用程序标识符)。在第二个实例方法中,第二变元表示接收方的SIO。在诸如服务器应用程序和它的客户端的交互应用程序之间能够来回地转移对象所有权。相同的数组能够用于通过若干交互,在例如服务器应用程序和它的客户端应用程序之间转移数据。该客户应用程序可提供服务器应用程序将要向其拷入数据的数组。
B)所有权的透明转移
可通过工具生成的代码(例如,插入到SIO中的代理类或代码)执行所有权的透明的转移。代理类是用于实际的SIO类的代理。代理类生成具有与所有SIO相同的方法的类。代理类暴露与初始的SIO类相同的接口。例如,代理类暴露相同的方法集或超集(superset)。对代理对象的方法的调用被委托给初始的SIO对象的相同方法。这些代理负责透明地创建对象的防御性副本(defensivecopy)(例如,在SIO调用中的参数、可变对象和返回值),并将这些副本的所有权转移到服务器,并且一旦从服务器返回,则分别转移到客户端。可以和所述应用程序一起生成和安装这些代理。
例如,参考具有电话簿查找的应用程序的实例,能够为应用程序B的电话簿方法生成代理。当安装应用程序B时就生成代理。所述代理能够执行对象的任何拷贝和所需要的对象的所有权转移。当应用程序A调用该电话簿方法时,就调用代理方法。
在一个实施例中,当程序员正在开发应用程序A时,代码就被自动插入到SIO A1类中。
根据一个实施例,由防火墙执行所有权的透明转移。例如,防火墙转移在SIO方法调用中作为变元和返回值而传递的对象的所有权。防火墙通过在程序执行期间代表该应用程序自动地调用上述所有权转移API,执行所有权转移。
可变和不变对象的所有权转移
如以下部分所论述的,对可变对象的所有权转移的处理可以不同于对不变对象的所有权转移的处理。
可变对象
可变对象是在它们被实例化之后可以改变的对象。可变对象的实例是(基元的、SIO的、上述不变对象的、和此处提到的可变对象的)数组、字符串缓冲(StringBuffer)和矢量(Vector)。有许多其他类型的可变对象。不应该在位于不同的隔离的执行上下文中的应用程序之间直接地传递可变对象。原因是在没有所有权转移的情况下,防火墙将防止对象被访问。那么,这种可变对象的所有权就被转移,以允许之前的拥有者将可变对象传递给新的拥有者。一旦已经转移了所有权,则最初的拥有者将不再能够访问对象。因此,防火墙将阻止最初的拥有者访问该对象的企图。
不变对象
不变对象是在对象被实例化后不允许其改变的对象。不变对象的实例是字符串和基元包装。一些不变对象没有被限制到一个隔离的执行上下文。例如,可能不将基元值分配到隔离的执行上下文。因此,不必转移未被限制到隔离的执行上下文的不变对象的所有权。然而,根据本发明的实施例,将一些不变对象限制到了隔离的执行上下文。为了让这种不变对象能够被在不同的隔离的执行上下文中的应用程序所访问,将这种不变对象的所有权转移到隔离的执行上下文中的应用程序。另一方面,使用工具生成的代理转移对象的所有权并且如果需要的话,则创建防御性副本。下面论述工具生成的代理。因此,本技术对开发者非常友好的地方在于,可使用代理而不是调用方法的应用程序,来转移对象的所有权。
创建防御性副本对象和转移对象所有权
A)防御性复制
可以创建对象的防御性副本并且可以将这个防御性副本的所有权转移到在另一个隔离的执行上下文中执行的应用程序,以共享对象的状态。可以使用软件方法复制对象。所述方法可以把将被复制的对象的名称作为变元。这个方法创建可变对象的防御性副本。可以对防御性副本执行所有权转移,从而允许所述共享应用程序继续处理初始对象。转移防御性副本的所有权的原因是防御性副本最初是在与初始对象相同的隔离的执行上下文中创建的。因此,在这个实施例中,用具有与它被创建于其中的所述隔离的执行上下文相关联的上下文标识符来创建防御性副本。因此,应该将上下文标识符改变为其他隔离的执行上下文的上下文标识符,以转移防御性副本。
在这个实施例中,如果将被共享的对象引用第二个对象,则也生成第二个对象的防御性副本。如果第二个对象引用第三个对象,则也可以生成第三个对象的防御性副本。本文把拷贝对象的处理过程称作递归拷贝处理过程。然而,可能因为包括但不限于下列原因的原因而限制所述拷贝处理过程的深度。可以将所述拷贝的深度限制到被定义为可转移的对象的那些类。由于可能有其他的对这些对象的共享进行保护的手段,因此可以通过当到达SIO时就停止的方式来限制所述拷贝的深度。可以通过当到达基元或上述不变对象时就停止的方式来限制拷贝的深度。由于初始对象可以被共享,因此不需要拷贝这样一种不变对象。
还可以使用将对不应该被拷贝的字段进行标记的注释来进一步控制拷贝。例如,程序员可以给代码添加注释以指示哪个字段不应该被拷贝。作为特定的示例,Java编程语言考虑到了这种对编码的注释。
B)副本的所有权的转移
递归过程应用到对象的所有权的转移。为了转移其引用了另一个对象的对象的所有权,被引用的对象的所有权也可以被转移。然而,可能由于包括但不限于下列原因的原因而限制转移所有权的深度。可将转移所有权的深度限制到被定义为可转移的对象的类。由于可能有其他的对这些对象的共享进行保护的手段,因此可以通过当到达SIO时就停止的方式来限制转移所有权的深度。由于可能有其他的保护SIO的共享的手段,因此所有权不需要被转移。可以通过当到达基元或上述不变对象时就停止的方式来限制转移所有权的深度。
在隔离的执行上下文之间转移对象所有权的流程
图2示出了根据本发明的实施例的在隔离的执行上下文之间转移对象所有权的处理过程200。将使用基于图1的实例描述处理过程200,其中,应用程序A将对象的所有权转移到应用程序B。在步骤202中,对象与第一个应用程序在其中执行的第一个隔离的执行上下文相关联。例如,当应用程序A创建对象时,就为对象分配(例如,做标记为)与隔离的执行上下文A相关联的上下文标识符。在步骤204中,接收到使对象能够被在另一个隔离的执行上下文中运行的第二个应用程序所访问的请求。可以透明地或程序化地处理对象所有权的转移。例如,通过调用方法或函数来执行程序化的转移。作为特定的实例,应用程序A调用方法以将对象的所有权转移到应用程序B。以下将论述,可通过工具生成的代码来执行所有权的透明转移。本文中,所述工具生成的代码被称作“代理”。在一个实施例中,防火墙转移对象的所有权。
在步骤205中,确定对象是否是可转移的。例如,应用程序A在其上执行的计算环境可能具有定义的可转移的类的集合。如果对象不是可转移的类的实例,则控制就转到步骤206,其中,确定对象是否属于一种已经被可共享的接口机制(诸如SIO、全局数组等)所处理的可共享的对象类型。在对象是可共享的情况下,在步骤207中,将对象作为参数或返回值而传递,而没有进一步的动作。否则,就在步骤208中,所有权的转移失败。然而,如果步骤205中确定对象是可转移的类的实例,则控制就转到可选步骤209,该步骤确定对象是不变的还是可变的。如果对象是不变的,则就在步骤210中,对象是可访问的,而无须进一步的测试。如果对象是可变的,则控制就转到步骤211,其可选地创建对象的防御性副本。前文已经论述了防御性副本。防御性副本并不是必须被创建的。
在步骤212中,通过改变与所述对象相关联的上下文标识符实现了把对象(或防御性副本)的所有权转移到第二个应用程序。例如,将对象的标识符从隔离的执行上下文A的标识符改变为隔离的执行上下文B的上下文标识符。因此,是在隔离的执行上下文B中执行的应用程序,而不是应用程序B,有可能访问所述对象。
这个处理过程200可以应用到作为对SIO的方法进行调用的变元或返回值而传递的每个对象。进一步来说,对象所有权的转移考虑到了通过多个SIO方法调用来对同一对象进行重用。因此,根据本发明的实施例进行转移对象很适合于基元数组或SIO数组。然而,为了数据共享而转移对象的所有权,对其他类型的对象来说,也具有性能方面的好处。
硬件综述
在一个实施例中,图2的处理过程200包括一组由一个或多个处理器执行的指令。在一个实施例中,图1中的应用程序和可共享接口111包括一组由一个或多个的处理器执行的指令。图3示出一个在其中执行指令的可能实施例。计算机系统300包括:总线302,以便于信息交换;以及与总线302连接的一个或多个处理器304,以用于处理信息。计算机系统300还包括连接到总线302的诸如随机存取存储器(RAM)或其他动态存储装置的主存储器306,其用于对信息和将被处理器304执行的指令进行存储。主存储器306还可用于在处理器304执行指令期间存储临时变量或其他中间信息。计算机系统300还可包括连接到总线302的只读存储器(ROM)308或其他静态存储装置,它们用于为处理器304存储静态信息和指令。提供诸如磁盘或光盘的存储装置310,并连接到总线302,用于存储信息和指令。
计算机系统300可经由总线302连接到用于将信息显示给计算机用户的显示器312。包括字母数字和其他键的输入装置314连接到总线302,用于将信息和命令选择传输到处理器304。另一种用户输入装置是诸如鼠标、跟踪球或光标方向键的光标控制器316,其用于将方向信息和命令选择传输到处理器304,并用于控制在显示器312上的光标移动。该输入装置通常具有在第一轴(例如x)和第二轴(例如y)这两个轴上的两个自由度,这就允许所述装置在一个平面内指定位置。
在计算机系统300中,总线302可以是允许信息、信号、数据等在各种组件之间交换的任何机制和/或介质。例如,总线302可以是一组携带电信号的导线。总线302也可以是在一个或更多的组件之间传送无线信号的无线介质(例如空气)。总线302还可以是连接一个或多个组件的网络连接。使信息、信号、数据等能够在各种组件之间交换的任何机制和/或介质都可以用作总线302。总线302还可以是这些机构/介质的组合。例如,处理器304可以和存储装置310进行无线通信。在这种情况下,从处理器304和存储装置310的立场来看,总线302将会是诸如空气的无线介质。再者,处理器304可以和ROM 308进行电容性地(capacitively)通信。进一步来说,处理器304可以经由网络连接和主存储器306进行通信。在这种情况下,总线302将会是网络连接。再进一步说,处理器304可以经由一组导线和显示器312进行通信。在这种情况下,总线302将会是这一组导线。因此,取决于所述各种组件如何互相通信,总线302就可以采取不同的形式。如图3中所显示的总线302在功能上代表能够使信息、信号、数据等在各种组件之间交换的全部机构和/或所有介质。本发明涉及用于执行本文所述技术的计算机系统300的使用。根据本发明的一个实施例,通过计算机系统300来执行这些技术,以响应于执行含在主存储器306中的一个或多个指令的一个或多个序列处理器304。这种指令可以从诸如存储装置310的另一个机器可读的介质读入主存储器306。执行含在主存储器306中的指令序列以使得处理器304执行本文描述的处理步骤。在其它实施例中,可以用硬连线电路代替软件指令或将硬连线电路与软件指令相结合以实施本发明。因此,发明的实施例并不限于硬件电路和软件的任何具体组合。本文使用的术语“机器可读介质”指的是参与提供使机器以具体方式运转的数据的任何介质。在使用计算机系统300而实施的一个实施例中,例如,各种机器可读的介质参与将指令提供给处理器304以用于执行。这种介质可以采用多种形式,包括但不限于非易失性介质、易失性介质和传输介质。举例来说,非易失性介质包括诸如存储装置310的光盘或磁盘。易失性介质包括诸如主存储器306的动态存储器。传输介质包括同轴线缆、铜线和光纤,它们又都包括构成总线302的导线。传输介质也可以采用声波或光波的形式,诸如在无线电波和红外数据通信中生成的那些波。
机器可读介质的通常形式包括:例如,软盘、可更换磁盘、硬盘、磁带或其他磁性介质、CD-ROM、DVD或任何其他光存储介质、穿孔卡、纸带、任何其他具有孔状式样的物理介质、RAM、PROM、EPROM、FLASH-EPROM、任何其他存储芯片或盒式磁带、下文中描述的载波,或计算机能从中读取的任何其他介质。
各种形式的机器可读介质可参与将一个或多个指令的一个或多个序列传送到理器304来执行。例如,指令可最初承载在远程计算机的磁盘上。该远程计算机能够将所述指令装载进其动态存储器并使用调制解调器通过电话线发送这些指令。计算机系统300的本地调制解调器能够接收电话线上的数据并使用红外发射器将数据转换为红外信号。红外探测器能够接收红外信号中携带的数据并且适当的电路能够将数据放到总线302上。总线302将数据传送到主存储器306,处理器304从主存贮器306中取得数据并执行指令。由主存储器306所接收的指令可以在处理器304执行之前或之后,可选地存储在存储装置310上。
计算机系统300还包括连接到总线302的通信接口318。连接到与本地网322相连的网络链路320的通信接口318提供双路数据通信。例如,通信接口318可以是综合服务数字网络(ISDN)卡或调制解调器,用于提供到相应类型的电话线的数据通信连接。作为另一个实例,通信接口318可以是局域网(LAN)卡,用于提供到兼容的LAN的数据通信连接。也可以实现无线链路。在任何这样的实现中,通信接口318都发送和接收带有表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
传统上,网络链路320通过一个或多个网络向其他数据装置提供数据通信。例如,网络链路320可以通过本地网322提供到主机324或到由互联网服务商(ISP)326所操作的数据设备的连接。ISP326又通过现在通常称作“互联网”328的全球分组数据通信网络提供数据通信服务。本地网络322和互联网328都使用携带数字数据流的电信号、电磁信号或光信号。将数字数据传送到计算机系统300和从计算机系统300传送数字数据的信号,即,通过各种网络的信号、在网路链路320上的信号和通过通信接口318的信号,是传输信息的载波的示例性形式。
计算机系统300能够通过网络、网络链路320和通信接口318发送消息和接收数据(包括程序代码)。在互联网实例中,服务器330可通过互联网328、ISP 326、本地网322和通信接口318传输对应用程序进行请求的代码。
当代码被接收到时,所接收的代码就可以由处理器304执行并存储在存储装置310或其他非易失性存储装置中以用于以后执行。这样,计算机系统300可以用载波的形式获得应用程序代码。
在这点上,应该注意到,尽管已经参考具体实施例描述了本发明,但是不应解释为本发明受到这样的限制。在不脱离本发明精神的情况下,得益于本公开的本领域普通技术人员可以对本发明进行各种修改。因此,本发明不应被用于示出本发明的具体实施例所限制,而仅由公布的权利要求及其等同物所限制。
Claims (9)
1.一种机器执行的方法,用于使由在第一个隔离的执行上下文中执行的第一个应用程序拥有的实例化的对象可以被在第二个隔离的执行上下文中执行的第二个应用程序所访问,所述方法包括以下步骤:
对所述第一个隔离的执行上下文中的对象实例化,以获得第一实例化的对象,其中所述第一实例化的对象由在所述第一个隔离的执行上下文中执行的所述第一应用程序拥有;
通过将所述第一个隔离的执行上下文的第一标识符分配给所述第一个实例化的对象,将所述第一实例化的对象与所述第一个隔离的执行上下文相关联;
接收使所述第一实例化的对象可以被所述第二个应用程序所访问的请求;以及
进行第一确定,确定所述第一实例化的对象被定义为可转移的类的成员;
基于所述第一确定:
进行第二确定,确定所述第一实例化的对象是可在实例化后改变的可变对象;
基于所述第二确定:
通过将所述第二隔离的执行上下文的第二标识符分配给所述第一实例化的对象,将所述第一实例化的对象的所有权转移到所述第二个应用程序,从而使所述第一实例化的对象可以被所述第二个应用程序所访问。
2.根据权利要求1所述的方法,其中,所述转移所述第一实例化的对象的所有权响应对可共享的接口进行的调用,所述可共享的接口用于对所述第一个隔离的执行上下文和所述第二个隔离的执行上下文的至少一种进行保护。
3.根据权利要求2所述的方法,其中,所述第一实例化的对象是与对所述可共享的接口的调用相关联的参数。
4.根据权利要求1所述的方法,其中,所述可转移的类由所述第一个应用程序在其上执行的平台定义为可转移。
5.根据权利要求1所述的方法,还包括步骤:所述第一个应用程序调用函数以启动将所述第一实例化的对象的所有权转移到所述第二个应用程序。
6.根据权利要求1所述的方法,其中,防火墙把所述第二个应用程序与所述第一个应用程序隔开。
7.根据权利要求1所述的方法,其中,所述第一实例化的对象具有能够在实例化后改变的至少一个属性,以及,其中,转移所述第一实例化的对象的所有权允许所述第二个应用程序对所述第一实例化的对象的所述至少一个属性进行改变。
8.根据权利要求1所述的方法,其中,由所述第一个应用程序创建的不变对象可以转移到所述第二个应用程序,而不用转移所述不变对象的所有权。
9.根据权利要求1所述的方法,还包括步骤:生成所述第一实例化的对象的第一版本的副本以创建防御性副本,其中,被转移的所述第一实例化的对象是所述防御性副本。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US75773506P | 2006-01-09 | 2006-01-09 | |
US60/757,735 | 2006-01-09 | ||
US11/511,948 | 2006-08-28 | ||
US11/511,948 US8087031B2 (en) | 2006-01-09 | 2006-08-28 | Method and apparatus for data transfer between isolated execution contexts |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101004694A CN101004694A (zh) | 2007-07-25 |
CN101004694B true CN101004694B (zh) | 2012-05-30 |
Family
ID=38703863
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100006188A Active CN101004776B (zh) | 2006-01-09 | 2007-01-09 | 用于基于保护域的安全性的方法和装置 |
CN2007100006116A Active CN101004694B (zh) | 2006-01-09 | 2007-01-09 | 隔离的执行上下文之间数据转移的方法和装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100006188A Active CN101004776B (zh) | 2006-01-09 | 2007-01-09 | 用于基于保护域的安全性的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN101004776B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2564914C (en) | 2004-04-30 | 2016-09-20 | Research In Motion Limited | System and method for handling data transfers |
US8812871B2 (en) * | 2010-05-27 | 2014-08-19 | Cisco Technology, Inc. | Method and apparatus for trusted execution in infrastructure as a service cloud environments |
US9161226B2 (en) | 2011-10-17 | 2015-10-13 | Blackberry Limited | Associating services to perimeters |
US9497220B2 (en) | 2011-10-17 | 2016-11-15 | Blackberry Limited | Dynamically generating perimeters |
US9613219B2 (en) | 2011-11-10 | 2017-04-04 | Blackberry Limited | Managing cross perimeter access |
EP2592578A1 (en) * | 2011-11-10 | 2013-05-15 | Research In Motion Limited | Managing cross perimeter access |
US8799227B2 (en) | 2011-11-11 | 2014-08-05 | Blackberry Limited | Presenting metadata from multiple perimeters |
US9369466B2 (en) | 2012-06-21 | 2016-06-14 | Blackberry Limited | Managing use of network resources |
CN102981915B (zh) * | 2012-12-17 | 2016-08-24 | 北京奇虎科技有限公司 | 一种应用程序间通信方法及装置 |
US9766952B2 (en) * | 2013-08-23 | 2017-09-19 | Microsoft Technology Licensing, Llc | Reverse launch protocol |
US9307409B2 (en) * | 2013-12-27 | 2016-04-05 | Intel Corporation | Apparatus, system and method of protecting domains of a multimode wireless radio transceiver |
CN106663108B (zh) * | 2014-06-25 | 2020-08-04 | 谷歌有限责任公司 | 用于原生应用的深链接 |
CN106951795B (zh) * | 2016-01-07 | 2020-07-21 | 阿里巴巴集团控股有限公司 | 一种应用程序数据访问隔离方法及装置 |
GB2550903B (en) * | 2016-05-27 | 2019-06-12 | Arm Ip Ltd | Context data control |
CN114676392A (zh) * | 2022-03-18 | 2022-06-28 | 北京百度网讯科技有限公司 | 应用的可信授权方法、装置及电子设备 |
-
2007
- 2007-01-09 CN CN2007100006188A patent/CN101004776B/zh active Active
- 2007-01-09 CN CN2007100006116A patent/CN101004694B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101004776B (zh) | 2010-06-16 |
CN101004694A (zh) | 2007-07-25 |
CN101004776A (zh) | 2007-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101004694B (zh) | 隔离的执行上下文之间数据转移的方法和装置 | |
RU2488888C2 (ru) | Способ доступа к приложениям в защищенной мобильной среде | |
US20190231097A1 (en) | System and method for location based exchanges of data facilitiating distributed locational applications | |
CN100461109C (zh) | 语义任务计算 | |
US9456303B2 (en) | System and method for service access via hopped wireless mobile device(s) | |
CN101013379B (zh) | 在智能卡上的多线程运行时间环境中支持传统应用程序的方法 | |
CN100559365C (zh) | 规定异步Web服务的方法和设备及规定接收回调的逻辑的方法和设备 | |
US8073565B2 (en) | System and method for alerting a first mobile data processing system nearby a second mobile data processing system | |
KR100886137B1 (ko) | 스마트카드에 소프트웨어 콤포넌트, 특히 애플릿을로딩하는 방법 | |
CN104142856B (zh) | 服务程序调用方法、系统及其智能设备 | |
JP5422103B2 (ja) | 分離されている実行コンテキスト間でのデータ転送方法及び装置 | |
US20030093404A1 (en) | Dynamic interface adapter for integration of source and target applications | |
US20060022048A1 (en) | System and method for anonymous location based services | |
CN101336423A (zh) | 将包括配置设置的应用程序从一个对等安装到另一个对等 | |
KR102118178B1 (ko) | 블록체인을 위한 다중 트랜잭션 병렬 처리 방법 및 시스템 | |
CN102939588A (zh) | 不依赖于管理程序平台的数据中心管理的方法和装置 | |
CN103544447A (zh) | 一种基于安卓系统的防止机密信息泄露的方法和终端 | |
CN103514395B (zh) | 插件权限控制方法及系统 | |
KR102209852B1 (ko) | 호환 가능한 블록체인 네트워크 간의 트랜잭션 전송 중계 방법 | |
US11616817B2 (en) | System and method for controlling data interception in a communication system | |
CN109361806A (zh) | 黑号码存储方法、黑号码标记方法、系统及装置 | |
KR20200084177A (ko) | 블록체인의 확장을 가능하게 하는 트랜잭션 처리 시스템 및 방법 | |
CN101336429B (zh) | 处理脚本内容的外部配置方法和系统 | |
CN112417402B (zh) | 权限控制方法、权限控制装置、权限控制设备及存储介质 | |
CN109240839A (zh) | 一种独立业务架构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |