首页> 中国专利> 在低功率状态期间保护存储器区的方法和装置

在低功率状态期间保护存储器区的方法和装置

摘要

所公开的示例方法涉及当将处理器系统转变到低功率模式时,基于存储了在低功率模式期间被保护的存储器区的存储器地址的数据结构,来至少产生第一签名。在处理器系统从低功率模式的恢复过程期间,基于存储了在低功率模式期间被保护的存储器区的存储器地址的数据结构,来至少产生第二签名。当第一签名匹配第二签名时,使处理器系统从低功率模式恢复。当第一签名不匹配第二签名时,产生错误。

著录项

  • 公开/公告号CN104520872A

    专利类型发明专利

  • 公开/公告日2015-04-15

    原文格式PDF

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

    申请/专利号CN201280075143.8

  • 申请日2012-09-14

  • 分类号G06F21/57;

  • 代理机构永新专利商标代理有限公司;

  • 代理人刘瑜

  • 地址 美国加利福尼亚

  • 入库时间 2023-12-17 04:27:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-23

    授权

    授权

  • 2015-05-13

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

    实质审查的生效

  • 2015-04-15

    公开

    公开

说明书

技术领域

本公开通常涉及处理器系统,且更特别地涉及在低功率状态期间保护 处理器系统的存储器区的方法和装置。

背景技术

能源之星标准定义电子设备的可接受的低功率消耗额定值的功率水 平。为了符合这样的能源之星标准,电子设备常常实现一个或多个低功率 模式。这样的低功率模式包括完全断开功率状态、挂起(suspend)到RAM (随机存取存储器)功率状态、挂起到盘(休眠)状态、和/或一种或多种 类型的待机功率状态。完全断开功率状态一般消耗任何平台功率状态的最 低数量的功率。然而,完全断开功率状态需要平台在通电操作被再次应用 之后完成平台软件的完全引导(boot)。这样的完全引导引起不希望有的引 导时延。

挂起到RAM功率状态是完全断开状态的替代状态。挂起到RAM功率 状态保持平台软件的操作状态(如它紧接着在进入挂起到RAM功率状态之 前存在的那样)。因为平台软件操作状态在挂起到RAM功率状态期间保持 在RAM中,平台软件只需要执行引导过程的部分,以在它在进入挂起到 RAM状态之前的断开处继续。

附图说明

图1示出在活动功率状态和挂起到RAM(随机存取存储器)功率状态 之间转变的示例处理器系统。

图2示出可用于在处理器系统的低功率状态期间保护存储器区的图1 的示例处理器系统的示例部件。

图3示出用于存储在低功率状态期间存储在系统存储器中的平台软件 的被保护区的签名和位置信息的示例数据结构格式。

图4示出表示计算机可读指令的示例流程图,所述计算机可读指令根 据本公开的教导可被执行来在低功率模式功率状态和活动功率状态之间转 变图1的处理器系统。

图5示出表示计算机可读指令的示例流程图,所述计算机可读指令可 被执行来在冷引导或从低功率状态恢复期间,执行主机引导序列以引导处 理器系统。

图6示出表示计算机可读指令的示例流程图,所述计算机可读指令可 被执行来将处理器系统转变到低功率状态。

图7A和7B示出表示计算机可读指令的示例流程图,所述计算机可读 指令可被执行来对软件平台操作状态验证存储数据的系统存储器的被保护 区。

图8示出表示计算机可读指令的示例流程图,所述计算机可读指令可 在冷引导过程或从低功率状态恢复的恢复过程下,被执行来引导处理器系 统。

图9示出表示计算机可读指令的示例流程图,所述计算机可读指令可 被执行来产生可用来认证挂起到RAM数据结构的签名。

图10示出表示计算机可读指令的示例流程图,所述计算机可读指令可 被执行来验证挂起到RAM数据结构的有效性。

具体实施方式

本文公开的示例方法、装置、系统、以及制品能够在处理器系统的低 功率状态期间保护存储器的区。在本文中关于挂起到RAM(随机存取存储 器)功率状态描述了所公开的示例。然而,本文公开的示例可此外或可选 地用于在处理器系统的其它功率状态期间保护存储器的区。

处理器系统可配置成在不同功率状态之间转变(范围从完全通电到完 全断开状态)。这些不同的功率状态被提供以节约功率。中间功率状态例如 挂起到RAM功率状态有时用于:达到在较低功率消耗和具有(比或者当从 完全断开状态或挂起到盘(例如休眠)功率状态执行冷引导时可能的相对 快地)恢复操作(例如退出挂起到RAM功率状态到完全接通状态)的能力 之间的平衡。挂起到RAM功率状态是低功率状态,其中处理器系统保持在 (当处理器系统发起其到挂起到RAM状态的转变时)运行的平台软件(例 如操作系统(OS)和/或应用)的随机存取存储器中的状态。当处理器系统 恢复或退出挂起到RAM状态到完全接通功率状态时,处理器系统不需要执 行整个平台引导软件,如在从完全断开状态或休眠状态执行冷引导时所需 要的。在之前的系统中,在恢复时不执行整个平台引导软件,这引入了潜 在的安全风险,因为平台系统存储器可能被危害(当它在挂起到RAM功率 状态中时)。例如,恶意代码可被写到存储平台软件的操作状态的存储器区。 当从这样的之前的系统的挂起到RAM状态恢复时,被危害的平台软件可被 执行,并允许攻击者控制系统或者危害系统。

与(当在挂起到RAM功率状态中时)有安全漏洞的之前的系统不同, 在本文公开的示例可用于在处理器系统在挂起功率状态或低功率状态(例 如挂起到RAM功率状态)中时,实现可信恢复,以给平台软件和系统集成 器提供特征来保护平台软件。

图1示出示例处理器系统100,其可用于在处理器系统100的低功率状 态期间实现本文公开的示例以保护存储器区。在所示示例中,处理器系统 100被示为在活动功率状态102和挂起到RAM(STR)功率状态104之间 转变。在所示示例的活动功率状态102中,微处理器(uP)子系统106、通 信子系统108、存储器子系统110、以及用户接口(I/F)子系统112被示为 完全被供电。在所示示例的挂起到RAM功率状态104中,微处理器子系统 106、通信子系统108、存储器子系统110、以及显示器子系统112被示为 在低功率状态中,其中功率从其部分被移除。

