密钥生成信息树的制作方法

文档序号:15104692发布日期:2018-08-04 16:35阅读:243来源:国知局

计算设备可以包括持久主存储器。如本文所使用的,术语“持久主存储器”和“非易失性主存储器”是指可由处理器直接寻址并且即使当对存储器的电力丢失时也存储数据的存储器。持久主存储器可以用作工作存储器来存储瞬时数据,并且可以用作长期存储来存储持久数据。具有持久主存储器的计算设备可能不需要花费时间来在辅助存储和主存储器之间移动数据。因此,计算设备可能具有比确实花费时间来在辅助存储和主存储器之间移动数据的设备更好的性能。

附图说明

图1是用于解密计算机可读介质上的数据的示例系统的框图。

图2是用于解密计算机可读介质上的数据的另一示例系统的框图。

图3是用于解密计算机可读介质上的数据的又一示例系统的框图。

图4是可以存储在计算机可读介质的元数据区域中的示例树的示意图。

图5是用于在计算机可读介质上生成和存储密钥的示例方法的流程图。

图6是用于在计算机可读介质上生成和存储密钥的另一示例方法的流程图。

图7是包括使得处理器确定用于解密密钥的密钥生成信息的指令的示例计算机可读介质的框图。

图8是包括使得处理器确定用于解密密钥的密钥生成信息的指令的另一示例计算机可读介质的框图。

具体实施方式

具有持久主存储器的计算设备可能造成附加的安全风险。即使在电力丢失之后,持久主存储器可能继续存储敏感或重要的瞬时数据。得到对计算设备的访问权的攻击者可能能够窃取或破坏瞬时数据,如果使该数据留着而未保护的话就是这样。另外,敏感或重要的持久数据可能存储在持久存储器中。攻击者也可能能够窃取或破坏持久数据,如果使该数据留着而未保护的话就是这样。因此,可以对持久主存储器中的持久数据和瞬时数据进行加密以保护持久数据和瞬时数据。

密码引擎可以加密和解密持久主存储器上的数据。如本文所使用的,术语“加密”是指将数据转换为在没有特定密钥的情况下难以获得原始数据所采用的形式。术语“解密”是指使用特定密钥将经加密的数据转换回到其原始形式。术语“难”是指不能执行或在没有大量时间、处理资源或专用工具的情况下不能执行的动作。在示例中,计算设备可以执行软件程序以加密和解密持久主存储器上的数据。然而,软件程序加密和解密数据的时间可能如此缓慢,以致于否定了缘自将辅助存储替换为持久主存储器的任何性能益处。作为代替,计算设备可以包括用于加密和解密持久主存储器上的数据的硬件或固件。例如,硬件或固件可以被包括在片上系统(SoC)中,并且可以在SoC上的存储器控制器和SoC外部的持久主存储器之间。替代地,硬件或固件可以是存储器控制器和持久主存储器之间的存储器路径中的、与SoC分离的设备。

持久主存储器可以被划分成多个区域。每个区域可以通过不同的唯一密钥加密和解密。例如,存储器可以包括未加密但经数字签名的数据、系统数据、用户数据等。使用不同的密钥可以提供更高级别的安全。恶意系统或用户可能不能窃取或破坏来自其他系统或用户的数据,因为恶意系统或用户不具有访问该数据的密钥。密钥可能具有与它们相关联的不同属性。一些密钥可能是可迁移的,并且可能允许用户在适当的情况下将密钥和相关联的数据移动到另一个系统或接收密钥和相关联的数据。其他密钥可能是不可迁移的,并且可能不被提供给用户或其他系统。

在示例中,密钥可以被存储在难以访问或篡改的SoC或密码引擎处的安全位置中。然而,在安全存储中可能没有足够的空间来存储每一个密钥以及相关联的元数据,诸如持久主存储器的哪些区域与每个密钥相关联、密钥是否可迁移等。可用于生成每个密钥和与每个密钥相关联的元数据的信息可以被存储在持久主存储器中。在示例中,元数据和密钥生成信息可以被存储为列表,但是从列表中搜索元数据和密钥生成信息可能是低效的。可以通过将元数据和密钥生成信息高效地存储在持久主存储器中来改善密码引擎的性能。

