首页> 中国专利> 用于运行时间完整性校验的设备和方法

用于运行时间完整性校验的设备和方法

摘要

本发明名称为“用于运行时间完整性校验的设备和方法”。在一些实施例中,基于处理器的系统可包括至少一个处理器、耦合到至少一个处理器的至少一个存储器、代码块及代码,所述代码可由基于处理器的系统执行以使基于处理器的系统在基于处理器的系统重新启动时生成用于代码块的完整性信息,安全地存储该完整性信息并在基于处理器的系统的运行时间期间使用安全存储的完整性信息来验证代码块的完整性。还对其它实施例进行公开和要求权利。

著录项

  • 公开/公告号CN101770406A

    专利类型发明专利

  • 公开/公告日2010-07-07

    原文格式PDF

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

    申请/专利号CN200910217300.4

  • 申请日2009-12-25

  • 分类号G06F11/00;

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

  • 代理人柯广华

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 00:10:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-29

    授权

    授权

  • 2010-09-08

    实质审查的生效 IPC(主分类):G06F11/00 申请日:20091225

    实质审查的生效

  • 2010-07-07

    公开

    公开

说明书

技术领域

本发明涉及完整性校验。更具体地说,本发明的一些实施例涉及运行时间固件完整性校验。

背景技术

诸如计算机等基于处理器的系统可要求或受益于各种级别的硬件和软件安全性。

发明内容

本发明提供一种基于处理器的系统,包括:至少一个处理器;至少一个存储器,耦合到所述至少一个处理器;代码块;以及可由所述基于处理器的系统执行以使所述基于处理器的系统执行以下操作的代码:在所述基于处理器的系统重新启动时生成用于所述代码块的完整性信息;安全地存储所述完整性信息;以及在所述基于处理器的系统的运行时间期间,使用所安全存储的完整性信息来验证所述代码块的完整性。

本发明还提供一种基于处理器的系统,包括:至少一个处理器;系统管理存储器,耦合到所述至少一个处理器;芯片组,包括可管理性引擎,耦合到所述至少一个处理器和所述系统管理存储器;以及代码,所述代码可由所述基于处理器的系统执行以使所述芯片组的所述可管理性引擎在所述基于处理器的系统的运行时间期间验证所述系统管理存储器的内容。

本发明还提供一种为基于处理器的系统执行运行时间完整性校验的方法,包括:在所述基于处理器的系统重新启动时生成用于代码块的完整性信息;安全地存储所述完整性信息;以及在运行时间期间使用所安全存储的完整性信息,验证所述代码块的完整性。

本发明还提供一种为基于处理器的系统执行运行时间完整性校验的方法,包括:在所述基于处理器的系统重新启动时生成用于系统管理存储器的内容的完整性信息;将所述完整性信息传送到所述基于处理器的系统的可管理性引擎芯片组;在所述可管理性引擎可访问的位置中安全地存储所述完整性信息;以及在所述基于处理器的系统的运行时间期间,使用所安全存储的完整性信息,通过所述可管理性引擎来验证所述系统管理存储器的内容。

附图说明

从下面如附图中所示的优选实施例的描述,将明白本发明的各种特征,其中,类似的引用数字一般指遍及附图的相同部分。图形不一定符合比例,相反,重点在于示出本发明的原理。

图1是根据本发明的一些实施例的电子系统的框图。

图2是根据本发明的一些实施例的另一电子系统的框图。

图3是根据本发明的一些实施例的流程图。

图4是根据本发明的一些实施例的另一流程图。

图5是根据本发明的一些实施例的另一流程图。

图6是根据本发明的一些实施例的另一流程图。

图7是根据本发明的一些实施例的另一电子系统的框图。

图8是示例文件结构的图。

具体实施方式

在下面的说明中,出于解释而非限制的目的,陈述了特定的细节,如特定的结构、架构、接口、技术等,以便提供本发明的各种方面的透彻理解。然而,受益于本公开的本领域的技术人员将明白,本发明的各种方面可在脱离这些特定细节的其它示例中实践。在某些情况下,省略公知的装置、电路和方法的描述以免不必要的细节混淆本发明的描述。

