保护应用秘密免受操作系统攻击的制作方法

文档序号:11530701阅读:206来源:国知局
保护应用秘密免受操作系统攻击的制造方法与工艺



背景技术:

许多应用包含必须被保护以免受未经授权的访问的秘密。此外,在系统软件可以被信任的假设下,许多计算架构需要将这些秘密暴露给系统软件,诸如操作系统(os)内核。举例来说,在os内核内执行的os组件完全有权访问系统存储器,因此有权访问存储在系统存储器内的应用秘密。因此,应用秘密的安全容易受到被破解的和/或恶意的系统软件的攻击。

对应用的执行进行隔离是被利用来保护应用数据免受未经授权的访问的一种安全性实践。隔离常常包括向应用提供受严格控制的资源集合。但是隔离主要是被用来保护应用免受运行在相同系统上的不可信任的应用的侵害。此外,隔离技术通常需要使用两个操作系统或两个虚拟机,这是效率低下、资源密集的,和/或需要对应用代码做出修改。



技术实现要素:

本公开描述了用于保护应用秘密免受操作系统的未经授权的访问并且同时依赖于操作系统进行资源管理的系统和方法。这样的秘密可以包括加密密钥、口令、受保护的内容和/或应用二进制代码。此外,os资源管理可以包括资源分配、存储器管理、存储器调度、cpu调度、线程创建和/或线程同步。

举例来说,计算设备可以实施一种方法,所述方法包括管理操作系统执行环境以及管理安全执行环境,其中操作系统执行环境包括第一用户模式和第一内核模式,安全执行环境包括第二用户模式和第二内核模式。此外,计算设备可以在安全执行环境的第二用户模式内执行隔离进程,并且通过第二内核模式向隔离进程提供第一内核模式的一项或更多项系统服务。此外,计算设备可以限制或禁用第一用户模式和第一内核模式对一个或更多存储器页面的访问。在一些实例中,所述一个或更多存储器页面可以存储与隔离进程相关联的秘密。

提供本发明内容以便以简化形式介绍下面将在具体实施方式中进一步描述的概念的选择。本发明内容不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在被用来帮助确定所要求保护的主题的范围。术语“技术”例如可以在整个文档中指代通过前面描述的情境所允许的(多个)系统、(多种)方法、计算机可读指令、(多个)模块、算法、硬件逻辑和/或(多项)操作。

附图说明

将参照附图来阐述具体实施方式。在图中,附图标记的最左侧数字标识该附图标记首次出现的图。不同图中的相同附图标记的使用指示类似的或相同的项目或特征。

图1是描绘出根据各个示例的用于保护应用秘密免受操作系统攻击的环境的框图。

图2是描绘出根据各个示例的用于保护应用秘密免受操作系统攻击的环境的框图。

图3是描绘出根据各个示例的用于向隔离的用户模式进程透明地提供内核服务的环境的框图。

图4是图示出了根据一些示例的用于保护应用秘密免受操作系统攻击的过程的流程图。

图5是图示出了根据一些示例的用于保护应用秘密免受操作系统攻击的过程的流程图。

图6是图示出了根据一些示例的用于保护应用秘密免受操作系统攻击的过程的流程图。

图7是根据一些示例的计算设备的框图。

具体实施方式

下面的详细描述一般地涉及通过使用代理内核和隔离用户模式来保护应用秘密免受操作系统的侵害。在各个示例中,各种技术和架构生成与正常执行环境分开的安全执行环境。安全执行环境可以包括内核模式和用户模式。此外,正常执行环境的os内核无法访问属于执行在安全执行环境内的进程的应用数据,但是所述进程依赖于所述os内核进行资源管理。

关于执行在正常执行环境内的进程,处理器可以具有两种不同模式:用户模式和内核模式。此外,处理器的模式可以确定关于所能实施的操作的类型和范围的限制。因此,处理器可以根据当前正在执行的进程在两种模式之间进行切换。通常来说,用户应用进程运行在用户模式下,而属于os内核的进程运行在内核模式中。

此外,当用户模式应用的执行开始时,os内核创建用于所述应用的进程。所述进程可以为应用提供无法由其他用户模式应用改动的私有虚拟地址空间。此外,所述进程运行在其虚拟地址空间内,并且所述进程无法访问为os内核保留的虚拟地址。限制用户模式应用的虚拟地址空间可以防止所述应用改动并且可能损害os数据。但是当处理器处于内核模式时,其被假设正在执行受信任的应用,因此内核模式进程可以执行任何指令以及引用任何虚拟地址。因此,应用秘密可以由被破解的和/或恶意的os内核或者任何内核模式进程进行访问。为了保护应用秘密,这里所描述的示例可以禁用内核模式进程对于应用秘密的访问,同时依赖于内核模式进程进行内核服务。

安全执行环境可以包括第二内核模式和第二用户模式。代理内核可以运行在第二内核模式中,并且一个或更多应用可以作为隔离用户模式应用执行在安全执行环境的用户模式中。为了隐藏隔离用户模式应用的应用数据,代理内核可以管理对于与安全执行环境相关联的虚拟地址的访问。举例来说,代理内核可以禁用os内核对于与隔离用户模式应用相关联的虚拟地址空间的访问。此外,代理内核可以访问为所述内核保留的虚拟地址。

在一些示例中,代理内核可以实施两个或更多虚拟信任等级。对于两个虚拟信任等级,较高虚拟信任等级可以访问正常执行环境的虚拟地址空间和安全执行环境的虚拟地址空间。但是较低虚拟信任等级无法访问安全执行环境的虚拟地址空间。此外,与安全执行环境相关联的虚拟地址可以存储属于代理内核和隔离用户模式应用的数据。此外,执行在正常执行环境内的进程被指派到较低虚拟信任等级。因此,给定os内核属于较低虚拟信任等级并且无法访问属于较高虚拟信任等级的数据,因而可以保护属于隔离用户模式应用的数据免受os内核的侵害。

