事务性存储系统通常至少部分地提供多个期望事务性属性,诸如常常使用缩写“ACID”描述的原子性、一致性、绝缘性和持久性。具体地,原子性指执行一事务使得或者该事务内的所有变化都被提交、或者该事务内的变化都不被提交。该事务被视为是“原子的”,因为该事务内的改变被视为是整体的并且不能分成更小的子集。一致性指在事务开始时和事务完成时存储系统都处于合法状态。这表示事务不能破坏存储系统的规则,这可被称为完整性约束。例如,如果存储系统具有同一目录中的任意两个文件必须具有不同名称的规则,则导致同一目录内有具有相同名称的两个文件的任意事务将被丢弃。
绝缘性指确保尝试并发地修改存储系统状态的多个程序不干扰彼此的能力。理想地,即使实现可并行地执行多个修改,存储系统也像这些修改是以某顺序进行一样动作。持久性指一旦事务被成功提交事务就将持久且不会被取消的保证。例如,这表示已提交事务将在系统故障时幸存,并且已提交事务将满足存储系统的完整性约束。
为了说明具体地为原子性属性的事务性属性的某些优点,考虑使各种财务事务能从个人计算机执行的在线银行应用程序。该应用程序将把信息储存在本地盘上,诸如银行帐户的当前状态、帐户上的过往交易记录、以及历史股价信息。假设应用程序正在处理股票购买,并且该应用程序已用记入借方的款项更新了银行帐户以支付新购买的股票。还假设,就在用新购买的股票更新证券组合之前,个人计算机曾掉电。在一非事务性存储系统中,在供电恢复后,所储存的数据将示出股票支付,但在证券组合中并没有股票。显然,这种情形会导致相当大的混乱和问题。大多数这种应用程序将可能在桌面的许多不同地方更新信息,并且找出对磁盘的更新会失败的所有可能途径可能会是相当费时和费力的。因而,对每种情形编写专用的恢复代码并不可行。事务性存储系统以一种系统方法来解决这些问题。或者执行所有更新,或者不执行任何更新。在这两种情形中,存储系统中的信息都保持一致。
一些存储系统仅仅对它们所储存数据的一部分是事务性的。例如,广泛使用来自华盛顿州雷蒙德市微软公司的新技术文件系统(NTFS)是一种这样的部分事务性文件系统。NTFS对文件元数据是事务性的,但对文件内的数据不提供完全的事务性保证。这些部分事务性存储系统向所储存数据的事务性属性的益处对其最为有利的那些部分提供事务性属性,而不使所储存数据的全部承受与事务性系统相关联的管理复杂性的负担。
密封存储系统是一种不同的最近引入的存储系统,它提供与事务性存储系统不同的益处。密封存储系统将对底层数据的访问限制于一组一个或多个安全应用程序。以这种方式限制对数据的访问可以例如对抗病毒、木马程序、或其它可能尝试改变和/或破坏所储存数据的恶意程序。密封存储系统还可通过帮助保持所储存数据的机密性来保护其用户的隐私。在财务数据的以上示例中,银行应用程序可以是被允许读取或修改所储存数据的唯一安全应用程序。例如,这可防止恶意用户向要支付帐单列表添加一假造帐单、以其它方式以未获授权方式支取帐户、或阅读机密的财务事务。
以下将描述事务性密封存储系统。事务性密封存储系统使数据能根据事务性属性来访问,并且还使对数据的访问被限制于安全应用程序。根据其可访问数据的事务性属性可包括例如至少某一程度的原子性、一致性、绝缘性和持久性。对数据的访问可通过例如采用包括加密数据、并且还认证请求访问经加密数据的任何应用程序的双层安全策略来限制。事务性密封存储系统可以是部分事务性的,即只有一部分的底层密封数据是根据事务性属性来访问的。事务性密封存储系统还可以是部分密封的,即只有对一部分底层事务性数据的访问被限制于安全应用程序。
提供本概述是为了用简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在确定所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
具体实施方式
事务性密封存储系统可使用多种不同配置来实现。一种这样的配置包括在密封存储系统的顶部构建一事务性存储系统。该配置的一个示例在图1中示出。如图所示,该配置包括带有事务性部分109的密封数据集合101。事务性部分109可构成密封数据集合101的全部或不到全部。
密封数据管理器104管理对密封数据集合101的访问,使得密封数据集合101仅对一组安全应用程序是可访问的。该组安全应用程序包括至少一个应用程序。因而,尽管在图1中仅示出一个安全应用程序,但可以有一个以上的安全应用程序可以访问密封数据集合。密封数据管理器104可在操作系统中运行,或者它可在其中或自己构建一个独立的称为“安全操作系统”的操作系统。
密封数据管理器104可通过例如采用包括加密密封数据集合101、并且还认证请求访问经加密数据的任何应用程序的双层安全策略,来管理对密封数据集合101的访问。具体地,密封数据管理器104可持有能用来解密加密密封数据集合的密码解密密钥。在使该密钥对请求访问密封数据集合101的应用程序可用之前,密封数据管理器104可要求验证请求应用程序的身份。如果请求应用程序的身份不能得到验证,则可拒绝它访问密封数据集合101的请求。
密封数据集合101可以是比如本地盘或数据库的数据的任意集合。密封数据集合101可以仅仅是它存储其中的更大底层数据集合的一部分。例如,密封数据集合101可以仅仅是本地盘的一部分或数据库的一部分,其它部分对其它非安全应用程序可用。
事务性部分109是根据事务性属性可访问的密封数据集合101的一部分。这种事务性属性可包括例如至少某一程度的原子性、一致性、绝缘性和持久性。事务性部分109可例如包括密封数据集合101的根据事务性属性访问数据将最为有利的各个部分。或者,事务性部分109可例如包括密封数据集合101的根据事务性属性访问数据最为有效和/或最为成本-效果合算的各个部分。事务性部分109可包括密封数据集合101内数据组织的任何单元。例如,如果密封数据集合101是一关系数据库,则事务性部分109可包括组织的的单元,诸如完整的表格或表格的特定行或列。
事务性数据管理器102根据事务性属性管理对事务性部分109的访问。事务性数据管理器102可以是例如事务性数据管理系统(DBMS)。一种这样的事务性DBMS是来自华盛顿州雷蒙德市微软公司的SQL Server。
事务性部分109内的数据享有高效、安全、私密、以及与事务性存储和密封存储相关联的其它期望益处。为说明这些益处,考虑这样的情形:事务性部分109为财务数据,且安全应用程序103是先前描述的可访问和处理财务数据的财务应用程序。在该情形中,事务性部分109中的财务数据可享有事务性益处,比如对抗前述情形的保护:财务帐户被支取以支付新购买的股票,但在新购买的股票被记录到证券组合中之前发生掉电。此外,事务性部分109中的财务数据可享有比如机密性、私密和对抗尝试阅读财务数据的未获授权方的保护的安全性益处。此外,财务数据受到保护以对抗病毒、木马程序、或其它可通过例如为不存在的事物或以未获授权方式支取帐户来改变财务数据的其它恶意用户。
诸如图1中示出的密封配置之上的事务性配置比其它配置是更为优选的,因为除了在事务性密封存储系统中密封实际数据之外,它还具有密封有关那些访问实际数据的应用程序的管理数据的优点。这种管理数据的密封可以是有利的,因为例如它可保持有关安全应用程序103的过往行为的信息的机密性。
密封数据集合101可被分区,使得只有特定的安全应用程序才能访问该集合中的各个分区。图2中示出一示例性分区密封数据集合。如图所示,安全应用程序103z具有对分区101a的访问权,安全应用程序103y和103x具有对分区101b的访问权,而安全应用程序103w具有对分区101c的访问权。每个分区101a-c都具有相应的事务性部分109a-c。事务性部分109a-c可包括其相应分区101a-c的全部或不到全部。密封数据管理器104可持有针对分区部分101a-c的每一个的一组相对应独立的解密密钥,从而使得只有特定的安全应用程序能访问其相应的密封分区101a-c。尽管未在图2中示出,但单个安全应用程序可具有对一个以上分区的访问权。
如上所述,密封数据管理器104本身可构成一安全操作系统。在特定实例中,单个主存计算设备可被配置成多个“虚拟”操作系统可同时在单个主机上运行。这些虚拟操作系统之一可以是安全虚拟操作系统。使用该安全虚拟操作系统实现的一示例性事务性安全存储系统在图3中示出。如图所示,图3的系统包括管理程序212,它是用于管理单个主存计算设备210上的多个虚拟操作系统211a-c的众所周知的软件组件。安全虚拟操作系统211a是为安全应用程序103提供安全环境的虚拟操作系统(并且如果有其它安全应用程序存在于安全操作系统211a中可能是其它安全应用程序)。为了提供这个安全环境,安全虚拟操作系统211a将对密封数据集合101的访问限制于仅仅安全应用程序103。虚拟操作系统211b和211c是在在主机210上运行的其它虚拟操作系统。主机210可以包括多个虚拟操作系统并且可以包括多于一个安全虚拟操作系统。
密封数据集合101是磁盘220的一部分。正与图1中一样,密封数据集合101包括根据事务性属性可访问的事务性部分109。事务性数据管理器102根据事务性属性管理对事务性部分109的访问。密封数据集合101可被称为“虚拟盘”,因为它是磁盘220的其访问受安全虚拟操作系统211a管理的一部分。对磁盘220的其它部分的访问可由其它虚拟操作系统211a和211b管理。在图3中,磁盘220被示为整个地包含在主机210内的本地盘。这种整个包含的本地盘可以是例如本地硬盘。然而,磁盘220并非必需包含在主机210内。虚拟操作系统211a-c具有对外部盘的访问权是可能的。此外,尽管事务性数据管理器102也被示为包含在主机210内,但事务性数据管理器102仍然可以在主机210外部。
图3的系统可根据分层安全模型来实现。一示例性分层安全模型在图4中示出。在该模型的顶层是顶层密钥发布器400。顶层密钥发布器400可以是例如受信任平台模块(TPM)。一般而言,顶层密钥发布器400向第二层应用程序212a-c(其中之一为管理程序212a)发布密钥集401a-c。具体地,密钥集401a被发布给管理程序212a,密钥集401b被发布给第二层应用程序212b,而密钥集401c被发布给第二层应用程序212c。如可以理解地,尽管在图3中仅示出三个第二层应用程序212a-c,但可存在任意数量的第二层应用程序。三个密钥集401a-c的每一个都是针对其相应第二层应用程序212a-c的唯一和安全的密钥集。
管理程序212又向主机210上的三个虚拟操作系统211a-c的每一个提供密钥集。管理程序212然后发布三个独立和唯一的密钥401aa-401ac。尽管未在图3中示出,但其它第二层应用程序212b和212c可发布其它密钥。安全虚拟操作系统211a又发布三个独立和唯一的密钥401aaa-401aac。密钥401aaa用来加密图2的分区101a,密钥401aab用来加密图2的分区101b,以及密钥401aac用来加密图2的分区101c。如果安全应用程序103z请求访问分区101a,则安全操作系统211a可在认证安全应用程序103z之后向安全应用程序103z提供密钥401aaa以解密分区101a。如果安全应用程序103y或103x请求访问分区101b,则安全操作系统211a可在认证安全应用程序103x或103y之后向安全应用程序103x或103y提供密钥401aab以解密分区101b。如果安全应用程序103w请求访问分区101c,则安全操作系统211a可在认证安全应用程序103w之后向安全应用程序103w提供密钥401aac以解密分区101c。
除了在密封存储系统之上配置事务性存储系统之外,密封存储系统也可被配置在事务性存储系统之上。该配置的一个示例在图5中示出。图5的系统包括带有密封部分108的事务性数据集合105。密封部分108可构成密封数据集合105的全部或密封数据集合105的不到全部。
事务性数据集合105可以是比如本地盘或数据库的数据的任意集合。事务性数据集合105可以仅仅是它存储其中的更大底层数据集合的一部分。例如,事务性数据集合105可以仅仅是本地盘的一部分或数据库的一部分,其它部分包括非事务性数据。
密封部分108是事务性数据集合105的仅对相应的一组诸如安全应用程序103的一个或多个安全应用程序可访问的一部分。密封部分108可以例如包括事务性数据集合105的最高私密和机密部分,限制对其的访问将是最为有益的并且如果其数据被未获授权方访问和/或破坏则将导致最大风险。密封部分108可包括事务性数据集合105内数据组织的任何单元。例如,如果事务性数据集合105是一关系数据库,则密封部分128可包括组织的诸如完整表格或表格的特定行或列的单元。正像图1的事务性部分109一样,密封部分108内的数据享有高效、安全、私密、以及与事务性存储和密封存储相关联的其它期望益处。
除了在密封存储系统之上构建事务性存储系统(反之亦然)之外,事务性密封存储系统还可例如使用“统一”配置来实现。该统一配置可例如使用管理该存储系统的事务性方面和密封方面的单个统一数据管理器来实现。
图6中示出用于管理对事务性密封数据的访问的一示例性方法的流程图。在动作600,密封数据管理器104接收来自请求应用程序的访问事务性密封数据的请求。在动作602,密封数据管理器104确定请求实体是否是一安全应用程序。如果请求应用程序不是安全应用程序,则在动作606其请求将被拒绝。请求应用程序是否是一安全应用程序的判定可通过例如检查密封事务性数据对其可用的安全应用程序列表来作出。当然,请求应用程序必须是针对其请求访问的密封事务性数据部分的安全应用程序。例如,再参看图2,尽管应用程序103z是一安全应用程序,但它仅对分区101a安全。因而,如果安全应用程序103z请求访问分区101b,则其请求将被拒绝,因为它对分区101b是不安全的。
如果请求应用程序是一安全应用程序(或至少声称是一安全应用程序),则在动作604密封数据管理器104尝试认证请求应用程序的身份。在动作608,确定请求应用程序是否可被认证。如果请求应用程序不能被认证,则在动作606其请求被拒绝。另一方面,如果请求应用程序被认证,则在动作610向请求应用程序提供适当的解密密钥。然后,在动作612,事务性数据管理器102根据事务性属性管理请求应用程序对事务性密封数据的访问。
认证过程可通过例如计算唯一标识请求应用程序的应用程序可执行文件的散列值来执行。所计算的散列值然后与所储存的请求应用程序所声称的应用程序的散列值作比较。如果两值相匹配,则请求应用程序被认证,而如果不匹配则请求应用程序不能被认证。
作为上述双层加密和认证策略的替换方案、或除此之外,密封数据管理器104可采用众多其它技术来管理对密封数据的访问。例如,当它接收来自应用程序的读取或写入密封数据集合内的数据的请求时,密封数据管理器104可作为过滤代理来运行。具体地,密封数据管理器104可校验请求应用程序的访问权限,并且如果请求被许可则执行所请求的操作。此外,密封数据管理器104可指示底层硬件或操作系统准许安全应用程序对密封数据集合的访问。另外,除了上述双层加密和认证策略之外,可采用其它安全系统来防止欺诈程序或应用程序修改经加密数据。
图7示出了其中可实现参照图1-6所述的主题的合适计算环境100的一个示例。计算系统环境100仅为合适计算环境的一个示例,并非对上述主题的使用范围或功能提出任何局限。也不应将计算环境100解释为对示例性计算环境100中示出的任一组件或其组合具有任何依赖或需求。参考图7,计算系统环境100包括计算机110形式的通用计算设备。该计算设备110的组件可包括但不限于,处理单元120、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构中的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构中的任一种的局部总线。作为示例而非局限,这类体系结构可包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、以及外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它介质。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,它通常储存在ROM 131中。RAM 132通常包含处理单元120立即可访问和/或当前正在操作的数据和/或程序模块。作为示例而非局限,图7示出了操作系统134、应用程序135、其它程序模块136和程序数据137。计算机110也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图7示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器141,对可移动、非易失性磁盘152进行读写的磁盘驱动器151,以及对可移动、非易失性光盘156,如CD-RW、DVD-RW或其它光介质进行读写的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到系统总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。
上文讨论并在图7中示出的驱动器及其相关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图7中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。用户可以通过输入设备,如键盘162和定位设备161(诸如鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线121的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。图形接口182也可连接到系统总线121。一个或多个图形处理单元(GPU)184可与图形接口182通信。监视器191或其它类型的显示设备也通过接口,如视频接口190连接至系统总线121,视频接口190又可与视频存储器186通信。除了监视器191之外,计算机还可包括其它外围输出设备,诸如扬声器197和打印机196,它们通过输出外围接口195连接。
计算机110可以使用到一个或多个远程计算机,如远程计算机180的逻辑连接在网络化或分布式环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且通常包括许多或所有以上相对于计算机110所描述的元件,尽管在图7中仅示出了存储器存储设备181。图7描述的逻辑连接包括局域网(LAN)181和广域网(WAN)173,但也可包括其它网络/总线。这类网络环境常见于家庭、办公室、企业范围计算机网络、内联网以及因特网。当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过WAN 173,如因特网建立通信的其它装置。调制解调器172可以是内置或外置的,它通过用户输入接口160或其它适当的机制连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可被储存在远程存储器存储设备中。作为示例而非局限,图7示出远程应用程序185驻留在存储器设备181上。应该理解示出的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它手段。
尽管以对结构特征和/或方法动作专用的语言描述了本主题,但是可以理解所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,所描述的具体特征和动作是作为实现所要求保护的主题的示例性形式来公开的。