跨安全引导更新保留受保护机密的制作方法

文档序号:17439532发布日期:2019-04-17 04:34阅读:156来源:国知局
跨安全引导更新保留受保护机密的制作方法

背景及相关技术

当代计算机系统必需为计算机系统提供安全性。病毒和其它方法已被用于损害计算系统。因此,已实现对抗措施以防止或降低攻击的有效性。

一种类型的保护涉及由可信平台模块(tpm)提供的保护。tpm通过将加密密钥直接集成到硬件设备中来提供保护硬件设备的功能。在简化示例中,tpm可以存储机密,例如解密密钥。该机密可以用于解锁机密数据。例如,计算机上的硬盘驱动器可以被加密为机密,以防止损害硬盘驱动器上的机密数据。

机密可以被密封。密封(sealing)意味着机密以需要tpm来实现解密的方式进行加密,并且向外部实体提供机密的tpm与条件相关联。因此,仅当满足某些条件时tpm才会解密和/或提供机密。换言之,密封通常被定义为加密为条件,而解封(unsealing)包括解密和执行条件。

tpm中的条件通常与硬件或操作系统完整性相关。例如,在引导过程中,各种实体串行地执行各种功能。因此,实体(例如,引导模块)将进行完整性校验,并且如果完整性校验通过,则实体将执行某些功能并将处理传递给该过程中的下一实体。该下一实体将执行完整性校验,并进一步将处理传递给另一个实体。这一直持续到所有实体都通过完整性校验并执行期望的处理。处理或完整性校验可以沿路径累积,例如通过迭代附加和散列处理,其中结果存储在校验寄存器中。在处理结束时,校验寄存器将具有经计算的条件值。可以将该条件值与已知的良好条件值进行比较。已知的良好条件值可能已在已知良好引导过程期间生成。如果这两个值匹配,则机密被解密并提供给外部实体。因此,例如,操作系统可以获得机密以解密硬盘驱动器并允许使用计算系统。

然而,如果条件值不匹配(通常指示实体已被篡改),则tpm不会释放该机密。这通常是期望的结果。然而,如果引导实体由合法过程进行更新,则这将导致经计算的条件值与已知的良好条件值之间不匹配。这将使得tpm维持该机密,以使得在所示出的示例中硬盘驱动器将不能被解密,从而导致计算系统基本上不可用,尽管系统没有受到损害,除非已知条件值可以被更新。

本文所要求保护的主题内容不限于解决任何缺陷或仅在诸如上述那些环境中操作的实施例。相反,提供该背景仅为了说明可以实践本文所描述的一些实施例的一个示例性技术领域。



技术实现要素:

本文所示出的一个实施例包括一种获得经密封的机密的计算机实现的方法。该方法包括:在计算系统处从多个不同blob中解密一个或多个blob。该多个blob中的每个blob包含机密。该多个blob中的每个blob被密封到多个条件中的不同条件。给定条件是对系统状态的反映,其中该系统状态指示该系统是否能够被信任以接收该机密。该方法还包括:评估一个或多个条件以确定是否满足该一个或多个条件中的至少一个条件。该方法还包括:如果满足该一个或多个条件中的至少一个条件,则将该机密提供给外部实体。

提供本发明内容以用简化形式引入一些概念,这些概念以下在详细描述中进一步描述。本发明内容并非旨在标识所要求保护的主题内容的关键特征或必要特征,也并非旨在用作帮助确定所要求保护的主题内容的范围。

另外的特征和优点将在下面的描述中阐述,并且部分地将从描述中显而易见,或者可以通过实践本文的教导来学习。借助于所附权利要求中特别指出的仪器和组合,可以实现和获得本发明的特征和优点。通过以下描述和所附权利要求,本发明的特征将变得更加明显,或者可以通过下文阐述的本发明的实践来学习本发明的特征。

附图说明

为了描述可以获得上述和其它优点和特征的方式,将通过参考在附图中示出的特定实施例来呈现上面简要描述的主题内容的更具体描述。应理解,这些附图仅描绘了典型的实施例,并且因此不应认为是对其范围的限制,将通过使用附图以另外的特征和细节来描述和解释实施例,其中:

