用于利用安全飞地来强化数据加密的技术的制作方法

文档序号:13350685阅读:439来源:国知局
用于利用安全飞地来强化数据加密的技术的制作方法

本公开总体上涉及用于利用一个或多个安全飞地(enclave)来强化数据加密的技术。更具体地,本公开涉及用于利用可以在用户模式下和/或在预引导情境下运行的安全飞地来强化通常由内核模式程序执行的数据加密操作的技术。还公开了采用这种技术的设备、系统和方法。



背景技术:

磁盘加密软件通常用于在信息被存储到数据存储设备(例如,硬盘驱动器、固态磁盘等)中或从所述数据存储设备中读取时对所述信息进行加密和解密。在这种实例中,通常由在内核模式下运行的应用使用加密密钥来执行。假若加密密钥(或者相应的解密密钥)仍受到保护,则利用加密密钥加密的数据通常是安全的。在此方面,各种各样的技术可用于防止加密和/或解密密钥免遭未授权方的访问。例如,可以通过在用户提供的密码短语中包封密钥、利用可信平台模块和/或智能卡来密封所述密钥等来保护所述密钥。

虽然现有的密钥保护技术是有用的,但它们并不完全安全。这是由于以下事实:许多加密技术在正在对明文或密文进行加密操作时暴露了存储器中的密钥的明文。这为有野心的黑客和/或恶意软件获得密钥的明文提供了机会。

例如,未授权的第三方可以执行所谓的“冷引导”攻击以使加密系统转储其物理存储器的内容(包括其中的密钥的明文),在此之后,所述第三方可以从所产生的转储文件中恢复密钥。可替代地,所述第三方可以执行所谓的“evilmaid(邪恶女仆)”攻击以安装键盘记录器来拦截在输入其时的用户密码短语,所述用户密码短语然后可由所述第三方使用以便恢复加密密钥的明文。类似地,可实施“blue-pill(蓝色药丸)”攻击以便在客户端系统的软件栈后方创建虚拟机监视器(vmm)。取决于实施方式,可采用所述vmm以便直接捕获加密密钥、或者捕获可用于恢复加密密钥的明文的用户密码短语。

鉴于前述内容,已经增长了对用于强化磁盘加密的技术的兴趣。具体地,已经增长了对用于在执行加密操作过程中保护用于加密和解码信息的(多个)密钥的技术的兴趣。

附图说明

所要求保护的主题的实施例的特征和优点将随着以下具体实施方式的进行并且通过参照附图变得明显,其中,相同的数字指代相同的部件,并且在附图中:

图1展示了与本公开相一致的实现安全飞地以强化数据加密操作的电子设备的示例实施例;

图2展示了与本公开相一致的实现安全飞地以强化数据加密操作的电子设备的示例实施例的一部分。

图3是与本公开相一致的根据一种利用安全飞地来强化数据加密的方法的一个示例的内核到用户模式接口模块的示例操作的流程图。

图4是与本公开相一致的根据一种利用安全飞地来强化数据加密的方法的一个示例的飞地主控模块的示例操作的流程图。

图5是与本公开相一致的一种在预引导阶段中实现安全飞地的方法的一个示例的示例操作的流程图。

具体实施方式

虽然在此参考用于特定应用的说明性实施例描述了本公开,但是应当理解的是,此类实施例仅是示例性的并且如由所附权利要求书限定的本发明并不限于此。的确,出于展示的目的,可以在一个或多个使用情况的情境下讨论在此描述的技术,其中,数据的明文在被写入磁盘(例如,硬盘驱动器、固态磁盘等)中之前被加密或者从磁盘读取的数据的密文被解密。这种讨论仅是为了示例的目的,并且应当理解的是,在此描述的技术的全部或一部分可以在其他情境中使用。能够触及在此提供的传授内容的相关领域普通技术人员将认识到在本公开内容的范围内的附加修改、应用和实施例以及本公开的实施例将在其中有效用的另外领域。

大致参考在此所使用的记法和命名,之后的详细描述的部分可以按照在计算机或计算机的网络上执行的程序流程来呈现。本领域普通技术人员使用这些流程描述和表示以便将其工作的实质最有效地传达给本领域其他普通技术人员。流程在此并且通常被认为是导致所需结果的自洽操作序列。这些操作是需要对物理量进行物理操纵的操作。通常,但不一定,这些量采用能够被存储、传递、组合、比较、以及以另外方式操纵的电、磁或光信号的形式。主要出于常见用法的原因,证明有时将这些信号称为比特、值、元素、符号、字符、术语、数字等是方便的。然而,应当注意的是,所有这些术语和相似术语与适当的物理量相关联并且仅是应用于那些量的方便标签。

进一步地,这些操纵经常被称为如相加或比较等术语,这些术语通常与由人类操作员执行的智力操作相关联。然而,在大多数情况下,在此所描述的形成一个或多个实施例的一部分的操作中的任何操作中不需要或不期望人类操作员的这种能力。相反,这些操作是机器操作。用于执行各实施例的操作的有用机器包括:通用数字计算机和/或包括针对所需目的而专门构造的装置,所述通用数字计算机由存储在其中根据本文的教导编写的计算机程序选择性地激活或配置。各实施例还涉及用于执行这些操作的装置或系统。这些装置可以是针对所需目的而专门构造的或者可以包括通用计算机。各种各样的这些机器的所需结构将从所给出的描述中变得明显。

在本公开的上下文中,术语“计算设备”和“电子设备”可互换地用于指代可以用于至少部分地利用安全飞地来执行加密操作的广泛设备。合适的计算设备的非限制性示例包括相机、手机、计算机终端、台式计算机、电子阅读器、传真机、自助服务终端、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器、机顶盒、智能电话、平板机个人计算机、电视、超级移动个人计算机、有线电话、其组合等。此类设备可以是便携式或者固定的。在没有限制的情况下,在此所描述的客户端优选地采用蜂窝电话、台式计算机、电子阅读器、膝上型计算机、机顶盒、智能电话、平板个人计算机、电视、或超级移动个人计算机的形式。

如在此所使用的,术语“磁盘”、“存储设备”和“存储设备”在此可以互换地使用以指代可以用于提供非易失性数据存储的一个或多个非易失性存储器设备。在此可以使用的存储设备的非限制性示例包括磁存储设备(例如,磁性硬盘驱动器、磁光驱动器、热辅助磁记录设备、磁盘等)、固态存储设备(例如,采用非易失性固态与非(nand)存储器或或非(nor)存储器)、记忆棒和/或包括非易失性存储器的存储器卡、其组合等。

短语“加密操作”在此用于通常指代将明文加密成密文、将密文解密成明文、或其某种组合(视情况而定)。术语“加密操作”因此应当被理解为涵盖数据的加密和解密两者,其中基于使用短语的上下文给出了适当的解释。

如本文中任何实施例中所使用的,术语“模块”可以指被配置成用于执行与本公开一致的一个或多个操作的软件、固件和/或电路系统。软件可以具体化为非瞬态计算机可读存储介质上所记录的软件包、代码、指令、指令集和/或数据。固件可以具体化为存储器设备中硬编码(例如,非易失性的)的代码、指令或指令集和/或数据。如本文中任何实施例所使用的,“电路系统”可以例如单一地或以任何组合形式包括硬接线电路、可编程电路(诸如包括一个或多个个体指令处理核的计算机处理器)、状态机电路系统、软件和/或存储有可由可编程电路执行的指令的固件。所述模块可以(共同地或单独地)具体化为形成一个或多个客户端设备的一部分的电路系统(例如,作为至少部分地在硬件中实现的逻辑)。

如稍后将详细描述的,本公开的技术利用一个或多个安全飞地(在此亦被称为“存储器飞地”或仅“飞地”)来强化由计算设备执行的数据加密操作。通常,安全飞地由至少一个存储器页面组成,所述存储器页面具有与计算设备的传统环边界强加的访问策略不同的访问策略。安全飞地内的(多个)存储器页面可以具有相关联读/写控制,所述读/写控制可以被配置为使得所述读/写控制对某些操作模式或权限“环”、系统管理模式或相关联处理器的虚拟机监视器具有排他性。安全飞地因此可以被设计成用于提供遮挡地以便主控并执行可信代码、数据等,从而使得可以保护其免受客户端上的其他软件的破坏,包括应用软件和特权软件,诸如操作系统、虚拟机监视器、其组合等。在没有限制的情况下,合适的安全飞地包括可以使用安全飞地技术提供的那些,其可以使用英特尔安全防护指令(sgx)或以另一种方式来实现。当然,可以使用其他合适的存储器飞地技术。

例如,在一些实施例中,在此所描述的技术利用安全飞地来提供存储可以用于执行加密操作的一个或多个密钥的安全位置。可替代地或另外地,在一些实施例中,可以在安全飞地内执行加密操作,从而使得存储在其中的(多个)密钥永远不会在存储器中暴露。如可以认识到的,这可以限制或者甚至防止未授权的第三方从计算设备的物理存储器获得用于执行加密操作的(多个)密钥。