与隔离用户模式进程相关联的各个单独的存储器页面可以具有不同的可访问性规则。举例来说,第一存储器页面可以对于较低虚拟信任等级内的进程具有执行只读保护权利,而第二存储器页面可以对于较低虚拟信任等级内的进程具有只读保护权利。此外,与隔离用户模式进程相关联的各个单独的存储器页面可以对于较低虚拟信任等级进程和较高虚拟信任等级进程具有不同的可访问性规则。举例来说,一些隔离用户模式页面(诸如对应于进程的栈或堆的存储器页面)对于执行在较低虚拟信任等级内的进程可以是不可访问的。但是在一些示例中,存储器页面可以在执行在较低虚拟信任等级和较高虚拟信任等级内的进程之间共享。因此,针对执行在较低虚拟信任等级内的进程对于共享存储器页面的访问保护可以是只读可执行或只读不可执行。

例如,在windows环境中,诸如ntdll和/或kernel32之类的共享库可以是较低虚拟信任等级内的进程只读可执行的。把共享存储器页面的访问保护设定成只读防止执行在较低虚拟信任等级内的进程恶意修改可由较高虚拟信任等级内的进程使用的存储器页面。访问保护可以包括执行、执行读、执行读写、执行写时拷贝、执行读写、无访问、只读、读写、写时拷贝等等。

如这里所使用的“执行”允许对于页面的执行访问;“执行读”允许对于页面的执行或只读访问;“执行读写”允许对于页面的执行、只读或者读/写访问;“执行写时拷贝”允许对于文件映射对象的被映射视图的执行、只读或者写时拷贝访问;“无访问”禁用对于页面的所有访问;“只读”允许对于页面的只读访问;“读写”允许对于页面的只读或读/写访问;“写时拷贝”允许对于文件映射对象的被映射视图的只读或写时拷贝访问。

在一些示例中,内核服务可以在较高虚拟信任模式内执行。在执行内核服务之前,代理内核可以实施内核服务的代码完整性检查。此外,代理内核可以在执行期间把对应于内核服务的代码的访问保护设定成只读。

此外,代理内核可以充当隔离用户模式应用与用于提供os服务的os内核之间的透明接口。在一些示例中,除了诸如应用配置管理之类的api(应用程序接口)、gui(图形用户界面)服务以及用户界面组件之外,执行在正常执行环境的内核模式中的os服务还可以提供基本计算原语,诸如线程、虚拟存储器以及文件访问。举例来说,os内核可以确定何时把指派给隔离用户模式应用进程的虚拟存储器从物理存储器移除并且分页到次要存储装置。此外,os内核可以实施对于存储和取回与执行在安全执行环境内的进程相关联的分页数据所需要的所有i/o。

在一些示例中,隔离用户模式应用可以通过系统调用来请求os内核服务。结果是,处理器可以陷入到安全执行环境的内核模式中。一旦发生去到代理内核的切换,代理内核就可以满足所述请求或者把系统调用调遣到os内核。

在一些示例中,代理内核可以提供内核服务。举例来说,代理内核可以提供os内核服务的一个子集。因此,如果系统调用对应于代理内核所提供的服务,则代理内核可以使用包含在代理内核中的逻辑来满足所述请求。

举例来说,代理内核可以为隔离用户模式应用供应密码服务。代理内核可以满足诸如来自隔离用户模式应用的针对密码服务的请求。在安全执行环境内提供密码服务保护隔离用户模式应用免受这样的风险,即对于可能涉及隔离用户模式应用秘密的密码服务依赖不可信任的内核。

在一些示例中,代理内核不能包括调度功能。举例来说,os内核可以确定何时把执行在安全执行环境中的线程调度到cpu核心上。作为另一个示例,os内核可以切换到执行在安全执行环境中的进程的情境中。因此,执行在安全执行环境内的线程和进程只能回调到正常执行环境中。

如果代理内核不提供与系统调用相关联的os内核服务,则代理内核可以把系统调用调遣到os内核。代理内核可以通过系统缓冲器经由封送(marshaling)向os内核安全地提供与系统调用有关的应用数据。举例来说,代理内核可以使用拷贝复原技术模拟引用调用(callbyreference)。

封送可以包括以下过程:把对象的存储器表示转换为适合于存储或传送的数据格式,和/或以适当的数据格式传送或存储所述对象。封送还可以包括在各个进程和/或程序之间传输对象和/或数据的过程。一旦所封送的对象被发送到存储装置或者被传送,则所封送对象可以被解封成原始对象。

在一些其他示例中,代理内核可以把应用数据拷贝到虚拟地址,并且允许内核访问所述虚拟地址。此外,代理内核可以把应用数据放置在内核已经分配给应用的存储器位置处。因此,代理内核可以相对于内核透明地进行操作。

代理内核可以保持与安全执行环境相关联的存储器页面的散列以便确保数据完整性。在一些示例中,代理内核可以在把存储器页面的内容读取到存储器中之前使用存储器页面的散列对存储器页面进行验证。附加地并且可替换地,与安全执行环境相关联的存储器页面可以在被写入到次要存储装置(比如硬盘)之前被加密,并且在随后可用于安全执行环境时被解密。此外,一旦页面被代理内核释放,就可以在改变其用途之前将其归零。

