认证变量的管理

申请号 CN201910277013.6 申请日 2015-06-25 公开(公告)号 CN109918919B 公开(公告)日 2023-06-20
申请人 英特尔公司; 发明人 V·J·齐默; N·J·亚当斯; G·P·姆督苏鲁; L·G·罗森鲍姆; M·A·罗斯曼;
摘要 本 申请 提供了认证变量的管理。 实施例 包括一种装置,所述装置包括:耦合至安全非易失性存储设备的带外密码处理器;以及其上存储有 固件 指令的至少一个存储介质,所述固件指令用于在运行时期间且在所述装置的 操作系统 已经引导之后使得所述密码处理器:(a)将密钥存储在所述安全非易失性存储设备内,(b)当所述密钥在所述密码处理器内时用所述密钥对对象进行签名以产生签名,并且(c)验证所述签名。在此对其他实施例进行描述。
权利要求

1. 一种计算装置,包括:
处理器;以及
密码处理器,所述密码处理器用于:
验证对象的签名,以及
在所述装置的预引导操作期间执行指令,
其中,所述密码处理器用于在操作系统不是正在访问所述密码处理器的情况下被访问,并且
其中,所述对象包括统一可扩展固件接口UEFI变量,并且所述密码处理器是以固件和硬件中的至少一者实现的可信产品模TPM。
2.如权利要求1所述的计算装置,进一步包括:
安全非易失性存储,用于存储密钥,
其中,所述安全非易失性存储被包括在所述密码处理器中。
3.如权利要求2所述的计算装置,其中,所述密钥是私钥,其中,所述私钥与公钥相关联,并且其中,所述密码处理器在所述密码处理器外部传递所述公钥同时将所述私钥留存在所述密码处理器内。
4.如权利要求1所述的计算装置,其中,所述密码处理器在所述密码处理器内创建所述对象。
5.如权利要求1所述的计算装置,其中,所述密码处理器在所述密码处理器内创建密钥。
6.如权利要求1所述的计算装置,其中,所述密码处理器在所述处理器带外。
7.一种计算方法,包括:
访问设备的密码处理器;
使所述密码处理器验证对象的签名;
使所述密码处理器在所述设备的预引导操作期间执行指令;以及
在操作系统不是正在访问所述密码处理器的情况下访问所述密码处理器,其中,所述对象包括统一可扩展固件接口UEFI变量,并且所述密码处理器是以固件和硬件中的至少一者实现的可信产品模块TPM。
8.如权利要求7所述的计算方法,进一步包括:
将密钥存储在所述密码处理器中所包括的安全非易失性存储中。
9.如权利要求8所述的计算方法,其中,所述密钥是私钥,其中,所述私钥与公钥相关联,其中,所述方法进一步包括:
由所述密码处理器在所述密码处理器外部传递所述公钥同时将所述私钥留存在所述密码处理器内。
10.如权利要求7所述的计算方法,进一步包括:
由所述密码处理器在所述密码处理器内创建密钥和所述对象。
11.如权利要求7所述的计算方法,其中,所述密码处理器在所述设备的处理器带外。
12.至少一种非瞬态存储介质,具有存储于其上的固件指令,所述固件指令能够被执行以进行以下操作:
访问设备的密码处理器;
使所述密码处理器验证对象的签名;
使所述密码处理器在所述设备的预引导操作期间执行指令;以及
在操作系统不是正在访问所述密码处理器的情况下访问所述密码处理器,其中,所述对象包括统一可扩展固件接口UEFI变量,并且所述密码处理器是以固件和硬件中的至少一者实现的可信产品模块TPM。
13.如权利要求12所述的至少一种非瞬态存储介质,所述固件指令能够被执行以进行以下操作:
使所述密码处理器将密钥存储在所述密码处理器的安全非易失性存储中。
14.如权利要求13所述的至少一种非瞬态存储介质,其中,所述密钥是私钥,其中,所述私钥与公钥相关联,其中,所述固件指令能够被执行以进行以下操作:
使所述密码处理器在所述密码处理器外部传递所述公钥同时将所述私钥留存在所述密码处理器内。
15.如权利要求12所述的至少一种非瞬态存储介质,其中,所述密码处理器在所述设备的处理器带外。
16.一种计算设备,包括用于执行如权利要求7至11中任一项所述的方法的装置。

说明书全文

认证变量的管理

[0001] 本申请是PCT国际申请号为PCT/US2015/037600、国际申请日为2015年6月25日、进入中国国家阶段的申请号为201580028293.7,题为“认证变量的管理方法和装置”的发明专利申请的分案申请。

技术领域

[0002] 实施例解决了可信计算。

背景技术

[0003] 基本输入/输出系统(BIOS)软件是用于引导(即,执行引导操作,如加载并启动操作系统(OS)、测试硬件等)并在计算机系统中执行低层操作的低层软件。可以使用统一可扩** **展固件接口(UEFI)开源标准(例如,在www uefi org/specs/处可获得的UEFI规范版本
2.4)实现BIOS(或模拟低层软件),所述开源标准是定义了操作系统(OS)和平台固件(持久性存储器与存储在所述持久性存储器中的程序代码和数据的组合)之间的软件接口的规范。UEFI包括被称为UEFI变量的成分,这些成分用于UEFI安全引导技术中。UEFI变量用于保存MRC(存储器参考代码)配置数据、PCH(平台控制中枢)配置数据、SA(系统代理)配置数据、密钥等。UEFI安全引导技术是标准化的(例如,UEFI2.3.1c规范),并且一些UEFI技术用开源** **
安排(例如,edk2 sourceforge net)来实现。
[0004] 可信平台模(TPM)是硬件设备,所述硬件设备是添加有密码功能的安全微控制器/密码处理器。它与用于防止对计算节点的未授权访问的支持软件和固件一起工作。TPM包含用于执行加密/解密的硬件引擎。在数字签名和密钥包装操作期间,TPM使用其内置的加密引擎。
[0005] 尽管高级引导软件协议(例如,UEFI安全引导)和安全密码处理器(例如,TPM)可用,但是恶意软件等仍然对真正的可信计算造成了威胁。附图说明
[0006] 从所附权利要求书、对一个或多个示例实施例的以下详细说明、以及相应附图中,本发明实施例的特征和优点将变得显而易见,在附图中:
[0007] 图1包括本发明关于使能/禁用安全区域(Secure Enclave)的实施例的过程。
[0008] 图2包括本发明关于变量(UEFI变量)存储的反回退的实施例的过程。
[0009] 图3包括本发明关于在多个OS之间进行安全切换的实施例的过程。
[0010] 图4包括本发明用于当固件正试图访问安全密码处理器时避免OS与固件之间冲突的实施例的过程。
[0011] 图5包括用于本发明实施例的系统。

具体实施方式