在一些实施例中,安全飞地可以用于通过基于对飞地自身的测量包封存储在其中的密钥来保护所述密钥。在这种实施例中,可能有必要在所述密钥可用于执行加密操作之前解包封所述密钥(使用对飞地的测量)。如可以认识到的,如果对飞地的测量在密钥被包封之后以任何方式发生变化(例如,由于篡改),则解包封所述密钥可能不是可能的。这可有效地防止第三方经由攻击(所述攻击篡改飞地自身或以其他方式以所述飞地自身为目标)来访问密钥的明文。

应当注意的是,由于其性质以及专门加密的存储器位置的使用,与安全飞地的交互可能限于在用户模式下执行的应用。出于这种考虑,许多数据加密套件利用在内核模式下执行的加密应用。这在以下实例中尤其如此:加密应用负责执行完全或部分磁盘加密操作,其中,待写入磁盘的全部或指定部分中的数据将在提交(写入)至所述磁盘之前被加密。由于可能限制或防止飞地(其可以在用户模式下运行)与加密应用(其可以在内核模式下运行)之间的交互的约束,许多现有的加密套件因此不能利用安全飞地。如以下将描述的,本公开的一个方面涉及旨在解决此问题的设备和方法。

在一些使用情况(诸如完全或部分磁盘加密)下,引导计算设备所需的数据的全部或一部分可以在磁盘上被存储为密文。在这种实例中,一个或多个应用(例如,bios级别加密应用)可以在预引导阶段中采用加密/解密密钥来解密应用/来自磁盘的引导客户端设备所需的数据,在此之后,可以正常地引导所述设备。虽然有效,但是那种方法可能在系统存储器可能受到未授权的第三方的攻击的情况下暴露所述系统存储器中的(多个)密钥的明文。出于这种考虑,本公开的另一方面涉及用于使能使用安全飞地来强化可以在引导计算设备之前或期间(例如,在完全或部分磁盘加密情境中)执行的加密操作的技术。如将认识到的,这种技术可使能在预引导阶段中使用(通常在用户模式情境中执行的)飞地,即在当通常执行用户模式应用时之前。

现在参考附图,其中,贯穿附图相同的参考号用来表示相同的元件。应注意的是,出于清晰和易于理解的目的,以下描述集中于在特定的使用情况下使用安全飞地来强化加密操作。虽然可以提供关于那些使用情况的许多细节,但是应当理解的是,在此描述的技术可在其他情境中实践,潜在地无需关于在此描述的具体使用情况而提供的一些或全部细节。还应注意的是,为了清晰起见,以框图形式示出了公知的结构和设备。本发明将涵盖落在所附权利要求书的范围内的所有修改、等同物和替代方案。

出于对前述内容的考虑,图1描绘了与本公开相一致的被配置成用于实现安全飞地以强化加密操作的计算设备的一个示例实施例的系统架构的部件。如所示出的,计算设备100包括处理器110、输入输出接口(i/o)120、以及存储设备130。这类部件可以以任何合适的方式通信地耦合至彼此,诸如经由总线或其他合适的通信介质(未示出)。为了清晰起见,已经从图1中省略了在现代计算设备中可能常见的各个部件(诸如物理(例如,随机存取)存储器、显示器等)。

计算设备100可以是适合用于至少部分地利用安全飞地来执行加密操作的任何类型的计算设备。以上枚举了这类设备的示例并且因此不再重述。无论其形状因数如何,计算设备100通常被配置成用于使能使用在用户模式下运行安全飞地来执行将以其他方式由在内核模式下执行的一个或多个应用执行的加密操作。应当理解的是,虽然图1描绘了以此方式被配置的单个计算设备100,但是在此描述的各操作和部件可以并入在多个计算设备中和/或在所述多个计算设备中实现。

处理器110可以是任何合适的通用处理器或专用集成电路,并且可以能够在一个或多个处理器核上执行一个或多个线程。在没有限制的情况下,在一些实施例中,处理器110为通用处理器,诸如但不限于可从公司、advancedmicro商购的通用处理器。虽然图1将计算设备100展示为包括单个处理器,但是可以使用包括一个或多个处理核的多个处理器。在没有限制的情况下,处理器110在一些实施例中为过去、现在或将来生产的单核或多核处理器。

不管其类型如何,处理器110可以被配置成用于提供不同的操作模式(被称为“内核模式”和“用户模式”)。处理器110可以基于其正在执行或将要执行的应用的权限等级而在内核模式与用户模式之间进行切换。通常,可以用于初始化并向计算设备的部件(例如,驱动器、操作系统(os)部件、预引导应用等)提供接口功能的应用具有内核级权限并且因此在内核模式下进行操作。也就是说,处理器110被配置成用于在执行那些类型的应用时在内核模式下进行操作。相较而言,大多数其他应用具有用户级权限,并且因此处理器110被配置成用于在执行这类应用时在用户模式下进行操作。

如图1中进一步示出的,处理器110可以包括一个或多个模型特定寄存器(msr112)以及安全飞地页面缓存(epc)114。在处理器110执行控制例程131时,其可以设置一个或多个msr112以便使能在用户模式与内核模式之间进行切换操作。例如,可以将一个或多个msr112设置为用于使能syscall/sysret指令,所述指令可在用户模式与内核模式之间切换处理器110。

应当注意的是,虽然图1将epc114描绘为包括在处理器110中,但是epc114可以存在于计算设备100的另一部件中,诸如但不限于存储设备130、平台本地存储器(例如,dram等)、输入输出系统(bios)可访问的存储器等。在一些实施例中,epc114存储在计算设备100的平台本地存储器的加密保护的区域中。在其他实施例中,epc114存储在存储设备130的加密保护的区域中。在又进一步实施例中,epc114存储在bios可访问存储器的加密保护的区域中。

i/o120可以包括被配置成用于允许计算设备100传输并接收其对应部件当中的数据并且任选地将所述数据传输至一个或多个外部设备的硬件(即电路系统)、软件、或硬件和软件的组合。这种通信可以通过使用近距离和/或长距离通信网络的有线或无线连接而发生。i/o120因此可以包括用于支持这种通信的硬件,例如一个或多个转发器、天线、bluetoothtm芯片、个域网芯片、近场通信芯片、网络接口卡、其组合等。

存储设备130可以是任何合适的存储设备或存储设备的组合,诸如以上所指出的那些。在没有限制的情况下,在一些实施例中,存储设备130采用一个或多个磁性硬盘驱动器、固态驱动器(ssd)、智能卡、通用串行总线(usb)驱动器、记忆棒、其组合等的形式。如所示出的,存储设备130可以存储以下各项中的一项或多项:控制例程131、密文132(例如,在全部或部分磁盘加密使用情况下)、存储映射器模块151、用户模式接口模块(umim)152、缓冲器154、飞地主控模块160、以及安全飞地162。应当理解的是,虽然缓冲器154、飞地主控模块160和安全飞地162被描绘为存储在存储设备130上,但是不需要这种实现方式。的确,这类部件可以在任何合适的存储器和存储器位置中实现,诸如但不限于处理器110的本地存储器(例如,存储器缓存存储器)、系统物理存储器(例如,dram)、其组合等。

控制例程131包括在处理器110上可操作的指令序列以实现用于执行各种功能的逻辑。例如,在执行控制例程131时,处理器110可以为内核模式部件(诸如存储映射器模块151和umim152)提供内核模式支持。此外,由处理器110执行控制例程131可以为用户模式部件(诸如飞地主控模块160、飞地162以及其他用户模式应用(在图1中未示出))提供用户模式支持。如稍后将详细描述的,umim152可以用作用于将数据(诸如密文132(例如,来自存储设备130)和/或明文(例如,来自一个或多个用户模式应用))引导至缓冲器154的管道,从而使得可用于由飞地162执行加密操作。此外,在一些实施例中,umim152可以被配置成用于使计算设备100(或者更具体地为处理器110)建立代理(在图1中未示出),所述代理可以被利用以使能umim152(内核模式应用)与飞地主控模块160(用户模式应用)之间的通信。

在各实施例中,控制例程131可以包括以下各项中的一项或多项:操作系统(os)、设备驱动器和/或应用级例程(例如,在光盘介质上提供的所谓的“套装软件”、从远程服务器获得的“小应用程序”等)。在包括操作系统的情况下,所述操作系统可以为适合用于计算设备100和/或处理器110的各种可用操作系统中任一种操作系统,诸如但不限于操作系统、操作系统、操作系统、操作系统、或者移动或其他电子设备的任何其他操作系统。在包括一个或多个设备驱动器的情况下,那些设备驱动器可以为各种其他部件中的任何部件(无论是计算设备100的硬件部件还是软件部件)提供支撑。