在一些示例中,管理程序可以管理正常执行环境和安全执行环境。此外,管理程序可以提供包括正常执行环境和安全执行环境的虚拟分区。此外,正常执行环境和安全执行环境可以利用虚拟分区的访客物理地址空间。在一些示例中,管理程序可以包括:microsofthyper-vtm、citrixxenservertm、vmwareesxtm等等。此外,一个或更多访客os可以在由管理程序提供的虚拟分区内执行。访客os可以包括microsoftwindowstmos、linux/bsd/unixos、apple®osxtm等等。

将参照图1-7进一步描述各个示例。

示例环境

图1描绘出包括根据各个示例的用于保护应用秘密免受操作系统的未经授权的访问的计算设备100的环境。在一些示例中,计算设备100的各个设备和/或组件包括可以通过一个或更多共享系统缓冲器106彼此通信的os执行环境102和安全执行环境104。

os执行环境102可以提供用于代码执行的框架并且为应用提供共同的服务。在一些示例中,os执行环境102可以包括用户模式108和内核模式110。用户应用(诸如可以是非特权进程的进程a112)可以在用户模式108中执行,而诸如内核服务114之类的os组件可以在内核模式110中执行。

进程a112可以通过系统调用请求一项或更多项内核服务114。在一些示例中,系统调用可以触发特权指令的实施,诸如进程创建或者输入/输出操作。此外,内核服务114可以管理与进程a112的执行有关的进程a内核数据116。在一些示例中,进程内核数据(诸如进程a内核数据116)可以包括与存储器管理有关的数据(例如虚拟地址空间、进程句柄表等等)。

安全执行环境104可以提供保护用户应用秘密免受内核服务114(其可能是不可信任的内核服务)的侵害的执行环境。安全执行环境104可以包括用户模式118和内核模式120。在一些示例中,代理内核122可以执行在安全执行环境104的内核模式120中。此外,进程b124可以作为隔离用户模式应用执行在安全执行环境104的用户模式118中。

当在安全执行环境104内执行时,进程b124仍然可以从os执行环境102的内核服务114请求服务。举例来说,当进程b124执行时,内核服务114可以为进程b124提供私有虚拟地址空间(也就是用户空间)。但是代理内核122可以确定对于进程b124的用户空间的存储器访问保护。举例来说,代理内核122可以禁用内核服务114对于进程b124的用户空间的访问。

在一些示例中,代理内核122可以为进程b124提供os内核服务。举例来说,代理内核122可以通过依赖于其自身的内核逻辑来满足由进程b124发出的内核服务请求。所述内核逻辑可以包括内核服务114的系统调用api的一个子集。在一些示例中,代理内核124可以为执行在安全执行环境104内的进程提供密码服务。在安全执行环境104内实施密码服务可以保护机密密码信息免于被暴露给潜在地不可信任的内核服务114。

代理内核122可以向os执行环境102的内核服务114发送内核服务请求。举例来说,进程b124可以通过系统调用请求内核服务,并且代理内核122可以把与进程b124的系统调用相关联的参数封送到内核服务114。在一些实例中,所封送的参数的至少一部分可以作为内核数据128被存储在正常执行环境102内。

在一些实例中,代理内核122可以使用共享系统缓冲器106将参数封送到内核服务114。在封送参数之前,代理内核可以确定将把与进程b124相关联的哪些数据提供给内核服务114。举例来说,代理内核122可以确保被映射到内核数据(诸如安全执行环境104的进程b内核数据126)的一个或更多存储器页面对于内核服务114是不可访问的,同时使得被映射到内核数据(诸如os执行环境102的进程b内核数据128)的一个或更多存储器页面是可访问的。

除了控制对于执行在安全执行环境的用户模式118内的进程的存储器访问保护之外,代理内核122还可以确定对于与安全执行环境104的内核模式120相关联的虚拟地址空间的存储器访问保护。举例来说,内核模式120可以包括与进程b124的执行有关的内核数据126。此外,代理内核122可以控制执行在os执行环境102内的进程对于内核数据126的访问。举例来说,代理内核可以禁用内核服务114对内核数据126的访问。此外,代理内核122可以防止与其进程相关联的虚拟存储器在没有首先被加密的情况下被分页。

图2描绘出包括根据各个示例的用于保护应用秘密免受操作系统的未经授权的访问的计算设备200的环境。如图2中所示,计算设备200可以包括管理程序202以及一个或更多虚拟分区,诸如虚拟分区204-1、204-2等等。

管理程序202可以包括“裸机(baremetal)”管理程序,其运行在计算设备200上而没有介入的os,并且实际上包括其自身的最小os。在一些示例中,管理程序202可以管理虚拟分区204。此外,各个单独的虚拟分区204可以包括由管理程序202创建的虚拟机(vm)。此外,各个单独的虚拟分区204可以包括访客os内核,诸如访客os内核206-1、206-2等等。在一些示例中,访客os内核206可以包括microsoftwindowstmos、linux/bsd/unixos、apple®os等等的内核。

在图2的所图示出的示例中,虚拟分区204-1可以包括较低虚拟信任等级208(诸如os执行环境102)、较高虚拟信任等级210(诸如安全执行环境104)以及系统缓冲器212。在一些示例中,系统缓冲器212可以被用来在较低虚拟信任等级208与较高虚拟信任等级210之间进行通信。此外,对于较低虚拟信任等级208与较高虚拟信任等级210之间的通信可以使用一种或更多种进程间通信方法,诸如消息传递、同步、共享存储器页面以及远程规程调用(rpc)。

较低虚拟信任等级208可以包括访客os内核206-1(诸如内核服务114)、虚拟进程a214以及与进程a214相关联的内核数据216。此外,较高虚拟信任等级210可以包括代理内核218(诸如代理内核122)、虚拟进程b220以及与虚拟进程b220相关联的内核数据222。

