首页> 中国专利> 存储事件数据的事件数据结构

存储事件数据的事件数据结构

摘要

在与由处理器可访问的总线电气隔离的非易失性存储器中存储事件数据结构。响应于涉及与处理器分离的控制器的操作的事件,控制器将针对事件的事件数据添加到事件数据结构的条目中。

著录项

  • 公开/公告号CN105308609A

    专利类型发明专利

  • 公开/公告日2016-02-03

    原文格式PDF

  • 申请/专利权人 惠普发展公司有限责任合伙企业;

    申请/专利号CN201380077696.1

  • 发明设计人 J.K.让索涅;V.Y.阿利;J.M.曼;

    申请日2013-04-23

  • 分类号G06F21/56;G06F21/57;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人王洪斌

  • 地址 美国德克萨斯州

  • 入库时间 2023-12-18 14:06:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-29

    授权

    授权

  • 2016-03-02

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

    实质审查的生效

  • 2016-02-03

    公开

    公开

说明书

背景技术

计算系统可以包括执行计算系统的各种启动功能的代码。该代码可以包括基本输入/输出系统(BIOS)代码。BIOS代码可能是计算系统中或来自外部服务的恶意软件的攻击对象。作为攻击的结果,BIOS代码可能变得受损。

附图说明

关于以下各图来描述一些实现:

图1是根据一些实现的记录过程的流程图;

图2是合并一些实现的示例计算系统的框图;以及

图3是根据一些实现的审计日志的示意图。

具体实施方式

用于执行计算系统的启动的系统代码上的恶意软件攻击可以导致计算系统的完整性受损使得可以发生计算系统中的未经授权的访问和操作。例如,受损系统代码可以允许恶意实体对计算系统的隐藏的远程监视和/或控制、恶意软件对计算系统中的数据的未经授权的访问和/或修改、计算系统的禁用等等。受损系统代码可以是指已经恶化使得系统代码不再可使用的系统代码,或者可替换地,受损系统代码可以是指已经以某种方式改变但是仍旧能够执行的系统代码。要指出的是,系统代码还可以意外或有意地受损。

尽管可以在计算系统中提供保护机制以保护系统代码,但是这样的保护机制可能在某些条件下变得受损,这可以使系统代码经受恶意软件攻击。

用于执行计算系统的启动的系统代码可以包括系统固件,其可以是以存储在非易失性存储器中并且在计算系统的(一个或多个)处理器上可执行的机器可读指令的形式。“系统固件”可以覆盖能够执行计算系统的启动的任何机器可读指令。计算系统的示例包括台式计算机、笔记本计算机、平板计算机、个人数字助理(PDA)、智能电话、游戏器具、服务器计算机、存储节点、网络通信节点等等。

系统固件可以包括基本输入/输出系统(BIOS)代码,其可以初始化计算系统的各种组件,并且加载计算系统的操作系统(OS)。BIOS代码可以执行硬件组件的检查以确保硬件组件存在并且正确地运转。这可以例如是加电自检(POST)过程的部分。在POST过程之后,BIOS代码可以贯穿引导序列的其余部分进行,此后BIOS代码可以加载和向OS传递控制。BIOS代码可以包括遗留BIOS代码或统一可扩展固件接口(UEFI)代码。在一些示例中,BIOS代码可以包括在OS加载之后执行的运行时部分。

在本讨论中,尽管对“系统固件”做出引用,但是要指出的是,技术或机制可以应用于其它类型的系统引导代码,其中系统引导代码可以是指可以在重启计算系统之后引导计算系统或者可以从低功率状态回复计算系统的任何代码。

各种类型的系统数据可以存储在计算系统的非易失性存储器中。在计算系统的操作期间访问系统数据以确保计算系统的适当操作。系统数据可以以各种数据结构存储在非易失性存储器中,并且可以涉及计算系统的至少一个物理组件的配置。例如,系统数据可以涉及计算系统的配置,或者可替换地,系统数据可以涉及计算系统的各个物理组件或多个物理组件的配置。

非易失性存储器中的系统数据可能由于诸如通过恶意软件的计算系统中的未经授权的访问和操作而受损。此外,非易失性存储器中的系统数据可能无意中受损。一旦系统数据受损,计算系统的正确操作可能不是可能的。

为了保护系统固件和/或系统数据以免由于恶意软件攻击或非故意动作而受损,可以附加于初级非易失性存储器而提供次级非易失性存储器,其用于存储系统固件和系统数据的副本。次级非易失性存储器上的系统固件副本可以是初级非易失性存储器中的系统固件的复制品。可替换地,次级非易失性存储器中的系统固件副本可以是与初级非易失性存储器中的系统固件不同的版本(较晚的版本或较早的版本)。类似地,系统数据的副本可以存储在次级非易失性存储器中。系统数据副本可以等同于初级非易失性存储器中的系统数据,或者是初级非易失性存储器中的系统数据的不同版本(较早的版本或较晚的版本)。

