首页> 中国专利> 对权限管理的内容的基于策略的受信任的检测

对权限管理的内容的基于策略的受信任的检测

摘要

一个实施例包括由至少一个处理器执行的方法,包括:初始化第一和第二安全飞地,每一安全飞地都包括防止在所述第一和第二安全飞地外面执行的软件访问所述第一和第二安全飞地内部的软件和数据的受信任的软件执行环境;所述第一安全飞地(a)(i)检测策略,(a)(ii)响应于检测所述策略,认证所述第二安全飞地;以及(a)(iii)响应于认证所述第二安全飞地,将经加密的内容传递到所述第二安全飞地;以及,所述第二安全飞地(b)(i)解密所述经加密的内容,以产生经解密的内容,以及(b)(ii)检测所述经解密的内容。此处描述了其他实施例。

著录项

  • 公开/公告号CN105745661A

    专利类型发明专利

  • 公开/公告日2016-07-06

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201380081059.1

  • 发明设计人 J·马丁;M·霍克斯特拉;

    申请日2013-12-19

  • 分类号G06F21/10(20060101);G06F21/30(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人姬利永

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 15:54:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-12-02

    未缴年费专利权终止 IPC(主分类):G06F21/10 专利号:ZL2013800810591 申请日:20131219 授权公告日:20200505

    专利权的终止

  • 2020-05-05

    授权

    授权

  • 2016-08-03

    实质审查的生效 IPC(主分类):G06F21/10 申请日:20131219

    实质审查的生效

  • 2016-07-06

    公开

    公开

说明书

技术领域

实施例解决受信任的计算。

背景技术

数字信息的安全变得越来越重要,特别是当信息具有商业价值,机密,或涉及敏感的主题时。在某些情况下,可能会在被感染了恶意软件的客户端设备上提供数字信息。如果未检查,则这样的恶意软件可能会损害客户端设备上的数字信息的安全和/或完整性。例如,恶意软件可能会尝试访问和/或从客户端本身(例如,从客户端的存储器)、从向客户端的信息分发通道、和/或从使客户端的用户能查看或以别的方式与数字信息进行交互的通道获取数字信息。对这些区域中的任何一个的成功的恶意软件攻击都可能会损害数字信息的安全,并可能会导致由未经授权的一方对信息的访问和/或修改。

为提高数字信息的安全,开发了企业权限管理(ERM)及其他产品。在许多情况下,ERM产品被设计成通过提供用于维护信息的完整性和保密性,实施控制对信息的访问的一个或多个策略的机制,和/或通过实施跟踪客户端上的数字信息的使用的日志策略,保护敏感的数字信息(例如,文档、电子邮件,等等)的分发。

尽管现有的ERM产品有用,但是,它们仍面临来自恶意软件的安全挑战,恶意软件可能会利用现有的ERM产品中的一个或多个弱点,以便在在客户端上提供,存储,和/或使用数字信息时获取数字信息。数字信息的被授权的用户也可能试图推翻他们可能视为不方便的由ERM产品强制的保护。相应地,本领域需要在在客户端平台上提供,存储,和/或使用数字信息时改善数字信息的安全的技术。

附图简述

本发明的各实施例的特征和优点将从所附权利要求书、下面的对一个或多个示例实施例的详细描述,以及对应的图形,变得显而易见,其中:

图1描绘了本发明的一个实施例中的安全系统。

图2示出了本发明的一个实施例中的用于基于策略的检测的过程。

图3示出了根据本发明的客户端配置(provisioning)系统的示例性系统架构的框图。

图4示出了根据本发明的示例性配置方法的消息流。

图5是可以根据符合本发明的客户端配置方法执行的示例性客户端操作的流程图。

图6是可以根据符合本发明的客户端配置方法执行的示例性服务器操作的流程图。

图7是可以根据本发明与在客户端和服务器之间建立安全通信信道(会话)一起执行的示例性客户端操作的流程图。

图8包括与本发明的一实施例一起使用的系统。

具体实施方式

在下面的描述中,阐述了很多具体细节,但是,本发明的各实施例可以在没有这些具体细节的情况下实施。没有详细示出已知的电路、结构,以及技术,以便避免使对此描述的理解变得模糊。“实施例”、“各实施例”等等表示所描述的各实施例可包括特定特征、结构或特性,但是,每一个实施例都可以不一定包括该特定特征、结构或特征。一些实施例可以具有为其他实施例描述的某个,全部特征或没有一个特征。“第一”、“第二”、“第三”等等描述共同的对象,并表示正在引用相同对象的不同的实例。这样的形容词不暗示如此描述的对象必须处于给定序列,无论是在时间上、在空间上,在排序上,或以任何其他方式。

如上文所述,ERM技术旨在提升安全计算。然而,诸如ERM,数字权限管理,以及经加密的软件解决方案之类的技术产生了防恶意软件检测技术的使得系统易受攻击的问题。一个示例涉及可移植文档格式(PDF)(一种由国际标准化组织(ISO)维护的用于电子文档交换的开放式标准)文档以及用于PDF文档的“硬化”呈现器。呈现器是“硬化的”,因为它是被保护的,或安全的并且不被轻松地检测的(例如,呈现器被包括在受信任的执行技术(TXT)内或其他受保护的环境内)。用于呈现ERM保护的经加密的PDF文档的硬化呈现器可能具有使它被位于PDF文档内或耦合到PDF文档的恶意软件所危害的脚本漏洞。更具体而言,由于PDF文档是加密的,并且PDF呈现器(包括用于执行PDF文档的脚本的脚本引擎)是硬化的,因此,在执行对应于PDF文档的脚本之前,防恶意软件技术不能用于检测可疑的PDF文档。类似地,软件防盗版努力有时会加密代码的关键片段以防止破解,如果该代码具有弱点或是恶意的,则使系统易受攻击。

图1描绘了本发明的一个实施例中的安全系统。该实施例允许受信任的执行环境110(诸如下面进一步地讨论的“安全飞地(secureenclave)”)内的硬化的应用程序105向诸如检测引擎120(例如,受信任的防病毒(AV)引擎)之类的其他应用程序提供应用程序编程接口(API)115,以在经加密的内容135(例如,视频或音频或文本内容,诸如电影、电视节目、歌曲、书等等)已被解密之后对其执行检测。

实施例使用策略基础结构125来判断是否应该允许由应用程序120(例如,AV引擎或应用程序或实用程序)进行检测。如果是,则策略130还可以进一步规定哪些实体被允许执行检测。这可使机密内容所有者,诸如企业信息技术(IT)部门或付费内容经销商配置策略130。例如,IT部门可以坚持只有AV应用程序X可以被用来检查内容Y,但坚持可以使用AV应用程序X或Z来检查内容Q。

比较详细地,实施例包括四个部分。

第一部分包括带有证明能力的受信任的执行环境110,诸如,但不仅限于,安全飞地(有时被称为软件保护扩展(SGX)),管理引擎(ME),等等。这样的证明能力可包括,例如,一个平台上的飞地向远程实体(或其他飞地)证明,它被正确地实例化。

第二部分包括对在受信任的执行环境110内运行的经加密的或扰乱的内容135(例如,视频、音频,和/或文本,等等)进行操作并且包含(或耦合到)策略实施引擎126以实施策略130的硬化的应用程序105(例如,电影播放器,诸如媒体播放器,或文档查看器,诸如等等)。

第三部分包括能够创建策略130并向硬化的应用程序105提供策略130的策略基础结构125(例如,活动目录权限管理服务(ADRMS)、权限管理服务、LiveCycle权限管理企业套件,等等)。

第四部分包括在受信任的执行环境110内运行的检测引擎120(例如,防止病毒、间谍软件、web威胁、黑客攻击等等的AV软件,诸如SaaS端点保护套件)。

尽管一些实施例可包括所有四个部分,但是,其他实施例可只包括四个部分的子集的不同的组合(例如,部分1,2,以及4)。

图2示出了本发明的一个实施例中的用于基于策略的检测的过程200。

在一个实施例中,过程200开始(框205),硬化的应用程序打开/解密受保护的/经加密的内容(框210)。一旦分析了内容,硬化的应用程序就获取涉及内容的检测策略(框215)。从策略基础结构中,诸如与硬化的应用程序位于相同平台上的(或位于远离硬化的应用程序的远距离定位的平台上的)策略数据库(框220),检索策略,并判断哪些检测引擎(如果有的话)被允许检测受保护的内容(框225)。策略可以是组织特定的(例如,所有内容都可以由IT批准的防病毒引擎检测),内容特定的(例如,文档X只能由特定的检测引擎Y检测),等等。

在一个实施例中,如果对内容的检测被允许,则硬化的应用程序判断检测引擎的身份(框230),并判断检测引擎是否被批准(框235)。如果是,则硬化的应用程序(105)和检测引擎(120)彼此认证,以创建与彼此的受信任的接口(例如,会话密钥保护的信道)(框240)。向根据策略(130)被允许执行检测的检测引擎(120)公开(框245)允许对受保护的内容的检测的外部API。然后,检测引擎(或在一些实施例中,多个引擎)能够分析内容,并相应地作出决策,诸如作为恶意内容拒绝该内容,或通知它可能潜在地危险。然后,过程结束(框255)。如果策略一般不允许检测(226)或不允许可疑的特定检测引擎执行对内容的检测(236),则拒绝检测引擎的访问(框250)。

如此,实施例允许受保护的内容被完全检测,而同时仍约束被允许检测内容的实体。“约束”基于使用与内容相关联的策略。为此,一些实施例使用基于策略的对通常被保护以防止被未经授权的代理访问的明文和/或无保护的内容(例如,未加密的视频、音频,和/或文本内容)的访问。这样的实施例减轻了关于恶意软件驻留在受信任的执行环境内的顾虑,由此,为企业、消费者,等等的那些环境,提供更高的价值。这样的实施例相对于,例如,以“竞次”风格向执行路径中插入挂钩点的传统的方法有改进,在传统的方法中,防恶意软件挂钩和内容保护挂钩在发生危害之前竞争以控制受保护的内容的什么是可见的或不可见的。

现在阐明关于某些实施例的更详细的细节。

一个实施例使用安全飞地来提供受信任的执行环境。例如,策略基础结构125、硬化的应用程序105,以及检测引擎120可以被包括在相同或不同的受信任的执行环境中。安全飞地是防止在所述飞地外面执行的软件访问所述飞地内部的软件和数据的受信任的软件执行环境。任何或全部元素125,105,120可以被包括在一个或多个飞地中。

安全飞地的各实施例在,例如,2009年11月13日提交的标题为“MethodandApparatustoProvideSecureApplicationExecution(用于提供安全应用执行的方法和装置)”的美国专利申请(序列号12/590,767);2009年12月22日提交的标题为“MethodandApparatustoProvideSecureApplicationExecution(用于提供安全应用执行的方法和装置)”的PCT专利申请(申请号PCT/US2009/069212);2010年12月22日提交的标题为“SystemandMethodforImplementingaTrustedDynamicLaunchandTrustedPlatformModule(TPM)UsingSecureEnclaves(用安全飞地来实施受信任动态起动和受信任平台模块(TPM)的系统和方法)”的美国专利申请(序列号12/976,831);2013年6月4日提交的标题为“TechnologiesForHardeningTheSecurityOfDigitalInformationOnClientPlatforms(用于硬化客户端平台上的数字信息的安全的技术)”的PCT专利申请(申请号PCT/US2013/44158);“UsingInnovativeInstructionstoCreateTrustworthySolutions(使用创新指令来创建可信方案)”(马修·赫默尔等人著)、“InnovativeInstructionsandSoftwareModelforIsolatedExecution(用于隔离执行的创新指令和软件模型)”(弗兰克·麦肯等人著),以及在2013年6月24日在以色列特拉维夫召开的第二届用于安全和隐私的硬件和架构支持研讨会,“与ISCA40协同”中宣讲的其他论文中进行了描述。因此,关于安全飞地的操作的细节此处没有完全阐明。这些申请以及论文此处统称为“安全飞地材料”。

如安全飞地材料所描述,安全飞地是从其包含进程的虚拟地址空间划出的。对飞地的存储器管理是就虚拟地址而言执行的。在一个实施例中,飞地存储器管理被分成两个部分:地址空间分配和存储器提交。地址空间分配是飞地可以使用的最大地址范围的指定。没有实际资源被提交到此区域。存储器提交是已分配的地址空间内的实际存储器资源(作为页面)的分配。这两阶段技术允许飞地灵活地控制它们的存储器使用,并允许增长,而不会在飞地需求低时过度使用存储器资源。提交会向飞地添加虚拟页面。

此区别反映在两个指令ECREATE和EADD中。ECREATE分配一个地址范围,供飞地使用。EADD将该范围内的虚拟存储器页面提交到飞地。操作系统可以支持单独的分配和提交操作。例如,WindowsAPIVirtualAlloc取MEM_RESERVE(分配)或MEM_COMMIT(提交)的标志自变量。不要求OS支持此分离,但是,其存在可以使得飞地内的存储器管理更灵活和有效率。

在一个实施例中,使用ECREATE指令,创建安全飞地,指定将用来构建飞地的虚拟地址空间范围的基址和大小。在它被封闭之前,存储器与安全飞地相加。最佳地示出了飞地创建和提交过程,例如,通过使用WindowsAPI,并按如下方式进行:(1)在该过程中,使用VirtualAlloc,保留地址空间区域,传入MEM_RESERVE标志(保留存储器的一个区域,而不会实际提交任何物理存储器或页文件存储);(2)通过再次调用VirtualAlloc,这一次带有MEM_COMMIT标志,提交飞地的第一页面;(3)使用ECREATE指令来设置初始环境,指定如上所述的相同地址范围(即,ECREATE分配应用程序内的虚拟存储器的一个区域,用于主存安全代码和数据);以及,(4)对于要被添加到飞地的每一个额外的页面,VirtualAlloc飞地页面,使用EADD将新页面添加到飞地,使用EEXTEND添加128字节的页面的测量值(EEXTEND更新飞地的测量值,以包括在EADD中添加的代码或数据),以及调用此指令,直到测量整个飞地(例如,测量值可包括当飞地被初始化时飞地中的代码和数据的加密散列)。如果要一起添加飞地页面的连续的组,则可以重排序并优化上面的步骤,以最小化系统调用的数量。在不支持单独的保留和提交操作的操作系统上,上文的VirtualAlloc可以被替换为例如简单malloc,并消除对VirtualAlloc的其余调用。

由于ECREATE和EADD指令为添加的页面实现加密和完整性,因此,在存储器被添加到飞地之后,非飞地软件不可能初始化此存储器。运行时系统必须在EADD它负责的任何存储器之前完全地初始化该存储器。这通常要求运行时系统就地构建飞地映射,甚至在调用ECREATE之前(即,因为在ECREATE之后SECS不能被软件修改)。一旦存储器被初始化,飞地被ECREATE并且其存储器被EADD,它可以被密封并测量,如此处所描述的。检测引擎120、硬化的应用程序105,和/或策略基础结构125中每一个都可以被再次初始化,密封并测量,如上文所描述的。

在一个实施例中,在飞地内部有两个数据结构,安全飞地控制存储(SECS)和线程控制结构(TCS)。SECS和TCS包含运行时软件所使用的架构信息和非架构方便性字段。所有方便性字段和几个架构字段被软件初始化。在飞地创建期间,可以从明文源加载用于飞地的代码和数据。不可能在创建期间将加密代码和/或数据直接加载到飞地中。然而,可以通过首先将受信任的加载器加载到飞地中,将来自经加密的源的代码和/或数据安装到飞地中。一旦飞地运行,此加载器可以用于将秘密代码/数据(例如,加密文本、音频,和/或视频)安装到飞地中。

一旦SECS、一个或多个TCS,以及代码和数据被EADD,飞地创建就通过ElNIT指令完成。此指令阻止进一步的测量值信息被写入到测量值寄存器(MR)中(在共同待审的申请中有时被称为“IR0”)。换言之,EINIT锁定飞地的内容,并确保只有飞地内的代码才能访问相同飞地中的数据区域。在EINIT之后,不能向飞地添加进一步的页面。

不受信任的代码使用EENTER指令来调用飞地,飞地通过EEXIT,返回到不受信任的调用者。在飞地入口,控制被转移到将堆栈指针切换到飞地内部的代码的代码。当返回时,软件再次交换堆栈指针,然后,执行EEXIT指令。

如此,一旦利用EINIT创建并初始化飞地,从未经授权的软件,甚至诸如虚拟机监视器、BIOS,或在比飞地本身更高的特权级别操作的操作系统功能之类的软件的尝试的对飞地的存储器的访问被阻止。从物理观点来看,尽管飞地数据驻留在寄存器、高速缓存,或处理器封装内部的其他逻辑块内,但是,由CPU逻辑阻止通过软件的未经授权的访问。每当飞地数据离开封装上高速缓存以被写入到平台存储器时,数据被自动地加密,其完整性被保护。这会防止恶意个人使用存储器探针或其他技术来查看、修改,或重播包含在飞地内的数据或代码。

紧前面的描述讨论了用于实例化安全飞地的各种机制。一旦这些飞地被实例化,它们就可以通过证明,向彼此认证本身。更具体而言,当数据的每一页面(例如,经加密的文本、音频,和/或视频)被加载到飞地中,使用EADD和EEXTEND指令,CPU内的内部数据结构被更新以包括被添加到飞地的代码和数据的加密的测量值。远程方的确认飞地测量值和平台设置如期望的那样配置的能力被称为证明。SGX使用两个相关的凭据用于证明:报告和引用。报告用于确认本地平台上的飞地正确性,引用可以被用来向平台之外的实体反映平台和飞地状态。一旦证明成功地完成,就可以在服务器和飞地之间建立受信任的信道;,使秘密能安全地传输。

现在检查用于配置飞地然后向彼此认证飞地的实施例的比较详细的检查。

如此处所使用的,术语“配置(provisioning)”是指客户端向服务器证实其身份,并以安全的方式本地地存储该身份及其他凭据用于随后的与服务器进行通信的过程。相应地,配置可以被理解为可以在在客户端设备上提供数字信息,模块等等之前、过程中,或之后的初始化步骤。

图3示出了根据本发明的客户端配置系统的示例性系统架构的框图。如图所示,系统包括节点101和节点102。节点101和节点102可以使用网络315,直接或间接地进行通信,网络315可以是近距离通信网络,远程通信网络,或其组合。

节点101和节点102分别包括设备平台301,308。无限制地,设备平台301,308可以关联到一种或多种设备类型,诸如服务器、客户端、移动计算节点、智能电话、平板、膝上型计算机、笔记本、上网本,等等。

节点101和节点102还可以进一步分别包括处理器302,309。这样的处理器可以是任何合适的通用处理器或专用集成电路,并可以能够在一个或多个处理器核上执行一个或多个线程。无限制地,处理器302、309可以是通用处理器,诸如,但不仅限于,从INTELTM公司、ADVANCEDMICRODEVICESTM、ARMTM、NVIDIATM、APPLETM,以及SAMSUNGTM购得的通用处理器。尽管图3将节点101和节点102示为每一个都包括单一处理器,但是,可以使用多个处理器。

节点101和节点102也可以分别包括存储器303,310,它们可以是任何合适类型的计算机可读取的存储器。可以被用作存储器303和存储器310的示例性存储器类型包括,但不仅限于:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机存取存储器、闪存(可包括,例如,NAND或NOR类型存储器结构)、磁盘存储器、光盘存储器、其组合,等等。另选地或另外地,存储器303,310可以包括其他和/或以后开发的类型的计算机可读取的存储器。

节点101可以进一步被配置成提供受信任的数据、代码,模块及其他信息的配置和存储的增强型安全,包括,但不仅限于,认证凭据。因此,节点101可以包括存储器飞地304,该存储器飞地304可以起作用以提供用于数字信息的存储和处理的安全环境。如图3所示,存储器飞地304可以作为独立组件存在于节点101中,例如,在独立存储器模块内。另选地或另外地,存储器飞地304可以存在于存储器303内;在这样的情况下,存储器303的全部或一部分可被配置成存储器飞地。尽管在图3中示出了单一存储器飞地304,但是,应该理解,节点101可包括多个存储器飞地。例如,节点101可包括另外的存储器飞地(例如,引用飞地,未示出),可以在存储器303内或节点101的另一存储器,诸如处理器302本地的存储器中提供该另外的存储器飞地。

节点101和节点102也可以分别包括输入/输出(I/O)305和311。I/O305可包括被配置成允许节点101往返于节点102以及,在适用的情况下,数字信息的分发者(例如,分发者103)传输与接收通信的硬件(即,电路)、软件,或硬件和软件的组合。同样,I/O311可包括被配置成允许节点102往返于节点101以及,在适用的情况下,数字信息的分发者发送和接收通信的硬件(即,电路)、软件、或硬件和软件的组合。在一些实施例中,I/O305和311可包括使节点101和节点102能彼此进行通信的一个或多个通信模块。

I/O305和I/O315之间的通信可以使用闭合的和/或远程通信网络,通过有线或无线连接而发生。这样的通信可以符合预定义的通信协议,诸如BLUETOOTHTM协议、近场通信协议、在本发明的实际申请日期或在此之前有效的任何或无线802.11通信协议,或其组合。因此,I/O305,311可以包括支持这样的通信的硬件,例如,一个或多个转发器、天线、BLUETOOTHTM芯片、个人区域网络芯片、近场通信芯片,其组合,等等。

I/O305,311也可以被配置成从诸如磁记录介质、光学记录介质、磁光记录介质、固态(FLASH)记录介质,其组合,等等之类的数据存储介质接收消息(例如,数字信息、许可证策略,等等)。在这样的情况下,I/O305,311可以被配置成准许通过这样的数据存储设备接收不同内容。

节点101和节点102还可以分别包括“客户端”配置模块(CPM)306和“服务器”配置模块(SPM)312(虽然这并不意味着,节点101必须是客户端,而节点102必须是服务器)。CPM306可以被存储在存储器飞地304的上下文内并在其内执行,如此,受到保护而免受可能驻留在节点101上的恶意软件及其他恶意实体的破坏。

在一个实施例中,SPM312可以被存储在存储器飞地310内和/或在其内执行,在这样的情况下,SPM312可以受到保护而免受可能驻留在节点102上的恶意软件及其他实体的破坏。

CPM306和SPM312可包括可以分别由处理器302和309,或由另一处理器执行的计算机可读取的指令。在CPM306的情况下,CPM指令可以在存储器飞地304内执行。在任何情况下,CPM指令的执行都可以使节点101和/或节点102执行根据本发明的安全配置操作。节点101也可以包括引用模块307,该引用模块307可包括计算机可读取的指令,当被(例如,处理器302)执行时,可以使节点101执行根据本发明的飞地报告确认操作和飞地引用生成操作。引用模块307可以存储在存储器飞地304内并在那里执行,或可以存储在另一(引用)飞地内并在那里执行,如下面所讨论的。

CPM306或SPM312可以在节点101和节点102之间启动安全配置过程。例如,CPM306可以被配置成使节点101通过向节点102发送配置请求消息,启动配置。例如,节点101可包括检测引擎120(图1),而节点102可包括硬化的应用程序105(图1)。如果需要将请求保密,则可以使用节点102的公钥,加密配置请求消息,在这样的情况下,只有节点102才能够解密该请求。在任何情况下,SPM312都可以使节点102分析配置请求消息中的信息。

一旦分析配置请求消息,SPM312就可以使节点102生成用于传输到节点101的回复消息。回复消息可包括可以用于防重播或其他目的的信息,诸如现时值。可以利用数字签名来签名回复消息,其可包括可以由节点101(或,更具体而言,由CPM306)分析以确认回复消息的真实性的信息。在一些实施例中,SPM312使节点102使用数字签名协议,利用服务器私钥(Spriv)来签名回复消息。在该情况下,节点101可以使用对应的节点/服务器公钥(Spub)来确认回复消息的数字签名(使用“S”不暗示节点102必须是服务器或任何其他形式的节点)。

如果节点101能够适当地确认从节点102接收到的回复消息,则CPM306可以使节点101保护回复消息中的信息(例如,现时值N)(通过将它存储到存储器飞地304中)。CPM306也可以使节点101生成其自己的现时值(M),并将它安全地存储在存储器飞地304中。

进一步响应于回复消息,CPM306可以使节点101生成非对称密钥对,诸如可以用于Rivest、Shamir,Adleman(RSA)公钥加密和/或数字签名协议中。更具体而言,CPM306可以被配置成使节点101生成包括节点/客户端公钥(Cpub)和客户端私钥(Cpriv)的非对称密钥对(“C”的使用不暗示节点102必须是客户端或任何其他形式的节点),这两者都可以存储在和/或密封到存储器飞地304。

CPM306也可以使节点101生成飞地报告。飞地报告可包括,例如,封闭存储在存储器飞地304中的信息的用户数据块(在下文中,“用户数据”)的散列。用户数据可以封闭现时值N(节点102防重播信息),现时值M(节点101防重播信息),以及Cpub,可任选地,与存储在存储器飞地304中的其他信息相结合。在一些实施例中,用户数据可以封闭节点101的平台标识(平台ID)、节点101的一个或更多用户的用户标识(用户ID)、应用程序特定的标识信息(应用程序特定的ID)、存储器飞地304的安全版本号(SVN)、在节点101上提供存储器飞地304的独立软件供应商(ISV)的标识符,其组合,等等。

CPM306还可以进一步使节点101执行飞地引用生成操作。关于这一点,CPM306可以使节点101向诸如引用模块307之类的引用模块发送飞地报告。无限制地,引用模块307优选地被存储在驻留在诸如处理器302之类的处理器本地的存储器上的引用飞地内并在那里执行。可以利用数字签名来签名发送到引用模块307的飞地报告,和/或该飞地报告可包括引用模块307可以用来确认飞地报告的真实性的其他信息。例如,在将飞地报告传输到引用模块307之前,CPM306可以使节点101使用合适的数字签名协议和存储器飞地304的飞地密钥,对飞地报告进行签名。

引用模块307可以被配置成执行根据本发明的飞地报告确认操作和飞地引用生成操作。例如,一旦接收到飞地引用,引用模块307就可以使节点101确认报告的真实性。任何合适的确认方法都可以用于此目的。例如,在利用数字签名对飞地报告进行签名的情况下,引用模块307可以使节点101使用合适的签名确认协议,确认数字签名的真实性。如果确认应用于飞地报告的签名,则引用模块307可以判断飞地报告是由节点101上的飞地(例如,存储器飞地304)所生成的,而不是由诸如恶意软件之类的未经授权的实体生成的。

作为示例,CPM306可以使节点101利用可以是存储器飞地304特定的飞地密钥(Ekey),对飞地报告进行签名。在这样的情况下,引用模块307可以使节点101使用对应的密钥(可以是向引用模块307预先提供的或可以是从其他信息推导的)向飞地报告确认签名的真实性。例如,在Ekey是从客户端处理器ID和/或客户端的硬件简档派生而来的情况下,引用模块307可以从这样的信息推导相当于Ekey的密钥,并将利用等效密钥作出的签名与使用Ekey应用于飞地报告的签名进行比较。

一旦引用模块307确认飞地报告的真实性,就可以判断飞地报告是由节点101上的有效飞地(例如,飞地304)所生成的,而不是由诸如恶意软件之类的未经授权的实体生成的。然后,引用模块307可以使节点101生成飞地引用。飞地引用可包括飞地报告的副本,可任选地,与其他信息相结合。可以被包括在飞地引用中的其他信息的一个示例包括可以由节点102用于确认可以应用于来自节点101的通信的数字签名的密钥。例如,引用模块307可以使节点101生成包括节点101的公钥(即,Cpub)的飞地引用。可以被包括在飞地引用中的其他信息的进一步的示例包括客户端的平台ID、相关用户ID、飞地304的安全版本号(SVN)、提供飞地304的ISV的身份、飞地304的测量值、应用程序特定的标识(ID),其组合,等等。

在生成飞地引用之后,控制可以返回到CPM306,可以使节点101向节点102发送飞地引用。例如,CPM306可以使节点101准备发往节点101的引用消息,该引用消息可以可任选地使用诸如服务器的公钥之类的密钥来加密。然后,CPM306可以使节点101向节点102传输引用消息,例如,通过网络315。

响应于引用消息,SPM312可以使节点102确认从节点101接收到的飞地消息中所包括的飞地引用的真实性。可以以任何方式执行对飞地引用的确认。例如,SPM312可以使节点102向可以是节点102本地或远程的确认服务313传输引用消息,如图3中的框313的散列所示。确认服务313可以使用合适的确认协议,确认飞地引用。在利用数字签名对飞地引用进行签名的情况下,确认服务313可以使用合适的数字签名确认协议,确认签名的真实性。例如,可以利用节点101的私钥,诸如增强型隐私标识(EPID)私钥,对飞地引用进行签名。在这样的情况下,确认服务313可以使用诸如EPID公钥之类的对应的公钥,确认签名的真实性。

如果确认了应用于飞地引用的签名,则SPM312可以使节点102通过分析引用消息中所包含的飞地引用,确认存储器飞地304的完整性。例如,SPM312可以使节点102将飞地引用中的飞地304的测量值与存储在节点102本地或远离节点102的数据库(例如,可选数据库314)中的有效飞地测量值的白名单进行比较。可以按类似的方式,例如,通过将额外的信息与存储在可选数据库314中的信息的对应的白名单进行比较,确认飞地引用中所包括的额外的信息(如果有的话)。

如果所有确认操作都成功地完成,则SPM312可以判断节点101上的存储器飞地304有效并可信。然后,SPM312可以使节点102生成节点101的白名单身份(白名单ID),并将飞地引用的内容的全部或一部分与白名单ID相关联地存储在白名单数据库中。

SPM312也可以使节点102向节点101发送包括白名单ID的消息。响应于这样的消息,CPM306可以使节点101将白名单ID存储到存储器飞地304。具体而言,CPM306可以使节点101向存储器飞地304密封白名单ID及其他客户端认证凭据(例如,客户端密钥)、用户标识、机器标识、应用程序特定的ID,等等),例如,通过利用存储器飞地304的飞地密钥(Ekey),加密这样的信息。