管理程序202可以为各个单独的虚拟分区204提供虚拟操作平台(例如虚拟机(vm))。所述虚拟操作平台可以包括对于各个单独的虚拟分区204而言是私有的虚拟存储器地址区段以及处理器的虚拟视图。举例来说,管理程序202可以为访客os内核206-1提供访客物理地址。此外,执行在虚拟分区204-1内的虚拟进程214和220可以通过由访客os内核206-1控制的页表访问访客物理地址。页表通常记录其所涉及的存储器页面的属性(例如存储器访问保护),其中包括规定页面内容可以被访问的程度。除了管理程序202所许可的之外,虚拟容器204-1之外的资源和活动对于虚拟容器204-1内的虚拟进程214和220是不可见的。

此外,管理程序202可以包括页面和地址转换表224(例如二级地址转换、扩展页表等等),其跟踪哪一个虚拟容器206被许可使用计算设备201内的存储器和/或存储装置的每一个部分。举例来说,页面和地址转换表224可以把虚拟容器204的虚拟存储器地址区段中的访客物理地址映射到计算设备201的系统物理地址。

较高虚拟信任等级210的代理内核218可以保护属于执行在较高虚拟信任等级210内的进程的数据。举例来说,较高虚拟信任等级210可以防止访客os内核206-1访问与虚拟进程b相关联的内核数据222。在一些示例中,管理程序的页面和地址转换表224可以被扩展,以便许可代理内核218控制较低虚拟信任等级208对于正由较高虚拟信任等级210使用的虚拟地址的访问。附加地或可替换地,代理内核218可以改动os内核206-1的一个或更多页表,以便许可代理内核218控制较低虚拟信任等级208对于正由较高虚拟信任等级210使用的系统物理地址的访问。

表内的每一项映射可以被称作一个页表条目。页表条目可以包括多个属性字段集合,诸如用于较低虚拟信任等级208的属性集合、用于较高虚拟信任等级210的属性集合以及其他属性集合。举例来说,映射到内核数据222的页面条目可以具有对于较低虚拟信任等级208被配置成“无访问”的属性集合。

管理程序202可以包括输入输出存储器管理单元(iommu)226。iommu226可以把设备可见的虚拟地址映射到系统物理地址,从而为虚拟分区204提供对于计算设备201的硬件的贯通(passthrough)访问。在一些示例中,iommu226可以免受直接存储器访问攻击。

图3描绘出根据各个示例的用于向隔离用户模式进程透明地提供内核服务的架构300。在一些示例中,环境300的各个设备和/或组件可以包括管理程序302(诸如管理程序202)、内核服务304(诸如内核服务114和/或访客os内核206-1)、代理内核306(诸如代理内核120和/或218)以及一个或更多系统缓冲器308(诸如系统缓冲器106和/或212)。如图3中所示,管理程序302可以管理包括内核服务302和代理内核306的虚拟分区310。在一些示例中,内核服务304和代理内核306可以通过系统缓冲器308进行通信。

内核服务304可以包括系统服务表312、存储器管理器314、调度器316和跨模式调遣器318。系统服务表312可以包括指向内核服务304的功能的功能指针。此外,系统服务表312可以由内核服务304在页表层级进行保护,因此只有内核模式服务302可以从系统服务表310进行读取和写入。

存储器管理器314可以管理由管理程序302提供给内核服务304的访客物理地址。在某些情况下,存储器管理器314可以包括在虚拟分区310内实施虚拟寻址方案。此外,存储器管理器314可以向执行在虚拟分区310内的进程分配用户空间。此外,存储器管理器314可以保留和提交存储器,创建防护页面、管理堆以及应用文件映射。举例来说,存储器管理器314可以确定何时把指派给执行在虚拟分区310内的进程的虚拟存储器从物理存储器移除以及分页到次要存储装置。

调度器316可以确定何时为执行在虚拟分区310内的线程和进程提供对于虚拟资源的访问。举例来说,调度器316可以确定何时把执行在虚拟分区310内的线程调度到虚拟cpu核心上。作为另一个示例,调度器316可以在执行在虚拟分区310内的各个进程之间实施情境切换。

跨模式调遣器318可以管理内核服务304与代理内核306之间的通信。此外,跨模式调遣器318可以确定是否要把接收自代理内核306的通信路由到系统服务表312、存储器管理器314或调度器316中的至少一个。此外,跨模式调遣器318可以通过系统缓冲器308发送和接收通信。

代理内核306可以包括陷阱代码(trapcode)320、页表管理器322、系统调用处理程序324、中断处理程序326、异常处理程序328、跨模式调遣器330、内核逻辑332以及密码服务模块334。陷阱代码320可以从虚拟分区310内的另一模式切换到代理内核306。取决于中断或陷阱的类型,陷阱代码320可以把中断或陷阱传递到页表管理器322、系统调用处理程序324、中断处理程序326或异常处理程序328。中断处理程序326可以处置接收自正在隔离用户模式(诸如用户模式118,图3中未示出)中执行的进程的安全中断。在一些示例中,内核服务304无法掩蔽或者生成针对代理内核的中断。异常处理程序328可以处置接收自正在隔离用户模式中执行的进程的异常。在一些示例中,异常处理程序328可以与内核服务304所提供的异常处理程序相同。跨模式调遣器330可以管理内核服务304与代理内核306之间的通信。

系统调用处理程序324可以处置接收自正在隔离用户模式中执行的进程的系统调用。此外,系统调用处理程序324可以确定内核逻辑332可以满足与系统调用相关联的服务请求。此外,系统调用处理程序324可以把服务请求提供到内核逻辑332。内核逻辑332可以进一步满足请求,并且处理器可以切换回到正在隔离用户模式中执行的进程。