参照图1,根据本发明的一些实施例,基于处理器的系统10可包括至少一个处理器11、耦合到至少一个处理器11的至少一个存储器12和代码块(code block)13(例如,存储在存储器12中)。系统10可还包括代码,所述代码可由基于处理器的系统执行以使基于处理器的系统10在基于处理器的系统10重新启动时生成用于代码块13的完整性信息,安全地存储该完整性信息,并在基于处理器的系统10的运行时间期间使用安全存储的完整性信息来验证代码块13的完整性。例如,代码块13可对应于固件单元、基本输入输出系统(BIOS)单元和系统管理模式(SMM)单元之一。

在本发明的一些实施例中,系统10可还包括使基于处理器的系统10在运行时间期间使用安全存储的完整性信息来定期重新验证代码块13的完整性的代码。在本发明的一些实施例中,系统10可还包括使基于处理器的系统10安全地存储对应于多个代码块13的完整性信息的列表的代码。例如,在本发明的一些实施例中,系统10可还包括代码以使基于处理器的系统10针对多个代码块13扫描耦合到至少一个处理器11的至少一个存储器12,并在运行时间期间使用安全存储的完整性信息列表来验证扫描的代码块13的完整性。系统10可还包括网络组件14和使基于处理器的系统10在验证失败时发送远程告警的代码。例如,网络组件可包括诸如以太网连接的有线网络连接和/或诸如WiFi连接的无线网络连接。

参照图2,根据本发明的一些实施例,基于处理器的系统20可包括至少一个处理器21、耦合到至少一个处理器21的系统管理存储器22和耦合到至少一个处理器20和系统管理存储器22的芯片组23,包括可管理性引擎24。系统20可还包括代码,所述代码可由基于处理器的系统20执行以使芯片组23的可管理性引擎24在基于处理器的系统20的运行时间期间验证系统管理存储器22的内容。例如,系统20可还包括代码以使基于处理器的系统20在基于处理器的系统20重新启动时生成用于系统管理存储器22的内容的完整性信息,将完整性信息传送到芯片组23的可管理性引擎24,并在可管理性引擎24可访问的位置中安全地存储该完整性信息。

在本发明的一些实施例中,系统20可还包括代码以使可管理性引擎24在基于处理器的系统20的运行时间期间使用安全存储的完整性信息来定期重新验证系统管理存储器22的内容。例如,系统20可还包括代码以使可管理性引擎24扫描系统管理存储器22,并使用安全存储的完整性信息来验证扫描的存储器22的完整性。例如,系统20可还包括网络组件25和使可管理性引擎24在验证失败时发送远程告警的代码。在本发明的一些实施例中,可管理性引擎24可访问的位置可包括可管理性引擎24的存储器子系统26。在本发明的一些实施例中,可管理性引擎24可包括单独的处理器27,并且至少一部分代码可由可管理性引擎24的单独处理器27来执行。

参照图3,根据本发明的一些实施例,为基于处理器的系统执行运行时间完整性验证的方法可包括:在基于处理器的系统重新启动时生成用于代码块的完整性信息(例如,在框30),安全地存储完整性信息(例如,在框31),并在运行时间期间使用安全存储的完整性信息来验证代码块的完整性(例如,在框32)。例如,代码块可对应于固件单元、基本输入输出系统(BIOS)单元和系统管理模式(SMM)单元之一(例如,在框33)。

例如,本发明的一些实施例可还包括在运行时间期间使用安全存储的完整性信息来定期重新验证代码块的完整性(例如,在框34)。例如,本发明的一些实施例可还包括安全地存储对应于多个代码块的完整性信息的列表(例如,在框35)。例如,本发明的一些实施例可还包括针对多个代码块扫描耦合到至少一个处理器的至少一个存储器,并在运行时间期间使用安全存储的完整信息的列表来验证扫描的代码块的完整性(例如,在框36)。本发明的一些实施例可还包括在验证失败时发送远程告警(例如,在框37)。

