具有联网设备的计算机驱动系统的半虚拟化安全威胁防护的制作方法

文档序号:13985180
具有联网设备的计算机驱动系统的半虚拟化安全威胁防护的制作方法

本申请要求于2015年4月14日提交的、标题为“具有联网设备的计算机驱动系统的半虚拟化安全威胁防护”的美国临时专利申请号62/147,429的权益,出于所有目的,其全部内容在此通过引用并入本文。

技术领域

本发明涉及联网设备和不受控制的设备的安全威胁防护,并且更具体地,涉及使用半虚拟化(paravirtualization)环境的安全威胁防护。



背景技术:

诸如ARM核的低功率处理核现在驻留在多数的常见设备,包括蜂窝电话以及照相机、移动设备、嵌入式系统,并且驻留在复杂系统的各种部件内,诸如汽车和家用电器。这些处理核通过不同的协议连接在一起,诸如通用串行总线(“USB”)、控制器局域网(CAN)、近场通信(NFC)和蓝牙。这在硬件设备之间造成了接口级别的网络安全问题。诸如蓝牙和NFC的通信协议未能纳入足够的安全性,而诸如USB的其他设备已经针对台式PC市场开发的协议进行了改进,这些协议只能在应用级别修补最少数量的安全漏洞,而不能解决硬件级别的通信。

为了应对数据安全问题,处理器制造商已经开发出安全的孤立地区(enclaves)。例如,ARM控股的TrustZone和英特尔(Intel)的SGX技术被设计为实现安全的硬件孤立地区,使得在其中一个孤立地区中运行的应用无法通过包括操作系统在内的孤立地区之外的任何进程进行其存储器读取或执行。即使感染传播到操作系统,硬件孤立地区也可防止安全数据受到恶意软件的威胁。安全的孤立地区代表的只是嵌入式和移动系统所需安全性的第一步。除了防范这些软件攻击外,还必须考虑CPU本身的输入/输出。为了解决这种攻击,处理器制造商可以禁用所有CPU输入/输出;然而,这种方法将导致不可接受的功能损失。

操作系统(“OS”)/驱动程序级别的攻击随着时间变得更加容易,因为几乎所有的现代电子设备现在都包含一个完整的中央处理单元(“CPU”)。因此,设计通过硬件协议的智能攻击不再需要定制设计的硬件或者甚至硬件专业知识。



技术实现要素:

根据本发明的一个实施例,公开了一种保护计算机驱动系统免受安全威胁的计算机实施的方法。计算机驱动系统包括在虚拟环境中运行操作系统的、通过网络与多个电子设备进行通信的处理器主机。多个电子设备通过网络使用协议集合进行通信。操作系统从应用接收系统调用。响应于该系统调用,由操作系统生成驱动程序调用。驱动程序调用到特定驱动程序的发送被中断,并且在一系列半虚拟化进程中,驱动程序调用被转换为超级调用。根据安全规则集合来分析超级调用,以确定是否存在安全威胁。如果分析确定不存在安全威胁,则将超级调用发送到特定的驱动程序。如果分析确定存在安全威胁,则执行安全进程。安全进程可以包括阻止超级调用到特定驱动程序的发送。在其他实施例中,安全进程包括在向特定驱动程序发送超级调用之前修改超级调用。在本发明的另一个实施例中,安全进程包括生成安全威胁通知。

在某些实施例中,分析超级调用并且系统识别数据将被写入可移除介质,并且作为响应,安全进程包括对数据进行加密。

在另一个实施例中,本发明被实施为一种计算机实施的安全系统,其与具有从应用接收特定系统调用的操作系统的主机处理器一起使用。安全系统包括:分析模块,分析模块耦合到管理程序(hypervisor)并且在与操作系统分离的第一虚拟化环境中的主机处理器上运行,操作系统在第二虚拟化环境中运行。分析模块包括:输入,输入用于从管理程序接收输入超级调用,输入超级调用来自于由管理程序已经接收到的、对特定驱动程序进行的驱动程序调用,驱动程序调用由操作系统响应于由应用进行的系统调用而生成。分析模块还包括:计算机代码,计算机代码定义计算机进程,计算机进程根据安全规则集合分析超级调用以确定是否存在安全威胁;以及分析模块包括输出。系统还包括安全模块,安全模块在第一虚拟化环境中,具有耦合到分析模块输出的输入和耦合到所述管理程序的输出。安全模块被配置为:如果分析模块确定不存在安全威胁,则将超级调用发送到管理程序,以使得由管理程序生成响应于输入超级调用的输出超级调用并被引导到特定驱动程序。如果分析模块确定存在安全威胁,则执行安全进程。在一个实施例中,特定驱动程序驻留在第一虚拟化环境内。在其他实施例中,特定驱动程序驻留在第三虚拟化环境中。

在系统的某些实施例中,输入超级调用与输出超级调用相同。此外,安全模块可以包括加密密钥的存储,并且安全进程涉及要写入可移除介质的数据的加密。本发明的实施例还可以体现为在其上具有计算机代码的有形计算机可读介质上实施的计算机程序产品,计算机代码可操作在主机处理器上用于安全性分析。

在本发明的其他实施例中,系统提供一种计算机实施的方法,该方法允许授权的用户访问存储在不受控制的设备中的文件集合,同时防止未经授权的用户访问这些文件,即使设备对于未经授权的用户是物理上可用的。在这样的实施例中,该文件集合以加密形式被存储。该方法使用由与设备进行通信的处理器执行的计算机进程。在该方法中,潜在用户寻求对该文件集合的访问。该计算机进程包括:

在以下条件下:

(i)文件已经利用对称密钥集合加密;以及

(ii)在设备上先前与文件集合一起已经存储有对称密钥集合的实例集合,该实例集合构成启发式访问控制列表,并且启发式地定义文件的授权用户集合,其中对称密钥集合的每个不同实例使用授权用户集合的对应子集的公钥进行加密;

访问潜在用户的私钥;

确定潜在用户的私钥是否可以用于解密对称密钥集合的实例中的一个,并且如果是,则将潜在用户认证为授权用户中的一个,并解密对称密钥集合的对应实例;

如果潜在用户已经被认证为授权用户中的一个,则使用解密的对称密钥的集合的成员来解密文件集合中的至少一个文件。

在本发明的某些实施例中,计算机进程进一步包括向潜在用户提供挑战以确定潜在用户是否是其中一个授权用户。在其他实施例中,在利用已经被存储在设备上的数字签名已经认证启发式访问控制列表的条件下发生进程,并且进程进一步包括:针对与数字签名的符合,评估启发式访问控制列表,以确定启发式访问控制列表是否已被篡改,并且如果评估指示启发式访问控制列表已被篡改,则拒绝潜在用户的访问。

在本发明的其他实施例中,用于挑战的计算机进程包括从由以下构成的组中选择的至少一个进程:要求用户输入用户名和密码的,要求作为设备的用户执行与设备的特性一致的功能,针对与设备的性质一致的模式来评估作为设备的用户的行为。

在本发明的某些实施例中,该文件集合中的所有文件都用一个对称密钥加密。在另一个实施例中,该文件集合中的每个不同的文件用不同的对称密钥加密。

本发明的实施例还可以包括一种计算机实施的方法,该方法允许授权的用户访问以将要以加密形式存储的文件集合写入不受控制的设备,同时防止未经授权的用户访问这些文件,即使当设备对未经授权的用户物理上可用。在本实施例中,该方法使用由与设备进行通信的处理器执行的计算机进程,并且潜在用户寻求访问以写入该文件集合。该计算机进程包括:

在已经在设备上存储对称密钥集合的实例集合的情况下,实例集

合构成启发式访问控制列表,并且启发式地定义要存储在设备上

的文件集合的授权用户集合,其中对称密钥集合的每个不同实例

利用授权用户的对应子集的公钥进行加密;

访问潜在用户的私钥;

确定潜在用户的私钥是否可以用于解密对称密钥集合的实例中的

一个,并且如果是,则将潜在用户认证为授权用户中的一个,并

解密对称密钥集合的对应实例;

如果潜在用户已被认证为授权用户中的一个,则使用解密的对称

密钥的集合的成员对文件集合进行加密;以及

将加密的文件集合存储在不受控制的设备上。

在某些实施例中,计算机进程向潜在用户提供挑战,以确定潜在用户是否是其中一个授权用户。

在本发明的另一个实施例中,提供了一种结合到不受控制的设备中的非暂时性数字存储介质。该存储介质其中包含:

(i)已经利用对称密钥集合加密的文件集合;

(ii)对称密钥集合的实例集合,实例集合构成启发式访问控制列表,并且启发式地定义文件的授权用户集合,其中对称密钥集合的每个不同实例利用授权用户集合的对应子集的公钥进行加密;使得其中潜在用户寻求对文件集合的访问,可以防止未经授权的用户对文件集合的访问,并且可以通过利用计算机进程来允许授权用户对文件集合的访问,计算机进程包括:

访问潜在用户的私钥;

确定潜在用户的私钥是否可以用于解密对称密钥集合的实例中的一个,并且如果是,则将潜在用户认证为授权用户中的一个,并解密对称密钥集合的对应实例;

如果潜在用户已被认证为授权用户中的一个,则使用解密的对称密钥的集合的成员来解密文件集合中的至少一个文件。

附图说明

通过参考以下详细描述并参考附图,将更容易理解实施例的前述特征,其中:

图1是示出根据本发明的实施例的用于半虚拟化安全威胁防护系统的架构的示意图;

图1A示出了根据本发明的实施例的替选实施例,其中多个不受信任的驱动程序各自驻留在它们自身的虚拟化环境内;

图1B示出了根据本发明的实施例的替选实施例,其中策略模块位于第一虚拟化环境内,并且不受信任的驱动程序位于第二虚拟化环境中;

图1C示出了根据本发明的实施例的替选实施例,其中策略模块和不受信任的驱动程序都位于第二虚拟化环境内;

图2示出了根据本发明的实施例的在与一个或多个联网设备通信的计算机系统中的安全威胁防护的方法步骤的流程图;

图3是根据本发明的实施例的使用半虚拟化环境的安全威胁防护的方法的另一流程图;

图3A是示出根据本发明的一个实施例的示例性伪计算机代码,其示出了半虚拟化驱动程序前端、管理程序、策略模块和半虚拟化驱动程序后端之间的关系;

图4A和4B分别示意性地示出了根据本发明的实施例的非虚拟化I/O驱动程序调用和使用诸如Xen管理程序的管理程序的I/O调用的通信路径;

图5示出了根据本发明的实施例的在应用和联网硬件设备之间的通信路径,其中策略模块驻留在虚拟化环境内并且确定作为与联网硬件设备的I/O通信的结果是否发生安全威胁;

图6示出根据本发明的实施例的源自联网硬件设备的通信路径;

图7-12示出了用于不同场境和环境的本发明的实施例,以示出由策略模块执行的分析和安全功能;

图7是应用于具有通过I/O连接附接到计算机系统的可移动存储器的计算机系统的本发明的实施例的示意图;

图8是可应用于图7所示的实施例的逻辑进程的流程图;

图9示出根据本发明的实施例的、在医疗设备中实施以保护设备的完整性的半虚拟安全威胁防护系统;

图10是可应用于图9的实施例的逻辑进程的流程图;