在一些实施例中,控制例程131(或其某个部件)可以操作以便创建安全飞地162。例如,控制例程131可以包括创建安全飞地162的内核模式驱动器。所述内核模式驱动器可以以任何合适的方式创建安全飞地162,诸如通过将至少一个存储器页面分配至epc114以及将飞地图像扩展至(多个)所分配存储器页面的位置中。若需要,则可以将所述飞地转移至飞地主控模块160,例如通过执行映射操作以便将epc114内的分配至飞地162的存储器页面映射至飞地主控模块160。

当然并且如稍后将进一步详细描述的,飞地162无需由控制例程131来创建。的确,在本公开的一些实施例中,可以在计算设备100的预引导阶段中创建和/或实例化飞地162,例如在执行控制例程131的引导计算系统100可能需要的部件之前。例如,可以由bios引导加载器或其他bios应用来建立所述飞地,例如在加载控制例程131的各部件之前。以此方式创建飞地162可能在飞地已经加密了控制例程131的全部或一部分时时(例如,当关闭计算设备100时)特别有用。

存储映射器模块151可以采用通常被配置成用于将待由安全飞地操作的数据路由至umim152的硬件、软件、或硬件和软件的组合的形式。例如并且如稍后将详细描述的,在完全或部分磁盘加密情境中,存储映射器模块151可以被配置成用于将明文数据(例如,来自用户模式应用,未在图1中示出)和/或密文数据(例如,来自磁盘或其他存储器,也未被示出)路由至umim152。

出于展示的目的,存储映射器模块151在此被描述为以刚才所述的方式进行操作以便路由数据的独立部件。然而,应当理解的是,存储映射器模块151无需以那种方式来实现。例如,存储映射器模块可以作为存储设备130的存储栈(未示出)的一部分或与其结合来实现。将认识到的是,存储栈的性质和特点可以取决于控制例程131的性质(或者更具体地,正在计算设备100上执行的操作系统的类型)而不同。例如,在操作系统的情境中,存储映射器模块可以在设备映射器框架的情境中实现,所述设备映射器框架是用于将物理块设备映射至更高级虚拟块设备的linux机制并且与linux内核模式磁盘加密子系统(被称为“dm-crypt”)结合使用。当然,其他实现方式是可能的并且是本领域普通技术人员将容易理解的。无论特定实现方式如何,应当理解的是,存储映射器模块151通常被配置成用于将数据(明文、密文、或其他)路由至umim152,如先前所描述的。

缓冲器154可以被配置为使得其可以由可以在处理器110上执行的内核和用户模式应用来访问。缓冲器154因此可以被理解为可以由内核和用户模式应用写入到其中并且从其中进行读取的“共享”缓冲器。例如,在一些实施例中,umim可以将数据写入或使数据(例如,密文或明文)被写入缓冲器154中,在此之后,那个数据可以由飞地主控模块160(或者更具体地为飞地162)从缓冲器154中读取。飞地162可以按照需要对所述数据执行加密操作,从而产生然后可以被写入缓冲器154中的“经处理”数据。umim然后可以从缓冲器154中检索所述经处理数据,并且将其引导至计算设备100的其他部件(例如,存储映射器模块151),如关于图2将进一步详细解释的。

缓冲器154可以是任何合适类型的共享缓冲器。在没有限制的情况下,在一些实施例中,缓冲器154为环(圆形)缓冲器的形式。如将认识到的,环缓冲器可以是使用单个固定尺寸缓冲器的数据结构(如同其是端对端连接的),从而使得所述缓冲器具有先进先出(fifo)特点。在这种实例中,umim152可以将数据写入缓冲器154中以供飞地162进行处理,所述飞地可以如先前所讨论地对所述数据执行加密操作。

在一些实施例中,飞地162可以在缓冲器154中“原位(inplace)”对数据执行加密操作,即从而使得将所产生的经处理数据(密文或明文,视情况而定)维持在缓冲器154内的与(未处理)数据相同的位置处。umim152然后可以如先前所讨论地从缓冲器154中读取经处理数据,例如基于fifo。可以例如通过在处理器110的不同线程上执行umim152和飞地主控模块160来促进此过程。例如,在umim152从缓冲器154中读取经处理数据时,其可以利用附加(未处理)数据来代替那个数据(如果需要的话)。所述附加数据然后可以由飞地主控模块160来读取并且由飞地162来操作,如以上所讨论的。换言之,当飞地主控模块160从缓冲器154汲取未处理数据并且将所述未处理提供给飞地162以用于执行加密操作时,umim152可以操作以便利用未处理数据来填充缓冲器154。同样,当umim152从缓冲器154中读取经处理数据并且将其提供给存储映射器模块151时,飞地主控模块160可以利用经处理数据来填充缓冲器154。这可以允许在去激活飞地162之前(例如,在执行eexit指令之前)单次激活飞地162(例如,执行用于将控制传递至飞地162的单个eenter指令)以便对大量的数据和/或多个更小批量的数据执行加密操作。这可潜在地降低与从飞地162重复进入和退出相关联的开销,特别是当工作负载较高时。

如先前所指出的,飞地162可以由飞地主控模块160来主控。通常,飞地主控模块160可以包括被配置成用于管理飞地162的操作的硬件、软件、或硬件和软件的组合。例如,在一些实施例中,飞地主控模块160可以被配置为磁盘或可以在控制例程131的情境内执行的其他服务。在一些实施例中,飞地主控模块160可以是用户模式应用和/或服务,所述用户模式应用和/或服务可以从一个或多个内核模式应用(例如,umim152)接收使飞地162运行的指示。例如,在一些实施例中,飞地主控模块160可以从umim152接收缓冲数据指示,从而表明数据存在于缓冲器154中。响应于所述缓冲数据指示,飞地主控模块160可以使飞地162运行,例如通过执行或使得执行将控制传递至飞地162的eenter指令。飞地162然后可以在缓冲器154中对数据执行加密操作,如以上总体上描述的。当然,用于控制飞地162的操作的其他机制是可能的,并且是本公开可设想到的。

可以以任何适当的方式提供所缓冲的数据指示。在一些实施例中,umim152可以被配置成用于向飞地主控模块160提供缓冲数据指示。例如,在umim152和飞地主控模块160可以彼此直接进行通信的实例中,umim152可以将包含缓冲数据指示的消息发出至飞地主控模块160。然而,在许多情境中,umim152(内核模式部件)可能无法与飞地主控模块160(用户模式部件)直接进行通信。在这种实例中,umim152和飞地主控模块160可以被配置成用于经由代理彼此通信。

例如,飞地主控模块160可以被配置成用于发出涉及内核模式代理的调用(例如,读命令)。所述内核模式代理可以由umim152或计算设备100的某个其他部件(诸如存储映射器模块151)来建立。内核模式代理可以是或包括可以暴露于用户模式应用下的文件或其他数据结构。例如,在控制例程131为linux操作系统的实例中,所述代理可以被设置为杂项设备,所述杂项设备可以导致创建可以由飞地主控模块160访问的文件或其他数据结构。在这种实例中,飞地主控模块160可以被配置成用于发出涉及代理(或者更具体地为与代理相关联的文件或其他数据结构)的系统调用(例如,读命令),如以上所讨论的。

出于这种考虑,在一些实施例中,umim152可以被配置成用于拦截由飞地主控模块160发出的系统调用并且保持那个调用直到数据存在于缓冲器154中。当数据存在于缓冲器154中时,umim152可以释放系统调用。释放系统调用可以被飞地主控模块160理解为表明数据存在于缓冲器154中的缓冲数据指示。飞地主控模块160然后可以激活飞地162(例如,通过使得执行eenter指令)。

飞地162然后可以在缓冲器154中对数据执行加密操作,如先前所描述的。执行加密操作可以继续直到无(未处理)数据保持在缓冲器154中。此时,飞地主控模块160可以发出针对代理(或者更具体地为与代理相关联的文件或其他数据结构)的另一系统调用(例如,读命令)。像现有系统调用,由飞地主控模块162发出的附加系统调用可能受到umim152的拦截并被保持直到数据存在于缓冲器154中。取决于应用,可以在飞地162活跃时发出系统调用时、在阈值时间段到期之后、或者响应于某个其他标准的实现而立即禁用飞地162(例如,其可以通过执行eexit指令来释放控制)。

为了进一步解释本公开的技术,现在参考图2,其是展示了计算设备100的各部件的与由安全飞地执行加密操作相关联的交互的框图。具体地,图2描绘了计算设备100的各部件中的哪些部件可以在用户模式和内核模式下进行操作、以及这种部件之间的对应交互。出于展示的目的,将在计算系统100(或者更具体地为控制例程131)被配置成用于实现完全磁盘加密的使用情况中描述可以由图2的部件来执行的操作。应当理解的是,在这种使用情况下,被存储或将被存储在磁盘或其他存储器(例如,存储器200)上的数据被加密(即采用密文的形式)。同样,从存储器200中读取的已加密数据(密文)被解密,从而使得其可以由在计算设备100上执行的应用(例如,用户模式应用)来使用。