[0012] 在以下说明中,提出了许多特定细节,但是可以在没有这些特定细节的情况下实践本发明的实施例。未详细示出公知的电路、结构和技术,以避免模糊对本说明书的理解。“一个实施例”、“各实施例”等指示这样描述的一个或多个实施例可以包括具体特征、结构、或特性,但并不是每个实施例必定包括这些具体特征、结构、或特性。某些实施例可具有针对其他实施例所描述的特征的一部分、全部、或不具有任何这些特征。“第一”、“第二”、“第三”等描述了共同对象并指示正提及的相似对象的不同实例。此类形容词并不暗示这样描述的对象在或者时间上、空间上、排名上、或以其他方式必须按照给定的顺序。
[0013] 实施例提供了对密码处理器(例如,TPM 2.0)和密码处理器的签名服务的运行时访问,因此固件可以使用密码处理器创建在密码处理器内部的密钥,使用所述密钥对对象(例如,UEFI变量)进行签名,并且然后验证这个签名。这使能了至少三种使用情况。首先,使用情况包括使能/禁用可信执行环境的能,比如但不限于: 安全区域(有时称为软件防护扩展( SGX))、 管理引擎( ME)等。第二,另一种使用情况包括变量回退保护。这通过将所述一个或多个变量以密码方式绑定(例如,使用密码散列)至密码处理器(例如,绑定至位于密码处理器内的安全存储器,从而使得当SMM中的UEFI代码无法担当内容的保护者或防护时,密码处理器在电力循环期间可以充当对正在被掺杂的SPI闪存的完整性检查),可以有助于制止对某些存储器区域(例如,存储在串行外围接口(SPI)闪存存储器中的UEFI变量)上的离线攻击。在美国专利号6,848,046(已转让给美国加利福尼亚州圣克拉拉市的英特尔公司)中可以找到关于SMM的UEFI/PI使用的更多信息。第三,又另一种使用情况包括在运行时期间访问密码处理器使得密码处理器操纵(例如,切换)变量的固件,所述固件在针对另一操作系统进行交换时使能/禁用一个操作系统(OS)(例如,在运行于单个平台上的两个OS之间切换)。这种实施例可以进一步包括在运行时期间访问密码处理器使得密码处理器为第一OS分配第一数量的存储器并为第二OS分配第二数量的存储器的固件。现在接下来是对关于各实施例的更加详细的讨论。
[0014] 对由密码处理器签名的变量的运行时访问和/或操纵
[0015] 上文提到了UEFI变量。UEFI变量易受恶意活动的影响。确切地,原始设备制造商(OEM)/独立BIOS销售商(IBV)将变量数据存储在闪存区域中并使用系统管理模式(SMM)维持变量数据的完整性(即,不存在保密性控制,因此任何人都可以读取,但只有可信实体可以写入)。从而,这些变量易受恶意活动影响,如“Shack攻击”,这是一种低预算硬件攻击,其中攻击者对设备进行物理访问,但没有足够的设备或专家在集成电路封装的内部进行攻击。这些攻击者试图使用JTAG调试、边界扫描I/O、和内置自测试设施连接至所述设备。他们可使用逻辑探头和网络分析仪来探听总线线路、引脚和系统信号来被动地监视所述系统。攻击者还可能能够进行简单的主动硬件攻击,如强迫引脚和总线线路处于高电压低电压,对存储器设备进行重新编程,并用恶意替代物来代替硬件部件。其他威胁包括“ROM swipe”/“replacement”类型攻击等,如例如黄欣国(Bunnie Huang)的XBOX1攻击(例如,见***
http:// .uefidk.com/sites/default/files/resources/Platform_Security_Review_Intel_Cisco_White_Paper.pdf的第18页)中所描述的。
[0016] 为了更好地保护这些变量,实施例通过使用密码处理器进行签名并验证那些变量或保持密码校验和(如TPM NVData中变量的SHA256散列)来将UEFI变量(和用于存储配置信息等的模拟容器或机制)以密码方式绑定至平台。这是可能的,因为例如TPM标准版本2.0支持平台层级结构,并且结果是,平台固件(如半导体集成代码(SIC))和OS都可以使用TPM,这与之前的TPM标准(例如,只有OS可以使用TPM的TPM标准1.2)的情况不同。结果是,(固件需要访问的)UEFI变量可以由TPM在运行时期间进行签名和/或由UEFI PI SMM代码进行散列,并且随后的散列值存储在TPM中(以便进行后续的与在重新引导时生成的散列进行比较,从而观察TPM中的值和从SPI闪存导出的值是否“相同”)。TPM还具有用于管理对已签名变量的访问/操纵的机制。例如,TPM具有较强的访问控制(例如,用于防止读取变量的读定以及用于防止向变量写入的写锁定)。从而,TPM可以例如对变量实现READ_LOCK保护(为了保密性)和WRITE_LOCK保护(为了完整性)。
[0017] 如下面将进一步阐述的,实施例包括将私钥存储于TPM中。所述密钥可以用于对UEFI变量(或任何其他数据)进行签名。结果是,不需要保密性声明,并且只需要完整性保护。这提升了在目标平台上针对可信实体对数据进行安全签名的能力。在实施例中,可信实体是SMM。在这种实施例中,SMM(在运行时)与其他可以要求SMM作为其代表执行动作的实体建立信任。要注意的是,虽然在某些实施例中UEFI变量使用可能仅需要完整性保护,这种“签名”能力可以用于对变量存储进行“加密”,因此可以适当地为信息如用户密码或其他个人可标识信息(PII)阻挡不受信任的环0OS代码。
[0018] 换言之,实现前述三种使用情况中的任何一种或全部的能力对于早期的TPM方案(如TPM规范版本1.2)是不可能的,因为一旦OS获得TPM的所有权固件就不能访问TPM。然而,TPM 2.0“平台层级结构”允许固件在运行时继续访问TPM 2.0资源,由此允许固件来对所存储的变量进行安全操纵,从而允许对安全区域的安全使能/禁用,防止回退,更好地实现双OS场景,和/或操纵任何其他引导或安全性关键的设置。
[0019] 可以将固件用来在运行时期间(和/或在预引导操作期间)访问TPM/与其进行交互的指令设置在SIC或别处。所述固件可以包括如PEI(预EFI初始化)和DXE(驱动程序执行环境)指令等代码(例如,驱动程序)或者其他主机执行的固件部件。通过在安全密码处理器(如TPM)内对可能需要被SIC访问的各个成分(如UEFI变量)进行签名或对其进行散列并将相关散列存储在TPM中以便后续跨越预引导进行检测,可以对所述需要被SIC访问的各个部件进行完整性保护。UEFI规范定义了用于变量访问(例如,用于写/删除变量的SetVariable,用于读取变量的GetVariable)的应用编程接口(API),所述应用编程接口可以被实施例用来操纵经密码处理器签名的变量。在实施例中,UEFI变量在SMM运行时内以及在引导时间内是可访问的。在运行时期间,这些变量可以是OS、SMM、和/或固件(例如,SIC)可访问的。
[0020] 如下面进一步讨论的,实施例提供了一种装置,主机固件通过这种装置可以利用TPM 2.0签名能力。确切地,在一个实施例中,TPM 2.0的平台层级结构可以用于给OEM PI代码提供预OS和运行时访问TPM 2.0设备,不管这个设备是‘分离式TPM’dTPM20(即,TPM 2.0设备)还是基于固件的(例如,ARM (ARM )、英特尔公司平台信任技术(PTT))密码处理器实现方式。有时,在此参照了UEFI特定术语(例如,PEI等),但实施例不限***
于此并且与任何基于主机的固件执行方案(例如,基于开源环保系统的固件,如.coreboot.org,及其运行时操作的SMM模型)相关。
[0021] 常规地,使用OS特定工具(例如,受保护签名服务器(HSM))“离开平台”地创建认证UEFI变量并对其进行签名。所述OS然后调用SetVariable运行时服务将认证变量登记在固件中(例如,使用被传递给UEFI客户端以进行实际SetVariable()动作的已签名blob)。一旦相关联的公钥被登记在固件的存储变量中,当GetVariable运行时变量被调用时,可以对认证变量的签名进行验证。例如,这是如何使用UEFI安全引导PK、KEK、DB、DBK变量的方式。然而,固件无法出于其自己的目的创建并使用认证变量。如下面进一步阐述的,实施例允许在密码处理器内(或被密码处理器安全地控制的区域内)“在平台上”创建UEFI变量和/或对其进行签名。
[0022] 用于运行时访问的部件
[0023] 如上所述,实施例可以使用TPM 2.0执行各种任务。例如,实施例包括命令库(例如,Tpm2CommandLib),所述命令库提供用于在TPM内创建密钥(例如,TPM2_CreatePrimary)、用密钥对对象进行签名(例如,TPM2_Sign)、以及稍后验证已签名对象(例如,TPM2_VerifySignature)的命令的实现方式。SMM驱动程序可以调用这些命令,连同SetVariable和GetVariable UEFI运行时服务。SMM驱动程序可以是使用TPM 2.0对数据对象进行签名并且还对这个签名进行验证的“SMM认证变量签名驱动程序”。为了将完整性值(例如,每次写之后的整个变量存储的散列)存储在TPM 2.0NVData中,可以在运行时在SMM中的平台层级结构的权限下使用命令(如TPM2_NVWrite)并且然后在重新引导时通过TPM2_NVRead相对TPM NVData对其进行校验,从而保证上一运行时会话与随后的重新引导(其中,所述固件将由如 引导防护等平台元件安全地认证)之间,这些值是相同的。在美国专利号7,984,286(已转让给美国加利福尼亚州圣克拉拉市的英特尔公司)中可以找到对硬件安全引导的更加一般的描述。
[0024] 利用认证值来控制使用平台层级结构对TPM 2.0的访问。最初,这是个已知值。在执行第三方代码之前,固件将这个认证值改为秘密值。这个新的秘密值必须被传递至SMM中并存储在SMRAM中以便由SMM驱动程序在运行时使用。例如,由于BIOS在重置时运行,BIOS是第一个能够通过平台层级结构访问TPM 2.0的部件。为了防止潜在恶意第三方代码(例如,恶意选项ROM)使用平台层级结构来访问TPM,将平台层级结构的认证值改为新的秘密值,并将这个值保存在SMM中以供稍后使用。这样做防止了第三方代码访问TPM,因为第三方代码并不知道这个新的认证值。
[0025] 通过固件来创建UEFI认证变量
[0026] 使用上述框架,固件可以创建并操纵UEFI认证变量供自己使用。在实施例中,为了创建UEFI认证变量,调用了SMM认证变量签名驱动程序签名方法,所述签名方法将生成SMI,并且SMM处置器将进行接下来的操作。首先,SMM处置器将保证没有来自OS对TPM 2.0的显著动作(如果在运行时的话),下面更加详细地阐述(见图4)。第二,SMM处置器将主张平台层级结构使用TPM2_CreatePrimary命令创建密钥,如果尚未存在命令的话。要注意的是,在实施例中,TPM 2.0主密钥的私有成分存储在TPM 2.0内受保护位置并且从不离开设备。只有公共成分(与TPM 2.0中保留的私钥相对应的公钥)是固件可用的。第三,SMM处置器将使用TPM2_Sign命令进行对象的实际签名。第四,SMM处置器将使用SetVariable UEFI运行时服务把已签名对象(例如,UEFI认证变量)存储在平台的变量存储(例如,位于平台上的闪存存储器)中。
[0027] 对固件创建的UEFI认证变量进行验证
[0028] 为了对固件创建的UEFI认证变量进行验证,调用SMM认证变量签名驱动程序的验证方法,所述验证方法将生成SMI,并且SMM处置器将(1)保证不会存在来自OS对TPM 2.0的显著动作(如果在运行时的话),(2)主张平台层级结构使用TPM2_CreatePrimary命令创建密钥,如果尚未存在命令的话,并且(3)调用GetVariable UEFI运行时服务基于TPM 2.0所生成并存储在闪存中的公钥检索变量数据并且然后对变量数据进行认证。
[0029] 使能和禁用安全区域
[0030] 实施例使用安全区域来提供可信执行环境。安全区域是防止在所述区域外部执行的软件访问在所述区域内部的软件和数据的可信软件执行环境。
[0031] 在下述文件中描述了安全区域的各个实施例:例如2009年11月13日提交的题为“Method and Apparatus to Provide Secure Application Execution(用于提供安全应用执行的方法和装置)”的美国专利申请(序列号12/590,767);2009年12月22日提交的题为“Method and Apparatus to Provide Secure Application Execution(用于提供安全应用执行的方法和装置)”的PCT专利申请(专利号PCT/US2009/069212);2010年12月22日提交的题为“System and Method for Implementing a Trusted Dynamic Launch and Trusted Platform Module(TPM)Using Secure Enclaves(用于使用安全区域实现可信动态发射和可信平台模块(TPM)的系统和方法)”的美国专利申请(序列号12/976,831);2013年6月4日提交的题为“Technologies For Hardening The Security Of Digital Information On Client Platforms(用于强化客户端平台上的数字信息的安全性的技术)”的PCT专利申请(申请号PCT/US2013/44158);“Using Innovative Instructions to Create Trustworthy Solutions(使用创新指令来创建可信方案)”(修胡克斯特拉(Matthew Hoekstra)等人)、“Innovative Instructions and Software Model for Isolated Execution(用于隔离执行的创新指令和软件模型)”(弗兰克麦基等人)、以及2013年6月24日在以色列特拉维夫市联合ISCA40举行的The Second Workshop on Hardware and Architectural Support for Security and Privacy(关于安全和隐私的硬件和体系结构支持的第二届研讨会)上介绍的其他论文。因此,在此未完全地阐述关于安全区域的操作的细节。这些申请和论文在此统称为“安全区域材料”。
[0032] 如安全区域材料中所描述的,在其包含进程的虚拟地址空间外部开拓了安全区域。依据虚拟地址执行对区域的存储器管理。在实施例中,区域存储器管理被划分成两部分:地址空间分配和存储器承诺。地址空间分配是对所述区域可以使用的最大地址范围的规范。没有实际资源被承诺这个区域。存储器承诺是对所分配的地址空间内的存储器资源(作为页面)的分派。这种两阶段的技术允许区域灵活地控制器存储器使用,并且在区域需要较低时允许在不过度使用存储器资源的情况下增长。承诺向所述区域增加了虚拟页面。
[0033] 这种差别反映在两条指令ECREATE和EADD中。ECREATE分配供所述区域使用的地址范围。EADD将这个范围内的虚拟存储器页面承诺给所述区域。操作系统可以支持分离的分配和承诺操作。例如,Windows API VirtualAlloc采取标志变量MEM_RESERVE(分配)或MEM_COMMIT(承诺)。不要求OS支持这种分离,但其存在可以使得区域内的存储器管理更加灵活和高效。
[0034] 在一个实施例中,使用ECREATE指令创建安全区域,限定了所述区域将被建立在的虚拟地址空间范围的基和大小。存储器在密封之前被添加至安全区域。例如通过使用Windows API最佳地展示了区域创建和承诺过程,并且所述过程如下进行:(1)在所述过程中使用VirtualAlloc保留地址空间区域,从而进入MEM_RESERVE标志(所述标志在不实际承诺任何物理存储器或页面文件存储的情况下保留存储器的区域);(2)通过再次调用VirtualAlloc承诺所述区域的第一页,这次用MEM_COMMIT标志;(3)使用ECREATE指令建立初始环境,从而限定与上述相同的地址范围(即,ECREATE分配应用中的虚拟存储器的区域用于宿存安全代码和数据);以及(4)对于每个有待添加至所述区域的附加页面:对区域页面进行VirtualAlloc,使用EADD将新页面添加至区域,使用EEXTEND添加对128字节页面的测量结果(EEXTEND更新区域的测量结果从而包括EADD中添加的代码或数据),并调用这条指令直到整个区域被测量(例如,测量结果可以包括区域中的代码和数据在其被初始化时的密码散列)。如果要一次添加区域页面的连续集,可以记录并优化上述步骤从而使系统调用的次数最小化。在不支持分离保留和承诺操作的操作系统上,可以例如用简单的malloc代替上述VirtualAlloc,并且消除对VirtualAlloc的剩余调用。
[0035] 由于ECREATE和EADD指令使能所添加的页面的加密和完整性,非区域软件不可能在此存储器已经被添加至区域之后其进行初始化。运行时系统必须对它所负责的任何存储器在对其进行EADD之前完全地将其初始化这一般要求运行时系统在适当的地方建立区域图像,甚至在调用ECREATE之前(因为在ECREATE之后软件不能对SECS进行修改)。一旦存储器已经被初始化,经ECREATE的区域以及其经EADD的存储器,可以如在此所述的对其进行密封和测量。
[0036] 在一个实施例中,在区域内部存在两种数据结构,安全区域控制存储(SECS)和线程控制结构(TCS)。SECS和TCS包括体系结构信息以及运行时软件所使用的非体系结构方便性字段。一旦SECS、一个或多个TCS、和代码与数据已经被EADD,由EINIT指令完成区域创建。这条指令停止进一步的测量结果信息被写入测量结果寄存器(MR)(在共同未决申请中有时称为“IR0”)。换言之,EINIT将区域的内容锁定,并保证只有区域中的代码可以访问同一区域中的数据区域。在EINIT之后,没有进一步页面可以被添加至区域。
[0037] 不可信代码使用EENTER指令调用到区域中,并且区域通过EEXIT返回不可信调用方。在区域表项上,控制被传递至将堆栈指针切换至区域内部的指针的代码。当返回时,软件再次交换堆栈指针,然后执行EEXIT指令。
[0038] 从而,一旦已经创建了区域并用EINIT对其进行初始化,防止从未授权软件(甚至入虚拟机器监测器的软件、BIOS、或以比区域本身更高特权等级运行的操作系统功能)对区域的存储器的试图访问。从物理观点看,虽然区域数据驻留在寄存器、缓存器、或处理器包的其他逻辑块中,CPU逻辑防止通过软件进行未授权访问。不管区域数据何时离开有待被写入平台存储器的封装上缓存,数据被自动地加密并且其完整性得到保护。这防止恶意个人使用存储器探头或其他技术浏览、修改、或重放区域内所包含的数据或代码。
[0039] 紧前面的描述讨论了各种用于将安全区域实例化的各种机构。通过禁用在接下来引导期间建立安全区域所必须的存储器配置,禁用安全区域可能以类似的方式发生。
[0040] 实施例改进了安全区域的使能/禁用。例如,可以在引导过程期间为安全区域建立存储器。使用UEFI认证变量可以允许可信实体使能/禁用用于建立安全区域的存储器。通过改变UEFI认证变量的状态,BIOS能够安全地禁用或扩展在接下来引导期间建立安全区域所必须的存储器配置。例如,OEM签名的OS驻留驱动程序可以向SMM驱动程序下发使能/禁用请求,不论是通过ACPIComm缓存还是通过直接0xB2端口访问。SMM代码将或者在首次使能时创建Enable/Disable变量,或者在于调用方建立信任关系时更新现有变量使用。
[0041] 关于安全区域使能/禁用正阐述的问题是期望安全装置允许开启或关闭安全区域特征,尤其是对于对存储器用途(即,放弃安全区域存储器分配从而不违反存储器要求)敏感的客户端系统,加上需要跨电力循环保证机器不让变量存储损坏。
[0042] 正受信任的SMM驱动程序帮助防止TPM变成对任何调用方响应的“混淆代理人*** ***(Confused Deputy)”(见例如http www.cis.upenn.edu/~KeyKOS/ConfusedDeputyhtml)。
[0043] 计算节点(例如,智能电话、平板、笔记本、膝上计算机、超级笔记本、汽车、航空无人机、戴在手腕/身体上用来监测生物数据的健身环、提供互联网访问的眼镜、其组合如混合平板和智能电话等等)可以包括多个可以独立于彼此被使能/禁用的安全存储器区域。
[0044] 图1包括本发明实施例的过程100。
[0045] 方框101是可选的,并且包括:判定带外密码处理器是否正基于来自OS的命令进行操作,并且如果否,则使得固件访问所述密码处理器。下面关于图4阐述了用于进行这个判断的示例方法。
[0046] 方框105包括:固件在运行时期间内使得密码处理器(例如,TPM2.0)创建密钥(例如,私钥)。每个引导周期或TPM 2.0启动会话可以完成一次创建密钥。一旦所述密钥已经被创建(例如,使用TPM2_CreatePrimary命令),所述密钥存在直到下一个电力循环、OS引导、和/或TPM 2.0启动会话。在某些具有有限存储的密码处理器中,在用完存储器资源之前,处理器可能仅能创建有限数量的密钥(例如,三个密钥)。一旦被创建,所述密钥可以通过其句柄被重新使用。可以在稍后时间(例如,下一个电力循环、OS引导、和/或TPM 2.0启动会话)借助用于创建之前版本密钥的同一种子来重新创建所述密钥。
[0047] 方框110包括:固件在运行时期间使得密码处理器将密钥存储在耦合至密码处理器的安全非易失性存储设备内(TPM 2.0保护的存储器区域内)。从而,(直接或间接)调用TPM2_CreatePrimary命令的固件(直接或间接)使得所述密钥被创建并被存储。
[0048] 方框115包括:固件在运行时期间内使得密码处理器在密码处理器内创建对象。方框120包括:固件在运行时期间内使得密码处理器在当所述密钥在密码处理器内时使用密钥对对象(例如,固件变量如UEFI变量)进行签名,以产生签名。然而,在另一实施例中,不在密码处理器中创建有待签名的对象。相反,所述对象被作为用于TPM2_Sign命令的参数之一传递给密码处理器(例如,TPM 2.0)。所述经签名对象被返回密码处理器外部并且不被存储在TPM 2.0中。然后,所述经签名对象被作为UEFI已认证变量(例如,使用UEFI SetVariable(SGX使能值)命令)存储,从而指示安全区域被使能还是被禁用。
[0049] 方框125包括:固件在运行时期间内使得密码处理器对经签名对象上的签名进行验证。然而,在另一实施例中,不需要在过程100的这一点对经签名对象进行验证。例如,(由密码处理器)对经签名对象的验证可能发生于当使用UEFI GetVariable(SGX使能值/对象)命令访问安全区域(例如, SGX)使能值变量/对象时。由密码处理器进行验证将是可选的(例如,可以使用公钥进行验证,所述公钥对应于在方框105生成的密钥)。
[0050] 方框130包括:在运行时期间,基于经验证的已签名对象(例如,用于使能安全区域的认证UEFI变量)来初始化安全区域(所述安全区域包括可信软件执行环境,所述可信软件执行环境防止在安全区域外部的软件执行访问在安全区域内部的软件和数据)。方框135包括:在运行时期间,基于所述验证的已签名对象来禁用所述安全区域。在实施例中,密码处理器不负责使能/禁用所述安全区域。相反,BIOS(通过主机处理器)这样做。例如,如果BIOS确定禁用安全区域的认证变量存在于存储器(例如,闪存存储器)中,BIOS将不会建立有待用于所述区域的存储器,并且将不会使能建立区域所必须的处理器特征。在实施例中,所述变量可以受到完整性保护(例如,写保护)但不受保密性保护(例如,读保护)。
[0051] 防止回退
[0052] 实施例保护平台免受UEFI变量存储(即,变量被存储在的存储器)上的离线攻击,其中,此类攻击实现了将UEFI变量回退至之前的非安全值。一旦安全配置被另外“回退”至非安全配置,所述平台受到损害。确切地,实施例防止企图回退至在其“dbx”UEFI安全引导变量被更新以限制受损证书之前的变量存储。实施例通过将SPI闪存中的UEFI变量存储以密码方式绑定至平台来完成这一点。在每次变量更新时(即,每次调用SetVariable时),计算变量存储的散列,并且然后将所述散列存储在受保护的TPM 2.0NV闪存位置可以用TPM 2.0访问策略保护这个NV索引,这样使得例如仅可以通过平台层级结构对其进行读或写。然后,在引导周期的前期并在第一次访问变量存储之前,对变量存储散列进行计算并将其与TPM 2.0NV闪存中的存储值进行比较,从而评估在上一次变量“写”或更新之后被UEFI代码写的散列是否与变量存储的当前状态一致。
[0053] 图2包括本发明实施例的过程200。
[0054] 方框201是可选的,并且包括:判定带外密码处理器是否正基于来自OS的命令进行操作,并且如果否,则使得固件访问所述密码处理器。下面关于图4阐述了用于进行这个判断的示例方法。
[0055] 可选元件包括在运行时期间内使得密码处理器(例如,TPM 2.0)创建和存储密钥(例如,私钥)的固件。然而,在其他实施例中,当在某些实施例中未对散列(下文所描述的)进行签名时,不需要创建并存储密钥。方框210包括:在运行时期间,固件(BIOS)对在不包括在密码处理器内的存储器中所存储的至少一个变量进行测量。方框215包括:固件在运行时期间将测量结果存储在包括在密码处理器中的安全非易失性存储设备内。例如,在实施例中,当UEFI SetVariable()变量被调用时,所述命令改变变量存储。结果是,对变量存储的新散列进行计算。然后将这个散列(即,对象)存储在之前规定的TPM NV反回退位置。在实施例中,不对所述散列进行签名。以这种方式,NV位置总是包括当前变量存储的散列。
[0056] 方框220包括:在预引导操作期间,将所述测量结果与在不包括在所述密码处理器内的所述存储器中所存储的至少一个变量的第二测量结果进行比较。例如,当系统重新引导时,在第一次SetVariable调用之前,固件(例如,BIOS)对变量存储进行散列并将所述散列与密码处理器的安全存储器(例如,TPM2NV位置)中的值进行比较。如果这些散列不同,这是变量存储被修改过的证据。例如,这种修改可能发生在系统断电时(即,包含变量存储的闪存存储器被使用闪存编程器或某种这种设备修改至包括被撤回的密钥的旧值)。
[0057] 容纳多个OS
[0058] 图3包括本发明实施例的过程300。
[0059] 方框301是可选的,并且包括:判定带外密码处理器是否正基于来自OS的命令进行操作,并且如果否,则使得固件访问所述密码处理器。下面关于图4阐述了用于进行这个判断的示例方法。
[0060] 方框305包括:固件在运行时期间内使得密码处理器(例如,TPM2.0)创建密钥(例如,私钥)。方框310包括:固件在运行时期间内使得密码处理器将密钥存储在耦合至密码处理器的安全非易失性存储设备内(例如,包括在密码处理器内)。方框315是可选的,并且包括:固件在运行时期间使得密码处理器在密码处理器内创建对象(或通过例如接收作为TPM2_Sign命令的参数的对象来访问之前创建的对象)。方框320包括:固件在运行时期间内使得密码处理器在当所述密钥在密码处理器内时使用密钥对对象(例如,固件变量如UEFI变量)进行签名,以产生签名。所述经签名对象可以被返回密码处理器外部并且不被存储在密码处理器中。方框325包括:固件使得在运行时期间内密码处理器对经签名对象上的签名进行验证(虽然固件可以发生在稍后的时间,如当变量被访问时)。
[0061] 方框330包括:固件在运行时期间使得包括在装置中的主机处理器基于经验证的已签名对象在OS(例如,微软(Microsoft  )与附加OS(例如,安卓(AndroidTM))之间进行切换控制。方框335包括:固件在运行时期间使得处理器(例如,主机处理器)基于经验证的已签名对象在OS与附加OS之间分配存储器。
[0062] 在访问TPM时的OS与固件冲突
[0063] 图4包括本发明实施例的过程。
[0064] 图4包括本发明实施例中用于访问TPM的OS和SMM操作的过程。存在若干种方式用于允许SMM/OS TPM访问。SMM驱动程序可以防止固件与OS之间的竞争,两者都在运行时使用TPM 2.0高级配置和电源接口(ACPI)表尝试访问TPM 2.0。例如,TPM 2.0请求可以从BIOS或OS(通过TPM2ACPI表)来到TPM 2.0SMM访问驱动程序。通过获知当新的请求从任一来源进来***时之前的请求是否在进行中,TPM 2.0访问驱动程序防止固件与OS之间的竞争。ACPI(.uefi.org)是用于OS与固件之间通信的标准。固件/BIOS创建ACPI表,所述ACPI表向OS提供对平台的描述。这些表包括OS可以用来对bios进行请求的方法(即,OS可以通过调用TPM2ACPI表上的方法对TPM 2.0做出请求)。TPM 2.0是存储器中由BIOS在引导期间创建供OS使用的数据结构。
[0065] 关于图4,所述过程开始于方框505,并且在SMM中的方框510,系统检查TPM.STATUS位。如果已经存在OS TPM命令(方框515),则系统等待OS TPM命令结束(方框530)。在超时时,系统取消命令(方框540)或继续等待OS命令结束(方框535)。在方框535、540之后,已知与OS命令不再存在冲突的情况下,系统发送SMM、TPM命令(方框520)。然后可以获得响应(方框525)。在方框515,如果不存在OS TPM命令,过程可以前进至方框520。
[0066] 在其他实施例中,SMM TPM命令可以置于队列中,并且可以使用周期性系统管理中断(SMI)来检查周期性SMI处置器中的TPM状态(例如,是否存在OS命令?)。另一实施例捕陷所有TPM访问(例如,OS TPM访问),并且总是访问SMM中的TPM硬件(因此,与SIC或OS TPM访问不存在冲突)。
[0067] 实施例使用安全控制(像read_only和write_only)来保护UEFI变量。
[0068] 虽然在此针对这些实施例中的许多实施例阐述了UEFI变量和TPM,这是为了解释方便和简洁而做出的并且不暗示所有的实施例都限于UEFI变量或TPM变量。其他实施例可以用于其他预引导代码、引导代码、初始化代码、和/或BIOS代码以及用于其他安全密码处理器和/或安全存储机制。而且,出于简洁的目的提到零特定的标准,但实施例并不限于任何一种BIOS或TPM标准或任何其他标准。
[0069] 据上文所述,变量被存储在密码处理器NV存储中。然而,在各实施例中,此类变量可以包括变量的散列(或其他节省空间的缩略语或派生词)。所述散列/派生词可以是NV中所存储的,其中存储空间可以是有限的。这种安排允许将大很多的变量集映射至可能较小的密码处理器NV存储器集。
[0070] 在此所讨论的实施例可以利用系统,如下文所讨论的图5的系统。事实上,各实施例可以用于多个不同类型的系统中。例如,在一个实施例中,通信设备可被安排成用于执行在此描述的所述各种方法和技术。当然,本发明的范围并不限于通信设备,并且相反其他实施例可以针对其他类型的用于处理指令的装置。
[0071] 程序指令可以用于使编程有指令的通用或专用处理系统执行在此描述的操作。可替代地,这些操作可以由含有用于执行这些操作的硬件连线的逻辑的特定硬件部件执行,或者由程序计算机部件和自定义硬件部件的任意组合执行。在此描述的这些方法可以作为(a)计算机程序产品来提供,所述计算机程序产品可以包括一个或多个机器可读介质,所述一个或多个介质具有存储在其上的指令,所述指令可以用于编程处理系统或其他电子设备以便执行这些方法,或作为(b)至少一种存储介质来提供,所述至少一个存储介质上存储有使得系统执行这些方法的指令。在此使用的术语“机器可读介质”或“存储介质”应当包括能够存储或编码指令序列的任何介质(瞬态介质,包括信号;或非瞬态介质),所述指令序列用于由机器执行并且使机器执行在此描述的任一种方法。术语“机器可读介质”或“存储介质”将相应地包括但不限于存储器,如固态存储器、光盘盒磁盘、只读存储器(ROM)、可编程ROM(PROM)、可擦出PROM(EPROM)、电EPROM(EEPROM)、磁盘驱动、软盘、高密度磁盘ROM(CD‑ROM)、数字多功能盘(DVD)、闪存存储器、磁光盘、以及更多的外来介质如机器可访问的生物状态保留或信号保留存储。介质可以包括任何用于以机器可读的形式存储、传输、或接收信息的机制,并且所述介质可以包括程序代码可穿过的介质,如天线、光纤、通信接口等。程序代码可以以数据包、序列号、并行数据的形式传输,并且可以以压缩或加密的格式被使用。此外,在本领域中常常将呈一种或另一种形式(例如,程序、规程、过程、应用、模块、逻辑等)说成采取行动或造成结果。这类表述仅是陈述由处理系统对软件的执行使处理器执行行动或产生结果的简写方式。
[0072] 现在参考图5,示出了根据本发明的实施例的系统实施例1000的框图。系统1000可以包括在例如移动计算节点中,如蜂窝电话、智能电话、平板、超级笔记本、笔记本、膝上计算机、私人数字助手、和基于移动处理器的平台。
[0073] 示出了多处理器系统1000,所述多处理器系统包括第一处理元件1070和第二处理元件1080。虽然示出了两个处理元件1070和1080,应当理解的是,系统1000的实施例还可以包括仅一个此类的处理元件。系统1000被展示为点对点互连系统,其中,第一处理元件1070和第二处理元件1080经由点对点互连件1050联接。应当理解的是,所展示的任何或所有互连件可以被实现为多站式总线而不是点对点互连件。如所示,处理元件1070和1080中的每一个可以是多核处理器,包括第一处理器核和第二处理器核(即,处理器核1074a和1074b以及处理器核1084a和1084b)。这类核1074、1074b、1084a、1084b可以被配置成用于以与在此讨论的方法类似的方式执行指令码。
[0074] 每个处理元件1070、1080可以包括至少一个共享高速缓存。共享高速缓存可以存储分别由处理器的一个或多个部件(诸如核1074a、1074b以及1084a、1084b)利用的数据(例如,指令)。例如,共享高速缓存可以本地高速缓存存储在存储器1032、1034中的数据,以便由处理器的部件更快地访问。在一个或多个实施例中,共享高速缓存可以包括一个或多个中间级高速缓存(诸如2级(L2)、3级(L3)、4级(L4)、或其他级高速缓存)、最后一级高速缓存(LLC)、和/或其组合
[0075] 虽然仅示出了两个处理元件1070、1080,应当理解的是,本发明的范围不限于此。在其他实施例中,给定处理器中可以存在一个或多个另外的处理元件。可替代地,处理元件
1070、1080中的一个或多个可以是处理器之外的元件,诸如加速度计或现场可编程阵列。
例如,(多个)另外的处理元件可以包括与第一处理器1070相同的(多个)另外的处理器、与第一处理器1070异构或不对称的(多个)另外的处理器、加速器(例如像图形加速器数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理元件。就一系列品质量度(包括体系结构、微体系结构、热、功耗特性等)而言,处理元件1070、1080之间存在多种差异。这些差异可以有效地表明它们是处理元件1070、1080之间的不对称性和异构性。对于至少一个实施例,不同处理元件1070、1080可以驻留在同一管芯封装中。
[0076] 第一处理元件1070可以进一步包括存储器控制器逻辑(MC)1072以及点对点(P‑P)接口1076和1078。类似地,第二处理元件1080可以包括MC 1082以及P‑P接口1086和1088。MC 1072和1082将处理器联接到对应存储器、即存储器1032和存储器1034上,所述存储器可以是主存储器的本地附接到对应处理器上的部分。虽然MC逻辑1072和1082被展示为集成到处理元件1070、1080中,但对于替代性实施例,MC逻辑可以是位于处理元件1070、1080外部而不是集成在其中的离散逻辑。
[0077] 第一处理元件1070和第二处理元件1080可以对应地经由P‑P互连件1062、10104通过P‑P接口1076、1086而联接到I/O子系统1090上。如所示,I/O子系统1090包括P‑P接口1094和1098。而且,I/O子系统1090包括接口1092以便将I/O子系统1090与高性能图形引擎1038耦合。在一个实施例中,总线可以用于将图形引擎1038耦合至I/O子系统1090。可替代地,点对点互连件1039可以联接这些部件。
[0078] I/O子系统1090进而可以经由接口1096联接到第一总线10110上。在一个实施例中,第一总线10110可以是外围部件互连(PCI)总线,或诸如PCI Express总线或另一种第三代I/O互连总线的总线,尽管本发明的范围不限于此。
[0079] 如所示的,不同I/O设备1014、1024可以连同总线桥1018联接到第一总线10110上,所述总线桥可以将第一总线10110联接到第二总线1020上。在一个实施例中,第二总线1020可以是低引脚数(LPC)总线。不同设备可以联接到第二总线1020上,所述不同设备包括例如:键盘/鼠标1022、(多个)通信设备1026(所述通信设备进而可以与计算机网络通信)、以及数据存储单元1028(诸如磁盘驱动程序或其他大容量存储设备),在一个实施例中,所述数据存储单元可以包括代码1030。代码1030可以包括用于执行以上所描述方法中的一种或多种的实施例的指令。另外,音频I/O 1024可以联接到第二总线1020上。
[0080] 应当注意:考虑到其他实施例。例如,替代所示的点对点体系结构,系统可以实现多站式总线或另一种这样的通信拓扑结构。另外,图5元件可以可替代地使用比图5所示多或少的集成芯片来进行分区。
[0081] 示例1包括一种装置,所述装置包括:耦合至安全非易失性存储设备的带外密码处理器;以及其上存储有固件指令的至少一个存储介质,所述固件指令用于在运行时期间且在所述装置的操作系统已经引导之后使得所述密码处理器:(a)将密钥存储在所述安全非易失性存储设备内,(b)当所述密钥在所述密码处理器内时用所述密钥对对象进行签名以产生签名,并且(c)验证所述签名。
[0082] 在示例2中,如示例1所述的主题可以可选地包括:其中,所述对象包括统一可扩展固件接口(UEFI)变量,所述固件包括平台初始化(PI)固件,所述密码处理器是用固件和硬件中的至少一项实现的可信产品模块(TPM),并且所述TPM在所述处理器带外。
[0083] 在示例3中,如示例1‑2所述的主题可以可选地包括:其中,所述对象包括固件变量。
[0084] 在示例4中,如示例1‑3所述主题可以可选地包括:其中,所述密钥是私钥,并且所述密码处理器包括所述安全非易失性存储设备;其中,所述至少一个存储介质上存储有固件指令,所述固件指令用于使得所述密码处理器在所述密码处理器的外部传达对应于所述私钥的公钥同时将所述私钥留存在所述密码处理器内。
[0085] 在示例5中,如示例1‑4所述主题可以可选地包括:其中,所述至少一个存储介质上存储有固件指令,所述固件指令用于使得所述密码处理器执行以下各项中的至少一项:(a)在所述密码处理器内创建所述对象;以及(b)创建所述密钥。
[0086] 在示例6中,如示例1‑5所述主题可以可选地包括:其中,所述至少一个存储介质上存储有固件指令,所述固件指令用于:初始化包括可信软件执行环境的安全区域,所述可信软件执行环境防止在所述安全区域外部执行的软件访问在所述安全区域内部的软件和数据。
[0087] 在示例7中,如示例1‑6所述主题可以可选地包括:其中,初始化所述安全区域基于使能所述对象,所述对象包括固件变量。
[0088] 在示例8中,如示例1‑7所述主题可以可选地包括:其中,所述至少一个存储介质上存储有用于禁用所述安全区域的固件指令。
[0089] 在示例9中,如示例1‑8所述主题可以可选地包括:其中,所述至少一个存储介质上存储有固件指令,所述固件指令用于在运行时期间确定在不包括在所述密码处理器内的存储器中所存储的至少一个变量的测量结果。
[0090] 在示例10中,如示例1‑9所述主题可以可选地包括:其中,所述至少一个存储介质上存储有用于将所述测量结果存储在所述安全非易失性存储设备内的固件指令。
[0091] 在示例11中,如示例1‑10所述主题可以可选地包括:其中,所述至少一个存储介质上存储有固件指令,所述固件指令用于:在预引导操作期间且在运行时之前,将所述测量结果与在不包括在所述密码处理器内的所述存储器中所存储的所述至少一个变量的第二测量结果进行比较。
[0092] 在示例12中,如示例1‑11所述主题可以可选地包括:其中,所述至少一个存储介质上存储有固件指令,所述固件指令用于在系统管理模式(SMM)运行时期间使得所述密码处理器:(a)将所述密钥存储在所述安全非易失性存储设备中,(b)用所述密钥对所述对象进行签名,并且(c)验证所述签名。
[0093] 在示例13中,如示例1‑12所述主题可以可选地包括:其中,所述至少一个存储介质上存储有固件指令,所述固件指令用于在预引导操作期间使得在所述密码处理器内执行指令。
[0094] 在示例14中,如示例13所述主题可以可选地包括处理器,其中,所述变量使能在所述操作系统与附加操作系统之间切换对所述处理器的控制。
[0095] 在示例15中,如示例1‑14所述主题可以可选地包括:其中,所述变量使能在所述操作系统与附加操作系统之间进行存储器分配。
[0096] 在示例16中,如示例1‑15所述主题可以可选地包括:其中,所述密码处理器包括所述安全非易失性存储设备,所述固件包括不包括在所述操作系统中的指令,并且所述至少一种存储介质所非瞬态的。
[0097] 在示例17中,如示例1‑16所述主题可以可选地包括:其中,所述至少一个存储介质上存储有固件指令,所述固件指令用于:确定所述操作系统并未正在访问所述密码处理器,并且响应于所述确定而使得所述固件指令访问所述密码处理器。
[0098] 示例18包括耦合至安全非易失性存储设备的带外密码处理器;以及其上存储有固件指令的至少一个存储介质,所述固件指令用于:(a)在运行时期间确定在不包括在所述密码处理器内的存储器中所存储的至少一个变量的测量结果,(b)在运行时期间,将所述测量结果存储在所述安全非易失性存储设备内,并且(c)在预引导操作期间且在运行时期间之前,将所述测量结果与在不包括在所述密码处理器内的所述存储器中所存储的所述至少一个变量的第二测量结果进行比较。
[0099] 在示例19中,如示例18所述主题可以可选地包括处理器,其中,所述至少一个变量包括统一可扩展固件接口(UEFI)变量,所述密码处理器是用固件和硬件中的至少一项实现的可信产品模块(TPM),并且所述TPM在所述处理器带外。
[0100] 在示例20中,如示例18‑19所述主题可以可选地包括:其中,所述至少一个存储介质上存储有固件指令,所述固件指令用于在运行时期间且在所述装置的操作系统已经引导之后使得所述密码处理器:(a)将密钥存储在所述安全非易失性存储设备内,(b)当所述密钥在所述密码处理器内时用所述密钥对所述至少一个变量进行签名以产生签名,并且(c)验证所述签名。
[0101] 在示例21中,如示例18‑20所述主题可以可选地包括:其中,所述至少一个存储介质上存储有固件指令,所述固件指令用于初始化可信软件执行环境,所述可信软件执行环境防止在所述安全区域外部执行的软件访问在所述安全区域内部的数据。
[0102] 在示例22中,如示例18‑21所述主题可以可选地包括:其中,初始化所述安全区域基于使能所述至少一个变量。
[0103] 示例23包括其上存储有固件指令的至少一种存储介质,所述固件指令用于使得系统:在运行时期间且在所述装置的操作系统已经引导之后,(a)将密钥存储在带外密码处理器中所包括的安全非易失性存储设备内,(b)当所述密钥在所述密码处理器内时用所述密钥对对象进行签名以产生签名,并且(c)验证所述签名。密码处理器,包括。
[0104] 在示例24中,如示例23所述主题可以可选地包括其中,所述对象包括固件变量。
[0105] 在示例25中,如示例23‑24所述主题可以可选地包括:在使能所述固件变量的基础上初始化包括可信软件执行环境的安全区域,所述可信软件执行环境防止在所述安全区域外部执行的软件访问在所述安全区域内部的软件和数据。
[0106] 示例1a包括一种由至少一个处理器执行的方法,所述至少一个处理器包括:固件,所述固件用于使得在运行时期间且在装置的操作系统已经引导之后密码处理器:(a)将密钥存储在安全非易失性存储设备内,(b)当所述密钥在所述密码处理器内时用所述密钥对对象进行签名以产生签名,并且(c)验证所述签名,其中,所述密码处理器包括在所述装置中,是带外的,并且耦合至所述安全非易失性存储设备。
[0107] 在示例2a中,如示例1a所述的主题可以可选地包括:其中,所述对象包括统一可扩展固件接口(UEFI)变量,所述固件包括平台初始化(PI)固件,所述密码处理器是用固件和硬件中的至少一项实现的可信产品模块(TPM),并且所述TPM在所述处理器带外。
[0108] 在示例3a中,如示例1a‑2a所述的主题可以可选地包括:其中,所述对象包括固件变量。
[0109] 在示例4a中,如示例1a‑3a所述主题可以可选地包括:其中,所述密钥是私钥,并且所述密码处理器包括所述安全非易失性存储设备;所述方法包括使得所述密码处理器在所述密码处理器的外部传达对应于所述私钥的公钥同时将所述私钥留存在所述密码处理器内的固件。
[0110] 在示例5a中,如示例1a‑4a所述主题可以可选地包括使得所述密码处理器执行以下各项中的至少一项的固件:(a)在所述密码处理器内创建所述对象;以及(b)创建所述密钥
[0111] 在示例6a中,如示例1a‑5a所述主题可以可选地包括初始化包括可信软件执行环境的安全区域的固件,所述可信软件执行环境防止在所述安全区域外部执行的软件访问在所述安全区域内部的软件和数据。
[0112] 在示例7a中,如示例1a‑6a所述主题可以可选地包括:其中,初始化所述安全区域基于使能所述对象,所述对象包括固件变量。
[0113] 在示例8a中,如示例1a‑7a所述主题可以可选地包括禁用所述安全区域的固件。
[0114] 在示例9a中,如示例1a‑8a所述主题可以可选地包括在运行时期间确定在不包括在所述密码处理器内的存储器中所存储的至少一个变量的测量结果的固件。
[0115] 在示例10a中,如示例1a‑9a所述主题可以可选地包括:将所述测量结果存储在所述安全非易失性存储设备内的固件。
[0116] 在示例11a中,如示例1a‑10a所述主题可以可选地包括在预引导操作期间且在运行时之前将所述测量结果与在不包括在所述密码处理器内的所述存储器中所存储的所述至少一个变量的第二测量结果进行比较的固件。
[0117] 在示例12a中,如示例1a‑11a所述主题可以可选地包括使得在系统管理模式(SMM)运行时期间所述密码处理器进行以下各项的固件:(a)将所述密钥存储在所述安全非易失性存储设备中,(b)用所述密钥对所述对象进行签名,并且(c)验证所述签名。
[0118] 在示例13a中,如示例1a‑12a所述主题可以可选地包括使得在预引导操作期间在所述密码处理器内执行指令的固件。
[0119] 在示例14a中,如示例1a‑13a所述主题可以可选地包括:其中,所述变量使能在所述操作系统与附加操作系统之间切换对所述处理器的控制。
[0120] 在示例15a中,如示例1a‑14a所述主题可以可选地包括:其中,所述变量使能在所述操作系统与附加操作系统之间进行存储器分配。
[0121] 在示例16a中,如示例1a‑15a所述主题可以可选地包括:其中,所述密码处理器包括所述安全非易失性存储设备
[0122] 在示例17a中,如示例1a‑16a所述主题可以可选地包括确定所述操作系统并未正在访问所述密码处理器并且响应于所述确定使得所述固件指令访问所述密码处理器的固件。
[0123] 示例18a包括由至少一个处理器执行的方法,所述至少一个处理器包括:固件,所述固件:(a)在运行时期间确定在不包括在密码处理器内的存储器中所存储的至少一个变量的测量结果,(b)在运行时期间,将所述测量结果存储在安全非易失性存储设备内,并且(c)在预引导操作期间且在运行时期间之前,将所述测量结果与所述存储器中所存储的不包括在所述密码处理器内的所述至少一个变量的第二测量结果进行比较;其中,所述密码处理器在所述安全非易失性存储设备带外并且耦合至其上。
[0124] 在示例19a中,如示例18a所述的主题可以可选地包括:其中,所述至少一个变量包括统一可扩展固件接口(UEFI)变量,并且所述密码处理器是用固件和硬件中的至少一项实现的可信产品模块(TPM)。
[0125] 在示例20a中,如示例18a‑19a所述主题可以可选地包括在运行时期间且在所述装置的操作系统已经引导之后使得所述密码处理器执行以下各项的固件:(a)将密钥存储在所述安全非易失性存储设备内,(b)当所述密钥在所述密码处理器内时用所述密钥对所述至少一个变量进行签名以产生签名,并且(c)验证所述签名。
[0126] 在示例21a中,如示例18a‑20a所述主题可以可选地包括初始化可信软件执行环境的固件,所述可信软件执行环境防止在所述安全区域外部执行的软件访问在所述安全区域内部的数据。
[0127] 在示例22a中,如示例18a‑21a所述主题可以可选地包括:其中,初始化所述安全区域基于使能所述至少一个变量。
[0128] 示例23a包括处理装置,所述处理装置包括用于在运行时期间且在所述装置的操作系统已经引导之后执行以下各项的装置:(a)将密钥存储在带外密码处理器中所包括的安全非易失性存储设备内,(b)当所述密钥在所述密码处理器内时用所述密钥对对象进行签名以产生签名,以及(c)验证所述签名。
[0129] 在示例24a中,如示例23a所述的主题可以可选地包括:其中,所述对象包括固件变量。
[0130] 在示例25a中,如示例23a‑24a所述主题可以可选地包括:用于在使能所述固件变量的基础上初始化包括可信软件执行环境的安全区域的装置,所述可信软件执行环境防止在所述安全区域外部执行的软件访问在所述安全区域内部的软件和数据。
[0131] 虽然已经参照了有限个数的实施例对本发明进行了描述,本领域技术人员将从中理解许多修改和变体。旨在使得所附权利要求书覆盖所有此类落在本发明的真实精神和范围内的修改和改变。
QQ群二维码
意见反馈