首页> 中国专利> 协助用于硬件保护的应用程序的系统服务请求交互

协助用于硬件保护的应用程序的系统服务请求交互

摘要

本发明涉及协助用于硬件保护的应用程序的系统服务请求交互。本文描述了提供平台适配层的实现方式,所述平台适配层使得应用程序能够在用户模式硬件保护的隔离容器内执行,同时利用驻留在隔离容器之外的主机平台资源。平台适配层协助应用程序和主机平台之间的系统服务请求交互。作为所述协助的一部分,平台适配层的安全服务组件进行安全相关动作。

著录项

  • 公开/公告号CN103136468A

    专利类型发明专利

  • 公开/公告日2013-06-05

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN201210537282.X

  • 申请日2012-12-12

  • 分类号G06F21/53;G06F21/60;G06F9/48;

  • 代理机构北京集佳知识产权代理有限公司;

  • 代理人王萍

  • 地址 美国华盛顿州

  • 入库时间 2024-02-19 19:15:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-03

    授权

    授权

  • 2015-07-08

    专利申请权的转移 IPC(主分类):G06F21/53 变更前: 变更后: 登记生效日:20150616 申请日:20121212

    专利申请权、专利权的转移

  • 2013-07-10

    实质审查的生效 IPC(主分类):G06F21/53 申请日:20121212

    实质审查的生效

  • 2013-06-05

    公开

    公开

说明书

相关申请

本申请与同时提交的代理机构案号为MS1-5267US的美国专利申请 第13/323,465号相关。

技术领域

本发明总体上涉及数据处理领域,并且更具体地涉及协助(facilitate) 用于硬件保护的应用程序的系统服务请求交互。

背景技术

常规的软件应用依赖于各种操作系统功能。操作系统可提供一组应用 编程接口(API),用于提供基本计算服务,比如线程调度,存储器分配, 虚拟存储器,设备访问等等。另外,操作系统可提供API的丰富特征集 合,所述API提供另外的操作系统服务,比如图形用户界面(GUI)服务, 剪贴板服务等等。

某些启用安全性的处理器能够提供安全执行环境。这种启用安全性的 处理器提供受保护的存储空间,所述启用安全性的处理器确保保存在受保 护的存储空间中的代码和数据不能被在受保护的存储空间之外的代码访 问。启用安全性的处理器提供定义明确的出口函数和入口函数(下面称为 门(gate)),所述出口函数和入口函数允许执行在位于受保护的存储空间内 的代码和在该环境之外的代码之间传递。启用安全性的处理器不允许访问 输入或输出装置或者在受保护的存储空间内的内核模式执行。结果,启用 安全性的处理器的受保护存储区限制过多,以致于不能运行常规的软件应 用。

发明内容

提供本“发明内容”部分是为了介绍下面在“具体实施方式”部分中 进一步说明的本公开的简化概念。“发明内容”部分并不意图识别要求保 护的主题的基本特征,也不意图用于确定要求保护的主题的范围。

应用程序在启用安全性的处理器提供的用户模式硬件保护的隔离容 器(UMHPIC)内执行。作为应用程序的一部分,在UMHPIC内执行的库 操作系统实现大多数的操作系统请求,包括高级请求。UMHPIC感知平 台适配层(U-PAL)使得不具有UMHPIC的特定知识的应用程序能够在 UMHPIC内执行,同时利用驻留在UMHPIC之外的操作系统资源。 U-PAL包括下述安全服务组件:其在UMHPIC内执行,并代表应用程序 确保线程调度、文件系统交互和资源分配被正确处理。U-PAL包括具有 驻留在UMHPIC内的置信部分和在外部执行环境中以用户模式执行的非 置信部分的转换(thunking)组件。置信转换组件通过由启用安全性的处理 器控制的出口门,将系统调用传给非置信转换组件。非置信转换组件通过 由启用安全性的处理器控制的入口门,将系统调用结果从操作系统传给 UMHPIC。

附图说明

参考附图,进行详细说明。在附图中,附图标记的最左侧的数字标识 其中首先出现该附图标记的图。在不同的附图中使用相同的附图标记指示 相似或相同的项目。

图1是在UMHPIC中执行应用程序的安全执行环境的示意图。

图2是可用于提供根据实施例的安全执行环境的示例性计算系统的 框图。

图3是示出为在UMHPIC中执行的应用程序提供安全性的示例性进 程的流程图。

图4是示出协助在UMHPIC中执行的应用程序和在UMHPIC之外 执行的主机平台之间的资源请求交互的示例性进程的流程图。

图5是示出处理来自主机平台的执行请求和异步通知的示例性进程 的流程图。

具体实施方式

概述

如上所述,常规的软件应用程序依赖于操作系统功能的丰富特征集 合。本申请的实施例使得没有为在安全执行环境内运行而专门编写的应用 程序(未修改的应用程序)能够在安全执行环境(下面称为用户模式硬件保 护的隔离容器(UMHPIC))内执行,而不信任在安全执行环境之外的任何 代码。虽然在UMHPIC之外的代码,比如主机操作系统可以拒绝对在 UMHPIC内的代码的服务,但是在UMHPIC之外的代码不能篡改或探听 UMHPIC内的代码的执行。在UMHPIC内执行常规的未修改的应用程序 通常会必需信任在UMHPIC外运行的“主机”操作系统。由于以下三个原 因,未修改的应用程序通常信任主机操作系统:首先,常规应用程序利用 源自操作系统的丰富多变的服务;其次,未修改的应用程序未被配置成调 用(invoke)启用安全性的处理器的特定入口门和出口门以使得执行和数 据能够在UMHPIC和外部执行环境之间传递;再次,就其安全性来说, 应用程序依赖于操作系统的正确工作。本“具体实施方式”部分的实施例 还使沙箱环境(如在美国申请第12/834,895号(“ULTRA-LOW COST  SANDBOXING FOR APPLICATION APPLIANCES”)中描述的沙箱环境) 能够在UMHPIC内执行。

