专利名称:通过应用程序分解将高保证特征集成到应用程序中的制作方法
技术领域:
本发明一般涉及计算领域,尤其是提供了一种以允许需要可信或安全测量的操作集成到普通、非安全软件中的方式支持应用程序的划分和分解的机制。
背景技术:
在计算领域,在一方面提供高度安全的系统和另一方面提供大量功能性特征和高度可扩充性的系统之间存在一种紧张关系。计算领域的安全性取决于用高度的确定性理解并预测计算机系统的行为(即,软件和硬件的行为)的能力-即,确保系统不会通过无意的误用或故意的攻击以不同于为其设计的方式表现。例如,被设计成保护有版权的资料不被复制的计算机系统仅在可确保系统实际上做设计它所做的事情的方面是可信的。然而,大型、开放的体系结构往往是难处理且复杂的,从而很难分析其行为,因为有大量的变量可影响该行为。当前,诸如全服务(full-service)操作系统或文字处理器等大型复杂的程序看似不可能将其行为核实到高度的确定性。可能书写可在各种各样的条件和攻击种类下测试并核实其行为的小程序,但是这一程序只能执行有限的功能组。由此,在提供大量的功能和提供高度的安全性之间存在一种紧张关系。
提出的一种解决方案是并肩运行两个系统-一个具有高度功能性的大系统,以及另一具有高度安全性的小系统。由此,诸如WINDOWS XP等全服务操作系统可以连同一小型、高保证操作系统一起运行。只要在全服务操作系统中出现需要以具有高度可信的紧密控制的方式执行的事件,就可将该任务传递到高保证操作系统。
操作系统提供了其它程序可在其中执行的环境。然而,两个操作系统可并肩存在这一纯粹的事实无法解决给定的应用程序如何利用两个环境的问题。期望应用程序能够使用全特征环境来执行大多数功能(即,不需要高度安全性的功能),并使用高保证环境来执行的确需要高度安全性的功能。此外,期望以提供集成的用户体验的方式来使用这两个环境。
鉴于上述原因,需要一种克服现有技术的缺点的系统。
发明内容
本发明提供了一种应用程序的功能可被分解(factor)或划分成多个部分的机制-即,需要某一程度的安全或保护的行动,以及不需要那些安全或保护的行动。依照本发明,应用程序被实施为至少两个软件对象运行在全特征(但是低保证)环境中的软件对象,以及运行在高保证(但特征有限)环境中的另一软件对象。当全特征环境中的对象执行时,它可能遇到需要某一程度的保护的数据(如,该数据可能需要保密,或它可能需要在确定该数据未被篡改的意义上是可核实的)。当运行在全特征环境中的软件对象遇到这样的数据时,该软件对象促使该数据被传递到高保证环境。在高保证环境中操作的软件对象然后操作该数据。当处理该数据时需要的数据的任何输入、输出或存储使用高保证环境来执行,以保护该数据不被该高保证环境外部出现的事件截取或篡改。
这两个环境由一提供两个环境进行通信所需要的基础结构(或“管道(plumbing)”)的基础组件主管(host)。例如,需要在高保证环境中处理的数据对象可具有该基础组件生成的包装。该包装可标识向其路由该数据对象用于处理的环境,并且也可提供能够核实该数据对象自从被该基础组件包装以来未被修改的事实的封印。由此,软件对象可将数据对象传递到基础组件,基础组件能够(1)确定该数据对象应当被传递到哪一环境,以及(2)核实该数据对象自从创建以来未被篡改。后一行动提供了允许跨平台建立对象的可信性的基础结构如果在第一机器上(具有第一基础组件)创建了对象,则该第一基础组件签署该对象为该对象是在该基础组件已知的高保证环境中生成的确切对象的证明。当然后在另一机器上打开该对象时,另一机器然后可以核实该签名,并判定它们是否信任签署者。(如,某些机器和/或基础组件可能比其它机器更善于确保其主管的环境的正确行为;每一机器可为其自己决定它是否信任创建给定数据对象的平台。)下文将描述本发明的其它特征。
当结合附图阅读时,可以更好地理解以上概述以及以下较佳实施例的详细描述。为说明本发明的目的,附图中示出了本发明的示例性构造;然而,本发明不限于所揭示的具体方法和手段。附图中图1是可实现本发明的各方面的示例计算环境的框图;图2是被分解成组成功能的应用程序的框图;图3所示是将数据路由到应用程序的不同组件的框图;图4是可分解应用程序的用户界面的示例的框图;图5是支持分解的应用程序的使用的示例性体系结构的框图;图6是可使用分解的应用程序的环境的示例层次结构的框图;图7是在支持分解的应用程序的使用的环境中使用的示例数据对象的框图;图8是可通过其在分解的应用程序中处理数据的示例过程的流程图。
具体实施例方式
综述本发明提供了一种允许应用程序被划分或“分解”成安全和非安全组件,并允许这些组件共同工作以提供关于该应用程序的集成用户体验的机制。例如,文字处理程序可被划分成一执行大多数布局、编辑、打印、拼写检查、语法检查等与文字处理器关联的功能的非安全组件,以及一启用需要某一保护方式的数据对象的显示和编辑的安全组件。非安全组件可运行在普通、开放环境中,如典型的商业操作系统。安全组件可运行在允许某些类型的软件以该软件将正确表现的高保证运行的高保证环境中。本发明提供了关于这一情形的各种特征。首先,本发明提供了一种跨两个组件的用户体验,使得从用户的观点来看,用户看似尽可能地使用单个应用程序。第二,本发明提供允许应用程序处理安全和非安全数据的基础结构或“管道”,并用于跨分区使用的这类数据。
对于用户体验,一般情况是用户开始使用应用程序的非安全部分。在这一使用期间出现的数据(如,文字处理文档中的敏感文本项目、电子表格中的敏感金融数字等)由应用程序的非安全部分以某一方式较佳地集成到用户体验中,即使该数据实际上无法由该非安全部分显示。例如,如果文字处理文档中有敏感或机密文本项目,则文字处理器的非安全部分能够显示标识该项目的框,以及表示即使无法显示该文本也存在的事实的某一类型的图形(如,指示文本的弯曲的线条)。在一个示例中,用户可在该框或图形上点击,然后可调用应用程序的安全部分以在出现该框的屏幕的同一位置显示文本。由此,对于用户体验集成了应用程序的安全和非安全部分。
对于基础结构,本发明提供了一种允许一个环境中的数据对象被路由到另一环境的机制。通常,机密或敏感的数据对象-并由此需要由安全部分处理-将被加密,使得非安全部分无法读取它。由此,这一对象通常由在生成该数据对象中起作用的每一组件包装在一系列包装中。每一包装较佳地包含附加该包装的组件的标识符,以及允许核实该包装内的数据的完整性的封印。外部包装较佳地由创建该包装的机器上的可信根附加-即,在单个机器上主管各种环境,并由某一公知的授权机构核实为其行为可信的基础组件。该外部包装允许该基础组件担当路由器的作用。由此,当非安全部分遇到该对象时,它可能无法读取该对象,但是可将该对象标识为要发送到另一环境用于处理的对象。由此,非安全部分将该对象发送到基础组件,它然后基于包装中标识了哪一环境将该对象路由到正确的环境。
另外,如果对象在第一机器上创建,并在第二机器上打开,则第二机器可通过检查作为外部包装的一部分的签名确定该对象的可信性。应当理解,当基础组件包装并密封对象时,基础组件本质上证明在对象的创建过程中,基础组件在保护创建过程不受外部篡改的方面正确地执行了其功能。(基础组件通常提供允许高保证环境保护其自身不受篡改的机制一如,可信处理器模块(TPM)、存储器隔离机制等)。某些基础组件可比其它组件更好地执行这一功能,因此在其上打开数据对象的任一机器可作出关于是否相信该对象实际上是依照应用到该对象的安全需求来创建的判定。例如,如果对象包括通过键盘输入的文本,则高保证环境将以安全的方式从键盘接收输入,但是该环境安全地接收输入的能力可取决于基础组件保护从键盘到高保证环境的路径的能力。由于包装包含特定的基础组件生成的封印或签名,因此包装支持一种可信模型,其中,不同的机器可作出关于可靠数据对象如何基于在其上创建该数据对象的机器的假定安全性的判定。
下文描述支持分解或划分的应用程序的使用的系统、方法和机制。
示例性计算方案图1示出了可在其中实现本发明的各方面的示例性计算环境。计算系统环境100仅为合适的计算环境的一个示例,并非建议对本发明的使用或功能的范围的局限。也不应将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合具有依赖或需求。
本发明可以使用众多其它通用或专用计算系统环境或配置来操作。适合使用本发明的众所周知的计算系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。
本发明可在计算机可执行指令的一般上下文环境中描述,计算机可执行指令如由计算机执行的程序模块。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络或其它数据传输媒质连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储媒质中,包括存储器存储设备。
参考图1,用于实现本发明的示例系统包括以计算机110形式的通用计算装置。计算机110的组件可包括但不限于,处理单元120、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。处理单元120可表示如多线程处理器上支持的多个逻辑处理单元。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线结构的局部总线。作为示例而非局限,这类结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线(也称为Mezzanine总线)。系统总线121也可以被实现为点对点连接、交换光纤等通信设备。
计算机110通常包括各种计算机可读媒质。计算机可读媒质可以是可由计算机110访问的任一可用媒质,包括易失和非易失媒质、可移动和不可移动媒质。作为示例而非局限,计算机可读媒质包括计算机存储媒质和通信媒质。计算机存储媒质包括以用于储存信息的任一方法或技术实现的易失和非易失,可移动和不可移动媒质,信息如计算机可读指令、数据结构、程序模块或其它数据。计算机存储媒质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它媒质。通信媒质通常在诸如载波或其它传输机制的已调制数据信号中包含计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送媒质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信媒质包括有线媒质,如有线网络或直接连线连接,以及无线媒质,如声学、RF、红外和其它无线媒质。上述任一的组合也应当包括在计算机可读媒质的范围之内。
系统存储器130包括以易失和/或非易失存储器形式的计算机存储媒质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,通常储存在ROM 131中。RAM 132通常包含处理单元120立即可访问或者当前正在操作的数据和/或程序模块。作为示例而非局限,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可包括其它可移动/不可移动、易失/非易失计算机存储媒质。仅作示例,图1示出了对不可移动、非易失磁媒质进行读写的硬盘驱动器141、对可移动、非易失磁盘152进行读写的磁盘驱动器151以及对可移动、非易失光盘156,如CD ROM或其它光媒质进行读写的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失/非易失计算机存储媒质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到系统总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。
图1讨论并示出的驱动器及其关联的计算机存储媒质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。用户可以通过输入设备,如键盘162和定位设备161(通常指鼠标、跟踪球或触摸板)向计算机110输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过接口,如视频接口190连接至系统总线121。除监视器之外,计算机也包括其它外围输出设备,如扬声器197和打印机196,通过输出外围接口195连接。
计算机110可以在使用到一个或多个远程计算机,如远程计算机180的逻辑连接的网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公用网络节点,并通常包括许多或所有上述与计算机110相关的元件,尽管在图1中仅示出了存储器存储设备181。图1描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或其它装置,用于通过WAN 173,如因特网建立通信。调制解调器172可以是内置或外置的,通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,描述的与计算机110相关的程序模块或其部分可储存在远程存储器存储设备中。作为示例而非局限,图1示出了远程应用程序185驻留在存储器设备181中。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。
经划分或经“分解”的应用程序软件,如应用程序,通常执行各种不同的功能并操作各种不同类型的数据。在这一意义上,应用程序可被视为不同功能的集合。将一个应用程序分解成其各种不同的功能是有用的,使得这些不同的功能可被单独执行(如,分配给提供不同安全级别的环境)。图2示出了一个应用程序如何被分解成其各种不同的功能。
应用程序135包括各种不同的功能202(1)、202(2)、…、202(n)、202(n+1)、202(n+2)、…、202(n+m)。例如,应用程序135可以是文字处理程序,单独的功能可以是编辑、察看、打印、跟踪变化等等。应当注意,尽管图2示出应用程序135具有n+m个离散的功能,在判定什么是离散功能中应当谨慎判断。例如,所有的打印功能可被视为单个功能,或者打印可被视为包括两个或多个不同的功能(如,打印一页或者打印整个文档)。另外,如后文进一步描述的,同一基本操作可被视为多个功能,取决于正在操作什么类型的数据。(如,察看文档的基本操作可被认为是两个不同功能之一,取决于被察看的数据是安全还是非安全的。)由此,可以有两个单独的察看功能,一个在某一方面是安全的,一个不是。本质上,将一个程序分解成其组成功能是围绕程序所做的事情(和/或程序所操作的各种不同类型的数据)画出边界的问题,并且一般没有关于如何画这些边界的特定要求。
在一个示例中,功能可分组在一起,使得功能202(1)到202(n)是第一分区206(1)的一部分,功能202(n+1)到功能202(n+m)是第二分区206(2)的部分。可以方便地以这一方式分组功能,使得可以类似地处理同一分区中的功能。例如,分区206(1)可包括应用程序135的涉及普通、非安全数据的功能,而分区206(2)可包括应用程序135的涉及机密或安全数据(或需要其它某一级别的保护的数据)的功能。由此,分区206(1)中的功能可在普通开放环境(如,由普通商业操作系统提供的环境)中执行,而分区206(2)中的功能可在高保证环境中运行。(高保证环境在下文更具体讨论。)图3示出了如何使用分区来允许单个应用程序135处理安全和非安全数据的示例。在图3的示例中,应用程序135执行需要高度保护的操作302(如,涉及机密数据的操作),并且也执行需要低程度保护或不需要保护的操作304(如,不涉及机密数据的操作)。(在本示例中,数据上的“操作”可包括任一类型的数据处理,如执行数据的输入或输出,执行数据的计算等)。在本示例中,不涉及机密数据的操作的功能由应用程序135的分区206(1)处理,涉及机密数据(或需要某一类型的保护的数据)的操作的功能由分区206(2)处理。例如,如果应用程序135是文字处理程序,则显示普通(非保护)文档可由分区206(1)处理,而显示机密文档可由分区206(2)处理。作为另一示例,如果应用程序135是股票贸易程序,则分区206(1)可包含允许用户查寻股票的当前价格的功能,而分区206(2)可在验证用户之后允许用户购买或出售股份(在这一情况下,用户的验证凭证以及他或她的财物账号是机密数据的一种类型)。
应当理解,图3示出了应用程序的不同分区可用于处理机密和非机密数据,但是图3不限于用于实现或使用分区应用程序的任一具体机制。下文结合图4-8讨论了一种以提供集成用户体验的方式支持应用程序的划分和分区的使用的示例体系结构。
示例性经划分的应用程序应用程序的各种功能可依照任一标准来划分。在图3的示例中,依照该应用程序是处理安全还是非安全数据来划分应用程序的功能。当划分应用程序时,期望将各种划分集成到单个用户体验中。图4示出了经划分的应用程序的一个示例用户界面。(应当理解,“安全”数据指需要某一类型的保护的数据,尽管本发明不限于任一具体类型的保护。例如,在“保密”的意义上,数据可需要保护,在这一情况下,可加密该数据。作为另一示例,在可核实的意义上数据可需要保护-即,确定该数据自从时间中的某一参考点以来未被修改的能力-在这一情况下,可签署该数据。)用户界面400是文字处理程序的界面。(应当理解,文字处理程序是应用程序的一个方便的示例,尽管它不意味着唯一的示例。)在图4的示例中,用户界面400显示了作为文字处理文档的一部分的各种项目402(1)到402(5)。项目402(1)是普通的非安全文本。项目402(2)是非安全图形404。项目402(3)、402(4)和402(5)是安全文本的数据。应用程序的非安全分区执行不涉及安全数据的处理的所有处理。在本示例中,该处理包括非安全项目402(1)和402(2)的显示(并可能有编辑、打印、保存等),以及所有项目(甚至是安全项目)的布局。非安全分区能够展示安全项目,因为假定尽管项目402(3)、402(4)和402(5)的内容是机密的,这些项目的存在不是机密的。由此,非安全分区能够将项目402(3)到402(5)显示为弯曲线条405,由此向用户提供了关于非安全分区不能处理的内容的至少某些用户体验。
如果用户希望察看内容项目402(3)、402(4)和402(5),例如,用户可点击表示给定内容项目的弯曲线条405。该行动可促使调用安全分区。安全项目之一中包含的内容然后可被传递到安全分区用于处理。在一个示例中,安全分区然后可在叠加在由非安全分区展示的内容的位置上的窗口中显示实际内容项目-如,当安全分区显示内容项目402(3)时,它可通过在先前显示表示内容项目402(3)的弯曲线条405的区域的上方放置该内容项目的图像。尽管上述情形涉及用户与软件的两个不同片断(即,安全和非安全分区)的交互动作,对用户而言可似乎他与单个应用程序交互,由此提供了跨两个分区的集成用户体验。
图4示出了经划分的应用程序为文字处理程序的示例。其它示例包括电子表格,其中用户可在非安全分区中输入公式并构建表格等,但是操作的实际数据仅对安全分区可用。由此,非安全分区在每一单元中显示某一占位符数据(如,“xxxx”)。单元中数据的估算和呈现由应用程序的安全分区执行。当用户按“计算”按钮时,弹出一个窗口(由安全分区生成),并显示适当的行和列中的单元值,它们基于对安全分区可用的基础数据来计算。在这一实现中,安全分区将具有一估算引擎以及一(平凡的)呈现例程,但是不需要结合电子表格用户界面的其它方面、帮助窗口、公式构造器等。
安全贸易应用程序,其中,相应地向安全和非安全分区分配功能。例如,显示贸易图表和股票信息(公共可用)可由非安全分区执行。另一方面,安全分区允许用户输入股票贸易符号、用户要购买或售出的股票份额的价格和数量,并在第一次核实服务器的身份之后向远程贸易服务器发送该信息。
以图像格式(如,可移植文档格式或“PDF”)输出文档的文字处理器。安全分区能够读并显示该图像。这一文档的呈现被称为文档的“传真”。基础文字处理文档(即,包含格式化代码和文本字符而非仅图像的文档的版本)机器传真由非安全分区发送到安全分区,并且安全分区显示该传真。用户使用安全环境中的安全签署代理签署该传真(或文档和传真的摘要)。签署的传真(称为“传真-0”)和基础文档以大型二进制对象(blob)返回到非安全分区。当核实器接收包含该文档、传真-0和传真的签名的大型二进制对象时,核实器首先基于基础文字处理文档呈现该传真的一个新副本(称为传真-1)。核实器将传真-0、传真-1、Word文档和签名发送到安全分区,它核实传真是相同的,并且传真-0上的签名是有效的。尽管该模型不提供文档的保密(由于文档的传真-1仍可由非安全分区呈现),它的确服务来核实文档的完整性一即,文档是原始创建的那一个,并且未被修改的事实。
图5示出了支持应用程序的划分的体系结构。在图5中,有可在其中运行软件的两个环境502(1)和502(2)。在本示例中,有四个单独的处理器504(1)、504(2)、504(3)和504(4)。在本上下文中,“处理器”不仅指微处理器,还指以某一方式为应用程序处理数据的软件组件。处理器504(1)和504(2)运行在环境502(1)中,处理器504(3)和504(4)运行在环境502(2)中。例如,处理器504(1)和504(3)可分别为单个文字处理应用程序的非安全和安全部分。基础组件508主管环境502(1)和502(2),使得两个环境可在单个机器上共存。本发明不限于任一具体类型的基础组件508;基础组件508的一些示例是虚拟机器监控器(VMM)、外内核、微内核或系统管理程序。例如,环境502(1)和502(2)可以是VMM或系统管理程序主管的单独的操作系统。作为另一示例,基础组件508可以是操作系统之一-如,提供某些用户功能,并也实施其本身和其它(低保证)操作系统之间的分隔的高保证操作系统。
作为基础组件508的部分运行的一个组件是基准监控器510。基准监控器510执行将给定的数据对象路由到正确的环境用于处理的功能。例如,在运行应用程序的过程中可遇到(或生成,或输入)标签数据506,基准监控器510促使标签数据506被路由到正确的环境。标签数据506与允许基准监控器510确定应当将该标签数据路由到哪一环境的标识标记关联。另外,标签数据506也可包含允许目标环境确定应当将该数据给予哪一处理器来处理的额外的标记。标签数据506的示例结构在下文结合图7讨论。
标签数据506可在任何位置遇到(或生成,或输入),尽管最典型的标签数据将在一个环境中遇到,并被传递到另一环境。例如,文字处理应用程序的非安全部分可遇到包含某一机密文本的标签数据。文字处理应用程序然后可以图4所示的方式显示该文本的表示(如无法破译的弯曲线条)。万一用户期望显示实际文本(如,通过点击为该数据保留的区域),则应用程序的非安全分区(如,运行在环境502(1)中的处理器504(1))可向基准监控器510提供标签数据506,它然后向环境502(2)提供该数据。环境502(2)然后可将该数据路由到正确的处理器(如,处理器504(3)),它然后能够以上文结合图4描述的方式在屏幕的适当位置上显示该数据。
应当理解,在图5的模型内,应用程序本质上由处理器构成-即,可处理不同的指定类型的数据或执行某些类别的任务的组件-并且应用程序的不同分区使用不同的处理器。例如,处理器504(1)和504(3)可表示单个应用程序(如,文字处理应用程序)的安全和非安全处理器,其中,根据数据是安全还是非安全数据将数据路由到处理器504(1)或504(3)的任一个。
也应当理解,没有关于什么类型的环境可用的要求,但是一个环境是高保证操作系统,另一环境是普通的全服务开放操作系统是尤其有用的。“高保证”操作系统是提供将正确执行其期望功能的相对高级的保证的系统。如果所有的软件(包括操作系统)与描述该软件的期望功能的规范相关联,并且如果所有软件遭受导致软件以非预期的方式表现的某一级别的程序错误或攻击,则“高保证”操作系统是提供操作系统将依照其规范表现的相对高级可信度的系统。(大多数商业软件具有显式、书面规范,尽管本上下文中的规范也可包括关于软件应当如何表现的隐式、非书面理解。)高保证与安全性不同,尽管高保证可用于实现安全性。例如,用于机密数据的处理器可被设计成运行在高保证操作系统中;在处理器保护机密数据的能力取决于它所运行的环境的正确行为(如,系统调用的正确执行、正确的进程隔离等)的方面,处理器可提供如果处理器运行在普通、全服务操作系统中就无法实现的一种安全级别。(高保证的折衷选择使高保证环境具有十分有限的功能范围;较大的程序是最难核实该程序将在各种各样的情况下正确表现。由此,诸如WINDOWS XP等全服务商业操作系统通常被认为不是高保证的。)在以上高保证的描述的上下文中,可以理解,将一个应用程序划分成处理不需要重大安全性的数据的低安全性处理器,以及需要更多安全性的数据的高安全性处理器通常是有用的。高安全性处理器可运行在高保证环境中,低安全性处理器可运行在低保证环境中。
支持经划分的应用程序的示例体系结构图6示出了可执行划分应用程序的示例体系结构600。体系结构600包括基础组件508,其功能是主管可执行应用程序的划分的各种环境。如上所述,基础组件508可采用各种形式,如VMM、外内核、微内核、系统管理程序等等。基础组件508具有主管多个环境(如,操作系统)的功能,并也管理(并限制)这些环境之间的交互。多个环境的主管可使用各种技术来执行。例如,基础组件508可向多个操作系统的每一个展现自含“虚拟机器”;操作系统然后控制虚拟机器“虚拟硬件”,并且基础组件508向“真实的”硬件发出基于(但不必要与其相同)操作系统给予虚拟机器的指令的指令。(一般而言,这就是传统的VMM如何工作的。)作为另一示例,基础组件508可向不同的操作系统分配某些设备以及机器的物理地址空间的某些片段,并可通过准许每一操作系统仅控制其分配的设备和其分配的地址空间部分来实施这一分配。本发明不限于基础组件的任一具体实施例;为图6的目的,仅假定有一能够主管多个环境的基础组件,使得这些多个环境可以彼此某种程度的隔离在单个机器上共存。
在图6的示例中,基础组件508主管操作系统602(1)到602(4)。操作系统602(1)是WINDOWS XP操作系统或另一通用操作系统的一个实例;操作系统602(2)是Linux操作系统的一个实例;操作系统602(3)是“网络点”-即,提供有限功能但是将正确实现该功能的高保证的高保证操作系统(在上述意义内);操作系统602(4)可以是另一通用操作系统,如OS/2。一般而言,基础组件508可主管任意数量的操作系统(或其它类型的环境),并且图6所示的四个操作系统仅为示例。
在给定的操作系统内,可能运行应用程序级软件的片段。例如,MICROSOFTWORD文字处理程序(604)和MICROSOFT EXCEL电子表格程序(606)在WINDOWS XP操作系统602(1)下运行。Linux操作系统602(2)、网络点602(3)和OS/2操作系统602(4)也可运行其自己的应用程序。在本示例中,称为“Word-let”的程序(608)和“Excel-let”(610)在网络点602(3)下运行。Word-let 608是当WORD需要处理安全程序时与WORD 604一起工作的安全程序。类似地,Excel-let610为EXCEL 606处理安全数据。由此,在图4的示例中,WORD 604可以是处理非安全数据项目、在窗口内展示数据项目并显式表示安全项目的不可破译的弯曲线条的程序(或“处理器”)。Word-let 608可以是打开安全项目并在WORD 604为该项目保留的窗口的区域中呈现该项目的程序。本质上,WORD 604和Word-let608一起表示跨在不同的环境中执行的不同处理器的文字处理应用程序的功能的划分(或“分解”)。类似地,EXCEL 606和Excel-let 610可具有类似的关系-即,EXCEL 606处理不涉及安全数据的大多数电子表格功能,而Excel-let 610代表EXCEL处理安全数据。
如上所述,网络点602(3)是可提供可执行可信应用程序(即,对于诸如打开机密数据等敏感操作可足够确信其行为可信的应用程序)的环境的高保证操作系统。然而,网络点602(3)可能提供十分有限的功能。由此,例如,将文字处理应用程序划分成WORD 604和Word-let 608是有用的,使得WORD可使用通用操作系统中可用的广泛特征来提供广泛的功能,并且Word-let可使用网络点602(3)所提供的环境的高保证特性来执行(可能有限的)具有高度可信性的敏感功能。
图6示出了提供支持应用程序的划分的基础结构的基础组件。以下是该基础结构可包括的一些特性的描述注册和目录服务基础组件可提供一种接口,基础组件所主管的环境可通过该接口向基础组件注册。基础组件也可提供用以启动主管的环境的方法(或者基础组件可以是主管环境之一)。环境的保证级别是与该环境关联的元信息,并且基础组件可提供可任选的服务来以结构化方式访问并查找该信息。
分隔主管环境具有基础组件向其分配的安全上下文。环境的安全上下文可包含以下组件a.DAC上下文,如环境的代码id。
b.MAC上下文在MAC的情况下,环境的MAC上下文包括敏感标签和类别。
通信环境间通信由基础组件通过使用它所拥有的单向传输来控制。
a.传输提供了环境之间的顺序且可靠消息传送。提供同步对象用于向环境通知关于传输上数据的到达。
b.访问控制传输是基础组件所拥有的对象,并且主管环境对传输的读取和写入的能力由基础组件所实施的访问控制模型来控制。在DAC的情况下,这由传输上的ACL控制用于行动“读”和“写”。在MAC的情况下,这由附加到传输的标签控制。为提供对多级设备的输出,基础组件提供前端安全过滤器的实现。前端安全过滤器(FESF)是可被附加到传输的读或写端的向基础组件注册的功能。在写(读)-FESF的情况下,写FESF由VMM在数据由VM写入(读取)传输之前调用。写-FESF的一个示例是Seal(),它通常在如果MAC有效时在数据写入普通(非高保证)环境之前应用到高保证环境中的数据。如果MAC未有效,则环境必须在向另一环境发送之前加密它认为私密敏感的数据。
消息传输跨不同的环境携带消息。消息是由基础组件创建的数据大型二进制对象(data blob),它被结构化如下a.由基础组件分配的安全上下文包含DAC和MAC上下文。DAC上下文包含创建环境的主题id。MAC上下文包含创建环境的敏感标签和类别。
b.内容数据(包括由创建环境分配的安全上下文)。
更高级抽象环境(或运行在环境中的应用程序或其它软件对象)可通过使用基础组件展现的通信抽象由其自己实现RPC接口。这可以是环境所提供的服务代码,或仅为库代码。可展现的另一抽象是环境之间的套接字调用接口,它不需要由基础组件实现。
焦点管理在经划分的应用程序的许多示例中,从一个环境到另一个的消息的到达可促使安全输入或输出设备的当前所有者中的变化。焦点管理由基础组件在环境的请求之后提供-如,环境可在来自另一环境的消息到达后请求焦点中的变化。另一环境然后具有与该安全输入/输出设备的会话,并放弃控制。基础组件可强迫终止环境的I/O会话。
用于经划分的应用程序的示例数据对象图7示出了数据对象的示例结构,它允许该数据对象用于经划分的应用程序。如上所述,当应用程序被划分时,应用程序的第一分区可遇到不能由该分区处理但需要被发送到第二分区的数据对象。在第一分区是应用程序的“非安全”部分,而第二分区是“安全”部分的情况下,第一分区较佳地可认识到数据对象需要被发送到别处用于处理,即使第一分区无法确定关于该对象的其它情况(如,即使第一分区无法读该对象的内容)。另外,在某些情况下,重要的是核实该数据对象实际上在安全情况下创建,并未被修改(如,应当可确定数据是否输入到一种保护在从键盘到应用程序的I/O流的路径上的数据免遭欺骗的环境)。由此,同样较佳地,数据对象以允许核实其处理链的方式显示。
数据对象700包括数据项目702。数据项目702是数据对象700为携带目的而存在的基础实质内容-如,机密文字处理文档(或其部分)、电子表格的敏感财政数据、金融交易中验证用户的密码信息等等。
数据项目702由处理该数据的体系结构的每一层在一系列包装中包装。每一包装用于两个目的(1)包装标识在该项目上放置该包装的实体(如,应用程序、环境等),它随后协助将项目路由到该实体;(2)包装以随后允许核实该项目自从被包装以来未被修改的方式密封该项目。例如,如果Word-let 608创建数据项目702,则Word-let可附加数据项目702的数字签名以及将Word-let标识为处理器的头,随后当需要以某一方式处理数据项目702时,它应当被路由到该处理器。由此,该签名和头构成了包装704。应当注意,包装不限于签名和头,或任一特定的实施例,有各种允许标识项目并允许核实项目的完整性(如,未修改)的已知技术。
如上所述,诸如Word-let等处理器的安全性基于可信组件的层次结构-即,Word-let是可信的,因为它依赖于网络点的高保证;网络点是可信的,因为它依赖于基础组件的隔离能力,等等。由此,链的层次结构中的每一组件逐渐通向创建数据项目702并以其自己的包装来包装该项目的应用程序。已由Word-let的包装来包装的数据项目702然后由网络点的包装706来包装。该(双重包装的)项目然后由基础组件的包装708来包装。每一包装本质上标识了包装组件,并也构成包装的内容自从它们被包装以来未改变的可核实断言(在包装组件是可信的意义上)。
另外,由于包装是依照层次的顺序嵌套的,每一包装可用于路由目的。由此,当应用程序遇到数据对象700时,外部包装708将该对象标识为需要被路由到另一处理器的对象,因此该对象被发送到基础组件。基础组件然后使用包装来核实包装内的内容的完整性,并使用下一层包装706来确定该内容需要被路由到哪一环境(在本情况下为到网络点)。网络点然后核实包装706内的内容的完整性,并也使用包装704来确定哪一软件对象(在本情况下为Word-let)将处理内容。Word-let然后核实包装704内的内容的完整性。该内容是数据项目702。由此,数据对象700的结构允许数据对象702在逐渐通向处理数据项目702的处理器的链的每一步骤中被路由并核实。
使用经划分的应用程序的示例过程图8示出了可使用经划分的应用程序的一个示例过程。为图8的示例目的,假定应用程序具有两个处理器,称为处理器1和处理器2。
最初,处理器1运行;在处理器运行的过程中,处理器1遇到数据对象(802)。如上所述,处理器1可能无法读数据对象,但是能够认识到数据对象为需要发送到别处以用于处理的某物。由此,处理器1将数据对象发送到基准监控器(804)。
基准监控器使用该数据对象的最外部包装来确定该数据对象需要被发送到何处。如上所述,基准监控器(较佳地为上述基础组件的一部分)也使用最外部的包装来核实该包装的内容的完整性。在本示例中,假定维持了该内容的完整性,并且基准监控器确定该数据对象需要由处理器2来处理(806)。(如上所述,基准监控器可能不直接知晓处理器2的存在,但是可使用包装以将该对象路由到特定的环境,其中,该对象实际上由接收环境路由到处理器2。由于上文结合图7讨论了以这一方式的嵌套包装的使用,为简化图8的示例的目的,仅假定数据方式可以某种方式路由到处理器2,而不考虑将对象路由到处理器2时所涉及的中间路由步骤。)当确定数据对象以处理器2为目的时,确定(808)处理器2是否正在运行。例如,该确定可由预期运行处理器2的环境作出(如,在当前示例中为网络点)。如果处理器2未运行,则启动处理器2(810)。在启动了处理器2之后(或确定已运行),如果处理器2要处理任何输入或输出,则给予处理器2焦点(即,在输入和输出设备上执行I/O的能力)。
注意,上述示例仅为解释目的提供,并且不应当被解释为限制本发明。尽管参考各种实施例描述的本发明,可以理解,此处所使用的词语是描述和说明的词语,而非限制的词语。此外,尽管此处参考特定的装置、材料和环境描述了本发明,本发明并不意味着局限在此处所揭示的细节上;相反,本发明延及处于所附权利要求书的范围之内的所有功能等效结构、方法和使用。从本说明书的教导获益的本领域的技术人员可在不脱离本发明的各方面的范围和精神的情况下对其作出许多修改和变化。
权利要求
1.一种管理应用程序的划分的系统,其特征在于,它包括一主管第一环境和第二环境的基础层,所述应用程序包括在所述第一环境中执行的第一软件对象,所述第一软件对象处理多个数据并包括将所述多个数据的第一个标识为不可由所述软件对象处理的逻辑;以及在所述第二环境中执行并以防止对所述多个数据的所述第一个的篡改的方式处理所述多个数据的所述第一个的第二软件对象,所述基础层包括或主管从所述软件对象接收所述多个数据的所述第一个并将所述多个数据的所述第一个路由到所述第二环境的逻辑。
2.如权利要求1所述的系统,其特征在于,所述第一软件对象促使在显示设备上显示所述多个数据的所述第一个的表示,所述表示包括一个或多个不可破译的记号。
3.如权利要求2所述的系统,其特征在于,所述一个或多个不可破译的记号(1)彼此大小相同,或者(2)为与所述多个数据的所述第一个的内容不相关的大小。
4.如权利要求1所述的系统,其特征在于,由所述第二软件对象提供的所述防篡改能力包括所述第二环境通过将所述多个数据的所述第一个的表示写入一与显示设备关联的视频存储器中,以促使所述表示取代显示所述表示的所述显示设备的位置上的任何图像,从而阻止对所述多个数据的所述第一个的显示的干扰。
5.如权利要求1所述的系统,其特征在于,所述多个数据的所述第一个在键盘上输入,并且其中,由所述第二软件对象提供的所述防篡改包括阻止对从所述键盘转移到所述第二软件对象的输入流的所述多个数据的所述第一个的篡改。
6.如权利要求5所述的系统,其特征在于,所述第二应用程序签署所述多个数据的所述第一个以防止随后对所述多个数据的所述第一个的篡改。
7.如权利要求6所述的系统,其特征在于,所述第二环境签署所述多个数据的所述第一个和由所述第二应用程序创建的签名作为所述多个数据的所述第一个和所述签名系在所述第二环境中被创建的指示。
8.如权利要求1所述的系统,其特征在于,所述基础层包括向所述第二环境分配第一标识符的组件。
9.如权利要求8所述的系统,其特征在于,所述多个数据的所述第一个包括或附有所述第一标识符和标识所述第二软件对象的第二标识符。
10.如权利要求1所述的系统,其特征在于,所述第一环境与描述所述第一环境的行为的第一规范相关联,其中,所述第二环境与描述所述第二环境的行为的第二规范相关联,其中,所述第二环境符合所述第二规范比所述第一环境符合所述第一规范具有更高的保证级别。
11.如权利要求10所述的系统,其特征在于,所述第二软件对象依赖于所述第二环境的行为,以阻止对所述多个数据的所述第一个的篡改。
12.如权利要求1所述的系统,其特征在于,所述基础层是所述第二环境,或包括在所述第二环境中。
13.一种在第一环境中执行、处理向其应用一种政策的数据的第一软件对象方法,其特征在于,所述方法包括所述第一软件对象遇到所述数据;所述第一软件对象确定所述数据无法由所述第一软件对象处理;所述第一软件对象促使将所述数据被提供给在第二环境中执行的第二软件对象,所述第二环境提供所述第二环境中执行的行动将被正确执行的第一保证级别,其中,所述第二软件对象以使用所述保证来阻止出现在所述第二环境外部的行动对所述数据的篡改的方式处理所述数据。
14.如权利要求13所述的方法,其特征在于,所述防篡改包括阻止对所述数据的改变。
15.如权利要求14所述的方法,其特征在于,所述数据在一可视显示设备上显示,并且其中,所述防篡改包括在所述可视显示设备的位置上显示所述数据的表示,并取代不同于在所述位置上呈现的所述表示的任何图像。
16.如权利要求13所述的方法,其特征在于,所述第一软件对象促使所述数据的表示在一可视显示设备上显示,所述表示包括一个或多个不可破译的记号。
17.如权利要求16所述的方法,其特征在于,所述表示(1)彼此大小相同,或(2)具有与所述多个数据的所述第一个的内容不相关的大小。
18.如权利要求16所述的方法,其特征在于,所述第一软件对象或所述第二软件对象、或所述第一软件对象和所述第二软件对象的组合,促使所述可视显示设备上显示的项目在至少一个方面变化,以准许察看由所述第二软件对象生成的所述数据的图像。
19.如权利要求14所述的方法,其特征在于,所述数据使用键盘来提供,并且其中,所述防篡改包括阻止对从所述键盘转移到所述第二软件对象的输入流的所述数据的改变。
20.如权利要求13所述的方法,其特征在于,所述安全政策指定所述数据由所述第二软件对象处理。
21.如权利要求13所述的方法,其特征在于,所述数据包括将所述第二环境标识为处理所述数据的位置的第一标签,或与该第一标签相关联。
22.如权利要求21所述的方法,其特征在于,所述数据包括将所述第二软件对象标识为所述数据的处理器的第二标签,或与该第一标签相关联,并且其中,所述第二环境基于所述第二标签将所述数据路由到所述第二软件对象。
23.如权利要求13所述的方法,其特征在于,所述第二环境与描述所述第二环境的行为的第一规范相关联,并且其中,所述保证规定所述第二环境符合所述规范。
24.如权利要求13所述的方法,其特征在于,所述第一环境与描述所述第一环境行为的第二规范相关联,并且其中,所述第一环境提供所述第一环境中执行的行动将被正确执行的第二保证级别,所述第二保证级别相对低于所述第一保证级别。
25.一种在其上编码了允许用户操作第一和第二类数据的代码和数据的计算机可读媒质,所述第二类数据比所述第一类数据需要相对较高级别的保护来免遭篡改,其特征在于,所述代码和数据包括第一软件对象,它与描述所述第一软件对象的行为的第一规范相关联,所述第一软件对象包括以下指令操作所述第一类数据的成员;辨认所述第二类数据的成员为无法由所述第一软件对象处理;以及促使所述第二类数据的所述成员被路由到第二软件对象;以及所述第二软件对象,它与描述所述第二软件对象的行为的第二规范相关联,所述第二软件对象符合所述第二规范比所述第一软件对象符合所述第一规范有相对更高的保证级别,所述第二软件对象包括操作所述第二类数据的成员的指令。
26.如权利要求25所述的计算机可读媒质,其特征在于,所述第一软件对象在第一环境中操作,其中,所述第二软件对象在第二环境中操作,其中,所述第一环境与描述所述第一软件环境的行为的第三规范相关联,其中,所述第二环境与描述所述第二环境的行为的第四规范相关联,其中,所述第二环境符合所述第四规范的保证级别相对高于所述第一环境符合所述第一规范的保证级别,并且其中,所述第二软件对象符合所述第二规范的保证衍生自所述第二软件对象对所述第二环境的行为的信赖。
27.如权利要求25所述的计算机可读媒质,其特征在于,所述第二类数据的每一成员包括(1)指示所述第二类的所述成员要在所述第二环境中处理的第一标签,以及(2)由所述第二环境分配的指示所述第二类的所述成员要由所述第二软件对象处理的第二标签。
28.如权利要求27所述的计算机可读媒质,其特征在于,所述第一软件对象促使所述第二类的成员通过向一基础组件发送所述第二类的成员而被路由到所述第二软件对象,所述第一标签由所述基础组件分配,所述第二标签可由所述第二环境辨认,但不可由所述基础组件辨认。
29.如权利要求25所述的计算机可读媒质,其特征在于,所述第一软件对象在一可视显示设备上显示输出,所述输出包括要显示所述第二类的所述成员的所述可视显示设备上的一个或多个位置,并且其中,所述第二软件对象在所述一个或多个位置上显示所述第二类的所述数据的表示。
30.如权利要求29所述的计算机可读媒质,其特征在于,所述表示由促使所述表示被写入与所述可视显示设备相关联的视频存储器的所述第二环境显示在所述一个或多个位置中。
31.如权利要求25所述的计算机可读媒质,其特征在于,所述第二类的成员包括使用键盘输入的数据,并且其中,促使所述第二类数据的所述成员被路由到所述第二软件对象包括所述第二环境将所述第二类的成员以防止在所述第二环境外部出现的事件对所述第二类的成员进行篡改的方式从所述键盘传输到所述第二软件对象。
32.一种支持将应用程序至少划分成第一软件对象和第二软件对象的系统,所述系统主管第一环境和第二环境,所述第一软件对象运行在所述第一环境中,所述第二软件对象运行在所述第二环境中,其特征在于,所述系统包括展现以下方法中的至少一个的应用编程接口第一方法,它从所述第一软件对象接收第一数据对象,其包括(1)可由所述第二软件对象处理的数据,以及(2)由所述系统分配给所述第二环境的第一标识符;且它基于所述第一标识符将所述第一数据对象路由到所述第二环境;第二方法,它创建第二数据对象,其包括(1)可由所述第二软件对象处理的数据;(2)所述第一标识符;(3)允许随后确定所述第二数据对象自从由所述第二方法创建以来未被篡改的验证数据;第三方法,它从所述第一环境接收与所述第二软件对象相关联的第二标识符,并指导创建所述第二软件对象的实例;以及第四方法,它从所述第一软件环境接收(1)第三数据对象,以及(2)与所述第一软件对象相关联的第三标识符,并指导基于已接收所述第三标识符创建所述第一软件对象的实例,并指导所述第一软件对象操作所述第三数据对象。
33.如权利要求32所述的系统,其特征在于,所述第一环境与描述所述第一环境的行为的第一规范相关联,其中,所述第二环境与描述所述第二环境的行为的第二规范相关联,其中,有所述第一环境符合所述第一规范的第一保证级别,其中,有所述第二环境符合所述第二规范的第二保证级别,并且其中,所述第二保证级别相对高于所述第一保证级别。
34.如权利要求33所述的系统,其特征在于,所述第二软件提供所述第二软件对象将保护数据的保证,所述保证至少部分地通过依赖于所述第二环境的行为来提供。
全文摘要
应用程序分解或划分用于将安全特征集成到常规的应用程序中。应用程序的功能依照给定的行动是否涉及敏感数据的处理被划分成两个组。创建单独的软件对象(处理器)来执行这两组行动。可信处理器处理安全数据并运行在高保证环境中。当另一处理器遇到安全数据时,该数据被发送到可信处理器。以允许数据被路由到可信处理器的方式包装该数据,并防止数据被不同于可信处理器的任一实体破译。提供了一种基础结构,它包装对象、将它们路由到正确的处理器,并允许通过反向通往已知为可信的基础组件的可信链来证明它们的完整性。
文档编号G06F21/22GK1609801SQ20041008829
公开日2005年4月27日 申请日期2004年10月21日 优先权日2003年10月24日
发明者K·D·雷, M·佩纳多, P·英格兰德, T·V·库里恩 申请人:微软公司