图11示出了根据本发明的实施例的、在机动车的环境中实施的半虚拟化安全威胁防护系统的示意图;图12示出了可应用于图11的实施例的逻辑进程的流程图;

图13示出了根据本发明的一个实施例的用于实施可移除介质的文件访问控制的环境;

图14示出了根据本发明的一个实施例的代表性可移除介质和存储在存储器中以用于提供可移除介质上的数据的文件访问控制的数据;

图15A和15B是描绘本发明的实施例的示例性流程图,其示出了驻留在域控制器上的用户权限如何被转换为用于启发式访问控制列表的端点(例如不受控制的设备);

图15A根据本发明的实施例建立启发式访问控制列表(HACL)的配备;

图15B示出了根据本发明的一个实施例的策略模块接收到证书之后策略模块和不受控制的设备(例如,USB闪存驱动)之间的通信;

图16A是根据本发明的一个实施例的示例性流程图,示出了当接收到来自不受控制的设备的文件读取请求时由策略模块执行的动作;

图16B是根据本发明的另一实施例的示例性流程图,示出了当接收到来自不受控制的设备的文件读取请求时,策略模块与不受控制的设备之间的相互操作;

图17A是第一示例性实施例,用于在闪存驱动或其他可移除介质上与每个文件一起存储元数据和密钥;

图17B是第二示例性实施例,其中各个分区在闪存驱动或其他可移除介质上被加密,而不是在各个文件上;

图17C是第三示例性实施例,其中许可和加密信息被集成到文件系统本身中;

图18A是根据本发明的一个实施例的示例性流程图,示出了当接收写入请求以写入到不受控制的设备时由策略模块执行的动作;以及

图18B是根据本发明的另一个实施例的流程图,示出了当从计算机向不受控制的设备的写入文件的请求被计算机上的操作系统请求接收时,策略模块和不受控制的设备之间的相互操作。

具体实施方式

定义。如本说明书和所附权利要求中所使用的,以下术语具有所示的含义,除非上下文另有规定:

“集合”包括至少一个成员。

“计算机进程”是在使用计算机硬件(诸如处理器、现场可编程门阵列或其他电子组合逻辑或类似设备)的计算机中执行所描述的功能,其可以在软件或固件或任何这些的组合的控制下操作,或在任何前述控制外操作。所描述的功能的全部或部分可以由主动或被动电子部件——诸如晶体管或电阻器——来执行。在使用术语“计算机进程”时,虽然在一些实施例中计算机进程可以由可调度实体或计算机程序或其一部分来实施,但是我们不一定需要这样的可调度的实体,或计算机程序或其一部分的操作。此外,除非上下文另有要求,否则可以使用多于一个处理器或多于一个(单处理器或多处理器)计算机来实施“进程”。

“驱动程序”是与设备接合并用作设备和使用该设备的另一程序之间的翻译器的程序。驱动程序中内置的“过滤器驱动程序”包含在术语“驱动程序”中。

“驱动程序调用”是对通常由操作系统响应于应用进行的系统调用而进行的对驱动程序的调用。驱动程序可能,但不一定要以多种不同的方式被调用。例如,外部存储设备可以具有“读取”功能和“写入”功能,其中通过不同的驱动程序调用来调用每个功能。“驱动程序调用”不一定必须转到与驱动程序相关联的设备,而是可以例如将数据返回到使用设备的程序,而不直接与设备通信。

“超级调用(hyper call)”是调用虚拟化环境或支持虚拟化环境的软件的功能的调用。“超级调用”可以但不必跳转到管理程序或另一虚拟机中的代码。例如,超级调用可以仅涉及由第一虚拟机写入与第二虚拟机共享的存储器,该第二虚拟机以定时间隔轮询共享存储器。

“管理程序(hypervisor)”是支持虚拟化环境的软件。

“虚拟化环境”是从由虚拟机、管理程序及其以单数和复数组合组成的组中选择的环境。

“半虚拟化(paravirtualization)”是指将驱动程序调用转换为超级调用,并根据一组规则来处理超级调用。半虚拟化涉及修改OS以利用与虚拟化层管理程序直接通信的超级调用替换非虚拟化指令。管理程序还提供用于其他OS操作的超级调用接口,诸如存储器管理、中断处理和时间保持。

“操作系统”是指处理与计算机的操作相关联的基本输入和输出操作(例如驱动程序调用)的计算机程序,包括常规操作系统、或虚拟化环境中的客户操作系统、或在嵌入式系统或其他环境中,被配置为处理基本的输入和输出操作的程序,即使本身当没有被正式称为“操作系统”。

设备的“地址”是用于识别设备或设备的一个或多个部分的一组信息。地址可以是逻辑的、物理的、功能的、临时的、特设的,动态的、静态的、依赖于协议的或者不依赖于协议。

“可信硬件模块”(THM)是硬件实施的或由硬件保护的模块,其包含“信任根”,操作系统依赖其实施某些安全功能。可信硬件模块的示例是ARM TrustZone、英特尔(Intel)SGX和可信平台模块(TPM)。

“用户”可以是请求执行动作的人,或者用户可以是正在请求执行动作的实体,诸如处理器、智能电话或计算机。

本发明的实施例使用基于管理程序的架构来拦截和屏蔽针对安全威胁的硬件请求。在传统的操作系统环境中,硬件驱动程序在操作系统内核内部运行,并直接与硬件交互。本发明的实施例将驱动程序与主机操作系统分离,并创建驱动程序驻留的专用虚拟环境。另外,评估硬件请求并实施安全策略的策略模块也被放置在虚拟环境内部。软件包装器通过管理程序将驱动程序调用引导到策略模块,该模块确定驱动程序调用是否应被转发到硬件。如果确定驱动程序调用应被转发到硬件,则将驱动程序调用转发到虚拟化驱动程序,并且虚拟驱动程序与硬件进行交互。因此,策略模块提供操作系统和驱动程序之间的间接层。策略模块则可以执行安全策略,诸如允许/拒绝对硬件资源的访问,在发送之前加密数据,检测对驱动程序的攻击(通过驱动程序的原位测量)以及其他高级行为执行算法。策略模块位于OS和驱动程序/硬件之间的信号路径中。因此,不受信任的信息将被管理程序中断,并被引导到策略模块。通过采用诸如上所述的ARM TrustZone和IntelSGX孤立地区技术,可以确保操作系统、应用和驱动程序都不能篡改或读取由策略模块存储的代码/数据。安全的孤立地区提供了硬件屏障,其防止不受信任的操作系统和不受信任的驱动程序访问策略模块的代码/数据。本发明的实施例包括利用上面定义的可信硬件模块(“THM”)来支持诸如认证、防篡改、完整性检查和平台认证的功能。

在一个实施例中,由于驱动程序在其自身的虚拟化环境中,如果操作系统和驱动程序之间的API保持静态(通常为这种情况),则驱动程序不能被利用来传播到OS/应用层中,策略模块可以支持多种操作系统版本和驱动程序版本。

在本发明的实施例中,策略模块相对于驱动程序在堆栈中更高处执行。结果是,策略模块可以支持多种协议以及驱动程序升级。只要操作系统和驱动程序之间的API保持静态——某些实施例就是这种情况,则策略模块可以支持多个操作系统版本和驱动程序版本。在本发明的实施例中,用于驱动程序的虚拟化环境可以用于整个文件系统驱动程序或用于块设备。在优选实施例中,附加到给定总线的所有功能驻留在单个虚拟化环境内。例如,直到并包括类驱动程序的USB驱动程序堆栈将在单个环境中进行虚拟化。在这种配置中,较高级别的驱动程序将由(一个或多个)客户机操作系统单独管理。

策略模块可以涵盖包括例如加密、认证、策略管理和验证驱动程序堆栈完整性以及利用行业标准密钥/证书管理的一系列特征。通过将驱动程序与操作系统隔离,任何危及驱动程序的攻击都不能迁移到内核的其余部分。

图1是示出根据本发明的实施例的用于半虚拟化安全威胁防护系统的架构的示意图。为了安全起见,系统假定主机处理器上的操作系统和关联的应用程序不被信任。同样,第三方提供的驱动程序也不被信任。架构100将不被信任的应用程序、不被信任的操作系统101和合成的驱动程序调用102从与网络硬件设备150直接通信解耦。如本领域普通技术人员所理解的,控制主机处理器(未示出)的主机操作系统本身被认为是虚拟化环境110。在该架构中,可被称为虚拟机监视器的管理程序105驻留在低于主机操作系统101的级别。当应用通过主机操作系统101进行驱动程序调用102时,管理程序105将作为超级调用103的驱动程序调用102引导到包括策略模块125的第二虚拟化环境120。如图1所示,策略模块包括两个子模块:分析模块126和安全模块127。在策略模块的分析模块中分析超级调用103以确定超级调用103是否符合如分析模块内所限定的一组规则。如果分析模块确定超级调用103不是威胁,则超级调用103被引导到将释放超级调用给管理程序105的安全模块。管理程序将向第三虚拟化环境130提供调用,其包括不被信任的驱动程序135。不被信任的驱动程序135然后将转换超级调用,并且驱动程序135将与和驱动程序调用102相关联的硬件设备150通信。如果分析模块将超级调用103识别为安全威胁,则分析模块将指示超级调用是对安全模块的安全威胁,以及安全模块将确定如何响应该安全威胁。安全模块可以向应用程序发送返回信号,指示所请求的通信不被允许,并且可以进一步向应用指示存在错误,或者可以不采取进一步的动作。如图1所示,每个不被信任的驱动程序驻留在单个虚拟化环境130中。图1A示出了替选实施例,其中多个不被信任的驱动程序各自驻留在其自身的虚拟化环境(160,170,180)内。图1B示出了根据本发明的实施例的替选实施例,其中策略模块188位于第一虚拟化环境185内,而不受信任的驱动程序189位于第二虚拟化环境189中。在该配置中,策略模块188驻留在不受信任的OS 187内。图1C示出了根据本发明的实施例的替选实施例,其中策略模块193和不受信任的驱动程序194都位于第二虚拟化环境191内。在该实施例中,不受信任的操作系统192位于第一虚拟化环境190内。

图2示出了根据本发明的实施例的与一个或多个联网设备通信的计算机系统中的安全威胁防护的方法步骤的流程图。首先,从程序或操作系统接收到驱动程序调用201。驱动程序调用的通信被中断202。通信可以被任何已知的方法中断。例如,前端驱动程序可以拦截驱动程序调用,并且可以将驱动程序调用转换为通过管理程序进行发送的超级调用。在另一个实施例中,驱动程序调用由管理程序截取,并且管理程序将驱动程序调用变换为超级调用203。一旦驱动程序调用被转换成超级调用,超级调用就被引导到其目的地204。该目的地将在虚拟化环境内。优选地,超级调用将被引导到包括具有分析和安全子模块的策略模块的虚拟化环境。

图3是根据本发明的实施例的使用半虚拟化环境的安全威胁防护的方法的另一流程图。如图3所示,系统通过主机处理器的操作系统从应用程序或直接从主机处理器的操作系统接收驱动程序调用301。如前所述,驱动程序调用的通信被系统中断302。在一些实施例中,驱动程序调用可能被管理程序中断。驱动程序调用由管理程序或前端半虚拟化驱动程序转换为超级调用303。然后在驻留在虚拟化环境中的策略模块中分析超级调用304。策略模块首先确定是否存在安全威胁305。如果存在安全威胁,则基于安全威胁306执行安全进程。如果确定不存在安全威胁,则发送超级调用307。优选地,超级调用将由管理程序发送到包括虚拟化设备驱动程序的虚拟化环境。然后,虚拟化设备驱动程序将与管理程序进行通信,管理程序将直接与硬件进行通信。