在本“具体实施方式”部分中说明的实施例包括部分驻留在UMHPIC 内且部分驻留在外部执行环境中的UMHPIC感知平台适配层(U-PAL)。 U-PAL协助在UMHPIC中执行的应用程序和在UMHPIC之外执行的主 机平台之间的系统资源请求交互。而且,作为所述协助的一部分,执行一 个或更多个安全性相关动作。除了其它动作之外,安全性相关动作允许应 用程序利用主机平台访问资源,即使主机平台在UMHPIC之外执行,并 且由此是“非置信”代码。

在实施例中,应用程序包括在其UMHPIC内的置信库操作系统;大 多数的操作系统请求由库操作系统实现,库操作系统根据需要调用U-PAL 的服务;U-PAL进而从主机操作系统调用服务。U-PAL的置信部分(即, 驻留在UMHPIC内且在UMHPIC内执行的部分)向在UMHPIC内执行 的应用程序提供服务接口。U-PAL的非置信部分(即,驻留在UMHPIC 之外并在UMHPIC之外以用户模式执行的部分)例如通过主计算机系统 提供的平台适配层(PAL)而与操作系统对接。

U-PAL包括安全服务组件和转换(thunking)组件。安全服务组件 在UMHPIC内执行,由此从应用程序的角度来看是“置信”组件。安全服 务组件代表未修改的应用程序核查所有系统服务(包括线程调度、文件系 统交互和资源分配)被正确处理,从而允许非置信主机操作系统。转换组 件包括驻留在UMHPIC内的置信部分和在UMHPIC外以用户模式执行 的非置信部分两者。转换组件向包括安全服务组件的U-PAL的置信部分 提供对在UMHPIC之外执行的主机操作系统功能的访问。转换组件和安 全服务组件一起允许未修改的应用程序(比如和库OS一起打包的应用程 序)在UMHPIC内执行。

这里描述的进程、系统和设备可以用多种方式实现。下面参考以下各 附图提供示例性的实现方式。

在UMHPIC中执行未修改的应用程序的示例性环境

图1是在UMHPIC中执行应用程序的安全执行环境的示意图。系统 100的各个方面可以在能够针对未修改的应用程序实现安全执行环境的 各种适当的计算设备类型上实现。适当的计算设备可包括一个或更多个个 人计算机、服务器、服务器群、数据中心、专用计算机、平板计算机、游 戏控制台、智能电话、这些设备的组合、或能够保存和执行用于执行未修 改的应用程序的全部或部分安全执行环境的任何其它计算设备,或者是上 述这些设备的部分。

系统100包括启用安全性的处理器102,处理器102被配置成实例化 包括UMHPIC 104的安全执行环境。UMHPIC 104驻留在用户模式存储 器106或存储器108内的受保护存储区中。除了通过由启用安全性的处理 器102提供的、允许在UMHPIC 104上执行的代码将执行和数据转入和 转出UMHPIC 104的特定入口门和出口门之外,对在UMHPIC 104之外 的代码来说,保存在UMHPIC 104中的代码和数据是不可访问的。

线程经由出口门退出UMHPIC 104以返回到不受保护的存储器。出 口门可被直接调用(call),比如通过调用指令,或者可被间接调用,比如 通过处理器异常。可以用加密机制保护UMHPIC 104;例如,启用安全 性的处理器102被配置成加密对UMHPIC 104的写入操作以及解密读取 操作。此外,可用密码哈希(内联或者带外)跟踪UMHPIC 104,使得启用 安全性的处理器102能够核查存储器未被更改的读取操作。在其它实施例 中,UMHPIC 104所驻留的存储器空间可以与启用安全性的处理器102 在相同的芯片上,并且存储器空间可被隔离,使得当执行进入入口门时, 启用安全性的处理器102能够访问该存储器空间。在各个实施例中,可以 在单个芯片(比如片上系统(SOC))内实现启用安全性的处理器102,或者 可以横跨系统100的处理器和另外的芯片集实现启用安全性的处理器 102。

应用程序110在UMHPIC 104内执行。即,启用安全性的处理器102 按照下述方式执行应用程序110:该方式使得除了通过下面更详细说明的 明确定义的入口门和出口门之外,防止包括非置信代码112或主机操作系 统(OS)114的在UMHPIC 104之外执行的代码篡改或探听UMHPIC 104 内的代码或数据。例如,保存在UMHPIC 104外的线程执行代码不能访 问保存在UMHPIC 104中的数据。启用安全性的处理器102可通过各种 技术保护UMHPIC内的代码和数据免于探听或篡改,这些技术包括(但不 限于):当数据留开处理器时,对所述数据加密;对数据进行签名以检测 外部篡改;阻止来自I/O设备的直接存储器存取(DMA)操作;隔离高速缓 冲存储器;或者利用直接保存在处理器上的存储器。这提供防止非置信代 码-即在UMHPIC 104之外运行的任何代码-探听或者篡改UMHPIC 104 的内容的保护。