图1示出了支持测量的引导操作的设备;

图2示出了将相同机密密封到不同条件的不同blob;

图3示出了说明当系统发生变化时如何密封机密的流程图;

图4示出了获得机密的方法;以及

图5示出了密封机密的方法。

具体实施方式

本文所示出的实施例可以允许即使在不满足与密封相关的条件时也提供经密封的机密,例如密钥。这可以通过将机密密封到多个不同的二进制大对象(blob)中来完成,其中每个blob被密封到不同的条件。因此,只要满足其中一个条件,就可以从与该条件相关联的blob提供机密。因此,可以实现影响系统条件的不同更新,从而影响经计算的系统条件值,但是只要至少一个已知条件值与经计算的条件值匹配,就仍然可以解封并提供机密。

另外,当经计算的条件值与已知条件值不匹配时,这可以用作关于由于系统更新可能需要更新已知条件值和/或应该评估系统更新以确定系统更新是否有效的指示符。

在一些情况下,只要至少一个已知条件值与一个经计算的条件值匹配,就可以将已知系统值自动更新为不匹配的经计算条件值。

然而,应该理解,已知条件值不一定是自动更新的。具体而言,有时可以由于识别已知条件值和经计算条件值不匹配而评估更新,以确保更新是可信的或以其它方式有效。

现在参考图1示出详细的示例。

在计算设备100实现对测量的引导(例如,如tcg规范中所定义的)的支持的情况下,则可以利用代码完整性装置来保护机密数据114免于系统重启之间的未授权公开。这是通过首先利用机密104(例如,随机对称密钥(数据保护密钥))加密机密数据114(数据存储装置102中的此类数据)、并且随后进一步利用系统可信平台模块(tpm)106使用通常被称为“密封”的操作密封机密来实现的。一组tpm平台配置寄存器(pcr)108用于在后续解密时执行系统状态,并且如果该组pcr108中的任何一个所选择pcr与预期值不匹配,则tpm106将不释放机密104。由于tpmpcr108包含所有已加载模块的链接或累积散列值以及引导过程配置,因此该方法确保仅在计算设备已启动到与密封操作所预期的相同状态时才释放机密104。如所提到的,对配置和/或任何已加载模块的任何改变将导致改变的pcr值,并且因此如果仅使用单个密封操作,则将阻止tpm106在引导周期期间释放机密104。然而,在本文所示出的一些实施例中,可以使用多个密封操作或多个经密封blob(例如包含机密104的blob110-1到110-n)来增加可以提供机密104的机会。

在计算设备100还实现对安全引导的支持(根据uefi规范)的情况下,则可以限制用于保护机密数据的tpmpcr集合。例如,实施例可以将寄存器限制为仅包含安全引导数据库的配置数据的那些寄存器。替代地或另外地,实施例可以将寄存器限制为仅包含正被加载的模块的签名机构的那些寄存器。这允许在特定引导周期期间启动对模块112的任何更新,只要这些模块112仍然由密封操作所针对的相同原始机构签名。替代地或另外地,实施例可以促进对安全引导数据库本身的内容进行更新的实施例(同时仍然允许提供机密104),这是罕见但非常重要的操作,该操作用于使数据库保持与恶意模块和签名者的已知列表同步。

实施例促进通过tpm密封来跨安全引导数据库内容的更新来保留机密104。在所示出的示例中,数据存储装置102中的机密数据利用机密104来加密,机密104在该情况下是随机对称密钥(数据保护密钥或dpk),并且机密104利用tpm106使用第一条件来密封,其中第一条件在该情况下由反映安全引导和模块签名者状态的pcr集合108的子集来反映。另外,在所示出的示例中,实施例创建包含数据保护密钥的另外密封的blob,该数据保护密钥被密封到pcr集合108,其反映正被加载的模块的散列,但不包括安全引导的状态。虽然在该示例中示出了两个经密封blob110-1和110-n,但是应该理解,在其它实施例中,可以使用不同的条件来创建另外的经密封blob。