图1是用于解密计算机可读介质120上的数据的示例系统100的框图。系统100可以包括计算机可读介质120,其可以包括多个区域121、122。计算机可读介质120可以是非暂时性计算机可读介质,诸如易失性计算机可读介质(例如,易失性随机存取存储器(易失性RAM)、处理器高速缓存、处理器寄存器等)、非易失性计算机可读介质(例如,磁存储设备、光存储设备、纸存储设备、闪速存储器、只读存储器、非易失性RAM等)和/或类似物。区域121、122可以是计算机可读介质120中的能够包含数据的不同的位置。

系统100可以包括与计算机可读介质120通信地耦合的密码引擎110。如本文所使用的,术语“引擎”是指硬件(例如,处理器,诸如集成电路或其他电路)或软件(例如,编程,诸如机器或处理器可执行指令、命令,或代码,诸如固件、设备驱动程序、编程、目标代码等)和硬件的组合。硬件包括不具有软件元件的硬件元件,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。硬件和软件的组合包括在硬件处主控的软件(例如,存储在诸如RAM、硬盘或固态驱动器的处理器可读存储器、电阻式存储器、或诸如数字通用盘(DVD)的光学介质处和/或由处理器执行或解释的软件模块)、或在硬件处主控的软件和硬件。

密码引擎110可以存储根密钥。例如,密码引擎110可以将根密钥存储在其中其将对于潜在攻击者不可访问的安全位置中。密码引擎110可以将根密钥存储在密码引擎110内部或密码引擎110外部的安全位置中。密码引擎110可以从存储在计算机可读介质120上的树检索用于多个区域121、122中的一个的密钥生成信息。如本文所使用的,术语“密钥生成信息”是指可以被处理以产生密钥的信息。可能需要诸如另一个密钥、用户凭证等的附加信息来从密钥生成信息产生密钥。术语“树”是指包括多个逻辑链接的数据元素(即节点)的数据结构,其中至少一个数据元素逻辑链接到两个孩子。术语第一节点的“孩子”是指由第一节点引用的第二节点。术语第一节点的“父亲”是指包含对第一节点的引用的第二节点。术语“分支”是指具有多个孩子的父亲的孩子或进一步的后代。

密码引擎110可以生成用于针对其检索密钥生成信息的区域121、122的解密密钥。密码引擎110可以基于密钥生成信息和根密钥来生成解密密钥。在示例中,密钥生成信息可以包括解密密钥的经加密副本。密码引擎110可以使用根密钥或根密钥的后代来对解密密钥的经加密副本进行解密。替代地或另外,解密密钥可以最初使用随机数从根密钥或后代导出。密钥生成信息可以包括随机数。密码引擎110可以基于根密钥和密钥生成信息来重新导出解密密钥。密码引擎110可以使用解密密钥来解密来自针对其检索密钥生成信息的区域121、122的数据。密码引擎110可以从区域121、122检索经加密数据并且使用解密密钥来解密数据。

图2是用于解密计算机可读介质220上的数据的另一示例系统200的框图。系统200可以包括计算机可读介质220和与计算机可读介质220通信地耦合的SoC 210。计算机可读介质220可以包括多个区域221-225。例如,计算机可读介质220可以包括包含元数据221的区域、包含第二阶段启动加载器(SSBL)222的区域、包含操作系统(0S)和文件系统(FS)223(例如,文件系统元数据)的区域、包含用户数据224的区域、以及包含瞬时数据225的区域。在所图示的示例中,SoC 210可以包括密码引擎211、持久存储212、易失性存储213、存储器控制器214和第一阶段启动加载器(FSBL)215。在其他示例中,密码引擎211、持久存储212、易失性存储213、存储器控制器214或FSBL 215可以不被包括在SoC 210中。SoC 210可以包括处理器,诸如微处理器(未示出)。

SoC 210可以存储根密钥。例如,根密钥可以存储在持久存储212、密码引擎211等中。持久存储212或密码引擎211可以具有使得攻击者难以读取或篡改根密钥的保护。密码引擎211可以不使根密钥在SoC 210之外可用。例如,密码引擎211可以不将根密钥保存在计算机可读介质220上。根密钥可以在制造、第一次启动等期间被生成并存储。在示例中,持久存储212可以包括一次性可编程电子熔丝以存储根密钥。