非置信代码112在UMHPIC之外以用户模式执行。启用安全性的处 理器102按照阻止非置信代码112访问UMHPIC 104内的代码和数据的 方式执行非置信代码112。多个UMHPIC是可能的,启用安全性的处理 器102可以在另一个UMHPIC内执行非置信代码112。即使在另一个 UMHPIC内执行,从UMHPIC 104的角度来看,非置信代码112也是“非 置信的”。在一些启用安全性的处理器中,UMHPIC可被嵌套:保护内部 UMHPIC免被外部UMHPIC中的代码和在该外部UMHPIC之外的所有 代码影响。在嵌套UMHPIC的情况下,外部UMHPIC的代码不被内部 UMHPIC信任;外部UMHPIC的代码不能篡改或探听内部UMHPIC的 代码和数据。

初始化进程-例如在同时提交的代理机构案号为MS1-5267US的相关 美国专利申请第13/323,465号中说明的初始化进程-可用于按照下述方式 初始化UMHPIC 104:该方式向客户端系统提供UMHPIC 104是用客户 端的置信代码和数据建立的而不是用非置信代码或数据建立的置信度 (confidence),从而向客户端系统提供应用程序110在系统100上正确执 行的置信度。

可在诸如“云计算”服务的托管(hosted)计算服务的情况下实例化 UMHPIC 104,其中客户端系统初始化UMHPIC 104,以便在云计算服务 上安全地执行应用程序110。因而从客户端系统的角度来看,系统100的 在UMHPIC 104和启用安全性的处理器102之外的所有部分都是“非置信 的”。本申请的实施例使应用程序110能够在UMHPIC内执行,并且仍能 够从诸如主机OS 114的“非置信的”主机操作系统访问操作系统功能。

在各个实施例中,应用程序110包括一个或更多个子组件。在通常的 实施例中,应用程序的一个或更多个子组件包括库操作系统(OS)116,库 操作系统116可以与在2010年7月13日提交的标题为“ULTRA-LOW  COST SANDBOXING FOR APPLICATION APPLIANCES”的美国专利 申请第12/834,895号中描述的隔离的OS子系统相同或相似。美国专利申 请第12/834,895号描述了下述“应用程序沙箱”:其被配置成与操作系统 的其它元件分离地在隔离的应用程序进程内运行各个操作系统元件(有时 称为“库OS”)。在美国专利申请第12/834,895号中描述的应用程序沙箱保 护主机操作系统不被应用程序篡改或探听,但是不一定保护应用程序不被 主机操作系统篡改或探听。在美国专利申请第12/834,895号中描述的隔离 的OS子系统向应用程序提供API的丰富集合,以便直接提供应用程序被 设计成使用的操作系统功能。隔离的OS子系统也利用应用编程接口(API) 的小子集以通过操作系统平台适配层(PAL)与主机操作系统通信,以便向 应用程序提供基本计算服务。主机PAL 118可以与在美国专利申请第 12/834,895号中描述的主机操作系统PAL相同或相似。在实施例中,主 机PAL 118可包括陷阱指令。在可替选实施例中,主机PAL 118包括根据 低级主机OS 114抽象(abstract)来创建高级抽象的库。主机PAL 118(如 果存在的话)和主机OS 114共同包括在主机平台130中。

库OS 116可被配置成向应用程序110提供操作系统服务的第一子集 (比如在一个非限制性示例中,是上面说明的服务的“丰富”集合)并调用主 机OS 114向应用程序110提供操作系统服务的第二子集(比如在一个非限 制性示例中,是上面说明的基本计算服务)。本公开的实施例并不局限于 执行与库OS(比如库OS 116)一起打包的应用程序,比如应用程序110。 在各个实施例中,省略了主机PAL 118和/或库OS 116。在至少一个实施 例中,省略了库OS 116,应用程序110由执行虚拟机(其进而可由“客户” 操作系统和应用程序组成)的用户模式处理器仿真器组成。

UMHPIC感知PAL(U-PAL)120部分驻留在UMHPIC 104内,并且 部分驻留在用户模式存储器106的非置信部分中。在各个实施例中,应用 程序110没有被修改用于在UMHPIC 104内执行,并且应用程序110在 其未修改的版本中被配置成通过主机平台130提供的服务接口来直接与 主机平台130对接。因此,U-PAL 120协助在UMHPIC中执行的应用程 序110和在UMHPIC之外执行的主机平台130的一个或更多个组件之间 的系统资源请求交互。而且,U-PAL 120的安全服务组件122执行一个或 更多个安全相关动作。U-PAL 120向应用程序110提供在UMHPIC 104 内仿真由主机平台130提供的接口的服务接口。U-PAL 120的驻留在 UMHPIC 104之外的部分被配置成诸如经平台接口通过主机PAL 118与 主机OS 114对接。在可替选实施例中,主机PAL 118可以是U-PAL 120 的子组件。在其它实施例,比如省略库OS 116和主机PAL 118的那些实 施例中,U-PAL 120仿真由主机OS 114提供的全部或者部分的服务接口。 例如,U-PAL 120可提供应用程序110被配置成使用的丰富API的部分或 者完整的集合。