在所示示例中,微处理器子系统106、通信子系统108、存储器子系统 110、以及显示器子系统112仅仅被部分地供电,而功率保持施加到部分114、 116、118、以及120。以这种方式,被供电的部分114、116、118、以及120 可用于恢复处理器系统100的活动功率状态102(从挂起到RAM功率状态 104)。在所示示例中,被供电的微处理器部分112包括被持续供电的存储 器(例如图2的持续被供电的存储器212)以将地址或指针存储到认证表(例 如图2的挂起到RAM数据结构216的指针),认证表存储安全参数(例如 签名)和在挂起到RAM功率状态104期间存储在RAM(例如图2的系统 存储器210)中的平台软件的存储器地址位置。在所示示例中,被供电的通 信子系统部分114可包括到唤醒LAN(局域网)电路或其它唤醒网络电路 的功率,以使用网络通信来恢复处理器电路100。在所示示例中,被供电的 存储器子系统部分116包括用于在处理器系统100在挂起到RAM功率状态 104中时存储平台软件的状态的系统存储器(例如图2的系统存储器210)。 所示示例的被供电的用户接口部分118可包括功率以检测电源/唤醒按钮的 压下或键盘键的压下或任何其它类型的人机接口设备(HID)的其它用户输 入。

在本文公开的示例能够使用可信恢复来通过提供各种示例保护特征或 信任特征,将处理器系统100从挂起到RAM功率状态104转变到活动状态 102。在所示示例中,可信恢复(a)实质上减小了恶意攻击改变系统存储 器(例如图2的系统存储器210)的内容的能力,其中所述系统存储器存储 当在低功率模式(例如挂起到RAM功率状态104)中时的平台软件的状态; (b)实质上减小执行系统存储器重放攻击和/或回滚攻击的能力;(c)能够 指定在系统存储器(例如图2的系统存储器210)中的多个认证/非认证区; (d)使主机处理器(例如图2的主机处理器202)能够产生/认证所选择的 被保护区(例如图2的被保护区218)的签名而不知道签名密钥;以及(e) 使(例如主机处理器(例如图2的主机处理器202)、安全处理器(例如图 2的安全处理器204)、和/或处理器系统)的硬件制造商和第三方销售商能 够指定被保护区(例如图2的被保护区218)的量(例如至少最小量),其 中所述被保护区将通过使用根据本文公开的可信恢复技术的认证和验证过 程被保护。如下面详细描述的,本文公开的示例通过以下来提供这些保护: 在转变到挂起到RAM功率状态104期间,认证/签名系统存储器(例如动 态随机存取存储器(DRAM))的关键部分,并在从挂起到RAM状态104 恢复到活动功率状态102中时,验证系统存储器的那些已认证/签名的关键 部分。在所公开的示例中,引导序列的关键部分在引导序列期间聚合,使 得引导序列的阶段N添加关于阶段N+1的被保护区(例如图2的被保护区 218)。为了抵御回滚攻击,随机或伪随机值(例如临时值)合并到认证/签 名过程中,并在挂起到RAM功率状态104期间存储在被持续供电的存储器 (例如图2的被持续供电的存储器212)中。

图2示出可用于管理处理器系统100的功率状态转变的图1的示例处 理器系统100的示例部件。在所示示例中,处理器系统100包括主机处理 器(CPU)202、安全处理器(CPU)204、闪存206、主机引导RAM 208、 系统存储器210、以及被持续供电的存储器212。所示示例的处理器系统100 可以是例如服务器、个人计算机、移动电话(例如蜂窝电话)、个人数字助 理(PDA)、互联网电器、DVD播放器、CD播放器、数字视频记录器、蓝 光播放器、游戏控制台、个人视频记录器、机顶盒、或任何其它类型的计 算设备。

在所示示例中,主机CPU 202、安全CPU 204、以及主机引导RAM 208 位于同一硅管芯上,使得在处理器202和204之间的处理器间通信和与主 机引导RAM 208的通信不暴露于硅管芯之外。这通过实质上减小对在主机 CPU 202、安全CPU 204、和/或主机引导RAM 208之间的安全通信和交换 的安全数据的外部可访问性,来提供在本文公开的示例中进一步的安全性。 此外在所示示例中,闪存206和系统存储器210位于单独的集成电路上, 集成电路位于与包含主机CPU 202、安全CPU 204、以及主机引导RAM 208 的硅管芯相同的电路板上。

可通过使用来自任何期望系列或制造商的处理器或控制器来实现处理 器202和204。在所示示例中,处理器间通信(IPC)路径214设置在处理 器202和204之间以实现其间的处理器间通信。在所示示例中,主机处理 器202包括可使用嵌入式静态随机存取存储器(SRAM)实现的被持续供电 的存储器212。因为SRAM是易失性存储器,它在所示示例中在低功率模 式(例如图1的挂起到RAM功率状态104)期间,保持被供电(或其一部 分保持被供电),使得存储在其中的数据被保存。

处理器202和204与闪存206、主机引导RAM 208、以及系统存储器 210通信。虽然未示出,处理器202和204也可与存储操作系统和/或应用 的大容量存储器(例如硬盘驱动器)通信。在所示示例中,闪存206是用 于存储用于引导处理器系统100的参数(例如安全参数和/或当功率被完全 移除时不在易失性存储器中保存的其它参数)的非易失性存储器。所示示 例的主机引导RAM 208存储用于引导处理器系统100并装载操作系统的引 导代码。所示示例的主机引导RAM 208也存储制造商所需的区表224以指 示存储在系统存储器210中的平台软件的被保护区(例如图2的被保护区 218)。在所示示例中,主机CPU 202、安全CPU 204、处理器系统100、和 /或处理器系统100的一个或多个硬件部件的硬件制造商指定在制造商所需 的区表224中指示的区(例如被保护区218),使得那些指定的区使用本文 公开的示例在挂起到RAM功率状态104(图1)期间被保护以实现可信恢 复。

在所示示例中,主机引导RAM 208也存储条件存取(CA)所需的区表 226(例如第三方所需的区表)以指示在系统存储器210中存储的平台软件 的第三方指定的被保护区(例如图2的被保护区218)。在所示示例中,CA 所需的区表226是可由售后产品或发展(例如在处理器系统100中的售后 软件和/或硬件安装)的第三方访问和修改的。例如,一个或多个第三方指 定在CA所需的区表226中指示的区(例如被保护区218),使得那些指定 区使用本文公开的示例在挂起到RAM功率状态104(图1)期间被保护以 实现可信恢复。在所示示例中,安全CPU 204在主机CPU 202开始执行指 令之前将CA所需的区表226拷贝到主机引导RAM 208中并从主机引导 RAM 208认证。在所示示例中,这在功率状态转变期间发生,其中主机CPU 202从其重置矢量引导(例如当从挂起到RAM功率状态104恢复和/或在冷 引导期间时)。在一些示例中,CA所需的区表226可存储在阶段1引导装 载程序(loader)(例如图5所示的阶段1引导过程)期间被认证的主机引 导RAM 208的认证区域中。可选地,CA所需的区表226可被实现为阶段 1引导装载程序参数块的部分。

使用制造商所需的区表224和CA所需的区表226使硬件制造商和第三 方能够指定他们认为使用本文公开的示例的保护中有用的被保护区(例如 被保护区218)。在一些示例中,制造商所需的区表224和CA所需的区表 226可以可选地被实现为存储在主机引导RAM 208中的单个表。