如此,此处所描述的技术可以用于给节点101配置白名单ID。节点101的白名单ID及其他秘密(例如,其平台ID、用户ID、SVN、ISV、飞地密钥(Ekey)、飞地测量值等等)可以当不使用时存储在和/或密封到飞地304中,如此,可以受到保护而免受驻留在节点101上的恶意软件的攻击。配置技术还导致给节点102配置客户端白名单ID及其他秘密(例如,飞地引用的内容),它们可以存储在节点102本地或远离节点102的存储器中(诸如数据库314)。

在配置之后,节点101可以通过开封安全飞地304内的秘密,并将其白名单ID发送到节点102(例如,在已签名的消息中)向节点102认证其本身。节点102可以通过确认应用于消息的签名,并将客户端的白名单ID与已批准的平台的白名单ID进行比较,确认客户端的真实性。由于节点101可以开封存储器飞地304内的秘密,这样的秘密的明文可以受到保护而免受驻留在客户端101上的恶意软件或其他未经授权的实体的破坏。因此,本发明的技术可以在客户端认证凭据及其他信息被提供到客户端、存储在客户端上、在客户端上被使用、以及前者的组合时,保护它们。

图4示出了根据本发明的示例性配置方法的消息流。为了此讨论起见,假设节点101和节点102如图3所示的那样配置,它们中每一个都具有用于生成现时值的熵的源,诸如随机数生成器。还假设,在执行消息流之前,为节点102生成签名密钥,节点101拥有服务器公钥(Spub),而节点102拥有服务器私钥(Spriv)。Spub可以被存储在和/或密封到存储器飞地304内,如此,受到保护而免受可能驻留在节点101上的恶意软件的破坏。确实,篡改存储器飞地304内的Spub可能会产生存储器飞地304的测量值的可检测的变化,这可以被视为篡改的证据。