U-PAL 120包括安全服务组件122和转换组件124。安全服务组件122 完全驻留在UMHPIC 104内,并执行安全相关动作。安全服务组件进行 安全相关动作,比如验证主机平台返回的句柄,验证存储器分配,确保线 程调度遵守预期的语义学(例如,互斥原语确实提供互斥),验证对主机平 台130进行的各种调用的结果,更新这样的验证所需要的数据结构,加密 数据,借助数字签名或消息认证码来保护数据的完整性,保护数据免于回 放攻击,安全地提供随机数。应用程序110可以是未修改的,并且不被设 计成在非置信计算系统上的UMHPIC 104内执行。因此,应用程序110 可以是在假定它所运行于其上的计算系统是可信的情况下开发的。因而, 应用程序110不一定被配置成验证主机OS 114正确地工作。不过,由于 从UMHPIC 104的角度看,计算系统100不可信,因此不认为主机平台 130正确地工作。因此,安全服务组件122执行安全相关动作,所述动作 导致按照预期的和适当的方式工作的虚拟平台。

在一个非限制示例中,安全服务组件122验证响应于应用程序110和 /或库OS 116进行的设备访问的API调用而由主机平台130返回的接口句 柄是正确的。例如,它可确定接口句柄是否是先前提供给应用程序110和 /或库OS 116的接口句柄的副本。这样的接口句柄可用于访问设备,比如 I/O设备,联网设备或者其它类型的设备。在另一个非限制性示例中,安 全服务组件122验证主机平台130返回的存储器分配是正确的。例如,它 可确保新的存储器分配不会与先前分配给应用程序110的存储器重叠。这 种重叠的存储器分配会使应用程序110意外地重写它自己的数据,从而可 能使它以不可预测的方式工作。

在另一个非限制性示例中,安全服务组件122被配置成保护待写入主 机平台130的文件系统上的文件的数据。这种保护可包括加密、添加数字 签名或消息认证码、和/或防范回放攻击的措施,如以下文献中描述的那 些措施:在2008年9月2日颁发给England等的标题为“Multiplexing a  secure counter to implement second level secure counters”的美国专利第 7,421,579号;在2006年6月20日颁发给England等的标题为“System and  method for implementing a counter”的美国专利第7,065,607号;以及在 Bryan Parno,Jacob R.Lorch,John R.Douceur,James Mickens和 Jonathan M.McCune所著的“Memoir:Practical State Continuity for  Protected Modules”(发表于Proceedings of the IEEE Symposium on  Security and Privacy,IEEE,2011年5月)中所述的。应用程序110本身可 被配置成以不受保护的形式将数据写入文件系统,因为如上所述应用程序 110可以在假定它所运行于其上的计算系统是可信的情况下开发的。因此, 当应用程序110和/或库OS 116发出将数据写入文件系统的API调用时, 安全服务组件122在将调用中的保护数据传给主机平台130之前代表应用 程序110保护数据。安全服务组件还被配置成不保护和/或核查从主机平 台读取的数据,因为应用程序110可以不被配置成从文件系统接收保护数 据并且因为它可以不核查数字签名或消息认证码并且可以不检查回放攻 击。在另一个实施例中,利用受保护的虚拟文件系统,可能利用加密、数 字签名、消息认证码和/或防止回放攻击的措施;避免向主机平台130暴 露可信的文件名和元数据,安全服务组件122可实现所有文件系统访问。

应用程序110可被配置成从主机平台130请求线程调度服务。然而, 行为失常的非置信主机平台130可能按照使应用程序110不正确执行的方 式调度线程。例如,如果应用程序110的一个线程获得锁定,则行为失常 的操作系统可允许另一个线程同时获得相同的锁定,从而使线程同时工作 并导致不可预测的结果。因此,安全服务组件122可包括用户模式线程调 度器,所述用户模式线程调度器被配置成代表应用程序110和/或库OS 116 处理线程调度。例如,如果应用程序110和库OS 116只具有一个执行线 程,则可以不需要这样的用户模式线程调度器。如果应用程序110和/或 库OS 116对与线程调度相关的主机功能的调用进行调用,则安全服务组 件122可确定自己处理线程调度调用,而不是将它传送给主机平台130。

U-PAL 120的转换组件124提供将API调用从安全服务组件122传 给主机平台130的能力。转换组件的置信部分,即置信转换组件126在 UMHPIC 104内执行并被配置成编排(marshal)与对主机平台130的调用 相关联的参数,调用由启用安全性的处理器102提供的出口门,以及将编 排的参数传出至非置信转换组件128。因此,置信转换组件126起到将调 用从安全服务组件122传递到主机平台130的作用。

置信转换组件126还通过由非置信转换组件128调用的入口门,接收 来自主机平台130的执行请求和对主机平台130进行的调用的结果。置信 转换组件126解组(unmarshal)与这些执行请求和结果相关联的各种参数, 并将它们传送给安全服务组件122以便验证。