当发生诸如损害系统固件或系统数据的各种事件时,期望以安全的方式记录对应于这样的事件的事件数据以允许诸如由管理员检测和理解在计算系统中发生了什么事件。所记录的事件数据可以受保护以防由于计算系统的电力故障所致的丢失,并且可以受保护以防诸如被恶意软件或其它代码篡改。在接下来的讨论中,对记录事件数据做出引用。要指出的是,术语“记录”与“审计”可互换地使用,其可以一般地是指实体监视目标系统的事件,并且响应于事件存录事件数据。

图1是根据一些实现的记录过程的流程图。记录过程在次级非易失性存储器中存储(在102处)事件数据结构(例如审计日志)。次级非易失性存储器与计算系统的(一个或多个)处理器可访问的总线电气隔离。响应于涉及嵌入式控制器的操作的事件,嵌入式控制器向审计日志的条目添加(在104处)对应于事件的事件数据。事件数据还可以响应于其它类型的事件而添加到审计日志,如以下进一步描述的那样。嵌入式控制器是与计算系统的(多个)处理器分离的计算系统中的控制器,并且嵌入式控制器用于执行各种规定任务(以下进一步讨论)。

在接下来的讨论中,对将事件数据存储在审计日志中做出引用。在其它示例中,事件数据可以存储在其它类型的事件数据结构中。

图2是包括嵌入式控制器202、初级非易失性存储器204、处理器206和次级非易失性存储器216的示例计算系统200的框图。初级非易失性存储器204是由包括嵌入式控制器202和至少一个其它实体(包括处理器206)的多个实体可访问的共享非易失性存储器。次级非易失性存储器216由嵌入式控制器202可访问,但是对处理器206或计算系统200中的其它组件不可访问(实际上,次级非易失性存储器216与除嵌入式控制器202之外的实体电气隔离)。使次级非易失性存储器216对处理器206和其它组件不可访问保护次级非易失性存储器216的内容以免未经授权的篡改。次级非易失性存储器216可以总是由嵌入式控制器202可访问。

尽管在图1中未示出,但是可以在处理器206与初级非易失性存储器204之间提供输入/输出(I/O)控制器。I/O控制器是计算系统200的核心逻辑的部分。处理器206可以通过I/O控制器访问共享总线220以检索初级非易失性存储器204的内容。

次级非易失性存储器216可以与初级非易失性存储器204物理分离(诸如实现在不同的物理存储器设备中)。可替换地,次级非易失性存储器216和初级非易失性存储器204可以在物理上驻留在公共存储器设备上,但是初级非易失性存储器204和次级非易失性存储器216在物理存储器设备的不同段中,其中包含初级非易失性存储器216的物理存储器设备段仅由嵌入式控制器202可访问。换言之,包含次级非易失性存储器216的段在嵌入式控制器202的排他性控制之下,并且该段可以在计算系统200的运行时期间、在初始引导周期之后锁定以防处理器206或另一实体访问。

初级非易失性存储器204由嵌入式控制器202或由另一实体通过共享总线220可访问。在一些实现中,在任何给定时间处仅一个实体能够访问共享总线220,使得一次仅一个实体能够访问初级非易失性存储器204。在一些实例中,共享总线220是共享串行外围接口(SPI)总线。SPI总线是其中SPI总线上的设备以主从模式进行操作的同步串行数据链路。在其它示例中,可以使用另一类型的共享总线220。在可替换的示例中,可以提供仲裁机制以允许包括低功率状态和正常运行时状态的计算系统的各种状态中的总线220的共享访问。

初级非易失性存储器204可以存储系统固件207,其可以包括BIOS代码。系统固件207可以包括供嵌入式控制器202执行的EC固件208以及由处理器206执行的引导块210。

在根据图2的示例中,EC固件208包括在系统固件207的引导块210中。在引导块210内部包括EC固件208可以提供EC固件208已经由提供系统固件207的实体签名的指示,该实体可以是计算系统200的厂商或者另一实体。在其它示例中,EC固件208可以与引导块210分离。

尽管对可以在嵌入式控制器中执行的EC固件做出引用,但是要指出的是,其它类型的控制器代码(例如以机器可读指令形式的应用软件)也可以在嵌入式控制器中执行。

引导块210是BIOS代码的部分,并且当计算系统200启动时首先执行。引导块210在允许BIOS代码的其余部分在处理器206上执行之前首先执行。引导块210可以用于检查BIOS代码的完整性以及执行其它初始功能。如果引导块210确认BIOS代码的完整性,则引导块210可以向BIOS代码的主要部分传递控制以用于发起与BIOS代码相关联的其余操作。

在一些实现中,引导块210可以包括用于测量的核心可信根(CRTM)逻辑,其为工业标准工作组——受信计算组(TCG)指定的逻辑。在计算系统200的加电过程期间,CRTM逻辑可以执行某些初始化任务并且可以进行被存储以供稍后使用的数个测量。CRTM逻辑然后可以在向BIOS代码的主要部分传递控制之前检查BIOS代码。一旦BIOS代码完成执行并且向OS传递控制,OS可以基于CRTM逻辑进行的测量来验证计算系统200的可信性。