本领域普通技术人员应当理解的是,存在不同的管理程序环境,其中每一个以稍微不同的方式起作用以提供虚拟化和半虚拟化,并且本发明不限于单个管理程序环境。例如,有一些管理程序被配置为裸机安装。其他管理程序被认为是主机管理程序,其中软件未安装在裸机上,而是驻留在已经活跃的操作系统之上。

另外,在具有由不同公司针对不同环境正在开发的不同管理程序的主机管理程序内存在变化。例如,Microsoft为Windows提供Hyper-V管理程序,VMware的vSphere提供了与存储区域网络、局域网和广域网集成的软件虚拟化。Xen是开源的基于Linux的主机管理程序。所要求保护的本发明不限于特定的主机管理程序环境,但是将通过关于Xen管理程序的示例来解释。

Xen使用通过操作系统(例如Windows或Linux)中的设备驱动程序路由虚拟机输入/输出(“I/O”)的间接驱动程序设计。Xen使用由在第一个虚拟域中运行的前端驱动程序和在第二个虚拟域中运行的后端驱动程序组成的间接拆分驱动程序模型。这两个驱动程序经由共享存储块彼此交互。前端驱动程序管理访客OS的I/O请求,后端驱动程序负责管理实际的I/O设备和复用不同机器的I/O数据。后端驱动程序可以是标准化的,并且具有与典型硬件驱动程序相同的格式。因此,后端驱动程序在所提出的实施方式中将不需要由网络硬件设备的第三方硬件制造商提供的驱动程序的任何定制。

图3A是示出本发明的一个实施例中的半虚拟化驱动程序前端300A、管理程序310A、策略模块320A和半虚拟化驱动程序后端330A之间的关系的示例性伪计算机代码。半虚拟化驱动程序前端300A接收写入请求并为超级调用301A分配存储器。半虚拟化驱动程序的代码创建访问管理程序中的ExecHyperCall函数的超级调用(ExecHyperCall(h))。该代码确定调用者是否有权限将数据发送到作为策略模块的h.Recipiant 311A,并且如果是,则将超级调用引导到策略模块(例如reslt=vm.ProcHyperCall(h);)。策略模块接收此超级调用。在该示例中,策略模块可以接收对数据的读取或写入的请求。由于超级调用作为向半虚拟化驱动程序前端的写入请求而发起,因此代码(caseCOMMAND_WRITE 321A)被评估。对h.Addr处的文件进行评估,以查看它是否已被加密,并且请求用户的凭据是否被授权。假设文件被加密并且凭据被授权,则超级调用“h2”322A被引导到管理程序。管理程序如以前一样访问ExecHyperCall,并且结果将超级调用h2引导到半虚拟化驱动程序后端331A。半虚拟化驱动程序后端然后执行命令COMMAND_WRITE:其中返回的结果是与设备通信的驱动程序写入命令(rslt=Driver_Write())。

本领域普通技术人员应当清楚的是,通信可以来自任一方向。因此,通信可以从主机操作系统内的应用发起到半虚拟化前端驱动程序再到设备,或者通信可以通过半虚拟化驱动程序后端从联网附接的设备发起到主机操作系统和应用。

图4A和4B分别示意性地示出了根据本发明的实施例的非虚拟化I/O驱动程序调用和使用诸如Xen管理程序的管理程序的I/O调用的通信路径。如图4A中的非虚拟化环境所示,应用400对作为操作系统410的操作系统或嵌入式程序进行I/O调用。操作系统选择适当的驱动程序并将驱动程序置于驱动程序堆栈420。驱动程序堆栈包括参与I/O请求的驱动程序的整体序列。在标准的非虚拟化环境中,驱动程序和驱动程序堆栈驻留在操作系统内。驱动程序堆栈转换来自应用的I/O请求,并使用用于硬件430的适当协议向硬件430提供请求。

如图4B所示,虚拟机管理器450(即,管理程序)被插入在硬件430和驱动程序堆栈420之间。另外,半虚拟化驱动程序包括前端驱动程序425和后端驱动程序426。应用进行调用以访问硬件430或与硬件430交流,该硬件430与主机处理器联网。I/O调用被引导到操作系统410,然后通过驱动程序堆栈420到达半虚拟化驱动程序425的前端,该半虚拟化驱动程序425拦截驱动程序调用,并将驱动程序调用变换为超级调用。管理程序450将超级调用引导到半虚拟化驱动程序426的后端,并且后端驱动程序使用硬件设备的协议通过驱动程序堆栈的其余部分与硬件设备430进行通信。

图5示出了根据本发明实施例的在应用和联网硬件设备之间的通信路径,其中策略模块驻留在虚拟化环境中并且确定是否由于与联网硬件设备的I/O通信而发生安全威胁。图5与图4B的不同之处在于,存在三个单独的虚拟化环境(510、520和530),并且通过第二虚拟化环境520内的策略模块560来引导驱动程序调用。为了使驱动程序调用被引导到策略模块560,前端半虚拟化驱动程序525被修改,使得驱动程序向策略模块560发送超级调用,而不是直接发送到半虚拟化驱动程序526的后端。

图6示出了根据本发明的实施例的在联网硬件设备处发起的通信路径。在这样的实施例中,网络的硬件设备680生成与主机处理器上的应用600的通信,诸如中断。该通信可以包括将数据从联网硬件设备传送数据回操作系统或应用600。在图6中,通过驱动程序堆栈675a、b(某些驱动程序堆栈675a和驱动程序堆栈的其余部分675b)从硬件联网设备680将通信引导到达驻留于第三虚拟化环境630内的半虚拟化驱动程序670的后端。根据实施例,一些驱动程序堆栈675a与驱动程序堆栈的其余部分675b之间的关系可以随时间变化、可以重叠和/或可以包含不同的代码。这种变化可能取决于驱动程序调用和/或机器的状态。在其他示例中的驱动程序堆栈也可以随时间变化,诸如在图5和图4B中描述和示出的实施例中。半虚拟化驱动程序670的后端使用管理程序601将超级调用转发到第二虚拟化环境630中的策略模块660。策略模块660确定超级调用是否是安全威胁,并且如果确定超级调用不会导致安全威胁,则超级调用通过管理程序601从第二虚拟环境620转发到第一虚拟环境610内的前端半虚拟化驱动程序640。前端半虚拟化驱动程序640基于超级调用内接收的中断类型执行回调功能。对于某些中断,回调功能不会将数据推送到操作系统或应用。例如,如果中断仅影响驱动程序的内部状态,并且与应用或操作系统无关,则不需要将数据传递到操作系统或应用。在其他实施例中,回调函数将数据推送到主机处理器的操作系统,并且还可以将数据推送回应用。

图7-12示出了用于不同场境和环境中的本发明的实施例,以示出由策略模块执行的分析和安全功能。

图7是应用于计算机系统的本发明的实施例的示意图,该系统具有通过I/O连接附接到计算机系统的可移除存储器。图8是可应用于图7所示的实施例的逻辑进程的流程图。如图所示,可移除硬件存储设备701可以是通过USB连接USB总线协议连接到计算机系统700的闪存设备。在该示例中,策略模块760被配置为使得在可移除介质或存储器上从计算机系统移除的所有数据被加密。计算机系统的用户可以请求在可移除存储介质上存储在应用内操作的文档。应用对OS进行系统调用(801)。OS处理系统调用并进行驱动程序调用(802)。将文档中的数据传递给驱动程序堆栈以被写入存储介质。半虚拟化驱动程序前端拦截此驱动程序调用,将驱动程序调用格式化为超级调用,并将超级调用传递给管理程序(803)。管理程序接收该超级调用,并将该超级调用传递到与OS分开的虚拟环境中的策略模块(804)。策略模块将在分析模块内包括一组用于检查是否已经对可移除介质或存储器进行写入请求的指令(805)。如果答案是否,即没有进行写入请求,则策略模块进行超级调用,并将超级调用传递给管理程序(806)。管理程序接收超级调用,并将超级调用传递给半虚拟化驱动程序后端(807)。然后,驱动程序与可移除介质通信(808)。例如,应用可以简单地从可移除介质进行读取请求。

分析模块还可以包括认证检查,以识别进行请求的一方是否具有从计算机复制数据的授权。例如,如果操作系统是Microsoft Windows,则可以从诸如Microsoft的Active Directory等的目录服务导出用户的凭据和权限。安全模块利用本地驻留密钥(例如,在策略模块内部)对数据进行加密(809),并在第三虚拟环境(与OS和策略模块的虚拟环境分开)中创建对半虚拟化驱动程序后端的新超级调用(810)。该第二次超级调用被发送到管理程序。管理程序将此第二次超级调用传递给包含半虚拟化驱动程序后端的虚拟机(811)。后端驱动程序通过与可移除介质通信来处理调用(812)。通过使密钥管理和密钥存储在除OS、设备和驱动程序以外的分开位置,安全性得到增强。该配置更安全,因为不受信任的软件或硬件(即,OS、不受信任的设备或不受信任的驱动程序)都不能访问密钥管理或密钥存储。

图9示出了根据本发明的实施例的、在医疗设备中实施以保护设备的完整性的半虚拟化的安全威胁防护系统。图10是可应用于图9的实施例的包括安全进程1050和1060的逻辑进程的流程图。诸如胰岛素泵的医疗设备901可以具有运行软件的中央处理单元902,该软件管理物理致动器950并同时连接到互联网或其他网络进行集中管理和数据收集。当体现在这种医疗设备中该安全系统可以防止恶意行为者对医疗设备进行控制并且对正在使用该设备的患者造成伤害。在一个实施例中,不受信任OS可以是诸如RTLinux、VxWorks、SYS/BIOS或其他一些实时操作系统(RTOS)910的嵌入式OS。运行在RTOS之上的应用将会请求激活胰岛素泵的致动器(1000)。RTOS处理系统调用并进行驱动程序调用(1010)。该请求将被发送到驱动程序堆栈,在那里它将被半虚拟化驱动程序前端拦截,并变换为超级调用(1020)。该超级调用被传递到管理程序920,并且管理程序在与OS分开的虚拟环境中将超级调用传递给策略模块960(1030)。策略模块内的分析模块可以在不受信任的OS上进行完整性检查,以确定其代码是否已(例如,被恶意行动者)修改(1040)。此完整性检查的结果将传递给安全模块。如果OS的完整性已被破坏,则安全模块可以防止超级调用到达驱动程序(以及随后的胰岛素泵装置)(安全进程1050)。它还可以指示设备已被破坏(安全进程1060)。例如,可以生成信号并将其发送到主机处理器,主机处理器将发出警报。警报可能是视觉上的、听觉上的或这两者。

如果安全模块确定OS的完整性检查成功,则将该调用复制到新的超级调用中并将其传递到管理程序(1070)。管理程序将此超级调用传递到在与OS和策略模块分开的第三虚拟化环境中的半虚拟化驱动程序后端970(1080)。半虚拟化驱动程序后端通过与胰岛素泵致动器(1090)通信来处理调用。

