一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于可信执行环境的可缩放鉴证的制作方法

2022-06-25 06:08:46 来源:中国专利 TAG:


1.本文公开的主题概括而言涉及硬件可信执行环境(trusted execution environment,tee)。具体而言,本公开针对的是用于tee中的函数的可缩放鉴证(scalable attestation)和协调(orchestration)的系统和方法。


背景技术:

2.硬件权限级别可被处理器用来限制在设备上运行的应用的存储器访问。操作系统以较高的权限级别运行,并且可以访问设备的所有存储器,并且为其他应用定义存储器范围。运行在较低权限级别的应用,被限制在操作系统定义的范围内访问存储器,而不能够访问其他应用或操作系统的存储器。然而,没有针对恶意的或被破坏的操作系统来对应用进行保护。
3.飞地(enclave)由处理器保护启用,这些处理器保护保证了在飞地内部加载的代码和数据受到保护,不会被在飞地之外执行的代码访问。从而,飞地提供了一个隔离的执行环境,该执行环境在硬件级防止了飞地中包含的数据和代码被恶意软件(包括操作系统)访问。


技术实现要素:

4.根据本公开的一方面,提供了一种提供可信执行环境(tee)的远程鉴证的系统,所述系统包括:至少一个处理器;与所述处理器操作性耦合的网络接口;以及与所述至少一个处理器耦合来存储指令的存储器,所述指令当被所述处理器执行时,使得所述至少一个处理器执行操作,所述操作包括:为第一函数创建第一tee;为第二函数创建第二tee;为对所述第一函数的远程访问提供网关;经由所述网络接口从客户端设备接收验证所述第二tee的完好性的请求;并且响应于所述请求:执行所述第一函数以为所述第二tee生成鉴证数据;并且经由所述网络接口向所述客户端设备提供所述鉴证数据。
5.根据本公开的一方面,提供了一种提供可信执行环境(tee)的远程鉴证的方法,所述方法包括:由处理器为第一函数创建第一tee;由所述处理器为第二函数创建第二tee;由所述处理器为对所述第一函数的远程访问提供网关;经由网络接口从客户端设备接收验证所述第二tee的完好性的请求;响应于所述请求:由所述处理器执行所述第一函数以为所述第二tee生成鉴证数据;并且经由所述网络接口向所述客户端设备提供所述鉴证数据。
6.根据本公开的一方面,提供了一种具有指令的非暂态计算机可读介质,所述指令用于使得至少一个处理器通过执行操作来提供可信执行环境(tee)的远程鉴证,所述操作包括:为第一函数创建第一tee;为第二函数创建第二tee;为对所述第一函数的远程访问提供网关;经由网络接口从客户端设备接收验证所述第二tee的完好性的请求;响应于所述请求:执行所述第一函数以为所述第二tee生成鉴证数据;并且经由所述网络接口向所述客户端设备提供所述鉴证数据。
附图说明
7.在附图中以示例而非限制方式图示了一些实施例。
8.图1是根据一些示例实施例图示出适合于使用tee提供函数即服务的服务器的网络环境的网络图。
9.图2是根据一些示例实施例的适合用于tee的可缩放鉴证的函数即服务服务器的框图。
10.图3是现有技术的基于环的存储器保护的框图。
11.图4是根据一些示例实施例的适合于减小tee的时延的基于飞地的存储器保护的框图。
12.图5是根据一些示例实施例的适合用于tee的可缩放鉴证的数据库模式的框图。
13.图6是根据一些示例实施例适合用于tee的可缩放鉴证的函数和设备之间的通信链路的框图。
14.图7是根据一些示例实施例图示出适合被服务器执行来提供用于tee的可缩放鉴证的方法的操作的流程图。
15.图8是根据一些示例实施例图示出适合被客户端执行来利用用于tee的可缩放鉴证的方法的操作的流程图。
16.图9是根据一些示例实施例图示出适合被客户端执行来利用用于tee的可缩放鉴证的方法的操作的流程图。
17.图10是示出计算设备的软件体系结构的一个示例的框图。
18.图11是采取计算机系统的示例形式的机器的框图,在该机器内可以执行指令以使得该机器执行本文论述的方法中的任何一个或多个。
具体实施方式
19.示例方法和系统针对的是用于tee的可缩放鉴证。在最一般的意义上,tee是任何受信任的执行环境,不管这种信任是如何获得的。飞地是存储器的一部分,该部分受到保护以免被飞地之外的进程所访问,即使这些进程是以高权限级别运行的。作为示例,论述了通过在飞地内执行代码来提供tee。然而,也可使用其他类型的tee。
20.tee可用于通过保护机密信息不受tee之外的所有软件影响来使得能够对机密信息进行安全处理。tee也可用于模块化编程,其中每个模块包含其自身功能所必需的一切,而不会被暴露于其他模块造成的漏洞。例如,针对一个tee成功的代码注入攻击不能影响另一个tee的代码。
21.全存储器加密(total memory encryption,tme)保护存储器中的数据不被绕过处理器而访问。系统在启动时在处理器内生成加密密钥,并且永不在处理器之外存储该密钥。tme加密密钥是一种临时密钥,因为它不会在重启后持续存在,也永远不会被存储在处理器之外。所有由处理器写入到存储器的数据都被使用该加密密钥来进行加密,并且在其被从存储器读回时被解密。从而,尝试在没有处理器中介的情况下直接从存储器读取数据的基于硬件的攻击,将会失败。
22.多密钥tme(multi-key tme,mktme)扩展了tme来利用多个密钥。可以使用tme的临时密钥或者使用软件提供的密钥来对个体存储器页进行加密。在基于软件的攻击方面,这
可能提供比tme更高的安全性,因为攻击者将需要识别目标软件正在使用的特定密钥,而不是让处理器自动解密攻击软件已经获得访问权的任何存储器。
23.在函数即服务(function-as-a-service,faas)环境中,客户端利用在faas服务器上的tee内执行的函数。faas平台提供云计算服务,这些云计算服务执行应用逻辑,但不存储数据。在向函数提供机密数据之前,客户验证该函数是用tee来执行的,从而机密数据不能被不是该可信环境的一部分的其他函数访问。
24.存在几种完全或部分的鉴证方案。例如,公钥可以被嵌入在提供给faas服务器的代码块中,以便在tee中执行。客户端设备可以在将数据发送到代码块中的函数之前对其进行加密。从而,客户端设备被确保只有能够访问公钥的代码才能访问加密的数据。然而,该函数仍然可能在不安全的环境中执行。此外,攻击者可以从代码块中提取公钥,并且将其用于欺骗预期函数的恶意代码。
25.当飞地被创建时,它可被“测量”。在这个上下文中,测量是指足以唯一地识别飞地的属性和内容的一组数据。从而,只有当两个飞地包括相同的代码和数据,使用相同数量的存储器,具有相等的安全级别,等等时,它们才会具有相同的测量。对飞地的测量由硬件处理器执行,并且被存储在受保护的寄存器或存储器中。测量可以被处理器使用基于椭圆曲线数字签名算法(elliptic-curve-digital-signature-algorithm,ecdsa)的非对称鉴证密钥进行签名。内置有相应解密密钥的另一个处理器可以验证该签名。被签名的数据可包括时间戳和签名者的标识符。从而,接收者可以确认被签名的数据是最新的,并且是源自于faas服务器的。
26.使用这种鉴证机制,客户端能够鉴证从客户端直接访问的函数实际上是在tee中运行的。然而,faas服务器提供通往多个函数的网关接口,可能是有益的。例如,代表性状态转移(representational state transfer,rest)应用编程接口(application programming interface,api)允许客户端使用超文本传输协议(hypertext transport protocol,http)来进行函数调用。在这些实现方式中,网关应用接收所有的rest api函数调用,将统一资源定位符(uniform resource locator,url)转化成函数标识符和函数参数,用函数参数调用函数,接收结果,并且通过网络提供结果。网关可以在tee中运行,在这种情况下,客户端设备可以鉴证网关。然而,网关的测量不允许客户端设备鉴证底层函数也在tee中运行。
27.faas平台的多个租户可以提供将由faas平台经由网关执行的函数。租户是共享共同的数据访问权的一组用户,例如拥有链接到特定公司的账户的用户。租户之间的数据的保护可能是租户和faas平台的一个目标。faas平台包括在一个或多个数据中心中的一个或多个faas服务器。从而,网关可包括负载平衡器或用于分布式计算的其他功能。由于faas平台经由网关为多个租户提供功能,所以没有一个租户可以控制网关。
28.如本文所论述的,每个租户可以为任何数目的函数提供代码和数据,以便在faas平台上的任何数目的tee内执行,并且经由网关来访问。此外,每个租户可以为单个代理鉴证者tee提供代码和数据。租户的客户端设备使用代理鉴证者tee来鉴证该租户的每个其他tee,并且与这些tee中的函数建立信任。一旦这些函数已被鉴证,客户端设备就会相信租户的其他tee是在与网关(也可被鉴证)相同的平台上运行的。
29.由于租户控制着代理鉴证者tee的内容,所以代理鉴证者tee可以被设计成安全地
鉴证租户的每一个部署的tee,这是网关所不能做到的。由于对于每个租户只需要一个代理鉴证者tee,所以这个解决方案是可缩放的,允许了为每个租户创建任何数目的tee,而不增大鉴证开销。
30.与鉴证租户的飞地的现有方法相比,本文论述的方法和系统使得能够使用网关来访问飞地,而不要求通过网络直接鉴证每个飞地,从而减少了网络使用。由于当租户函数在更细粒度的飞地中受到保护时,单个代理鉴证者tee的开销不会增大,因此系统安全性得到提高。当这些效果被综合考虑时,本文描述的一种或多种方法可以避免对于否则在鉴证飞地时将会涉及的某些努力或资源的需要。可以类似地减少被一个或多个机器、数据库或网络使用的计算资源。这种计算资源的示例包括处理器周期、网络流量、存储器使用、数据存储容量、功率消耗、以及冷却能力。
31.图1是根据一些示例实施例图示出适合于使用tee提供函数即服务的服务器的网络环境100的网络图。网络环境100包括faas服务器110a和110b,客户端设备120a和120b,以及网络130。faas服务器110a-110b经由网络130向客户端设备120a-120b提供函数。faas服务器110a和110b可以被统称为faas服务器110,或者被概括称为faas服务器110。客户端设备120a和120b可以被统称为客户端设备120,或者被概括称为客户端设备120。
32.客户端设备120a和120b可以是不同租户的设备,这样,每个租户希望确保他们的租户特定的数据和代码不可被其他租户访问。因此,faas服务器110a-110b可以为提供的每个faas使用飞地。faas服务器110a-110b和客户端设备120a和120b可以各自全部或部分地在计算机系统中实现,如下文关于图9的描述。
33.可以使用本文描述的可缩放地提供tee的鉴证的系统和方法。例如,可以由faas服务器110为每个租户创建鉴证代理飞地,以允许客户端设备120在通过网关访问函数之前对所提供的函数进行鉴证。
34.图1所示的任何机器、数据库或设备可以在通用计算机中实现,该通用计算机被软件修改(例如,配置或编程)为专用计算机,从而为该机器、数据库或设备执行本文描述的功能。例如,下面参考图9论述了能够实现本文描述的任何一个或多个方法的计算机系统。就本文使用的而言,“数据库”是一种数据存储资源,并且可以存储数据,这些数据被结构化为文本文件、表格、电子表格、关系数据库(例如,对象关系数据库)、三重存储、层次化数据存储、面向文档的nosql数据库、文件存储、或者这些的任何适当组合。数据库可以是存储器内数据库。此外,图1中所示的机器、数据库或设备中的任何两个或更多个可以被组合成单个机器、数据库或设备,并且本文为任何单个机器、数据库或设备描述的功能都可以被细分在多个机器、数据库或设备中。
35.faas服务器110和客户端设备120由网络130连接。网络130可以是使得能够在机器、数据库和设备之间进行通信的任何网络。因此,网络130可以是有线网络、无线网络(例如,移动或蜂窝网络)、或者其任何适当组合。网络130可包括构成私有网络、公共网络(例如互联网)或者其任何适当组合的一个或多个部分。每个设备利用网络接口连接到网络130。
36.图2是根据一些示例实施例的适合用于tee的可缩放鉴证的faas服务器110a的框图200。faas服务器110a被示为包括通信模块210、网关功能220、应用的可信组件230、可信域模块240、代理鉴证者250、共享存储器260、以及私有存储器270,所有这些都被配置为相互通信(例如,经由总线、共享存储器或者交换机)。可以使用硬件(例如,机器的处理器)来
实现本文描述的任何一个或多个模块。例如,本文描述的任何模块可由被配置为执行本文对于该模块描述的操作的处理器来实现。此外,这些模块中的任何两个或更多个模块可以被组合成单个模块,并且本文为单个模块描述的功能可被细分在多个模块中。此外,根据各种示例实施例,本文描述为在单个机器、数据库或设备内实现的模块可以分布在多个机器、数据库或设备上。
37.通信模块210接收被发送到faas服务器110a的数据并且发送来自faas服务器110a的数据。例如,通信模块210可以从客户端设备130a接收执行函数的请求。在该函数被执行之后,该函数的结果由通信模块210提供给客户端设备130a。由通信模块210发送和接收的通信可以由网络130来充当媒介。调用的函数可由另一个函数来充当媒介。例如,通信模块210可以向网关功能220提供url。网关功能220解析该url并且调用可信组件230中的函数。
38.网关功能220可以在飞地内或飞地外执行。如果网关功能不在飞地内操作,如果操作系统或其他非可信组件被破坏,那么网关功能220就容易受到攻击。可信组件230在飞地内执行。从而,即使操作系统或非可信组件220被破坏,可信组件230的数据和代码仍然是安全的。
39.可信域模块240创建和保护飞地,并且负责在网关功能220和可信组件230之间转变执行。经签名的代码可被提供给可信域模块240,该模块验证该代码自从被签名起没有被修改。经签名的代码被加载到物理存储器的一部分中,该部分被标记为飞地的一部分。此后,硬件保护措施防止非可信软件对飞地存储器进行访问、修改、执行或者这些的任何适当组合。可以使用仅对可信域模块240可用的密钥来对代码进行加密。
40.一旦可信组件230被初始化,网关功能220就可以使用可信域模块240的从非可信模式转变到可信模式或者在可信飞地之间转变的特殊处理器指令来调用可信组件230的函数。可信组件230执行参数验证,如果参数有效则执行请求的函数,并且经由可信域模块240将控制权返回给网关功能220。在faas服务器110a中可以实例化多个可信组件230,每个提供一个或多个函数。
41.可信域模块240可被实现为提供软件防护扩展(software guard extensions,sgx)、信任域扩展(trust domain extensions,tdx)或者这两者的硬件处理器的一个或多个组件。在sgx中,鉴证(attestation)是一种机制,通过这种机制,第三方实体在为软件提供秘密和受保护的数据之前,确定软件实体是在被保护在飞地内的具备sgx能力的平台上运行的。鉴证依赖于平台产生证书的能力,该证书准确地反映了飞地的签名,其中包括关于飞地的安全属性的信息。sgx体系结构提供了支持两种形式的鉴证的机制。有一种机制用于在同一平台上运行的飞地之间创建基本断言,它支持本地或平台内的鉴证,然后是另一种机制,它为飞地和远程第三方之间的鉴证提供基础。
42.代理鉴证者250为飞地(例如,可信组件230)生成鉴证。该鉴证是一个证据结构,它唯一地识别了被鉴证的飞地和主机(例如,faas服务器110a),使用非对称加密并且由内置处理器功能支持。该鉴证可以经由通信模块210被提供给客户端设备120,允许了客户端设备120确认可信组件230没有被破坏。例如,可以使用防止访问密钥的硬件来将处理器制造为具有内置的私钥。使用该私钥,鉴证结构可以被处理器签名,以生成签名结构。使用由硬
件制造商发布的相应公钥,签名可以被客户端设备120确认。这允许了客户端设备120确保远程设备(例如,faas服务器110a)上的飞地实际上已被创建,而没有被篡改。
43.网关功能220和可信组件230都可以访问和修改共享存储器260,但只有可信组件230可以访问和修改私有存储器270。虽然在图2中只示出了一个可信组件230和一个私有存储器270,但每个租户可以有多个可信组件230,每个都带有相应的私有存储器270。此外,多个应用可以用单独的存储器空间运行,从而用单独的共享存储器260运行。在这个上下文中,“共享”是指存储器可由拥有对存储器空间的访问权的所有软件和硬件(例如,应用及其操作系统)访问,不一定可由在该系统上运行的所有应用访问。
44.租户的代理鉴证者250可为租户验证一个或多个可信组件230的完好性。从而,通过与单个代理鉴证者250通信,租户的客户端设备120能够在使用单个网关功能220调用这些组件的函数之前验证任何数目的可信组件230。
45.可以通过让每个飞地维护它所鉴证的飞地的测量散列(例如,由sgx提供的mrenclave值)的列表来使能飞地之间的相互鉴证(例如,在代理鉴证者250和同一租户的一个或多个可信组件230中的每一个之间或者在两个可信组件230之间)。测量值可被维护在清单中,并且该清单的散列值可在飞地创建时被加载,从而保护飞地将信任的测量散列。从而,在向安全处理器(例如,使用sgx或tdx)请求另一个飞地的测量散列之后,可以将请求的散列与存储的散列进行比较,以确认另一个飞地是可信飞地之一,而无需使用第三方鉴证验证器。从而,只要代理鉴证者250被租户信任,并且代理鉴证者250能够鉴证在faas服务器上运行的其他飞地,租户就能够鉴证所有的飞地是安全的。
46.图3是现有技术的基于环的存储器保护的框图300。框图300包括应用310和320以及操作系统330。操作系统330在第0环(和处理器)、例外级别1(处理器)或者同等权限级别中执行处理器命令。应用310-320在第3环(和处理器)、例外级别0(处理器)或者同等权限级别中执行处理器命令。
47.硬件处理器防止以较低权限级别执行的代码访问由操作系统定义的存储器范围之外的存储器。从而,应用310的代码不能直接访问操作系统330或应用320的存储器(如图3中的“x”所示)。操作系统330通过预定义特定的访问点(例如,通过调用门、处理器上的sysenter/sysexit指令、处理器上的syscall/sysret指令、或者这些的任何适当的组合或等同物)向应用310-320暴露一些功能。
48.由于操作系统330能够访问所有的存储器,所以应用310和320没有保护措施来防止恶意的操作系统。例如,竞争者可以在运行应用310之前修改操作系统,以获得对应用310的代码和数据的访问,允许了逆向工程。
49.此外,如果一应用能够利用操作系统330中的漏洞,并且将自己提升到操作系统的权限级别,则该应用将能够访问所有的存储器。例如,通常不能访问应用320的存储器的应用310(如图3中应用310和320之间的x所示),在将自己提升到第0环或例外级别1之后,将能够访问应用320的存储器。从而,如果用户被骗运行恶意程序(例如,应用310),则用户或应用提供者的私有数据可能会被直接从存储器中访问(例如,应用320使用的银行密码)。
50.图4是根据一些示例实施例的适合于减小tee的时延的基于飞地的存储器保护的框图400。框图400包括应用410、飞地420、以及操作系统430。操作系统430在第0环(
和处理器)、例外级别1(处理器)或者同等权限级别中执行处理器命令。应用410和飞地420在第3环(和处理器)、例外级别0(处理器)或者同等权限级别中执行处理器命令。
51.操作系统430分配飞地420的存储器,并且向处理器指示出要被加载到飞地420中的代码和数据。然而,一旦被实例化,操作系统430就不能访问飞地420的存储器。从而,即使操作系统430是恶意的或被破坏的,飞地420的代码和数据仍然是安全的。
52.飞地420可以向应用410提供函数。操作系统430可以控制应用410是否被允许调用飞地420的函数(例如,通过使用ecall指令)。从而,恶意的应用可能能够通过破坏操作系统430来获得调用飞地420的函数的能力。尽管如此,硬件处理器将阻止恶意应用直接访问飞地420的存储器或代码。从而,虽然飞地420中的代码不能假设函数被正确调用或被非攻击者调用,但飞地420中的代码对参数检查和其他内部安全措施有完全的控制,并且只受其内部安全漏洞的影响。
53.图5是根据一些示例实施例的适合用于tee的可缩放鉴证的数据库模式500的框图。数据库模式500包括鉴证表510和远程函数表540。鉴证表510包括格式520的行530a、530b和530c。鉴证表510可被代理鉴证者250、客户端设备120a-120b或者这些的任何适当组合使用。远程函数表540包括格式550的行560a、560b和560c。远程函数表540可被客户端设备120a-120b使用。
54.鉴证表510的格式520包括飞地标识符字段和状态字段。行530a-530c中的每一行存储单个飞地的数据。飞地标识符是飞地的唯一标识符。例如,当飞地被创建时,可信域模块240可将下一个未使用的标识符指派给创建的飞地。状态字段指示出飞地的状态,例如已鉴证、未鉴证、或者不被鉴证租户所拥有。
55.从而,在图5的示例中,在鉴证表510中示出了三个飞地。其中一个飞地已被鉴证,一个未被鉴证,还有一个不是拥有的。因此,如果鉴证表510被集成在代理鉴证者250中,则来自客户端设备120a的对状态的请求可被响应,其中指示出只有飞地0已被鉴证。结果,客户端设备120a可以只为与飞地0相关联的函数授权对faas服务器110a的调用。或者,代理鉴证者250可以通过在向客户端设备120a提供结果之前尝试鉴证未鉴证的飞地(例如,行530b的飞地1)来响应该请求。
56.在鉴证表510被存储在客户端设备120上的实施例中,在每个客户端设备120上执行的应用可以在使用faas服务器110a调用函数之前检查与函数相对应的飞地的状态字段。因此,未鉴证的函数将不会被调用,并且租户数据将不会被暴露给该函数。可以执行懒惰的鉴证,这样,只有响应于客户端设备上的对鉴证的请求,才会对函数的tee进行鉴证。
57.额外地或者替换地,每个客户端设备120可以使用远程函数表540。远程函数表540的格式550包括函数名称、服务器标识符、以及状态字段。行560a-560c中的每一行存储单个函数的数据。函数名称是函数的唯一标识符。服务器标识符识别了执行函数的服务器。在图5的示例中,服务器10.0.0.1执行dsp和fold函数,并且服务器10.0.0.2执行encrypt函数。在图5的示例中,服务器标识符是互联网协议(ip)地址,但也可以使用其他标识符。状态字段指示出包含该函数的飞地的状态,例如已鉴证或未鉴证。
58.图6是根据一些示例实施例适合用于tee的可缩放鉴证的函数和设备之间的通信
链路的框图600。如图6所示,faas 110a提供网关610,函数620a、620b、620c和620d,以及代理鉴证者客户端630a和630b。参考图2,网关610对应于网关功能220,函数620a-620d对应于四个可信组件230,并且代理鉴证者客户端630a-630d对应于两个代理鉴证者250。
59.两个不同租户的客户端设备120a和120b经由两个接口与faas 110a联络,即网关610和对应于租户的代理鉴证者客户端630a或630b。faas服务器110a提供函数620a、620b、620c和620d,每个都在单独的tee中。在这个示例中,代理鉴证者客户端630a鉴证函数620a和620b的tee,包含由与客户端设备120a相关联的租户提供的代码,以便在faas服务器110a上执行。同样地,代理鉴证者客户端630b鉴证函数620c和620d的tee,包含由与客户端设备120b相关联的租户提供的代码,以便在faas服务器110a上执行。代理鉴证者客户端630a不能鉴证函数620c和620d的tee,因为代理鉴证者客户端630a不是由提供了函数620c和620d的代码的那同一个租户提供的。因为它们是由不同的租户提供的,所以函数620c-620d所使用的秘密安全信息对代理鉴证者客户端630a来说是不可用的。从而,代理鉴证者客户端630a-630b的添加并不会破坏使用tee所提供的租户间的安全性。
60.在使用代理鉴证者客户端630a来鉴证函数620a和620b之后,客户端设备120a使用网关610来调用函数620a或620b之一,确信是在安全环境中调用正确的函数。这个过程可以为任何数目的租户的任何数目的客户端重复进行,每个租户具有任何数目的受保护函数620a-620d,但对每个租户只使用一个代理鉴证者客户端630a-630b。因此,faas服务器110a的可缩放性相对于提供每个tee的远程鉴证而不使用代理鉴证者客户端的系统有所改善,并且faas服务器110a的安全性相对于不允许每个tee的远程鉴证的系统有所改善。
61.图7是根据一些示例实施例图示出适合被服务器执行来提供用于tee的可缩放鉴证的方法700的操作的流程图。方法700包括操作710、720、730和740。作为示例而非限制,方法700可以由图1的faas服务器110a执行,使用图2-图4所示的模块、数据库和结构。
62.在操作710中,可信域模块240为第一函数创建第一tee,为第二函数创建第二tee,以及为对第一函数的远程访问创建网关。参考图4,第一函数可以是函数420a,第二函数可以是代理鉴证者客户端430a,并且网关可以是网关410。在一些示例实施例中,代理鉴证者客户端430a由客户端设备120a通过请求和验证代理鉴证者客户端430a本身的鉴证数据来进行验证。一旦鉴证者客户端430a的鉴证完成,客户端设备120a就可以提供加密密钥,由代理鉴证者客户端430a用于与客户端设备120a的进一步通信。
63.在一些示例实施例中,网关410由客户端设备120a通过请求和验证网关410本身的鉴证数据来进行验证。在其他示例实施例中,网关410不被客户端设备120a验证。
64.创建tee可包括处理请求,该请求包括用于tee的预先计算的散列值,并且指示出共享存储器260的一部分(例如,由请求中包括的地址和大小所识别的部分),该部分包含tee的代码和数据。可信域模块240可以对二元存储器状态(例如,请求中指示的共享存储器260的部分)执行散列函数,以确认请求中提供的散列值与计算出的散列值相匹配。如果散列值匹配,则可信域模块240确认了所指示的存储器实际上包含所请求的tee的代码和数据。如果散列值不匹配,则可信域模块240可返回差错值,防止经修改的存储器被加载到飞地中。
65.faas服务器110a经由网络130接收请求,以验证第二tee的完好性(操作720)。例如,可以对第一函数进行远程函数调用。作为进一步示例,可以调用代理鉴证者客户端430a
以验证包含函数420a的tee的完好性。
66.在操作730中,faas服务器110a执行第一函数以生成第二tee的鉴证数据。例如,第二tee的测量可以被第一函数访问,并且在操作720中接收第一函数调用之前被使用第一函数和客户端设备120a之间交换的密钥来进行签名。
67.tee的数据和代码可包括来自tee的作者的自签名证书。这个自签名证书允许了可信域模块240验证被加载到tee中的数据和代码自从其被签名起没有被修改。被签名的数据包括作者的标识符。从而,第二tee的鉴证数据既指示出tee在签名之后未被修改,又指示出作者的标识符。如果作者是与客户端设备120a相关联的租户,则tee的有效性得到确认。为了进一步保护,第二tee的鉴证数据可以在第二tee内被生成并且被导出到第一函数。鉴证数据可以是一个结构,其包括第二tee的身份、第二tee的一个或多个属性、消息认证码(message authentication code,mac)、或者这些的任何适当组合。可以使用临时私钥对该结构进行签名。
68.tee的存储器空间可以使用高级加密标准(advanced encryption standard,aes)的基于xor-encrypt-xor(xex)的带密码文本窃取(ciphertext stealing,xts)模式的调整码本(tweaked-codebook)模式来进行加密,并且使用临时128比特存储器加密密钥。此外,可以使用基于安全散列算法3(secure hash algorithm,sha-3)的mac来提供加密完好性保护。mac是用于识别消息的一段信息。mac通过允许验证者检测对消息内容的任何改变来保护消息的数据完好性。
69.第一函数,在操作740中,经由网络提供鉴证数据。继续这个示例,客户端设备120a接收被签名的鉴证数据,验证该数据是由已被鉴证的代理鉴证者客户端430a签名的,并且验证该鉴证数据正确识别了第二tee。
70.或者,第一函数可以验证被签名的结构,并且向客户端设备提供关于鉴证是成功了还是失败了的指示,而不是提供鉴证数据本身。验证鉴证数据可包括使用与用于签名的临时私钥相对应的临时公钥来验证鉴证数据的签名。
71.一旦对第二tee的验证完成,客户端设备120a就可以经由网关来安全地调用第二tee的第二函数。第二tee的第二函数的调用可包括向第二函数提供参数,生成返回值,并且经由网络130向客户端设备120a提供返回值。
72.在一些示例实施例中,第二函数请求访问第一tee的数据。例如,客户端设备120a可以经由图4所示的直接连接向第一tee提供配置数据,并且函数420a可以访问该数据,减少了经由网关410传达的参数的数目。第一tee可以确定第二tee是否已被验证,并且只有在第二tee已被验证的情况下才共享所请求的数据。这确保了租户的数据不会与未经验证的函数共享。
73.可以通过使用临时密钥对一个tee的数据进行加密并且将加密的数据和对临时密钥的访问提供给另一个tee来在tee之间传递数据。硬件保护可以防止从未受保护的存储器(例如,在任何tee之外运行的代码)使用临时密钥。
74.图8是根据一些示例实施例图示出适合被客户端执行来利用用于tee的可缩放鉴证的方法800的操作的流程图。方法800包括操作810、820和830。作为示例而非限制,方法800可以由图1的客户端设备120a执行,使用图2-图4所示的模块、数据库和结构。
75.在操作810中,客户端设备(例如,客户端设备120a)验证远程服务器(例如,faas服
务器110a)的第一tee的完好性。例如,客户端设备120a可以从代理鉴证客户端430a请求被签名的鉴证数据。代理鉴证客户端430a从tee内生成鉴证数据,并且该鉴证数据被只能从tee内访问的硬件保护密钥来签名。客户端设备120a接收到被签名的鉴证数据,使用客户端设备120a的可信域模块240来验证签名,并且对照在tee的代码和数据被提供给远程服务器之前生成的鉴证数据的本地拷贝来验证该鉴证数据。
76.客户端设备在操作820中对第一tee的第一函数进行第一远程函数调用,以验证远程服务器的第二tee的完好性。例如,客户端设备120a可以调用代理鉴证客户端430a来验证包含函数420a的tee的完好性。代理鉴证客户端430a执行第二tee的本地鉴证,并且向客户端设备120a发送安全确认,即函数420a的tee已被鉴证。
77.在一些示例实施例中,第一远程函数调用包括来自客户端设备120a的关于被鉴证的第二tee的数据。在这些示例实施例中,代理鉴证客户端430a将从客户端设备120a接收到的鉴证数据与本地接收到的关于第二tee的鉴证数据进行比较。如果两组鉴证数据相匹配,则向客户端设备120a提供验证响应。否则,代理鉴证客户端430a指示出第二tee无法被验证。
78.在其他示例实施例中,代理鉴证客户端430a的tee在代理鉴证客户端430a被部署时包括第二tee的鉴证数据。在这些示例实施例中,代理鉴证客户端430a将存储的鉴证数据与本地接收到的关于第二tee的鉴证数据进行比较,以确定是否发送验证响应或者指出第二tee无法被验证的指示。
79.在操作830中,基于由第一函数提供的验证,客户端设备向第二tee的第一函数进行第二远程函数调用。例如,如果代理鉴证客户端430a验证了第二tee,则客户端设备120a可以调用已验证的函数420a。对已验证的函数420a的调用可以是直接的,就像对代理鉴证客户端430a的调用一样,或者是间接的,利用网关410。
80.从而,通过使用方法800,使得客户端设备120a能够验证faas服务器110a上的任何数目的tee中的任何数目的函数,而只直接调用代理鉴证客户端430a,降低了客户端和服务器上的验证过程的复杂性,并且减少了网络流量和相关开销。
81.图9是根据一些示例实施例图示出适合被客户端执行来利用用于tee的可缩放鉴证的方法900的操作的流程图。方法900包括操作910、920、930、940和950。作为示例而非限制,方法900可以由图1的客户端设备120a执行,使用图2-图4所示的模块、数据库和结构。
82.在操作910中,客户端设备(例如,客户端设备120a)确定某个函数的tee是否已经在远程服务器(例如,faas服务器110a)上被鉴证。例如,可以查询图3的远程函数表340,以确定该函数的条目是否存在并且指示出该函数已被鉴证。
83.如果tee已被鉴证,则客户端设备在远程服务器上调用该函数(操作920)。参考远程函数表340的行360a,客户端设备在操作910中确认dsp函数已被鉴证,并且在操作920中,在服务器10.0.0.1上调用dsp函数。
84.然而,如果tee没有被鉴证,则客户端设备在操作930中向远程服务器请求鉴证。如关于方法800和框图600所论述的,这可以通过对远程服务器上的不同tee中的不同函数进行远程函数调用来执行。
85.在操作940中,所请求的鉴证的结果被客户端设备检查。如果鉴证是成功的,则指示出该函数是否被鉴证的本地数据被更新(例如,通过向鉴证表310添加一行或者更新远程
函数表340中的现有行)并且远程函数被调用(操作920)。
86.如果鉴证不成功,则调用该函数的本地版本(操作950)。在一些示例实施例中,远程服务器的计算能力大于客户端设备的计算能力,从而当安全函数可用时,优选使用远程服务器。然而,通过能够在本地调用函数,即使远程服务器无法提供该函数,利用该函数的应用也能够继续进行。
87.从而,通过使用方法900,使得客户端设备120a能够验证faas服务器110a上的任何数目的tee中的任何数目的函数,而只直接调用代理鉴证客户端430a,降低了客户端和服务器上的验证过程的复杂性,并且减少了网络流量和相关开销。此外,当函数不可用或者远程不安全时,可在本地调用这些函数,从而允许了更大的可靠性。
88.鉴于主题的上述实现方式,本技术公开了示例的以下列表,其中,一示例的单独的一个特征,或者一示例的多于一个特征组合起来,以及可选地与一个或多个另外示例的一个或多个特征相组合,是也属于本技术的公开范围内的另外示例。
89.示例1是一种提供可信执行环境(tee)的远程鉴证的系统,该系统包括:至少一个处理器;与所述处理器操作性耦合的网络接口;以及与所述至少一个处理器耦合来存储指令的存储器,所述指令当被所述处理器执行时,使得所述至少一个处理器执行操作,所述操作包括:为第一函数创建第一tee;为第二函数创建第二tee;为对所述第一函数的远程访问提供网关;经由所述网络接口从客户端设备接收验证所述第二tee的完好性的请求;并且响应于所述请求:执行所述第一函数以为所述第二tee生成鉴证数据;并且经由所述网络接口向所述客户端设备提供所述鉴证数据。
90.在示例2中,如示例1所述的主题包括,其中为所述第二tee生成所述鉴证数据包括:从所述第二tee内生成签名结构,该签名结构包括所述第二tee的身份、所述第二tee的属性、以及消息认证码(mac),所述结构被利用临时私钥来签名;并且利用所述第一tee的第一函数来验证所述签名结构。
91.在示例3中,如示例1-2所述的主题包括,其中所述操作还包括:在所述网关处经由所述网络接口从所述客户端设备接收函数调用,所述函数调用与所述第二函数相关联;并且响应于所述函数调用:执行所述第二函数以生成返回值;并且经由所述网络接口向所述客户端设备提供所述返回值。
92.在示例4中,如示例3所述的主题包括,其中所述操作还包括:响应于所述函数调用,由所述第二函数请求对所述第一tee的数据的访问。
93.在示例5中,如示例4所述的主题包括,其中所述操作还包括:由所述第一函数确定所述第二函数已被验证;并且响应于由所述第二函数作出的对访问所述第一tee的数据的请求,基于确定所述第二函数已被验证,提供所请求的对所述数据的访问。
94.在示例6中,如示例5所述的主题包括,其中提供所请求的对所述数据的访问包括:利用临时密钥对所述数据进行加密;并且向所述第二函数提供对所述临时密钥的访问。
95.在示例7中,如示例1-6所述的主题包括,其中所述操作还包括:在接收到验证所述第二tee的完好性的请求之前,接收验证所述第一tee的完好性的第二请求。
96.在示例8中,如示例1-7所述的主题包括,其中所述网关未被所述客户端设备验证。
97.在示例9中,如示例1-8所述的主题包括,其中:所述网关提供对第三tee的第三函数的远程访问;并且所述第一函数不能验证所述第三tee的完好性。
98.在示例10中,如示例9所述的主题包括,其中所述操作还包括:为第四函数创建第四tee;并且经由所述网络接口从第二客户端设备接收对所述第四函数的第二函数调用,所述第二函数调用将验证所述第三tee的完好性。
99.示例11是一种提供可信执行环境(tee)的远程鉴证的方法,该方法包括:由处理器为第一函数创建第一tee;由所述处理器为第二函数创建第二tee;由所述处理器为对所述第一函数的远程访问提供网关;经由网络接口从客户端设备接收验证所述第二tee的完好性的请求;响应于所述请求:由所述处理器执行所述第一函数以为所述第二tee生成鉴证数据;并且经由所述网络接口向所述客户端设备提供所述鉴证数据。
100.在示例12中,如示例11所述的主题包括,其中为所述第二tee生成所述鉴证数据包括:从所述第二tee内生成签名结构,该签名结构包括所述第二tee的身份、所述第二tee的属性、以及消息认证码(mac),所述结构被利用临时私钥来签名;并且由所述处理器利用所述第一tee的第一函数来验证所述签名结构。
101.在示例13中,如示例11-12所述的主题包括,在所述网关处经由所述网络接口从所述客户端设备接收函数调用,所述函数调用与所述第二函数相关联;并且响应于所述函数调用:由所述处理器执行所述第二函数以生成返回值;并且经由所述网络接口向所述客户端设备提供所述返回值。
102.在示例14中,如示例13所述的主题包括,响应于所述函数调用,由所述第二函数请求对所述第一tee的数据的访问。
103.在示例15中,如示例14所述的主题包括,由所述第一函数确定所述第二函数已被验证;并且响应于由所述第二函数作出的对访问所述第一tee的数据的请求,基于确定所述第二函数已被验证,提供所请求的对所述数据的访问。
104.在示例16中,如示例15所述的主题包括,其中提供所请求的对所述数据的访问包括:利用临时密钥对所述数据进行加密;并且向所述第二函数提供对所述临时密钥的访问。
105.在示例17中,如示例11-16所述的主题包括,在接收到验证所述第二tee的完好性的请求之前,接收验证所述第一tee的完好性的第二请求。
106.在示例18中,如示例11-17所述的主题包括,其中所述网关未被所述客户端设备验证。
107.在示例19中,如示例11-18所述的主题包括,其中:所述网关提供对第三tee的第三函数的远程访问;并且所述第一函数不能验证所述第三tee的完好性。
108.在示例20中,如示例19所述的主题包括,由所述处理器为第四函数创建第四tee;并且经由所述网络接口从第二客户端设备接收对所述第四函数的第二函数调用,所述第二函数调用将验证所述第三tee的完好性。
109.示例21是一种非暂态计算机可读介质,具有指令,用于使得至少一个处理器通过执行操作来提供可信执行环境(tee)的远程鉴证,所述操作包括:为第一函数创建第一tee;为第二函数创建第二tee;为对所述第一函数的远程访问提供网关;经由网络接口从客户端设备接收验证所述第二tee的完好性的请求;响应于所述请求:执行所述第一函数以为所述第二tee生成鉴证数据;并且经由所述网络接口向所述客户端设备提供所述鉴证数据。
110.在示例22中,如示例21所述的主题包括,其中为所述第二tee生成所述鉴证数据包括:从所述第二tee内生成签名结构,该签名结构包括所述第二tee的身份、所述第二tee的
属性、以及消息认证码(mac),所述结构被利用临时私钥来签名;并且利用所述第一tee的第一函数来验证所述签名结构。
111.在示例23中,如示例21-22所述的主题包括,其中所述操作还包括:在所述网关处经由所述网络接口从所述客户端设备接收函数调用,所述函数调用与所述第二函数相关联;并且响应于所述函数调用:执行所述第二函数以生成返回值;并且经由所述网络接口向所述客户端设备提供所述返回值。
112.在示例24中,如示例23所述的主题包括,其中所述操作还包括:响应于所述函数调用,由所述第二函数请求对所述第一tee的数据的访问。
113.在示例25中,如示例24所述的主题包括,其中所述操作还包括:由所述第一函数确定所述第二函数已被验证;并且响应于由所述第一函数作出的对访问所述第一tee的数据的请求,基于确定所述第二函数已被验证,提供所请求的对所述数据的访问。
114.在示例26中,如示例25所述的主题包括,其中提供所请求的对所述数据的访问包括:利用临时密钥对所述数据进行加密;并且向所述第二函数提供对所述临时密钥的访问。
115.在示例27中,如示例21-26所述的主题包括,其中所述操作还包括:在接收到验证所述第二tee的完好性的请求之前,接收验证所述第一tee的完好性的第二请求。
116.在示例28中,如示例21-27所述的主题包括,其中所述网关未被所述客户端设备验证。
117.在示例29中,如示例21-28所述的主题包括,其中:所述网关提供对第三tee的第三函数的远程访问;并且所述第一函数不能验证所述第三tee的完好性。
118.在示例30中,如示例29所述的主题包括,其中所述操作还包括:由所述处理器为第四函数创建第四tee;并且经由所述网络接口从第二客户端设备接收对所述第四函数的第二函数调用,所述第二函数调用将验证所述第三tee的完好性。
119.示例31是一种提供可信执行环境(tee)的远程鉴证的系统,该系统包括:用于存储的装置;网络接口装置;以及处理装置,用于:为第一函数创建第一tee;为第二函数创建第二tee;为对所述第一函数的远程访问提供网关;经由所述网络接口装置从客户端设备接收验证所述第二tee的完好性的请求;响应于所述请求:执行所述第一函数以为所述第二tee生成鉴证数据;并且经由所述网络接口装置向所述客户端设备提供所述鉴证数据。
120.在示例32中,如示例31所述的主题包括,其中为了为所述第二tee生成所述鉴证数据,所述处理装置用于:从所述第二tee内生成签名结构,该签名结构包括所述第二tee的身份、所述第二tee的属性、以及消息认证码(mac),所述结构被利用临时私钥来签名;并且利用所述第一tee的第一函数来验证所述签名结构。
121.在示例33中,如示例31-32所述的主题包括,其中所述处理装置还用于:在所述网关处经由所述网络接口装置从所述客户端设备接收函数调用,所述函数调用与所述第二函数相关联;并且响应于所述函数调用:执行所述第二函数以生成返回值;并且经由所述网络接口装置向所述客户端设备提供所述返回值。
122.在示例34中,如示例33所述的主题包括,其中所述处理装置还用于:响应于所述函数调用,由所述第二函数请求对所述第一tee的数据的访问。
123.在示例35中,如示例34所述的主题包括,其中所述处理装置还用于:由所述第一函数确定所述第二函数已被验证;并且响应于由所述第二函数作出的对访问所述第一tee的
数据的请求,基于确定所述第二函数已被验证,提供所请求的对所述数据的访问。
124.在示例36中,如示例35所述的主题包括,其中为了提供所请求的对所述数据的访问,所述处理装置用于:利用临时密钥对所述数据进行加密;并且向所述第二函数提供对所述临时密钥的访问。
125.在示例37中,如示例31-36所述的主题包括,其中所述处理装置还用于:在接收到验证所述第二tee的完好性的请求之前,接收验证所述第一tee的完好性的第二请求。
126.在示例38中,如示例31-37所述的主题包括,其中所述网关未被所述客户端设备验证。
127.在示例39中,如示例31-38所述的主题包括,其中:所述网关提供对第三tee的第三函数的远程访问;并且所述第一函数不能验证所述第三tee的完好性。
128.在示例40中,如示例39所述的主题包括,其中所述处理装置还用于:为第四函数创建第四tee;并且经由所述网络接口装置从第二客户端设备接收对所述第四函数的第二函数调用,所述第二函数调用将验证所述第三tee的完好性。
129.示例41是至少一个机器可读介质,包括指令,所述指令当被处理电路执行时,使得所述处理电路执行操作来实现示例1-40中的任何一者。
130.示例42是一种装置,包括用于实现示例1-40中的任何一者的装置。
131.示例43是一种系统,用来实现示例1-40中的任何一者。
132.示例44是一种方法,用来实现示例1-40中的任何一者。
133.图10是示出计算设备的软件体系结构1002的一个示例的框图1000。可结合例如本文描述的各种硬件体系结构来使用体系结构1002。图10只是软件体系结构的非限制性示例,而许多其他体系结构可被实现来促进本文描述的功能。代表性硬件层1004被图示并且可代表例如任何以上提到的计算设备。在一些示例中,可根据图10的计算机系统的体系结构来实现硬件层1004。
134.代表性硬件层1004包括具有关联的可执行指令1008的一个或多个处理单元1006。可执行指令1008表示软件体系结构1002的可执行指令,包括本文描述的方法、模块、子系统和组件等等的实现,并且也可包括存储器和/或存储模块1010,存储器和/或存储模块1010也具有可执行指令1008。硬件层1004还可包括如其他硬件1012指示的其他硬件,这可代表硬件层1004的任何其他硬件,例如作为软件体系结构1002的一部分图示的其他硬件。
135.在图10的示例体系结构中,软件体系结构1002可被概念化为层的栈,其中每一层提供特定的功能。例如,软件体系结构1002可包括诸如以下层:操作系统1014、库1016、框架/中间件1018、应用1020、以及呈现层1044。在操作上,应用1020和/或层内的其他组件可通过软件栈调用应用编程接口(application programming interface,api)调用1024,并且响应于api调用1024而访问被示为消息1026的响应、返回的值等等。图示的层是代表性的,而并非所有软件体系结构都具有所有的层。例如,一些移动或专用操作系统可不提供框架/中间件1018,而其他的可提供这样的层。其他软件体系结构可包括额外的或不同的层。
136.操作系统1014可管理硬件资源并且提供常见服务。操作系统1014可包括例如内核1028、服务1030、以及驱动器1032。内核1028可充当硬件和其他软件层之间的抽象层。例如,内核1028可负责存储器管理、处理器管理(例如,调度)、组件管理、联网、安全性设置,等等。服务1030可为其他软件层提供其他常见服务。在一些示例中,服务1030包括中断服务。中断
服务可检测对中断的接收,并且作为响应,使得体系结构1002暂停其当前处理并且在中断被访问时执行中断服务例程(interrupt service routine,isr)。
137.驱动器1032可负责控制底层硬件或者与底层硬件相接口。例如,取决于硬件配置,驱动器1032可包括显示驱动器、相机驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(universal serial bus,usb)驱动器)、驱动器、nfc驱动器、音频驱动器、功率管理驱动器,等等。
138.库1016可提供可被应用1020和/或其他组件和/或层利用的常见基础设施。库1016通常提供允许其他软件模块以比与底层操作系统1014功能(例如,内核1028、服务1030和/或驱动器1032)直接接口更容易的方式执行任务的功能。库1016可包括可提供诸如存储器分配函数、字符串操纵函数、数学函数等等之类的函数的系统库1034(例如,c标准库)。此外,库1016可包括api库1036,例如媒体库(例如,支持诸如mpeg4、h.264、mp3、aac、amr、jpg、png之类的各种媒体格式的呈现和操纵的库)、图形库(例如,可用于在显示器上的图形内容中渲染二维和三维的opengl框架)、数据库库(例如,可提供各种关系数据库函数的sqlite)、web库(例如,可提供web浏览功能的webkit),等等。库1016也可包括各种各样的其他库1038来向应用1020和其他软件组件/模块提供许多其他api。
139.框架/中间件1018可提供可被应用1020和/或其他软件组件/模块利用的更高级别的常见基础设施。例如,框架/中间件1018可提供各种图形用户界面(graphic user interface,gui)功能、高级别资源管理、高级别位置服务,等等。框架/中间件1018可提供可被应用1020和/或其他软件组件/模块利用的很宽范围的其他api,其中一些可能是特定的操作系统或平台所特定的。
140.应用1020包括内置应用1040和/或第三方应用1042。代表性内置应用1040的示例可包括——但不限于——联系人应用、浏览器应用、书籍阅读器应用、位置应用、媒体应用、消息传递应用、和/或游戏应用。第三方应用1042可包括内置应用中的任何一者以及各种各样的其他应用。在特定示例中,第三方应用1042(例如,由不是特定平台的厂商的实体利用android
tm
或ios
tm
软件开发套件(software development kit,sdk)开发的应用)可以是在诸如ios
tm
、android
tm
、phone或其他移动计算设备操作系统之类的移动操作系统上运行的移动软件。在这个示例中,第三方应用1042可调用由诸如操作系统1014之类的移动操作系统提供的api调用1024来促进本文描述的功能。
141.应用1020可利用内置的操作系统功能(例如,内核1028、服务1030和/或驱动器1032)、库(例如,系统库1034、api库1036以及其他库1038)、框架/中间件1018来创建用户界面以与系统的用户进行交互。替换地或者额外地,在一些系统中,与用户的交互可通过呈现层(例如呈现层1044)发生。在这些系统中,应用/模块“逻辑”可与应用/模块的与用户交互的方面分离。
142.一些软件体系结构利用虚拟机。在图10的示例中,这由虚拟机1048来图示。虚拟机创建一种软件环境,在其中应用/模块可以就像它们在硬件计算设备上执行那样执行。虚拟机被主机操作系统(操作系统1014)所容宿并且通常——虽然并非始终——具有虚拟机监视器1046,该虚拟机监视器1046管理虚拟机的操作以及与主机操作系统(即,操作系统1014)的接口。软件体系结构在虚拟机1048内执行,例如操作系统1050、库1052、框架/中间
件1054、应用1056、和/或呈现层1058。在虚拟机1048内执行的软件体系结构的这些层可与先前描述的相应层相同或者可以不同。
143.模块、组件和逻辑
144.某些实施例在本文中被描述为包括逻辑或若干个组件、模块或机构。模块可构成软件模块(例如,(1)在非暂态机器可读介质上或(2)在传输信号中体现的代码)或者硬件实现模块。硬件实现模块是能够执行某些操作的有形单元并且可按特定方式被配置或安排。在示例实施例中,一个或多个计算机系统(例如,单机、客户端或服务器计算机系统)或者一个或多个处理器可被软件(例如,应用或应用部分)配置为进行操作以执行如本文所述的某些操作的硬件实现模块。
145.在各种实施例中,可以机械地或者电子地实现硬件实现模块。例如,硬件实现模块可包括被永久配置来执行某些操作的专用电路或逻辑(例如,专用处理器,比如现场可编程门阵列(field programmable gate array,fpga)或专用集成电路(application-specific integrated circuit,asic))。硬件实现模块也可包括由软件临时配置来执行某些操作的可编程逻辑或电路(例如,包含在通用处理器或另一可编程处理器内)。将会明白,关于是以机械方式、还是用专用且永久配置的电路还是用临时配置的电路(例如,由软件配置)来实现硬件实现模块的决定可由成本和时间考虑来驱动。
146.因此,术语“硬件实现模块”应当被理解为涵盖有形实体,不论该实体是被物理地构造、永久地配置(例如,硬连线)的实体,还是被临时或暂时配置(例如,编程)来按某种方式操作和/或执行本文描述的某些操作的实体。考虑硬件实现模块被临时配置(例如,编程)的实施例,在任何一个时刻并不需要配置或实例化每个硬件实现模块。例如,在硬件实现模块包括利用软件配置的通用处理器的情况下,该通用处理器在不同时间可被配置为各个不同的硬件实现模块。软件可相应地将处理器配置为例如在一个时刻构成一特定的硬件实现模块并且在一不同的时刻构成一不同的硬件实现模块。
147.硬件实现模块可向其他硬件实现模块提供信息并且可从其他硬件实现模块接收信息。因此,描述的硬件实现模块可被视为是通信耦合的。在多个这样的硬件实现模块同时存在的情况下,通信可通过信号传输来实现(例如,通过连接硬件实现模块的适当电路和总线)。在在不同时间配置或实例化多个硬件实现模块的实施例中,这种硬件实现模块之间的通信可例如通过在这多个硬件实现模块能够访问的存储器结构中存储和取回信息来实现。例如,一个硬件实现模块可执行一操作并且将该操作的输出存储在其通信耦合到的存储器设备中。另一硬件实现模块随后在以后某时可访问该存储器设备以取回并处理存储的输出。硬件实现模块也可发起与输入或输出设备的通信,并且可对资源(例如,信息的集合)进行操作。
148.本文描述的示例方法的各种操作可至少部分地由被临时配置(例如,由软件)或永久配置来执行相关操作的一个或多个处理器执行。无论是临时还是永久地配置,这种处理器都可构成处理器实现模块,这些模块进行操作来执行一个或多个操作或功能。本文提及的模块在一些示例实施例中可包括处理器实现模块。
149.类似地,本文描述的方法可至少部分是由处理器实现的。例如,方法的操作之中的至少一些可由一个或多个处理器或者处理器实现模块来执行。某些操作的执行可分布在一个或多个处理器之间,不仅是驻留在单个机器内,而是部署在多个机器上。在一些示例实施
例中,一个或多个处理器可位于单个位置中(例如,在家庭环境、办公室环境或服务器场内),而在其他实施例中处理器可分布在多个位置上。
150.一个或多个处理器也可进行操作来支持在“云计算”环境中或者作为“软件即服务”(software as a service,saas)的相关操作的执行。例如,这些操作之中的至少一些可由一组计算机(作为包括处理器的机器的示例)来执行,这些操作是经由网络(例如,互联网)和经由一个或多个适当的接口(例如,api)可访问的。
151.电子装置和系统
152.示例实施例可在数字电子电路中实现,或者在计算机硬件、固件或软件或者在它们的组合中实现。示例实施例可利用计算机程序产品来实现,例如,有形地体现在信息载体中(例如机器可读介质中)的计算机程序,以供数据处理装置执行或者控制数据处理装置的操作,其中数据处理装置例如是可编程处理器、计算机或多个计算机。
153.计算机程序可以用任何形式的编程语言来编写,所述语言包括经编译或解释的语言,并且计算机程序可按任何形式来部署,包括被部署为独立程序或被部署为模块、子例程或者适合用在计算环境中的其他单元。计算机程序可被部署来在一个计算机上或多个计算机上执行,所述多个计算机位于一个地点或分布在多个地点并由通信网络互连。
154.在示例实施例中,操作可由一个或多个可编程处理器执行,这些可编程处理器执行计算机程序以通过操作输入数据并生成输出来执行功能。方法操作也可由专用逻辑电路(例如,fpga或asic)来执行,并且示例实施例的装置可实现为专用逻辑电路。
155.计算系统可包括客户端和服务器。客户端和服务器一般可彼此远离并且通常通过通信网络来交互。客户端和服务器的关系是由于计算机程序在各计算机上运行且相互之间具有客户端-服务器关系而发生的。在部署可编程计算系统的实施例中,将会明白,硬件和软件体系结构都值得考虑。具体而言,将会明白,关于是以永久配置的硬件(例如,asic),以临时配置的硬件(例如,软件和可编程处理器的组合)还是以永久和临时配置的硬件的组合来实现某个功能的选择,可以是一个设计选择。下面阐述了在各种示例实施例中可部署的硬件(例如,机器)和软件体系结构。
156.示例机器体系结构和机器可读介质
157.图11是采取计算机系统1100的示例形式的机器的框图,在该机器内可执行指令1124以使得该机器执行本文论述的方法中的任何一个或多个。在替换实施例中,机器可作为独立的设备来操作,或者可连接(例如,联网)到其他机器。在联网部署中,机器可在服务器-客户端网络环境中作为服务器或者客户端机器来操作,或者在对等(或分布式)网络环境中作为对等机器来操作。机器可以是个人计算机(personal computer,pc)、平板pc、机顶盒(set-top box,stb)、个人数字助理(personal digital assistant,pda)、蜂窝电话、web电器、网络路由器、交换机或网桥、或者任何能够执行指定该机器要采取的动作的(顺序的或其他方式的)指令的机器。另外,虽然只图示了单个机器,但术语“机器”也应被理解为包括单独或联合执行一组(或多组)指令以执行本文论述的任何一个或多个方法的机器的任何集合。
158.示例计算机系统1100包括处理器1102(例如,中央处理单元(central processing unit,cpu)、图形处理单元(graphics processing unit,gpu)或者这两者)、主存储器1104以及静态存储器1106,它们经由总线1108与彼此通信。计算机系统1100还可包括视频显示
单元1110(例如,液晶显示器(graphics processing unit,lcd)或阴极射线管(cathode ray tube,crt))。计算机系统1100还包括字母数字输入设备1112(例如,键盘或触摸敏感显示屏)、用户界面(user interface,ui)导航(或光标控制)设备1114(例如,鼠标)、存储单元1116、信号生成设备1118(例如,扬声器)、以及网络接口设备1120。
159.机器可读介质
160.存储单元1116包括机器可读介质1122,其上存储了实现本文描述的任何一个或多个方法或功能或者被本文描述的任何一个或多个方法或功能所利用的一组或多组数据结构和指令1124(例如,软件)。指令1124在其被计算机系统1100执行期间可完全或至少部分驻留在主存储器1104内和/或处理器1102内,其中主存储器1104和处理器1102也构成机器可读介质1122。
161.虽然机器可读介质1122在示例实施例中被示为单个介质,但术语“机器可读介质”可包括存储一个或多个指令1124或数据结构的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的缓存和服务器)。术语“机器可读介质”应被理解为包括任何如下的有形介质:其能够存储、编码或承载供机器执行并且使得机器执行本公开的任何一个或多个方法的指令1124,或者能够存储、编码或承载被这种指令1124利用或者与这种指令1124相关联的数据结构。术语“机器可读介质”因此应被理解为包括——但不限于——固态存储器以及光介质和磁介质。机器可读介质1122的具体示例包括非易失性存储器,例如包括半导体存储器设备,例如可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)以及闪存设备;磁盘,例如内部硬盘和可移除盘;磁光盘;以及致密盘只读存储器(compact disc read-only memory,cd-rom)和数字多功能盘只读存储器(digital versatile disc read-only memory,dvd-rom)盘。机器可读介质不是传输介质。
162.传输介质
163.还可利用传输介质在通信网络1126上发送或接收指令1124。可利用网络接口设备1120和多种公知的传送协议(例如,超文本传输协议(hypertext transport protocol,http))中的任何一种来传输指令1124。通信网络的示例包括局域网(local area network,lan)、广域网(wide area network,wan)、互联网、移动电话网络、普通老式电话(plain old telephone,pots)网络、以及无线数据网络(例如,wifi和wimax网络)。术语“传输介质”应被理解为包括能够存储、编码或承载指令1124来供机器执行的任何无形介质,并且包括数字或模拟通信信号或其他无形介质来促进这种软件的通信。
164.虽然本文描述了具体的示例实施例,但将会明白,在不脱离本公开的更宽精神和范围的情况下,可对这些实施例做出各种修改和改变。因此,说明书和附图应被认为是说明性的,而不是限制性的。形成本文一部分的附图以说明而非限制方式示出了其中可实现主题的具体实施例。图示的实施例被充分详细地描述以使得本领域技术人员能够实现本文公开的教导。可从其利用和得出其他实施例,从而可在不脱离本公开的范围的情况下做出结构上和逻辑上的替代和改变。这个“具体实施方式”部分因此不应被从限制意义上来理解,而各种实施例的范围仅由所附权利要求以及这种权利要求被授权的完全等同范围来限定。
165.发明主题的这种实施例在本文中可单独和/或总体上由术语“发明”来提及,这只
是为了方便,而并不打算将本技术的范围主动限制到任何单个发明或者发明构思,如果实际上公开了多于一个的话。从而,虽然本文已图示和描述了具体实施例,但应当明白,任何打算实现相同目的的布置都可替代示出的具体实施例。本公开打算覆盖各种实施例的任何和全部适配或变化。本领域技术人员在阅读以上描述后将清楚看出上述实施例的组合以及本文没有具体描述的其他实施例。
166.本文论述的主题的一些部分可以按照对在机器存储器(例如,计算机存储器)内存储为比特或二元数字信号的数据的操作的算法或符号表示来给出。这种算法或符号表示是数据处理领域的普通技术人员用来将其工作的实质传达给该领域的其他技术人员的技术的示例。当在本文中使用时,“算法”是带来期望结果的操作或类似处理的自洽序列。在这个上下文中,算法和操作涉及对物理量的物理操纵。通常,但并非一定,这种量可采取能够被存储、访问、传送、组合、比较或者被机器以其他方式操纵的电信号、磁信号或光信号的形式。有时,主要是出于习惯用法的原因,利用诸如“数据”、“内容”、“比特”、“值”、“元素”、“符号”、“字符”、“项”、“数字”、“数值”等等之类的词语来称呼这种信号,是方便的。然而,这些词语只是方便的标签,并且要与适当的物理量相关联。
167.除非另有具体声明,否则本文使用诸如“处理”、“计算”、“运算”、“确定”、“呈现”、“显示”等等之类的词语的论述可以指操纵或变换数据的机器(例如,计算机)的动作或过程,所述数据在一个或多个存储器(例如,易失性存储器、非易失性存储器或者其任何适当组合)、寄存器或者接收、存储、发送或显示信息的其他机器组件内被表示为物理(例如,电、磁或光)量。另外,除非另有具体声明,否则“一”这个词在本文中就像专利文献中常见的那样被用来包括一个或多于一个实例。最后,就本文使用的而言,连词“或”指的是非排他性的“或”,除非另有具体声明。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献