出于对前述内容的考虑,图2将计算设备100描绘为包括以上结合图1所描述的相同部件中的许多相同部件,即存储映射器模块151、umim152、缓冲器154、飞地主控模块160和飞地162。因此不再对这种部件的性质进行描述。此外,图2将计算设备100描绘为包括存储器200、用户模式应用201和代理202。

在一些实施例中,存储器200为对于存储设备130可以是本地的或远离所述存储设备的非易失性存储器。在没有限制的情况下,在一些实施例中,存储器200对于存储设备130是本地的。无论其位置如何,存储器200可以可操作用于存储数据(采用明文或密文的形式)。如以上所指出的,在计算设备100实现完全磁盘加密的使用情况下,应当理解的是,存储在存储器200中的数据采用密文的形式。

在操作过程中,用户模式应用201可以使计算设备(或其某个部件)发出针对存储在存储器200中的密文的读请求。例如,在一些实施例中,用户模式应用201可以将读请求发出至存储映射器模块151,所述存储映射器模块可以与在计算设备100上执行的控制例程的存储栈进行交互或与其成一体。在任何情况下,存储映射器模块151可以向存储器200发出或使得发出读命令。所述读命令可以被配置成用于使得读出存储在存储器200的相关部分处的密文(数据)并且将其提供给存储映射器模块151。响应于从存储器200接收密文,存储映射器模块151可以被配置成用于将密文中继至umim152,如以上总体上描述的。

可替代地或另外地,在操作过程中,用户模式应用201可以使计算设备或其某个部件发出用于将数据(例如,明文)写入存储器200中的写请求。例如,在一些实施例中,用户模式应用201可以将写请求发出至存储映射器模块151。在完全磁盘加密使用情况的情境中,可能有必要对在其被写入存储器200中之前的数据的明文进行加密。在这种实例中(或者在期望对数据进行加密的其他使用情况下),存储映射器模块151可以被配置成用于将与写请求相关联的数据(明文)转发至umim152(以与以上总体上描述的相同方式)。

响应于从存储映射器模块151接收数据(采用密文或明文的形式),umim152可以将所述数据的全部或一部分排队至缓冲器154。如以上所提及的,缓冲器154可以采用可以由umim和用户模式应用(诸如飞地主控模块160)访问的共享缓冲器(例如,环缓冲器)的形式。同时地或者在对缓冲器154中的密文进行排队之后,umim152可以提供缓冲数据指示符以便向飞地主控模块160指示数据(具体为密文)存在于缓冲器154中。如先前所解释的,在一些实施例中,umim152可以至少部分地通过释放针对代理(例如,代理202)的系统调用(例如,读请求)将缓冲数据指示符提供给飞地主控模块160。

如以上所指出的,代理202可以采用可以暴露于用户模式应用(诸如飞地主控模块160)下的内核模式设备(或相关联数据结构)的形式。可以以任何适当的方式并且由计算设备100的任何适当的部件来创建代理202。例如,存储映射器模块和/或umim可以使得创建代理202,例如,由处理器101。不受限制地,在一些实施例中,可以在启用(例如,加载)存储映射器模块151、启用(例如,加载)umim152、或这两者时建立代理202。在任何情况下,飞地主控模块160可以发出针对代理202的系统调用。umim152可以拦截那个系统调用并且保持其直到数据存在于缓冲器154中。一旦在缓冲器154中对数据进行排队,则umim152可以释放系统调用,从而向飞地主控模块160提供表明数据存在于缓冲器154中的缓冲数据指示符。当然,释放针对代理202的系统调用仅是umim152可以如何向飞地主控模块160指示缓冲器154中存在数据的一个示例。如本领域普通技术人员将理解的,提供缓冲数据指示符的其他方法是可能的。

在一些实施例中,可能期望umim152将缓冲数据指示符提供给飞地主控模块160,所述缓冲数据指示符特定于缓冲器154中的数据采用的是明文的形式还是密文的形式以及因此飞地162将对其中的数据进行加密还是解密。在此方面,代理202可以被配置成用于提供(或采用第一和第二数据结构的形式)第一和第二数据结构。在与前述描述相一致的情况下,飞地主控模块160可以发出针对所述第一和第二数据结构的对应的第一和第二系统调用。umim152可以以与以上所述的相同方式来拦截并保持所述第一和第二系统调用。在对缓冲器154中的数据进行排队之后,umim152然后可以向飞地主控模块160发出缓冲数据指示符,所述缓冲数据指示符不仅表明数据在缓冲器154中的存在,而且还指示将由飞地162对其执行哪种类型的操作(加密或解密)。

例如,umim152可以释放由飞地主控模块160发出的并且针对与代理202相关联的第一数据结构的第一系统调用,同时继续保持针对与代理202相关联的第二数据结构的第二系统调用,从而向飞地主控模块160指示缓冲器154中的数据将被加密。同样,umim152可以释放由飞地主控模块160发出的并且针对与代理202相关联的第二数据结构的第二系统调用,同时继续保持针对与代理202相关联的第一数据结构的第一系统调用,从而向飞地主控模块160指示缓冲器154中的数据将被解密。当然,控制将由飞地162对缓冲器154中的数据执行加密还是解密的其他方法是可能的,并且是本公开可设想到的。

响应于接收缓冲数据指示符,飞地主控模块160可以将控制传递至飞地162,例如通过使得执行eenter指令或其他合适的命令。飞地162然后可以在缓冲器154中对数据执行加密操作,例如使用存储在其中的一个或多个密钥。在一些实施例中,这类操作在飞地162内执行,从而使得不在系统物理存储器中暴露存储在其中的密钥。所产生的经处理数据(密文或明文,视情况而定)然后可以被写入缓冲器154中。在一些实施例中,经处理数据被写入缓冲器154中与其相应(未处理)数据相同的位置(地址)中。在这种实例中,飞地162可以被认为是用于“原位”执行加密操作。

当已经处理了缓冲器154中的全部数据时,飞地主控模块160(或者更具体地为飞地162)可以请求附加数据以供处理。在一些实施例中,飞地主控模块160可以表明其已经完成了对缓冲器154中的数据的处理,例如通过向umim152提供完成指示符。飞地主控模块160可以以任何适当的方式(诸如但不限于发出针对代理202的另一系统调用)来提供完成指示符。可替代地或另外地,飞地主控模块160可被配置成用于发出针对地址(例如,虚拟地址)的读请求或写请求,在所述地址中,未映射页面,从而导致了页面故障。在这种实例中,umim152可以被配置成用于监测这种故障,并且(作为完成指示符)用于拦截这种故障。在任何情况下,在一些实施例中,完成指示符还可以向umim152指示飞地主控模块160正在请求附加数据。

当然,以上技术仅是关于umim152可以如何确定飞地162已经完成了对缓冲器154中的数据执行加密操作的几个示例。如本领域普通技术人员将理解的,其他方法是可能的。

在完成指示符采用针对代理的系统调用的形式的实例中,umim152可以响应于完成指示符而将缓冲器154中的经处理数据传递至存储映射器模块,所述存储映射器模块进而可以将所述经处理数据提供给存储器200或用户模式应用201(视情况而定)。此外,umim152还可以做出关于附加数据是否可用于由飞地162进行处理的判定。如果是,则umim152可以对缓冲器154中的附加数据进行排队并且释放针对代理200的系统调用(或与其相关联的数据结构),从而将另一缓冲数据指示符提供给飞地主控模块160并且表明附加数据存在于缓冲器154中。此过程可以继续直到飞地162已经处理了与用户模式应用201发出的读/写请求相关联的全部数据。

在任何情况下,umim152可以将经处理数据152从缓冲器154传递至存储映射器模块151。如果经处理数据是明文,则存储映射器模块151可以将所述明文传递至用户模式应用201或计算设备100的另一部件(按照期望)。然而,如果所述数据是密文,则存储映射器模块151可以将所述密文传递至存储器200,例如通过执行或使得执行将所述密文写入存储器200中的写命令。

在一些实施例中,可以期望存储映射器模块151来判定从umim152接收的数据是明文还是密文。在这种实例中,umim152可以以任何合适的方式做出这种判定,诸如基于从umim152接收到的数据是否将被引导至用户模式应用201(明文)或引导至存储器200(密文)。例如,在存储映射器模块151响应于(例如,由用户模式应用201发出的并且针对存储器200的)写请求而将数据路由至umim152的实例中,存储映射器模块151可以确定从umim152接收到的数据是密文。可替代地或另外地,在存储映射器模块151响应于(例如,针对包含已加密数据的存储器200的某个部分)读请求而将数据路由至umim152的实例中,存储映射器模块151可以确定从umim152接收到的数据是密文。

现在参考图3,其是展示了与本公开相一致的一种利用安全飞地来强化磁盘加密的方法的一个示例的操作的流程图。具体地,图3描绘了可以由用户模式接口模块(umim)来执行的示例操作,如可以在以与图1和图2的前述描述相一致的方式被配置的计算设备中实现。