嵌入式控制器202与计算系统200的处理器206物理分离。处理器206用于执行OS、应用代码和系统200中的其它代码。另一方面,嵌入式控制器202可以用于执行特定预定义的任务,如编程到EC固件208中那样。可以由嵌入式控制器202执行的任务的示例包括以下中的任何一个或某种组合:计算系统200中的电源控制(用于控制向计算系统200中的各种组件供给电源电压的电源)、计算系统200中的电池的充电和控制、热学监视(以监视计算系统200中的温度)、风扇控制(以控制计算系统200中的风扇)和与用户输入设备的交互(诸如执行计算系统200的键盘的扫描或者与诸如鼠标、触摸板、触摸屏等之类的定点设备的交互)。嵌入式控制器202可以利用微控制器、专用集成电路(ASIC)、可编程门阵列(PGA)或任何其它类型的可编程电路实现。

次级非易失性存储器216存储系统固件的冗余副本214,其中系统固件冗余副本214包括引导块232和EC固件230。次级非易失性存储器216中的系统固件冗余副本214可以是初级非易失性存储器204中的系统固件207的复制品。可替换地,系统固件冗余副本214可以是与系统固件207不同的版本(较晚的版本或较早的版本)。

在一些实现中,系统固件冗余副本214仅包括引导块232,但是不包括BIOS代码的主要部分。在其它实现中,系统固件冗余副本214可以包括整个BIOS代码。

初级非易失性存储器204还可以存储系统数据240,其可以涉及计算系统200的至少一个物理组件的配置。次级非易失性存储器216也可以存储系统数据的副本242,其中次级非易失性存储器216中的系统数据副本242可以是与初级非易失性存储器204中的系统数据240相同或不同的版本。

将系统固件和系统数据拷贝到次级非易失性存储器216可以由嵌入式控制器202执行(诸如响应于在工厂或服务机构处的计算系统200的制造或服务期间从系统固件207接收到的指令)。

系统数据240可以包括机器唯一数据,其可以是指对每一个特定计算系统唯一的任何配置数据或设置。机器唯一数据的示例可以包括以下中的任何一个或某种组合:产品名称、产品型号、库存计量单位(SKU)号码(用于标识相应计算系统以供销售)、计算系统的序列号、系统或货物追踪号码(用于标识计算系统的系统板)、系统配置标识符(用于标识计算系统的配置)、保证书数据(用于描述与计算系统相关联的保证书)、通用唯一标识符(UUID)、BIOS代码的默认设置等等。作为机器唯一数据的示例而提供前文;在其它示例中,可以提供其它或附加类型的机器唯一数据。

系统数据240还可以包括计算系统的网络控制器的配置数据。网络控制器可以用于根据诸如以太网协议(例如吉比特以太网协议或其它类型的以太网协议)或另一类型的协议之类的网络协议通过网络进行通信。在其中由网络控制器支持的网络协议是吉比特以太网(GbE)协议的示例中,网络控制器的配置数据可以包括非易失性存储器的GbE区中的数据。GbE区是包含用于可以作为计算系统的部分的网络控制器的配置数据(例如可编程设置)的数据结构。当网络控制器连接到的总线上的总线重置信号解除断言时,可编程设置由网络控制器读取。

在其它示例中,系统数据240可以包括非易失性存储器中的描述符区中的数据。描述符区是包含描述存储系统固件的非易失性存储器的布局的信息以及用于诸如来自英特尔公司的平台控制器集线器(PCH)或另一类型的I/O控制器之类的输入/输出(I/O)控制器的配置参数的数据结构。PCH可以包括各种功能,包括到图形子系统的显示接口、到各种I/O设备可以连接到的系统总线的系统总线接口等等。当I/O控制器从重置退出时,I/O控制器可以读取描述符区中的数据。

在其它示例中,可以从初级非易失性存储器204向次级非易失性存储器216拷贝附加或可替换的系统数据。系统数据副本242因而提供系统数据240的备份副本,诸如机器唯一数据、GbE区数据和描述符区数据的备份副本。

在一些示例中,在将系统数据副本242保存到次级非易失性存储器216时,嵌入式控制器202可以基于系统数据240的内容计算至少一个散列、校验和或其它值(一般称为“检查值”)。该至少一个检查值可以保存到次级非易失性存储器216并且与系统数据副本242相关联。可以针对包括例如机器唯一数据、GbE区数据和描述符区数据的系统数据240的不同片段中的每一个计算一个检查值。检查值可以保存到与机器唯一数据副本、GbE区数据副本和描述符区数据副本(其为系统数据副本242的部分)中的相应一个相关联的次级非易失性存储器216中。

与次级非易失性存储器中的系统数据的各种片段相关联的检查值可以稍后用于验证这样的系统数据的内容并未改变。

次级非易失性存储器216还存储用于存储策略信息的策略储存244,以及用于存储涉及与嵌入式控制器202和/或系统固件207相关联的事件和/或其它事件的事件数据的审计日志246。