在此示例性消息流中,节点101的用户可能希望从节点102接收数字信息(例如,软件、文档,等等)。然而,在此点之前,节点102可能不信任节点101。因此,节点101和节点102可以执行配置方法以建立信任的根,并促进在节点101上配置初始秘密。

开始时,节点101或节点102可以启动配置。在图4中示出了此概念,图4将节点101描绘为启动配置。在此情况下,CPM306的计算机可读取的指令,当被执行时,可以,根据元素401,使节点101将配置请求(MSG1)发送到服务器102。为安全或另一目的,配置请求可以由节点101加密,例如,使用单一密钥加密、对称密钥加密,非对称密钥加密,等等。在一些实施例中,通过非对称密钥加密协议,来保护配置请求。在图4中示出了此概念,在那里,节点101利用节点102的公钥,Spub,加密MSG1。

然后,方法可以前往元素402,在那里,SPM312的服务器配置模块(SPM)指令,当被执行时,可以使节点102使用任何合适的确认协议,确认它接收到的配置请求的真实性。例如,节点102可以通过尝试解密配置请求,例如,利用其私钥(即,Spriv),确认接收到的配置请求。如果它能够利用Spriv成功地解密配置请求,则节点102可以确信,该请求来源于具有Spub的知识的客户端。此时,SPM指令,当被执行时,可以使节点102使用熵的本地或远端源(诸如随机数生成器),生成服务器现时值(N)(服务器防重播信息)。