此外,系统调用处理程序324可以确定是否应当由内核服务304满足服务请求。如果系统调用处理程序确定应当由内核服务304满足服务请求,则系统调用处理程序324可以把与系统调用相关联的参数提供到封送器/解封器(marshaler/unmarshaler)336。此外,封送器/解封器336可以对系统调用和系统调用参数进行格式化以供内核服务304使用。在一些示例中,封送器/解封器336还可以保护与生成系统调用的隔离用户模式进程相关联的数据。此外,如果内核服务304在服务请求的满足期间返回数据,则封送器/解封器336可以对所返回的数据进行格式化以供代理内核306使用。

页表管理器322可以充当用于与代理内核306相关联的隔离用户模式的存储器管理单元。在一些示例中,代理内核306可以保持由内核服务304保持的页表的影子表338。此外,页表管理器322可以监测虚拟分区310内的系统调用,以便确保影子表与内核服务304所保持的页表同步。举例来说,影响页表的系统调用可能需要由内核服务304和代理内核306进行处置,以便允许更新页表及其影子表二者。此外,在一些示例中,在内核服务304内模仿发生在代理内核306内的页面故障,以便确保由内核服务304保持的页表反映出代理内核306内的操作。

此外,页表管理器322可以控制访客物理地址存储器页面的存储器访问属性。举例来说,页表管理器322可以保持一个表,该表标识出一个或更多访客物理地址页面以及内核服务304和代理内核306对于各个单独的访客物理地址页面的存储器访问属性。举例来说,所述表可以指示,内核服务304无权访问某一访客物理地址页面,而代理内核306则对于所述访客物理地址页面具有执行只读访问权利。

在一些示例中,页表管理器322可以处置在与代理内核306相关联的隔离用户模式内的进程的执行期间发生的页面故障。举例来说,当与隔离用户模式进程相关联的存储器页面被提交时,代理内核306可以释放所述存储器页面,并且允许内核服务304访问与所述存储器页面相关联的虚拟地址。在某些情况下,所释放的存储器在其可以由另一进程访问之前可以被归零。

此外,页表管理器322可以通过管理加密和密码验证来保护与代理内核306相关联的存储器页面。举例来说,页表管理器322可以在页面故障处置期间针对散列验证存储器页面。此外,页表管理器322可以保持经过修改的存储器页面的散列,并且在存储器页面提交期间验证存储器页面。

举例来说,如果某一存储器页面仅对于代理内核306是可访问的,则代理内核306可以在内核服务304把所述存储器页面分页到次要存储装置之前对所述存储器页面进行加密。响应于页面故障,页表管理器可以禁用内核服务304对于存储器页面的访问,并且随后指示对存储器页面进行解密。在存储器页面被解密之后,代理内核306可以使用先前计算的密码散列来验证存储器页面的完整性。如果存储器页面可以由内核服务304访问但是不可由内核服务304修改(例如读取访问和/或执行访问),则页表管理器322可以在内核服务304的访问期间通过以下操作确保存储器页面的完整性:在向内核服务304提供访问之前计算密码散列,并且在代理内核306后来访问存储器页面时使用所述密码散列对存储器页面进行验证。

在一些示例中,所述加密、散列化和验证可以由密码服务模块334实施。在一些示例中,密码服务模块334可以利用受信任平台模块(tpm)340安全地实施存储器页面的加密、散列化和验证。此外,密码服务模块334可以包括多个加密密钥。举例来说,密码服务模块334可以包括用于各个单独的隔离用户模式应用的根加密密钥。在一些示例中,所述根加密密钥可以在隔离用户模式进程的创建期间被提供给代理内核306。此外,密码服务模块334可以将一个或更多加密密钥用于安全的通信和安全的存储。此外,在一些示例中,隔离用户模式进程不能有权访问密码服务模块334的加密密钥。举例来说,与隔离用户模式应用相比,代理内核306可以具有更高程度的存储器访问许可。

图4是根据一些示例的建立用于隔离用户模式应用的受保护地址空间的流程图400。举例来说,流程图400可以在隔离用户模式进程的创建期间被使用。

在402处,向内核发送创建隔离用户模式进程的请求,其中包括标识出一个或更多秘密的数据。例如在windows环境中,可以调用ntcreateuserprocess。作为另一个示例,在linux环境中,可以调用fork()。此外,所述请求可以包括标识根加密密钥、存储加密密钥、通信加密密钥、页面散列和/或用以在进程内运行的二进制代码的数据。举例来说,所述请求可以包括标识已加密页面散列以及被用来生成页面散列的已加密密钥的数据。

在404处,内核可以为进程分配私有用户空间。例如,在windowstm环境或apple®ios环境中,内核可以为进程分配私有虚拟地址空间。

在406处,代理内核可以禁用内核对于进程的私有用户空间的访问。举例来说,代理内核可以改动被映射到用户空间的页面条目的属性集合。举例来说,代理内核可以把所述属性集合配置成只读。

在408处,代理内核可以对与所述请求相关联的一个或更多秘密进行解密和/或验证。举例来说,代理内核可以对在所述请求中标识出的已加密密钥进行解密,并且使用所述密钥对在所述请求中标识出的页面散列进行验证。

图5是根据一些示例的经由代理内核向隔离用户模式进程透明地提供内核服务的流程图500。举例来说,流程图500可以被用来服务于来自隔离用户模式进程的系统调用。