非置信转换组件128(也是转换组件124的一部分)在UMHPIC 104之 外执行。它被配置成解组由置信转换组件126经出口门传给它的参数并代 表UMHPIC 104对主机平台130进行对应的调用(比如通过主机PAL 118, 调用对主机OS 114的操作系统调用)。非置信转换组件128从主机平台130 接收执行请求和来自系统调用的结果,编排用于执行请求和结果的对应参 数,调用入口门,并将这样编排的组件传送给置信转换组件126。因此, 非置信转换组件128起到用于来自主机平台130的调用结果和执行请求的 入口点的作用。

在通常的实施例中,非置信转换组件128在UMHPIC 104外部以用 户模式执行,并且可通过明确的出口门被置信转换组件126调用。在可替 选实施例中,非置信转换组件128作为主机平台130的子组件而执行,并 可以从在置信转换组件126内发出的系统调用或陷阱指令调用。

转换组件124被配置成调用启用安全性的处理器102的入口和出口函 数,从而允许它在UMHPIC 104和外部执行环境之间传送参数和执行, 反之亦然。如在其它地方所指出的,应用程序110可以未被修改,并且可 以不知道它在UMHPIC 104内执行,由此可以不被配置成调用启用安全 性的处理器102的出口门,以便将调用传出至主机平台130。同样地,主 机PAL 118也可以未被修改成为在UMHPIC 104内执行的应用程序提供 支持,由此可以不被配置成调用启用安全性的处理器102的入口门,以便 将执行请求和源于调用的结果传回给应用程序110。因此,转换组件124 提供代表应用程序110和主机PAL 118调用启用安全性的处理器102的入 口门和出口门的能力。安全服务组件122提供代表应用程序110处理线程 执行、保护写入非置信存储装置的应用程序数据和验证主机平台130行为 的能力,并采取对应的安全相关动作。转换组件124和安全服务组件122 一起允许应用程序110在UMHPIC 104内执行,同时仍然利用由“非置信 的”主机OS 114提供的系统资源。

提供安全执行环境的示例性计算设备

图2是可用于提供根据实施例的安全执行环境的示例性计算系统的 框图。计算系统200可被配置成能够实现安全执行环境的任何适当的计算 设备。根据各个非限制性示例,适当的计算设备可以包括个人计算机(PC)、 服务器、服务器群、数据中心、专用计算机、平板计算机、游戏控制台、 智能电话、这些设备的组合,或者能够保存和执行全部或部分的安全执行 环境的任何其它计算设备。

在一种示例性配置中,计算系统200包括一个或更多个处理器202, 和存储器204。处理器202包括与启用安全性的处理器102相同或相似的 一个或更多个启用安全性的处理器。处理器202可包括不同于启用安全性 的处理器的一个或更多个通用或专用处理器。计算系统200还可包含允许 与各个其它系统通信的通信连接206。计算系统200还可包括与处理器202 和存储器204通信耦接的一个或更多个输入设备208(比如键盘、鼠标、 笔、语音输入设备、触摸输入设备等)和一个或更多个输出设备210(比 如显示器、扬声器、打印机等)。

存储器204可以保存可加载到处理器202并在处理器202上可执行的 程序指令、以及在这些程序的执行期间生成的和/或可以和这些程序结合 使用的数据。在例示的示例中,存储器204保存操作系统212,操作系统 212提供计算系统200的基本系统功能,并且除了别的以外,提供计算系 统200的其它程序和模块的操作。操作系统212可以与主机OS 114相同 或相似。

存储器204的多个部分可被包含在UMHPIC内,如在“具体实施方 式”部分的其它地方所描述的。存储器204可被划分在与处理器在相同物 理芯片上的存储器和在其它芯片上的存储器之间。存储器204包括U-PAL 214,U-PAL 214可以与U-PAL 120相同或相似。存储器204包括应用程 序216,应用程序216可以与应用程序110相同或相似。应用程序216可 包括库OS,如在此“具体实施方式”内的其它地方所描述的,所述库OS 被配置成与主机PAL 218对接,主机PAL 218可以与主机PAL 118相同 或相似。存储器204包括非置信代码220,非置信代码220可以与非置信 代码112相同或相似。

在UMHPIC中执行应用程序的示例性操作

图3是示出向在诸如UMHPIC 104的UMHPIC中执行的应用程序 (如应用程序110)提供安全性的示例性进程300的流程图。在302,应 用程序在UMHPIC内执行,如在“具体实施方式”部分内的其它地方所 描述的。

在304,诸如U-PAL 120的U-PAL协助在UMHPIC内执行的应用程 序和在UMHPIC之外执行的主机平台之间的资源分配请求交互。所述协 助可包括将来自应用程序的请求和来自主机平台的结果传出和传入 UMHPIC,如在“具体实施方式”部分内的其它地方所描述的。所述协 助可包括调用入口门和出口门以及编排参数,如在“具体实施方式”部分 内的其它地方所描述的。所述协助可包括将系统资源请求传给主机平台以 及从主机平台接收相关的结果。

在306,U-PAL的安全服务组件(如安全服务组件122)执行安全相关 动作,作为所述协助的一部分。在各个实施例中,安全相关动作可包括: 对来自与系统服务请求交互相关联的应用程序的数据加密;解密与针对应 用程序的系统服务请求交互相关联的数据;保持簿记数据结构,以保存关 于系统服务请求交互的信息;核查作为系统服务请求交互的一部分的由主 机平台提供的资源分配结果的正确性;检查重叠的存储器分配;确定设备 句柄是否是复制的设备句柄;进行线程调度服务等等,如在“具体实施方 式”部分中的其它地方所描述的。可以在不脱离本公开的范围的情况下进 行其它安全相关动作。