在图2中所示出的示例中,当解封机密104时,首先尝试原始的经密封blob110-1。在该步骤成功的情况下,则机密104立即可用。备用的经密封blob110-2针对其目标pcr值被验证为仍然与当前引导周期匹配,以确定是否需要对备用blob110-2的密封进行更新。在备用pcr值与当前周期不匹配的情况下,这指示一个或多个模块已被更新,而仍由相同机构签名,并且随后对备用的经密封blob110-2进行更新以反映当前加载的模块的累积散列值。在原始的经密封blob110-1未能解封的情况下,这指示安全引导配置的潜在变化,并且随后尝试备用blob110-2。只要在引导周期期间加载相同的模块组,备用blob110-1就会成功解封,释放机密104(例如,数据保护密钥),并且这允许解密机密数据114。随后对密封的blob110-1进行更新以反映安全引导数据库的新配置。只要安全引导数据库内容与用作保护机密数据114的一部分的任何模块分开更新,这就会允许跨安全引导配置的更新来保留机密数据114。

因此,实施例可以被配置为创建和维护包含机密104(例如,用于机密数据114的数据保护密钥)的数据blob,并且被密封到条件,例如不包括安全引导配置、但包括已加载模块的累积散列的pcr集合108的状态,以充当包含相同数据保护密钥的原始blob的备用保护器,该备用保护器被密封到一个或多个其它条件,例如反映安全引导配置状态和模块签名者、但不包括已加载模块的累积散列的pcr集合108的状态。

实施例可以包括用于对密封的blob进行更新以始终反映条件的功能,例如在上面示出的备用blob110-2的情况下,反映在当前引导周期中加载的模块的累积散列。

在所示出的示例中,当原始的经密封blob110-1由于安全引导状态或其它条件的改变而未能解封时,实施例可以使用备用的经密封blob110-2来解封机密104(例如,数据保护密钥)。

实施例可以在已使用备用blob110-2来解封机密104之后对原始的经密封blob110-1进行更新。

在图2中所示出的示例中,机密数据114利用机密104来加密,在该示例中,机密104是随机对称数据保护密钥(dpk),并且随后将dpk密封到2组不同的tpmpcr:主密封blob110-1包含经加密的机密数据114(尽管经加密的机密数据114可以替代地或另外地存储在其它位置)以及密封到pcr7和11的dpk,而备用的经密的blob包含相同的dpk,在图2中所示出的示例中该dpk被密封到pcr0、2、4和11。根据测量的引导tcg规范和uefi规范,pcr7反映了设备上的安全引导的配置,而pcr4包含引导管理器模块的累积散列。其余的pcr用于本文未涵盖的其它目的。这两个密封的blob中的每个blob还包括目标累积散列值,即,其响应pcr集合的经计算条件值。

图3针对示出了流程图,该流程图示出了针对一个特定实施例的步骤,这些步骤被执行以跨安全引导配置的改变保留机密数据114。在需要获得机密数据114的执行点处,控制将首先尝试使用主blob来解封dpk(如301处所示出的)。如果自上次引导周期以来安全引导配置已经改变,则预期该步骤失败,随后控制将尝试使用备用blob来解封dpk(如302处所示出的)。该步骤的失败指示自上次引导周期以来安全引导配置和引导管理器模块两者都已改变,并且这导致无法保留机密数据114。尽管在其它实施例中,可以使用另外的blob来增加能够恢复机密数据114的概率。

然而,在本示例中,在自上次引导周期以来引导管理器模块未改变的情况下,该步骤将成功并将提供dpk。随后将控制传递到步骤303,在步骤303中通过根据pcr7和11的当前值重新密封刚刚获得的dpk来更新主blob110-1。随后将控制传递到步骤304,在步骤304中刚刚获得的dpk用于解密机密数据114,该机密数据114现在可用于当前和未来的引导周期。