密码引擎211可以从存储器控制器214接收对特定存储器位置中的数据的请求。密码引擎211可以从元数据区域221中的树检索与特定存储器位置相关联的密钥生成信息。元数据区域221可以指示哪些存储器位置与每个区域相关联以及哪些密钥生成信息与每个区域相关联。在示例中,密钥生成信息可以直接与可以使用密钥生成信息来解密的存储器位置相关联。

元数据区域221可以是明文。如本文所使用的,术语“明文”是指未加密的数据。元数据区域221可以被数字签名。如本文所使用的,术语“数字签名”是指生成与正被签名的数据对应的信息,该信息在没有特定密钥或利用不同数据的情况下难以生成。元数据区域221可以使用消息认证码或非对称密钥来数字签名。密码引擎211可以在依赖于其中包含的信息(例如,密钥生成信息、区域和密钥生成信息之间的关系等)之前认证元数据区域221。如本文所使用的,术语“认证”是指确定数字签名对应于由其据称签名的数据并且特定密钥生成了数字签名。认证元数据区域221可以确保对元数据区域221仅进行经授权的修改。在示例中,可以使用平台密钥对元数据区域221进行数字签名和认证。用于平台密钥的密钥生成信息可以存储在元数据区域221中,并且平台密钥可以基于根密钥和密钥生成信息来导出。

密码引擎211可以基于根密钥和密钥生成信息来生成解密密钥。解密密钥可以是对称密钥或非对称密钥。在示例中,密钥生成信息包括解密密钥的经加密副本,并且密码引擎211可以通过例如使用根密钥对经加密副本进行解密来生成解密密钥。替代地或另外,密钥生成信息可以是先前生成的随机数。随机数可以已经例如与根密钥或后代组合以产生用于加密计算机可读介质220的特定存储器位置的密钥。密码引擎211可以以相同的方式组合密钥生成信息与根密钥或后代以产生用于特定存储器位置的解密密钥。

密码引擎211可以将生成的解密密钥存储在易失性存储213中。如果电力丢失,则可以从易失性存储213擦除解密密钥,并且密码引擎211可能必须在电力恢复时再次生成解密密钥。密码引擎211可以检索由存储器控制器214指示的特定存储器位置中的数据。密码引擎211可以使用解密密钥来解密来自特定存储器位置的数据。密码引擎211可以将解密的数据传送到存储器控制器214。解密密钥可以在解密之后保留在易失性存储213中,或者可以被丢弃。在示例中,解密密钥可以在最后一次使用之后的预定时间、第一次使用之后的预定时间、在易失性存储213中需要附加空间时等被丢弃。如果在任何时候接收到不正确的密语,则可以丢弃与用户配置的密语相关联的解密密钥。

树可以包括多个级别。如本文所使用的,术语“级别”是指离根节点相同距离的一组节点(例如,根节点的孩子、根节点的孙子等)。在示例中,只有从叶节点生成的密钥用于加密和解密数据。如本文所使用的,术语“叶节点”是指没有孩子的节点。在替代的示例中,非叶节点也可以或者作为代替用于加密和解密数据。中间节点(即,既不是根节点也不是叶节点的节点)可以用于生成用于中间节点的孩子的密钥。例如,可以基于来自对应中间节点的密钥生成信息和根密钥来生成中间密钥,并且可以基于来自中间节点的孩子的密钥生成信息和中间密钥来生成解密密钥。节点中的全部或一些可以包括密钥生成信息。在示例中,除了根节点之外的每一个节点都包括密钥生成信息。替代地或另外,只有叶节点可以包括密钥生成信息。

在示例中,树可以包含包括用于生成平台密钥的信息的分支、包括用于生成系统密钥的信息的分支、包括用于生成用户密钥的信息的分支、以及用于生成易失性密钥的分支。密码引擎211可以使用不同的密钥来对计算机可读介质220的不同区域221-225进行加密、解密、数字签名、或认证。例如,元数据区域221可以是明文,但可以利用平台密钥来数字签名。OS和FS区域223可以利用系统密钥或用户密钥来加密。用户数据区域224可以利用用户密钥来加密。瞬时数据区域225可以利用易失性密钥来加密。