在502处,代理内核可以从隔离用户模式进程接收针对内核服务的系统调用。举例来说,代理内核可以从隔离用户模式应用的进程接收针对设备的请求。在一些示例中,所述系统调用可以陷入到代理内核的安全执行环境中。此外,在一些示例中,代理内核可以确定其本地内核逻辑是否可以满足服务请求。

在504处,代理内核可以通过系统缓冲器把系统调用的一个或更多参数封送到内核服务。例如在windows环境中,代理内核可以向内核发送包括针对设备的请求的消息调用。此外,可以把与设备请求相关联的一项或更多项属性转变到在内核的正常执行环境内的适当格式。此外,可以通过系统缓冲器把经过转变的属性提供给内核。

在某些情况下,代理内核可以在确定服务请求无法由代理内核的内核逻辑满足之后把系统调用和系统调用的参数传输到内核服务。

在506处,代理内核可以通过系统缓冲器从内核接收服务请求的一项或更多项结果。例如在windows环境中,代理内核可以接收与服务请求相关联的返回数值。在某些情况下,。

在508处,代理内核可以将服务请求的一项或更多项结果解封。在510处,代理内核可以把已解封的结果发送到隔离用户模式进程。举例来说,如果设备请求包括读取,则已解封的结果可以包含从被请求的设备读取的数据。

图6是用于安全地管理被分配给隔离用户模式进程的虚拟存储器的过程的流程图600。举例来说,在向次要存储装置和从次要存储装置分页与隔离用户模式进程相关联的数据时,可以使用在流程图600中图示出的过程。

在602处,内核服务模块可以标识与隔离用户模式进程相关联的存储器页面以便写入到次要存储装置。举例来说,存储器管理器314(图6中未示出)可以标识出某一存储器页面应当被写入到硬盘,这至少部分地基于所述存储器管理器把所述物理存储器页面重新应用到另一种用途。

在604处,代理内核可以计算存储器页面的散列。举例来说,页表管理器322(图6中未示出)可以指示密码服务模块334(图6中未示出)计算存储器页面的第一密码散列。

在606处,代理内核可以对存储器页面进行加密,并且为一项或更多项内核服务提供对于已加密存储器页面的访问。举例来说,密码服务模块334可以对存储器页面进行加密,并且页表管理器322可以为一项或更多项内核服务提供只读访问。因此,一项或更多项内核服务可以对存储器页面进行管理,但是没有权利访问其内容。

在608处,一项或更多项内核服务可以把已加密存储器页面存储到次要存储装置。举例来说,存储器管理器314(图6中未示出)可以把已加密存储器页面存储到硬盘上的页面文件。

在610处,一项或更多项内核服务可以把已加密存储器页面从次要存储装置加载到物理存储器中。举例来说,存储器管理器314可以至少部分地基于页面故障的发生把已加密存储器页面从硬盘加载到物理存储器中。

在612处,代理内核可以禁用一项或更多项内核服务对于存储器页面的访问,并且对已加密存储器页面进行解密。举例来说,页表管理器322可以禁用一项或更多项内核服务304(图6中未示出)对于已加密存储器页面的访问,并且随后密码服务模块334可以对已加密存储器页面进行解密。

在614处,代理内核可以把存储器页面与密码散列进行比较。举例来说,密码服务模块334可以计算存储器页面的第二散列,并且页表管理器322可以将第一和第二密码散列进行比较,以便验证存储器页面的完整性。

这里所描述和/或在附图中描绘的流程图中的任何例程描述、元件或块应当被理解成潜在地表示包括用于实施所述例程中的特定逻辑功能或元件的一条或更多条可执行指令的代码模块、代码段或代码部分。替换的实施方式被包括在这里所描述的示例的范围内,其中如本领域技术人员将理解的,取决于所涉及的功能,各个元件或功能可以被删除或者按照与所示出或讨论的顺序不同的顺序来执行,包括基本上同步地执行或者按照相反的顺序执行。

图7图示出了可以被用来实施这里所描述的模块和功能的计算设备700的示例配置。举例来说,计算设备100和/或计算设备200可以包括类似于计算设备700的架构。

计算设备700可以包括能够诸如通过系统总线714或其他适当的连接彼此通信的至少一个处理器702、存储器704、(多个)通信接口706、显示设备708、其他输入/输出(i/o)设备710以及一个或更多大容量存储设备712。

处理器702可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器702可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。除了其他能力之外,处理器702可以被配置成获取并且执行存储在存储器704、大容量存储设备712或者其他计算机可读介质中的计算机可读指令。

存储器704和大容量存储设备712是用于存储指令的计算机存储介质的示例,所述指令由处理器702执行来实施前面所描述的各种功能。举例来说,存储器704一般可以包括易失性存储器和非易失性存储器二者(例如ram、rom等等)。此外,大容量存储设备712一般可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如cd、dvd)、存储阵列、网络附属存储、存储区域网等等。存储器704和大容量存储设备712在这里都可以被统称为存储器或计算机存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非瞬时性介质,所述计算机程序代码可以由处理器702作为被配置成实施在这里的示例中所描述的操作和功能的特定机器来执行。

虽然在图7中被图示成存储在计算设备700的存储器704中,但是模块716、718和720或者其部分可以使用可由计算设备700访问的任何形式的计算机可读介质来实施。如这里所使用的,“计算机可读介质”至少包括两种类型的计算机可读介质,也就是计算机存储介质和通信介质。

计算机存储介质包括通过用于存储信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除介质,所述信息诸如是计算机可读指令、数据结构、程序模块或者其他数据。计算机存储介质包括而不限于ram、rom、eeprom、闪存或其他存储器技术,cd-rom、数字通用盘(dvd)、或其他光学存储装置,磁盒、磁带、磁盘存储装置或其他磁性存储设备,或者可以被用来存储信息以供计算设备访问的任何其他非传送介质。