参照图4,根据本发明的一些实施例,为基于处理器的系统执行运行时间完整性验证的方法可包括:在基于处理器的系统重新启动时生成用于系统管理存储器的内容的完整性信息(例如,在框40),将完整性信息传送到基于处理器的系统的可管理性引擎芯片组(例如,在框41),在可管理性引擎可访问的位置中安全地存储完整性信息(例如,在框42),以及在基于处理器的系统的运行时间期间使用安全存储的完整性信息,通过可管理性引擎来验证系统管理存储器的内容(例如,在框43)。

例如,本发明的一些实施例可还包括在基于处理器的系统的运行时间期间,使用安全存储的完整性信息,通过可管理性引擎定期重新验证系统管理存储器的内容(例如,在框44)。例如,本发明的一些实施例可还包括扫描系统管理存储器,并使用安全存储的完整性信息来验证扫描的存储器的完整性(例如,在框45)。例如,本发明的一些实施例可还包括在验证失败时从可管理性引擎发送远程告警(例如,在框46)。

有利的是,本发明的一些实施例可提供使用可管理性引擎(ME)/芯片组的用于系统管理模式(SMM)运行时间完整性校验的方法和/或设备。各种安全性工作已集中在关于SMM/BIOS和操作系统(OS)的受信任引导或引导时间完整性。例如,预OS统一可扩展固件接口(UEFI)/BIOS平台完整性校验可在安装时间(例如,签名的更新(signedupdate))和/或在引导时间(校验的加载(verified load))执行。有利的是,本发明的一些实施例可改进安全性以对抗运行时间攻击,例如检查时间(在预OS中代码的加载期间)/使用时间(在运行时间期间调用代码时,例如响应SMI事件)(TOCTOU)攻击和/或代码注入攻击。对于使用认证码(Authenticode)或带有嵌入式签名块的某一其它基于公共密钥的机制的具有UEFI SMM可执行PE COFF映像的签名的更新,ME还能通过证书授权机构(Certificate Authority)远程验证以了解与该映像相关联的公共校验密钥是否已被撤消。

例如,本发明的一些实施例可利用芯片组可管理性引擎来提供SMM处理程序(handler)(BIOS代码)的运行时间完整性校验。有利的是,本发明的一些实施例可战胜针对SMM的运行时间攻击,可以独立于OS,并且可为SMM代码的不同修订版提供可伸缩性。有利的是,本发明的一些实施例还可防止对OEM的统一可扩展固件接口(UEFI)运行时间表的运行时间攻击,这些运行时间表在运行时间期间可与操作系统内核处于相同位置。有利的是,与基于软件的安全性相比,根据本发明的一些实施例的利用基于硬件的芯片组可管理性引擎来提供运行时间完整性校验可在平台中提供更安全和隔离的位置。

SMM根套件(rootkit)可以是恶意的根套件软件,其在计算机的存储器的受保护部分中运行,并且可能难以通过抗病毒软件检测到。例如,SMM根套件可包括恶意特征,例如能够用于窃取敏感信息的通信软件和/或按键记录。有利的是,本发明的一些实施例可防止SMM根套件攻击。

根据本发明的一些实施例,SMI处理程序可实现如下:在进入SMM时,处理器可跳到物理地址SMBASE+0x8000(这表示SMI处理程序必须位于SMRAM内的偏移0x8000处)。由于当D_OPEN比特置位时,可将代码放置在SMRAM中,因此,可强制SMI触发器使代码被执行。

            -----------------SMBASE+0x1FFFF |                 |

           |                 |

           |                 |

           |                 |SMBASE+0xFFFF   -----------------

           |                 |

           |   状态保存区    |

           |                 |SMBASE+0xFE00   -----------------

           |                 |

           |   代码、堆、栈  |

           |                 |SMBASE+0x8000   ---------------->第一SMI处理程序

指令

           |                 |

           |                 |

           |                 |

SMBASE=0xA0000 -----------------