所示示例的系统存储器210存储:在处理器系统100从活动功率状态 102转变到图1的挂起到RAM功率状态104时运行的平台软件(例如操作 系统和/或应用)的操作状态。以这种方式,处理器系统102可基于存储在 系统存储器210中的平台软件状态,从挂起到RAM功率状态104转变到活 动功率状态102以恢复它在进入挂起到RAM功率状态104之前所处于的相 同操作状态。例如,操作系统可恢复到其相同的以前操作状态,且以前装 载和运行的应用可恢复到其相同的以前的操作状态。

使用易失性动态随机存取存储器(DRAM)来实现所示示例的系统存 储器210。在一些示例中,为了使这样的易失性DRAM能够在挂起到RAM 功率状态104中的同时保存其数据,至少最小量的功率被提供到易失性 DRAM,且易失性DRAM被设置为在低功率、自我刷新模式中操作,其中 存储在其中的数据被保存。在其它示例中,可使用缓存存储器、易失性 SRAM、和/或任何其它类型的易失性或非易失性存储器来实现系统存储器 210。

在所示示例中,系统存储器210存储平台软件的挂起到RAM(STR) 数据结构216和被保护区218。在所示示例中,被保护区218存储在挂起到 RAM功率状态104期间存储在系统存储器210中的平台软件的选定部分, 所述部分将通过使用安全参数(例如签名)对被保护区218进行签名或认 证而被保护免受攻击。STR数据结构216将指向平台软件的被保护区218 的地址或指针存储在使用本文公开的示例在挂起到RAM功率状态104期间 保护的系统存储器210中。所示示例的STR数据结构216也存储用于认证 其数据并在从挂起到RAM功率状态104恢复时确定其数据的有效性的安全 参数(例如签名)。下面关于图3描述用于在所示示例中实现STR数据结构 216的示例格式。

通过攻击者修改在STR数据结构216中的信息以指向存储恶意软件的 系统存储器210的不同区,可在处理器系统100上尝试攻击,以便在处理 器系统100恢复到完全活动的功率状态102时使主机CPU 202执行这样的 恶意代码。为了检测这样的修改是否存在于STR数据结构216中,在本文 公开的验证过程在处理器系统100的可信恢复期间被执行,且验证过程在 它检测到在挂起到RAM功率状态104期间STR数据结构216被修改时, 产生错误。以这种方式,主机CPU 202和/或安全CPU 204可防止处理器系 统100继续进行恢复过程,使得处理器系统100不能被恶意软件危害。

在所示示例中,主机CPU 202的被持续供电的存储器212将指向STR 数据结构216的存储位置(例如存储器地址)的示例STR数据结构指针220 存储在系统存储器210中。在处理器系统100从挂起到RAM功率状态104 转变的可信恢复过程期间,主机CPU 202可取回STR数据结构指针220来 定位STR数据结构216以能够验证平台软件的被保护区218的完整性。

在所示示例中,主机CPU 202的被持续供电的存储器212也存储示例 随机/伪随机值222。所示示例的随机/伪随机值222用作临时值以产生验证 签名来确认在挂起到RAM功率状态104期间存储在系统存储器210中的平 台软件的被保护区208的完整性。在所示示例中,当处理器系统100转变 到挂起到RAM功率状态104中时,随机/伪随机值222用于产生验证签名。 在产生验证签名之后,随机/伪随机值222安全地存储在被持续供电的存储 器212中而免受不希望有的访问。以这种方式,当从挂起到RAM功率状态 04恢复时,随机/伪随机值222可从被持续供电的存储器212取回,并用于 验证平台软件的被保护区218的完整性。在所示示例中,随机/伪随机值222 用于通过用作任何潜在的攻击者非常难以访问或修改的唯一秘密值来抵御 重放/回滚攻击,因为它存储在主机CPU 202的被持续供电的存储器212中。 此外,随机/伪随机值222不容易被攻击者预测,因为它是足够随机的。在 一些示例中,选择随机/伪随机值222的相对大数量的位(例如64位或更多) 也通过从时间和存储观点看使攻击者发动碰撞攻击变得非常昂贵来抵御重 放/回滚攻击。例如,使用具有相对大数量的位的随机/伪随机值222将需要 攻击者存储很多DRAM/STR数据结构置换以发动碰撞攻击。

图3示出示例挂起到RAM(STR)数据结构格式300,其可用于实现 图2的STR数据结构216以存储签名和位置信息来认证在图1的挂起到 RAM功率状态104期间保存在图2的系统存储器210中的平台软件的被保 护区218。在所示示例中,STR数据结构格式300包括用于将STR签名存 储在零(0)字节偏移处并占据在STR数据结构216中的16字节的数据尺 寸的STR头部签名字段302。所示示例的STR头部签名被用于认证STR数 据结构216的STR头部(例如存储在STR头部字段308中)以确认它是有 效的(例如它在挂起到RAM功率状态104期间没有被改变或危害)。

所示示例的STR数据结构格式300包括用于将STR分散/集合表签名存 储在16字节偏移处并占据在STR数据结构216中的16字节的数据尺寸的 STR分散/集合表签名字段304。在所示示例中,STR分散/集合表签名用于 认证存储在STR数据结构216中的Nx8字节分散/集合表310以确认它是有 效的(例如它在挂起到RAM功率状态104期间没有被改变或危害)。在所 示示例中,分散/集合表310将指向位置的指针存储在系统存储器210中, 系统存储器210存储平台软件的被保护区218。

所示示例的STR数据结构格式300还包括用于将STR DRAM签名存储 在32字节偏移处并占据在STR数据结构216中的16字节的数据尺寸的STR DRAM签名字段306。在所示示例中,STR DRAM签名用于认证在存储在 STR数据结构216中的分散/集合表310中规定的DRAM区域以确认它是有 效的(例如它在挂起到RAM功率状态104期间没有被改变或危害)。在所 示示例中,存储在指针-0字段312中的指针指向由分散/集合表310规定的 DRAM区域,且它是被保护区218(图2)的第一16字节对齐缓冲区。

在所示示例中,当处理器系统100转变到挂起到RAM功率状态104时, 存储在STR头部签名字段302、STR分散/集合表签名字段304、以及STR DRAM签名字段306中的签名用于签名STR数据结构216。以这种方式, 当将处理器系统100从挂起到RAM功率状态104恢复以确定STR数据结 构216是否是有效的(例如在挂起到RAM功率状态104期间没有被改变或 危害)时,所存储的签名可被使用。例如,潜在的攻击者可修改在STR数 据结构216中的信息以指向存储恶意软件的系统存储器210的不同区,以 便当处理器系统100恢复到完全活动的功率状态102时使主机CPU 202执 行这样的恶意代码。如果这样的修改存在于STR数据结构216中,则在处 理器系统100的可信恢复期间执行的验证过程基于STR头部签名字段302、 STR分散/集合表签名字段304、和/或STR DRAM签名字段306中的一个 或多个的签名而产生错误。