然后,方法可以前往元素403,在那里,SPM指令,当被执行时,可以使节点102生成包括现时值N的配置响应消息(MSG2)。SPM指令也可以使节点102利用可以由节点101确认的签名密钥,例如,节点102的私钥(Spriv),对MSG2进行签名。一旦对MSG2进行了签名,SPM指令可以使节点102将已签名的MSG2传输到节点101。此时,方法可以转到元素404-406。

根据元素404,CPM306的CPM指令,当被执行时,可以使节点101确认应用于MSG2的签名。在节点102利用例如Spriv签名MSG2的情况下,CPM指令可以使节点101使用Spub来确认签名的真实性。如果确认成功,则CPM指令可以使节点101将现时值N存储在存储器飞地304中。CPM指令也可以使节点101使用熵的本地或远端源,生成现时值M(客户端防重播信息)。类似于现时值N,CPM指令可以使节点101将现时值M存储在存储器飞地304内。

CPM指令当被执行时还可以进一步使节点101生成非对称密钥对,诸如可以用于Rivest、Shamir,Adleman(RSA)公钥加密中。更具体而言,CPM指令可以使节点101生成包括Cpub和对应的私钥(Cpriv)的非对称密钥对,这两者都可以存储在存储器飞地304中。

然后,方法可以前往元素405,在那里,CPM指令,当被执行时,可以使节点101计算用户数据块(用户数据)。用户数据可以封闭现时值N、现时值M、Cpub、以及可任选地如前面所讨论的其他信息。CPM指令还可以进一步使节点101生成飞地报告。无限制地,飞地报告可包括用户数据的散列,无论单独地还是与其他信息相结合,如前面所描述的。