在该示例中,胰岛素泵OS、运行在胰岛素泵上的应用以及甚至驱动程序可以包含大量的代码,并且通过多个通路(总线,无线链路等)使用多个不同和变化的协议来提供I/O连接。这暴露了一个非常大的威胁面。然而,策略模块具有非常小的威胁面,因为与OS和应用程序相比其较小,由于功能仅限于完整性检查或测试胰岛素泵软件和传递命令,并且因为没有用于与策略模块进行交流的界面以供恶意行动者进行攻击。因此,由于策略模块保护胰岛素泵OS、应用和驱动程序,整个系统的安全性因为威胁表面被减少而增加。如果恶意行动者攻击胰岛素泵软件,则策略模块可以停止胰岛素泵的操作,将其置于故障安全模式。

图11示出了根据本发明的实施例的在机动车环境中实施的半虚拟化安全威胁防护系统的示意图。图12示出了适用于图11的实施例的逻辑进程的流程图。机动车可以包含通过一个或多个不同的总线彼此通信的多个电子控制单元(ECU)。例如,机动车内的一个电子控制单元(ECU)可以包含具有运行信息娱乐应用(播放媒体,连接到驾驶者的电话等)的OS的CPU 1100。该ECU连接到中央总线(例如,CAN 1110,FlexRay总线1120),该中央总线管理机动车内的多个系统,包括几个安全性关键系统(例如安全气囊、制动等)1130、1140、1150、1160和其他不是安全性关键的系统(例如音乐流放、加热和空调等)1170、1180。由于信息娱乐应用不应与安全性关键系统接口,所以期望防止信息娱乐应用与这些安全性关键系统之间的通信。

例如,信息娱乐应用可以请求在中央总线(1110,1120)上发送信息。该请求被信息娱乐应用变换为对OS进行的系统调用(1200)。OS根据系统调用对相关联的驱动程序堆栈进行驱动程序调用(1210)。半虚拟化驱动程序前端拦截此驱动程序调用,将其变换为超级调用,并将其传递到管理程序(1220)。管理程序将超级调用传递到与OS(和信息娱乐应用)分开的虚拟化环境中的策略模块(1230)。策略模块的分析模块解析由信息娱乐应用进行的调用,以确定调用是否寻址总线上的安全性关键系统之一(例如安全气囊、制动),并将这些结果转发给安全模块(1240)。如果请求被寻址到安全性关键系统,则安全模块不允许将超级调用发送到半虚拟化驱动程序后端(1250)。如果请求未被寻址到安全性关键系统,则安全模块将请求复制到新的超级调用中并将其传递到管理程序(1260)。管理程序将超级调用传递到与OS和策略模块分开的第三虚拟机中的半虚拟化驱动程序后端(1270)。半虚拟化驱动程序后端通过在集中式总线(例如CAN或FlexRay)发送数据来处理请求(1280)。这种方法提供了附加的安全性好处,即在信息娱乐系统上获得根(root)访问权限的恶意行动者仍然无法与安全性关键系统通信。

策略模块还可以防止在诸如V2V(“车辆到车辆”)网络中的机动车之间发生的攻击,并且附加地可以防止在道路V2I(车辆到基础设施)上模拟传感器的攻击。V2V网络已被国家公路运输和安全管理局授权在2018年之前纳入新车。此外,随着自主/自驾车的出现,联邦法律法规将规范这些车辆的运行情况。策略模块可以确保运输部(DOT)或NHTSA的规章制度得到车辆遵守,防止这些规定受到篡改。政府可以指定一些优先事项(诸如当汽车会与行人相撞,在何种情况下车应紧急转向以保护行人,即使这会使得车的驾驶者处于危险)。策略模块还可以通过在数据被车辆接收或从车辆发出之前加密数据或要求认证来帮助保护关于车的数据(诸如远程信息数据)。策略模块将阻止GPS数据被欺骗,从而防止恶意人员造成自主车辆的碰撞。

在机动车内有两个主要网络。第一网络是有线网络,负责控制和测量采用多种协议的车性能的不同方面。这些协议包括LIN,CAN,FlexRay,MOST和以太网。通常,这些有线网络中的每一个都包括可以是多主、多从和具有复杂总线仲裁协议的总线。因此,如果恶意运营商可以物理访问总线以将数据包注入到总线上,则这些网络是脆弱的。

机动车还具有第二主要网络。这个第二主要网络面向外部,用于连接用户的设备。支持此网络的协议包括USB和蓝牙。面向外部的网络中的漏洞包括支持驱动程序堆栈和车内应用代码的潜在漏洞,以及任何人都可以将其设备连接汽车的事实。这两个主要机动车网络具有不同的结构和不同的用例,其可以使用策略模块和策略模块中的安全模块来驱动两个分开的威胁模型和两个分开的安全解决方案。

有线机动车网络是静态的。新设备从不被添加或移除,或者很少被添加或移除。此外,所讨论的协议不能实施OSI模型的较高层。因此,每个连接的设备通常使用其数据表中定义的自身的协议进行通信。由于设备无法使用较高层的OSI模型,所以行为和模式识别策略的效率较低,因为可以对连接的设备进行的假设/陈述更少。由于设备是静态的,所以策略模块可以包括针对连接到该网络的每个设备进行认证的策略。或者可以使用中间人实施方式实现认证,其中策略模块将在硬件实施例中被实施,或者策略模块将在硬件设备上的软件中实现,其位于有线机动车网络内的总线上的向外的端口和通信处理器之间。

在一个实施例中,中间人包括与每个设备相同的PCB上的单独电路。该电路将具有两个接口:(1)与其相关联设备的点对点连接和(2)总线连接。如果设备发送数据包,则该中间人电路将使用认证包装器包装数据包,并且指定用于设备的任何数据包会在被发送给设备之前被解包。以这种方式,可以以完全透明的方式添加认证。

可以使用与中间人电路一起存储或与中间人电路相关联的连接设备的预定义表来完成认证。另一种可以使用中间人电路完成认证的方法是通过访问诸如证书机构的集中式可信第三方。在该实施例中,认证包装器包括将该设备识别为受信任的第三方信任的证书,并且因此该文件将被处理为已被认证。

以上述方式之一检查真实性还可以包括提供完整性证明的方法。认证包装器可以包括正在尝试发送数据的芯片上运行的程序映像的签名。这将允许检查是否有人篡改了数据源或修改了其代码。

第二主要机动车网络面向外部并且通常支持汽车的信息娱乐系统。除了诸如显示器、扬声器、用户输入/按钮系统的驱动功能之外,现代车辆还允许用户使用诸如USB和蓝牙的协议将其设备连接到该系统。在这种情况下,未知和潜在的恶意设备可以经由这些协议连接到信息娱乐系统。需要双管齐下的安全方法。首先,在允许访问车的功能之前,必须对连接设备进行认证。认证可以由策略模块完成,该模块通过将设备的标识与预定列表进行比较来检查设备的真实性。第二,即使在认证之后,也必须加强与这些设备接口的内部驱动程序堆栈和应用代码,以防止潜在的入侵。虽然一些蓝牙设备启用认证,但有许多不支持,并且USB不支持任何认证。

安全层可以被添加到蓝牙、USB以及诸如英特尔深度防御器(IntelDeep Defender)、IntelSGX和ARM TrustZone的利用安全环境的其它面向外部的协议。例如,Deep Defender为一些代码运行提供了安全的环境,可以保证在启动时本身和操作系统某些部分的完整性。深度防御器可防止在修改固件时遇到BIOS级别和硬件级别的攻击。此外,在操作期间,深度防御器作为寻找操作系统中的异常行为以及操作系统本身的变化的看门狗(它会周期性地计算校验和并将其与内部基准相匹配)。

英特尔深度防御器针对rootkits(从应用侵入操作系统)。它不是针对从设备侵入操作系统。策略模块代码可以插入深度防御器的受信任环境中,用于对任何连接进行认证。此外,代码可以包括设备本身的行为检查和USB驱动程序堆栈的完整性检查。行为检查可以包括关于发送和接收数据的检查以及与此类任务涉及的时间。应当理解的是,这里使用策略模块,并且贯穿整个说明书可以被实施为提供用于执行分析和安全管理的安全孤立地区的软件、硬件或固件解决方案。

用于USB和蓝牙的这种安全方法提供了技术平台,而不仅仅是针对特定漏洞的解决方案,因为该方法处理连续地用于将不同设备连接到机动车的USB和蓝牙协议。例如,福特(Ford)提供标准的开源接口(API)来经由蓝牙访问车的信息,如果主机有互联网接入,则智能手机可以经由USB访问互联网。

如上详细描述的策略模块对于信息技术社区也可能是有利的。策略模块可以在外部USB集线器、PCI-Express卡、ExpressCard、平板电脑或平板中实施。IT人员可能会为这些设备提供策略,并限制数据的访问或分发。

在另一实施方式中,策略模块测量驱动程序并检测驱动程序是否已被利用。例如,可以创建和使用哈希来保证缺乏篡改。其他测量可以包括例如允许运行时测量执行的驱动程序的源或二进制仪器。当策略模块部署在跨多个设备或系统上时,可以使用数据共享/大数据分析来识别属于APT(高级持续威胁)类别的攻击。数据分析可以通过任何已知的方法获得,然后以使用数据分析作为规则基础的该规则的形式提供给策略模块。可以在集中的位置获取和分析数据分析。集中分析的结果可以使用行业标准的企业推送技术推送到每个端点的策略模块。在其他实施例中,分析的结果不需要被策略模块使用。策略模块可以简单地将数据单向发送到识别趋势的集中式或非集中式分析引擎。在这样的实施例中,策略模块以安全的方式收集独特的数据。策略模块能够收集以前没有以系统方式收集的数据,并且其确保收集的数据的安全性。

策略模块可以向系统管理员通知新的威胁并检测正被利用的驱动程序代码缺陷。策略模块还可以作为机器学习的分析平台来检测异常行为。

在本发明的另外的实施例中,策略模块可用于认证数据的备份。安全和非安全设施中的数据经常备份到外部媒介上,但是对于有权访问硬件以窃取数据的人来说目前有多个点。策略模块可以被配置为在将数据复制到外部介质上时对其进行加密和签名。加密被绑定到策略模块和计算机内部的私钥,并且需要有效的用户凭据来解锁。在未指定的计算机/网络上解密或篡改数据的任何尝试将不成功,因为私钥将无法被访问。

与USB和其他介质接口相连接的策略模块的另一种预期的使用是航空电子数据的传送。飞行器上的航空电子设备和任务规划数据必须在多个地面站通常使用相同的便携式媒介进行定期更新。USB和其他媒介接口易受攻击,这些攻击可能会在这些更新过程中损害这些系统的完整性。更重要的是,数据本身有被丢失、被盗或被改变的风险。飞行器上的计算机将配置策略模块作为分开的硬件或软件模块添加。在航空电子工业中,通常使用不同于Xen的管理程序,诸如GreenhillsIntegrity或基于OKLA的通用动态管理程序。策略模块可通过对用于传送数据到飞机的外部媒介上的数据进行加密和签名来保护这些飞行器媒介接口免受攻击和未经授权的数据发送。飞行器上的策略模块将用于验证和解密数据。即使可移除介质丢失或被盗,其上的数据也无法被解密。另外,如果有权访问硬件的内部人员恶意地更改了数据,则策略模块将防止恶意数据被上传到飞行器。应当注意的是,除了不同的航空电子特定管理程序,部件之间的通信类似于关于图7和图8所描述的实施例。