密码引擎211可以基于密钥的使用来不同地管理密钥。例如,密码引擎211可能要求用户正确地输入密语以使用用户密钥。密码引擎211可以在从对应的密钥生成信息生成用户密钥之前验证用户配置的密语是正确的。替代地或另外,除了密钥生成信息之外,密码引擎211可以基于密语来生成用户密钥,并且正确的密语可以生成正确的用户密钥。在一些示例中,密码引擎211可以基于接收到正确的密语而生成系统密钥。

一些密钥可以是可迁移的或可恢复的,并且其他密钥是不可迁移的或不可恢复的。如本文所使用的,术语“可迁移的”是指密钥被允许从一个设备安全地移动到另一个设备。对于可迁移的密钥,用户可能能够将经加密的数据和密钥迁移到另一个设备。例如,该迁移可以通过将可迁移的密钥从源设备可信平台模块(TPM)安全地移动到目标设备TPM来完成。如本文所使用的,术语“可恢复的”是指即使用户忘记对于生成密钥所需的密语也可以生成的密钥。例如,用户可以重置忘记的密语并且能够基于重置的密语来生成密钥。在示例中,系统密钥或用户密钥可以是可迁移的或可恢复的。

用户可以将计算机可读介质220移动到另一个计算系统(未示出)或者可以在另一个计算系统上制作计算机可读介质220的块对块副本。可迁移的密钥可以允许另一个计算系统访问相关联的数据。在示例中,平台密钥可能是不可迁移的,因此另一个计算系统可能不能认证元数据区域221。另一个计算系统可能需要与计算机可读介质220或复制的数据配对。例如,另一个计算系统可以对元数据区域221进行数字签名,由此保证其不受修改。用户可以控制对计算机可读介质220或副本的访问,直到另一个计算系统已经配对,以防止未经授权的修改。

密码引擎211可以确保当系统200关闭时忘记(例如,瞬时数据区域225中的)瞬时数据。由于计算机可读介质220可以是非易失性的,所以密码引擎211可以确保当系统200关闭时忘记用于解密瞬时数据的易失性密钥。经加密的瞬时数据225可以保留在计算机可读介质220上,但是可能是不可读的并且因此在没有易失性密钥的情况下被有效地忘记。在示例中,用于易失性密钥的密钥生成信息可以不被存储在元数据区域221中。易失性密钥可以被存储在易失性存储213中并且因此当电力被移除时从其擦除。如果系统200进入休眠状态,则用于易失性密钥的密钥生成信息可以被存储在计算机可读介质220上。例如,用于易失性密钥的密钥生成信息可以被保存在树中。替代地或另外,用于易失性密钥的密钥生成信息可以与树分离保存。在示例中,易失性密钥可以通过平台密钥加密并存储在与树分离的元数据区域221中。易失性密钥可以在从休眠状态唤醒时被重新生成。

当从关闭状态启动时,可以首先从FSBL 215读取启动代码。在一些示例中,FSBL 215可以被信任。例如,FSBL 215可以被存储在不可变的只读存储器、SoC 210上的非易失性存储等中,并且因此可能难以修改。因此,在一些示例中,来自FSBL 215的代码可以在不认证它的情况下执行。来自FSBL 215的代码可以是明文。SSBL 222可以利用来自供应商的密钥(诸如供应商私钥)进行数字签名。FSBL 215可以包括用于认证SSBL 222的数字签名的密钥,诸如供应商公钥。如果SSBL 222被认证,则可以执行来自SSBL 222的代码。来自SSBL 222的代码可以是明文。

可以在启动期间生成密钥或密钥生成信息。在制造之后或工厂重置之后的第一次启动时,密码引擎211可以生成平台密钥或系统密钥并且将用于生成的平台密钥或系统密钥的密钥生成信息存储在元数据区域221中的树中。在示例中,密码引擎211可以确定平台密钥或系统密钥是否存在,并且如果其不存在则生成平台密钥或系统密钥。可以在每次启动期间生成易失性密钥。用于易失性密钥的密钥生成信息可以或可以不被存储在元数据区域221中的树中。