图4是示出协助在UMHPIC内执行的应用程序和在UMHPIC外部 执行的主机平台(比如主机平台130)之间的资源请求交互的示例性进程 400的流程图。在401,应用程序在UMHPIC中执行。

在402,在UMHPIC中执行的应用程序发出对系统服务的调用。 UMHPIC由启用安全性的处理器(如启用安全性的处理器102)提供。启用 安全性的处理器提供用于将执行传出UMHPIC的至少一个出口门和用于 将执行传入UMHPIC中的至少一个入口门。调用可以来自包括库OS(如 库OS 116)的应用程序的任何子组件,包括库OS的应用程序和任何子组 件可以未修改而在UMHPIC内执行,并且可以不具有传递在UMHPIC 之外的执行的天生能力。

在404,U-PAL的安全服务组件(如U-PAL 120的安全服务组件122) 接收来自应用程序的调用。安全服务组件在UMHPIC内执行。

在405,U-PAL可以在调用参数被发送给主机平台之前,对调用参数 中的伪装(cloak)数据进行操作。例如,U-PAL可对将由主机平台写入永 久存储装置中的数据加密。

在406,U-PAL的置信转换组件(如U-PAL 120的置信转换组件126) 编排调用的参数。对于一些参数,比如对于标量值,编排操作可以是空操 作。对于其它参数,编排操作可以更复杂。例如,如果调用是将缓冲区写 入盘的调用,则置信转换组件可以在受保护存储区之外的不受保护的存储 器中分配临时缓冲区,将内容从受保护存储区中的缓冲区复制到不受保护 的存储器中的临时缓冲区,并更新调用参数中的缓冲区指针以指向临时缓 冲区。在另一个示例中,参数可包括含有丰富指针的数据结构,置信转换 组件可将其序列化(serialize)到临时缓冲区中。

在408,置信转换组件调用由启用安全性的处理器提供的UMHPIC 的出口门,以将执行传递给在UMHPIC之外执行的非置信转换组件(如 U-PAL 120的非置信转换组件128)的代码。

在410,非置信转换组件解组调用参数。对于一些参数,比如对于标 量值,解组操作可以是空操作。对于其它参数,解组操作可以更复杂。例 如,解组操作可以反序列化含有丰富指针的数据结构。各个实施例可以包 括非置信转换组件和置信转换组件之间的优化和/或额外协调,以改善性 能。可以使用用于编排和解组的各种优化。

在412,非置信转换组件将调用发给主机平台,如主机平台130。在 414,主机平台完成所请求的系统服务。

在416,当执行从主机平台返回非置信转换组件时,非置信组件编排 调用的结果。对于一些结果,比如对于标量值,编排操作可以是空操作。 对于其它结果,编排操作可以更复杂。例如,编排操作可以使含有丰富指 针的数据结构序列化。

在418,非置信转换组件调用由启用安全性的处理器提供的UMHPIC 的入口门,以将执行传递给在UMHPIC内执行的置信转换组件的代码。

在420,置信转换组件解组调用的结果。对于一些结果,比如对于标 量值,解组操作可以是空操作。对于其它结果,解组操作可以更复杂。例 如,如果调用是从盘读取缓冲区的调用,则置信转换组件可将数据从不受 保护的存储器中的临时缓冲区复制到受保护的存储区中的缓冲区,并且更 新结果参数中的缓冲区指针以指向最终的缓冲区。在另一个示例中,参数 可以包括含有丰富指针的数据结构,置信转换组件可以使之反序列化。

在421,安全服务组件可解密从主机平台提供的存储装置读取的数 据,还可核查数字签名或消息认证码,以核查数据的完整性。它还可以进 行被设计成防范回放攻击的核查。例如,当从硬盘上的页文件读取虚拟存 储页面时,也可对虚拟存储页面应用这些步骤。如在“具体实施方式”部 分中的其它地方所描述的,安全服务组件保护由在UMHPIC中执行的应 用程序写入主机存储系统的数据。这是因为主机平台及其存储服务(包括 主机平台提供的任何文件系统)不被在UMHPIC中执行的应用程序信任。 然而,应用程序本身可以未修改成在UMHPIC中执行,由此可被配置成 在不保护数据的情况下将数据写入文件系统中。因此,从文件系统读取的 数据由安全服务组件解密和/或核查,因为应用程序未被配置成接收保护 数据,并且可以未配备成解密和核查保护数据。在实施例中,作为一种优 化,解密步骤421可以和解组步骤420相结合。

在422,安全服务组件对照簿记数据结构核查返回的结果,以核查结 果一致并且可信。在实施例中,调用可以是对系统资源或服务的请求,安 全服务组件核查响应于该系统请求而返回的结果对所请求的资源或服务 来说有效。在各个实施例中,系统资源可以是分配的存储器资源、联网资 源、输入/输出资源、或者其它系统资源。

