CN103080871B - 用于解决计算机系统中的资源管理和安全性的系统及方法 - Google Patents
用于解决计算机系统中的资源管理和安全性的系统及方法 Download PDFInfo
- Publication number
- CN103080871B CN103080871B CN201180041646.9A CN201180041646A CN103080871B CN 103080871 B CN103080871 B CN 103080871B CN 201180041646 A CN201180041646 A CN 201180041646A CN 103080871 B CN103080871 B CN 103080871B
- Authority
- CN
- China
- Prior art keywords
- operating system
- intermediary device
- system nucleus
- nucleus
- data handling
- 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
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
一种用于解决计算机系统中的资源管理和安全性的系统可以包括在计算机处理器上执行的操作系统内核。所述系统还可以包括数据处理应用和被配置为在所述计算机处理器上执行的中介器。所述中介器可以在所述操作系统内核与所述数据处理应用之间工作。所述中介器可以控制对所述数据处理应用的用户生成的状态数据的访问,并且可以限制所述操作系统内核对所述用户生成的状态数据的访问。
Description
相关申请的交叉引用
本申请包含的主题涉及2010年8月31日提交的标题为“FILESYSTEMMANAGEMENTANDSECUYRITYSYESTM(文件系统管理和安全系统)”的美国专利申请第12/873,047号,以及2010年8月31日提交的标题为“PROCESSORSUPPORTFORSECUREDEVICEDRIVERARCHITECTURE(安全设备驱动器架构的处理器支持)”的美国专利申请第12/873,085号(案号YOR920090083US1),这两个申请的全部主题在此引入作为参考。上述申请转让给本申请的受让人,即,位于纽约阿蒙克的国际商业机器公司。
技术领域
本发明涉及计算机系统领域,更具体地说,涉及解决计算机系统中的资源管理和安全性。
背景技术
多数通用计算机利用操作系统(“OS”)作为它们的应用与计算机硬件之间的接口。因此,OS通常管理计算机上执行的数据处理应用程序,以及响应于数据应用程序而控制硬件资源。数据处理应用是处理数据的应用。用户应用可以是在计算机用户之一的支持下,直接处理数据的数据处理应用。系统应用可以是在同一系统或远程系统上运行的一个或多个用户或系统应用的支持下,处理数据的数据处理应用。系统应用通常实现为用户级应用,它们以特殊权限运行并一般被称为系统守护进程(daemon)。
此外,可以控制OS其它部分的一部分OS一般称为OS内核(kernel)。
发明内容
根据本发明的一个实施例,用于解决计算机系统中的资源管理和安全性的系统可以包括在计算机处理器上执行的操作系统内核。
用于解决计算机系统中的资源管理和安全性的系统可以包括在计算机处理器上执行的操作系统内核。所述系统还可以包括数据处理应用和被配置为在所述计算机处理器上执行的中介器。所述中介器可以在所述操作系统内核与所述数据处理应用之间工作。所述中介器可以控制对所述数据处理应用的用户相关的应用状态的访问,并且可以限制所述操作系统内核对所述用户相关的应用状态的访问。
所述用户相关的应用状态可以包括读取自与系统相连的设备或系统外部设备的数据,或者包括由所述数据处理应用在其操作期间产生并且对于所述中介器可见而对于所述操作系统内核不可见的数据。所述操作系统内核可以控制系统相关的应用状态,所述系统相关的应用状态用于在所述操作系统内核的级别处控制所述数据处理应用的各部分。
所述操作系统内核可以被修改为将其功能的一部分移交给所述中介器。所述系统还可以包括与所述计算机处理器通信的数据处理资源。
所述中介器对所述计算机处理器和所述数据处理资源的访问权限高于所述操作系统内核。所述操作系统内核对于用户相关的应用状态具有受限的访问,因为所述中介器根据需要在所述用户相关的应用状态与所述操作系统内核的数据结构之间执行传输以实现所述操作系统内核的其余功能。
所述中介器可以控制所述操作系统内核与所述数据处理应用之间的系统调用和异常。所述数据处理资源可以包括计算机存储器、通信网络、输入/输出设备和数据处理设备,其中所述计算机存储器存储所述数据处理应用、所述中介器、所述操作系统内核、一个或多个用户级共享库以及系统守护进程,并且所述中介器可以使用存储器管理单元控制所述操作系统内核、数据处理应用、用户级共享库和系统守护进程的存储器访问;并且所述中介器可以虚拟化所述输入/输出设备的选择寄存器并可以使用输入/输出存储器管理单元控制输入/输出设备的数据传输源和数据传输目的地。所述系统还可以包括实现为系统守护进程并在所述操作系统内核之外运行的网际协议安全模块,该安全模块直接与所述数据处理应用通信而不与所述操作系统内核通信。
本发明的另一方面是一种用于解决计算机系统中的资源管理和安全性的方法。所述方法可以包括通过计算机处理器执行中介器,以使所述中介器在操作系统内核与数据处理应用之间执行。所述方法还可以包括通过所述中介器控制对所述数据处理应用的用户相关的应用状态的访问。所述方法还可以包括限制所述操作系统内核对所述用户相关的应用状态的访问。
所述方法可以另外包括将所述用户相关的应用状态限于由所述数据处理应用在其操作期间产生并且对于所述中介器可见而对于所述操作系统内核不可见的数据。所述方法还可以包括将所述用户相关的应用状态限于读取自与所述系统相连的设备或所述系统外部设备,且由所述数据处理应用在其操作期间产生并且对于所述中介器可见而对于所述操作系统内核不可见的数据。所述方法还可以包括通过所述操作系统内核控制系统相关的应用状态,所述系统相关的应用状态用于在所述操作系统内核级别处控制所述数据处理应用的各部分。
所述方法可以另外包括使所述中介器对所述计算机处理器和数据处理资源的访问权限高于所述操作系统内核。所述方法还可以包括通过所述中介器控制所述操作系统内核与所述数据处理应用之间的系统调用和异常。所述方法还可以包括提供在所述操作系统内核之外运行的网际协议安全模块,以便直接与所述数据处理应用通信而不与所述操作系统内核通信。
本发明的另一方面是与有形介质耦合以解决数据处理系统中的资源管理和安全性的计算机可读程序代码。所述计算机可读程序代码可被配置为使所述程序通过计算机处理器执行中介器以在操作系统内核与数据处理应用之间执行。所述计算机可读程序代码还可以通过所述中介器控制对所述数据处理应用的用户相关的应用状态的访问。所述计算机可读程序代码另外可以限制所述操作系统内核对所述用户相关的应用状态的访问。
在一个实施例中,所述系统可以包括在计算机处理器上执行的操作系统内核。所述系统还可以包括数据处理应用,以及被配置为在所述计算机处理器上执行的中介器。所述中介器可以在所述操作系统内核与所述数据处理应用之间工作。所述中介器可以对控制所述数据处理应用的用户相关的应用状态的访问以及限制所述操作系统内核对所述用户相关的应用状态的访问。所述用户相关的应用状态可以包括由所述数据处理应用在其操作期间产生并且对于所述中介器可见而对于所述操作系统内核不可见的数据。此外,所述中介器对所述计算机处理器的访问权限可以高于所述操作系统内核。
附图说明
图1是根据本发明的用于解决计算机系统中的资源管理和安全性的系统的示意性框图;
图2是示出根据本发明的方法方面的流程图;
图3是示出根据图2中的方法的方法方面的流程图;
图4是示出根据图2中的方法的方法方面的流程图;
图5是示出根据图2中的方法的方法方面的流程图;
图6是示出根据图2中的方法的方法方面的流程图;
图7是示出根据图2中的方法的方法方面的流程图;
图8是根据本发明的OS内核更改的示意性框图;
图9是根据本发明的用户级文件系统的示意性框图。
具体实施方式
现在参考图1,首先描述用于解决计算机系统中的资源管理和安全性的系统10。本领域的技术人员将理解,系统10是根据指令集存储和操纵数据的可编程装置。
在一个实施例中,系统10包括通信网络14,该网络允许信号在系统10的任意位置上传输,在系统10的计算机处理器18与数据处理资源29之间和/或在系统10的数据处理资源29(例如,计算机存储器12、输入/输出设备26和其它数据处理设备27)之间传输。通信网络14例如为有线和/或无线网络。通信网络14例如对于系统10是本地和/或全局的。
根据一个实施例,系统10包括在计算机处理器18上执行的操作系统内核16。在一个实施例中,系统10包括数据处理应用20。
在一个实施例中,系统包括被配置为在计算机处理器18上执行的中介器24。在一个实施例中,中介器在操作系统内核与数据处理应用之间工作。在一个实施例中,中介器24控制对数据处理应用20的用户相关的应用状态的访问,并且限制操作系统内核16对用户相关的应用状态的访问。
在一个实施例中,中介器24通过以下方式限制操作系统的访问:(1)通过从操作系统内核16接管对存储器管理单元(MMU)的控制直接进行限制,以及(2)通过从修改后的操作系统和相关设备驱动器接管对I/OMMU或可以直接访问系统存储器的任何设备(无需由I/OMMU控制它们的访问)的控制而间接进行限制。在一个实施例中,中介器24对MMU编程,以便通过中介器代码验证修改后的操作系统内核16对应用存储器的任何访问尝试或将这些尝试重定向到中介器缓冲区,然后由中介器转发到应用。在一个实施例中,中介器24验证内核中包括的任何I/O设备26驱动器的任何尝试,以便编程I/OMMU,同时在更高级别上重写或测试不使用I/OMMU的设备的驱动器,以便可以将它们包括在中介器代码库中。
在一个实施例中,用户相关的应用状态包括由数据处理应用20在其操作期间产生并且对于中介器24可见而对于操作系统内核16不可见的数据。在一个实施例中,用户相关的应用状态包括读取自与系统10相连的设备或系统10的外部设备,并且可使用I/O设备26(例如,有线或无线网络接口)访问的数据。在一个实施例中,操作系统内核16控制系统相关的应用状态,所述系统相关的应用状态用于在操作系统内核级别处控制数据处理应用20的各部分。
在一个实施例中,操作系统内核16被修改为将其功能的一部分移交给中介器124。在一个实施例中,系统10还包括与计算机处理器18通信的数据处理资源29。数据处理资源22包括系统10和/或其它任何计算机系统在输入、输出、存储、操纵数据,传输数据或执行类似操作期间使用的任何资源。
在一个实施例中,与操作系统内核16相比,中介器24对计算机处理器18和数据处理资源22具有更高访问权限。在一个实施例中,操作系统内核16对用户相关的应用状态具有受限的访问,因为中介器24根据需要在用户相关的应用状态与操作系统内核的数据结构之间执行传输以实现操作系统内核的其余功能。
在一个实施例中,中介器24控制操作系统内核16与数据处理应用20之间的系统调用和异常。在一个实施例中,数据处理资源22包括计算机存储器12、通信网络14、输入/输出设备26和数据处理设备27,例如密码协处理器或温度监视传感器,其中计算机存储器12存储数据处理应用20、中介器24、操作系统内核16、用户级共享库22和系统守护进程28。
在一个实施例中,中介器24使用处理器18的存储器管理单元控制操作系统16、数据处理应用20、用户级共享库22和系统守护进程28对计算机存储器12的访问。在一个实施例中,中介器24虚拟化输入/输出设备26的选择寄存器。在一个实施例中,中介器24使用计算机处理器18的输入/输出存储器管理单元控制输入/输出设备26的数据传输源和数据传输目的地。在一个实施例中,系统10还包括实现为系统守护进程28并在操作系统内核16以外运行的网际协议安全模块,该安全模块直接与数据处理应用20通信而不与操作系统内核通信。
本发明的另一方面是用于解决计算机系统中的资源管理和安全性的方法,现在参考图2中的流程图30描述此方法。此方法从方框32开始并且可以包括在方框34,通过计算机处理器执行中介器以在操作系统内核与数据处理应用之间执行。此方法还可以包括在方框36,通过中介器控制对数据处理应用的用户相关的应用状态的访问。此方法还可以包括在方框38,限制操作系统内核对用户相关的应用状态的访问。此方法在方框40结束。
在现在参考图3的流程图42进行描述的另一方法实施例中,此方法从方框44开始。此方法可以包括图2中的方框34、36和38处的步骤。此方法另外可以包括在方框46,将用户相关的应用状态限于由数据处理应用在其操作期间产生并且对于中介器可见而对于操作系统内核不可见的数据。此方法另外可以包括在方框47,将用户相关的应用状态限于读取自与系统10相连的设备或系统10的外部设备的数据,所读取的数据对于中介器可见,而对于操作系统内核不可见的数据。此方法在方框48结束。
在现在参考图4的流程图50进行描述的另一方法实施例中,此方法从方框52开始。此方法可以包括图2中的方框34、36和38处的步骤。此方法还可以包括在方框54,通过操作系统内核控制系统相关的应用状态,所述系统相关的应用状态用于在操作系统内核级别处控制数据处理应用的各部分。此方法在方框56结束。
在现在参考图5的流程图58进行描述的另一方法实施例中,此方法从方框60开始。此方法可以包括图2中的方框34、36和38处的步骤。此方法还可以包括在方框62,使所述中介器对所述计算机处理器和数据处理资源的访问权限高于所述操作系统内核。此方法在方框64结束。
在现在参考图6的流程图66进行描述的另一方法实施例中,此方法从方框68开始。此方法可以包括图2中的方框34、36和38处的步骤。此方法还可以包括在方框70,通过所述中介器控制所述操作系统内核与所述数据处理应用之间的系统调用和异常。所述方法在方框72结束。
在现在参考图7的流程图74进行描述的另一方法实施例中,此方法从方框76开始。此方法可以包括图2中的方框34、36和38处的步骤。此方法还可以包括在方框78,提供实现为系统守护进程并在操作系统内核以外运行的网际协议安全模块,以使其直接与所述数据处理应用通信而不与所述操作系统内核通信。此方法在方框80结束。
本发明的另一方面是与有形介质耦合以解决图8所示的数据处理系统中的资源管理和安全性的计算机可读程序代码。在一个实施例中,所述计算机可读程序代码被配置为使程序通过计算机处理器18执行中介器24,从而使中介器24在操作系统内核16与数据处理应用20之间执行。在一个实施例中,所述计算机可读程序代码还通过中介器24控制对数据处理应用20的用户相关的应用状态的访问。在一个实施例中,所述计算机可读程序代码限制操作系统内核16对用户相关的应用状态的访问。
在一个实施例中,所述系统包括在计算机处理器18上执行的操作系统内核16。在一个实施例中,系统10还包括数据处理应用20,以及被配置为在计算机处理器18上执行的中介器24。
在一个实施例中,中介器24在操作系统内核16与数据处理应用20之间工作。在一个实施例中,中介器24控制对数据处理应用20的用户相关的应用状态的访问并限制操作系统内核16对用户相关的应用状态的访问。
在一个实施例中,用户相关的应用状态包括由数据处理应用20在其操作期间产生并且对于中介器24可见而对于操作系统内核16不可见的数据。在一个实施例中,用户相关的应用状态包括读取自与系统10相连的设备或系统10的外部设备并且对于中介器24可见而对于操作系统内核16不可见的数据。在一个实施例中,与操作系统内核16相比,中介器24对计算机处理器18具有更高访问权限。在一个实施例中,受中介器24保护的用户状态被分为(1)应用在其执行期间生成的状态,以及(2)读入应用地址空间的状态,基本上为应用代码、其变量的初始值及其全部输入。
综上所述,系统10例如解决了计算机系统中的资源管理和安全性。例如,商用操作系统(“OS”)庞大复杂。到目前为止,根据全面的规范集证明这些操作系统正确的尝试均告失败。此外,在过去的几年中,这些系统的全部/多数都受到网络发起攻击的威胁。
此外,没有一种现有的计算机和OS架构公开将操作系统的资源保护与资源管理功能分开。更具体地说,不存在这样一种现有架构公开:其中对操作系统的威胁仅导致拒绝应用20访问它们需要访问且通常有权访问的计算机数据处理资源29和计算机处理器18,并且例如不会损失应用20的任何数据或不会威胁应用代码和数据的安全。
在一个实施例中,系统10可以利用:(1)对现有商用OS的内核16以及对现有处理器/芯片组18架构的最少更改,(2)添加可证明正确的小型可信系统软件组件24,以及(3)对系统软件的其余部分以及对应用20的最少更改,该系统例如优选地被限于修改系统库,所述系统库用于将应用与内核及新增的可信系统软件组件通过接口连接。
在一个实施例中,内核代码是商用或学习操作系统中的OS内核的一部分。它以超级用户权限运行并为底层计算机系统10上运行的所有(用户和系统)应用提供支持。超级用户模式是权限最大的级别,其中软件在典型的计算机系统上运行,所述计算机系统不对虚拟化进行硬件支持或禁用此支持功能。在权限最大的模式下运行的软件可以访问系统10的所有硬件资源。在系统10中,中介器24代码以权限最大的级别运行,修改后的内核代码在权限稍小的模式下运行。这意味着中介器24代码可以访问所有硬件资源,修改后的内核16可访问的硬件资源少于中介器(同样少于原始内核在未修改/原始计算机系统中访问的硬件资源),应用在权限比修改后的内核代码更小的模式下运行。
本领域中的最新工作基于完全不同的硬件架构,此架构要求对现有操作系统及应用实现进行大量更改,或者需要虚拟机监视器来封装未修改的内核及更改最少的应用。这两种方法严重依赖于密码学,呈现出严重的性能退化,并且不能完全保护本地文件系统中的数据。较旧的方法要求全新的操作系统实现且从未在大型安装上成功测试。
参考图8,在所提出架构的一个实施例中,修改后的操作系统内核16无法访问它所运行的任何应用20的状态(地址空间加寄存器),并且其对本地文件系统的访问被限于其真正需要访问的文件(例如,当前的Linux内核只需访问/sbin/init、/etc/init、/bin/sh或/bin/init应用文件之一便可正确启动)。
在一个实施例中,应用20与内核16之间的接口(包括系统调用和异常)被以高于内核的权限级别运行的小型软件层介入。这个被称为中介器34的可信软件组件使用存储器管理单元(“MMU”)限制内核访问本地应用20的地址空间,它被设计为减少内核16代码更改的数量。
在一个实施例中,文件系统实现大部分被从只能访问小部分根文件系统(例如,/sbin/init程序)的内核16中删除。本地块设备的文件系统在用户级共享库中实现,其中常驻内核的块设备驱动器控制设备,但是中介器24通过使用(可能地)增强型输入/输出存储器管理单元(“IOMMU”)并通过虚拟化相连的块设备控制器的选择寄存器来控制这些设备的数据传输源和传输目的地。
在一个实施例中,架构阻止内核16访问处理器18寄存器中存储的应用20状态,即使在处理执行应用20代码期间发生的中断时也是如此。与之对照,现有架构在处理中断时将处理器状态保存在内核地址空间内,这允许受到威胁的内核访问处理器寄存器中存储的应用状态并在从中断返回时加载这些寄存器中的污染值。
在一个实施例中,将网际协议安全28(“IPsec”)实现从内核16移交给专用用户级系统应用(守护进程),该进程使用共享存储器22直接与本地应用20通信而无需内核介入。在一个实施例中,使用IPsec的应用20将针对网络堆栈的较高层使用库实现。在一个实施例中,原始网络堆栈保留在内核16内,因为希望应用20例如针对它们的多数敏感网络通信使用安全套接字层(“SSL”)。
在一个实施例中,系统100架构不使用加密来阻止应用20数据例如被OS内核16或其它(系统或非系统)应用20访问。例如,系统10并非旨在提高内核16对攻击的抵抗力,而是旨在阻止攻击者在控制内核之后访问应用20数据,因为中介器24不能受到威胁。
在一个实施例中,系统10要求对现有内核16和系统软件20进行适度更改,并对现有处理器架构进行略微扩展以实现此目标。在一个实施例中,每个软件或硬件机制都是相关但独立的公开的主题,所述软件或硬件机制包括但不限于额外的权限级别(可以快速、安全地控制到较低/内核级的传输)和根据块或超级块访问权限监管来自相连的块设备的访问或对相连的块设备的访问、硬件中的安全中断状态保存和恢复、用户级分布式文件系统实现,以及增强型IOMMU架构,所有这些均可由系统10使用。
在一个实施例中,中介器24为相对较小的软件组件,它同时对内核16和当前应用20地址空间具有访问权限,它介入系统调用的参数和结果传递。在一个实施例中,包括应用返回地址的应用20寄存器保存在中介器24的本地存储器中。
在一个实施例中,中介器24代码准备系统调用代码的内核16地址空间中的堆栈表项并将处理器18切换到内核,即较低的权限级别以开始执行系统调用代码。在一个实施例中,为了安全地将控制移交给较低的权限代码并返回,处理器18架构可能必须通过确保系统调用如其语义指定的那样最终返回中介器24的机制进行增强。更具体地说,fork()/clone()和abort()/exit()系统调用可能需要中介器24设置两个返回路径或不设置任何返回路径,而系统调用的其余部分通常只需要一个返回路径。
在一个实施例中,中介器24也会介入异常处理。在一个实施例中,中介器24负责虚拟化本地存储器,检查(和修改)OS内核16维护的进程表。
在最新(x86)处理器架构上的备选实现中,中介器24可以利用它们的增强型MMU,这些MMU为了有效虚拟化而设计(AMD的嵌套页表和Intel的扩展页表)。此方法可以减少为了阻止应用20状态被受到威胁的内核访问而要求的OS内核16更改,但是启用硬件的虚拟机监视器(“VMM”)可能不能(有效地)托管最终形成的系统10。
在现有OS内核中,当处理器在执行应用代码期间中断时,即,当处于用户模式时,应用寄存器保存在内核地址空间内。受到威胁的内核可以访问这些值或使用污染的寄存器值(程序计数器和堆栈指针)恢复中断的应用,所述污染的寄存器值被设计为朝着向攻击者透露更多状态的方向修改应用行为。
系统10架构包括若干备选方案,包括但不限于运行中介器24地址空间内的中断处理机的下半部分,或者修改处理器18以(1)分别在发生中断之后和恢复应用20之前自动加密和解密寄存器,或者(2)在处理中断时使用内核16不能访问的存储单元存储应用状态(保存之后,还必须清除寄存器)。
在一个实施例中,如果需要调试支持,则在最高优先级上执行的指令能够读取和修改已保存的寄存器的内容。在一个实施例中,当不需要调试支持时,可以禁用此能力。
在一个实施例中,为了阻止OS内核16访问应用20数据,所支持的本地文件系统的实现从内核移交给用户级共享库。在一个实施例中,数据块(来自本地盘或支持文件系统的其它块设备)是直接访问到应用地址空间或从应用地址空间访问的直接存储器。在一个实施例中,常驻内核16的设备驱动器编程传输,但是中介器24通过虚拟化IOMMU和块设备控制器的选择寄存器来控制每次传输的源和目的地。
为了实现此目的,以及为了阻止通过交换设备发生信息泄露,中介器24在每个相连的块设备的块或超级块级别处维护访问权限列表。在一个实施例中,在系统10启动之间,此信息存储在外部并且信息的完整性使用保护中介器24和内核16代码的同一机制进行保护,也可能借助专用防篡改硬件。
在一个实施例中,不借助内核16介入,直接与应用20通信的应用级组件处理不能指定清晰所有权的磁盘块,例如包含共享元数据的块,所述共享元数据指由多个用户拥有的数据块。同一组件例如实施文件锁定服务。
在一个实施例中,内核16保留对网络堆栈的所有权,因为应用20可使用SSL进行安全通信。在一个实施例中,内核IPsec28实现可被移出内核16(在单独的应用中或在中介器24代码库和地址空间内)。
在一个实施例中,优选地使用基于应用20的实现,其中中介器24介入IPsec28用户级实现与密码加速器设备(如果有)之间。
在一个实施例中,中介器24包括串行驱动器和最小内核16监视/调试功能。即使添加这些内容之后,中介器的较小大小也使它更适合形式化验证。
在一个实施例中,当系统10初始化时,由引导加载器将中介器24复制到主存储器中并在主存储器中启动。在一个实施例中,中介器24负责初始化修改后的OS内核16。在系统关闭时,中介器24例如在内核16之后被关闭。
需要指出,OS内核对应用地址空间和文件具有完全访问权限。因此,损坏的内核将所有应用状态(内部数据结构和文件)暴露给攻击者。现有的工作尝试阻止内核运行未授权的代码或尝试对内核地址空间中运行的模块实施安全属性。
与之对照,在一个实施例中,系统10使用中介器24,中介器24是一个系统软件组件,旨在与修改后的OS内核16一起工作以限制修改后的OS内核16对本地应用20的地址空间以及与计算机系统相连的存储设备22的访问。在一个实施例中,中介器24的架构要求对现有内核16架构进行适度更改,所述更改专注于应用/内核接口和虚拟存储器管理。
在一个实施例中,在启用中介器24的OS内核16上运行的应用20仍会受到拒绝服务攻击。在此方面,中介器24补充现有的工作来增强底层OS内核16的可靠性。
在一个实施例中,中介器24是相对较小的系统软件组件,它以高于OS内核16的权限运行,并且介入内核与应用20之间的合法交互并限制其它所有内核对应用数据的访问(根据设计,已阻止应用访问现有OS架构中的敏感内核数据)。
在一个实施例中,最大的中介器24组件通过在应用20与内核16之间传递参数和结果(可以访问这两者的地址空间时)以及通过在内核模式下取消当前应用的地址空间与内核地址空间的映射来处理系统调用、异常和信号激活。在一个实施例中,MMU管理从内核16移交给中介器24。
在一个实施例中,中介器24中的MMU管理与虚拟机监视器(“VMM”)中的等价功能共用特定元件,它还保护应用20免受恶意内核的访问。攻击实例包括但不限于尝试映射内核16地址空间内的应用页、在应用20之间建立未被请求的共享存储器区域、为了将一个应用的信息泄露给另一应用而扩展合法的共享存储器区域、在不将新页设置为零的情况下将它们分配给应用,可能作为一系列换入/换出操作的结果使用非法页更改应用的合法页帧等。在一个实施例中,为了防止此类攻击,系统10将有关地址空间更改的应用20的系统调用和异常(例如,写时复制)与应用空间地址的更改以及MMU管理紧密地进行关联。
在一个实施例中,其它中介器24组件通过实施块级访问权限来虚拟化本地连接的存储设备并阻止中断处理机(在内核16地址空间内运行)访问处理器18寄存器中存储的应用状态(当处理器在用户模式下中断时)。在一个实施例中,系统10与用户级文件系统(在相关公开中进行描述)进行协作以安全地启动新进程。
中介器24包括至少一个用于可信I/O设备26的简单驱动器,例如用于加载和启动、重新启动和监视内核16活动和完整性的串行接口与基本基元(primitive)。
在一个实施例中,中介器24以高于运行OS内核16所用的优先级利用处理器18执行模式。
例如,需要一个额外的模式来增强只有两个执行模式的处理器架构,以便运行中介器24。对于具有两个以上模式,但是针对其在最高优先级模式中配置内核16的处理器(例如,Intel的x86系列或AMD)而言,内核或者被修改为在较低级别上运行(比如说1而非0),或者中介器24利用例如x86处理器系列中新成员的虚拟化能力(类似地,在非x86处理器上,中介器24可以利用针对有效虚拟化设计的硬件能力)。后一种方法防止最终形成的系统(修改后的内核16+中介器24系统软件)被现有VMM之一托管,所述VMM被设计为例如利用添加到处理器的虚拟化支持。
在一个实施例中,中介器24通过捕获应用20系统调用、异常和信号处理来隔离应用20的地址空间与内核16,其中仅对现有内核进行少量更改。例如,在发生这些事件时,中介器24处理MMU以将应用20或内核16限于它们自己的地址空间。根据事件的性质—例如系统10调用、系统调用返回、异常调用或返回、信号调用等,与修改后的内核16协作的中介器24例如在所涉及的两个地址空间之间执行参数和结果传递。
在一个实施例中,内核16被修改为将MMU处理转移到中介器24。在一个实施例中,如果处理器18架构提供额外的(即,未被内核16使用)可用于确保地址空间隔离的MMU功能,则中介器24可以利用此功能,这将减少内核更改量,但是也会阻止其它系统10组件(例如VMM)使用此额外的MMU功能。在一个实施例中,为了减小内核16的更改程度,中介器24可以管理常驻应用20的对象/缓冲区的代理对象/缓冲区并相应地根据系统10调用修改指针。
为了限制额外系统10调用开销,中介器24例如可以包括实现一些简短和常用的系统调用。
在系统10调用或异常调用时将控制从中介器24转移给内核16的操作向内核隐藏了任何对于完成调用不必要的应用相关信息(例如,应用20中调用系统调用或触发异常的位置)。
在一个实施例中,中介器24管理所有本地块设备以阻止内核16访问本地文件系统(多个)中存储的应用20数据。在一个实施例中,只有设备驱动器中在功能上处理数据传输的部分必须从常驻内核16的驱动器转移到中介器24;设备测试、初始化和关闭仍可由常驻内核的代码完成。
为此,中介器24控制例如所有用于配置/启动数据传输的设备寄存器。中介器24维护每个块设备的访问权限(R/W)映射以帮助例如数据访问和程序启动/执行。
在一个备选实施例中,将IOMMU管理(如果存在)从内核16转移到中介器24,而设备管理(设备驱动器,可能经过略微修改)保留在内核中。在一个实施例中,中介器24和内核16协作以实现用户级DMA,即,直接从磁盘块到选定的(钉扎的)应用20页。在一个实施例中,受保护的用户级DMA支持架构的库/用户级文件系统组件,所述架构是单独但相关的公开的主题。
在一个实施例中,中介器24防止当处理器18在用户模式下执行中断时处理器18状态中捕获的应用20信息释放到内核16,其方式为:处理最低级别的中断处理(调用和返回),即处理中断服务例程(“ISR”)的下半部分,并且仅在将此信息保存在中介器地址空间内并清除寄存器之后才将控制转移给内核。在备选实施例中,修改后的处理器18架构(所述架构是单独但相关的公开的主题)可以提供相同的保护,并且几乎没有任何负面性能影响。
总之,中介器24隔离例如应用20、网络堆栈加驱动器,以及文件系统。即使当文件系统具有小型应用级系统组件(守护进程)时也是如此,中介器24阻止此守护进程执行任何网络相关系统10调用,更具体地说,阻止其执行任何例如会通过可能损坏的内核16,直接或间接地将文件系统相关信息泄露给远程机器的系统调用。
本领域的技术人员将认识到,本发明的各方面可以体现为系统、方法或计算机程序产品。因此,本发明的各方面可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质(在介质中包含计算机可读程序代码)中的计算机程序产品的形式。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文档的上下文中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读信号介质可以包括其中包含计算机可读程序代码(例如,在基带中或作为载波的一部分)的传播数据信号。此类传播信号可以采取各种形式中的任一种,包括但不限于电磁、光或其中任意适合的组合。计算机可读信号介质可以是任何不属于计算机可读存储介质并且能够传送、传播或传输由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的计算机可读介质。
可以使用任何适当的介质(包括但不限于无线、线缆、光缆、RF等或上述任意适合的组合)来传输包含在计算机可读介质中的程序代码。
用于执行本发明的各方面的操作的计算机程序代码可以使用包含一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk、C++之类的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,或者可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。
下面将参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的各方面进行描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的所述指令产生用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的装置。
也可以将这些计算机程序指令存储在能使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的制造品。
也可以将计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
尽管描述了本发明的优选实施例,但是将理解,本领域的技术人员现在和将来都可以做出落入下面权利要求的范围内的各种改进和增强。这些权利要求应被理解为对先前描述的发明维持适当的保护。
Claims (12)
1.一种用于解决计算机系统中的资源管理和安全性的系统,包括:
操作系统内核,其被配置为在计算机处理器上执行;以及
中介器,其被配置为在所述计算机处理器上执行并在所述操作系统内核与数据处理应用之间工作,所述中介器用于控制对所述数据处理应用的用户相关的应用状态的访问以及用于限制所述操作系统内核对所述用户相关的应用状态的访问,
其中所述操作系统内核已被修改以将其功能的一部分移交给所述中介器;
其中所述中介器对所述计算机处理器和数据处理资源的访问权限高于所述操作系统内核。
2.根据权利要求1的系统,其中所述用户相关的应用状态包括由所述数据处理应用在其操作期间产生并且对于所述中介器可见而对于所述操作系统内核不可见的数据。
3.根据权利要求1的系统,其中所述操作系统内核控制系统相关的应用状态,所述系统相关的应用状态用于在所述操作系统内核的级别处控制所述数据处理应用的各部分。
4.根据权利要求1的系统,其中所述操作系统内核对于用户相关的应用状态具有受限的访问,因为所述中介器根据需要在所述用户相关的应用状态与所述操作系统内核的数据结构之间执行传输以实现所述操作系统内核的其余功能。
5.根据权利要求1的系统,其中所述中介器被配置为控制所述操作系统内核与所述数据处理应用之间的系统调用和异常。
6.根据权利要求5的系统,包括:
与所述计算机处理器通信的数据处理资源;以及
其中所述数据处理资源包括计算机存储器、通信网络、输入/输出设备和数据处理设备,其中所述计算机存储器被配置为存储所述数据处理应用、中介器、操作系统内核、用户级共享库以及系统守护进程;并且其中所述中介器被配置为使用存储器管理单元控制所述操作系统内核、所述数据处理应用、所述用户级共享库和所述系统守护进程的存储器访问权限;并且其中所述中介器被配置为虚拟化输入/输出设备的选择寄存器并使用输入/输出存储器管理单元来控制输入/输出设备的数据传输源和数据传输目的地。
7.根据权利要求1的系统,还包括在所述操作系统内核之外的网际协议安全模块,其被配置为作为系统守护进程运行,以便直接与所述数据处理应用通信而不与所述操作系统内核通信。
8.一种用于解决计算机系统中的资源管理和安全性的方法,包括:
将中介器配置为在操作系统内核与数据处理应用之间执行;
通过所述中介器控制对所述数据处理应用的用户相关的应用状态的访问;以及
限制所述操作系统内核对所述用户相关的应用状态的访问,
其中所述操作系统内核已被修改以将其功能的一部分移交给所述中介器;
其中所述中介器对所述计算机处理器和数据处理资源的访问权限高于所述操作系统内核。
9.根据权利要求8的方法,还包括将所述用户相关的应用状态配置为限于由所述数据处理应用在其操作期间产生并且对于所述中介器可见而对于所述操作系统内核不可见的数据。
10.根据权利要求8的方法,还包括配置所述操作系统内核以控制系统相关的应用状态,所述系统相关的应用状态用于在所述操作系统内核的级别处控制所述数据处理应用的各部分。
11.根据权利要求8的方法,还包括配置所述中介器以控制所述操作系统内核与所述数据处理应用之间的系统调用和异常。
12.根据权利要求8的方法,还包括配置在所述操作系统内核之外的网际协议安全模块,以便直接与所述数据处理应用通信而不与所述操作系统内核通信。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/872,996 US8893306B2 (en) | 2010-08-31 | 2010-08-31 | Resource management and security system |
US12/872,996 | 2010-08-31 | ||
PCT/US2011/048267 WO2012030551A1 (en) | 2010-08-31 | 2011-08-18 | Resource management and security system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103080871A CN103080871A (zh) | 2013-05-01 |
CN103080871B true CN103080871B (zh) | 2016-06-01 |
Family
ID=45698979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180041646.9A Active CN103080871B (zh) | 2010-08-31 | 2011-08-18 | 用于解决计算机系统中的资源管理和安全性的系统及方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8893306B2 (zh) |
CN (1) | CN103080871B (zh) |
DE (1) | DE112011102876T5 (zh) |
GB (1) | GB2498289B (zh) |
WO (1) | WO2012030551A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5746100B2 (ja) * | 2011-12-27 | 2015-07-08 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置 |
EP2831787B1 (en) * | 2012-03-30 | 2020-07-08 | Irdeto B.V. | Method and system for preventing and detecting security threats |
US9213571B2 (en) * | 2012-06-06 | 2015-12-15 | 2236008 Ontario Inc. | System and method for changing abilities of a process |
US10140139B1 (en) * | 2012-06-19 | 2018-11-27 | Bromium, Inc. | Ensuring the privacy and integrity of a hypervisor |
US8880757B1 (en) * | 2013-09-24 | 2014-11-04 | International Business Machines Corporation | RDMA resource leakage detection and reporting |
US9921984B2 (en) * | 2014-12-23 | 2018-03-20 | Intel Corporation | Delivering interrupts to user-level applications |
US9930050B2 (en) * | 2015-04-01 | 2018-03-27 | Hand Held Products, Inc. | Device management proxy for secure devices |
US10650142B1 (en) * | 2015-06-24 | 2020-05-12 | Ca, Inc. | Systems and methods for detecting potentially malicious hardware-related anomalies |
CN107203715B (zh) * | 2016-03-18 | 2021-03-19 | 斑马智行网络(香港)有限公司 | 执行系统调用的方法及装置 |
GB2548601B (en) * | 2016-03-23 | 2019-02-13 | Advanced Risc Mach Ltd | Processing vector instructions |
JP2017188072A (ja) * | 2016-04-05 | 2017-10-12 | ルネサスエレクトロニクス株式会社 | 半導体装置及びアクセス管理方法 |
US10528294B2 (en) * | 2016-08-03 | 2020-01-07 | International Business Machines Corporation | Provisioning and managing virtual machines from a storage management system |
KR102263357B1 (ko) * | 2017-04-19 | 2021-06-11 | 한국전자통신연구원 | 분산 파일시스템 환경에서 사용자 수준 dma i/o를 지원하는 시스템 및 그 방법 |
US20230367869A1 (en) * | 2022-05-10 | 2023-11-16 | International Business Machines Corporation | Providing system services |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1815462A (zh) * | 2005-02-03 | 2006-08-09 | 国际商业机器公司 | 迁移数据页面的方法和装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9825102D0 (en) | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US20050108516A1 (en) | 2003-04-17 | 2005-05-19 | Robert Balzer | By-pass and tampering protection for application wrappers |
US7149946B2 (en) | 2003-06-13 | 2006-12-12 | Microsoft Corporation | Systems and methods for enhanced stored data verification utilizing pageable pool memory |
US7519814B2 (en) * | 2003-09-15 | 2009-04-14 | Trigence Corp. | System for containerization of application sets |
US7962909B1 (en) | 2004-05-11 | 2011-06-14 | Globalfoundries Inc. | Limiting guest execution |
US7281102B1 (en) * | 2004-08-12 | 2007-10-09 | Vmware, Inc. | Restricting memory access to protect data when sharing a common address space |
US20060075404A1 (en) * | 2004-10-06 | 2006-04-06 | Daniela Rosu | Method and system for scheduling user-level I/O threads |
US7607129B2 (en) * | 2005-04-07 | 2009-10-20 | International Business Machines Corporation | Method and apparatus for using virtual machine technology for managing parallel communicating applications |
US7200704B2 (en) * | 2005-04-07 | 2007-04-03 | International Business Machines Corporation | Virtualization of an I/O adapter port using enablement and activation functions |
US7949766B2 (en) * | 2005-06-22 | 2011-05-24 | Cisco Technology, Inc. | Offload stack for network, block and file input and output |
US7661115B2 (en) | 2006-01-30 | 2010-02-09 | International Business Machines Corporation | Method, apparatus and program storage device for preserving locked pages in memory when in user mode |
JP4770602B2 (ja) | 2006-06-23 | 2011-09-14 | 株式会社デンソー | 電子機器 |
US8151032B2 (en) * | 2008-06-26 | 2012-04-03 | Microsoft Corporation | Direct memory access filter for virtualized operating systems |
US8738932B2 (en) * | 2009-01-16 | 2014-05-27 | Teleputers, Llc | System and method for processor-based security |
US8499304B2 (en) * | 2009-12-15 | 2013-07-30 | At&T Mobility Ii Llc | Multiple mode mobile device |
US8627426B2 (en) * | 2010-04-26 | 2014-01-07 | Vmware, Inc. | Cloud platform architecture |
-
2010
- 2010-08-31 US US12/872,996 patent/US8893306B2/en active Active
-
2011
- 2011-08-18 CN CN201180041646.9A patent/CN103080871B/zh active Active
- 2011-08-18 GB GB1305585.0A patent/GB2498289B/en active Active
- 2011-08-18 WO PCT/US2011/048267 patent/WO2012030551A1/en active Application Filing
- 2011-08-18 DE DE112011102876T patent/DE112011102876T5/de active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1815462A (zh) * | 2005-02-03 | 2006-08-09 | 国际商业机器公司 | 迁移数据页面的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
GB201305585D0 (en) | 2013-05-08 |
GB2498289B (en) | 2016-06-29 |
DE112011102876T5 (de) | 2013-06-27 |
US20120054877A1 (en) | 2012-03-01 |
GB2498289A (en) | 2013-07-10 |
CN103080871A (zh) | 2013-05-01 |
WO2012030551A1 (en) | 2012-03-08 |
US8893306B2 (en) | 2014-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103080871B (zh) | 用于解决计算机系统中的资源管理和安全性的系统及方法 | |
CN109643290B (zh) | 用于具用扩展分段的面向对象的存储器管理的技术 | |
CN109522754B (zh) | 一种移动终端可信隔离环境核心控制方法 | |
EP1939754B1 (en) | Providing protected access to critical memory regions | |
US9483635B2 (en) | Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices | |
US20120054490A1 (en) | Filesystem management and security system | |
JP7432586B2 (ja) | スタック・ポインタを検証すること | |
Pék et al. | On the feasibility of software attacks on commodity virtual machine monitors via direct device assignment | |
CN110874468A (zh) | 应用程序安全保护方法以及相关设备 | |
US10250595B2 (en) | Embedded trusted network security perimeter in computing systems based on ARM processors | |
US11216280B2 (en) | Exception interception | |
US20220391235A1 (en) | System and methods for input/output device emulation | |
Mallachiev et al. | Protecting Applications from Highly Privileged Malware Using Bare-metal Hypervisor | |
CN116635855A (zh) | 基于执行上下文管理可执行代码对数据内存的访问的装置和方法 | |
Jaeger | Security Kernels |
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 |