策略模块还可以执行包括改变数据的其他功能。例如,如果通过I/O连接(有线或无线)接收到诸如“Ctrl_Alt_Del”的键击,则在发送之前,安全模块可以不发送这些键击或更改关于键击的数据,除非用户已批准管理员权限。任务为数据加密的策略模块也可以模糊数据访问模式。此功能将提供额外的安全性,其防止硬件或驱动程序通过分析存储器访问模式间接地窃取秘密信息。模糊访问模式可以包括添加虚拟访问以隐藏对存储器中期望位置的访问。

对于一些实施方案,策略模块可以被给予加密数据或实施一些其他安全进程的任务,并且可以使得文件系统感知。凭据/权限或访问控制列表(ACL)存储在外部设备(如闪存驱动)上。该集成允许策略模块管理的权限进入外围设备的文件系统。文件系统感知实施例允许没有内部“智能”的可移除介质(例如,闪存驱动)来强制执行用户访问权限(例如,谁拥有读取什么数据的权限)。这是有价值的,因为正是因为这样,闪存驱动可以与多个任意和可能重叠的访问安全隔区(诸如在用户或组级别)一起使用。这样可以对大容量存储设备上的各个文件的权限进行精细管理,而无需大量开销。以下提供访问控制实施例的进一步讨论。

本发明的实施例也适用于云和企业大数据应用(BDA)环境。示例云环境包括运行诸如Windows7的操作系统(OS)的工作站,其具有虚拟桌面基础设施(VDI),诸如通过诸如Teradici PCoIP(在IP之上的PC)的软件客户端。这可以包括但不限于“瘦客户端”和“零客户端”以及“仅软件客户端”。例如,策略模块可以在工作站上运行,并以对VDI透明的方式提供安全性。在另一个示例中,策略模块是VDI的一部分,并通过软件客户端提供安全性。在另一示例中,在工作站上运行的软件代理与在连接到工作站的分开的设备中运行策略模块以对于VDI透明的方式通信。在另一示例中,包括应用和驱动程序的软件代理在软件客户端上运行,并与策略模块进行通信,策略模块又在连接到工作站的分开的设备中运行。在这样的示例中,当软件客户端被推送到工作站以及当设备连接到工作站时,策略模块提供安全性。

云环境的另一示例是具有服务器,诸如运行VMWare Horizon View的Dell刀片式服务器,和运行Microsoft活动目录的其它服务器,以及诸如Dell Wyse P25和P45桌面型号的瘦/零客户端。可能存在多个虚拟化环境,诸如运行Windows桌面10的某个虚拟化环境以及运行Red Hat Linux 7.2的某个虚拟化环境,这些环境可以由给定的瘦客户端访问。该策略模块可以作为VDI的一部分提供安全性。在一个示例中,软件代理在每个虚拟化环境中运行,并经由管理程序与不同虚拟化环境中的策略模块进行通信。在另一个示例中,它在瘦/零客户端本身上或/连接到瘦/零客户端本身。在另一个示例中,运行例如Windows桌面10的虚拟化环境内存在策略模块,以及运行例如Red Hat Linux7.2的虚拟化环境内存在策略模块。

本发明在云环境中的另一实施例包括综合或集中的桌面基础设施(CDI),诸如可以访问多个网络的瘦客户端或零客户端。例如,这些多个网络可以具有多个安全级别,这在某些金融部门、医疗保健和防御网络中是常见的。在一个示例中,每个网络具有多个单独的指定隔离的孤立地区,每个具有网络级访问控制的粒度描述。当用户登录瘦客户端时,用户选择访问哪一个孤立地区空间,并通过目录服务——诸如Microsoft活动目录,Oracle统一目录(OUD)和Oracle访问管理器(OAM)——提供访问控制。在这个示例中,每个网络都有一个策略模块,其利用启发式访问控制列表提供安全性,从活动目录导出访问控制策略,以及对设备——包括连接到瘦客户端的设备——实施安全性。策略模块运行在瘦客户端或零客户端或连接到瘦客户端或零客户端的设备中。策略模块与软件代理进行通信以提供安全性。在该示例中,这种安全性可以包括连接到瘦客户端或零客户端的设备与被服务器推送到瘦客户端或零客户端的虚拟机之间的相互认证。在这个示例中,有多个孤立地区,其中,必须对孤立地区之间的数据发送进行调节。每个孤立地区可以包括软件代理。在这个示例中,某些软件代理可能会与不同的操作系统相兼容,诸如某些软件代理使用Windows操作系统,有些则使用Linux,具体取决于在孤立地区被访问的虚拟机使用的OS。设备上的策略模块和支持软件、固件和硬件将兼容Windows和Linux或任何其他OS以与软件代理进行通信。

作为策略模块的一部分的安全模块执行的可能的安全进程。

在本发明的各种实施例中,一旦安全威胁已被确定存在,可以调用大范围的安全进程,包括向请求实体发出挑战。上面讨论的这些进程中的一些包括防止超级调用到达驱动程序,指示该设备已经被破坏,以及加密正被处理的数据。提供以下可能的安全进程列表仅用于示例性的目的,并且不应被视为限制性或穷尽性的。

策略模块可以包括诸如生物测定扫描器、高度计(例如,为了避免在飞行中更新)的传感器的安全进程,需要CAPTCHA认证、认证令牌、由GPS测量的位置限制,并且需要输入密码进行认证及向请求实体提供挑战。安全进程还可以基于连接的类型、启动连接的设备的类型或连接的时间来限制访问。例如,安全进程可以基于设备连接到哪个网络以及如何进行连接(直接本地或远程)来限制访问。

安全进程还可以包括基于预定列表来创建消息并向指定方发送警报消息的能力。数据也可能被发送到日志或日志记录工具,或用于数据分析以识别常见的攻击。策略模块内的安全进程也可以要求将数据进行加密。例如,文件可以被加密,分区可以被加密,并且元数据可以被加密。

如果识别出安全威胁,则安全进程可以将连接和请求重引导到其他软件或硬件。所识别的数据可以被发送到安全硬件位置,并且数据可能被破坏(例如引爆)。这个概念与可信执行环境的想法有关,使得软件的任何破坏都不会传播到操作系统/应用软件的其他方面。在某些配置中,网络内的策略模块可以彼此通信,并且包括用于识别常见攻击模式的代码。

在本发明的其他实施例中,安全进程可以满足在将策略模块附接到网络连接的工作站时策略模块的远程管理的要求。在这样的实施例中,策略模块可远程配置以提升用户安全级别并限制用户安全级别。策略模块可以是远程配置的,以在用户批准的安全级别内添加、删除或更改隔区访问。

在其他实施例中,策略模块包括当可信工作站连接到不受信任网络时允许存储在USB存储设备上的数据在可信工作站上被查看的安全进程。策略模块还可以包括如下所述的用于不受控制的设备的其他安全进程,包括使得授权的本地用户能够被允许访问USB存储设备上的文件。策略模块可以被配置为防止授权的远程连接的用户访问USB存储设备上的文件。策略模块的安全进程可以对通过USB发送的所有数据包执行硬件级验证,以防止诸如拒绝服务(由特定恶意代码或模糊攻击引起的)的攻击,并防止协议层上的内核驱动程序中的漏洞。

为不受控制的设备提供文件级访问安全的访问控制的强制执行

作为不受控制的设备的讨论的一部分,定义其中经常出现不受控制的设备的场境——即企业网络——是有用的。如本文所使用的,术语“企业网络”是指具有正式策略并提供文件访问控制的任何商业网络。在本申请中使用的术语,“不受控制的设备”,是指(i)在企业网络中在其他网络组件的监督之外的设备,以及(ii)在被制造商组装的环境中,在环境已经被组装后,已经被第三方放置在制造商的监督之外的环境中。企业网络中的不受控制的设备缺少与集中式认证机构进行通信的机制,并且缺少提供对存储器文件或分区的访问控制的机制。相比之下,企业网络中的受控设备由活动目录(AD)域服务(ADDS)集中跟踪,或者受控设备已被活动目录证书机构(ADCA)颁发证书。一般来说,在企业级,提供域服务的域控制器和证书机构驻留在企业网络内。企业网络中的受控设备通常包括在网络中耦合在一起的笔记本电脑、服务器、路由器、移动设备和打印机。所有这些设备都受信息技术(IT)管理的控制。相比之下,企业网络内的不受控制的设备包括USB驱动程序、iPad、智能手表、拇指驱动和未经授权的笔记本电脑等等,因为与受控设备不同,它们不被活动目录(AD)域服务(ADDS)集中跟踪或未被活动目录证书机构(ADCA)颁发证书。因此,诸如USB设备的不受控制的设备不是网络连接的设备,并且不会查询活动目录或其他集中式管理来进行识别和认证。

应当理解的是,在其他应用环境中,在企业网络之外,受控设备不一定与中央授权机构通信,但是它们通常将被放置在制造商监督的环境中。例如,机动车实施例中的受控设备将经历批准的供应链(通常为机动车制造商),而不受控制的设备包括通过一个或多个暴露端口由驾驶者、乘客或技工连接到机动车的设备,因此在制造商的监督之外。

当不受控制的设备连接到主机时,即使主机在企业网络中,根据定义,不受控制的设备(其可以例如是USB闪存驱动)不能强制执行访问企业网络的活动目录的策略。USB设备通常是不能查询活动目录或强制执行活动目录的任何规则的存储块。USB设备和其他不受控制的设备尚未配备硬件或软件实施方式以用于保护对未受控设备上的数据(例如文件)的访问,不受控制的设备也尚未具有用于用户访问的安全/加密认证协议。

通过将策略模块并入安全环境中,不论策略模块是如上所述以软件来实施,还是策略模块在硬件中实施,其中策略模块是位于主机计算设备和USB或其它不受控的设备之间物理设备,策略模块均可确保强制执行规则,甚至由不受控制的设备(如USB闪存设备)执行。

文件级访问控制的另一个要求是加密方案不应该是脆弱的,这意味着如果一个用户的凭据(公钥/私钥对)被破坏,那么整个系统也不应该被破坏。此外,在USB设备或策略模块上本地保留AD的完整副本是不可接受的,因为AD内容是私有的(即,谁可以访问什么信息不应该被公众访问),并且将是非常大量的数据。

在策略模块的该实施例中,来自AD的组权限被转换为相关联的访问控制列表(ACL)。访问控制列表包含授权用户列表和授权用户在不受控制的设备上可访问的文件的列表。从该访问控制列表创建启发式访问控制列表(HACL)。启发式访问控制列表然后存储在不受控制的设备上。启发式访问控制列表是通过使用对称密钥加密要放置在不受控制的设备上的每个文件来创建的。在本发明的一个实施例中,每个文件用不同的对称密钥加密以提供文件级访问控制。因此,对称密钥的列表存储在不受控制的设备上。对于每个授权用户,对称密钥列表利用用户的公钥加密。对于每个用户,将存在对称密钥的分开的加密文件,其识别用户可以访问的文件。因此,启发式访问控制列表是存储在不受控制的设备上的加密文件的一组加密的对称密钥。因此,USB设备上的文件被加密,使得仅具有正确权限的用户可以访问它们。这使得即使由其容器(例如USB设备)无法强制执行文件权限的USB设备的独特环境中,管理员也可使用AD进行透明管理用户组。