安全服务组件可以利用簿记数据结构核查来自主机平台的任何非置 信服务的输出。例如,簿记数据结构可以使得安全服务组件能够验证来自 主机平台的接口句柄和存储器分配是正确的。在其中结果是资源或接口句 柄的实施例中,安全服务组件核查返回的资源或接口句柄不是先前提供的 资源句柄的副本,以避免句柄回放攻击。在其中结果是分配给应用程序的 存储器的指示的实施例中,安全服务组件核查分配的存储器先前未被分配 给该应用程序(这会使应用程序重写它自己的数据,并以意料不到的方式 工作),是该应用程序能够访问的,并且不位于保留的或者无效的地址范 围之内。在通常的实施例中,簿记数据结构包括用于保存与存储器分配、 资源句柄和线程标识符中的一个或更多个相关的数据的结构。

在424,如果调用结果的对照簿记数据结构的核查确定所述结果有效 并由此是可信的,则执行进行下去。

在426,如果在422的核查的结果包括结果中的一个或更多个无效, 则安全服务组件将失败结果返回给应用程序。在一些实施例中,失败结果 是与该服务请求相关的错误码;例如,关于盘读取服务请求的公知“盘读 取错误”结果。在一些实施例中,失败可作为导致应用程序立即终止的灾 难性故障,被递送给应用程序。

在428,如果在422的核查的结果包括结果有效,则安全服务组件以 适合于服务请求的类型的方式,更新簿记数据结构。例如,如果服务请求 是分配存储器的新区域,则安全服务组件可更新存储器分配的表格;安全 服务组件还可向启用安全性的处理器发出将存储器的新区域添加到 UMHPIC的受保护存储区中的指令。

在430,安全服务组件将调用的成功结果提供给应用程序,所述应用 程序继续其执行。

图5是示出用于处理来自诸如主机平台130的主机平台的执行请求和 /或异步事件的通知的示例性进程500的流程图。在502,诸如非置信转换 组件128的非置信转换组件从诸如主机OS 114或者主机PAL 118的主机 平台接收执行请求或异步通知。各种明确定义的参数伴随请求和异步通 知。

在504,非置信转换组件编排伴随请求和通知的参数。即,非置信转 换组件经由到在UMHPIC内执行的进程的入口门来变换参数,以使参数 适合于进入UMHPIC,比如UMHPIC 104。

在506,非置信转换组件调用由启用安全性的处理器提供的入口门, 以将与请求和通知相关联的编排参数传给UMHPIC。在508,在UMHPIC 内执行的置信转换组件(如置信转换组件126)经由入口门接收编排的参 数。

在510,置信转换组件解组从非置信转换层接收的参数。解组参数涉 及变换编排的参数,从而重新产生执行请求或异步通知。在512,置信转 换组件将解组的参数传给在UMHPIC内执行的安全服务组件,比如安全 服务组件122。

在514,安全服务组件执行安全相关动作。这些动作可包括核查主机 平台提供的执行请求或异步通知是有效的。

在516,安全服务组件将执行请求或异步通知传给在UMHPIC中执 行的应用程序和/或库OS。

图3-5描绘了示出根据各个实施例的示例性进程的流程图。在各个块 中图示了这些进程的操作,并且参考这些块概述了这些进程的操作。这些 进程被图示成逻辑流程图,其每个操作可代表可用硬件、软件或它们的组 合实现的一组操作。在软件的情况下,操作代表保存在一个或更多个计算 机存储介质上的计算机可执行指令,当被一个或更多个处理器执行时,所 述计算机可执行指令使所述一个或更多个处理器能够进行所描述的操作。 通常,计算机可执行指令包括执行特定功能或者实现特定的抽象数据类型 的例程、程序、对象、模块、组件、数据结构等。描述各个操作的顺序不 意图被解释成限制性的,任意数目的所述操作可按照任何顺序组合,分离 成子操作,和/或并行地进行以实现所述进程。根据本公开的各个实施例 的进程可以包括在逻辑流程图中描绘的仅仅一些操作或者所有的操作。

计算机可读介质

取决于所使用的计算设备的配置和类型,图2中的计算系统200的存 储器204可包括易失性存储器(比如随机存取存储器(RAM))和/或非易失 性存储器(比如只读存储器(ROM)、闪速存储器等)。存储器204还可包括 可为计算系统200提供计算机可读指令、数据结构、程序模块和其它数据 的非易失性存储的附加可拆卸存储装置和/或不可拆卸的存储装置,包括 (但不限于)闪速存储器、磁存储装置、光存储装置、和/或磁带存储装置。

存储器204是计算机可读介质的示例。计算机可读介质包括至少两种 类型的计算机可读介质,即计算机存储介质和通信介质。