在主blob110-1在步骤301处成功解封的情况下,则下一步骤是对照当前tpmpcr来校验备用blob的目标pcr累积散列值(如305处所示出的),并且如果目标pcr累积散列值与当前tpmpcr108不匹配(从而指示自上次引导周期以来可能已经更新了引导管理器模块),则通过重新密封dpk来更新备用blob(如306处所示出的)。随后将控制传递到步骤304,在步骤304中使用在步骤301中获得的dpk来解密机密数据。

以下讨论现在涉及可以执行的多个方法和方法动作。虽然方法动作可以按特定顺序来讨论或在流程图中被示出为了按特定顺序发生,但不需要特定排序,除非另外特别说明、或者由于一个动作取决于在执行带动作之前完成另一动作而需要特定排序。

现在参考图4,示出了方法400。方法400是获得经密封的机密的计算机实现的方法。该方法包括:在计算系统处从多个不同的blob中解密一个或多个blob(动作402)。该多个blob中的每个blob包含机密。该多个blob中的每个blob被密封到多个条件中的不同条件。给定条件是对系统状态的反映,其中系统状态指示该系统是否能被信任以接收机密。例如,这种系统状态可以包括blob或系统组件的签名者的列表。替代地或另外地,系统状态可以包括一组操作系统组件。

方法400还包括:评估一个或多个条件以确定是否满足该一个或多个条件中的至少一个条件(动作404)。在一些实施例中,这可以通过如上所述地解封blob来完成。例如,可以计算累积散列值并将其与先前获得的累积散列值进行比较。

如果满足一个或多个条件中的至少一个条件,则该方法还包括:将机密提供给外部实体(动作406)。例如,可以解锁密钥以允许解锁经加密的硬盘驱动器。可以将密钥提供给操作系统,其中操作系统是tpm外部的实体。另一示例可以包括解锁用于解密设备上的特定媒体流(例如从商业流媒体提供商(例如各种视频点播提供商)提供的媒体流)的密钥。

方法400还可以包括,由于确定不满足该一个或多个条件中的至少一个条件,则确定是否需要对一个或多个blob进行更新。例如,对操作系统组件的有效改变可能导致其中一个条件与先前已知的条件不匹配。随后可以对条件进行更新以反映该改变并将密钥重新密封到经更新的条件。

方法400还可以包括:由于确定计算系统处的导致不满足针对blob的对应条件的改变是不可接受的改变,确定不对其对应条件不满足的blob进行更新。例如,可以确定不允许对操作系统进行改变或者某些签名是不足够的。如果条件将被要求回滚,则实施例可以防止重新密封到经更新的条件。

方法400还可以包括,由于确定不满足一个或多个条件中的至少一个条件,则对与不满足的条件相关联的一个或多个blob进行更新。因此,例如,当满足允许提供机密的一个条件、但是不满足另一个条件时,可以对不满足的条件进行更新,以使得会满足条件并且将机密重新密封到经更新的条件。

可以实践方法400,其中至少一个条件涉及签名者的列表,例如,被加载到操作系统中的模块的签名机构。替代地或另外地,可以实践方法400,其中至少一个条件涉及操作系统组件的列表。

方法400还可以包括:对多个blob的条件进行更新。在一些此类实施例中,对条件进行更新是迭代地完成的,以使得利用对条件进行更新之间的中间重启操作来更新两个或更多个不同条件。替代地或另外地,方法400还可以包括:确定已请求在没有中间重启操作的情况下对多个条件中的所有条件更新,并且因此拒绝对一个条件执行至少一个更新。具体而言,执行更新以使得改变所有条件,在下次重新引导时,将不存在可以满足以允许获得机密的条件。因此,一些实施例可以防止所有条件在没有至少两个条件之间的中间重启的情况下被改变。重启将允许对已改变的条件进行更新,同时仍能够基于一个或多个未经改变的条件来恢复机密。一旦重启已发生并且已对已改变的条件进行更新,则可以改变未改变的条件,但仍可以恢复该机密,因为先前已更改的条件已更新以允许满足条件。