策略信息可以关于涉及控制器代码在嵌入式控制器202上的执行的策略。例如,至少一个策略可以涉及当检测到系统固件已经受损时系统固件的更新。另一示例策略可以指定是否使用操作的积极模式,其中积极模式使得能够实现在其中处理器将执行系统固件的引导块的每一种情况中系统固件的验证(以检查系统固件是否已经受损)。另一示例策略指定是使用手动还是自动恢复模式,其中手动恢复模式牵涉在允许执行受损系统固件的恢复之前的用户动作。另外的示例策略指定使用锁定模式还是解锁模式,其中锁定模式使系统固件对特定版本(诸如次级非易失性存储器中的版本)锁定。

在次级非易失性存储器216被配置(其包括系统固件和各种系统数据到次级非易失性存储器216的拷贝)之后,嵌入式控制器202可以监视存储在初级非易失性存储器204和/或次级非易失性存储器216中的内容(代码和数据)的完整性以确保内容并未由于恶意软件、代码错误或其它原因而受损。

次级非易失性存储器216中的内容的完整性检查可以每一次由嵌入式控制器202在各种时间处(诸如当计算系统200离开重置时、在计算系统200的低功率状态期间或者在计算系统200的运行时期间)执行。

可以响应于各种事件而将事件数据添加到次级非易失性存储器216中的审计日志246。将事件数据添加到审计日志246可以由嵌入式控制器202控制。可替换地,将事件数据添加到审计日志246可以由在处理器206上执行的系统固件207的受信部分(例如引导块210)控制。引导块210可以访问嵌入式控制器202的接口(诸如应用编程接口(API))以向嵌入式控制器202发送关于要添加到审计日志246的事件数据的指令。响应于来自引导块210的涉及事件数据的指令,嵌入式控制器202可以将所指定的事件数据添加到审计日志246。

引导块210的完整性可以在将引导块210加载到处理器206以供处理器206执行之前由嵌入式控制器202验证。由于引导块210的完整性在执行引导块210之前由嵌入式控制器202验证,因此引导块210被视为系统固件207的受信部分。

在引导块210向系统固件207的其余部分传递控制之后,则系统固件207可能不再受信,并且可以禁用之前由引导块210可访问的嵌入式控制器202的诸如API之类的接口。例如,在引导块10向系统固件207的其余部分传递控制之前,引导块210可以向嵌入式控制器202发送命令以禁用处理器206可访问的API(涉及更新审计日志246)。以此方式,提供确保仅系统固件207的受信部分能够访问涉及审计日志246的更新的敏感指令的技术或机制。

为了响应于来自引导块210的指令而重新启用API以允许审计日志246的更新,根据一些实现,要满足以下条件:(1)引导块210已经被嵌入式控制器202成功验证以及(2)计算系统200正在从低功率状态(其为一个指定的低功率状态)回复或启动。指定的功率状态可以包括根据高级配置和电力接口(ACPI)标准的S4和S5状态。ACPI标准提供各种ACPI状态,包括:ACPIS3状态(其为备用或睡眠状态的形式,其中计算系统200的系统上下文维护在保持通电的易失性存储器中而计算系统100的一些组件断电);ACPIS4状态(其为休眠状态的形式,其中将系统上下文保存到持久性存储装置以允许从附加计算系统组件(包括易失性存储器)移除电力);以及ACPIS5状态(其为系统关断状态的形式,其中已经从计算系统200的甚至更多组件移除了电力)。

可以触发嵌入式控制器202将事件数据添加到审计日志246的由嵌入式控制器202可检测的事件示例包括以下:

·涉及将来自次级非易失性存储器的EC固件230(或来自初级非易失性存储器204的EC固件208)加载到嵌入式控制器202中的失败的事件;

·涉及初级非易失性存储器204中的受损或缺失引导块210的事件;

·涉及次级非易失性存储器216中的受损或缺失引导块232的事件;

·涉及初级非易失性存储器204或次级非易失性存储器216中的受损或缺失系统数据的事件;

·涉及利用次级非易失性存储器216中的引导块232更新初级非易失性存储器204中的引导块210的事件;

·涉及利用初级非易失性存储器204中的引导块210更新次级非易失性存储器216中的引导块232的事件;

·涉及修复初级非易失性存储器204或次级非易失性存储器216中的系统数据的事件;

·涉及初级非易失性存储器204中的引导块210的不正确的版本的事件,在其中BIOS更新策略处于锁定模式的场景中(其中锁定模式使系统固件对诸如次级非易失性存储器216中的版本之类的特定版本锁定);

·涉及次级非易失性存储器216中的引导块232的不正确的版本的事件(在其中BIOS更新策略处于锁定模式的场景中);

·涉及在来自用户的手动恢复输入的保持、待决接收上的系统固件207的恢复的事件;

·涉及手动恢复命令的接收的事件,该命令涉及系统固件207的恢复;