然后,CPM指令可以使节点101利用签名密钥,对飞地报告(包括用户数据的散列以及可选标识信息)进行签名。在一些实施例中,CPM指令可以使节点101使用飞地密钥(Ekey),对飞地报告进行签名,该飞地密钥(Ekey)可以是在存储器飞地304内预先提供的,例如,当在节点101上建立存储器飞地304时。Ekey可以是节点101的硬件特定的。即,Ekey可以对应于处理器302的处理器ID、节点101的硬件简档,其组合,等等,或从它们派生而来。另选地或另外地,Ekey可以是存储器飞地304的所有者,例如,在节点101上建立存储器飞地304的独立软件供应商(ISV)特定的,在这样的情况下,Ekey可以被理解是ISV签名密钥。

一旦生成已签名的飞地报告,方法就可以前往框406,在那里,CPM指令可以使节点101验证已签名的飞地,并生成已签名的飞地引用。关于这一点,CPM指令可以使节点101将已签名的飞地报告转发到引用模块,诸如图3的引用模块307,这可以是接近于节点101的处理器执行的独立安全飞地,并可包括计算机可读取的引用模块指令。响应于接收到已签名的飞地报告,引用模块指令可以使节点101确认应用于已签名的飞地报告的签名。例如,引用模块指令可以使处理器302对着从客户端平台密钥(Pkey)密钥中获取的签名,确认应用于已签名的飞地报告的签名。Pkey可以相当于Ekey,并可以存储在引用模块内。如果签名相同,则引用模块可以判断客户端上的有效安全飞地生成已签名的飞地报告。

一旦验证了已签名的飞地报告,引用模块指令可以使节点101生成可包括如上文所讨论的各种信息的安全飞地引用。引用模块指令还可以进一步使节点101使用签名密钥,诸如客户端的EPID私钥(可以是在客户端上预先提供的),对飞地引用进行签名。然后,方法可以前往框407,在那里,CSM指令,当被执行时,使节点101将封闭了已签名的飞地引用的消息(MSG3)发送到节点102。如图4所示,可以,例如,使用节点102公钥Spub或另一密钥,可任选地加密MSG3。

然后,方法可以前往元素408,在那里,SPM指令,当被执行时,可以使节点102对MSG3执行各种操作。例如,如果节点101利用Spub加密MSG3,则SPM指令可以使节点102使用解密协议和Spriv,来解密MSG3。一旦MSG3被解密(或如果MSG3未加密),SPM指令当被执行时可以使节点102使用节点102本地或远离节点102的确认服务,确认应用于已签名的安全飞地引用的数字(例如,EPID)签名。在任何情况下,确认服务可以具有对应于节点101用来对飞地引用进行签名的密钥的一个或多个密钥的知识。例如,在利用节点101的EPID私钥签名了飞地引用的情况下,确认服务可以使用对应的EPID公钥,根据已知EPID确认协议,确认EPID私钥的真实性。

