从非易失性存储器检索系统引导代码的制作方法

文档序号:9401956阅读:295来源:国知局
从非易失性存储器检索系统引导代码的制作方法
【专利说明】
【背景技术】
[0001]计算系统可以包括执行计算设备的各种启动功能的代码。该代码可以包括基本输入/输出系统(B1S)代码。B1S代码可以是计算系统中或者来自外部服务的恶意软件的攻击目标。作为攻击的结果,B1S代码可能变得受损。
【附图说明】
[0002]参照随附各图描述一些实现方案:
图1是根据一些实现方案的示例系统的框图;
图2是根据一些实现方案的系统引导代码恢复过程的流程图;
图3是根据另外的实现方案的另一示例系统的框图;以及图4是根据可替换实现方案的又一示例系统的框图。
【具体实施方式】
[0003]用于执行计算系统的启动的系统代码可以包括系统固件,其可以具有在计算系统的处理器(或多个处理器)上可执行的机器可读指令的形式。“系统固件”可以是指能够执行计算系统的启动的任何机器可读指令。计算系统的示例包括台式计算机、笔记本计算机、平板计算机、个人数字助理(PDA)、智能电话、游戏器具、服务器计算机、存储节点、网络通信节点等。
[0004]系统固件可以包括基本输入/输出系统(B1S)代码,其可以初始化计算系统的各种组件,并且加载计算系统的操作系统(OS)。B1S代码可以执行硬件组件的检查以确保硬件组件恰当地存在和运转。这可以是例如加电自检(POST)过程的一部分。在POST过程之后,B1S代码可以通过引导序列的其余部分进行,在此之后B1S代码可以加载并且传递控制给OS。B1S代码可以包括传统B1S代码或统一可扩展固件接口(UEFI)代码。在一些示例中,B1S代码可以包括在OS加载之后执行的运行时间部分。
[0005]在计算系统启动时首先执行的B1S代码的最初部分是引导块。引导块通常被视为可信赖的并且在允许B1S代码的其余部分在计算系统中的处理器上执行之前首先执行。引导块可以用于检查B1S代码的完整性以及执行其它最初功能。如果引导块确认B1S代码的完整性,则引导块可以将控制传递给B1S代码的主要部分以用于发起与B1S代码相关联的其余操作。
[0006]在一些实现方案中,引导块可以包括可信度量核心根(CRTM)逻辑,其是由作为产业标准工作组的可信计算组(TCG)指定的逻辑。在计算系统的上电过程期间,CRTM逻辑可以执行某种初始化任务并且可以做出被存储以供随后使用的数个测量。CRTM逻辑然后可以在将控制传递给B1S代码的主要部分之前检查B1S代码。一旦B1S代码完成执行并且将控制传递给OS,则OS可以基于CRTM逻辑所进行的测量来验证计算系统的可信性。
[0007]在一些情况下,引导块可能变得受损。尽管可以在计算系统中提供保护机制以保护引导块使其不受未经授权的写入访问,但是这样的保护机制可能在某些条件之下变得受损,这可能使引导块经受恶意软件供给。受损的引导块可能使得计算系统受损。例如,经修改的引导块可能允许各种系统代码的未经授权的修改,可能绕过完整性检查,可能防止计算系统的引导,可能允许恶意实体对计算系统的隐蔽远程监控和/或控制,可能允许恶意软件对计算系统中的数据的未经授权的访问和/或修改,可能使计算系统禁用等。受损的代码(诸如引导块)可以是指已经被破坏使得代码不再可用的代码,或者可替换地,受损的代码可以是指已经以某种方式改变但是仍旧能够执行的代码。
[0008]除通过恶意软件受损的可能性之外,引导块也可能意外地或有意地受损。
[0009]在本讨论中,尽管对“引导块”做出引用,但是要指出的是,技术或机制可以适用于其它类型的系统引导代码,其中系统引导代码可以是指可在计算系统的重启之后引导计算系统或者可使计算系统从低功率状态恢复的任何代码。
[0010]依照一些实现方案,嵌入式控制器用于在计算系统的核心逻辑从共享总线断开时检索并执行引导块的验证,所述共享总线还由嵌入式控制器使用以访问存储引导块的非易失性存储器。嵌入式控制器可以监控来自核心逻辑的核心逻辑从共享总线断开的指示,并且响应于这样的指示,嵌入式控制器可以确定嵌入式控制器通过共享总线从非易失性存储器检索引导块是安全的,以用于执行引导块的验证。
[0011]诸如引导块或其它代码之类的代码片段的验证可以是指以密码方式验证代码片段尚未改变和/或确认代码片段来自受信源。
[0012]计算系统的核心逻辑可以是指包括指定功能性的计算系统的一个或多个控制芯片。指定功能性可以包括到图形子系统的显示接口、到各种输入/输出(I/o)设备可以连接于的系统总线的系统总线接口等。在一些示例中,核心逻辑可以包括I/o控制器,诸如来自Intel公司的平台控制器中心(PCH)。在其它示例中,可以使用其它类型的控制芯片。
[0013]可替换地,核心逻辑还可以被视为包括计算系统的处理器,其执行操作系统(OS)、应用代码、系统固件代码和计算系统的其它代码。
[0014]嵌入式控制器在物理上与核心逻辑(以及与计算系统的处理器)分离。嵌入式控制器可以用于执行具体预定义任务,如编程到嵌入式控制器代码中的(例如嵌入式控制器固件或EC固件或软件)。在随后的讨论中,尽管对“EC固件”做出引用,但是要指出的是,技术或机制可以适应于可由嵌入式控制器执行的其它形式控制器代码。嵌入式控制器代码包括在嵌入式控制器上可执行的机器可读指令。可以由嵌入式控制器执行的任务的示例包括以下中的任何一个或某种组合:计算系统中的电源控制(用于控制向计算系统中的各种组件供应电源电压的电源)、计算系统中的电池的充电和控制、热监控(以监控计算系统中的温度)、风扇控制(以控制计算系统中的风扇)以及与用户输入设备的交互(诸如执行计算系统的键盘的扫描或者与诸如鼠标、触摸板、触摸屏的定点设备的交互等)。嵌入式控制器可以利用微控制器、专用集成电路(ASIC)、可编程门阵列(PGA)或者任何其它类型的可编程电路来实现。
[0015]图1是包括嵌入式控制器102、共享非易失性存储器104和核心逻辑106的示例计算系统100的框图。核心逻辑106或嵌入式控制器102可以通过共享总线120访问共享非易失性存储器104。
[0016]在一些实现方案中,仅一个实体能够在任何给定时间访问共享总线120,使得仅一个实体可以在某一时间访问共享非易失性存储器104。在一些示例中,共享总线120是共享串行外围接口(SPI)总线。SPI总线是其中SPI总线上的设备以主-从模式操作的同步串行数据链路。在其它示例中,可以使用另一类型的共享总线120。在可替换示例中,可以提供仲裁机制以允许计算系统的各种状态中的总线120的共享访问,包括低功率状态和正常运行时间状态。
[0017]共享非易失性存储器104包括系统固件108,诸如B1S代码。B1S代码可以包括引导块110。尽管在图1中未示出,但是处理器可以连接到核心逻辑106。以此方式,处理器可以从共享非易失性存储器104检索系统固件108以在处理器上执行。
[0018]嵌入式控制器102可以在处理器对引导块110的每一个重启执行之前对引导块110执行验证。引导块110的重启执行可以由于计算系统100的冷重置、计算系统100从低功率状态的恢复、操作系统重启等而发生。要指出的是,引导块110还可以由嵌入式控制器102在计算系统100每一次进入低功率状态时验证。在其它示例中,嵌入式控制器102还可以在处理器保持加电时验证引导块110。
[0019]在另外的示例中,嵌入式控制器102可以响应于计算系统100的暖重置而执行引导块110的验证,其中计算系统100在不移除至计算系统100的功率的情况下重启。为了允许嵌入式控制器102响应于暖重置而执行验证,可以迫使计算系统100在检测到暖重置时转变到适当的低功率状态。
[0020]计算系统100的低功率状态是指其中处理器106和系统100的某些其它硬件组件断开(例如没有功率提供给处理器和某些其它硬件组件)的计算系统100的状态。在低功率状态中,功率可以仍旧提供给嵌入式控制器102。计算系统100可以在以下任何场景中转变到低功率状态:(I)作为使得系统100断电以随后上电的计算系统100的冷重置的一部分,或者(2)作为功率节省过程的一部分,其中计算系统100可以在一段时间不活动之后,或者响应于检测到低电池状况,或者响应于用户或应用命令,或者出于另一原因而从正常操作状态转变到睡眠状态、休眠状态或断开状态,或者(3 )在任何其它场景中。
[0021]低功率状态的示例可以包括某些高级配置与电源接口(ACPI)状态,包括:ACPI S3状态(其是待机或睡眠状态的形式,其中计算系统100的系统上下文维持在保持通电的易失性存储器中,而计算系统100的一些组件是断电的);ACPI S4状态(其是休眠状态的形式,其中系统上下文保存到持久存储装置以允许从包括易失性存储器的附加计算系统组件移除功率);以及ACPI S5状态(其是系统断开状态的形式,其中已经从计算系统100的甚多的组件移除功率)。
[0022]在引导块110重启时,做出潜在地不受信代码之前已经在计算系统
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1