·涉及审计日志246的完整性检查失败的事件;

·涉及策略储存244的完整性检查失败的事件;

·涉及计算系统200的制造模式的改变的事件。

更一般地,触发嵌入式控制器202将事件数据添加到审计日志246的事件包括涉及嵌入式控制器202的操作的事件。这些事件包括以上列出的那些,其可以一般地列出为:涉及将控制器代码加载到控制器的失败的事件;涉及系统引导代码的受损的事件;涉及系统引导代码的更新的事件;涉及系统数据受损的事件,系统数据涉及计算系统的至少一个物理组件的配置;涉及系统数据的修复的事件;涉及系统引导代码的不正确版本的事件;涉及系统引导代码的手动恢复的事件;涉及事件数据结构的受损的事件;涉及策略储存的受损的事件;或者涉及改变制造模式的事件。

尽管以上列出各种事件,但是要指出的是,在可替换的实现中,其它事件也可以触发嵌入式控制器202将事件数据添加到审计日志246。

诸如引导块210之类的系统固件207的受信部分还可以响应于某些事件而控制事件数据到审计日志246的存储。这样的事件的示例包括以下:

·涉及系统固件207的修复的事件,其中系统固件207可能已经通过使用来自次级非易失性存储器216、来自诸如基于盘的存储装置之类的持久性存储装置或来自外部可移除存储介质(诸如通用串行总线或USB存储设备)的系统固件的副本进行了修复;

·涉及系统固件207的受损的事件;

·涉及无法找到用于系统固件207的恢复图像的事件;

·涉及如由系统固件207检测到的机器唯一数据或其它系统数据的受损的事件;

·涉及通过系统固件207从来自次级非易失性存储器216的机器唯一数据或其它系统数据的副本修复受损机器唯一数据或其它系统数据的事件;

·涉及通过系统固件207检测系统固件207的经修正或缺失变量的事件,其中变量可以是指在系统固件207的操作期间由系统固件207使用的参数;

·涉及通过系统固件207将受损或缺失的系统固件变量还原到默认设置的事件;

·涉及在来自用户的手动恢复输入的保持、待决接收上的系统固件207的恢复的事件;

·涉及手动恢复命令的接收的事件,命令涉及系统固件207的恢复。

在其它示例中,其它事件也可以触发系统固件207的受信部分导致将系统数据添加到审计日志246。

涉及系统固件207的操作的前述事件可以一般地列出为:涉及系统引导代码的受损的事件;涉及系统引导代码的修复的事件;涉及无法找到系统引导代码的恢复图像的事件;涉及系统数据的受损的事件,系统数据涉及计算系统的至少一个物理组件的配置;涉及系统数据的修复的事件;涉及系统引导代码的变量的受损的事件;涉及系统引导代码的变量的修复的事件;以及涉及系统引导代码的手动恢复的事件。

通过使用根据一些实现的技术或机制,可以将涉及嵌入式控制器202和系统固件207的操作的各种事件记录到审计日志246中。通过将审计日志246存储在次级非易失性存储器216中,事件数据不会由于计算系统200的电力丢失而丢失。

而且,通过在引导块210向系统固件207的其余部分传递控制之后禁用到嵌入式控制器202的接口,提供保护以防运行在处理器206上的恶意软件或其它代码篡改审计日志246的内容。

此外,在一些实现中,可以提供防止篡改发送到接收方的事件数据的技术或机制,其中接收方可以在计算系统200中或者在计算系统200外部。而且,提供允许接收方验证从审计日志246接收的事件数据的真实性和来源的技术或机制。

向接收方发送事件数据以允许分析事件数据。接收方可以是例如与管理员相关联的远程计算系统。可替换地,接收方可以是在计算系统200中可执行以用于分析事件数据的工具。

在一些实现中,嵌入式控制器202可以将时间戳与添加到审计日志246的每一个事件数据相关联,其中时间戳可以从安全时间源(诸如根据安全网络时间协议(NTP)的时间源)获取。安全时间源的使用允许计算系统200的用户确信如存录在次级非易失性存储器216中的审计日志条目中的时间戳是正确的。

此外,诸如由受信平台模块(TPM)提供的安全存储器可以用于存储加密密钥,其可以特定于计算系统200或特定于用户。TPM是指根据描述可以用于存储保护信息的密码密钥的安全密码处理器的TPM规范的机制。TPM规范由受信计算组提供。

存储在安全存储器中的可以是私有密钥的加密密钥可以由嵌入式控制器202用于对审计日志246中的事件数据进行数字签名和加密。从审计日志246接收事件数据的接收方可以使用对应的公有密钥来验证基于事件数据的数字签名所产生的数字签名。公有密钥还可以用于对事件数据进行解密。以此方式,接收方可以确认事件数据尚未受损并且来自受信源。

图3是审计日志246的示例的示意图。在图3中,审计日志246包括两个区段302和304。在其它示例中,审计日志246可以包括仅一个区段,或者可以包括多于两个区段。区段可以是指用于存储审计日志246的次级非易失性存储器216的任何指定部分。