图3是用于解密计算机可读介质320上的数据的又一示例系统300的框图。系统300可以包括计算机可读介质320和包括密码引擎311的分立硬件310。处理器芯片330可以包括存储器控制器331和FSBL332。分立硬件310可以位于存储器控制器331和计算机可读介质320之间的路径中。密码引擎311可以加密或解密在存储器控制器331和计算机可读介质320之间传输的数据。

分立硬件310可以包括持久存储312和易失性存储313。密码引擎311可以将密钥存储在持久存储312或易失性存储313中。例如,密码引擎311可以将根密钥存储在持久存储312中并且将基于元数据区域321中的信息所生成的密钥存储在易失性存储313中。计算机可读介质320可以包括多个区域321-325,其可以被用不同的密钥来加密或数字签名。用于生成每个密钥的信息可以被存储在元数据区域321中的树中。

图4是可以存储在计算机可读介质的元数据区域中的示例树400的示意图。级别、分支和节点的数量可以在其他示例中变化。树400可以包括根节点410。在所图示的示例中,根节点410可以不包括密钥生成信息。例如,根密钥可以存储在其他地方,诸如存储在可信持久存储中,并且可能不需要被生成。根节点410可以包括对多个孩子节点421、425的引用。

孩子节点421、425可以包括不可迁移密钥节点421和可迁移密钥节点425。不可迁移密钥节点421可以包括用于不可迁移密钥的密钥生成信息,并且可迁移密钥节点425可以包括用于可迁移密钥的密钥生成信息。不可迁移密钥和可迁移密钥可以不存储在树400中,而是作为代替可以基于对应的密钥生成信息和根密钥来生成。不可迁移密钥或可迁移密钥可以基于随机数、基于密钥导出函数、通过解密不可迁移密钥或可迁移密钥的经加密副本等来生成。例如,不可迁移密钥和可迁移密钥可以是随机数,并且密钥生成信息可以是利用根密钥加密的不可迁移密钥和可迁移密钥的副本。替代地或另外,数字(例如,随机数)可以与密钥导出函数一起使用以从根密钥导出不可迁移密钥和可迁移密钥,并且密钥生成信息可以包括与密钥导出函数一起使用的数字。密钥导出函数可以是不可逆的和不可预测的,因此如果不可迁移密钥或可迁移密钥被攻击者损害(compromise),则不能获得根密钥。

在示例中,不可迁移密钥和可迁移密钥可以不用于加密或解密数据,而是作为代替用于生成不可迁移密钥节点421和可迁移密钥节点425的孩子节点431-437的密钥。在示例中,不可迁移密钥节点421的孩子节点可以包括主平台密钥节点431和主易失性密钥节点433。可迁移密钥节点425的孩子节点可以包括主系统密钥节点435和主用户密钥节点437。可以分别基于来自主平台密钥节点431或主易失性密钥节点433的密钥生成信息和不可迁移密钥来生成主平台密钥或主易失性密钥。可以分别基于来自主系统密钥节点435或主用户密钥节点437的密钥生成信息和可迁移密钥来生成主系统密钥或主用户密钥。与可迁移密钥节点425的孩子、孙子等相关联的密钥或与这些密钥相关联的数据可以可移动到另一个设备。可以限制与不可迁移密钥节点421的孩子、孙子等相关联的密钥或与这些密钥相关联的数据被移动到另一个设备。

主平台密钥、主易失性密钥、主系统密钥和主用户密钥也可以不用于加密或解密数据,而是作为代替用于生成主密钥节点431-437的孩子节点441-448的密钥。例如,可以基于来自平台密钥节点441的密钥生成信息和主平台密钥来生成平台密钥。平台密钥可以用于加密或解密持久平台数据、签名元数据等。在一些示例中,平台密钥可以在制造之后或者工厂重置之后的计算设备的第一次启动期间生成。在示例中,可以在没有用户输入(例如,用户密语)的情况下生成平台密钥。

可以基于来自易失性密钥节点443、444的密钥生成信息和主易失性密钥来生成易失性密钥。易失性密钥可以用于加密或解密瞬时数据等。在示例中,易失性密钥可以在计算设备的每一次完全启动时被重新生成,并且当计算设备进入关闭状态时被忘记。可以在计算设备进入待机状态时存储易失性密钥(例如,易失性密钥的经加密副本)或密钥生成信息,以考虑到在从待机状态的恢复期间或之后对瞬时数据的访问。