虽然在图3中示出三个签名字段302、304、以及306,更少的签名(例 如一个签名或两个签名)或更多的签名(例如多于三个签名)可与本文公 开的示例一起使用来认证/签名STR数据结构216并确认它在恢复操作期间 的有效性。此外,虽然在本文公开了特定类型的签名(例如头部签名、分 散/集合表签名、以及DRAM签名),其它类型的签名和/或产生签名的其它 方式可与本文公开的示例一起使用来认证/签名STR数据结构216并确认它 在恢复操作期间的有效性。例如,可基于在STR数据结构216中的不同信 息(例如更多的信息、更少的信息、或不同地分割的信息)来产生一个或 多个签名,只要签名可用于在进入低功率模式中时认证/签名STR数据结构 216并在恢复过程期间使它生效。

所示示例的STR头部字段308包括指示STR数据结构格式300的修订 版的STR数据结构版本字段316,以及指示存储在分散/集合表310中的分 散/集合条目的数量的分散/集合阵列条目数量字段318。

在所示示例中,在分散/集合表310中的每个分散/集合条目包括在被保 护区218(图2)中的对应存储器区的存储器地址位置和数据尺寸。分散/ 集合表310包括指针-0字段312以将指向存储器地址位置的指针存储在: 由存储在STR DRAM签名字段306中的STR DRAM签名保护的第一16字 节对齐缓冲区的系统存储器210中。分散/集合表310的尺寸-0字段320将 数据尺寸存在第一16字节对齐缓冲区的字节中。所示示例的分散/集合表 310包括多个其它指针/尺寸字段对322,其指示在系统存储器210中的存储 器地址位置和其它16字节对齐缓冲区的对应的数据尺寸,一直到对应于指 针-N字段324和尺寸-N字段326的第N个16字节对齐缓冲区。在所示示 例中,指针和尺寸字段312、320、322、324、以及326指在存储被保护区 218的系统存储器210中的16字节对齐缓冲区。通过以这种方式将被保护 区218的地址和尺寸存储在STR数据结构216中,在本文公开的示例可通 过依赖于STR数据结构216的认证/签名来确定当从挂起到RAM功率状态 104恢复时访问被保护区218是否是安全的。

在所示示例中,分散/集合表310可扩展为16字节的倍数的尺寸。为了 这个可扩展性,给分散/集合表310提供填充字节328。

虽然在图3中结合特定的数据尺寸(例如4字节、8字节、16字节、 32字节等)和字节偏移示出示例STR数据结构格式300,其它数据尺寸和/ 或字节偏移可用于STR数据结构格式300的参数(例如签名的数据尺寸和/ 或字节偏移和/或其它参数)。虽然分散/集合表310指16字节对齐缓冲区, 分散/集合表310可适合于与其它缓冲区尺寸一起使用。此外,虽然在分散/ 集合表310中的指针和尺寸值在所示示例中用于指定被保护区218(图2) 的位置和尺寸,可此外或可选地使用用于指定被保护区218的位置和/或尺 寸的其它适当的方式。

图4、5、6、7A、7B、以及8-10表示可由处理器系统100(图1和2) 执行来在低功率状态期间保护存储器的区的机器可读指令,如在本文中公 开的。在这些示例中,机器可读指令包括用于由一个或多个处理器(例如 图2的主机CPU 202和安全CPU 204)执行的程序。程序可体现在存储在 有形计算机可读介质(例如CD-ROM、软盘、硬盘驱动器、数字通用盘 (DVD)、蓝光盘)、或与处理器202和204相关联的存储器上的软件中, 但整个程序和/或其部分可以可选地由除了处理器202和204以外的设备执 行和/或体现在固件或专用硬件中。此外,虽然参考图4、5、6、7A、7B、 以及8-10所示的流程图描述了示例程序,可以可选地使用实现示例处理器 系统100的很多其它方法。例如可改变块的执行的顺序和/或可改变、消除、 或组合一些所描述的块。

如上面提到的,可使用存储在有形计算机可读介质(例如硬盘驱动器、 闪存、只读存储器(ROM)、光盘(CD)、数字通用盘(DVD)、缓存、随 机存取存储器(RAM))和/或任何其它存储介质上的编码的指令(例如计 算机可读指令)来实现图4、5、6、7A、7B、以及8-10的示例过程,其中 信息被存储任何持续时间(例如延长的时间段、永久地、短暂时刻、暂时 缓冲、和/或信息的缓存)。如在本文中使用的,术语“有形计算机可读介质” 明确地被定义为包括任何类型的计算机可读存储设备并排除传播信号。此 外或可选地,使用存储在非暂时性计算机可读介质(例如硬盘驱动器、闪 存、只读存储器、光盘、数字通用盘、缓存、随机存取存储器)和/或任何 其它存储介质上的编码的指令(例如计算机可读指令)来实现图4、5、6、 7A、7B、以及8-10的示例过程,其中信息被存储任何持续时间(例如延长 的时间段、永久地、短暂时刻、暂时缓冲、和/或信息的缓存)。如在本文中 使用的,术语“非暂时性计算机可读介质”明确地被定义为包括任何类型 的计算机可读存储设备或存储磁盘并排除传播信号。如在本文中使用的, 当短语“至少”在权利要求的序言中用作过渡词时,它以与术语“包括” 是开放的相同的方式是开放的。因此,在序言中使用“至少”作为过渡词 的权利要求可包括除了在权利要求中明确列举的那些元件以外的元件。

图4是根据本公开的教导的表示在活动功率状态102(图1)和挂起到 RAM功率状态104(图1)之间转变图1的处理器系统100的计算机可读 指令的示例流程图。为了更详细的讨论,下面描述的图5、6、7A、7B、以 及8-10示出可被执行来在活动功率状态102和挂起到RAM功率状态104 之间转变处理器系统100的额外的示例操作,如在本文中公开的。

详细地转到图4,最初,主机CPU 202(图2)接收低功率模式指令(块 402)。所示示例的低功率模式指令是将处理器系统100(图1和2)转变到 挂起到RAM功率状态104(图1)的指令。安全CPU 204(图2)添加条 目以识别在图2的STR数据结构216中的被保护区218(块404)。例如, 安全CPU 204将指示被保护区218的质量的信息存储在STR数据结构216 (图2)的分散/集合阵列条目数量字段318(图3)中,并存储描述被保护 区218的位置和尺寸的STR数据结构216的分散/集合表310(图3)中的 条目。在所示示例中,安全CPU 204基于在图2的制造商所需的区表224 中的由硬件制造商指定的存储器区、和/或在图2的条件存取所需的区表226 中的由一个或多个第三方指定的存储器区,来确定哪些存储器区是被保护 区218。