与此相对,通信介质可以在诸如载波或其他传送机制之类的已调数据信号中具体实现计算机可读指令、数据结构、程序模块或其他数据。这里所定义的计算机存储介质不包括通信介质。

计算设备700还可以包括一个或更多通信接口706,以用于诸如通过网络、直接连接等等与其他设备交换数据,正如前面所讨论的那样。通信接口706可以促进在多种网络和协议类型内的通信,其中包括有线网络(例如lan、电缆等等)和无线网络(例如wlan、蜂窝、卫星等等)、因特网等等。通信接口706还可以提供与诸如存储阵列、网络附属存储、存储区域网等等中的外部存储装置(未示出)的通信。

在一些示例中,可以包括诸如监视器之类的显示设备708,以用于向用户显示信息和图像。其他i/o设备710可以是接收来自用户的各种输入并且向用户提供各种输出的设备,并且可以包括触摸输入设备、手势输入设备、摄影机、键盘、遥控器、鼠标、打印机、音频输入/输出设备等等。

存储器704可以包括用于根据这里所描述的示例基于分块方案(blockingscheme)链接各条记录的模块和组件。存储器704可以包括用于实施各种功能的多个模块,诸如管理程序模块716(诸如管理程序202)、一个或更多虚拟分区模块(诸如718-1和718-2)。管理程序模块716可以被用来管理一个或更多虚拟分区,诸如虚拟分区718-1或718-2。此外,虚拟分区模块718-1可以包括较低虚拟信任等级720(诸如较低虚拟信任等级208)和较高虚拟信任等级722(诸如较高虚拟信任等级210)。此外,虚拟分区模块718-2可以包括访客os724(诸如访客os206-2)。存储器704还可以包括实施其他特征的其他模块726以及包括中间计算等等的其他数据728。

示例条款

a:一种方法,所述方法包括:管理包括第一用户模式和第一内核模式的操作系统执行环境;管理包括第二用户模式和第二内核模式的安全执行环境;在安全执行环境的第二用户模式内执行隔离进程;通过第二内核模式向隔离进程提供第一内核模式的一项或更多项系统服务;以及通过禁用第一用户模式和第一内核模式对于一个或更多存储器页面的访问,保护隔离进程免受来自系统服务的攻击。

b:如段落a所述的方法,其中,禁用访问包括禁用对于存储器页面的读取、写入或执行访问中的至少一个。

c:如段落a或b所述的方法,其中,禁用访问包括,禁用写入访问而许可读取或执行访问中的至少一个。

d:如段落a-c当中的任一段落所述的方法,其中,操作系统执行环境和安全执行环境由管理程序管理。

e:如段落a-d当中的任一段落所述的方法,所述方法还包括:由第一内核模式的一项或更多项服务把所述一个或更多存储器页面分配到隔离进程;对所述一个或更多存储器页面进行加密以形成一个或更多已加密存储器页面;以及由第一内核模式的一项或更多项服务把所述一个或更多已加密存储器页面存储到硬盘。

f:如段落a-e当中的任一段落所述的方法,所述方法还包括:由第一内核模式的一项或更多项服务至少部分地基于页面故障把所述一个或更多已加密存储器页面加载到物理存储器中;对所述一个或更多已加密存储器页面进行解密以形成一个或更多已解密存储器页面;以及验证所述一个或更多已解密存储器页面的完整性。

g:如段落a-f当中的任一段落所述的方法,所述方法还包括:通过第二内核模式的代理服务从隔离进程向第一内核模式的一项或更多项系统服务中的一项系统服务发送系统调用;确定将要提供到第一内核模式的一项或更多项服务的系统调用参数;以及通过系统缓冲器把系统调用参数封送到第一内核模式的一项或更多项服务。

h:如段落a-g当中的任一段落所述的方法,所述方法还包括:由第一内核模式的一项或更多项系统服务通过第二内核模式的代理服务把与系统调用的执行相关联的数据透明地传输到隔离进程。

i:一种在其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于配置计算机实施如段落a-h当中的任一段落所述的方法。

j:一种设备,所述设备包括:在其上具有用于配置计算机实施如段落a-h当中的任一段落所述的方法的计算机可执行指令的计算机可读介质,适于执行所述指令以便实施如段落a-h当中的任一段落所述的方法的处理单元。

k:一种包括用于实施如段落a-h当中的任一段落所述的方法的构件的系统。

l:一种系统,所述系统包括:一个或更多处理器;存储器;被映射到存储器的一个或更多地址的地址空间;与针对地址空间的第一访问权利相关联的第一信任等级;与针对地址空间的第二访问权利相关联的第二信任等级,其中第二访问权利与第一访问权利相比提供对于地址空间的更高程度的访问;根据第一访问策略在第一信任等级中执行在所述一个或更多处理器上的内核;根据第二访问策略在第二信任等级中执行在所述一个或更多处理器上的代理内核;以及在第二信任等级中执行在所述一个或更多处理器上的一个或更多应用进程,其中代理内核在应用进程与内核之间透明地传输服务请求而不会把所述一个或更多应用进程的秘密暴露给内核。

m:如段落l所述的系统,所述系统还包括:根据第一访问策略对于内核而言可访问的地址空间内的第一组地址以及地址空间内的第二组地址,其中内核根据第一策略对于第二组地址具有有限的访问,并且代理内核根据第二访问策略对于第二组地址具有完全的访问。