在一些示例中,次级非易失性存储器216可以是闪速存储器设备。利用闪速存储器设备,可以单独写入数据位,但是在逐块的基础上执行擦除,其中块是某个指定大小。审计日志246的区段可以是可以擦除的闪速存储器设备的块的大小。

每一个区段302或304包括指针存储部分306和多个条目308以存储事件数据(在每一区段中可以存在N个条目,其中N≥2)。指针存储部分306包含到审计日志246的最新条目的指针。例如,指针存储部分306可以以具有多个位的位图的形式,其中每一位对应于条目308中的不同的一个。嵌入式控制器202顺序地将事件数据添加到条目308。例如,将第一事件数据添加到第一条目308,将随后的事件数据添加到第二条目308等等。

在将事件数据添加到给定条目308时,将位图306的对应位设置成指定值,例如“0”,以指示给定条目308是已经向其添加事件数据的最新条目308。嵌入式控制器202可以使用位图306来快速定位用于添加新事件数据的下一条目308。

每一个条目308还与相应状态信息310相关联。状态信息310可以指示相应条目308的状态。所指示的状态可以是多个可能状态中的一个,包括空状态(条目308为空并且不包含事件数据)、指示已经向条目308添加事件数据的新条目状态、指示已经将条目308所具有的事件数据发送到接收方的发送状态以及指示要擦除条目308的事件数据的擦除状态。

在将事件数据添加到给定条目308时,对应的状态信息310从空状态更新到新条目状态。在将给定条目308的事件数据发送到接收方时,则给定条目308的状态信息310更新到发送状态。通过使用条目308的状态信息310,嵌入式控制器202能够仅搜集具有新事件数据的条目(标记有新条目状态的那些),而不是整个审计日志246。

在将事件数据添加到审计日志246的第一区段302的条目308时,第一区段302在其最后的条目308写入有事件数据时变满。一旦第一区段302变满,嵌入式控制器202继续将新的事件数据写入到第二区段304的条目308。当第二区段304中的每一个条目i(i=1至N)写入有事件数据时,第一区段302中的对应条目i的状态信息310标记有指示要擦除条目i的状态。

一旦嵌入式控制器202到达第二区段304的结尾,第一区段中的所有条目308将已经标记有指示要擦除条目308的状态。在该点处,嵌入式控制器202可以发送命令以擦除次级非易失性存储器216的第一区段302。第一区段302然后可以用于添加新的事件数据。

在一些示例中,审计日志246可以实现为环绕式缓冲器。因此,当到达审计日志246的结尾(到达第二区段304的结尾)时,审计日志246可以环绕到第一区段302的开头以将下一事件数据插入到第一区段302的第一条目308中。将审计日志246实现为环绕式缓冲器解决存在可用于存储审计日志的有限量的存储空间的问题。在一些示例中,可以指定策略以确定当到达环绕式缓冲器的结尾时何时继续将事件数据存录到审计日志246中,因为执行环绕将造成审计日志246中的较陈旧的事件数据的盖写。例如,策略可以指定当到达缓冲器结尾时暂停添加事件数据,直到要被盖写的较陈旧的事件数据已经保存在其它地方。

与环绕式缓冲器相关联的另一问题是所存录的事件的总计数的潜在丢失。为了解决该问题,可以使用若干技术,诸如采用直接或间接单调计数器的技术。直接单调计数器是提供表示已经写入到审计日志246的事件数据的数目的显式计数值的计数器。该计数值在连续添加条目时可以随时间而变得相当大。

在可替换的示例中,可以使用间接单调计数器。间接单调计数器可以使用两个计数器——贯穿审计日志246中的数个条目进行计数的日志计数器,以及对贯穿审计日志246的循环(周期)数目计数的循环计数器。在将事件数据添加到审计日志246的日志条目时,日志计数器加一。一旦日志计数器递增到指示已经到达审计日志246的结尾的最大值,循环计数器可以加一。因此,为零的循环计数器值指示尚未完成审计日志246的完整周期,并且日志计数器指向审计日志246的实际当前条目。如果循环计数器具有非零值N,则那指示已经贯穿审计日志246执行了N个周期,并且已经写入N*M个日志条目,其中M表示审计日志246中的条目数目。

在其它实现中,取代于实现具有多个区段的审计日志246,可以替代性地使用单个区段审计日志。

如以上指示的,可以触发将事件数据添加到审计日志246的事件包括涉及加载嵌入式控制器代码的失败或系统固件207的受损的事件。

在嵌入式控制器202的初始化过程期间,嵌入式控制器202能够验证从非易失性存储器(216和/或204)检索的EC固件(230和/或208)。初始化过程是指当嵌入式控制器202在嵌入式控制器202已经重置之后或者在嵌入式控制器202的电力循环(从其移除电力并且然后将电力重新应用于嵌入式控制器202)之后首次启动时执行的过程。