在本发明的该实施例中,实施了透明的企业级的访问权限管理,而没有可受信任计算基础在信息的容器内(即在不受控制的设备内部)强制执行信息。所公开的实施例不仅实现了这一目标,而且还通过利用以在当前企业场境中即时应用和可实施的可扩展、低开销的方式的行业标准工具来实现。这是以安全的方式使用USB设备的关键启用技术。

策略模块向不受控制的设备(例如,USB外围设备)提出挑战,包括挑战用户的权限并挑战数据的真实性。以下将更详细地描述这些挑战以及在与USB外围设备的通信过程中可以如何发出的这挑战。然后,根据本发明的实施例,给出了可以如何实施这些挑战的选项。提出了两类挑战选项:(1)系统中存储启发式访问控制列表(HACL)的选项,以及(2)更新ACL信息的选项。

当安装策略模块时,发生用户、策略模块和主机的多因素认证。因此,这里讨论的挑战是基于多因素认证的成功协商。尽管下文没有具体讨论,但是应当理解的是,本发明的实施例还可以包括以下进程:建立生成和管理凭据的受信任的中央机构以及与其进行通信、将凭据转换成ACL、HACL和配备。

如果主机请求从闪存驱动读取数据,则挑战用户的权限涉及确定用户是否被允许访问正被请求的数据。挑战数据的真实性涉及确保闪存驱动上的数据未被篡改。在与USB外围设备进行通信的过程中,策略模块利用加密算法来确定用户是否有访问数据的权限。如果用户有权限,则策略模块将验证数据的真实性。如果数据没有被篡改,策略模块将会不加密数据。

用户权限信息植根于加密密钥,使得如果用户没有访问数据的权限,则即使用户具有与主机相关联的安装的策略模块,用户也不具有解密数据的密钥。如何具体实施这些挑战涉及到拥有权限和加密密钥的信息所在的位置以及权限和加密以怎样的粒度应用于数据(例如每文件、每分区等)。

在解释选项之前,在一个示例中提供了本发明场境中的权限和加密信息的描述。提供了某些标准和协议的参考作为示例,并且不应被视为是限制性的。

例如,诸如受信工作站1302或不受信工作站1301的主机可以请求从闪存驱动1350读取文件,如图13所示。受信和不受信的工作站1302、1301通过被认为是通过不受信的网络1330的网络联网在一起的,并且网络包含受信的安全多用户、多级文件服务器1320。该服务器1320可以包括活动目录或耦合到域控制器和证书机构。在其他情况下,隔离的受信工作站1310可以呈现有USB闪存驱动1350并请求从USB设备1350读取文件。在每个配置中,策略模块(未示出)与工作站1301、1302、1010相关联,其中,工作站与不受控制的设备相连接。

使用对称密钥加密(例如,XTS-AES-256)对未受控制的设备(例如,USB设备1350)上的文件1360、1370和1380进行加密。文件1360、1370和1380可以使用对称HMAC(256位SHA)进行签名/认证。在一个实施例中,在每存储块的基础上执行签名并且将其存储在闪存驱动上的单个文件中。为了加密/签名正在发送到USB大容量存储设备的数据并且然后能够使用对称密钥加密/认证来稍后解密/认证数据,用于加密和认证的对称密钥(kFE(用于文件加密的密钥)、kFS(用于文件签名的密钥))也必须保留。这些对称密钥(kFE,kFS)两者也都必须被加密。因此这些对称密钥(kFE,kFS)被存储为启发式访问控制表(HACL)的一部分,其只允许具有权限的用户恢复对称密钥。HACL利用非对称加密术来实现这一点。HACL作为一组与文件分开的元数据存储在闪存驱动上。另外,在某些实施例中,授权用户的公钥的认证列表或授权用户列表可以被存储为元数据文件以确定用户是否是授权用户。但是该列表并不是必需的,因为只有用户私钥的呈现可以用于与HACL结合以确定用户是否有授权访问闪存驱动上的一个或多个文件。权限和加密信息包括HACL和认证列表,与文件一起存储,如图14所示。在某些实施例中,认证列表可以简单地是用于HACL的每个独特实例的数字签名列表。因此,对于每个授权的用户可以有不同的HACL文件,其中HACL文件利用用户的公钥加密。该数字签名可用于通过确认HACL文件的散列来确认HACL文件未被篡改。

图14是简化的表示,以便于以下选项的解释。商业实施方式可能涉及利用二叉树来改善从O(n)到O(log(n))添加/移除用户的渐近复杂性,其中n是ACL中的用户数。这种方法对于具有多个用户和多个用户组的系统的可扩展性很重要。不受控制的USB设备1400包含一个或多个被加密并且可以被签名1420的文件1410。另外,在不受控制的设备上的是启发式访问控制列表1430,其包含密钥和签名Kfe和Kfs1431,其被用户的公钥1432加密。如果存在多个授权用户,则对于每个用户将存在分开的使用用户的公钥加密的HACL文件。此外,还提供了经认证的数字签名列表1441。认证列表1440可以简单地是可用于确认HACL未被篡改的每个HACL的数字签名。经认证的列表还可以包括能够访问不受控制的设备上的文件的用户的公钥,并且优选地是,该公钥列表还将包含来自证书颁发机构的数字签名。

挑战实施方式选项涉及具有权限和加密密钥的信息驻留的位置以及权限和加密以怎样的粒度应用于数据。下面记录了三个元数据选项和三个关键管理选项。

用于在系统中存储HACL的选项

选项1

如图17A所示,包含加密的对称密钥1703的启发式访问控制列表1705与每个加密文件1704一起存储在闪存驱动(即,不受控制的设备)上。如图所示,每个授权用户都有一个分开的HACL文件(例如PKuser1、PKuser2等)。HACL由授权的签名机构进行数字签名1702。每个文件1704使用存储在启发式访问控制列表中的该文件的对称密钥1703进行加密,并且该文件可以由具有适当私钥(例如,PKuser1、PKuser2等)的授权用户解密。另外,该文件可以还包括用于消息认证的密钥散列(HMAC)1706。可选地,不受控制的设备可以包含经认证的用户公钥列表,其被授权的用户与HACL和加密文件分开存储。认证列表可能由认证该列表是真实的证书机构签名。不受控制的设备和经认证的列表两者都耦合到不受控制的设备上的文件系统1700。

这种配置有三个关键的优点。首先,它允许高度的粒度,即每个HACL文件可以指定访问该文件的独特的一组用户。第二,该选项不需要修改闪存驱动上的文件系统。第三,如果其中一个文件的kFE或kFS被破坏,其他文件都不会受到破坏,因为每个文件都有自身的kFE和kFS。

选项2

在如图17B所示的本发明的该实施例中,代替加密文件,USB闪存驱动或其他不受控制的设备的整个分区被加密。权限和加密信息与闪存驱动上的每个分区一起存储。如图所示,不受控制的设备(例如,USB闪存驱动)具有两个分开的分区1722和1723。每个分区分别具有其自身的启发式访问控制列表1720和1721。

由于权限和加密信息仅对每个分区存储一次,所以需要的存储器存储以及通信和计算开销都很低。

如果闪存驱动上只有一个分区,则缺点是缺乏粒度,即只有一个组可以使用闪存驱动。这不支持多级别、多隔区的信息。

选项3

本发明的第三实施例受益于选项1的粒度优点以及选项2的存储和开销优点。如图17C所示的选项3将权限和加密信息以向后兼容的方式集成到文件系统本身中。这将允许具有多个不同的加密对称密钥1755等的集中式HACL 1754,然后通过例如文件系统1750使用寻址机制1751(ACL ID=ACL1)将其分配给各个文件1752等。

已经识别出两种主要的架构方法来实施选项3。首先是覆盖新的访问控制方案以支持后向兼容的FAT32之上的权限。第二个涉及重新格式化闪存驱动以使用的确支持权限的新文件系统。这种方法涉及将特定权限和加密信息集成到文件系统中。

更新启发式访问控制列表信息的选项

除了在闪存驱动本身上管理元数据之外,还存在与用于对闪存驱动上的数据进行加密/解密的密钥的管理有关的选项。在上述模型中,文件与对称密钥(kFE,kFS)相关联。这些密钥的创建和管理可以以不同的方式进行管理。图15A和15B描绘了如何将驻留在域控制器上的用户权限转换为用于启发式访问控制列表的端点(例如不受控制的设备)。图15A建立启发式访问控制列表(HACL)的配备。在该图中,策略模块向域控制器发送CSR(证书签名请求)。域控制器将该请求转发到证书机构。证书机构(CA)决定是否签名CSR 1500并向策略模块颁发证书1501。因此,策略模块具有证书确认其是(a)CA的网络的真实部分,以及(b)被允许配置不受控制的设备。

图15B示出了一旦证书被策略模块接收到,策略模块和不受控制的设备(例如,USB闪存驱动)之间的通信。在配备不受控制的设备时,策略模块将执行一系列步骤。伪代码中显示了这些步骤的示例。配备算法标记参数:组和用户ID,其中用户ID通常表示组的管理员。策略模块首先检查用户的凭据,以查看用户是否具有通过联系域控制器和/或证书颁发机构来创建组1551的正确权限。第二,策略模块获得与组中的每个成员相关联的公钥列表1550。策略模块可以通过向证书机构发出请求来获得这些公钥(如图所示),或者策略模块可以具有本地存储的公钥。然后策略模块生成HACL。策略模块生成随机文件加密密钥,并加密该组成员(即授权用户)的每个公钥下的密钥用于ACL。策略模块还可以生成该组的授权用户的公钥的签名列表。签名可以是RSA签名或公钥列表的等效签名。然后将该数据写入不受控制的设备(例如,USB闪存驱动等)。

用于设置HACL并允许访问不受控制的设备上的文件的组的建立也可以以不同的方式建立。对于图15B中的伪代码“if(Is_Admin(user,group)==FALSE)…”,对于下面描述的第一个选项,该语句将为组中的每个人返回真(true)。对于第二个选项,它将只对组中的指定用户返回真。最后,在第三个选项中,它将仅对系统管理员(sys admin)中返回真。

在第一选项中,对称密钥的创建和管理被分布在被系统管理员给予访问权限的任何用户可以初始化文件的对称密钥并建立HACL的情况下。

这种方法的优点在于对称密钥从不会离开闪存驱动的附近。它们仅在设备正在使用时才存在于策略模块内,并且不会被发送到主机或集中管理系统。通过受信管理程序和主机的策略模块向域控制器发出证书签名请求(CSR)。作为响应,域控制器将CSR传递给证书机构,证书机构颁发存储在策略模块中的真实性证书。

在这种方法中,应当理解的是,系统管理员强制执行只创建某些组。集中式机构将签名的用户列表推送到将用于创建HACL的每个策略模块。然后,每个策略模块负责确保给定的闪存驱动具有系统管理员允许的组。

在第二个选项中,用于创建组的机构只能通过系统管理员获得。对于给定的闪存驱动,系统管理员授权特定用户作为“所有者”。该所有者负责管理该闪存驱动上的组。