安全CPU 204产生用于认证STR数据结构216的签名(块406)。例如, 安全CPU 204产生用于存储在图3的STR头部签名字段302、STR分散/ 集合表签名304、以及STR DRAM签名字段306中的签名。安全CPU 204 可使用如下的任何适当的函数以产生签名,包括:例如基于密码的消息认 证代码(CMAC)函数、基于散列的消息认证代码(HMAC)、或用于产生 签名的任何其它适当函数。在所示示例中,安全CPU 204通过将签名产生 函数应用于存储在STR数据结构216的STR头部字段308(图3)中的STR 头部来产生STR头部签名。在所示示例中,安全CPU 204通过将签名产生 函数应用于存储在STR数据结构216的STR分散/集中表310(图3)中的 STR分散/集中表来产生STR分散/集中表签名。在所示示例中,安全CPU 204通过将签名产生函数应用于由分散/集合表310的指针-0字段312指向 的(并占据被保护区218(图2)的第一16字节对齐缓冲区的)DRAM区 域来产生STR DRAM签名。在一些示例中,当产生签名以添加额外的认证 强度时可结合其它数据(例如随机/伪随机值)来使用签名产生函数。

安全CPU 204将签名存储在STR数据结构216中(块408)。例如,安 全CPU 204将签名存储在STR数据结构216(图2)的STR头部签名字段 302、STR分散/集合表签名304、以及STR DRAM签名字段306(图3)中。 处理器系统100进入低功率模式(块410)。在所示示例中,低功率模式是 图1的挂起到RAM功率状态104。

在某个随后的时间,处理器系统100接收恢复指令(块412)。例如, 处理器系统100经由图1的通信子系统108接收唤醒LAN指令,或经由图 1的用户接口112接收用户输入,或接收任何其它适当的输入(例如唤醒定 时器输入、服务中断等)以将处理器系统100从挂起到RAM状态104转变 到活动状态102。

安全CPU 204从系统存储器210读取STR数据结构216(块414)。安 全CPU 204确定STR数据结构216是否是有效的(块416)。例如,安全 CPU 204以与上面关于块406描述的相同的方式重新产生签名,用于与存 储在图3的STR头部签名字段302、STR分散/集合表签名字段304、以及 STR DRAM签名字段306中的签名进行比较。以这种方式,安全CPU 204 可将在块416产生的每个签名与在块406产生的其对应的签名(例如,STR 头部签名、STR分散/集合表签名、以及STR DRAM签名)进行比较,以 验证STR数据结构216的不同部分并确认STR数据结构216是否是有效的。 如果任何重新产生的签名不匹配来自块406的其对应的签名,则安全CPU 204可确定在处理器系统100上的潜在攻击被尝试。

如果安全CPU 204确定STR数据结构216是有效的(块418),则主机 CPU 202还原平台软件的状态(块420)。主机CPU 202实现处理器系统100 的活动功率状态102(块422)。然而,如果在块418安全CPU 204确定STR 数据结构216不是有效的(例如重新产生的签名之一不匹配在块406产生 的并存储在STR数据结构216中的其对应的签名),则安全CPU 204将错 误返回到主机CPU 204(块424)。以这种方式,主机CPU 204可防止处理 器系统100恢复活动状态100,并可执行预先定义的操作或过程以防止对处 理器系统100的攻击。在一些示例中,这样的预先定义的操作或过程涉及 发起处理器系统100的硬重置。在块422处实现活动功率状态之后或在块 424处返回错误之后,图4的示例过程结束。

图5示出表示计算机可读指令的示例流程图,所述计算机可读指令可 被执行来在冷引导或从挂起到RAM功率状态104(图1)恢复期间执行主 机引导序列以引导处理器系统100(图1和2)。在所示示例中,一直到块 518和包括块518的操作,作为阶段-1(S1)引导过程的部分而被执行,且 块520、522、以及524的操作在阶段-2(S2)引导过程期间被执行。

最初,主机CPU 202执行存储在主机引导RAM 208中的主机引导RAM 指令(块502)。主机CPU 202初始化缓存和闪存206(块504)。主机CPU 202初始化外部DRAM(块506)。在所示示例中,外部DRAM是系统存储 器210。在一些示例中,主机CPU 202使用存储在主机引导RAM 208中的 S1参数(阶段-1引导装载程序参数)来初始化外部DRAM。

主机CPU 202经由图2的处理器间通信路径214将ADD区IPC指令发 送到安全CPU 204(块508)。在所示示例中,主机CPU 202发出ADD区 IPC指令,使得在阶段2引导过程期间存储/创建的平台软件的区可被表示 为被保护区218(图2),以便它们可使用本文公开的签名/认证技术来保护。

主机CPU 202确定它是否从完全断电状态执行冷引导(块510)。如果 它执行冷引导,则主机CPU 202记录冷引导(块512)并调用阶段-2认证 序列(块514)。否则,如果主机CPU 202确定它不执行冷引导(块510), 则它从挂起到RAM功率状态104(图1)恢复,且主机CPU 202调用验证 DRAM过程(块516)。下面关于图7A和7B描述可在块516处调用的用于 验证DRAM的示例过程。

在块514处调用阶段-2认证序列之后或在块516处调用验证DRAM过 程之后,主机CPU 202跳到阶段-2公共条目点(块518)。在所示示例中, 阶段-2公共条目点允许主机CPU 202执行阶段-2引导过程。

在阶段-2引导过程期间,主机CPU 202执行其它初始化操作(块520)。 这样的其它初始化操作可包括:其它初始化微处理器子系统106和/或存储 器子系统110的其它部分、初始化通信子系统108的部分、初始化图1的 用户接口子系统112的其它部分、和/或按在阶段-2引导过程期间需要出现 的而执行由系统设计者配置的任何其它初始化。

主机CPU 202调用恢复切换过程(块522)。下面关于图8描述可在块 522处调用的示例恢复切换过程。在所示示例中,恢复切换过程能够添加 ACPI表作为被保护区218。主机CPU 202然后完成引导操作的其余部分(块 524)。在所示示例中,所执行的其余引导操作是基于主机CPU 202是否执 行冷引导或恢复的。图5的示例过程然后结束。

图6示出表示计算机可读指令的示例流程图,所述计算机可读指令可 被执行来将处理器系统100(图1和2)从活动功率状态102(图1)转变 到挂起到RAM功率状态104(图1)。在所示示例中,图6的示例过程可通 过用户输入(例如用户压下/选择睡眠按钮)、超时中断、或任何其它适当的 用户和/或机器输入来调用,以将处理器系统100转变到低功率模式。

最初,主机CPU 202冻结应用和中间件(块602),例如停止执行任何 进一步的行动直到处理器系统100恢复回到活动功率状态102。主机CPU 202挂起驱动器(块604)。主机CPU 202将被保护区218添加到STR数据 结构216(块606)。在所示示例中,主机CPU 202通过根据图3的分散/集 合表310的格式将位置和尺寸信息添加在STR数据结构216的分散/集合表 中,来将平台软件的被保护区218添加到STR数据结构216。以这种方式, STR数据结构216可用于将被保护区218定位在系统存储器210中。主机 CPU 202将IPC指令发送到安全CPU 204以签名/认证DRAM(块608)。 所示示例的签名DRAM IPC指令使安全CPU 204签名存储在系统存储器 210中的STR数据结构216。