参照图5,在本发明的一些实施例中,可管理性引擎(ME)可在系统引导期间通过主机嵌入式控制接口(HECI)从BIOS接收SMM白名单(例如,在框51)。例如,白名单可对应于经授权的代码模块的列表。例如,可管理性引擎可使用可移植执行和通用对象文件格式(PECOFF)文件来生成清单(manifest),并且在闪存(flash)中安全地存储它们(例如,在框52)。可管理性引擎可定期执行运行时间完整性校验检查。例如,可管理性引擎可设置运行时间完整性检查定时器,并且在定时器截止时(例如,在框52),可管理性引擎可针对SMM处理程序和UEFI运行时间表来扫描主机存储器和/或系统管理随机存取存储器(SMRAM)(例如,在框53)。可管理性引擎可使用存储的清单来验证SMM/BIOS代码(例如,在框54)。可管理性引擎可验证SMM处理程序分派表中的指针指向有效的代码区域(例如,在框55)。有利的是,本发明的一些实施例可向芯片组开放对SMRAM的访问权以便可管理性引擎扫描其内容。芯片组可为部分驻留在SMRAM中的SMM提供完整性校验。

如果完整性检查失败(例如,在框57),则可管理性引擎可将告警发送到远程IT/AV服务器和/或其它远程服务。例如,可管理性引擎也可警告用户,系统可能被损坏。例如,可管理性引擎还可停止执行。例如,可管理性引擎还可将系统恢复到已知的受信任状态和/或重新启动系统。如果完整性检查通过,则可管理性引擎可重置定时器,并等待下一定时器中断(例如,在框58)。

例如,对于基于UEFI的SMM基础结构,例如在www.uefi.org的UEFI平台初始化(UEFI Platform Initialization)(PI)规范的第4卷中、或在www.intel.com/technology/framework的SMM-CIS中所述的,存在基于策略的调度器(dispatcher)。此基于策略的调度器可发现并加载一系列的UEFI PE/COFF(http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx)可执行文件到系统管理RAM(SMRAM)中。本发明的一些实施例可实现以下伪代码:

For each固件卷FV_j中的UEFI SMM驱动D_raw_i(

       IfD_raw_i满足完整性约束(

              加载D_raw_i到SMRAM中

              对于其基于SMRAM的执行地址,重新定位

         D_raw_i

              现在,在SMRAM中具有D_relocated_i

              If存在HECI接口(

                      将D_relocated_i经HECI传递到ME,

                      以便为运行时间白名单进行存储

         )

)

)

例如,本发明的一些实施例可实现以下伪代码:

来自[SmmBase.c]

//将UEFI DXE SMM驱动加载到SMRAM中

  Status=mPeLoader->LoadPelmage(

               mPeLoader,mlmageHandle,Args->FilePath,

               Args->SrcBuffer,Args->SrcSize,Address,

               &Index,Args->ImageHandle,NULL,

               EFI_LOAD_PE_IMAGE_ATTRIBUTE_NONE

               );

  if(!EFI_ERROR(Status)||Status==EFI_BUFFER_TOO_SMALL)

{

  return EFI_INVALID_PARAMETER;

}

//注册映像w/ME

  CheckAndFixHeci ForAccess();

  if(!EFI_ERROR(Status)||Status==EFI_BUFFER_TOO_SMALL)

{

  return EFI_INVALID_PARAMETER;

}

HecilntegrityPacket->ImageBase=Args->SrcBuffer;

HecilntegrityPacket->ImageSize=Args->SrcSize;

Status=HeciPacketSend(HecilntegrityPacket);

  if(!EFI_ERROR(Status)||Status==EFI_BUFFER_TOO_SMALL)

{

  return EFI_INVALID_PARAMETER;

  }