如所示出的,方法300在框301处开始。所述方法然后可以前进至框302,其中,可以接收(未处理)数据。在与前述描述相一致的情况下,可以从存储映射器模块接收未处理数据,所述存储映射器模块可以响应于由用户模式应用发出的读请求或写请求而将数据路由至umim。如先前所指出的,(未处理)数据可以采用明文或密文的形式,并且在其将由安全飞地来操作时可以被认为是“未处理的”。

在任何情况下,一旦接收到(未处理)数据,则所述方法可以前进至框303,其中,可以在缓冲器中对(未处理)数据进行排队。如以上所指出的,所述缓冲器可以采用可由计算设备的内核级部件和用户级部件(诸如内核级umim(内核级)、用户级飞地管理模块和/或用户别飞地)两者访问的共享缓冲器的形式。在没有限制的情况下,所述缓冲器在一些实施例中为环缓冲器。

一旦在所述缓冲器中对数据进行了排队,则所述方法可以前进至框304,其中,可以告知飞地经排队的数据存在于所述缓冲器中。在与前述描述相一致的情况下,可以以任何适当的方式(诸如但不限于释放针对代理的系统调用(例如,读请求))告知所述飞地经排队数据的存在。当然,如本领域普通技术人员将认识到的,可以以某种其他方式告知所述飞地经排队数据的存在。在任何情况下,向飞地告知经排队数据的存在可以使得所述飞地开始对经排队数据执行加密操作。经处理数据(明文或密文,视情况而定)可以存储在相同的缓冲器(例如,在所述缓冲器中,飞地原位执行加密或解密)或也可以在内核模式部件与用户模式部件之间共享的不同缓冲器中。

一旦飞地被告知存在经排队数据,则所述方法可以前进至框305,其中,可以做出关于是否已经完成了对缓冲器中的(未处理)数据的全部或一部分的加密操作的判定。如先前所指出的,可以做出此判定,例如基于发出和/或检测完成指示符。在没有限制的情况下,在一些实施例中,所述完成指示符可以采用针对代理的附加系统调用(例如,由飞地管理模块)的形式。当然,可以采用判定是否完成了对缓冲器中的数据的全部或一部分的加密操作的其他方法。

如果确定未完成对缓冲器中的数据的全部或一部分的加密操作,则所述方法可以从框305前进至框306,其中,可以做出关于所述方法是否将继续的判定。可以调节框306的关于各因素的结果,诸如阈值时间段是否已经到期、是否需要执行更高优先级的工作等。在任何情况下,如果所述方法将不继续,则其可以前进至框309并结束。然而,如果所述方法将继续,则其可以环回至框305。

当确定已经完成了对缓冲器中的数据的全部或一部分的加密操作时,所述方法可以从框305前进至框307。依照框307,可以从缓冲器中读取并适当地路由(经处理)数据。例如,在所述(经处理)数据是明文的情况下,可以将其路由至用户级应用(例如,响应于由用户级应用发出的并且针对存储在存储器中的密文的读请求)。可替代地,在所述(经处理)数据是密文的实例中,可以将其路由至存储设备(例如,响应于由应用发出的写请求)。

所述方法然后可以从框307进行到框308。依照框308,可以做出有关所述方法将是否继续的判定。可以例如调节关于是否需要对附加(未处理)数据执行加密操作的此判定的结果。如果是,则所述方法可以继续并且回环至框303,依照所述框,可以在缓冲器中对附加(未处理)数据进行排队。然而,如果不需要对附加数据执行加密操作,则所述方法可以前进至框309并结束。

应当注意的是,为了展示的目的,图3描绘了依照框308的判定紧随在依照框307提供经处理数据之后的实施例。应当理解的是,执行框308的操作无需紧随在框307的操作之后,并且在一些实施例中可以在执行框307之前或与执行所述框同时地被执行。换言之,在框307的操作之前或者与所述框的操作同时地,可以做出关于是否需要对附加未处理数据执行加密操作的判定。如果是,则可以读取并利用附加数据来代替来自缓冲器的经处理数据,然后可以由安全飞地对所述附加数据进行操作,如以上所指出的。

现在参考图4,其是展示了与本公开相一致的一种利用安全飞地来强化磁盘加密的方法的另一示例的操作的流程图。具体地,图4描绘了可以由飞地主控模块和/或安全飞地来执行的示例操作,例如如可以在以与图1和图2的前述描述相一致的方式被配置的计算设备中实现。

如所示出的,方法400在框401处开始。所述方法然后前进至框402和403,依照所述框,可以做出关于(未处理)数据是否存在于内核模式部件和用户模式部件两者均可访问的缓冲器中的判定。在与前述描述相一致的情况下,可以在接收到(未处理)数据存在于缓冲器中的某个指示(例如,来自umim或其他部件)来调节此判定的结果。所述指示可以是例如释放针对代理的系统调用(例如,读请求)。

如果依照框403确定(未处理)数据不存在于缓冲器中,则所述方法可以前进至框404。依照框404,可以做出有关所述方法将是否继续的判定。可以调节框404的关于各种因素的结果,诸如但不限于预定时间段是否已经到期。在任何情况下,如果确定所述方法将不继续,则所述方法可以前进至框408并结束。然而,如果所述方法将继续,则其可以从框404环回至框402。

如果依照框403确定(未处理)数据存在于缓冲器中,则所述方法可以前进至框405。依照框405,可以在缓冲器中至少部分地利用安全飞地对数据执行加密操作。例如,可以执行eenter指令以便将控制传递至安全飞地。安全飞地然后可以从缓冲器中读取数据并且对所述数据执行加密操作(例如,加密或解密)(视情况而定)。在一些实施例中,可以在飞地内执行加密操作,例如使用存储在其中的一个或多个密钥。在安全飞地执行加密操作时,可以从所述飞地输出所产生的经处理数据,例如输出回至缓冲器(在原位加密或解密的情况下)或输出至可以在计算设备的内核模式部件与用户模式部件之间共享的另一缓冲器。

所述方法然后可以前进至可选框406,其中,可以(例如,从安全飞地或飞地主控模块)向内核模式部件(例如,umim)提供已经完成了对缓冲器中的数据的全部或一部分的加密操作的指示。然而,如先前所指出的,在一些实施例中,内核模式部件可以能够单独判定是否已经完成了对缓冲器中的数据的加密操作,在所述情况下,可能不需要框406的操作。

一旦依照框406已经提供了加密操作已完成的指示或者如果不需要框406的操作,则所述方法可以前进至框407。依照框407,可以做出有关附加(未处理)数据是否存在于缓冲器中的判定。如果是,则所述方法可以环回至框405。然而,如果不是,则所述方法可以前进至框408并结束。

如可以认识到的,以上所述的技术可以使能可以利用安全飞地对将要存储在计算设备的存储设备中的数据的全部或一部分执行加密操作的使用情况。例如,以上所述的技术可以使得能够使用安全飞地来强化完全磁盘加密协议,例如通过使用安全飞地以便利用受所述飞地保护的一个或多个密钥来加密存储在磁盘上的全部数据。虽然这可提供如上所述的若干安全益处,但是以以上所述的方式来使用飞地可能导致对引导计算设备可能需要的文件、应用和其他数据结构的加密。由于将可能已经利用了受所述飞地保护的一个或多个密钥来加密这种部件,因此可能无法引导计算设备100(除非所述飞地可用于解密必要文件)。

出于对前述内容的考虑,本公开的另一方面涉及用于使能在引导操作系统之前使用飞地来执行加密操作(具体地为解密)的技术。具体地,本公开的一个方面涉及在预引导阶段中使用一个或多个预引导应用来创建飞地(以下称为“预引导飞地”)。一旦创建,则所述预引导飞地可以用于对先前由飞地加密的(例如,在运行时间期间)并且引导计算设备可能需要的已加密数据(例如,文件、应用等)进行解密。

应当认识到的是,负责初始化计算机系统的应用通常在内核模式下进行操作。例如,基本输入/输出系统(“bios”)和统一可扩展固件接口(“uefi”)是对启动计算机系统所需的各平台设备(尤其是操作系统驻留的存储设备)进行初始化的应用(或应用的集合)。这些应用在内核模式下进行操作,并且可以被称为“预引导应用”(因为它们在引导操作系统之前执行操作)。操作系统引导加载器(例如,操作系统中的grub或lilo、windows操作系统中的引导加载器)的部件也可以被认为是预引导应用,因为它们在可以引导操作系统之前执行所需的操作。

出于对前述内容的考虑,参考图5,其是与本公开相一致的根据在预引导阶段中实现安全飞地的方法可以执行的逻辑操作的流程图。如所示出的,方法500在框501处开始。所述方法然后可以前进至框502,依照所述框可以实现预引导飞地。考虑到所述飞地具有必要特点(例如,测量)以及用于对引导计算设备可能需要的已加密数据进行解码所需的(多个)密钥,可以以任何合适的方式来执行对预引导飞地的实施。