安全CPU 204然后执行签名STR数据结构216的操作。最初,安全CPU 204产生临时值(块610)。在所示示例中,所产生的临时值是图2的随机 或伪随机值222,且它用于产生用于签名/认证STR数据结构216的签名。 所示示例的签名包括存储在图3的STR头部签名字段302、STR分散/集合 表签名字段304、以及STR DRAM签名字段306中的签名。在所示示例中, 随机/伪随机值222用于临时值以使任何潜在的攻击者难以重放DRAM的内 容。

安全CPU 204将临时值(例如随机/伪随机值222)和STR数据结构指 针220(图2)存储在被持续供电的存储器212中(块612)。以这种方式, 临时值(例如随机/伪随机值222)和STR数据结构指针220在挂起到RAM 功率状态104期间被保存,且是可访问的以恢复到活动功率状态102,因为 被持续供电的存储器212在挂起到RAM功率状态104期间保持被供电。

安全CPU 204对图2的STR数据结构216进行签名(块614)。在所示 示例中,安全CPU通过产生对应于图3的STR头部签名字段302、STR分 散/集合表签名字段304、以及STR DRAM签名字段306的签名而签名STR 数据结构216。下面关于图9描述可用于实现块614的示例签名过程。

安全CPU 204将STR数据结构216和签名(例如在STR头部签名字段 302、STR分散/集合表签名字段304、以及STR DRAM签名字段306中的 签名)存储在系统存储器210中(块616)。主机CPU 202将处理器系统100 转变到挂起到RAM功率状态104中(块618)。图6的示例过程然后结束。

图7A和7B示出表示计算机可读指令的示例流程图,所述计算机可读 指令可被执行来验证存储软件平台操作状态的数据的系统存储器210(图2) 中的被保护区218(图2)的有效性。可从图5的块516例示图7A和7B 的示例过程。如图7A所示,最初,主机CPU 202将验证IPC命令发送到 安全CPU 204(块204)。验证IPC命令使安全CPU 204执行验证过程以验 证被保护区218的有效性。安全CPU 204从被持续供电的存储器212读取 临时值(例如随机/伪随机值222)(块704)。在所示示例中,临时值是当将 处理器系统100转变到挂起到RAM功率状态104时在图6的块610处产生 的随机/伪随机值222(图2)。

安全CPU 204例如用任何随机数据重写在被持续供电的存储器212中 的临时值(例如随机/伪随机值222)(块706)。在所示示例中,以这种方式 重写临时值通过不让临时值暴露给潜在的攻击者以重新使用,来抵御重放 攻击。安全CPU 204从被持续供电的存储器212读取STR数据结构指针220 (块708)。安全CPU 204使用STR数据结构指针220来从系统存储器210 定位和读取STR数据结构216(图2)(块710)。安全CPU 204验证STR 数据结构216的有效性(块712)。下面关于图10描述可用于在块712处验 证STR数据结构216的有效性的示例过程。

安全CPU 204确定签名是否被验证(块714)(图7B)。在所示示例中, 检查有效性的签名是在图3的STR头部签名字段302、STR分散/集合表签 名字段304、以及STR DRAM签名字段306中的签名的签名。如果安全CPU 204在块714处确定一个或多个签名未被验证为有效的,则安全CPU 204 产生错误(块716)。在块716处产生错误之后,或如果安全CPU 204在块 714处确定所有签名被验证为有效的,则安全CPU 204读取图2的CA所需 的区表226(块718)。安全CPU 204也读取图2的制造商所需的区表224 (块720)。在所示示例中,安全CPU 204可在主机CPU 202所提供的地址 处从主机引导RAM 208取回CA所需的区表226和制造商所需的区表224。 例如,CA所需的区表226和制造商所需的区表224所位于的地址可被存储 为在S1参数中的指针,并可由主机CPU 202从S1参数取回。

安全CPU 204确定在CA所需的区表226中指定的区是否被STR数据 结构216覆盖(块722)。例如,安全CPU 204将在CA所需的区表226中 指定的区与在STR数据结构216的分散/集合表310(图3)中指定的被保 护区218进行比较。如果在CA所需的区表226中指定的区没有被STR数 据结构216覆盖(块722),则安全CPU 204产生错误(块724)。在块724 处产生错误之后或如果安全CPU 204在块722处确定在CA所需的区表226 中指定的区被STR数据结构216覆盖,则安全CPU 204确定在制造商所需 的区表224中指定的区是否被STR数据结构216覆盖(块726)。例如,安 全CPU 204将在制造商所需的区表224中指定的区与在STR数据结构216 的分散/集合表310(图3)中指定的被保护区218进行比较。如果在制造商 所需的区表224中指定的区没有被STR数据结构216覆盖(块726),则安 全CPU 204产生错误(块728)。在块728处产生错误之后,或如果安全CPU 204在块726处确定在制造商所需的区表224中指定的区被STR数据结构 216覆盖,则安全CPU 204将指示例如任何验证错误是否产生、签名在块 714处是否成功地被验证为有效的、和/或在CA所需的区表226和制造商 所需的区表224中指定的区是否被STR数据结构216覆盖的状态返回到主 机CPU 202(块730)。

主机CPU 202例如基于从安全CPU 204接收的状态(例如错误状态或 验证成功状态)确定DRAM(例如系统存储器210)是否被验证为有效的 (块732)。如果DRAM未被验证,则主机CPU 202执行硬件重置(块734)。 在所示示例中,当DRAM未被验证时,可能可在处理器系统100上进行攻 击。因此,硬件重置在块734处用于再次初始化处理器系统100以从冷引 导状态重新引导,使得系统存储器210的内容被丢弃并被再次装载和/或再 次初始化。在执行硬件重置734之后,或如果DRAM在块732处被验证为 有效的,则图7A和7B的示例过程结束和/或返回到调用函数或过程,例如 图5的示例过程。

图8示出表示计算机可读指令的示例流程图,其可被执行来在冷引导 过程或挂起到RAM恢复过程下引导处理器系统100(图1和2)。可通过图 5的块522的调用恢复切换操作例示图8的示例过程。最初,主机CPU 202 从片上寄存器读取冷引导恢复标记(块802)。例如,可在主机CPU 202中 的片上寄存器中设置冷引导恢复标记以指示引导过程是否是冷引导过程, 或是将处理器系统100从低功率模式(例如挂起到RAM功率状态104)转 变到图1的活动功率状态102的恢复过程。

主机CPU 202基于在块802处读取的冷引导恢复标记来确定引导过程 是否是冷引导或恢复(块804)。如果引导过程是冷引导(块804),则主机 CPU 202产生ACPI表(块806)并将ACPI表添加到被保护区218(块808) 作为CEFDK(消费者电子设备固件开发套件)阶段-2过程的部分。在所示 示例中,ACPI表被添加到被保护区218,使得ACPI表被STR数据结构216 的签名/认证保护。主机CPU 202设置ACPI表中的唤醒矢量(块810)作 为操作系统过程的部分。控制接着返回到冷引导路径(例如在图5中),且 图8的示例过程结束。