在这种情况下,所有者创建和修改独立于系统管理员的组成员资格。然后,HACL将使用所有者的凭据进行签名。因此,每个用户都会验证HACL签名是否正确,并与预期所有者匹配。

该方法的一个优点是HACL信息可以被本地存储在所有者的主机内。以这种方法,如果HACL在闪存驱动上被损坏/破坏,则所有者可以通过恢复HACL来恢复数据。

在用于创建组和对称密钥的管理的第三选项中,系统管理员是唯一可以创建组的。系统管理员决定组权限,并创建和管理对称密钥及其关联的HACL。

在该实施例中,代替推送特定的授权组或所有者,系统管理员是推送用于闪存驱动的预先填充的HACL。每个ACL都使用系统管理员的凭据进行签名。然后,每个用户根据系统管理员的凭据验证ACL。

虽然这种方法增加了系统管理员所需的管理,但是当密钥创建进程由管理员持有时,它提供最高程度的安全性和可执行性,并且添加/移除用户的进程被系统管理员直接推送到闪存驱动(而不是通过用户/闪存驱动所有者)。

图16A和16B是用于读取存储在不受控制的设备上的文件的本发明的实施例的流程图,该不受控制的设备包含加密形式的至少一个启发式访问控制列表。

在图16A中,策略模块接收对潜在用户的私钥的访问1651。策略模块查询潜在用户的私钥是否解密存储在不受控制的设备上的加密的对称密钥集合的实例1652。如果答案是“否”,则对不受控制的设备上的文件的访问被拒绝1653。策略模块可以生成并提供报告给操作系统以通知潜在用户访问被拒绝。施例中,潜在用户不被通知访问被拒绝。在其他实施例中,策略模块生成报告,策略模块将报告发送到网络或企业网络的管理员。该报告也可以存储在相关联的存储器中以供稍后检索和查看。如果答案为“是”,则策略模块使用适当的对称密钥来使用解密的对称密钥实例以解密授权文件1654。然后,策略模块将解密和授权的文件发送到操作系统以供潜在用户查看,该潜在用户现在是授权用户1655。

图16B提供了当潜在用户尝试读取不受控制的设备上的加密文件时可能发生的进程的更详细的说明。在图16B中,首先,用户或操作系统进行操作系统请求以读取耦合到计算机或联网设备的不受控制的设备(例如,USB闪存驱动等)上的文件1601。操作系统请求被策略模块拦截,该策略模块与计算机通信1602。如上所述,策略模块可以使用受信管理程序拦截该请求。在可以将解密的文件提供给操作系统以供潜在用户查看之前的任何时间可发生的可选步骤中,策略模块可以读取与不受控制的设备上的HACL文件相关联的HACL元数据。元数据可能是每个HACL文件的数字签名列表,以确认HACL文件尚未被篡改。在另一个实施例中,HACL元数据可以包括被允许访问与加密的HACL文件相关联的不受控制设备上的文件的每个授权用户的公钥的签名列表。在其他实施例中,元数据列表可以包括授权用户的名称和用于验证用户的真实性的其他信息。策略模块可以在认证进程中使用元数据。

响应于读取请求的拦截,策略模块将HACL读取到本地存储器中1603。在不受控制的设备上可以存在一个或多个加密的HACL文件,并且可以存在相等数量的对应的HACL元数据文件。在本发明的一个实施例中,针对每个授权用户存在分开的加密HACL文件。

策略模块通过计算机或联网设备发出请求,请求潜在用户提供凭据。可能要求潜在用户提供用户私钥或用户私钥的位置1604。策略模块可向潜在用户发出挑战,诸如询问用户密码或生物特征扫描。在优选实施例中,潜在用户已经登录,所以对用户的挑战对于用户来说是透明的。对潜在的用户来说,他/她有权访问的文件似乎已经未被加密了。挑战可以基于活动会话中存储的用户凭据(基于对诸如登录到其计算机的用户的先前挑战)。挑战还可能是用户使用的设备(设备可能是令牌或用户的计算机)。在某些实施例中,策略模块可以向作为设备(执行与该设备的特性一致的功能)的潜在用户发出挑战,诸如,如果该设备声称是图形用户界面,则该挑战可以对CAPTCHA的呈现做出响应。在其他实施例中,策略模块可以发出评估作为设备的潜在用户的行为是否具有与设备的性质一致的模式的挑战。例如,策略模块可以检查以判断声称由潜在用户输入到键盘的输入是否实际上以与人类输入一致的方式被传递给策略模块,并且输入不是以人类用户不可能达到的速度被接收。

在某些实施例中,潜在用户的私钥密钥可以本地存储在策略模块内,并且策略模块可以向潜在用户查询挑战。例如,策略模块可以要求潜在用户输入用户的凭据,诸如用户的名称和密码。如果向策略模块提供正确的凭据,则策略模块可以访问用户的私钥密钥。策略模块然后检索用户的私钥密钥1605。如果用户的凭据无效或策略模块无法检索用户的私钥密钥,则策略模块生成指示拒绝访问的报告1606。如果正确地检索到私钥密钥,则策略模块根据每个HACL文件测试私钥密钥,以确定私钥密钥是否解密一个或多个HACL文件。这种启发式的方法确定潜在用户是否是授权用户,并且因此仅提供对潜在用户被授权读取的文件的访问控制。加密的HACL文件包含存储在用户被授权读取的非受控设备上的一个或多个文件的对称密钥1607。一旦HACL文件被解密,对称密钥被用于解密一个或多个用户有权访问的文件1608。策略模块确定对称密钥是否正确解密并且未被破坏1610。如果答案是“否”,则访问被拒绝。可以生成错误消息并通过操作系统将其转发给潜在用户,指示用户没有访问所请求的文件的权限或者文件已经被破坏。在其他实施例中,被拒绝访问的报告被发送到系统管理员或可以被发送到用于所有报告的拒绝访问的文件。如果文件正确解密,因此答案为“是”1610,则策略模块将响应读取命令将解密的文件返回到操作系统,并且该文件将被现在是授权用户的潜在用户访问1611。

图18A和18B是本发明的实施例的流程图,用于将文件写入到不受控制的设备中,其包含加密形式的至少一个启发式访问控制列表。

图18A提供响应于接收到将文件写入到不受控制的设备的请求而由策略模块执行的操作的流程图,其中不受控制的设备包含加密的启发式访问控制列表,该列表包含一组加密的对称密钥。策略模块首先获得对潜在用户的私钥的访问1851。然后,策略模块针对存储在不受控制的设备上的HACL的一个或多个实例来测试私钥,以确定潜在用户的私钥是否解密了这组对称密钥的实例1852。如果私钥不解密该组对称密钥的实例,则写入访问被拒绝1853。拒绝访问不需要向潜在用户报告。然而,在本发明的某些实施例中,策略模块将生成指示已经拒绝访问的报告,并且该报告可以被提供给潜在用户,并且还可以被提供给网络的管理员。有关拒绝访问的报告也可以存储在数据库中。如果潜在用户的私钥解密了该组对称密钥的至少一个实例,则解密的对称密钥之一用于加密由潜在用户请求的文件,该潜在用户现在被确认为授权用户1854。策略模块然后使加密的文件存储在不受控制的设备上。

在图18B中,计算机或联网设备的潜在用户或操作系统请求将文件写入到非控制设备(例如便携式硬盘驱动或其它便携式存储介质、USB设备、个人笔记本电脑等),该非控制设备已经被连接到计算机或联网设备1801。操作系统的写入请求被策略模块拦截1802。该拦截以如上所述的使用受信管理程序的方式完成。策略模块然后读取存储在不受控制的设备上的HACL1803。策略模块然后请求包括至少潜在用户的私钥密钥的潜在用户的凭据1804。潜在用户的凭据由用户发送并由策略模块检索,或者是到达可以从其获得用户私钥密钥并将用户私钥密钥提供给策略模块的位置的链接。策略模块然后检索潜在用户的私钥密钥1805。如果检索到的私钥密钥固有地不正确,则策略模块将指示潜在用户的凭据是无效的并且将拒绝访问。可能会生成报告并将其发送到操作系统,并将其呈现给潜在用户,指示访问已被拒绝1806。拒绝访问不需要向潜在用户报告。在其他实施例中,策略模块可以向系统管理员发送报告,或者发送到指示访问被拒绝的文件或数据库。在可选步骤中,如果HACL已被签名,则策略模块然后检查HACL签名的真实性1807。如果签名在测试签名之后不正确,则该文件被报告为损坏1808。该报告可以被发送到操作系统并向用户报告HACL已被篡改或可能被发送给系统管理员或分开的文件或数据库。如果发现签名有效,则策略模块将使用潜在用户的私钥密钥来解密与潜在用户私钥密钥相关联的对称密钥。检查HACL文件的数字签名的相同的可选方法也可以应用于图16的读取进程。

策略模块将针对存储在不受控制的设备上的每个HACL测试私钥。不受控制的设备可以具有多个HACL并存储在不受控制的设备上,并且策略模块将检查以判断潜在用户是否是多于一个启发式访问控制列表(HACL)的授权用户。如果潜在用户列在多于一个HACL列表上,则策略模块会提示潜在用户选择用户希望使用的HACL。策略模块将使用用户的私钥对存储在适当的HACL列表中的对称密钥进行解密1809。然后,对称密钥用于由策略模块检查以判断对称密钥是否正确解密1810。这可以通过本领域普通技术人员已知的多种方式来达到。如果答案是“是”,则该策略允许现在授权的用户使用相同的对称密钥加密文件1812,并且将该文件传递到计算机的操作系统,然后该操作系统可以将加密的文件存储在不受控制的设备上1813。如果对称密钥无法正常工作,则会生成表明访问已被拒绝的报告1811。该报告可能会提供给请求写入访问的用户,并且报告可能被存储并发送到一个或多个其他位置或地址以生成安全日志或通知系统管理员。

使用活动目录证书机构和活动目录域控制器来管理身份:

策略模块用户以及策略模块设备本身的身份通过利用集成到策略模块设备中的诸如Microsoft AD CA和受信硬件模块(THM)的行业标准工具进行联合。

然后,这种联合身份结构与上面讨论的访问控制列表架构相关联。

因此,虽然以上的ACL讨论集中在通过使用数据和USB设备本身的加密和/或启发式挑战来强制执行策略的方法,但本部分(使用ADCA和AD DC来管理身份)集中在关于策略管理的方法。

身份管理有两个阶段:

1)计算机和策略模块的身份

2)用户、用户组和用户访问权限的身份

识别计算机和策略模块

身份的第一阶段涉及可以连接到企业网络的设备的认证。特别地,当策略模块连接到主机时,策略模块首先验证主机是否具有关于所安装的证书机构的有效证书。然后,主机验证策略模块类似地具有关于其已安装的证书机构的有效证书。

主机和策略模块都使用标准CSR(证书签名请求)协议来从本地AD CA接收证书。在这些情况下,管理员可能想为策略模块硬件和软件设备以及主机专门设置中间CA。然后,该CA将具有关于处理证书签名请求的由管理员设置的特定策略。根据组织的规模,这些可能由管理员在完成之前手动审查。