例如,在一些实施例中,可以在预引导阶段中由一个或多个预引导应用(bios应用、uefi应用、操作系统引导加载器等)来创建预引导飞地。在这种实施例中,预引导应用可以使得在加载操作系统之前由处理器来执行指令。例如,预引导应用可以使得执行使处理器(例如,处理器101)在飞地页面缓存(例如,epc114)内分配用于主控飞地的存储器页面的指令。预引导应用然后可以使处理器将飞地图像(例如,其可以存储在预引导应用可访问的受保护存储器中,例如bios存储器、tpm、其他受保护存储器等)扩展至在epc内分配的存储器页面。可替代地或另外地,预引导应用可以使得执行一个或多个指令(例如,e创建指令),所述一个或多个指令使得在epc内分配的存储器页面中创建飞地。

在一些实例中,还可以期望预引导应用在处理器上使能用户模式支持,从而使得可以实现预引导飞地。在此方面,在一些实施例中,预引导应用可以被配置成用于使能对预引导飞地的用户模式支持,例如通过修改一个或多个页表、全局描述符表、中断描述符表、和/或机器特定的寄存器(例如,msr112)。

如以上所指出的,本公开的技术可通过在运行时间期间使能使用安全飞地以便在数据被写入磁盘之前加密数据从而强化完全磁盘加密操作。在一些实施例中,可以在飞地内使用加密密钥来执行在运行时间期间对那个数据的加密。在关闭计算设备之前,安全飞地可以通过使用对飞地的测量来包封(加密)加密密钥(和/或任何相关的解密密钥)从而保护所述(多个)密钥。如可以认识到的,在没有具有与加密密钥的飞地相同(例如,完全相同)测量的飞地的情况下,可能难以获得以此方式被保护的密钥的明文。

从而,在一些实施例中,依照框502实现的预引导飞地可以被配置为具有与对存储在磁盘上的数据进行加密(例如,在运行时间期间)的飞地相同的测量。的确,在一些实施例中,可能有利的是,预引导飞地的测量与用于在运行时间期间执行数据加密的飞地的测量完全相同。出于这种考虑,可以采用众多方法来创建预引导飞地,所述预引导飞地具有与先前用于对存储在磁盘上的数据进行加密(例如,在运行时间期间)的飞地的测量相同的测量。例如,执行预引导应用可以使处理器分配相同epc范围和/或存储器页面用于主控预引导飞地(过去用于主控在运行时间期间对磁盘上的数据进行加密的飞地)。

在一些实施例中,预引导应用可以在被执行时使处理器隔离分配给预引导飞地的epc范围,从而防止所述设备的其他部件(例如,os)在稍后的时间覆写那个epc范围。换言之,隔离(保留)epc范围可以防止所述飞地被计算设备的其他部件页面调出。如可以认识到的,覆写分配至所述飞地的epc范围(或其他存储器范围)可以改变所述飞地的测量。进而,这可能使得难以或者不可能对已经利用飞地的测量而被加密的密钥进行解码,从而潜在地导致系统崩溃。

返回至图5,一旦已经依照框502实现了预引导飞地,则所述方法可以前进至框503。依照框503,可以应用所述预引导飞地以便对引导计算设备可能需要的已加密数据进行解密。出于此目的而使用预引导飞地的各种方法是本公开可设想到并涵盖的。例如,在uefi引导的情境中,可以执行uefi驱动器(例如,作为全磁盘加密应用或某个其他应用的一部分)以便将从磁盘读取的已加密数据引导至安全飞地以供解密,在此之后,所产生的明文可以用于引导计算设备。更具体地,在一些实施例中,uefi驱动器可以操作以便暴露文件系统可安装在其上的block-io接口,并且通过已加密磁盘的block-io协议来过滤通信量/分区至预引导飞地。以此方式,uefi驱动器可以将从磁盘读取的已加密数据引导至预引导飞地以供解密。类似地,uefi驱动器可以适当地路由所产生的明文以促进引导所述系统。

当或一旦由预引导飞地对引导os所需要的已加密数据进行解密时,所述方法可以从框503前进至框504,依照所述框,可以引导所述os。所述方法然后可以前进至框505,其中,所述预引导飞地可以被传递至用户模式部件(例如,飞地主控模块160)。

如在此所使用的,将预引导飞地“传递”至用户模式部件包括允许保持预引导飞地(例如,在epc114中),从而使得其可以在运行时间期间由内核模式部件(例如,存储映射器模块151)来使用,如以上所讨论的。在一些示例中,预引导应用可以通过将分配至预引导飞地的epc范围传达至飞地主控模块160来将预引导飞地传递至用户模式部件。这可以例如通过执行映射操作以将分配至预引导飞地的epc范围(或其他虚拟存储器地址范围)映射至飞地主控模块160来执行,例如使用高级配置与电源接口(acpi)表、uefi变量、固定存储器地址、其组合等。一旦已经转移了预引导飞地,则所述方法可以前进至框506并结束。

本公开的另一方面涉及一种计算机可读存储介质,所述计算机可读存储介质包含计算机可读指令,所述计算机可读指令当由处理器执行时使所述处理器(或包含处理器的设备)执行与本公开一致的操作。当使用时,计算机可读存储介质可以采用制品的形式。在一些示例中,计算机可读存储介质可以为非瞬态计算机可读介质或机器可读存储介质,诸如但不限于光学、磁性或半导体存储介质。在任何情况下,存储介质可以存储各种类型的计算机可执行指令,诸如用于执行图3、图4和图5中的一者或多者的方法的操作的指令。可以使用的合适计算机可读存储介质的非限制性示例包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移除存储器或不可移除存储器、可擦除存储器或不可擦除存储器、可写存储器或可重写存储器等。计算机可执行指令的示例可以包括任何合适类型的代码,如源代码、编译代码、翻译码、可执行代码、静态代码、动态代码、面向对象代码、可视代码等。

示例

以下示例涉及进一步实施例。本公开的以下示例可以包括主题,诸如系统、设备、方法、存储指令(当被执行时使机器基于所述方法执行动作)的计算机可读存储介质、和/或用于基于所述方法执行动作的装置,如以下所提供的。

示例1:根据此示例,提供了一种计算设备,所述计算设备被配置成用于利用在用户模式下执行的安全飞地来强化数据加密;所述计算设备包括:处理器;存储器;以及用户模式接口模块,至少部分地在所述处理器的内核模式下实现,其中,所述用户模式接口模块用于:在共享缓冲器中对未处理数据进行排队,所述共享缓冲器是所述用户模式接口模块和飞地主控模块可访问的,所述飞地主控模块至少部分地在所述处理器的用户模式下是可执行的,所述飞地主控模块主控安全飞地;以及向所述飞地主控模块提供经缓冲数据指示符,所述经缓冲数据指示符被配置成用于使所述安全飞地对所述未处理数据执行加密操作以便产生经处理数据。

示例2:此示例包括如示例1所述特征中的任何或全部特征,并且进一步包括:存储映射器模块,所述存储映射器模块至少部分地在所述内核模式下是可执行的,其中,所述用户模式接口模块进一步用于从所述存储映射器模块接收所述未处理数据。

示例3:此示例包括如示例2所述特征中的任何或全部特征,其中,所述存储映射器模块用于拦截来自至少部分地在所述用户模式下执行的应用的一个或多个读请求,并且用于将所述一个或多个读请求所针对的未处理数据重新引导至所述用户模式接口模块。

示例4:此示例包括如示例2所述特征中的任何或全部特征,其中:所述用户模式接口模块进一步用于接收所述经处理数据;并且所述存储映射器模块进一步用于从所述用户模式接口模块接收所述经处理数据。

示例5:此示例包括如示例4所述特征中的任何或全部特征,其中,所述存储映射器模块进一步用于判定所述经处理数据是明文还是密文。

示例6:此示例包括如示例3所述特征中的任何或全部特征,其中,所述一个或多个读请求所针对的所述未处理数据包括密文。

示例7:此示例包括如示例6所述特征中的任何或全部特征,其中,所述用户模式接口模块用于在所述共享缓冲器中对所述密文的至少一部分进行排队,并且所述加密操作包括解密在所述共享缓冲器中排队的所述密文。

示例8:此示例包括如示例2至7中任一示例所述特征中的任何或全部特征,其中,所述存储映射器模块用于拦截来自至少部分地在所述用户模式下执行的应用的一个或多个写请求,并且用于将与所述一个或多个写请求相关联的未处理数据重新引导至所述用户模式接口模块。

示例9:此示例包括如示例8所述特征中的任何或全部特征,其中,与所述一个或多个写请求相关联的所述未处理数据是明文。

示例10:此示例包括如示例9所述特征中的任何或全部特征,其中,所述用户模式接口模块用于在所述共享缓冲器中对所述明文进行排队,并且所述加密操作包括解密在所述缓冲器中排队的所述明文。

示例11:此示例包括如示例1至10中任一示例所述特征中的任何或全部特征,其中:所述飞地主控模块用于向暴露于所述飞地主控模块和所述用户模式接口模块两者的代理发布系统调用;所述用户模式接口模块用于拦截所述系统调用;并且所述用户模式接口模块用于至少部分地通过释放所述系统调用来提供所述经缓冲数据指示符。