如果主机CPU 202在块804处确定引导过程是恢复,则主机CPU 202 读取以前产生和存储的ACPI表(块812),并使用在ACPI表中的唤醒矢量 作为在操作系统中的条目点(块814)作为CEFDK阶段-2过程的部分以继 续恢复过程。在所示示例中,在块812和814处访问的ACPI表可以是在冷 引导过程期间在被保护区218中产生和存储的ACPI表(例如在块806和 808),且在块814处使用的唤醒矢量可以是在冷引导过程期间设置的唤醒 矢量(例如在块810处)。控制接着跳到恢复条目点,图8的示例过程结束。

图9示出表示计算机可读指令的示例流程图,其可被执行来产生可用 来认证/签名图2的STR数据结构216的签名。图9的示例过程可用于实现 图6的块614的操作。图9的示例过程产生密钥,其用于产生图3的STR 头部签名字段302、STR分散/集合表签名字段304、以及STR DRAM签名 字段306的签名,以对图2的STR数据结构216进行签名。在图9的过程 中产生的密钥是被安全地处理的管芯上秘密密钥,使得它们不可由主机软 件访问。在所示示例中,为了确保密钥的安全性,只有安全CPU 204能够 产生密钥。此外,所示示例的安全CPU 204配置成使用以下过程来产生密 钥:在稍后的时间,通过例如当密钥需要被再次创建时挑选具有相同的值 的管芯上密钥发生器,来使安全CPU 204能够相同地再次创建或再次产生 密钥。所示示例的密钥被相同地再次创建,使得安全CPU 204可基于在转 变到挂起到RAM功率状态104期间产生的密钥来签名STR数据结构216, 并使得当从挂起到RAM功率状态104恢复时,安全CPU 204可产生相同 的密钥用于确认在进入挂起到RAM功率状态104时出现的STR数据结构 216的认证/签名。

如图9所示,最初,安全CPU 204产生STR根产生密钥(块902)。在 所示示例中,安全CPU 204使用STR根产生密钥来产生用于产生图3的STR 头部签名字段302、STR分散/集合表签名字段304、以及STR DRAM签名 字段306的签名的随后密钥。安全CPU 204使用STR根产生密钥来产生STR 头部密钥(块904)。安全CPU 204产生例如对应于STR头部签名字段302 的STR头部签名(块906)。在所示示例中,安全CPU 204通过将签名函数 (例如CMAC函数、HMAC函数等)应用于在块904处产生的STR头部 密钥、以及STR头部(例如存储在图3的STR头部308中)和临时值(例 如图2的随机/伪随机值222)的连接(concatenation),来产生STR头部签 名。例如,在块906处使用的签名产生函数可以是SIGNATURE(STR  HEADER KEY,CONCATENATE(STR HEADER,NONCE))。

安全CPU 204使用STR根产生密钥来产生STR分散/集合表密钥(块 908)。安全CPU 204产生例如对应于图3的STR分散/集合表310的STR 分散/集合表签名(块910)。在所示示例中,安全CPU 204通过将签名函数 (例如CMAC函数、HMAC函数等)应用于在块908处产生的STR分散/ 集合表密钥、以及存储在STR分散/集合表310中的信息(例如在图3的 STR分散/集合表310的字段312、320、322、324、326、以及328中存储 的指针和尺寸信息)和临时值(例如图2的随机/伪随机值222)的连接, 来产生STR分散/集合表签名。例如,在块906处使用的签名产生函数可以 是SIGNATURE(STR SCATTER/GATHER TABLE  KEY,CONCATENATE(SCATTER/GATHER TABLE,NONCE))。

安全CPU 204使用STR根产生密钥来产生STR DRAM密钥(块912)。 安全CPU 204产生例如对应于由存储在分散/集合表310的指针-0字段312 中的指针指向的被保护区218的第一16字节对齐缓冲区的STR DRAM签 名(块914)。在所示示例中,安全CPU 204通过将签名函数(例如CMAC 函数、HMAC函数等)应用于在块912产生的STR DRAM密钥、以及由指 针-0字段312中的指针指向的被保护区218的16字节对齐缓冲区和临时值 (例如图2的随机/伪随机值222)的连接,来产生STR DRAM签名。例如, 在块914处使用的签名产生函数可以是SIGNATURE(STR DRAM  KEY,CONCATENATE(STR DRAM AREA,NONCE))。

安全CPU 204破坏在块902、904、908、以及912处产生的密钥(块 916)。破坏密钥提供进一步的保护以抵御密钥以不希望的方式被访问。图9 的示例过程将STR头部签名、STR SG表签名、以及STR DRAM密钥返回 (块918)到调用函数或过程,例如图6的示例过程。图9的示例过程然后 结束。

虽然图9的示例过程被描述为产生三个签名(即,在块906、910、以 及914产生的签名),在其它示例中,可产生更少的签名(例如一个签名或 两个签名)或更多的签名(例如多于三个签名)用于认证/签名STR数据结 构216。

图10示出表示计算机可读指令的示例流程图,其可被执行来验证STR 数据结构216(图2)的有效性。图10的示例过程可用于在从图1的挂起 到RAM功率状态的恢复过程期间验证DRAM时,实现图7A的操作712。 为了确认STR数据结构218的有效性,示例过程用于以与上面关于图9描 述的相同的方式产生密钥和签名。如上面讨论的,用于产生签名的密钥例 如通过挑选具有如在图9的过程中使用的相同的种子值的密钥发生器,在 随后的时间由安全CPU 204相同地重新创建。密钥然后用于基于STR数据 结构216来产生签名以与存储在STR数据结构216中(例如在图3的STR 头部签名字段302、STR分散/集合表签名字段304、以及STR DRAM签名 字段306中)的签名进行比较。因为在图10的示例过程中产生的密钥与在 图9的示例过程中产生的密钥相同,当从挂起到RAM功率状态104恢复时 在图10的验证过程中产生的签名应匹配当进入挂起到RAM功率状态104 时在图9的认证过程中产生的签名,如果STR数据结构216的内容没有改 变(例如没有被潜在的攻击者危害)。

如图10所示,最初,安全CPU 204产生STR根产生密钥(块1002)。 例如,安全CPU 204可以用与它在图9的块902处产生STR根产生密钥相 同的方式产生STR根产生密钥。安全CPU 204例如以与它在图9的块904 处产生STR头部密钥相同的方式产生STR头部密钥(块1004)。安全CPU 204例如以与它在图9的块906产生(例如STR头部签名字段302的)STR 头部签名相同的方式产生STR头部签名(块1006)。

安全CPU 204验证STR数据结构216的STR头部(块1008)。例如, 安全CPU 204将在块1006处产生的STR头部签名与存储在STR数据结构 216中(例如在图3的STR头部签名字段302中)的STR头部签名进行比 较,以确定STR数据结构216的STR头部(例如在图3的STR头部字段 308中的STR头部)是否是有效的。如果STR头部自从处理器系统100进 入挂起到RAM功率状态104以来未改变,则签名将匹配以确认STR头部 是有效的。