SPM指令当被执行时也可以使节点102确认节点101上的存储器飞地304的完整性。例如,SPM指令可以使节点102将安全飞地引用中所包括的飞地测量值与可以存储在本地或远程数据库(诸如图3的数据库314)中的有效飞地测量值的白名单进行比较。如果其他标识标志(例如,客户端的机器标识符、节点101的被授权的用户的用户ID、应用程序特定的标识信息、独立软件供应商(ISV)标识符、存储器飞地304的安全版本号(SVN),等等被包括在安全飞地引用中,则CPM指令也可以使节点102确认这样的信息,例如,通过将这样的信息与存储在数据库314中或存储在另一位置处的标识标志的白名单进行比较。

在某些情况下,已签名的飞地引用可包括用户数据的散列和现时值(例如,现时值N或现时值M)。在这些情况下,SPM指令,当被执行时,可以使节点102对着批准的用户数据散列的白名单确认用户数据散列。此外,SPM指令,当被执行时,可以使节点102确认现时值,例如,用于防重播目的。

然后,方法可以前往元素409,在那里,SPM指令,当被执行时,可以使节点102将飞地引用/报告中的信息的全部或一部分存储在本地或远程存储器内,例如,存储在可选数据库314中。例如,SPM指令可以使节点102将飞地304的测量值、客户端用户名(如果包括的话)、客户端机器ID(如果包括的话)、应用程序特定的信息(如果包括的话)、用户数据的散列,以及客户端公钥(Cpub)存储在可选数据库314中或另一数据结构中。SPM指令也可以使节点102生成节点101的白名单ID,该白名单ID可以与飞地引用中接收到的信息相关联地存储。例如,SPM指令可以使节点102将白名单ID与从节点101接收到的其他信息相关联地存储在数据库314中。

然后,方法可以前往元素410,在那里,SPM指令可以使节点102将白名单ID发送到节点101。关于这一点,SPM指令可以使节点102准备包括白名单ID的消息(MSG4),该消息可以可任选地利用Spriv来签名,和/或使用Cpub来加密。在任何情况下,SPM指令可以使节点102通过有线或无线通信,例如,使用网络315,将MSG4传输到节点101。

然后,方法可以前往元素411,在那里,CPM指令,当被执行时,可以使节点101确认MSG4的真实性。例如,在利用节点102的私钥(例如,Spriv)对MSG4进行了签名的情况下,CPM指令当被执行时可以使节点101使用对应的公钥(例如,Spub)确认签名的真实性。另选地或另外地,如果利用Cpub加密了MSG4,则CPM指令,当被执行时,可以使节点101使用对应的私钥(例如,Cpriv),解密存储器飞地304内的MSG4。如此,可以由节点101在存储器飞地304内获得白名单ID,白名单ID因此受到保护而免受恶意软件的破坏。CPM指令也可以使节点101将白名单ID密封到存储器飞地304,例如,通过利用存储器飞地304的飞地密钥加密白名单ID。

如此,上文描述了如何实例化飞地,然后向彼此认证。下面的讨论阐述了策略使用。

在一个实施例中,文档使用策略和加密密钥存储在远离操作执行内容的任何飞地的(例如,图1的文档呈现器105)和/或包括检测实用程序(诸如AV实用程序(例如,图1的实用程序120))的任何飞地的平台的服务器上的数据库中(例如,图1的策略基础结构125)。诸如IT部门之类的某一方,使用在飞地内部运行的策略引擎,指定使用策略和访问控制。

再次参考图1,通过安全通信信道,将策略上传到数据库(参见基础结构125)。在包括硬化的应用程序105的飞地内,加密受保护的文档。被授权的用户105,在接收到经加密的文档时,可以使用在飞地内部运行的客户端应用程序的安全文档阅读器组件,查看它。策略引擎126,在验证文档的使用策略(从服务器安全地下载到飞地之后)与用户操作兼容(例如,检测内容的AV实用程序120)之后,还获得文档解密密钥,并将密钥和控制传输到检测引擎120。检测引擎在其飞地内部解密文档,解析内容,并一般性地检测内容中是否有恶意软件等等。

用于实施管辖检测引擎126的策略的代码(即,策略引擎)被主存在包括应用程序105的飞地内部,以防止代码修改攻击。飞地可以或可以不是保留执行引擎(例如,文档呈现器、电影播放器)的相同飞地。

如此,上文示出了如何使用策略来判断是否应该将内容提供给检测引擎120。然而,下文描述了包括应用程序105的飞地如何与包括引擎120的飞地进行通信的机制。

图5是可以与在两个节点之间建立安全通信信道(会话)一起执行的示例性客户端操作的流程图。为了讨论起见,假设如图3所示的那样配置节点。进一步假设,如上文参考图4所讨论的,给客户端和服务器提供秘密,提供到节点的秘密将被密封到节点的存储器飞地(例如,存储器飞地304)。虽然没有明确地讨论,但是,还应该理解,与图5一起执行的操作可以由客户端设备上的安全会话建立模块(SSEM)的执行导致,该安全会话建立模块可以独立于可能驻留在节点101上的客户端配置模块(CPM)或客户端企业权限实施模块(CEREM)或包括在它们中。

如图所示,方法从框701开始。在框702,节点101可以使用其飞地密钥(Ekey),从其存储器飞地,开封私钥(Cpriv)、其白名单ID、以及可任选地公钥(Spub)。无限制地,节点101优选地开封其存储器飞地内的这些项目,以便它们的明文受到保护而免受恶意软件的破坏。

一旦Cpriv、白名单ID、以及可任选地Spub被开封,方法可以前往框703,在那里,节点101可以生成一个或多个认证请求消息。认证请求消息可以封闭白名单ID以及可任选地可以被用来认证节点101的其他信息。例如,信息请求消息可包括节点101的存储器飞地的测量值、客户端的存储器飞地的SVN,等等。在任何情况下,节点101都可以使用Cpriv对认证请求消息进行签名,并可以使用Spub可任选地加密请求消息。在一些实施例中,节点的白名单ID可以作为明文被包括在认证请求消息中,而如前面所描述的,可以对消息的其他部分进行签名,并可任选地加密。在任何情况下,然后,节点101可以将已签名的、可任选地经加密的认证请求消息发送到节点102。

如下文参考图6所描述的,节点102可以对从节点101接收到的认证请求消息执行认证和验证操作。一旦服务器102成功地确认认证请求消息的真实性,它就可以检查这样的消息的内容以判断其中的内容是否有效。如果内容有效,则节点102可以生成响应消息并将其发送到节点101,该响应消息可以可任选地利用公钥(Cpub)加密并可任选地使用私钥(Spriv)签名。

返回到图5,根据框704的节点101可以监视从节点102接收到响应消息。虽然在图7中未示出,但是,如果没有从节点102接收到响应消息(或未在预先分配的时间限制内接收到),则方法可以前往框708并结束。如果接收到响应消息,则方法可以前往框705,其中,节点101可以对接收到的响应消息执行确认操作。例如,如果响应消息是由节点102使用Cpub加密的,节点101可以尝试使用Cpriv来解密响应消息。如果这样的解密成功,则节点101可以确信,响应消息来源于知道Cpub的某一方,即,节点102。

为进一步确认响应消息的真实性,节点101可以验证由节点102应用于这样的消息的数字签名。例如,如果节点102使用其私钥(例如,Spriv)对响应消息进行签名,则节点101可以使用对应的公钥(例如,Spub),使用已知签名确认协议,确认签名。为此,如果Spub以前未开封,则节点101此时可以开封其飞地内的Spub。

然后,方法可以前往框706,在那里,可以作出关于是否成功地验证响应消息的判断。如果对响应消息的验证不成功,则方法可以前往框708并结束。如果对响应消息的验证成功,则方法可以前往框707,在那里,节点101可以与节点102建立安全会话(通信信道)。在一些实施例中,节点101和节点102可以建立安全会话,在该会话中,它们使用它们的相应的公钥,向彼此加密消息。即,节点102可以使用Cpub,向客户端101加密消息,客户端101可以使用Spub,向服务器102加密消息。节点101和节点102可以使用它们的对应的私钥,即,Cpriv和Spriv,解密这些经加密的消息。如此,节点101和节点102可以使用它们的对应的公钥和私钥,安全地进行通信并交换信息。

另选地或另外地,节点101和节点102可以基于共享的会话密钥(SSK)的使用,协商安全会话。作为示例,一旦它们相互认证,节点101和节点102就可以执行签名和消息认证代码(SIGMA)协议或用于建立SSK的另一合适的协议。在任一情形下,该SSK都可以是短暂的或永久性的。如果是短暂的,则SSK可以对设置的数量(例如,1,2,等等)的会话或对于设置时间长度保持有效,在此之后,可能需要新的SSK。在任何情况下,当安全会话活动时,节点101和节点102都可以使用SSK来向彼此加密消息。由于它们中每一个都具有SSK的知识,因此,节点101可以解密来自节点102的利用SSK加密的消息,反之亦然。如此,节点101和节点102可以使用共享的会话密钥,安全地交换消息。在建立安全会话之后,方法可以前往框708并结束。

虽然使用SIGMA协议来生成SSK并使用SSK是用于建立安全会话的一个合适的机制,但是,也可以使用其他机制,这也是本发明预想的。确实,根据本发明,任何合适的加密协议都可以用于在客户端和服务器之间建立安全通信会话。

一旦建立了安全会话,节点101可以将信息请求消息发送到节点102。可以可任选地签名这样的消息,并使用SSK或公钥Spub可任选地加密它们。节点102可以可任选地确认并解密这样的消息,并将所请求的信息传输到节点101。此能力在企业权限管理上下文中有特别用途。确实,节点101可以使用安全会话安全地将对数字信息(例如,诸如电影、歌曲和文本之类的内容)、数字信息许可证等等的请求传输到节点102,而节点102可以使用安全会话来在根据安全会话加密的响应消息中提供所请求的内容。同样,节点102可以使用安全信道来安全地将模块、软件等等分发到节点101。

现在参考图6,该图6是根据本发明的与示例性安全信息传输方法一起执行的节点102操作的流程图。虽然未明确地描述,但是,应该理解,根据图6执行的操作可以由诸如SPM312或服务器企业权限管理模块(SERMM)之类的一个或多个模块在节点上的执行导致。

如图所示,方法从框801开始。在框802,节点可以监视从节点101接收到认证请求消息。然后,方法可以前往框803,在那里,可以就是否接收到信息请求消息作出判断。如果否,则方法可以循环返回到框802,并重复。然而,如果接收到认证请求消息,则方法可以持续到框804。

如前面所指出的,认证请求消息可包括节点101的白名单ID以及数字签名。根据框804,节点102可以针对可以本地地存储或远离节点102存储的预先批准的白名单ID的数据库(例如,在图3的数据库314中),确认信息请求消息中的白名单ID。

如果信息请求消息中的白名单ID匹配预先批准的白名单ID,则方法可以前往框805,在那里,节点102可以验证应用于认证请求消息的数字签名。例如,在利用节点101的私钥(例如,Cpriv、EPID私钥等等)对认证请求消息进行了签名的情况下,节点102可以使用可与预先批准的白名单ID相关联地存储的(例如,存储在节点102的数据库314中)对应的公钥(例如,Cpub、EPID公钥,等等)来验证签名。

然后,方法可以前往框806,在那里,可以作出关于是否成功地确认签名的判断。如果否,则方法可以前往框809,并结束。如果成功地确认签名,则方法可以前往可选框807,在那里,如有必要,节点102可以解密信息请求消息。再次指出,节点101可以使用服务器的公钥Spub来加密信息请求消息的全部或一部分,在这样的情况下,节点101可以使用其私钥Spriv来解密这样的消息。

一旦解密完成(或如果信息请求消息未加密),方法可以前往框808。根据此框,如前面所描述的,节点102可以与节点101协商安全通信会话,例如,使用协商的SSK和/或节点101和节点102的公钥和私钥。无限制地,节点102和节点101优选地协商短暂的SSK,然后,当安全通信会话活动时,该短暂的SSK可以用于加密节点101和节点102之间的全部消息。然后,方法可以前往框809,并结束。

如此,上文描述了用于实例化飞地、认证飞地,以及在飞地之间进行通信的实施例。下面是用于使用这些能力的元素的实施例的描述。

图7包括本发明的一个实施例中的用于安全计算的过程700。过程700包括初始化(例如,实例化)第一安全飞地(框705)和第二安全飞地(框720),每一个安全飞地都包括防止在第一和第二安全飞地外面执行的软件访问第一和第二安全飞地内部的软件和数据的受信任的软件执行环境。第一安全飞地包括位于应用程序的虚拟地址空间内的隔离的存储器区域(例如,PDF呈现应用程序、媒体播放器,等等),只有在第一安全飞地内执行的代码才可以访问位于第一安全飞地中的数据(例如,诸如视频、音频、文本之类的数字内容,等等)。第二安全飞地可包括位于应用程序的虚拟地址空间内的隔离的存储器区域(例如,检测引擎,诸如恶意软件检测实用程序(此处也被称为AV实用程序,并一般性地包括判断内容是否由于诸如无法识别的测量值、恶意软件签名的存在等等的某种原因而有害的代码),只有在第二安全飞地内执行的代码才可以访问位于第二安全飞地中的数据(例如,诸如视频、音频、文本之类的数字内容,等等)。

其他实施例可包括单一安全飞地,例如,该单一安全飞地包括硬化的文档呈现器,而检测引擎不一定被包括在诸如安全飞地之类的受信任的计算环境中。

进一步,第一和第二安全飞地两者均不一定有特权(虽然在其他实施例中,两者中的任何一个都可以有特权)。如此,包括在安全飞地中的应用程序可以处理内容(例如,播放电影或检测电影),而在包括其中一个飞地的平台上操作的操作系统、虚拟机监视器、以及二进制输入/输出系统(BIOS)中的至少一个包括比第一安全飞地特权更大的恶意软件。由于恶意软件存在于操作系统中,因此有特权,这样的恶意软件可以比第一安全飞地特权更大。

在框710中,第一安全飞地接收内容,框715检测对应于内容的策略。这些框不一定必须按此顺序发生,并可以彼此独立地发生。策略可以涉及哪些检测引擎(如果有的话)可以访问由第一安全飞地接收到的内容。在其他实施例中,白名单可以更一般地对应于可以访问内容的其他实用程序(不管实用程序是否专注于安全计算)。

框725包括第一安全飞地认证第二安全飞地。这可以响应于检测策略(框75),但在其他实施例中不一定是这种情况。框725不一定要求第一飞地向第二飞地认证其本身或反之。更基本的是,第一安全飞地认识到第二飞地是“谁”,以便以后在包括可以检查可疑内容(例如,歌曲)的应用程序时检查第二安全飞地。认证(此处有时被称为证明)可包括各种可选元素。例如,认证可包括所述第二安全飞地向所述第一安全飞地传递报告,所述报告(框730)基于下列各项中的至少一项:(a)标识符,该标识符对于包括所述第二安全飞地的计算平台、独立软件供应商(ISV)(例如,对应于ISV的密钥或签名)、以及所述至少一个处理器的一部分(例如,基于包括第二安全飞地的所述平台的处理器中的寄存器设置)中的至少一个是特定,(b)由所述计算平台所生成的现时值,以及,(c)基于所述第二安全飞地中所包括的内容的测量值。关于认证,参考图4讨论了各种标识符,包括,但不仅限于,一块用户信息,节点101、102的现时值,签名的飞地报告,签名的飞地引用,等等。

认证还可以包括,其中包括列出所述第二安全飞地中所包括的经授权的检测引擎的白名单(框735)的所述策略。例如,一旦第一安全节点理解第二安全飞地是“谁”,就可以将标识(或其某种推论)与白名单进行比较,以判断第二安全节点的应用程序是否应该检测内容。如此,一个实施例可以具有将第二安全飞地识别为可信任的飞地但是仍不会“认证”第二飞地(因为第二飞地不在白名单中)的第一安全飞地。如此,如果成功,第一安全飞地“响应于”检测到策略,认证第二安全飞地。

框740包括响应于认证第二安全飞地,第一安全节点将经加密的内容传递到第二安全飞地。框745包括第二安全飞地解密经加密的内容,以产生经解密的内容,并检测经解密的内容。基于此分析或检测,第二安全飞地响应于检测经解密的内容,认证经解密的内容(即,判断内容是否由于诸如无法识别的测量值、恶意软件签名的存在等等的任何原因而有害);以及,响应于认证所述经解密的内容,将消息(746,747)传递到所述第一安全飞地。指出真实性的消息(746)导向框750,在那里,响应于从第二安全飞地接收到消息,第一安全飞地解密经加密的内容,以产生额外的经解密的内容,并处理额外的经解密的内容(例如,呈现文档、播放歌曲,播放电视节目)。然而,指出非真实性/缺乏真实性的消息(747)导向框755(如在框725中的不成功的认证那样),包括响应于第二安全飞地检测经解密的内容,禁止第一安全飞地处理从经加密的内容推导的未加密的内容。

本发明的各实施例不限于包括第一和第二安全飞地两者的系统。例如,实施例存在于涉及第一安全飞地本身的指令中。例如,实施例包括由至少一个处理器执行的方法,包括:初始化第一安全飞地,所述第一安全飞地包括防止在所述第一安全飞地外面执行的软件访问所述第一安全飞地内部的软件和数据的受信任的软件执行环境;以及,所述第一安全飞地:接收内容并检测策略;基于检测所述策略,判断恶意软件检测实用程序是否可以检测所述内容;认证所述恶意软件检测实用程序;响应于认证所述恶意软件检测实用程序,将所述内容的经加密的版本传递到所述恶意软件检测实用程序;接收来自所述恶意软件检测实用程序的指出所述内容被认证的消息;以及,响应于接收到所述消息,执行所述内容。尽管此实施例可以与第二安全飞地进行交互,但是,该第二安全飞地不是满足或实例化实施例所必需的。

各种飞地可以与包括策略的数据库一起被包括在单一平台(例如,平板)上。然而,这些项目可以分散在各种节点中。例如,策略可以被包括在基于云的服务器中,检测引擎可以被包括在另一基于云的服务器中,硬化的呈现引擎存在于智能电话中,或更一般而言,移动计算节点中。

一个实施例可包括一种设备,包括:至少一个存储器;耦合到所述存储器的至少一个处理器,以执行包括下列各项的操作:初始化第一安全飞地,所述第一安全飞地包括防止在所述第一安全飞地外面执行的软件访问所述第一安全飞地内部的软件和数据的受信任的软件执行环境;以及,所述第一安全飞地:接收内容并检测策略;基于检测所述策略,判断检测引擎模块是否可以检测所述内容;认证所述检测引擎模块;响应于认证所述恶意软件检测实用程序,将所述内容的经加密的版本传递到所述检测引擎模块;从所述检测引擎模块接收指出所述内容被认证的消息;以及,响应于接收到所述消息,执行所述内容。存储器可包括诸如图3的存储器304或310之类的安全飞地保护的存储器。处理器可包括处理器302,309等等。

再次参考图3,图3描绘了用于操作各实施例的硬件基本系统的各实施例。节点101、102中的任何一个都可以使用下面所讨论的诸如图8的系统之类的系统。事实上,各实施例可以用于许多不同类型的系统中。例如,在一个实施例中,通信设备可以被配置为执行此处所描述的各种方法和技术。当然,本发明的范围不限于通信设备,其他实施例可以涉及用于处理指令的其他类型的设备。

可以使用程序指令来使利用指令编程的通用或专用的处理系统来执行此处所描述的操作。另选地,操作可由包含用于执行操作的硬连线逻辑的专用硬件组件来执行,或由编程的计算机组件和自定义的硬件组件的任何组合来执行。此处所描述的方法可以作为(a)计算机程序产品来提供,该计算机程序产品可以包括在其上存储了指令的一个或多个非暂态有形的机器可读的介质,指令可以被用来编程处理系统(或其他电子器件)以执行方法或(b)在其上存储了用于导致系统执行方法的指令的至少一个存储介质。此处所使用的术语“机器可读介质”或“存储介质”应当包括能够存储、编码由机器执行并且使机器执行此处所描述的方法中的任何一个的指令序列的任何介质(瞬时的介质,包括信号,或非瞬时的介质)。术语“机器可读的介质”或“存储介质”应该相应地包括,但不局限于,存储器,诸如固态存储器、光盘和磁盘、只读存储器(ROM)、可编程ROM(PROM)、可擦PROM(EPROM),电EPROM(EEPROM)、盘驱动器、软盘、紧致盘ROM(CD-ROM)、数字多功能盘(DVD)、闪存、磁光盘、以及更多外来的介质,诸如机器可访问的生物状态保持或信号保持存储。介质可包括用于以可由机器读取的形式存储、传输,或接收信息的任何机制,介质可包括可以通过其传递程序代码的介质,诸如天线、光纤、通信接口,等等。程序代码可以以数据包、串行数据、并行数据、等等的形式传输,并可以以压缩或经加密的格式使用。进一步地,以一种形式或另一种形式(例如,程序、过程,进程、应用、模块、逻辑,等等)将软件表述为采取动作或导致结果是常见的。此类表达仅是陈述导致处理器执行动作或产生结果的处理系统执行软件的简洁方式。

现在请参看图8,所示是根据本发明的一个实施例的系统实施例1000的框图。系统1000可以被包括在例如移动计算节点中,诸如蜂窝电话、智能电话、平板、笔记本、膝上型计算机、个人数字助理,以及基于移动处理器的平台。

所示是包括第一处理元件1070和第二处理元件1080的多处理器系统1000。尽管示出了两个处理元件1070和1080,但是,可以理解,系统1000的实施例还可以只包括一个这样的处理元件。系统1000被示为点对点互连系统,其特征在于,第一处理元件1070和第二处理元件1080通过点对点互连1050耦合。应该理解,所示出的任何或全部互连都可以实现为多点分支总线,而并非点对点互连。如图所示,处理元件1070和1080中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核1074a以及1074b以及处理器核1084a以及1084b)。这样的核1074、1074b、1084a、1084b可以被配置成以与此处所公开方法类似的方式执行指令代码。

每一处理元件1070、1080都可以包括至少一个共享缓存。共享缓存可以存储分别被处理器的一个或多个组件(诸如核1074a、1074b以及1084a,1084b)使用的数据(例如,指令)。例如,共享缓存可以本地缓存存储在存储器1032、1034中的数据,用于被处理器的组件更快的访问。在一个或多个实施例中,共享缓存546a,546b可以包括一个或多个中级缓存,诸如级别2(L2)、级别3(L3)、级别4(L4),或其他级别的缓存,末级缓存(LLC),和/或其组合。

尽管只利用两个处理元件1070、1080来示出,但是,可以理解,本发明的范围不仅限于此。在其他实施例中,一个或多个额外的处理元件可以存在于给定处理器中。可另选地,一个或多个处理元件1070,1080可以是除处理器以外的元件,诸如加速器或场可编程门阵列。例如,额外的处理元件可包括与第一处理器1070相同的额外的处理器,与第一处理器1070异构或非对称的额外的处理器,加速器(诸如,例如,图形加速器或数字信号处理(DSP)单元),场可编程门阵列,或任何其他处理元件。就包括架构、微架构、热,功耗特征等等的一系列优点的度量而言,在处理元件1070、1080之间可能会有各种差异。这些差异可能有效地将其本身表现为处理元件1070、1080之间的不对称性和异质性。对于至少一个实施例,各种处理元件1070、1080可以驻留在相同管芯封装中。

第一处理元件1070还可以包括存储器控制器逻辑(MC)1072以及点对点(P-P)接口1076以及1078。类似地,第二处理元件1080可包括MC1082以及P-P接口1086以及1088。MC1072和1082将处理器耦合到各自的存储器,即存储器1032和存储器1034,这些存储器可以是本地附连到各自处理器的主存储器的部分。尽管MC逻辑1072和1082被示为集成到处理元件1070、1080中,但是对于替换实施例,MC逻辑可以是处理元件1070、1080之外的单独逻辑,而并非集成在其中。

第一处理元件1070和第二处理元件1080可以分别通过P–P互连1062,10104,通过P–P接口1076,1086耦合到I/O子系统1090。如图所示,I/O子系统1090包括P–P接口1094和1098。此外,I/O子系统1090还包括将I/O子系统1092与高性能图形引擎1038耦合的接口1090。在一个实施例中,总线可以被用来将图形引擎1038耦合到I/O子系统1090。交替地,点对点互连1039可以将这些组件耦合。

I/O子系统1090又可以通过接口1096耦合到第一总线10110。在一个实施例中,第一总线10110可以是外围组件互连(PCI)总线,或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。

如图所示,各种I/O设备1014,1024可以连同总线桥1018耦合到第一总线10110,总线桥1018可以将第一总线10110耦合至第二总线1020。在一个实施例中,第二总线1020可以是低管脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1020,包括,例如,键盘/鼠标1022、通信设备1026(它们又可以与计算机网络进行通信)以及数据存储单元1028,诸如磁盘驱动器或可以包括代码1030的其他大容量存储设备。代码1030可以包括用于执行上文所描述的方法中的一个或多个的实施例的指令。进一步,音频I/O1024可以耦合到第二总线1020。

诸如组件1070、1080、1032、1034、1038、1090之类的系统1000的各种组件可包括此处所描述的RDL线路。

请注意,其他实施例也是可以的。例如,代替所示出的点对点架构,系统可以实现多点分支总线或另一此类通信拓朴。此外,还可以使用比图8中所示出的更多或更少的集成芯片来分区图8的元件。

此外,尽管有时将安全飞地与安全飞地(有时被称为软件保护扩展(SGX))进行比较,但是,“安全飞地”是受信任的软件执行环境的一种形式,如此处所使用的,以及在权利要求中,更一般地指应用程序的隔离的存储器区域,只有安全飞地内的代码处理才可以访问分别位于安全飞地中的数据。

示例1包括由至少一个处理器执行的方法,包括:初始化第一和第二安全飞地,每一安全飞地都包括防止在所述第一和第二安全飞地外面执行的软件访问所述第一和第二安全飞地内部的软件和数据的受信任的软件执行环境;所述第一安全飞地(a)(i)检测策略,(a)(ii)响应于检测所述策略,认证所述第二安全飞地;以及(a)(iii)响应于认证所述第二安全飞地,将经加密的内容传递到所述第二安全飞地;以及,所述第二安全飞地(b)(i)解密所述经加密的内容,以产生经解密的内容,以及(b)(ii)检测所述经解密的内容。

在示例2中,示例1的主题可以可任选地包括,其中,所述策略包括列出所述第二安全飞地中所包括的经授权的检测引擎的白名单。

在示例3中,示例1-2的主题可以可任选地包括,其中,认证所述第二安全飞地包括分析所述第二安全飞地中所包括的内容的测量值。

在示例4中,示例1-3的主题可以可任选地包括,其中,所述第二安全飞地内容包括恶意软件检测实用程序。

在示例5中,示例1-4的主题可以可任选地包括,所述第二安全飞地:响应于检测所述经解密的内容,认证所述经解密的内容;以及,响应于认证所述经解密的内容,将消息传递到所述第一安全飞地。

在示例6中,示例1-5的主题可以可任选地包括,所述第一安全飞地解密所述经加密的内容以产生额外的经解密的内容,并且响应于从所述第二安全飞地接收所述消息来处理所述额外的经解密的内容。

在示例7中,示例1-6的主题可以可任选地包括,其中,所述第一安全飞地没有特权,所述方法进一步包括当操作系统、虚拟机监视器、以及二进制输入/输出系统(BIOS)中的至少一项包括比所述第一安全飞地特权更大的恶意软件时,处理所述额外的经解密的内容。

在示例8中,示例1-7的主题可以可任选地包括,其中,所述第一安全飞地没有特权。

在示例9中,示例1-8的主题可以可任选地包括,响应于所述第二安全飞地检测到所述经解密的内容,禁止所述第一安全飞地处理从所述经加密的内容推导的未加密的内容。

在示例10中,示例1-9的主题可以可任选地包括,其中,所述第一安全飞地包括位于应用程序的虚拟地址空间内的隔离的存储器区域,只有所述第一安全飞地内的代码处理能够访问位于所述第一安全飞地中的数据。

在示例11中,示例1-10的主题可以可任选地包括,其中,所述经加密的内容包括视频和音频内容中的至少一项。

在示例12中,示例1-11的主题可以可任选地包括,其中,认证所述第二安全飞地包括所述第二安全飞地向所述第一安全飞地传递报告,所述报告基于下列各项中的至少一项:(a)标识符,所述标识符对于包括所述第二安全节点的计算平台、独立软件供应商(ISV)以及所述至少一个处理器的一部分中的至少一个是特定的,(b)由所述计算平台所生成的现时值,以及,(c)基于所述第二安全飞地中所包括的内容的测量值。

一个实施例包括至少一个机器可读介质,所述至少一个机器可读介质包括多条指令,响应于在计算设备上被执行,所述多条指令导致所述计算设备执行示例1到12中任一项所述的方法。一个实施例包括用于执行来自示例1到12的操作中的任何一项的装置。一个实施例包括被配置为执行根据示例1到12中的任何一项所述的方法的通信设备。

示例13包括由至少一个处理器执行的方法,包括:初始化第一安全飞地,所述第一安全飞地包括防止在所述第一安全飞地外面执行的软件访问所述第一安全飞地内部的软件和数据的受信任的软件执行环境;以及,所述第一安全飞地:接收内容并检测权限管理策略;基于检测所述策略,判断恶意软件检测实用程序是否可以检测所述内容;认证所述恶意软件检测实用程序;响应于认证所述恶意软件检测实用程序,将所述内容的经加密的版本传递到所述恶意软件检测实用程序;接收来自所述恶意软件检测实用程序的指出所述内容被认证的消息;以及,响应于接收到所述消息,处理所述内容。

在示例14中,示例13的主题可以可任选地包括,其中,认证所述恶意软件检测实用程序包括分析所述恶意软件检测实用程序的至少一部分的测量值。

在示例15中,示例13-14的主题可以可任选地包括,当操作系统、虚拟机监视器、以及对应于所述至少一个处理器的二进制输入/输出系统(BIOS)中的至少一项包括比所述第一安全飞地特权更大的恶意软件时,处理所述内容。

在示例16中,示例13-15的主题可以可任选地包括,其中,所述第一安全飞地没有特权。

在示例17中,示例13-16的主题可以可任选地包括,其中,所述第一安全飞地包括位于应用程序的虚拟地址空间内的隔离的存储器区域,只有在所述第一安全飞地内的代码执行能够访问位于所述第一安全飞地中的内容。

一个实施例包括至少一个机器可读介质,所述至少一个机器可读介质包括多条指令,响应于在计算设备上被执行,所述多条指令导致所述计算设备执行权利要求13到17中的任一项所述的方法。

示例18包括一种设备,包括:至少一个存储器;耦合到所述存储器的至少一个处理器,以执行包括下列各项的操作:初始化第一受信任的软件执行环境,所述第一受信任的软件执行环境防止在所述第一受信任的软件执行环境外面执行的软件访问所述第一受信任的软件执行环境内部的软件和数据;以及,所述第一受信任的软件执行环境:接收内容并检测策略;基于检测所述策略,判断检测引擎模块是否可以检测所述内容;认证所述检测引擎模块;响应于认证所述恶意软件检测实用程序,将所述内容的经加密的版本传递到所述检测引擎模块;从所述检测引擎模块接收指出所述内容被认证的消息;以及,响应于接收到所述消息,处理所述内容。

在示例19中,示例18的主题可以可任选地包括,其中,所述操作包括当所述设备的操作系统、虚拟机监视器、以及二进制输入/输出系统(BIOS)中的至少一项包括比所述第一受信任的软件执行环境特权更大的恶意软件时,处理所述内容。

在示例20中,示例18-19的主题可以可任选地包括,其中,所述第一受信任的软件执行环境包括没有特权的第一安全飞地。

在示例21中,示例19-20的主题可以可任选地包括,其中,所述第一安全飞地包括位于应用程序的虚拟地址空间内的所述至少一个存储器的隔离的存储器区域,只有在所述第一安全飞地内的代码执行能够访问位于所述第一安全飞地中的数据。

尽管是参考数量有限的实施例来描述本发明的,但是,那些精通本技术的人将从其中理解很多修改和变体。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修改和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号