文件锁定器和提供及使用文件锁定器的机制的制作方法

文档序号:6540525阅读:158来源:国知局
专利名称:文件锁定器和提供及使用文件锁定器的机制的制作方法
技术领域
本发明一般涉及计算领域,尤其涉及用于数据存储和检索的机制。
背景技术
计算机安全系统的一个方面是保护数据安全性的能力。数据可以通过加密来保护,正确运作的计算机安全系统应当防止数据以明码(未加密)格式出现在可信空间之外。
实现这一类型数据保护的一个方法是提供一种可信的操作环境,其中,可信程序(或“代理”)可以运行并且提供允许将数据密封到可信代理的数据密封设备。在可信环境中运行的代理可以将数据密封到其自身,并且可信环境将拒绝为除将数据密封到其上的代理以外的任何人解封数据。另外,该操作环境可使用防篡改和隔离机制来抵制绕过密封。由此,密封的数据在以下意义上被保护(1)提供密封设备的环境可以被信任来防止密封被打破,以及(2)将数据密封到其上的代理可以被信任来保护数据在数据被解封时不被错误使用。
上述密封机制的一个问题是密封设备只能由可信代理使用。由此,希望用可信环境的密封设备保护数据(如,文件)的任一软件对象必须具有(或者是)运行在可信环境中,并且包含与密封设备交互来管理文件的存储和密封的功能的可信代理。这一事实对于传统应用程序(如,被设计成在传统、非安全操作系统中运行的文字处理程序或电子表格程序)尤其是有问题的,因为这些程序一般无法在可信环境下运行(它们通常仅运行其行为可证实地可预测且可信赖的小程序)。非安全应用程序可以被写成具有与其协作的专门的可信代理,用于安全相关的功能;然而,传统应用程序-尤其是其实现早于特定的安全计算平台的那些应用程序-一般没有可信代理。另外,即使对于考虑可信计算而设计的应用程序,每一这样的应用程序包括管理密封文件是麻烦的。较佳的是提供一种使用可信环境的密封功能来保护和管理的通用设备,其中,该设备可由各种各样的软件对象(如,传统应用程序、操作系统、虚拟机器等等)使用。
鉴于上述内容,需要一种克服现有技术缺点的机制。

发明内容
本发明提供了一种使用数据密封设备来代表其它实体保护文件的文件锁定器(locker)。希望保护文件的实体将该文件提供给文件锁定器。文件锁定器然后使用数据密封设备将该文件密封到其自身,由此令文件在文件锁定器的“监护”之下。希望检索文件锁定器监护之下的文件的实体可向文件锁定器请求该文件。在充分证明了请求实体对所请求的文件的权利之后,文件锁定器促使文件被解封,并向请求实体提供该文件。
在一个较佳的实施例中,文件锁定器运行在支持并发使用具有各种可信程度的环境(如,范围从对其行为提供低保证的“开放”环境,到对其行为提供高保证的“可信”环境)的平台上。在这一平台上,数据密封设备可以是可信环境的基础结构的一部分;即,可信环境可允许运行在该环境中的程序或“代理”密封数据,使得数据只能由密封中指定的代理检索,并且可信环境可用诸如密码、存储器隔离、防篡改等机制来实施密封。此外,在这一平台上,文件锁定器可以是运行在可信环境中的代理,并且它可通过接收文件并将文件密封到其自身来向其它实体(在可信环境之内和之外)提供文件保护服务。
使用文件锁定器的实体可以是,例如运行在可信环境中的程序、运行在其它(较不可信的)环境中的程序、或其中可运行其它程序的整个环境。希望保护文件的实体将文件提供给文件锁定器,文件锁定器将文件密封到其自身。实体可请求文件,在这一情况下,文件锁定器验证实体是被授权来检索文件的,并可在请求实体上执行任何其它确认测试。文件锁定器然后将文件提供给请求实体。
文件锁定器的使用对向文件锁定器请求文件的实体可以是透明的。例如,应用程序可使用标准的应用编程接口(API)或系统调用来打开文件,并且API和系统调用可以被更新来理解哪些文件储存在可信区域,哪些文件不是。当文件储存在可信区域中时,API与文件锁定器通信来检索文件。
可任选地,文件锁定器(或协作代理)可在向该实体取出文件的过程中监控请求文件的实体的行为。例如,当向非可信环境中的应用程序取出文件时,文件锁定器或协作代理可观察和/或尽力控制应用程序,以确保当文件不在文件锁定器的监护之下时不被错误使用。
下文将描述本发明的其它特征。