示例12:此示例包括如示例11所述特征中的任何或全部特征,其中,所述代理包括内核模式设备或数据结构。

示例13:此示例包括如示例11和12中任一示例所述特征中的任何或全部特征,其中,所述用户模式接口模块进一步用于创建所述代理。

示例14:此示例包括如示例1至13中任一示例所述特征中的任何或全部特征,其中,所述安全飞地用于:使用至少一个密钥来执行所述加密操作;并且在关闭所述计算设备之前,所述安全飞地至少部分地利用对所述飞地的测量来加密所述密钥。

示例15:此示例包括如示例14所述特征中的任何或全部特征,其中,安全飞地用于在所述飞地内执行所述加密操作。

示例16:此示例包括如示例至15中任一示例所述特征中的任何或全部特征,其中,所述安全飞地用于原位地执行所述加密操作,从而使得所述经处理数据被写入所述共享缓冲器中的与所述未处理数据的相应部分相同的位置中。

示例17:此示例包括如示例至16中任一示例所述特征中的任何或全部特征,其中,所述共享缓冲器为环缓冲器。

示例18:此示例包括如示例17所述特征中的任何或全部特征,其中:所述飞地主控模块可操作用于在所述用户模式接口模块在所述环缓冲器中对未处理数据进行排队的同时从所述环缓冲器中读取所述未处理数据并将所述未处理数据提供给所述飞地;所述飞地主控模块进一步可操作用于将由所述安全飞地产生的所述经处理数据排队到所述环缓冲器中;并且所述用户模式接口模块进一步可操作用于在所述飞地主控模块在所述环缓冲器中对所述经处理数据进行排队的同时将所述经处理数据从所述环缓冲器中移除。

示例19:此示例包括如示例1至18中任一示例所述特征中的任何或全部特征,其中,所述飞地主控模块进一步可操作用于提供完成指示符,所述完成指示符用于向所述用户模式接口模块指示由所述安全飞地执行的所述加密操作的至少一部分完成。

示例20:此示例包括如示例19所述特征中的任何或全部特征,其中,所述飞地主控模块至少部分地通过发布针对暴露于所述飞地主控模块和所述用户模式接口模块两者的代理的系统调用来提供所述完成指示符。

示例21:此示例包括如示例20所述特征中的任何或全部特征,其中,所述代理包括内核模式设备或数据结构。

示例22:根据此示例,提供了一种利用在用户模式下执行的飞地来强化加密操作的方法,所述方法包括利用用于在处理器的内核模式下执行的用户模式接口模块进行的以下步骤:接收未处理数据;在共享缓冲器中对未处理数据进行排队,所述共享缓冲器是所述用户模式接口模块和飞地主控模块可访问的,所述飞地主控模块至少部分地在所述处理器的用户模式下执行,所述飞地主控模块主控安全飞地;以及向所述飞地主控模块提供经缓冲数据指示符,所述经缓冲数据指示符被配置成用于使所述安全飞地对所述未处理数据执行加密操作以便产生经处理数据。

示例23:此示例包括如示例22所述特征中的任何或全部特征,其中,所述用户模式接口模块从在所述处理器的所述内核模式下执行的存储映射器模块接收所述未处理数据。

示例24:此示例包括如示例23所述特征中的任何或全部特征,其中,所述未处理数据包括明文、密文、或明文和密文的组合。

示例25:此示例包括如示例23所述特征中的任何或全部特征,进一步包括利用所述用户模式接口模块进行的以下步骤:从所述缓冲器接收所述经处理数据;以及将所述经处理数据提供给所述存储映射器模块。

示例26:此示例包括如示例22所述特征中的任何或全部特征,并且进一步包括利用所述用户模式接口模块进行的以下步骤:在所述共享缓冲器中对所述未处理数据进行排队,并且基本上同时地从所述共享缓冲器接收所述经处理数据。

示例27:此示例包括如示例24所述特征中的任何或全部特征,其中,所述未处理数据是明文,并且所述经缓冲数据指示符被配置成用于使所述安全飞地加密所述明文。

示例28:此示例包括如示例24所述特征中的任何或全部特征,其中,所述未处理数据是密文,并且所述经缓冲数据指示符被配置成用于使所述安全飞地解密所述密文。

示例29:此示例包括如示例22至28中任一示例所述特征中的任何或全部特征,其中,提供所述经缓冲数据指示符包括:由所述用户模式接口模块释放针对代理的系统调用。

示例30:此示例包括如示例29所述特征中的任何或全部特征,其中,所述系统调用由所述飞地主控模块发布。

示例31:此示例包括如示例29所述特征中的任何或全部特征,并且进一步包括利用所述用户模式接口模块进行的以下步骤:使得创建所述代理。

示例32:此示例包括如示例29至31中任一示例所述特征中的任何或全部特征,其中,所述代理包括内核模式设备或数据结构。

示例33:此示例包括如示例22至32中任一示例所述特征中的任何或全部特征,并且进一步包括利用所述安全飞地进行的以下步骤:利用受所述安全飞地保护的至少一个密钥来执行所述加密操作。

示例34:此示例包括如示例22至33中任一示例所述特征中的任何或全部特征,其中,所述加密操作在所述安全飞地内执行。

示例35:此示例包括如示例22至34中任一示例所述特征中的任何或全部特征,并且进一步包括利用所述安全飞地进行的以下步骤:原位地执行所述加密操作,从而使得所述经处理数据被写入所述共享缓冲器中的与所述未处理数据的相应部分相同的位置中。

示例36:此示例包括如示例22至35中任一示例所述特征中的任何或全部特征,其中,所述共享缓冲器为环缓冲器。

示例37:此示例包括如示例36所述特征中的任何或全部特征,并且进一步包括利用所述飞地主控模块:在所述用户模式接口模块在所述环缓冲器中对所述未处理数据进行排队的同时从所述环缓冲器中读取所述未处理数据并将所述未处理数据提供给所述安全飞地;将所述经处理数据排队到所述环缓冲器中;以及利用所述用户模式接口模块来:在所述飞地主控模块在所述环缓冲器中对所述经处理数据进行排队的同时将所述经处理数据从所述环缓冲器中移除。

示例38:此示例包括如示例22至27中任一示例所述特征中的任何或全部特征,并且进一步包括利用所述飞地主控模块进行的以下步骤:向所述用户模式接口模块提供用于指示由所述安全飞地执行的所述加密操作的至少一部分完成的完成指示符。

示例39:此示例包括如示例38所述特征中的任何或全部特征,进一步包括利用所述飞地主控模块进行的以下步骤:至少部分地通过发布针对暴露于所述飞地主控模块和所述用户模式接口模块两者的代理的系统调用来提供所述完成指示符。

示例40:此示例包括如示例39所述特征中的任何或全部特征,其中,所述代理包括内核模式设备或数据结构。

示例41:根据此示例,提供了至少一种计算机可读介质,所述计算机可读介质包括计算机可读指令,所述计算机可读指令利用在用户模式下执行的飞地来强化加密操作,所述计算机可读指令当由计算设备的处理器执行时使所述计算设备执行以下操作,所述操作包括:接收未处理数据;在共享缓冲器中对所述未处理数据进行排队,所述共享缓冲器是所述用户模式接口模块和飞地主控模块可访问的,所述飞地主控模块至少部分地在所述处理器的用户模式下执行,所述飞地主控模块主控安全飞地;以及向所述飞地主控模块提供经缓冲数据指示符,所述经缓冲数据指示符被配置成用于使所述安全飞地对所述未处理数据执行加密操作以便产生经处理数据。

示例42:此示例包括如示例41所述特征中的任何或全部特征,其中,所述用户模式接口模块从在所述处理器的所述内核模式下执行的存储映射器模块接收所述未处理数据。

示例43:此示例包括如示例42所述特征中的任何或全部特征,其中,所述未处理数据包括明文、密文、或明文和密文的组合。

示例44:此示例包括如示例42所述特征中的任何或全部特征,其中,所述指令当被执行时进一步使得执行以下操作,所述操作包括利用所述用户模式接口模块进行的以下步骤:从所述缓冲器接收所述经处理数据;以及将所述经处理数据提供给所述存储映射器模块。

示例45:此示例包括如示例41至44中任一示例所述特征中的任何或全部特征,其中,所述指令当被执行时进一步使得执行以下操作,所述操作包括利用所述用户模式接口模块进行的以下步骤:在所述共享缓冲器中对所述未处理数据进行排队,并且基本上同时地从所述共享缓冲器接收所述经处理数据。

示例46:此示例包括如示例43所述特征中的任何或全部特征,其中,所述未处理数据是明文,并且所述经缓冲数据指示符被配置成用于使所述安全飞地加密所述明文。

示例47:此示例包括如示例43所述特征中的任何或全部特征,其中,所述未处理数据是密文,并且所述经缓冲数据指示符被配置成用于使所述安全飞地解密所述密文。