计算机存储介质包括在存储诸如计算机可读指令、数据结构、程序模 块或其它数据之类的信息的任何进程或技术中实现的易失性和非易失性、 可拆卸和不可拆卸介质。计算机存储介质包括(但不限于)相变存储器 (PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、 其它类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦可编程 只读存储器(EEPROM)、闪速存储器或者其它存储器技术、致密盘只读存 储器(CD-ROM)、数字通用光盘(DVD)或其它光学存储装置、磁带盒、磁 带、磁盘存储装置或其它磁存储设备、或者可用于保存信息以由计算设备 访问的任何其它非传输介质。

相反,通信介质可以将计算机可读指令、数据结构、程序模块或其它 数据包含在调制数据信号(如载波或者其它传输机构)中。如这里所定义 的,计算机存储介质不包括通信介质。

关于包括以上各实施例的实施方式,还公开下述方案:

1.一种方法,包括:

在用户模式硬件保护的隔离容器UMHPIC中执行应用程序,所述 UMHPIC由启用安全性的处理器保护,所述启用安全性的处理器至少提 供用于将执行传送到所述UMHPIC之外的出口门和用于将执行返回到所 述UMHPIC中的入口门;

通过在所述UMHPIC中执行的UMHPIC感知平台适配层,协助所 述应用程序和在所述UMHPIC外部执行的主机平台的一个或更多个组件 之间的系统服务请求交互;以及

通过所述UMHPIC感知平台适配层的安全服务组件,进行安全相关 动作,作为所述协助的一部分。

2.根据方案1所述的方法,其中,所述安全相关动作包括对来自所述 应用程序并且与所述系统服务请求交互相关联的数据进行加密。

3.根据方案1所述的方法,其中,所述安全相关动作包括保持簿记数 据结构以保存关于所述系统服务请求交互的信息。

4.根据方案1所述的方法,其中,所述安全相关动作包括对用于所述 应用程序的并且与所述系统服务请求交互相关联的数据进行解密。

5.根据方案1所述的方法,其中,所述系统服务请求交互包括资源分 配请求,以及其中,所述安全相关动作包括核查作为所述系统服务请求交 互的一部分的由所述主机平台提供的资源分配结果的正确性。

6.根据方案5所述的方法,其中,所述资源分配结果包括存储器资源 的指示,以及其中,所述核查资源分配结果的正确性包括检查重叠的存储 器分配。

7.根据方案1所述的方法,其中,所述安全相关动作包括进行线程调 度服务。

8.一种系统,包括:

一个或更多个处理器,所述一个或更多个处理器包括启用安全性的处 理器,所述启用安全性的处理器被配置成至少提供分别用于将执行传给用 户模式硬件保护的隔离容器UMHPIC和将执行从所述UMHPIC传出的 入口门和出口门;

包括所述UMHPIC的存储器;和

至少部分在所述UMHPIC之内的能够由启用安全性的处理器执行的 UMHPIC感知平台适配层,用以协助在所述UMHPIC中执行的应用程序 和在所述UMHPIC外部执行的主机平台的一个或更多个组件之间的系统 服务请求交互,所述UMHPIC感知平台适配层包括:

在所述UMHPIC内的能够由所述启用安全性的处理器执行的安 全服务组件,用以进行安全相关动作,作为所述系统服务请求交互的协助 的一部分。

9.根据方案8所述的系统,其中,所述安全相关动作包括对来自所述 应用程序并且与所述系统服务请求交互相关联的数据进行加密。

10.根据方案8所述的系统,其中,所述UMHPIC感知平台适配层被 配置成在所述UMHPIC内创建簿记数据结构,以及其中,所述安全相关 动作包括保持所述簿记数据结构以保存关于所述系统服务请求交互的信 息。

11.根据方案8所述的系统,其中,所述安全相关动作包括对用于所 述应用程序的并且与所述系统服务请求交互相关联的数据进行解密。

12.根据方案8所述的系统,其中,所述系统服务请求交互是资源分 配请求,以及其中,所述安全相关动作包括核查作为所述系统服务请求交 互的一部分的由所述主机平台提供的资源分配结果的正确性。

13.根据方案8所述的系统,其中,所述资源分配结果包括存储器资 源的指示,其中,所述核查资源分配结果的正确性包括检查重叠的存储器 分配。

14.根据方案8所述的系统,其中,所述安全相关动作包括进行线程 调度服务。

15.根据方案8所述的系统,其中,所述UMHPIC感知平台适配层还 包括转换组件,所述转换组件被配置成编排和解组与所述系统服务请求交 互相关联的参数,作为对所述系统服务请求交互的协助的一部分。

16.一种包括多个编程指令的计算机可读存储介质,所述多个编程指 令能够由计算设备的一个或更多个处理器执行,以使计算设备:

协助在用户模式硬件保护的隔离容器UMHPIC内执行的应用程序和 在所述UMHPIC之外执行的主机平台之间的系统服务请求交互,所述 UMHPIC由启用安全性的处理器提供,所述启用安全性的处理器被配置 成至少提供用于将执行传出所述UMHPIC之外的出口门和用于将执行传 入所述UMHPIC中的入口门;

代表所述应用程序进行安全相关动作,作为对所述系统服务请求交互 的协助的一部分。

17.根据方案16所述的计算机可读存储介质,其中,所述安全相关动 作包括对来自所述应用程序并且与所述系统服务请求交互相关联的数据 进行加密。

18.根据方案16所述的计算机可读存储介质,其中,所述系统服务请 求交互包括资源分配请求,以及其中,所述安全相关动作包括核查作为所 述系统服务请求交互的一部分的由所述主机平台提供的资源分配结果的 正确性。

19.根据方案18所述的计算机可读存储介质,其中,所述资源分配结 果包括存储器资源的指示,以及其中,所述核查资源分配结果的正确性包 括检查重叠的存储器分配。

20.根据方案18所述的计算机可读存储介质,其中,所述资源分配结 果包括设备句柄,以及其中,所述核查资源分配结果的正确性包括确定所 述设备句柄是否是重复的设备句柄。

结论

虽然本公开利用特定于结构特征和/或方法动作的语言,但是本发明 不局限于所描述的具体特征或动作。反而,具体特征和动作作为实现本发 明的说明性形式而被公开。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号