当结合附图阅读时,可以更好地理解以上概述以及以下较佳实施例的详细描述。为说明本发明的目的,附图中示出了本发明的示例构造;然而,本发明不限于所揭示的特定方法和手段。附图中图1是其中可实现本发明的各方面的示例计算环境的框图;图2是可由多个实体使用并可用于将数据密封到实体的存储设备的框图;图3是使用密封的存储来代表软件对象保护文件的文件锁定器的框图;图4是其中文件锁定器可用于保护文件的示例情形的框图;图5是依照本发明的一个方面保护文件的示例方法的流程图。
具体实施例方式
示例性计算装置图1示出了适合在其中实现本发明的计算系统环境100的一个示例。计算系统环境100仅为合适的计算环境的一个示例,并非暗示对本发明的使用范围或功能的局限。也不应将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合具有任何依赖或需求。
本发明可以使用众多其它通用或专用计算系统环境或配置来操作。适合使用本发明的众所周知的计算系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。
本发明可在诸如由计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中,包括存储器存储设备。
参考图1,用于实现本发明的示例系统包括计算机110形式的通用计算装置。计算机110的组件可包括但不限于,处理单元120、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。处理单元120可代表多种逻辑处理单元,如多线程处理器上支持的那些处理单元。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线(也称为Mezzanine总线)。系统总线121也可被实现为点对点连接、交换光纤、快速PCI总线(PCI Express)等其它通信设备。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任一可用介质,包括易失和非易失介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失和非易失,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(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)451和广域网(WAN)452,但也可包括其它网络。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170接至LAN 171。当在WAN网络环境中使用时,计算机110可包括调制解调器172或其它装置,用于通过WAN 173,如因特网建立通信。调制解调器172可以是内置或外置的,通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,描述的与计算机110相关的程序模块或其部分可储存在远程存储器存储设备中。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。
受保护的存储本发明的一方面使用了一种受保护的存储设备,它允许实体在该设备中存入并密封数据。当数据被密封时,它不能由除将数据密封到其上的实体(或多个实体)之外的任何实体来访问。图2示出了这一受保护的存储设备206及其使用。
受保护的存储设备206能够从一个或多个实体接收数据,并为该实体储存接收的数据。例如,实体202(1)、202(2)、…、202(n)的每一个与受保护的存储设备206通信,以将数据存入受保护的存储设备206中。在图2的示例中,实体202(1)、202(2)、…、202(n)分别向受保护的存储设备206提供数据204(1)、204(2)、…、204(n)。实体202(1)到202(n)的每一个可将储存的数据密封到其自身,并且受保护的存储设备206提供执行这一密封的功能。向实体“密封”数据意味着以使得它只能向该实体释放的方式来储存数据。数据的密封通常是用密码来执行的-即,以使得解密数据所需的密钥仅对将数据密封到其上的实体可用的方式来加密数据。如图2所示,数据204(1)、204(2)、…、204(n)的每一个分别被密封到实体202(1)、202(2)、…、202(n)。
在受保护的存储设备206中储存并密封了数据之后,实体可请求受保护的存储设备206将被密封的数据提供回请求实体。在解封数据之前,受保护的存储设备较佳地执行请求实体的验证210,以确定请求实体是它所声称的实体。例如,数据204(1)被密封到实体202(1),由此不应当被提供给除实体202(1)以外的任何实体。由此,当对数据204(1)的请求进入受保护的存储设备206中时,受保护的存储设备确认请求实体的确是实体202(1)(如,通过核查实体202(1)的证书、通过计算实体202(1)的散列或校验和、或通过在实体202(1)上执行任何其它类型的测试)。在一个示例中,实体202(1)与一证明矢量208相关联,它指定了实体202(1)的各种安全属性,并且实体201(1)也可包含实体202(1)的证书或数字签名;该证明矢量可用于验证实体201(1)的确是它所声称的实体。作为认证/标识核查的一部分来验证这些证明矢量、签名、证书等的方式对本领域的技术人员是已知的,因此无需在此描述。
一般而言,可以某一方式标识的实体(如,软件对象、用户等)可促使数据被密封到其自身。通常,请求数据的密封存储的实体是软件对象(如,应用程序、代理、设备驱动程序等等)。
为了图2的目的,假定存在某一受保护的存储设备,它能够将数据密封到实体,并且当被除将数据密封到其上的实体之外的任何实体请求时,拒绝对密封数据的访问。此外,假定受保护的存储设备206具有或运行于一环境,其具有足够的隔离、防篡改等特征,以实施密封到实体的数据仅对该实体可访问的特征。实现这一受保护存储设备的方式对本领域的技术人员是显而易见的,因此无需在此详细描述。在一个示例中,受保护的存储设备可运行在提供存储器隔离、安全引导和每一平台密码密钥的硬件实施安全性的环境。
作为使用密封存储的实体的文件锁定器可使用密封存储的一种类型的实体是文件锁定器。文件锁定器从软件接收文件,并使用受保护的存储设备来将那些文件密封到其自身。文件锁定器然后接收对文件的请求,并管理可向请求软件对象提供那些文件的各种政策。例如,当接收对文件的请求时,文件锁定器可确定请求者是否具有对所请求的文件的访问权限,并且当且仅当存在这一权限时,可促使文件从受保护的存储中解封。此外,如果请求者的确具有对文件的访问权限,则文件锁定器可要求在文件处于“锁定器”之外时监视请求的软件对象的行为,以防止该实体对文件的错误使用。
图3示出了从软件对象接收文件,并使用受保护的存储设备来将那些文件密封到其自身的文件锁定器302。在图3的示例中,软件对象310具有它希望写出到文件的某些数据301。数据301然后被写出到文件306,并且该文件被提供给文件锁定器302,以使其被保护,应当注意,软件对象310可以知道或不知道它正在向文件锁定器306提供文件。在一个示例中,软件对象310作出文件锁定器306的明确且有意图的使用来保护文件;在另一示例中,软件对象310仅使用标准的文件写API,并且将写出的文件储存在文件锁定器中的功能被更新到该API。其中可发生文件锁定器的使用的各种示例情形在下文“示例情形”一节中描述。
当文件锁定器302接收文件306时,文件锁定器302将文件306储存在受保护存储设备206中。文件锁定器302然后将文件306密封到其自身。应当注意,在一个较佳的实施例中,传送到文件锁定器302用于储存的任何文件被密封到文件锁定器302,并且不被密封到该文件的原始来源-例如,文件306被密封到文件锁定器302,并且不被密封到软件对象310。如上所述,软件对象310可能不知道它正在使用文件锁定器302,并且可能无法直接使用密封的存储;由此,通过将所有的文件密封到其自身,文件锁定器302允许不能直接使用密封存储的软件对象得益于对密封存储的某些保护。
文件锁定器302将文件306储存在受保护的存储设备206中。较佳地,文件锁定器302将标识符304与文件306相关联。标识符较佳地标识文件,并也指示哪些软件对象最终可访问该文件。标识符304可以用对文件锁定器302可访问的索引来储存,尽管标识符不必储存在密封存储中。具体地,文件锁定器302应当能够在密封存储之外访问标识符,以当对这一文件的请求进入时,确定需要从密封存储中检索哪些文件(以及在解封之前必须满足什么条件)。
当文件锁定器302接收对在文件锁定器302的监护之下的文件的请求时,文件锁定器302执行验证312。验证312不限于任何特定类型的验证。在一个示例中,验证312对请求者执行。例如,在图3中,软件对象310请求文件(如,它先前传送到文件锁定器302的监护之下的同一文件306),并且作为文件锁定器302提供的安全性的一部分,文件锁定器302执行某一类型的验证312,作为提供所请求的文件的先决条件。本发明不限于任何特定类型的验证312,尽管示例可包括核查软件对象310的身份(如,核查软件对象310的证书、或计算软件对象310的校验和或散列并将所计算的值与储存的值相比较等等),或核查软件对象310的真实性(或软件对象310的调用栈的真实性等)的核查。然而,在许多情况下,在请求者本身上执行验证是不可能的,因此文件锁定器302可执行某一其它类型的验证-如,通过经由安全输入/输出要求用户确认他打算编辑特定文件、或通过确保被注册为文件所有者的人类用户当前登录到文件锁定器或登录到文件锁定器所运行的环境。文件锁定器302被设计成确保在向请求软件对象提供文件之前满足某些安全参数,尽管本发明不限于任何特定的安全参数组,或确认是否满足这些参数的任何特定机制。
如果验证312的结果是有利的(即,如果满足了相关安全参数),则文件锁定器302确定软件对象310被授权来检索请求的文件。文件锁定器302然后与受保护的存储设备206通信,以解封并检索文件306。文件锁定器302然后将文件306提供回软件对象310。
在软件对象310完成了文件306之后,软件对象310可通过将文件(包括软件对象310作出的任何修改)传送回文件锁定器302的监护,来“登记”所检索的文件。
应当注意,软件对象310不限于任何特定类型的软件。作为示例,软件对象310可以是应用程序、应用程序的服务代理、运行其它程序的操作环境、可在其上运行操作系统的虚拟机器等等。
文件锁定器可操作的示例情形其中文件锁定器可操作的一个示例情形是具有不同安全性或保护级别的多个环境并发运行的系统。图4示出了这样一个情形。
在图4中,存在并发操作的多个环境(“环境1”、“环境2”、“环境3”和“环境4”)。这些环境可在单个机器上或分布式机器集群上操作。每一环境可以是操作系统、虚拟机器或其中可发生某一类型的代码执行的任何其它类型的环境。不同的环境维持与某一级别的彼此的隔离一即,至少在某一程度上(尽管不必到绝对确定性的程度),一个环境中的操作在没有另一环境的干扰下发生应当是可能的。不同的环境可提供不同的安全性级别。例如,环境1可以是高安全性或高保证环境,它仅允许非常有限的程序组运行,并提供相对较少的功能,但也提供对于在该环境中执行的功能将正确执行并且没有来自其它环境中引发的事件的侵扰的高保证程度。在范围的另一端,环境4可以是完全开放的环境,其中,准许运行任何代码,但是对于始发于另一环境的侵扰或篡改提供极少的保证。管理程序(hypervisor)或虚拟机器监视器404(或某一类似的组件)可管理这些环境的并发操作,且也可提供将环境彼此隔离所需的服务。
在环境1是高安全性或高保证环境的示例情况下,文件锁定器302作为该环境中的软件对象运行。向运行在环境1中的对象提供密封存储的能力是环境1的特征-即,环境1提供了密封的存储接口406,其中,环境1中的对象可使用该接口来将数据储存在密封的存储设备402中(它可以是图2和3所示的受保护的存储设备205的一部分或与其相同),并将数据密封到它们本身。应当注意,密封的存储设备402是环境1的一部分的情况仅是一个示例;作为替换,密封的存储设备可以由虚拟机器监视器/管理程序404或具有足够安全性特征的任何其它组件来提供。
各种不同类型的软件对象可使用文件锁定器302来储存文件。例如,应用程序412(在本示例中,运行在环境3中)可将文件储存在文件锁定器302中。作为另一示例,环境3本身可以是能够将文件储存在文件锁定器302中的软件对象-例如,环境3可通过接受来自应用程序的用于储存的文件,然后将它们储存在文件锁定器302中,令文件锁定器302的存在对运行在环境3中的应用程序透明。作为又一示例,代理410(即,运行在高保证环境中以向运行在较低保证环境中的应用程序提供安全服务的小应用程序)可使用文件锁定器302来储存文件。应当注意,代理410运行在环境1中,其中,它能够自己使用密封的存储接口406;然而,对于代理410更方便的是,使用由文件锁定器302提供的文件锁定器302的服务(如,文件管理服务等),而不是(重复性地)自己实现那些服务。
当从文件锁定器302释放文件(或释放到环境3以供应用程序402使用)时,保护者(angel)408可任选地监视应用程序402(或环境3)的行为,以确保当文件处于文件锁定器302的监护之外时文件不被错误使用。保护者408是在环境1中操作的代理,其功能是通过监视(并可能控制)其行为来令运行在较低安全性环境中的软件对象更安全。尽管当文件处于文件锁定器302的监护之外时监视其使用是有用的,然而并非每一安全模型都要求这一监视;对于大多数安全模型,允许文件锁定器302的监护之外的文件遭受篡改、错误使用和干扰是可接受的,只要一旦在文件被登记回文件锁定器302的监护时确定它不会遭受篡改、错误使用或干扰即可。
下文描述在其中可使用文件锁定器302的某些示例情形。
其中可使用文件锁定器的示例情形以下是可在其中使用文件锁定器的示例情形1.手动解锁。授权用户(由任何标准系统规则或通过直接登录到文件锁定器的用户界面来确定)要求文件锁定器解锁文件。文件锁定器通常向用户提供文件的解锁(未加密)副本以供用户使用,而保留原始的文件。或者,可允许用户直接访问源文件。文件锁定器不将密钥给予用户,而仅提供文件的明文版本以供用户察看、编辑等等。
有了解锁的文件之后,用户使用普通的工具/应用程序来操纵它。
当完成之后,用户将改变的文件提交给文件锁定器。文件锁定器然后加密并密封该文件。
可任选地,在文件被发送回它所起源的文件保留器(服务器等)之前,可要求用户察看下载的文件和提交的文件之间的文件差异清单。该差异清单较佳地使用安全视频来显示(即,具有高保证程度的视频,保证了文件锁定器造成在屏幕上显示的差异实际上是用户看到的差异,因为视频输出的截听会造成潜在的安全漏洞)。
用户可在将文件提交回文件锁定器之前任意次数地编辑文件,或者完全不编辑文件;或者,情况也可以是用户从不将文件提交回文件锁定器。
在这一模型中,文件锁定器可确保文件到达用户的机器而不被损坏或改变。它也可确保文件在用户明确地要求使用文件之前不被读取或改变,因此文件的任何破坏或其内容的攻击必须在它“打开”时发生(即,在用户端,当文件已知在文件锁定器的控制和监护之外)。
文件锁定器可具能够有向用户显示至少某些文件格式的能力,使得用户可在决定解锁这些文件(并将它们暴露给病毒或其它安全风险)之前安全地读取文件锁定器中的文件。
2.投影的解锁。在投影的解锁中,文件锁定器仅将文件展现为其代码ID(codeID)是在批准列表上的特定二元体(binary)。较佳地,也要求用户登录,使得文件只能被释放到二元体和用户的正确组合。为计算不运行在高保证环境中的软件对象的代码ID,采用了某种形式的“投影”。在本上下文中,“投影”指这样一种情况,运行在高保证环境中的代理监视和/或映像运行在非高保证环境中的软件对象的行为,以提供对非高保证软件对象的行为的某一程度的安全性。在本示例中,可以是这样一种情况,文件锁定器仅向保护者(即,对于特定非高保证应用程序执行上述投影的代理),或对主保护者(即,对一般的应用程序而非特定的应用程序或应用程序组执行投影的代理)解封并展示数据。在一个较佳的实施例中,保护者然后将数据直接注入到应用程序的地址空间。例如,运行在非高保证环境中的MICROSOFT EXCEL电子表格可调用计算其版本和代码ID的库,然后调用高保证环境。高保证环境可确认版本和代码ID。高保证环境将向非高保证环境(或至少向EXCEL程序)应用投影,因此代码ID将是合理地耐用的(即,人们要编辑EXCEL的代码是困难的)。EXCEL然后再次调用该库,以读取文件数据,并且该数据出现在EXCEL的地址空间中。具有来自非高保证环境的某些协作,保护者能够在EXCEL空间中的页面被分页输出(page out)之前对那些页面加密。它也可以阻挠对调试EXCEL的尝试。
因此,在这一模型中,信任者(本地和远程的)可确认仅文件锁定器和EXCEL的经批准的版本(没有病毒或其它未被批准的行为的版本)能够看见明文。另外,由于具有投影效果,EXCEL的该版本是耐用的,并且数据在盘上不是明文。
在对于特定应用程序的行为(如,EXCEL)的不确定性可被容忍,且预防的主要威胁是其它软件时,这一情形提供了足够的安全性。在这一情形中,可使用由安全视频来显示以及在重新锁定前允许差异比较的特征。
3.组合了装瓶(bottling)的文件锁定器。“装瓶”指这样一种情况,一组应用程序运行在容器、分区或“瓶”的内部,其中,维持了某一级别的行为可预测性和与其它瓶的隔离度。例如,瓶可以是或包含某些受限制的操作系统(如,WINDOWS XP的小配置),或具有运行某一操作操作系统的访客的虚拟机器。容器、容器操作系统和运行在容器中的应用程序或应用程序组都是“瓶”。可使用投影来应用瓶内的投影。
给定一个瓶,文件锁定器可被设置成将文件释放到瓶或瓶内的某一特定的应用程序,并仅在瓶内具体化明文格式的数据。(瓶作为一个整体是用密码分页的,因此一旦数据在瓶中,它对瓶外的任何东西都是安全的。)情形#3本质上是#2的更有力的隔离的版本。它对于具有动态链接库树等的应用程序组(如,MICROSOFT OFFICE应用程序套件)能够起较好的作用,并且对于在装瓶的应用程序下的操作系统作出了相对强健的声明。(即,由于瓶中的操作系统较佳地是受约束且被证明的迷你操作系统,因此可以很大程度地信任,例如某些恶意欺诈的驱动程序不会将数据盗窃到运行在操作系统上的应用程序之外,因为这类恶意欺诈的驱动程序不被允许在瓶内运行。
4.将文件提交给文件锁定器的第一软件对象可能是本地或远程的,并且可能以加密或未加密形式提交文件(如,服务器可以预先加密的形式,或者为传输而加密,但文件锁定器可以对它重新加密的形式将文件发送给文件锁定器)。使用文件的一个或多个软件对象可能不同于最初将文件放在锁定器中的软件对象-即,文件可以从一个对象到达锁定器,并且稍后由不同的对象使用。它然后可被提交(或不提交)回第一对象,或提交给某一不同的对象。
5.将文件提交给文件锁定器的(第一)软件对象可指定文件锁定器要在文件上实施的本地规则。这类规则可包括要求诸如(1)文件的所有版本都被记入日志,因此不管在另一环境(如,不可信环境)中的不同软件对象作出了什么变化,变化总是可以被撤消的。(2)要求所有的改变由人类用户(具有某一类型的浏览器/差异查看器的安全输入和安全输出)审阅,并且由人类证明是“预期的”(或不是预期的)并将此证明与变化一起储存。这一技术在处理文件的第二软件对象是较差受控的情况下是有用的。基本思想是文件锁定器将保存例如word的.doc文件的所有版本。在用应用程序(如,Word)编辑了文件并将其写回文件锁定器(可能是透明地)之后,文件锁定器可要求用户确认。用户可采用一种运行在可信环境中用于.doc文件的简单的“查看器”,并通过安全输入直接告诉文件锁定器这些变化是用户预期的。以这一方式,即使病毒导致底层应用程序(如,Word)意外地运作,并以意外的方式编辑文件,用户也可采用文件锁定器来撤消任何这样的变化,或确保仅用户预期的变化得以“记入日志”。
6.代表第一软件对象或本地用户的文件锁定器可向文件应用各种一致性核查。例如,它可在由应用程序写出的文件上运行病毒和正确性核查器。基本思想是文件变化将被保存,但不被“正式地记入日志”,直到已知文件没有病毒、没有被破坏等等。这一技术可以与上文在#5中描述的技术组合。
7.文件锁定器可让给定的软件对象访问文件,只要采用安全输入的人类用户表示它被准许来这样做。这可以在通用的基础上完成(如,如果用户“fred”登录到文件锁定器,则任何工具可看见fred锁定的文件),或在专用的基础上完成(如,当Word试图访问fred的文件“my taxes 2003”时,文件锁定器直接询问fred这是否可以)。另外,用户可“预解锁”所有或特定的文件。(因此,用户到达文件锁定器,并表示他们希望使用文件a.doc和b.doc)。那些文件被允许来访问(采用或不采用证明矢量核查)。当用户注销时,或者可能在某一超时之后,所有这些“访问允许”比特过期。此外,用户可解锁文件用于读或读写。用户可执行将一组特定的改变记入日志或制成版本。
8.文件锁定器可基于两种标记占用符(stakesholder)将版本历史记入或不记入日志、保存或不保存版本历史。它可以在人类用户的命令下完成(或者作为政策,或者作为对文件创建对话框的回复),或者,它可以响应于当由第一对象创建时与该文件一起发送的命令来完成。(因此,授权的客户机可在文件创建时设置“保存版本、将变化记入日志、要求变化的证明”。)9.在打开文件时,文件锁定器可透明地总是返回文件的最后一个被证明的版本。
10.文件锁定器可将诸如文件名、作者、文件缩略图等公共概要信息与文件一起储存。这些概要信息的一部分可以被默认地导出(文件名),其它概要信息可以在创建时被附加到文件,而另外一些概要信息可由为文件锁定器检查文件的某一可信工具来计算。文件锁定器然后允许来自较不可信的环境的某些服务调用能够看见概要信息,而其它调用将看不到任何内容,除非文件被解锁。例如,当.tiff文件进入文件锁定器时,进入文件锁定器的软件对象可以向文件锁定器声明该文件的缩略图。在请求时,缩略图(可以在不同的关联文件中,或在流中,等等)可被给予请求它的第二软件对象。这允许,例如运行在普通非可信虚拟机器(或其它环境)中的文件资源管理器能够看见缩略图、文件名、word.doc概要数据等等。它可允许关键词搜索。但是从文件中读取实际数据将要求用户解锁文件用于读,或解锁文件用于读/写,或第二软件对象具有正确的证明矢量等等。
11.在一个示例中,一种类型的攻击可以是应用程序(如,Word)被以某一方式修改,以将垃圾信息写入文件中并删除备份版本。为停止这一类型的攻击,文件锁定器可在允许对最后一个被证明的版本进行进一步编辑前,确保文件的每一证明的变化被保存到远程文件存储或本地可信文件存储中。由此,每次当用户采用运行在可信环境中的程序来证明变化合法时,文件锁定器将该文件的加密的/hmac认证的,以及可任选的经签署的版本发送到可信存储或远程存储。当看到该过程成功时,文件可被再次编辑。在这一环境中,客户机计算机上的病毒或其它攻击者除删除用户当前打开/未证明的编辑,以及令用户向远程/可信存储请求文件的最后一次登记的版本之外不能做任何其它事情。文件锁定器加密文件并在文件锁定器对可施加的任何要求满意之前拒绝释放的能力给了它实施这一规则的能力。
使用文件锁定器的示例过程图5示出了文件锁定器用于储存和检索文件的示例过程。最初,软件对象将文件提供给文件锁定器,以将文件放置在文件锁定器的监护之下(502)。文件锁定器然后在密封存储设备中将文件密封到其自身(504)。
在某一时间量过去之后,软件对象可请求文件锁定器将文件提供回软件对象(506)。文件锁定器执行软件对象的某一类型的验证(508);如上所述,本发明不限于任何特定形式的验证,尽管验证可包括请求软件对象的身份、真实性等的核查。
如果验证通过(510),则将请求的文件提供给软件对象(514)。在软件对象拥有文件的期间,文件锁定器(或与文件锁定器协作的某一组件)可任选地监视和/或控制请求软件对象的行为(516),以确保在从文件锁定器中取出时文件不被错误使用。当请求软件对象完成该文件时,文件被返回到文件锁定器的监护(518)。
如果在510,验证未通过,则文件锁定器不会促使文件被解封,并且文件不被提供给请求实体(512)。
应当注意,如在516中,当文件处于文件锁定器的监护之外时保护文件不被错误使用不是强制的。尽管可以实现当文件处于文件锁定器的监护之外时防止文件被错误使用的文件锁定器,然而文件锁定器仅确保在处于文件锁定器的监护中时文件不被篡改,而不确保处于文件锁定器的监护之外时会发生什么事情,也是一种可接受的安全模型。确保仅当人类用户表示文件应当离开其监护,或者当授权的人类用户表示它应当这样做时,文件才离开其保护。
在没有“可信存储”的系统上,攻击者可删除文件锁定器的监护中的加密文件,由此破坏了它们并丢失了未保存在别处的工作。即使如此,文件锁定器在这一环境中也是有用的。这一因为(a)它可证明对那些文件没有令人惊讶的修改,并可强制任何修改在被接受前都被安全地审阅,并且(b)它可防止文件的内容在不活动使用时以任意方式被展示。在具有“可信存储”的系统上,文件锁定器可使用其来进一步确保文件在其监护下不会被删除,并可保留记入日志的版本,使得即使在其监护之外,仅对文件的最近改变会丢失。
注意,上述示例仅为解释的目的而提供,在任何方面都不被解释为对本发明的局限。尽管参考各种实施例描述了本发明,然而应当理解,此处所使用的词语是描述和说明的词语,而非限制的词语。此外,尽管此处参考特定的装置、材料和实施例描述了本发明,然而本发明并不旨在限于所解释的细节;相反,本发明延及落入所附权利要求书范围之内的所有功能上等效的结构、方法和使用。从本说明书的教程得益的本领域的技术人员可在不脱离本发明各方面的范围和精神的情况下实施各种修改和改变。
权利要求
1.一种使用文件管理组件来保护文件的方法,其特征在于,所述方法包括从一对象接收文件;使用一数据存储系统将所述文件密封到所述文件管理组件,所述数据存储系统能够从指定类别的组件接收数据,并将接收到的数据密封到一个或多个所述组件,使得所述数据不能由未向其密封数据的任何组件解封,所述文件管理组件是所述指定类别组件之一;基于发出对所述文件的请求的对象是否被授权来打开所述文件来限制对所述文件的访问,对于发出请求的所述对象是否被授权的确定是由所述文件管理组件作出,如果发出请求的所述对象被授权来打开文件,所述文件管理组件促使文件从所述数据存储系统中解封。
2.如权利要求1所述的方法,其特征在于,还包括在所述文件由所述对象使用期间,监视和/或控制所述对象的行为。
3.如权利要求1所述的方法,其特征在于,所述对象与一标识所述对象的证明矢量相关联,并且限制访问的所述动作基于对所述对象的关联证明矢量的核查。
4.如权利要求1所述的方法,其特征在于,所述对象包括一通过文件打开接口调用来打开所述文件的程序,并且其中,所述文件打开接口调用被配置成通过所述文件管理组件请求所述文件,由此,所述文件管理组件的使用对所述对象是透明的。
5.如权利要求1所述的方法,其特征在于,所述对象包括其中可运行程序的第一操作环境。
6.如权利要求1所述的方法,其特征在于,所述方法是在并发地提供两个或多个操作环境的计算装置上执行的,所述环境的第一个是高保证环境,它提供了对符合第一环境的期望行为的第一级别的保证,所述环境的第二个是相对低保证的环境,它提供了对所述第二环境符合所述第二环境的期望行为的第二级别的保证,第二级别的保证相对低于第一级别的保证,其中,在所述数据存储设备中密封数据的能力是所述第一环境的特征,其中,所述文件管理组件运行在所述第一环境中,并且所述对象运行在所述第二环境中。
7.如权利要求6所述的方法,其特征在于,所述指定的类别限于运行在所述第一环境中的组件。
8.如权利要求1所述的方法,其特征在于,发出对文件的请求的所述对象不同于从其接收文件的对象,发出请求的对象被授权来打开文件。
9.如权利要求1所述的方法,其特征在于,从其接收文件的对象在所述文件的使用上施加一规则。
10.如权利要求9所述的方法,其特征在于,所述规则是下列的至少一个将文件的所有先前版本记入日志的要求,由此,保存在所述文件锁定器中的文件的先前版本可以被恢复;以及在由文件锁定器储存文件之前用户参与与文件锁定器的输入会话的要求,所述会话以以下方式来执行确保用户肯定地表达保存文件的期望,并且向用户提供在提供相对高保证程度的情况下察看对文件的任何改变的机会,所述相对高保证程度保证了用户看见的文件的视图正确地示出了文件和作出的任何改变。
11.如权利要求9所述的方法,其特征在于,还包括储存关于所述文件的概要信息,其中,所述文件管理组件准许在不允许访问文件的至少一个情况下访问概要信息。
12.一种包括逻辑的文件锁定器,所述逻辑接收文件、促使所述文件被密封到所述文件锁定器以使所述文件只能由文件锁定器解封、从对象接收对所述文件的请求、验证所述对象是否被授权来接收所述文件、以及依照所述对象是否被授权来接收所述文件向所述对象提供所述文件或不能提供所述文件。
13.如权利要求12所述的文件锁定器,其特征在于,所述文件锁定器在提供两个或多个操作环境的计算装置上操作,所述文件锁定器在所述环境的第一个中操作。
14.如权利要求13所述的文件锁定器,其特征在于,所述对象是第二环境。
15.如权利要求13所述的文件锁定器,其特征在于,所述对象在所述环境的第二个中操作。
16.如权利要求15所述的文件锁定器,其特征在于,所述第一环境提供了比所述第二环境相对更高的免受威胁的保护级别。
17.如权利要求16所述的文件锁定器,其特征在于,一组件在所述第一环境中执行,它在所述文件由所述对象使用过程中监视和/或控制所述对象的行为。
18.如权利要求16所述的文件锁定器,其特征在于,存在一解封所述文件所需的密码密钥,并且所述第一环境提供了一保证级别,保证所述密码密钥不能在所述第一环境外使用。
19.如权利要求12所述的文件锁定器,其特征在于,所述对象与一标识所述对象的证明矢量相关联,并且所述逻辑确认所述证明矢量,并且如果所述证明矢量确认失败,则拒绝对所述对象的访问。
20.如权利要求12所述的文件锁定器,其特征在于,从其接收所述请求的所述对象不同于从其接收所述文件的对象,并且其中,从其接收所述请求的所述对象被授权来接收所述文件。
21.如权利要求12所述的文件锁定器,其特征在于,所述文件锁定器将由所述文件锁定器接收或储存的所述文件的所有版本记入日志。
22.如权利要求12所述的文件锁定器,其特征在于,所述文件锁定器在接收所述文件时参与与用户的交互式会话,所述会话请求用户确认储存所述文件的当前版本的期望,所述会话包括所述文件锁定器和所述用户之间的通信,它在提供相对高保证级别的情况下发生,所述保证级别保证所述文件锁定器和所述用户之间的通信不受损害。
23.一种用计算机可执行指令编码的计算机可读介质,所述指令用于执行一种方法,包括在一文件管理组件处接收文件;将所述文件密封到所述文件管理组件;从一请求者接收对所述文件的请求;验证所述请求者被授权来接收所述文件;如果所述请求者被授权来接收所述文件,则解封所述文件,并将所述文件提供给所述请求者,否则,不解封所述文件,并且不将所述文件提供给所述请求者。
24.如权利要求23所述的计算机可读介质,其特征在于,还包括保护所述文件不被访问,除非当接收到来自所述请求者的请求并且所述请求者被验证为被授权来接收所述文件时。
25.如权利要求23所述的计算机可读介质,其特征在于,所述文件是在所述文件管理组件处从所述请求者接收的。
26.如权利要求23所述的计算机可读介质,其特征在于,所述请求者是生成或操纵所述文件的软件对象。
27.如权利要求26所述的计算机可读介质,其特征在于,所述请求者通过一接口将所述文件提供给所述文件管理组件,所述接口令所述文件管理组件的存在或使用对所述请求者是透明的。
28.如权利要求26所述的计算机可读介质,其特征在于,所述文件管理组件在第一环境中操作,并且所述请求者在第二环境中操作,并且其中,所述第一环境提供比所述第二环境相对更高的免受一组所定义的威胁的隔离或保护级别。
29.如权利要求28所述的计算机可读介质,其特征在于,所述文件管理组件通过使用一数据存储设备将所述文件密封到所述文件管理组件,所述数据存储设备对在所述第一环境中操作的实体可用,而对在除所述第一环境之外的任何环境中操作的实体不可用。
30.如权利要求28所述的计算机可读介质,其特征在于,所述方法还包括使用所述第一环境中的一组件在所述文件由所述请求者使用的过程中监视和/或控制所述请求者的行为,由此所述文件被保护在所述文件被解封期间免遭错误使用。
31.如权利要求23所述的计算机可读介质,其特征在于,还包括对所述文件的使用施加一规则,所述规则包括下列的至少一个在将文件的新版本保存到所述文件管理组件中之前将文件的每一版本记入日志的要求,由此,所述文件的先前版本可被检索;以及在将所述文件的新版本保存到所述文件管理组件之前所述文件管理组件和用户参与通信的要求,其中,所述通信在提供相对高保证程度的情况下发生,所述保证程度保证所述通信不受损害。
32.如权利要求31所述的计算机可读介质,其特征在于,所述通信包括向用户显示正要保存在所述文件管理组件中的所述文件的新版本,并要求用户确认所述新版本对用户是可接受的。
33.如权利要求23所述的计算机可读介质,其特征在于,还包括在将所述文件保存到所述文件管理组件之前,验证所述文件符合一预定标准。
全文摘要
一种文件锁定器为软件对象管理受保护的数据的存储和使用。受保护的环境维护密码和隔离的基础结构,以支持由可信代理使用的数据项的密封。文件锁定器使用受保护环境的密封功能来密封数据项,用于文件锁定器的独占访问。文件锁定器将从软件对象接收的文件密封到其自身,在请求时,并在足以证明请求者的可信性、真实性和/或身份之后提供那些文件。文件锁定器可用于将受保护环境的密封功能扩展到传统应用程序,而不需要传统应用程序必须实现可运行在受保护环境中并直接访问密封功能的代理。
文档编号G06F21/00GK1690910SQ20051005617
公开日2005年11月2日 申请日期2005年3月23日 优先权日2004年4月23日
发明者B·M·维尔曼 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1