可以基于来自系统密钥节点445、446的密钥生成信息和主系统密钥来生成系统密钥。系统密钥可以用于加密或解密系统数据(例如,操作系统数据、文件系统元数据等)等。系统密钥可以在制造之后、工厂重置之后、对操作系统的更新之后等的计算设备的第一次启动期间被生成。在一些示例中,可以基于用户配置的密语来生成系统密钥,或者用户配置的密语对于生成系统密钥可能是需要的。系统密钥或相关联的数据可以是可迁移的或可恢复的。

可以基于来自用户密钥节点447、448的密钥生成信息和主用户密钥来生成用户密钥。用户密钥可以用于加密或解密用户数据。在示例中,每个密钥可以与用户相关联。用户密钥可以响应于用户请求而生成,并且可以包含用户配置的密语。例如,除了主用户密钥和密钥生成信息之外,还可以基于用户配置的密语来生成用户密钥,或者用户配置的密语对于生成用户密钥可能是需要的。用户密钥或相关联的数据可以是可迁移的或可恢复的。

主密钥节点431-437的孩子节点441-448可以是树400的叶节点。叶密钥(例如平台密钥、易失性密钥、系统密钥和用户密钥)、中间密钥(例如不可迁移密钥、可迁移密钥、主平台密钥、主易失性密钥、主系统和主用户密钥)、或根密钥可以是对称的或非对称的。在一些示例中,根密钥和中间密钥仅用于加密、解密或导出孩子密钥,并且叶密钥仅用于加密或解密数据。替代地或另外,根密钥、中间密钥或叶密钥中的一些或全部可以用于生成孩子密钥以及加密或解密数据。在示例中,树400可以被存储在图2的元数据区域221中。

图5是用于在计算机可读介质上生成和存储密钥的示例方法500的流程图。处理器可以执行方法500。块502可以包括确定计算设备正第一次被启动。计算设备可以包括计算机可读介质。在示例中,计算机可读介质可以是非易失性主存储器。确定计算设备正第一次被启动可以包括确定计算机可读介质的元数据区域缺少信息。例如,元数据区域可能不包括密钥、计算设备先前已经被启动的指示等。确定计算设备正第一次被启动可以在启动计算设备的同时执行。

在块504处,该方法可以包括生成用于加密包含系统数据的计算机可读介质的区域的系统密钥并生成用于加密包含用户数据的计算机可读介质的区域的用户密钥。在示例中,可以在启动期间生成系统密钥或用户密钥。替代地或另外,系统密钥或用户密钥可以基于接收到生成系统密钥或用户密钥的用户请求而生成。生成系统密钥或用户密钥可以包括导出系统密钥或用户密钥或随机选择系统密钥或用户密钥。

块506可以包括将用于生成系统密钥的信息存储在计算机可读介质上的树的第一分支中,并且将用于生成用户密钥的信息存储在与第一分支不同的树的第二分支中。存储信息可以包括指示计算机可读介质存储信息。用于生成系统密钥或用户密钥的信息可以包括可用于从根密钥导出系统密钥或用户密钥的信息、系统密钥或用户密钥的经加密副本等。第一分支和第二分支来源于的节点可以是包含用于生成系统密钥或用户密钥的信息的节点的父亲、祖父、曾祖父等。在示例中,图1的密码引擎110可以执行块502-506,并且计算机可读介质上的树可以是图4的树400。

图6是用于在计算机可读介质上生成和存储密钥的另一示例方法600的流程图。在块602处,方法600可以包括确定包括计算机可读介质的计算设备正第一次被启动。例如,可以通过分析计算机可读介质的元数据区域来确定计算设备正第一次被启动。块604可以包括基于根密钥生成可迁移密钥,基于可迁移密钥生成主系统密钥,以及基于主系统密钥生成系统密钥。例如,可迁移密钥可以基于根密钥导出;主系统密钥可以基于可迁移密钥导出;并且系统密钥可以从主系统密钥导出。在示例中,可以使用密钥导出函数来导出密钥。