在一些实现中,嵌入式控制器202可以首先尝试在计算系统200的重启期间使用次级非易失性存储器216中的EC固件230。如果嵌入式控制器202不能成功地使用EC固件230,则嵌入式控制器202可以使用初级非易失性存储器204中的EC固件208以尝试启动计算系统200。如果嵌入式控制器202不能使用EC固件230或EC固件208中的任一个来启动系统,则已发生错误,因为EC固件不能加载到嵌入式控制器202中以供执行,这很可能是由于EC固件230和EC固件208二者的受损所致。可以将事件数据添加到审计日志246以反映该事件。

尽管对在尝试使用初级非易失性存储器204中的EC固件208之前首先尝试使用次级非易失性存储器216中的EC固件230做出引用,但是不同的实现可以在尝试使用次级非易失性存储器216中的EC固件230之前首先尝试使用初级非易失性存储器204中的EC固件208。

此外,一旦EC固件被验证和加载以供在嵌入式控制器202上执行,EC固件可以在处理器206对系统固件的每一个重启执行之前验证系统固件(例如从初级非易失性存储器204检索的系统固件207)。系统固件的重启执行可以由于计算系统200的冷重置、从计算系统200的低功率状态回复、操作系统重启等而发生。要指出的是,系统固件还可以在每一次计算系统200进入低功率状态时由EC固件验证。

计算系统200的低功率状态是指其中处理器206和系统200的某些其它硬件组件关断(例如不向处理器和某些其它硬件组件提供电力)的计算系统200的状态。在低功率状态中,可以仍旧向嵌入式控制器202提供电力。计算系统200可以在以下场景中的任一个中转变到低功率状态:(1)作为导致系统200断电以随后加电的计算系统200的冷重置的部分,或者(2)作为电力节约过程的部分,其中操作系统200可以在一段时间不活跃之后或者响应于检测到低电池条件或者响应于用户或应用命令或者出于另一原因而从正常操作状态转变到睡眠状态、休眠状态或关断状态,或者(3)在任何其它场景中。低功率状态的示例可以包括某些高级配置和电力接口(ACPI)状态。

在另外的示例中,EC固件可以响应于计算系统200的热重置而执行系统固件的验证,其中计算系统200在不移除到计算系统200的电力的情况下重启。为了允许EC固件响应于热重置而执行验证,当检测到热重置时可以迫使计算系统200转变到适当的低功率状态。

在其它示例中,EC固件可以在任何时间处执行验证,甚至在计算系统未处于低功率状态时。例如,EC固件可以在处理器空闲或未访问共享非易失性存储器204时执行验证。EC固件的验证还可以在检索系统固件以供处理器执行时“实时”执行。

前文确保在处理器206的每一个实例重启系统固件207的执行之前,系统固件207尚未受损。

在一些示例中,嵌入式控制器202可以包括密码硬件,其可以执行密码计算,诸如使用在验证EC固件和系统固件中的那些。密码硬件具有被配置成执行密码计算的电路的形式。

嵌入式控制器202还可以包括只读存储器(ROM),其可以用于存储引导加载器和加密密钥。加密密钥可以是用于执行EC固件验证的密钥(公有密钥或私有密钥)。在系统启动期间,从ROM加载引导加载器以在嵌入式控制器202中执行从而将EC固件从次级或初级非易失性存储器216或204检索到嵌入式控制器202的随机存取存储器(RAM)中。

在一些实现中,签名可以与存储在初级非易失性存储器204和/或次级非易失性存储器216中的EC固件和引导块相关联。签名可以使用在相应EC固件和引导块的验证中。签名在验证过程中的使用可以允许确定相应EC固件或引导块的真实性,和确定相应EC固件或引导块尚未受损。

在一些实现中,EC固件的验证可以通过使用存储在嵌入式控制器ROM中的加密密钥对相应签名进行解密来完成。对签名解密产生可以与EC固件的对应计算值(例如散列值)比较的相应值(例如散列值)。如果前述的值匹配,则验证EC固件。类似的过程可以用于使用相应数字签名验证BIOS引导块。

可以触发将事件数据记录到审计日志246的其它事件包括涉及存储在初级和次级非易失性存储器204和216中的系统数据的事件。

为了验证存储在次级非易失性存储器216中的系统数据的各种片段中的每一个的完整性,嵌入式控制器202可以基于系统数据的相应片段计算校验值,并且将所计算的校验值与次级非易失性存储器216中存储的散列或其它值比较。匹配指示系统数据的相应片段有效。不匹配指示系统数据的相应片段改变,这是系统数据的片段受损的指示。

嵌入式控制器202还可以基于系统数据副本242或基于次级非易失性存储器216中的(多个)校验值来确定初级非易失性存储器204中的系统数据是否受损。存储在次级非易失性存储器216中的(与系统数据相关联的)(多个)校验值可以(由系统固件207或嵌入式控制器202)用于验证初级非易失性存储器204中的系统数据240的相应片段的完整性。系统固件207或嵌入式控制器202可以基于系统数据240的片段计算校验值,并且可以将所计算的校验值与存储在次级非易失性存储器216中的校验值比较。如果校验值匹配,则系统固件207或嵌入式控制器202确定初级非易失性存储器204中的系统数据240的片段有效。另一方面,如果校验值不匹配,则系统固件207或嵌入式控制器202确定系统数据240的片段已受损。