示例48:此示例包括如示例41至47中任一示例所述特征中的任何或全部特征,其中,提供所述经缓冲数据指示符包括:由所述用户模式接口模块释放针对代理的系统调用。

示例49:此示例包括如示例48所述特征中的任何或全部特征,其中,所述系统调用由所述飞地主控模块发布。

示例50:此示例包括如示例48所述特征中的任何或全部特征,其中,所述指令当被执行时进一步导致执行以下操作,所述操作包括利用所述用户模式接口模块进行的以下步骤:导致创建所述代理。

示例51:此示例包括如示例48所述特征中的任何或全部特征,其中,所述代理包括内核模式设备或数据结构。

示例52:此示例包括如示例41至51中任一示例所述特征中的任何或全部特征,其中,所述指令当被执行时进一步导致执行以下操作,所述操作包括利用所述安全飞地进行的以下步骤:利用受所述安全飞地保护的至少一个密钥来执行所述加密操作。

示例53:此示例包括如示例41至52中任一示例所述特征中的任何或全部特征,其中,所述加密操作在所述安全飞地内执行。

示例54:此示例包括如示例41至53中任一示例所述特征中的任何或全部特征,其中,所述指令当被执行时进一步导致执行以下操作,所述操作包括利用所述安全飞地进行的以下步骤:原位地执行所述加密操作,从而使得所述经处理数据被写入所述共享缓冲器中的与所述未处理数据的相应部分相同的位置中。

示例55:此示例包括如示例41至54中任一示例所述特征中的任何或全部特征,其中,所述共享缓冲器为环缓冲器。

示例56:此示例包括如示例55所述特征中的任何或全部特征,其中,所述指令当被执行时进一步导致执行以下操作,所述操作包括利用所述飞地主控模块:在所述用户模式接口模块在所述环缓冲器中对所述未处理数据进行排队的同时从所述环缓冲器中读取所述未处理数据并将所述未处理数据提供给所述安全飞地;将所述经处理数据进行排队到所述环缓冲器中;以及利用所述用户模式接口模块来:在所述飞地主控模块在所述环缓冲器中对所述经处理数据进行排队的同时将所述经处理数据从所述环缓冲器中移除。

示例57:此示例包括如示例56所述特征中的任何或全部特征,其中,所述指令当被执行时进一步导致执行以下操作,所述操作包括利用所述飞地主控模块进行的以下步骤:向所述用户模式接口模块提供用于指示由所述安全飞地执行的所述加密操作的至少一部分完成的完成指示符。

示例58:此示例包括如示例57所述特征中的任何或全部特征,其中,所述指令当被执行时进一步导致执行以下附加操作,所述附加操作包括利用所述飞地主控模块进行的以下步骤:至少部分地通过发布针对暴露于所述飞地主控模块和所述用户模式接口模块两者的代理的系统调用来提供所述完成指示符。

示例59:此示例包括如示例58所述特征中的任何或全部特征,其中,所述代理包括内核模式设备或数据结构。

示例60:根据此示例,提供了一种计算设备,所述计算设备被配置成用于利用在用户模式下执行的安全飞地来强化数据加密;所述计算设备包括:处理器;存储器;以及用户模式接口装置,至少部分地在所述处理器的内核模式下实现,所述用户模式接口装置用于:在共享缓冲器中对未处理数据进行排队,所述共享缓冲器是所述用户模式接口装置和飞地主控装置可访问的,所述飞地主控装置至少部分地在所述处理器的用户模式下是可执行的,所述飞地主控装置主控安全飞地;以及向所述飞地主控装置提供经缓冲数据指示符,所述经缓冲数据指示符被配置成用于使所述安全飞地对所述未处理数据执行加密操作以便产生经处理数据。

示例61:此示例包括如示例60所述特征中的任何或全部特征并且进一步包括:至少部分地在所述内核模式下可执行的存储映射器装置,其中,所述用户模式接口装置进一步用于从所述存储映射器装置接收所述未处理数据。

示例62:此示例包括如示例61所述特征中的任何或全部特征,其中,所述存储映射器装置用于拦截来自至少部分地在所述用户模式下执行的应用的一个或多个读请求,并且用于将所述一个或多个读请求所针对的未处理数据重新引导至所述用户模式接口装置。

示例63:此示例包括如示例61所述特征中的任何或全部特征,其中:所述用户模式接口装置进一步用于接收所述经处理数据;并且所述存储映射器装置进一步用于从所述umim接收所述经处理数据。

示例64:此示例包括如示例63所述特征中的任何或全部特征,其中,所述存储映射器装置进一步用于判定所述经处理数据是明文还是密文。

示例65:此示例包括如示例62所述特征中的任何或全部特征,其中,所述一个或多个读请求所针对的所述未处理数据包括密文。

示例66:此示例包括如示例65所述特征中的任何或全部特征,其中,所述用户模式接口装置用于在所述共享缓冲器中对所述密文的至少一部分进行排队,并且所述加密操作包括解密在所述共享缓冲器中排队的所述密文。

示例67:此示例包括如示例61至66中任一示例所述特征中的任何或全部特征,其中,所述存储映射器装置用于拦截来自至少部分地在所述用户模式下执行的应用的一个或多个写请求,并且用于将与所述一个或多个写请求相关联的未处理数据重新引导至所述用户模式接口装置。

示例68:此示例包括如示例67所述特征中的任何或全部特征,其中,与所述一个或多个写请求相关联的所述未处理数据是明文。

示例69:此示例包括如示例68所述特征中的任何或全部特征,其中,所述用户模式接口装置用于在所述共享缓冲器中对所述明文进行排队,并且所述加密操作包括解密在所述缓冲器中排队的所述明文。

示例70:此示例包括如示例60至69中任一示例所述特征中的任何或全部特征,其中:所述飞地主控装置用于向暴露于所述飞地主控装置和所述用户模式接口装置两者的代理发布系统调用;所述用户模式接口装置用于拦截所述系统调用;并且所述用户模式接口装置用于至少部分地通过释放所述系统调用来提供所述经缓冲数据指示符。

示例71:此示例包括如示例70所述特征中的任何或全部特征,其中,所述代理包括内核模式设备或数据结构。

示例72:此示例包括如示例70所述特征中的任何或全部特征,其中,所述用户模式接口装置进一步用于创建所述代理。

示例73:此示例包括如示例60至72中任一示例所述特征中的任何或全部特征,其中,所述安全飞地用于:使用至少一个密钥来执行所述加密操作;并且在关闭所述计算设备之前,所述安全飞地至少部分地利用对所述飞地的测量来加密所述密钥。

示例74:此示例包括如示例73所述特征中的任何或全部特征,其中,安全飞地用于在所述飞地内执行所述加密操作。

示例75:此示例包括如示例60至74中任一示例所述特征中的任何或全部特征,其中,所述安全飞地用于原位地执行所述加密操作,从而使得所述经处理数据被写入所述共享缓冲器中的与所述未处理数据的相应部分相同的位置中。

示例76:此示例包括如示例60至75中任一示例所述特征中的任何或全部特征,其中,所述共享缓冲器为环缓冲器。

示例77:此示例包括如示例76所述特征中的任何或全部特征,其中:所述飞地主控装置可操作用于在所述用户模式接口装置在环缓冲器中对未处理数据进行排队的同时从所述环缓冲器中读取所述未处理数据并将所述未处理数据提供给所述飞地;所述飞地主控装置进一步可操作用于在将由所述安全飞地产生的所述经处理数据排队到所述环缓冲器中;并且所述用户模式接口装置进一步可操作用于在所述飞地主控装置在所述环缓冲器中对所述经处理数据进行排队的同时将所述经处理数据从所述环缓冲器中移除。

示例78:此示例包括如示例60至77中任一示例所述特征中的任何或全部特征,其中,所述飞地主控装置进一步可操作用于提供完成指示符,所述完成指示符用于向所述用户模式接口装置指示由所述安全飞地执行的所述加密操作的至少一部分完成。

示例79:此示例包括如示例78所述特征中的任何或全部特征,其中,所述飞地主控装置至少部分地通过发布针对暴露于所述飞地主控装置和所述用户模式接口装置两者的代理的系统调用来提供所述完成指示符。

示例80:此示例包括如示例79所述特征中的任何或全部特征,其中,所述代理包括内核模式设备或数据结构。

示例81:根据此示例,提供了至少一种计算机可读介质,所述计算机可读介质包括计算机可读指令,所述计算机可读指令用于利用在用户模式下执行的飞地来强化加密操作,所述计算机可读指令当由计算设备的处理器执行时使所述计算设备执行如示例22至40中任一示例所述的方法。

示例82:根据此示例,提供了一种设备,所述设备包括用于执行如示例22至40中任一项所述的方法的装置。

在此已采用的术语和表达用作对术语进行描述而非进行限制,并且在使用这种术语和表达时不旨在排除所示出且所描述的特征(或其多个部分)的任何等效物,并且认识到在权利要求书范围内的各种修改是有可能的。从而,权利要求书旨在涵盖所有这类等效方案。

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