和上述流程形成对比,SMM根套件可尝试在上述加载序列后的某个时间将代码添加到系统管理RAM(SMRAM)中。根套件能经以下方式安装自己:经BIOS程序错误,例如不在芯片组中置位D_LCK比特,这使得SMRAM不可访问(BIOS通常在运行选项ROM或引导OS前置位该比特)http://www.cs.ucf.edu/~czou/research/SMM-Rootkits-Securecom08.pdf,或者经硬件攻击,例如高速缓存攻击,其中,T-SEG是主存储器攻击代码的别名,http://risesecurity.org/papers/smm_hack.txt。或者,SMM根套件能经尚未终止的BIOS框架API的使用来进入SMRAM,https://www.blackhat.com/presentations/bh-usa-07/Heasman/Presentation/bh-usa-07-heasman.pdf。

参照图6,根据本发明的一些实施例的示例总体UEFI引导流程包括上电(或重新启动)和平台初始化,平台初始化包括预EFI阶段和驱动执行环境(DXE)阶段。DXE阶段中的此引导流程的子集是SMM驱动的加载。根据本发明的一些实施例,与SMM驱动有关的完整性信息可在系统引导期间生成并传送到可管理性引擎。例如,通过根密钥授权的签名的UEFI DXE SMM可执行文件有关的信息可存储在可管理性引擎中。例如,重新定位的UEFI DXE SMM映像的哈希和基(base)可记录在可管理性引擎中。

参照图7,根据本发明的一些实施例的电子系统70可包括耦合到存储器控制集线器(MCH)72和I/O控制集线器(ICH)73的CPU 71。例如,主存储器DRAM 74可耦合到MCH 72。例如,ICH 73可支持各种I/O接口,包括SATA和USB。例如,存储BIOS代码、可管理性引擎(ME)代码和其它系统代码的闪速存储器75可耦合到ICH 73。例如,包括可管理性引擎(ME)的芯片组76可耦合到ICH 73。DRAM 74的某个段可指定为系统管理存储器(SMRAM)。例如,SMRAM的顶部段可称为T-SEG。在本发明的一些实施例中,T-SEG SMRAM可在运行时间由芯片组76中的可管理性引擎(ME)来监视。

参照图8,示例PECOFF可执行文件可具有如所示的文件结构。例如,PECOFF可执行文件可构成处于ME观察之下的对象。例如,T-SEG可由用于UEFI PI SMM基础结构的一系列PECOFF可执行映像来填充。偷取或修改这些可执行文件或SMRAM中授权的列表外的可执行内容的任何尝试可构成攻击。

有利的是,除了在运行时间为SMM列出白名单外,本发明的一些实施例可在运行时间监视其它实体。例如,本发明的一些实施例可监视UEFI_SYSTEM_TABLE_RUNTIME_SERVICES数据对象及相关联的函数指针和例程。例如,这些条目可从平台固件传递到OS内核运行时间中以便促进OS内核运行时间固件交互/调用,如UEFI变量的GetTime()、Get/Set()、CapsuleUpdate()。例如,这些条目的一些可在运行时间与OS内核处在相同位置,并且OS内核保护可用于这些对象。有利的是,由ME提供运行时间完整性校验以保护这些代码和数据对象可允许更健壮的UEFI实现。

虽然本文中描述的许多实施例利用与特定执行环境相关联的术语,但本领域的技术人员将理解,本发明不限于这些特定实施例,并且等效的例程和/或结构可在需要安全性特征的其它基于处理器的环境中实现。同样地,本文中提及的各种代码模块、寄存器和表可由其它平台中的其它术语来描述,同时提供等效结构和/或执行等效功能。

本领域的技术人员将理解,给定本说明的益处,多种多样的其它电路和硬件和/或软件的组合可配置成实现根据本文中描述的实施例和本发明的其它实施例的各种方法、电路和系统。图1到8的示例是适合实施例的非限制性示例。

本发明的上述和其它方面单独和以组合方式实现。除非特定权利要求明确地要求,否则,本发明不应视为要求两个或更多此类方面。另外,虽然结合目前视为最优选的示例描述了本发明,但应理解,本发明并不限于所公开的示例,而相反是旨在涵盖本发明的精神和范围内包括的各种修改和等效布置。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号