在其它实现中,取代于使用存储在次级非易失性存储器216中的校验值,初级非易失性存储器204中的系统数据240的每一个特定片段可以通过与次级非易失性存储器216中的系统数据副本242的相应片段比较来验证。例如,初级非易失性存储器204中的机器唯一数据、GbE区数据或描述符区数据可以与机器唯一数据、GbE区数据或描述符区数据的相应副本比较以确定数据的相应片段是否已改变,这指示数据的相应片段已受损。

为了修正检测为受损的次级非易失性存储器216中的系统数据副本242的相应片段,可以将计算系统200放置到制造编程模式(以下进一步讨论)以补救问题。要指出的是,制造编程模式是在工厂或服务机构处(而不是在用户地点的现场中)可以进入的模式。可以将进入或退出制造编程模式记录为审计日志246中的事件数据。

审计日志246的完整性还可以由嵌入式控制器202验证。审计日志246的完整性的验证可以包括验证审计日志的物理结构是正确的并且准备好接收审计日志事件。如果嵌入式控制器202确定次级非易失性存储器216中的审计日志246以嵌入式控制器202将不再能够将新的事件添加到审计日志246的这样的方式损坏,嵌入式控制器202可以修复审计日志246的结构。当修复审计日志结构后,嵌入式控制器202可以将事件添加到审计日志,其指示审计日志的结构问题被检测和修复。

为了验证策略储存244中的策略信息的完整性,嵌入式控制器202可以在每一次更新策略信息时将策略储存的测量存储在次级非易失性存储器216中。测量可以是以散列、校验和或基于存储在策略储存中的策略信息的其它值的形式。嵌入式控制器202可以计算测量并且确认测量匹配策略储存测量值以验证策略储存完整性。如果不存在匹配,那是策略储存244已受损的指示。策略储存244的受损可以记录在审计日志246中。

如果嵌入式控制器102确定数据完整性问题在次级非易失性存储器216中的策略储存中,嵌入式控制器202可以将策略信息(例如可以是用户控制的策略信息)还原到默认值并且向次级非易失性存储器216提交回默认值。这样的事件也可以记录在审计日志246中。

如以上指出的,可以在工厂或服务机构处将计算系统200放置在制造编程模式中。在制造编程模式中,服务人员可以设置或改变初级非易失性存储器204中的系统固件内容和系统数据。例如,可以更新系统固件207或者可以修改系统数据(诸如机器唯一数据、GbE区数据和描述符区数据)。

在一些示例中,服务人员通过使用应用可以使用诸如Windows管理规范(WMI)接口或其它类型的接口之类的接口访问系统固件设置,而同时计算系统200处于制造编程模式中。制造编程模式在执行计算系统的修复或其它服务的工厂或服务机构处可用。在制造编程模式中,可以清除次级非易失性存储器216中的诸如机器唯一数据、GbE区数据和描述符区数据之类的各种系统数据。这允许从初级非易失性存储器204拷贝机器唯一数据、GbE区数据和描述符区数据的新的备份副本,其可以被执行以修复例如次级非易失性存储器216中的受损系统数据。

加载以上描述的各种模块的机器可读指令以供在处理电路(例如嵌入式控制器202或处理器206)上执行。处理电路可以包括微处理器、微控制器、处理器模块或子系统、可编程集成电路、可编程门阵列或另一控制或计算设备。

数据和指令存储在相应存储设备中,其实现为一个或多个计算机可读或机器可读存储介质。存储介质包括不同形式的存储器,其包括诸如动态或静态随机存取存储器(DRAM或SRAM)、可擦除和可编程只读存储器(EPROM)、电可擦除和可编程只读存储器(EEPROM)以及闪速存储器之类的半导体存储器设备;诸如固定盘、软盘和可移除盘之类的磁盘;包括磁带的其它磁性介质;诸如致密盘(CD)或数字视频盘(DVD)之类的光学介质;或者其它类型的存储设备。要指出的是,以上讨论的指令可以提供在一个计算机可读或机器可读存储介质上,或者可替换地,可以提供在分布在潜在地具有多个节点的大型系统中的多个计算机可读或机器可读存储介质上。这样的一个或多个计算机可读或机器可读存储介质被视为制品(或制造品)的部分。制品或制造品可以是指任何所制造的单个组件或多个组件。一个或多个存储介质可以位于运行机器可读指令的机器中,或者位于可以通过网络从其下载机器可读指令以供执行的远程地点。

在前述描述中,阐述众多细节以提供本文所公开的主题的理解。然而,可以在没有一些或全部这些细节的情况下实践实现。其它实现可以包括来自以上讨论的细节的修改和变型。意图在于随附权利要求覆盖这样的修改和变型。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号