安全CPU 204例如以与它在图9的块908处产生STR分散/集合表密钥 相同的方式产生STR分散/集合表密钥(块1010)。安全CPU 204例如以与 它在图9的块910处产生STR分散/集合表签名相同的方式产生STR分散/ 集合表签名(块1012)。安全CPU 204验证STR数据结构216的STR分散 /集合表(块1014)。例如,安全CPU 204将在块1006处产生的STR分散/ 集合签名与存储在STR数据结构216中(例如在图3的STR分散/集合签 名字段304中)的STR分散/集合签名进行比较,以确定STR数据结构216 的STR分散/集合表(例如在图3的STR分散/集合表310中的STR分散/ 集合表位置和尺寸信息)是否是有效的。如果STR分散/集合表信息自从处 理器系统100进入挂起到RAM功率状态104以来未改变,则签名将匹配以 确认STR分散/集合表信息是有效的。

安全CPU 204例如以与它在图9的块912处产生STR DRAM密钥相同 的方式产生STR DRAM密钥(块1016)。安全CPU 204例如以与它在图9 的块914产生STR DRAM签名相同的方式产生STR DRAM签名(块1018)。 安全CPU 204验证由STR数据结构216指向的STR DRAM区域(块1020)。 例如,安全CPU 204将在块1018处产生的STR DRAM签名与存储在STR 数据结构216中(例如在图3的STR DRAM签名字段306中)的STR DRAM 签名进行比较,以确定由图3的指针-0312指向的被保护区218的16字节 对齐缓冲区是否是有效的。如果在16字节对齐缓冲区中的信息自从处理器 系统100进入挂起到RAM功率状态104以来未改变,则签名将匹配以确认 由在指针-0字段312中的指针指向的被保护区218的16字节对齐缓冲区是 有效的。

安全CPU 204破坏在块1002、1004、1010、以及1016处产生的密钥(块 1022)。破坏密钥提供进一步的保护以抵御密钥以不希望的方式被访问。图 10的示例过程将验证状态返回到调用函数或过程,例如图7A和7B的示例 过程,且图10的示例过程然后结束。

虽然图10的示例过程被描述为产生三个签名(即,在块1006、1012、 以及1018产生的签名),在其它示例中,可产生更少的签名(例如一个签 名或两个签名)或更多的签名(例如多于三个签名)用于验证STR数据结 构216的有效性。在任何情况下,在图10的示例过程中应产生与在图9的 示例过程中产生的相同数量的签名。

所公开的示例方法在处理器系统中管理功率状态。一些所公开的示例 方法涉及:当将处理器系统转变到低功率模式时,基于存储了在低功率模 式期间被保护的存储器区的存储器地址的数据结构,来至少产生第一签名。 一些所公开的示例方法还涉及:在处理器系统从低功率模式的恢复过程期 间,基于存储了在低功率模式期间被保护的存储器区的存储器地址的数据 结构,来至少产生第二签名。一些所公开的示例方法还涉及:当第一签名 匹配第二签名时,使处理器系统从低功率模式恢复,和/或当第一签名不匹 配第二签名时产生错误。在一些示例中,低功率模式是挂起到随机存取存 储器功率状态,其中平台软件的操作状态存储于在挂起到随机存取存储器 功率状态期间保持被供电的随机存取存储器中。

一些所公开的示例还涉及:产生至少一个密钥和随机或伪随机值,并 结合在数据结构中的信息使用至少一个密钥和随机或伪随机值来产生第一 签名。在一些示例中,在数据结构中的信息包括以下中的至少一个:数据 结构头部、或被保护的存储器区的存储器地址和数据尺寸。一些所公开的 示例还涉及:再次产生至少一个密钥,在恢复过程期间从被持续供电的存 储器取回随机或伪随机值,以及使用再次产生的密钥和取回的随机或伪随 机值来产生第二签名。

一些所公开的示例还涉及:基于制造商所需的区表来确定至少一个或 一些待保护的存储器区,在所述制造商所需的区表中处理器系统的硬件制 造商或处理器系统的部件指定待保护的至少一些存储器区。一些所公开的 示例还涉及:基于第三方所需的区表来确定待保护的另一存储器区,在所 述第三方所需的区表中第三方指定待保护的另一存储器区。

一些所公开的示例还涉及:在低功率模式期间将指向数据结构的指针 存储在被持续供电的存储器中。一些所公开的示例还涉及在恢复过程期间 从被持续供电的存储器取回指针,并基于指针在恢复过程期间定位数据结 构。

还公开了包括示例公开的指令的示例有形计算机可读存储介质,指令 在被执行时使机器执行本文公开的至少一些示例方法。

所公开的示例装置挂起处理器系统。一些所公开的示例装置包括第一 存储器、以及与第一存储器通信的处理器。在一些示例中,第一存储器在 处理器系统在低功率模式中时保持被供电,且第一存储器存储随机或伪随 机值、以及指向数据结构的指针。在一些示例中,数据结构至少存储第一 签名以认证存储在数据结构中的信息,其指定存储器区用于在低功率模式 期间存储处理器系统的操作状态。在一些示例中,当处理器系统正转变到 低功率模式时,处理器基于数据结构和随机或伪随机值产生第一签名。在 一些示例中,当处理器系统在从低功率模式恢复的恢复过程中时,处理器 基于数据结构和随机或伪随机值至少产生第二签名,并基于至少对第一签 名和第二签名的比较,来确定数据结构是否是有效的。在一些示例中,低 功率模式是挂起到随机存取存储器功率状态,其中操作状态存储于在挂起 到随机存取存储器功率状态期间保持被供电的随机存取存储器中。在一些 示例中,第一存储器是嵌入式静态随机存取存储器,且示例装置还包括动 态随机存取存储器以存储数据结构。

在一些示例中,处理器还基于制造商所需的区表来确定至少一些存储 器区,在所述制造商所需的区表中处理器系统的硬件制造商或处理器系统 的部件指定至少一些存储器区。在一些示例中,处理器还基于第三方所需 的区表来确定再一个存储器区,在所述第三方所需的区表中第三方指定再 一个存储器区。在一些示例中,处理器基于以下中的至少一个来产生第一 和第二签名:数据结构头部、或被保护的存储器区的存储器地址和数据尺 寸。

在一些示例中,处理器是与主机处理器通信的安全处理器。在这样的 一些示例中,当数据结构基于至少对第一签名和第二签名的比较不是有效 的时,安全处理器将错误状态传递到主机处理器,且主机处理器基于错误 状态来执行硬件重置。

虽然在本文描述了某些示例方法、装置和制品,本专利的覆盖范围不 限于此。相反,本专利涵盖完全落在本专利的权利要求的范围内的所有方 法、装置和制品。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号