在简单的用例中,该CA将是策略模块和主机设备两者的CA。不过,这不必是这样。如果组织已经具有与主机THM(即硬证书)集成的现有PKI,则该CA可以安装在策略模块上并用于对主机进行认证。该CA可以与用于认证策略模块设备的CA分开。

识别用户、组和权限

身份的第二阶段涉及用户和用户环境的认证,用户环境用于确定对闪存驱动上的数据的访问。特别地,存在集中式服务,其(a)接收和处理闪存驱动配备请求,以及(b)推送用户访问权限更新。

在该配备情况下,必须使用活动目录域控制器中的数据来生成启发式访问控制列表(HACL)。具体来说,管理员在域控制器内创建一组用户,该组具有反映闪存驱动的访问权限的属性。当新的闪存驱动连接到网络时,策略模块通过缺少闪存驱动的验证的HACL来检测到这一点,并且将配备请求发送到管理服务器,管理服务器使用AD来识别上述组并获得此组中所有用户的公钥。会话密钥由服务器生成,然后在每个公钥下加密为一组HACL文件,然后合并成一个HACL。该HACL由服务器签名并返回给策略模块以被写入闪存驱动。请注意,多于一个HACL可能驻留在单个闪存驱动上。可以根据服务器的配置方式同时配备多个HACL。

如上述部分中所讨论的那样使用该HACL来识别具有访问数据权限的那些用户。

如果更新用户访问策略(例如添加/移除用户和/或其权限),则该数据然后用于生成新的HACL,然后将该HACL推送到闪存驱动。当管理员更新AD DC中的权限时,会发生这种情况。辨认此权限更改的策略模块服务器将通过重新生成HACL来自动重新配备每个驱动。

为了允许数据从外部传送到安全设施中,存在两种可能的情况:

1)为计算机提供只写权限(仅给予计算机在其下可以加密数据的公钥以及在其下将签名数据的私钥)

2)通过修改策略模块设备本身内的权限,为计算机提供读取安全网络上未加密数据的能力。

在本发明的某些实施例中,ACL可以与到期日期一起被签名,这将导致策略模块和主机从服务器周期性地拉取新的ACL。另外,可以用新的ACL更新会话密钥。在一些实施例中,旧会话密钥(但不是旧ACL)在新的会话密钥下被加密。周期地,数据应在驱动上重新加密以移除旧的会话密钥。

用于可移除介质上的数据的多级别多隔区访问控制:

挑战是使得粒度用户能够以动态方式访问安全网络内的数据——能够添加/移除用户。这种能力存在于许多网络附接服务中,诸如文件共享。使用活动目录与访问控制软件相结合,使得能够对文件共享服务器上的这些数据进行如此粒度的控制。然而,如上所述,对于任何可移除介质上的数据,不存在这种控制。这对网络级访问控制的破坏构成重大风险。

如上所述,策略模块提供与中央证书机构集成的高级密钥管理,以为可移除介质上的数据提供粒度多级别、多层次的访问控制。该解决方案使用加密和认证来防止数据跨定义的边界移动。因此,最终结果是可移除介质与现有的文件共享服务达成相同的安全性和控制级别。此外,由于加密的硬件组件,访问控制的配备和管理之间存在权限分离。因此,即使具有管理权限的内部人员也不能绕过策略模块的安全性。

利用硬证书的双因素认证:

已知单因素、软证书(诸如用户名/密码)认证是不安全的,并且对安全网络构成重大风险。信任整合根和策略模块的加密功能提供几个能力来改善联合身份系统的安全性,并添加多因素认证。策略模块本身可以绑定到单个用户的身份,并且可以使用内部信任根来证明用户在用户认证序列期间拥有该策略模块。

此外,由于策略模块可以集成在安全网络的PKI内,所以它可以用于发布绑定到可移除介质的令牌化的短生命周期临时证书。然后可以将该可移除介质临时用作附加的登录凭据。由于证书的令牌化,没有可操作的信息泄漏。证书使用可移除介质的硬编码的信息来防止复制。最后,证书的使用寿命短,因此令牌的丢失/被盗不再对网络安全造成很大的风险。

使用“硬编码的信息”来防止复制是示例性实施例。在其他情况下,证书不绑定到可移除介质,并且它可以被复制。例如,在使用具有分布式证书数据库的分布式服务器网络的环境中,每当用户使用证书登录时,证书都会稍微改变,并且相应服务器上的状态也会发生改变(例如,使用块链或认证分类帐)。因此,如果证书被复制并且其他人尝试使用该证书,那么分支(意思是由双方的证书的使用)可以被服务器检测到。在此示例中,可以存在每个尝试使用证书进行登录的日志。在某些情况下,分布式数据库可能是块链。在另一个示例中,证书不再是临时的,而是可以扩展证书生命周期,因为每次用户登录证书都会稍微改变。在一个示例中,代替或附加于证书在定义的间隔期满,用户需要使用证书在定义的间隔登录,以使得证书更改。

策略模块还可以用于防止内部威胁。在该实施例中,认证方案利用活动目录证书机构(AD CA)。特别地,诸如商业网络或企业网络的敏感隔区的信息设施(SCIF)中的每个主机或服务器以及每个策略模块将具有其自身的独特的公钥/私钥对,并且每个都由AD CA认证。此证书用于加密认证。通过与AD CA集成,策略模块不仅可以与现有的PKI(公钥基础设施)(使用根CA或中间CA作为策略模块的签名机构)进行集成,还可以参考处理CSR(证书签名请求)的情况利用现有的AD DC(域控制器)策略。根据部署,管理员可以选择保留在所有签名请求的循环中,或者可以使用AD DC或AD CA的任何集成功能来自动签名/拒绝CSR。

当不受控制的设备(例如闪存驱动)被带入SCIF时,除非通过认证的策略模块连接到认证的SCIF主机,否则它将不工作。策略模块充当USB防火墙,其防止攻击和恶意文件到达主机和SCIF安全网络。

当具有访问SCIF主机的权限的用户将数据传送到闪存驱动时,将使用AES-256无缝地加密。该闪存驱动上的加密数据可以使用任何其他经过认证的策略模块和经过认证的SCIF主机无缝读取。但是,如果从SCIF中移除,则数据将被加密且不可读。即使在具有SCIF权限的用户将闪存驱动和/或基于硬件的策略模块移出SCIF的内部威胁情况下,用户也将无法读取数据。

上述实施例可以防止恶意数据通过USB闪存驱动进入安全网络。即使敌方将恶意文件复制到USB闪存驱动,USB闪存驱动跨越“气隙”并连接到SCIF计算机或服务器,策略模块可防止恶意文件进入安全隔离网络。

在另一种情况下,SCIF计算机上的用户使用策略模块将数据写入USB闪存驱动。USB闪存驱动稍后连接到敌方计算机。由于数据被加密,敌方计算机无法读取加密数据。

在另一示例中,IT管理员使用USB硬盘来备份安全隔离网络上的数据。管理员将USB硬盘驱动和/或硬件策略模块从SCIF中取出。管理员仍然无法读取加密数据。

敌方获得策略模块设备。敌方无法使用策略模块设备写入文件,因为敌方没有对SCIF的用户权限,并且不在认证的SCIF主机上工作。

如上所述,策略模块支持从活动目录派生的联合用户身份和组级权限,并且这些用户访问权限由策略模块管理。另外,一些实施例支持粒度文件级权限,而不是整个磁盘加密。该实施例能够实现,增强的加密保护,因为可以为每个USB设备和每个用户组生成独特的会话密钥。这些会话密钥如访问控制强制实施部分所述的进行加密。这种粒度能够实现强大的基础设施,因为即使一个或多个密钥被破坏,系统的其余部分的安全性也不会降低。这种粒度在安全隔离网络和未分类网络之间的数据传送方面提供了特定的好处。例如,本实施例支持将来自未分类网络的数据安全地传送到诸如任务规划数据或地图的分类网络的用例。同时,即使使用策略模块设备,在安全网络上加密的数据也不能在未分类的网络上进行解密。

实施例包括利用微软活动目录CA或身份管理器或其他系统,诸如使用RSA-2048&SHA的那些系统。静态数据加密可以包括使用XTS-AES(256位)(NIST 800-38E和IEEE 1619-2007)、使用SHA-256(可扩展至SHA-3)进行认证的实施例。

本发明可以以许多不同的形式体现,包括但不限于用于与处理器一起使用的计算机程序逻辑(例如,微处理器、微控制器、数字信号处理器或通用计算机)、用于与可编程逻辑设备一起使用的可编程逻辑(例如,现场可编程门阵列(FPGA)或其他PLD)、分立组件、集成电路(例如,专用集成电路(ASIC))或包括其任何组合的任何其它装置。

实施本文先前描述的全部或部分功能的计算机程序逻辑可以以各种形式体现,包括但不限于源代码形式、计算机可执行形式和各种中间形式(例如,由汇编器、编译器、网络器或定位器生成的形式)源代码可以包括以各种编程语言(例如,目标代码,汇编语言或诸如FORTRAN、C、C++、JAVA或HTML的高级语言)中的任何一种实施的一系列计算机程序指令,用于各种操作系统或操作环境。源代码可以定义和使用各种数据结构和通信消息。源代码可以是计算机可执行形式(例如,经由解释器),或者可以将源代码(例如,经由转换器、汇编器或编译器)变换为计算机可执行形式。

计算机程序可以以任何形式(例如,源代码形式、计算机可执行形式或中间形式)暂时或永久地固定在有形存储介质,诸如半导体存储设备(例如,RAM、ROM、PROM、EEPROM或闪存可编程RAM)、磁存储设备(例如,磁盘或固定盘)、光学存储设备(例如,CD-ROM)、PC卡(例如,PCMCIA卡)或其他存储设备。计算机程序可以以任何形式固定在可以使用各种通信技术中的任何一种发送到计算机的信号中,各种通信技术包括但不限于模拟技术、数字技术、光学技术、无线技术、网络技术和网络互联技术。计算机程序可以任何形式作为可移除存储介质分发,其中附带有印刷或电子文档(例如,收缩包装的软件或磁带)、预加载有计算机系统(例如,在系统ROM或固定盘上)或通过通信系统从服务器或电子公告板分发(例如,互联网或万维网)

可以使用传统的手动方法来设计实施本文先前描述的全部或部分功能的硬件逻辑(包括用于可编程逻辑设备的可编程逻辑),或者可以使用各种工具(诸如计算机辅助设计(CAD)、硬件描述语言(例如,VHDL或AHDL)或PLD编程语言(例如PALASM、ABEL或CUPL))以电子方式设计、捕获、模拟或记录所述硬件逻辑。

虽然已经参考具体实施例具体示出和描述了本发明,但是本领域技术人员将理解,在不脱离由附加的条款限定的本发明的精神和范围的情况下,可以在形式和细节上进行各种改变。

本发明的实施例可以通过以下条款而不限于此来描述。虽然这些实施例已经通过进程步骤在条款中描述,但是包括具有能够执行以下条款中的进程步骤的相关联显示器的计算机的装置也包括在本发明中。类似地,包括用于执行以下条款并存储在计算机可读介质上的进程步骤的计算机可执行指令的计算机程序产品包括在本发明内。

上述本发明的实施例旨在仅仅是示例性的;许多变化和修改对于本领域技术人员将是显而易见的。所有这些变化和修改都旨在如所附权利要求中所限定的本发明的范围内。

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