块606可以包括接收用户配置的密语。例如,用户可能希望创建关于计算机可读介质的相关联区域的新用户账户以存储用于新用户账户的数据。用于新用户账户的密语可以由用户输入并且可以从用户接口、处理器等接收。在块608处,方法600可以包括基于用户配置的密语生成用户密钥。例如,用户密钥可以基于根密钥、用户配置的密语和附加的密钥生成信息来导出。

在块610处,方法600可以包括将用于生成系统密钥的信息存储在计算机可读介质上的树的第一分支中,并且将用于生成用户密钥的信息存储在与第一分支不同的树的第二分支中。在示例中,用于从根密钥生成可迁移密钥的信息可以被存储为根节点的孩子。用于从可迁移密钥生成主系统密钥的信息可以被存储为可迁移密钥节点的孩子(例如,根节点的孙子)。用于从主系统密钥生成系统密钥的信息可以被存储为主系统密钥节点的孩子(例如,根节点的曾孙)。类似地,用于生成用户密钥的信息可以被存储为可迁移密钥节点的孙子和主用户密钥节点的孩子。

块612可以包括生成用于加密包含瞬时数据的计算机可读介质的区域的易失性密钥。易失性密钥可以在计算设备的启动期间生成。易失性密钥可以从根密钥导出。例如,易失性密钥可以从主易失性密钥导出,主易失性密钥可以从不可迁移密钥导出。不可迁移密钥可以从根密钥导出。块614可以包括确定计算设备正在进入休眠状态。例如,计算设备的处理器可以决定计算设备应进入休眠状态,或者用户可以向处理器指示计算设备应进入休眠状态。可以从处理器接收设备正在进入休眠状态的指示。

块616可以包括将用于生成易失性密钥的信息存储在树的第三分支中。基于确定计算设备正在进入休眠状态,用于生成易失性密钥的信息可以被存储在第三分支中。在示例中,用于基于根密钥生成不可迁移密钥的信息可以被存储为根节点的孩子。用于基于不可迁移密钥生成主易失性密钥的信息可以被存储为不可迁移密钥节点的孩子(例如,根节点的孙子)。用于基于主易失性密钥生成易失性密钥的信息可以被存储为主易失性密钥节点的孩子(例如,根节点的曾孙)。替代地或另外,用于生成易失性密钥的信息可以被存储在与树分离的位置中。例如,易失性密钥的经加密副本可以被存储在与树分离的位置中。在示例中,图2的密码引擎211可以执行块602-616,并且计算机可读介质上的树可以是图4的树400。

图7是包括指令的示例计算机可读介质700的框图,所述指令在由处理器702执行时使得处理器702确定用于解密密钥的密钥生成信息。计算机可读介质700可以是非暂时性计算机可读介质,诸如易失性计算机可读介质(例如易失性RAM、处理器高速缓存、处理器寄存器等)、非易失性计算机可读介质(例如,磁存储设备、光存储设备、纸存储设备、闪速存储器、只读存储器、非易失性RAM等)和/或类似物。处理器702可以是通用处理器或专用逻辑,诸如微处理器、数字信号处理器、微控制器、ASIC、FPGA、可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、可编程逻辑器件(PLD)等。

计算机可读介质700可以包括存储器控制器接口模块710。如本文所使用的,“模块”(在一些示例中,被称为“软件模块”)是一组指令,所述指令在由处理器执行或解释或存储在处理器可读介质处时实现组件或执行方法。存储器控制器接口模块710可以包括使得处理器702接收对数据的请求的指令。例如,可以从存储器控制器接收对数据的请求。存储器控制器接口模块710可以使得处理器702从请求提取用于数据的地址。

计算机可读介质700可以包括区域确定模块720。区域确定模块720可以使得处理器702基于元数据确定包含数据的区域。例如,元数据可以被包含在另一个计算机可读介质(未示出)、计算机可读介质700等中。元数据可以包括指示哪些数据地址与哪些区域相关联的数据结构。区域可以是其他计算机可读介质的区域、计算机可读介质700的区域等。区域确定模块720可以使得处理器702在元数据中查找所请求的数据的地址以确定哪个区域与地址相关联。