现在参考图5,示出了密封机密的计算机实现的方法500。方法500包括:获得机密(动作502)。例如,在一些实施例中,计算系统的硬盘驱动器可以被加密为解密密钥。解密密钥可以是机密。可以将解密密钥提供给tpm。

方法500还可以包括:将机密密封在计算系统的多个blob中的每个不同blob中,以使得多个blob中的每个blob包含机密并且使得多个blob中的每个blob被密封到多个条件中的不同条件(动作504)。给定条件是对系统状态的反映。系统状态指示系统是否可以被信任以接收机密。

方法500还可以包括,由于确定一个或多个条件中的至少一个条件已经改变,则对与已经改变的条件相关联的一个或多个blob进行更新。

可以实践方法500,其中至少一个条件涉及签名者的列表。替代地或另外地,可以实践方法500,其中第一条件和第二条件中的至少一个条件涉及操作系统组件的列表。

此外,该方法可以由包括一个或多个处理器和计算机可读介质(诸如计算机存储器)的计算机系统来实践。具体而言,计算机存储器可以存储计算机可执行指令,这些计算机可执行指令在由一个或多个处理器执行时使得执行各种功能,例如实施例中所记载的动作。

本发明的实施例可以包括或利用包括计算机硬件的专用或通用计算机,如下面更详细地讨论的。本发明范围内的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其它计算机可读介质。这种计算机可读介质可以是能够由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,举例而言而非限制,本发明的实施例可以包括至少两种截然不同的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。

物理计算机可读存储介质包括ram、rom、eeprom、cd-rom或其它光盘存储设备(例如cd、dvd等等)、磁盘存储或其它磁存储设备、或可以用于存储具有计算机可执行代码或数据结构形式的期望程序代码单元并且能够由通用或专用计算机访问的任何其它介质。

“网络”被定义为能够在计算机系统和/或模块和/或其它电子设备之间传输电子数据的一个或多个数据链路。当通过网络或另外通信连接(硬连线、无线、或硬连线或无线的组合)向计算机传输或提供信息时,计算机将连该接适当地视为传输介质。传输介质可以包括可以用于携带具有计算机可执行指令或数据结构形式的期望程序代码单元并且能够由通用或专用计算机访问的网络和/或数据链路。上述的组合也包括在计算机可读介质的范围内。

此外,在到达各种计算机系统组件时,具有计算机可执行指令或数据结构形式的程序代码单元可以自动地从传输计算机可读介质传输到物理计算机可读存储介质(反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可以被缓冲在网络接口模块(例如,“nic”)内的ram中,并且随后最终传输到计算机系统ram和/或计算机系统处的较不易失的计算机可读物理存储介质。因此,计算机可读物理存储介质可以包括在也(或甚至主要)利用传输介质的计算机系统组件中。

例如,计算机可执行指令包括使得通用计算机、专用计算机或专用处理设备执行特定功能或功能集的指令和数据。例如,计算机可执行指令可以是二进制文件、中间格式指令(例如汇编语言)、或者甚至源代码。尽管用特定于结构特征和/或方法动作的语言描述了主题内容,但应理解,所附权利要求书中定义的主题内容不必限于上面描述的特征或动作。相反,所描述的特征和动作被公开为实现权利要求的示例性形式。

本领域技术人员将意识到,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或可编程的消费者电子产品、网络pc、小型计算机、大型计算机、移动电话、pda、寻呼机、路由器、交换机等等。本发明还可以在分布式系统环境中实践,其中通过网络来链接(通过硬连线数据链路、无线数据链路、或通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备中。

替代地或另外地,本文所描述的功能可以至少部分地由一个或多个硬件逻辑组件来执行。例如但不限于,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑器件(cpld)等等。

在不脱离本发明的精神或特征的情况下,本发明可以用其它特定形式来实施。所描述的实施例在所有方面都应被视为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是前述描述来指示。在权利要求的含义和等同范围内的所有变化都包含在其范围内。

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