n:如段落l或m所述的系统,所述系统还包括:根据第二访问策略在第二信任等级中执行的页表管理器模块,所述模块被编程来:保持内核的页表的影子表;以及确定与被映射到第二组地址的访客物理地址页面相关联的页面故障的发生。

o:如段落l-n当中的任一段落所述的系统,其中,第一访问策略包括以下各项当中的至少一项:禁用对于第二组地址空间的读取、写入或执行访问中的至少一个;或者禁用写入访问而许可对于地址空间的读取和执行访问中的至少一个。

p:如段落l-o当中的任一段落所述的系统,所述系统还包括:被编程来部分地基于密码散列对访客物理地址页面进行验证的密码模块。

q:如段落l-p当中的任一段落所述的系统,其中,所述地址空间与由管理程序提供的访客物理地址相关联,并且第一信任等级和第二信任等级表示由管理程序提供的虚拟分区的虚拟信任等级。

r:如段落l-q当中的任一段落所述的系统,所述系统还包括用于在应用进程与内核之间透明地传输服务请求的系统缓冲器。

s:一种在其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令在执行时配置计算机实施包括以下项的动作:生成为用户应用创建隔离用户模式进程的系统调用;由内核为隔离用户模式进程分配虚拟地址空间;以及禁用内核对虚拟地址空间的访问,其中通过由代理内核修改被映射到虚拟地址空间的一个或更多访客物理地址存储器页面的存储器访问属性来禁用对于虚拟地址空间的访问。

t:如段落s所述的计算机可读介质,所述计算机可读介质还包括:生成所述一个或更多访客物理地址存储器页面的第一密码散列;至少部分地基于页面故障的发生而生成所述一个或更多访客物理地址存储器页面的第二密码散列;以及至少部分地基于第一密码散列与第二密码散列的比较对所述一个或更多存储器页面进行验证。

u:如段落s-t当中的任一段落所述的计算机可读介质,其中,所述系统调用表示第一系统调用,并且所述动作还包括:由隔离用户模式进程生成请求由内核提供的一项或更多项内核服务的第二系统调用;把与第二系统调用相关联的参数封送到内核;以及从内核向隔离用户模式进程提供一项或更多项服务。

v:如段落s-u当中的任一段落所述的计算机可读介质,其中,所述动作还包括由内核切换到隔离用户模式进程的情境。

w:如段落s-v当中的任一段落所述的计算机可读介质,其中,禁用访问包括以下各项当中的至少一项:禁用对于所述一个或更多存储器页面的读取、写入或执行访问中的至少一个;或者禁用写入访问而许可对于所述一个或更多存储器页面的读取和执行访问中的至少一个。

结论

虽然已经通过特定于结构特征和/或方法动作的语言描述了各个技术,但是应当理解的是,所附权利要求书不一定受限于所描述的特征或动作。相反,所述特征和动作是作为这样的技术的示例实施方式来描述的。

在各个单独的块中图示出了示例过程的操作并且参照这些块对其进行了概括。所述过程被描述成块的逻辑流,其中的每一个块可以表示能够通过硬件、软件或者硬件与软件的组合来实施的一项或更多项操作。在软件的情境中,所述操作表示存储在一个或更多计算机可读介质上的计算机可执行指令,所述计算机可执行指令在由一个或更多处理器执行时使得所述一个或更多处理器能够实施所述的操作。一般地,计算机可执行指令包括实施特定功能或者实施特定抽象数据类型的例程、程序、对象、模块、组件、数据结构等等。各项操作被描述的顺序不旨在被解释成限制,并且任意数目的所描述的操作可以被按照任意顺序执行、按照任意顺序组合、细分成多项子操作和/或并行地执行,以便实施所描述的过程。所描述的过程可以由与一个或更多设备101、201和/或700相关联的资源实施,诸如一个或更多内部或外部cpu或gpu,和/或诸如fpga、dsp或其他类型的加速器之类的一个或更多硬件片。

前面所描述的所有方法和过程都可以被具体实现在由一台或更多台通用计算机或处理器执行的软件代码模块中并且通过该软件代码模块被完全自动化。所述代码模块可以被存储在任何类型的计算机可读存储介质或其他计算机存储设备中。其中一些或所有方法可以可替换地被具体实现在专用计算机硬件中。

除非明确地另行声明,否则尤其诸如“可以”、“可能”、“也许”或“会”之类的条件语言在该情境内应被理解为表现出:某些示例包括某些特征、元件和/或步骤,而其他示例则不包括所述特征、元件和/或步骤。因此,这样的条件语言一般不旨在暗示对于一个或更多示例而言以任何方式需要某些特征、元件和/或步骤,也不在暗示一个或更多示例必然包括这样的逻辑:在具有或不具有用户输入或提示的情况下决定是否将在任何特定示例中包括或者实施某些特征、元件和/或步骤。除非明确地另行声明,否则诸如短语“x、y或z中的至少一个”之类的合取语言应当被理解成表现出,某一项目、术语等等可以是x、y或z或者其某种组合。这里所描述的和/或在附图中描绘出的流程图中的任何例程描述、元件或块应当被理解成潜在地表示包括用于实施所述例程中的特定逻辑功能或元件的一条或更多条可执行指令的代码模块、代码段或代码部分。替换的实施方式被包括在这里所描述的示例的范围内,其中如本领域技术人员将理解的,取决于所涉及的功能,各个元件或功能可以被删除或者按照与所示出或讨论的顺序不同的顺序来执行,其中包括基本上同步地执行或者按照相反的顺序执行。应当强调的是,可以对前面描述的示例做出许多变化和修改,其中的元件应当被理解成处于其他可接受的示例当中。所有这样的修改和变化在这里旨在被包括在本公开的范围内并且受到所附权利要求书的保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1