计算机可读介质700可以包括树遍历模块730。树遍历模块730可以使得处理器702遍历元数据中的树以确定将用于区域的解密密钥与根密钥相关的密钥生成信息。在示例中,一些区域可以与密钥相关联。例如,树的每个叶子可以包括用于相关联区域的密钥生成信息。替代地或另外,中间节点或根节点可以包括用于相关联区域的密钥生成信息。密钥生成信息可以可用于从根密钥生成解密密钥。树遍历模块730可以使得处理器702通过从树检索密钥生成信息来确定密钥生成信息。在示例中,树遍历模块730可以使得处理器702从根节点之后的、由处理器702遍历的树中的每个节点检索密钥生成信息。在示例中,存储器控制器接口模块710、区域确定模块720或树遍历模块730在由处理器702执行时可以实现图1的密码引擎110。

图8是包括指令的示例计算机可读介质800的框图,所述指令在由处理器802执行时使得处理器802确定用于解密密钥的密钥生成信息。计算机可读介质800可以包括使得处理器802接收对数据的请求的存储器控制器接口模块810。计算机可读介质800还可以包括使得处理器802基于元数据确定包含数据的区域的区域确定模块820。

另外,计算机可读介质800可以包括树遍历模块830。树遍历模块830可以使得处理器802遍历元数据中的树以确定将用于区域的解密密钥与根密钥相关的密钥生成信息。在示例中,树可以包括用于可迁移密钥的分支和用于不可迁移密钥的分支。可迁移密钥可以是针对其计算机可读介质800将使得处理器802响应于将密钥、由密钥解密的数据等提供给用户的适当请求而这样做的密钥。不可迁移密钥可以是针对其计算机可读介质800将使得处理器802拒绝用于输出密钥、由密钥解密的数据等的任何请求的密钥。

在示例中,树可以包括用于多个系统密钥的多个分支和用于多个用户密钥的多个分支。例如,可以存在多个操作系统、多个文件系统等,并且每个操作系统或文件系统可以与系统密钥相关联。也可以存在或作为代替可以存在多个用户,并且每个用户可以与用户密钥相关联。每个系统和每个用户可以与另一个计算机可读介质(未示出)、计算机可读介质800等中的区域相关联。当请求用于与特定系统或用户相关联的区域的数据时,区域确定模块820可以使得处理器802确定该区域,并且树遍历模块830可以使得处理器802确定可用于生成解密密钥以解密该区域的密钥生成信息。

密钥生成信息可以包括可用于从根密钥计算用于数据的解密密钥的随机数。例如,树遍历模块830可以使得处理器802将随机数视为输入的密钥导出函数来导出解密密钥。树遍历模块830可以使得处理器802在遍历树时检索随机数。在示例中,除了根节点之外的树的每个节点可以包括可用于导出与该节点相关联的密钥的随机数。树遍历模块830可以使得处理器802通过使用用于当前节点的密钥生成信息作为对密钥导出函数的输入将密钥导出函数应用于与父亲节点相关联的密钥来导出用于当前节点的密钥。树遍历模块830可以使得处理器802生成用于除了根节点之外的遍历的每个节点的密钥,直到其到达与对于解密数据所需的解密密钥相关联的节点。在示例中,树遍历模块830可以使处理器802遍历树直到其到达叶节点。计算机可读介质800可以使得处理器802使用解密密钥来解密数据。

计算机可读介质800可以包括元数据认证模块840。元数据认证模块840可以使得处理器802认证元数据。例如,元数据认证模块840可以使得处理器802在确定区域之前、在遍历树之前、在利用解密密钥解密所请求的数据之前等认证元数据。在示例中,元数据认证模块840可以使得处理器802基于平台密钥来认证元数据。树遍历模块830可以使得处理器802遍历树以确定将平台密钥与根密钥相关的密钥生成信息,并基于密钥生成信息和根密钥来生成平台密钥。参考图2,例如,存储器控制器接口模块810、区域确定模块820、树遍历模块830或元数据认证模块840在由处理器802执行时可以实现密码引擎211。

以上描述是对本公开的各种原理和实现的说明。一旦完全理解以上公开,许多变化和修改将对于本领域技术人员变得显而易见。因此,本申请的范围应仅由以下权利要求确定。

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