CN105122262B - 辅助非易失性存储器中的冗余系统引导代码 - Google Patents

辅助非易失性存储器中的冗余系统引导代码 Download PDF

Info

Publication number
CN105122262B
CN105122262B CN201380075918.6A CN201380075918A CN105122262B CN 105122262 B CN105122262 B CN 105122262B CN 201380075918 A CN201380075918 A CN 201380075918A CN 105122262 B CN105122262 B CN 105122262B
Authority
CN
China
Prior art keywords
nonvolatile memory
controller
code
bus
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201380075918.6A
Other languages
English (en)
Other versions
CN105122262A (zh
Inventor
R.H.霍奇
J.K.让索涅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN105122262A publication Critical patent/CN105122262A/zh
Application granted granted Critical
Publication of CN105122262B publication Critical patent/CN105122262B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

控制器确定存储在第一非易失性存储器中的系统引导代码是否受损且不可恢复。响应于确定系统引导代码受损且不可恢复,激活切换逻辑以将第二非易失性存储器连接到共享总线并且将第一非易失性存储器从共享总线断开。

Description

辅助非易失性存储器中的冗余系统引导代码
背景技术
计算系统可以包括执行计算设备的各种启动功能的代码。该代码可以包括基本输入/输出系统(BIOS)代码。BIOS代码可以是计算系统中或者来自外部服务的恶意软件的攻击目标。作为攻击的结果,BIOS代码可能变得受损。
附图说明
参照随附各图描述一些实现方案:
图1是根据一些实现方案的示例系统的框图;
图2是根据一些实现方案的系统引导代码恢复过程的流程图;以及
图3是根据另外的实现方案的另一示例系统的框图。
具体实施方式
用于执行计算系统的启动的系统代码上的恶意软件攻击可能使计算系统的完整性受损,使得可能发生计算系统中的未经授权的访问和操作。例如,受损系统代码可能允许恶意实体对计算系统的隐蔽远程监控和/或控制、恶意软件对计算系统中的数据的未经授权访问和/或修改、计算系统的损坏等等。受损系统代码可以是指已经被破坏使得系统代码不再可用的系统代码,或者可替换地,受损系统代码可以是指已经以某种方式改变但仍旧能够执行的系统代码。要指出,系统代码也可能意外地或有意地受损。
尽管可以在计算系统中提供保护机制来保护系统代码,但是这样的保护机制可能在某些条件之下变得受损,其可能使系统代码经受恶意软件攻击。
用于执行计算系统的启动的系统代码可以包括系统固件,其可以具有在计算系统的处理器(或多个处理器)上可执行的机器可读指令的形式。“系统固件”可以涵盖能够执行计算系统的启动的任何机器可读指令。计算系统的示例包括台式计算机、笔记本计算机、平板计算机、个人数字助理(PDA)、智能电话、游戏器具、服务器计算机、存储节点、网络通信节点等。
系统固件可以包括基本输入/输出系统(BIOS)代码,其可以初始化计算系统的各种组件,并且加载计算系统的操作系统(OS)。BIOS代码可以执行硬件组件的检查以确保硬件组件恰当地存在和运转。这可以是例如加电自检(POST)过程的一部分。在POST过程之后,BIOS代码可以通过引导序列的其余部分进行,在此之后BIOS代码可以加载并且传递控制给OS。BIOS代码可以包括传统BIOS代码或统一可扩展固件接口(UEFI)代码。在一些示例中,BIOS代码可以包括在OS加载之后执行的运行时间部分。
系统固件可以存储在非易失性存储器中,诸如闪速存储器或者可编程的任何其它持久存储器。一旦非易失性存储器中的系统固件受损,则一种可能的补救可以涉及物理地更换包括该非易失性存储器的组件。解决受损系统固件的这样的技术可能是劳动力密集的、昂贵的以及耗时的。
依照一些实现方案,可以提供辅助非易失性存储器,其附加于存储系统固件的主版本的主非易失性存储器。辅助非易失性存储器可以存储系统固件的冗余版本。如果主非易失性存储器中的系统固件变得受损,则可以替代地使用辅助非易失性存储器中的系统固件。
在随后的讨论中,尽管对“系统固件”做出引用,但是要指出的是,技术或机制可以适用于其它类型的系统引导代码,其中系统引导代码可以是指可在重启之后引导计算系统或者可从低功率状态恢复计算系统的任何代码。
图1是包括嵌入式控制器102、主非易失性存储器104、处理器106和辅助非易失性存储器116的示例计算系统100的框图。主非易失性存储器104可以存储系统固件的主版本(称为“主系统固件”107),其可以包括BIOS代码。辅助非易失性存储器116可以存储系统固件的冗余版本(称为“冗余系统固件”114)。冗余系统固件114可以是主系统固件107的相同副本,或者可替换地,冗余系统固件114可以不同于主系统固件107(例如,冗余系统固件114可以是系统固件的较早或较晚版本)。
辅助非易失性存储器116可以在物理上与主非易失性存储器104分离(诸如实现为不同的物理存储器设备)。可替换地,主非易失性存储器104和辅助非易失性存储器116可以在物理上驻留于共同的存储器设备上,但是主非易失性存储器104和辅助非易失性存储器116处于物理存储器设备的不同区段中。
还提供切换逻辑108以选择性地将主非易失性存储器104和辅助非易失性存储器116中的一个连接到共享总线120。共享总线120是嵌入式控制器102和处理器106可访问的。尽管在图1中未示出,但是输入/输出(I/O)控制器可以提供在处理器106与共享总线120之间。
切换逻辑108通过第一链路110连接到主非易失性存储器104,并且通过第二链路112连接到辅助非易失性存储器116。切换逻辑108通过来自嵌入式控制器102的选择信号122进行控制。
在一些示例中,切换逻辑108可以是复用器/去复用器。如果选择信号122处于第一状态,则切换逻辑108连接共享总线120和第一链路110,使得主非易失性存储器104是通过共享总线120可访问的。如果选择信号122处于第二不同状态,则切换逻辑108连接共享总线120和第二链路112,使得辅助非易失性存储器116是通过共享总线120可访问的。
当通过共享总线可访问时,主和辅助非易失性存储器104和116中所连接的那个是共享的非易失性存储器。非易失性存储器在其通过多个实体可访问的意义上是“共享的”,所述多个实体包括嵌入式控制器102和至少一个其它实体(包括处理器106)。
没有通过切换逻辑108连接到共享总线120的其它非易失性存储器是通过共享总线120不可访问的。在一些示例中,辅助非易失性存储器116可以通过私用总线124连接到嵌入式控制器102。私用总线124可以由嵌入式控制器102使用以在计算系统100的供应期间(诸如在工厂处或在服务站点处)将冗余系统固件114(和系统数据)复制到辅助非易失性存储器116。
在其它示例中,省略私用总线124。
在一些实现方案中,计算系统100的默认配置可以是以下这样:其中切换逻辑108由嵌入式控制器102控制以将主非易失性存储器104连接到共享总线120,而辅助非易失性存储器116通过切换逻辑108与共享总线120隔离。在默认配置中,主系统固件107是处理器106可检索的并且可以在处理器106上执行以执行系统引导或恢复。
在默认配置中,如果提供私用总线124,则辅助非易失性存储器116是嵌入式控制器102可访问的,但是对于计算系统100中的处理器106或其它组件是不可访问的。使辅助非易失性存储器116在默认配置中对于处理器106和其它组件是不可访问的保护辅助非易失性存储器116的内容以免受未经授权的篡改。
响应于检测到主系统固件107受损,嵌入式控制器102可以执行各种动作。首先,在一些实现方案中,嵌入式控制器102试图通过从辅助非易失性存储器116向主非易失性存储器104复制冗余系统固件114以便利用冗余系统固件114更换受损系统固件107,来从主非易失性存储器104中的受损系统固件107恢复。
然而,在一些情况下,可以可能的是计算系统100中的错误或故障(诸如主非易失性存储器104的物理故障或者链路110的物理故障)可能防止主非易失性存储器104中的系统固件107的恢复。实际上,计算系统100中的错误或故障可能已经贡献于主系统固件107的受损的检测。在这样的情况下,作为故障保护技术,选择信号122的状态可以改变成将辅助非易失性存储器116连接到共享总线120,并且将主非易失性存储器104与共享总线120隔离。这样的配置可以称为“辅助配置”。在辅助配置中,冗余系统固件114是处理器106可检索的并且可以在处理器106上执行。
如果嵌入式控制器102确定嵌入式控制器102不能够成功地将冗余系统固件114写入到主非易失性存储器104,诸如由于主非易失性存储器104或链路110的故障,则嵌入式控制器102可以检测到受损系统固件107的恢复是不可能的。可替换地,如果嵌入式控制器102执行恢复操作(以将冗余系统固件114复制到主系统固件107)并且在该恢复操作之后,嵌入式控制器102再次检测到主系统固件107仍旧受损,则嵌入式控制器102可以检测到受损系统固件107的恢复是不可能的。
在一些实现方案中,仅一个实体可以在任何给定时间访问共享总线120,使得仅一个实体可以在某一时间访问共享非易失性存储器(主和辅助非易失性存储器中连接到共享总线120的那个)。在一些示例中,共享总线120是共享串行外围接口(SPI)总线。SPI总线是其中SPI总线上的设备以主-从模式操作的同步串行数据链路。在其它示例中,可以使用另一类型的共享总线120。在可替换示例中,可以提供仲裁机制以允许计算系统的各种状态中的总线120的共享访问,包括低功率状态和正常运行时间状态。
在一些示例中,系统固件107或114可以包括引导块。引导块是BIOS代码的一部分,并且在计算系统100启动时首先执行。在允许BIOS代码的其余部分执行之前首先执行引导块。引导块可以用于检查BIOS代码的完整性以及执行其它最初功能。如果引导块确认BIOS代码的完整性,则引导块可以将控制传递给BIOS代码的主要部分以用于发起与BIOS代码相关联的其余操作。
在一些实现方案中,引导块可以包括可信度量核心根(CRTM)逻辑,其是由作为产业标准工作组的可信计算组(TCG)指定的逻辑。在计算系统100的上电过程期间,CRTM逻辑可以执行某种初始化任务并且可以做出被存储以供随后使用的数个测量。CRTM逻辑然后可以在将控制传递给BIOS代码的主要部分之前检查BIOS代码。一旦BIOS代码完成执行并且将控制传递给OS,则OS可以基于CRTM逻辑所进行的测量来验证计算系统100的可信性。
嵌入式控制器102在物理上与计算系统100的处理器106分离。处理器106用于执行OS、应用代码和系统100中的其它代码。另一方面,嵌入式控制器102可以用于执行具体预定义的任务。可以由嵌入式控制器102执行的任务的示例包括以下中的任何一个或某种组合:计算系统100中的电源控制(用于控制向计算系统100中的各种组件供应电源电压的电源)、计算系统100中的电池的充电和控制、热监控(以监控计算系统100中的温度)、风扇控制(以控制计算系统100中的风扇)以及与用户输入设备的交互(诸如执行计算系统100的键盘的扫描或者与诸如鼠标、触摸板、触摸屏的定点设备的交互等)。嵌入式控制器102可以利用微控制器、专用集成电路(ASIC)、可编程门阵列(PGA)或者任何其它类型的可编程电路来实现。
嵌入式控制器102包括能够执行嵌入式控制器102的指定任务的处理电路126。处理电路126包括硬件电路。在一些示例中,处理电路126可以执行机器可读指令,诸如以嵌入式控制器固件(EC固件)或其它控制器代码的形式。要指出的是,EC固件可以最初存储在主或辅助非易失性存储器104或116中,并且可以加载到嵌入式控制器102中以供执行。可替换地,要指出的是,在嵌入式控制器102上可执行的控制器代码可以可替换地是可具有机器可读指令的形式的应用软件。在随后的讨论中,尽管对“EC固件”做出引用,但是要指出的是,技术或机制可以适用于其它形式的控制器代码。
图2是根据一些实现方案的过程的流程图。在其中处理器106不访问主非易失性存储器104(诸如由于处理器106被禁用或者以其它方式是空闲的)的时段期间,嵌入式控制器102中的处理电路126确定(在202处)存储在主非易失性存储器104中的主系统固件107是否受损以及嵌入式控制器102是否不能用于恢复受损的主系统固件107(如以上讨论的)。处理器106被禁用是指处理器106处于断电状态(没有功率提供给处理器106的主要处理部分)或者处于重置状态(例如针对处理器106断言的重置信号,其防止处理器106执行机器可读指令)。
响应于确定主系统固件107受损并且不可恢复,处理电路126改变选择信号122的状态以激活(在204处)切换逻辑108来将辅助非易失性存储器116连接到共享总线120并且将主非易失性存储器104从共享总线120断开。
在通过切换逻辑108连接到共享总线120之后,辅助非易失性存储器116变得是处理器106可访问的,处理器106可以从辅助非易失性存储器116检索冗余系统固件114以供在处理器106处执行(在206处)。通过能够执行从主非易失性存储器104向辅助非易失性存储器116的切换,允许用户继续使用计算系统110,即便主系统固件107是不可用的。
随后,可以向用户警告已经存在防止使用主非易失性存储器104中的主系统固件107的故障,并且计算系统当前在运行辅助非易失性存储器116中的冗余系统固件114。应当调度服务事件以解决该状况。在该状况下运行时,计算系统不具有抵抗系统固件的受损的附加保护水平,该系统固件是在辅助非易失性存储器116向主非易失性存储器104中的主系统固件提供冗余系统固件时提供的。作为结果,如果辅助非易失性存储器116中的系统固件变得受损,则可能存在计算系统可能变得损坏的风险(因为此时没有冗余)。
系统固件是否已经受损的确定(在202处)可以基于执行系统固件的验证。验证代码片段,诸如系统固件,可以是指以密码方式核实代码片段尚未改变和/或确认代码片段来自受信源。
系统固件的验证可以由嵌入式控制器102在处理器106对系统固件(来自主或辅助非易失性存储器)的重启执行的每一个实例之前执行,所述重启执行诸如由于计算系统100的冷重置、计算系统100从低功率状态的恢复、操作系统重启等。要指出的是,系统固件还可以由嵌入式控制器102在计算系统100每一次进入低功率状态时验证。在其它示例中,嵌入式控制器102还可以在处理器106保持加电时验证系统固件。
计算系统100的低功率状态是指其中处理器106和系统100的某些其它硬件组件关断(例如没有功率提供给处理器和某些其它硬件组件的主要处理部分)的计算系统100的状态。在低功率状态中,功率可以仍旧提供给嵌入式控制器102。计算系统100可以在以下任何场景中转变到低功率状态:(1)作为使得系统100断电以随后上电的计算系统100的冷重置的一部分,或者(2)作为功率节省过程的一部分,其中计算系统100可以在一段时间不活动之后,或者响应于检测到低电池状况,或者响应于用户或应用命令,或者出于另一原因而从正常操作状态转变到睡眠状态、休眠状态或关断状态,或者(3)在任何其它场景中。
低功率状态的示例可以包括某些高级配置与电源接口(ACPI)状态,包括:ACPI S3状态(其是待机或睡眠状态的形式,其中计算系统100的系统上下文维持在保持通电的易失性存储器中,而计算系统100的一些组件是断电的);ACPI S4状态(其是休眠状态的形式,其中系统上下文保存到持久存储装置以允许从包括易失性存储器的附加计算系统组件移除功率);以及ACPI S5状态(其是系统关断状态的形式,其中已经从计算系统100的甚多的组件移除功率)。
在另外的示例中,嵌入式控制器102可以响应于计算系统100的暖重置而执行系统固件的验证,其中计算系统100在不移除至计算系统100的功率的情况下重启。为了允许嵌入式控制器102响应于暖重置而执行验证,可以迫使计算系统100在检测到暖重置时转变到适当的低功率状态(诸如以上所列出的低功率状态中的某些)。
在其它示例中,嵌入式控制器102可以在任何时间执行验证,甚至是计算系统不处于低功率状态中时。例如,嵌入式控制器102可以在处理器空闲或不访问主非易失性存储器104的时候执行验证。当检索系统固件以供处理器执行时,通过嵌入式控制器102的验证还可以“实时”执行。
图3是根据另外的实现方案的计算系统100的框图。图3的计算系统100包括输入/输出(I/O)控制器302,其连接在处理器106与共享总线120之间。在一些示例中,I/O控制器302可以是来自Intel公司的平台控制器中心(PCH)。PCH可以包括各种功能,包括到图形子系统的显示接口、到各种I/O设备可以连接于的系统总线的系统总线接口等。在其它示例中,可以使用其它类型的I/O控制器。
如图3中所描绘的,嵌入式控制器102耦合到用户输入设备301(例如鼠标设备或其它类型的输入设备)、键盘302、风扇303、电池304和电源305,以管理相应设备(在嵌入式控制器102中执行的EC固件的控制之下)。在嵌入式控制器102中执行的EC固件可以从主或辅助非易失性存储器104或116加载。
在一些示例中,主非易失性存储器104中的系统固件107包括引导块306。引导块306可以包括EC固件307。在其它示例中,EC固件307可以与系统固件107分离。类似地,辅助非易失性存储器116中的冗余系统固件114包括引导块308和EC固件309。
在图3的示例中,嵌入式控制器102包括密码硬件312,其可以执行密码计算,诸如在EC固件和系统固件的验证中所使用的那些。密码硬件312可以具有被配置成执行密码计算的电路的形式。
嵌入式控制器102还包括只读存储器(ROM)314,其可以用于存储引导加载器316和加密密钥318。加密密钥318可以是用于执行EC固件(307或309)的验证的密钥(公钥或私钥)。在系统启动期间,引导加载器316从ROM 314加载以在嵌入式控制器102中执行以便从主或辅助非易失性存储器104或116向嵌入式控制器102的随机存取存储器(RAM)319中检索EC固件。引导加载器316可以采取步骤来确保除嵌入式控制器102之外没有其它实体能够在EC固件加载操作期间访问共享总线120。
为了检索用于加载到嵌入式控制器102中的EC固件,引导加载器316可以寻找到指向EC固件镜像的指针(或其它引用),所述EC固件镜像可以存储在主或辅助非易失性存储器104或116中。
所检索到的EC固件通过嵌入式控制器102中的验证逻辑进行验证,其中验证逻辑可以包括能够调用密码硬件312以帮助执行密码计算的引导加载器316中的功能性。
从非易失性存储器(104或116)所检索到的EC固件的验证可以在嵌入式控制器102的初始化过程期间执行。嵌入式控制器102的初始化过程是指在嵌入式控制器102已经重置之后或者在嵌入式控制器102的功率循环(其中从嵌入式控制器102移除功率并且然后将功率重新应用于嵌入式控制器102)之后嵌入式控制器102首次启动时执行的过程。
一旦EC固件被验证并且加载用于在嵌入式控制器102上执行,则EC固件可以在处理器106对系统固件的每一个重启执行之前验证系统固件(107或114)。
在主非易失性存储器104中,签名322与EC固件307相关联,并且签名324与引导块306相关联。类似地,在辅助非易失性存储器116中,签名340与EC固件309相关联,并且签名342与引导块308相关联。签名322或340用于相应EC固件307或309的验证,而签名340或342用于相应引导块306或308的验证。在验证过程中使用签名可以允许确定相应EC固件或引导块的真实性,并且确定相应EC固件或引导块尚未受损。
在一些实现方案中,EC固件307或309的验证可以通过使用存储在嵌入式控制器ROM 314中的加密密钥318对相应签名322或340进行解密来达成。对签名进行解密产生可以与EC固件的对应计算值(例如散列值)相比较的相应值(例如散列值)。如果前述值匹配,则EC固件被验证。类似过程可以用于使用相应数字签名324或342对BIOS引导块306或308进行验证。
主和辅助非易失性存储器104和116中的每一个也可以存储涉及计算系统100的各种方面的配置的系统数据336或338。例如,系统数据336或338可以包括机器唯一数据、网络接口控制器数据、布局描述子数据等。
网络接口控制器数据可以包括网络接口控制器(其用于通过网络执行通信)的配置数据。布局描述子数据可以包括描述主和辅助非易失性存储器104和116的布局的信息,以及用于I/O控制器302的配置参数。
机器唯一数据可以是指对于每一个特定计算系统唯一的任何数据或设置。机器唯一数据的示例可以包括以下中的任一个或某种组合:产品名称、产品型号、库存单位(SKU)号码(用于标识待销售的相应计算系统)、计算系统的序列号、系统或商品追踪号码(用于标识计算系统的系统板)、系统配置标识符(用于标识计算系统的配置)、担保数据(用于描述与计算系统相关联的担保)、通用唯一标识符(UUID)、BIOS代码的默认设置等。作为机器唯一数据的示例而提供以上内容;在其它示例中,可以提供其它或附加类型的机器唯一数据。
通过使用根据一些实现方案的技术或机制,计算系统能够甚至在防止主非易失性存储器中的系统固件的恢复的系统故障或错误的情况下继续操作。继续操作的能力不必涉及人类的手动干预。
机器可读指令,诸如在嵌入式控制器102或处理器106中可执行的那些,可以从机器可读或计算机可读存储介质(或多个存储介质)加载。
存储介质可以包括不同形式的存储器,包括:半导体存储器设备,诸如动态或静态随机存取存储器(DRAM或SRAM)、可擦除和可编程只读存储器(EPROM)、电可擦除和可编程只读存储器(EEPROM)和闪速存储器;磁盘,诸如固定盘、软盘和可移除盘;其它磁性介质,包括磁带;光学介质,诸如致密盘(CD)或数字视频盘(DVD);或者其它类型存储设备。要指出的是,以上讨论的指令可以提供在一个计算机可读或机器可读存储介质上,或者可替换地,可以提供在分布于具有可能地多个节点的大系统中的多个计算机可读或机器可读存储介质上。这样的一个或多个计算机可读或机器可读存储介质被视为物品(或制品)的一部分。物品或制品可以是指任何制造的单个组件或多个组件。一个或多个存储介质可以位于运行机器可读指令的机器中,或者位于可以通过网络从其下载机器可读指令以供执行的远程场所处。
在之前的描述中,阐述众多细节以提供对本文公开的主题的理解。然而,实现方案可以在没有一些或全部这些细节的情况下实践。其它实现方案可以包括来自以上所讨论的细节的修改和变型。随附权利要求意图覆盖这样的修改和变型。

Claims (15)

1.一种用于在系统中使用的控制器,包括:
处理电路,用于
确定存储在第一非易失性存储器中的系统引导代码是否受损且不可恢复,其中第一非易失性存储器最初是由控制器和处理器通过共享总线可访问的;以及
响应于确定系统引导代码受损且不可恢复,激活切换逻辑以将第二非易失性存储器连接到共享总线并且将第一非易失性存储器从共享总线断开,其中第二非易失性存储器在通过切换逻辑连接到共享总线之后是由处理器可访问的以从第二非易失性存储器检索冗余系统引导代码。
2.权利要求1所述的控制器,其中在激活切换逻辑以将第二非易失性存储器连接到共享总线之前,第二非易失性存储器与共享总线隔离。
3.权利要求1所述的控制器,其中在激活切换逻辑以将第二非易失性存储器连接到共享总线之后,第一非易失性存储器与共享总线隔离。
4.权利要求1所述的控制器,其中确定系统引导代码是否受损是在系统进入到低功率状态中之后或者是在处理器处的系统引导代码的重启的每一个实例之前执行的,其中控制器具有存储密码密钥的只读存储器。
5.权利要求4所述的控制器,其中确定系统引导代码是否受损使用控制器处的密码密钥。
6.权利要求1所述的控制器,其中控制器是嵌入式控制器。
7.权利要求1所述的控制器,其中确定系统引导代码是否受损包括确定引导块是否受损。
8.权利要求1所述的控制器,还包括在控制器中执行时使得控制器执行选自以下当中的至少一项的控制器代码:系统中的电源控制、系统中的热监控、系统中的风扇控制、系统中的电池充电和控制以及与用户输入设备的交互。
9.权利要求1所述的控制器,还包括验证存储在第一或第二非易失性存储器中的控制器代码的验证逻辑。
10.权利要求9所述的控制器,其中处理电路用于响应于所述验证而从第一非易失性存储器加载控制器代码,并且其中控制器代码在处理电路上可执行来执行所述确定和所述激活。
11.一种用于提供辅助非易失性存储器的系统,包括:
处理器;
总线;
连接到总线的切换逻辑;
存储主系统引导代码的第一非易失性存储器;
存储冗余系统引导代码的第二非易失性存储器,其中切换逻辑最初将第一非易失性存储器连接到总线,并且其中处理器最初能够通过总线访问主系统引导代码;
嵌入式控制器,用于:
确定存储在第一非易失性存储器中的主系统引导代码是否受损且不可恢复;以及
响应于确定系统引导代码受损且不可恢复,激活切换逻辑以将第二非易失性存储器连接到总线并且将第一非易失性存储器从总线断开,其中第二非易失性存储器在通过切换逻辑连接到总线之后是由处理器可访问的以从第二非易失性存储器检索冗余系统引导代码以供在处理器上执行。
12.权利要求11所述的系统,其中系统引导代码包括基本输入/输出系统(BIOS)代码的至少一部分。
13.权利要求11所述的系统,其中嵌入式控制器用于在其中处理器不访问第一非易失性存储器的时间段期间确定系统引导代码受损。
14.权利要求11所述的系统,其中第一和第二非易失性存储器中的每一个还用于存储涉及系统的各方面的配置的系统数据。
15.一种用于提供辅助非易失性存储器的方法,包括:
通过控制器确定存储在第一非易失性存储器中的系统引导代码是否由于系统中的物理故障而受损且不可恢复,其中第一非易失性存储器最初是由控制器和处理器通过共享总线可访问的,并且其中系统还包括第二非易失性存储器,第二非易失性存储器最初是由控制器可访问且由处理器不可访问的私用非易失性存储器;
响应于确定第一非易失性存储器中的系统引导代码受损且不可恢复,激活切换逻辑以将第二非易失性存储器连接到共享总线并且将第一非易失性存储器从共享总线断开;以及
在激活切换逻辑之后在处理器上执行从第二非易失性存储器所检索到的系统引导代码。
CN201380075918.6A 2013-04-23 2013-04-23 辅助非易失性存储器中的冗余系统引导代码 Active CN105122262B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/037725 WO2014175862A1 (en) 2013-04-23 2013-04-23 Redundant system boot code in a secondary non-volatile memory

Publications (2)

Publication Number Publication Date
CN105122262A CN105122262A (zh) 2015-12-02
CN105122262B true CN105122262B (zh) 2018-06-05

Family

ID=51792251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380075918.6A Active CN105122262B (zh) 2013-04-23 2013-04-23 辅助非易失性存储器中的冗余系统引导代码

Country Status (5)

Country Link
US (1) US9785596B2 (zh)
EP (1) EP2989579B1 (zh)
CN (1) CN105122262B (zh)
TW (1) TWI530790B (zh)
WO (1) WO2014175862A1 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2989547B1 (en) 2013-04-23 2018-03-14 Hewlett-Packard Development Company, L.P. Repairing compromised system data in a non-volatile memory
WO2014175861A1 (en) * 2013-04-23 2014-10-30 Hewlett-Packard Development Company, L.P. Recovering from compromised system boot code
US10733288B2 (en) 2013-04-23 2020-08-04 Hewlett-Packard Development Company, L.P. Verifying controller code and system boot code
CN104657233A (zh) * 2015-01-28 2015-05-27 加弘科技咨询(上海)有限公司 一种x86系统中bios引导块的恢复备份方法及备份系统
DE102015108504B4 (de) 2015-05-29 2019-05-02 Fujitsu Client Computing Limited Verfahren zum sicheren Booten eines Computersystems und Computersystem
FR3043228B1 (fr) 2015-11-03 2018-03-30 Proton World International N.V. Demarrage controle d'un circuit electronique
FR3043229B1 (fr) 2015-11-03 2018-03-30 Proton World International N.V. Demarrage securise d'un circuit electronique
US10223217B2 (en) * 2015-11-24 2019-03-05 Ricoh Company, Ltd. Information processing device, method for booting information processing device, and non-transitory recording medium
US9928367B2 (en) * 2015-12-03 2018-03-27 Hewlett-Packard Development Company, L.P. Runtime verification
US10019577B2 (en) * 2016-04-14 2018-07-10 Dell Products, L.P. Hardware hardened advanced threat protection
JP6740789B2 (ja) * 2016-08-03 2020-08-19 富士通株式会社 ストレージ制御装置および記憶装置管理プログラム
US10515218B2 (en) * 2016-10-01 2019-12-24 Intel Corporation Systems, apparatuses, and methods for platform security
CN108399328B (zh) * 2017-02-08 2021-04-27 新唐科技股份有限公司 系统存储器内容认证设备及方法
CN108228387B (zh) * 2017-12-27 2019-11-05 中兴通讯股份有限公司 一种启动控制方法、电子设备以及计算机可读存储介质
US11068599B2 (en) * 2018-12-19 2021-07-20 Dell Products, L.P. Secure initialization using embedded controller (EC) root of trust
US10853179B2 (en) * 2018-12-21 2020-12-01 Dell Products L.P. Information handling system and method for restoring firmware in one or more regions of a flash memory device
US11418335B2 (en) 2019-02-01 2022-08-16 Hewlett-Packard Development Company, L.P. Security credential derivation
US11520662B2 (en) 2019-02-11 2022-12-06 Hewlett-Packard Development Company, L.P. Recovery from corruption
EP3792801B1 (en) * 2019-09-11 2022-11-09 Secure Thingz Limited A processor system
JP6918994B2 (ja) * 2020-01-09 2021-08-11 レノボ・シンガポール・プライベート・リミテッド 情報処理装置および情報処理方法
TWI722852B (zh) * 2020-03-30 2021-03-21 技嘉科技股份有限公司 固態硬碟以及啟動方法
WO2021216046A1 (en) * 2020-04-21 2021-10-28 Hewlett-Packard Development Company, L.P. Bios updates
WO2021242252A1 (en) * 2020-05-29 2021-12-02 Hewlett-Packard Development Company, L.P. Bios configurations via provisioning devices
FR3111441B1 (fr) * 2020-06-10 2022-08-05 Proton World Int Nv Démarrage sécurisé d'un circuit électronique
TWI760805B (zh) * 2020-07-31 2022-04-11 廣達電腦股份有限公司 具有雙重安全啟動之自動駕駛系統
US20220100504A1 (en) * 2020-09-25 2022-03-31 Advanced Micro Devices, Inc. Shared data fabric processing client reset system and method
JP7011697B1 (ja) 2020-10-09 2022-01-27 レノボ・シンガポール・プライベート・リミテッド 情報処理装置および情報処理方法
US20220197746A1 (en) * 2020-12-18 2022-06-23 Advanced Micro Devices, Inc. Combination bios with a/b recovery
US11809876B2 (en) * 2021-04-29 2023-11-07 Dell Products L.P. Trusted platform module protection for non-volatile memory express (NVMe) recovery
US11487621B1 (en) * 2021-04-29 2022-11-01 Dell Products L.P. Linking embedded controller with memory reference code and system bios shadowing
US11803454B2 (en) * 2021-04-30 2023-10-31 Dell Products L.P. Chained loading with static and dynamic root of trust measurements

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101965570A (zh) * 2008-02-29 2011-02-02 先进微装置公司 具有安全启动机制的计算机系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2940480B2 (ja) 1996-07-05 1999-08-25 日本電気株式会社 コンピュータシステム
TW480444B (en) 2000-11-29 2002-03-21 Mitac Technology Corp Computer system boot-up method capable of completing the startup procedure even the system BIOS code is damaged
TWI280487B (en) 2004-12-15 2007-05-01 Via Tech Inc Power-on method for computer system with hyper-threading processor
US7340595B2 (en) 2005-01-07 2008-03-04 International Business Machines Corporation Multiplex execution-path system
US7193895B2 (en) 2005-06-24 2007-03-20 Chingis Technology Corporation Redundant memory content substitution apparatus and method
DE102006043636A1 (de) 2006-09-18 2008-03-27 Fujitsu Siemens Computers Gmbh Computersystem und Verfahren zum Aktualisieren von Programmcode
US7613872B2 (en) 2006-11-28 2009-11-03 International Business Machines Corporation Providing core root of trust measurement (CRTM) for systems using a backup copy of basic input/output system (BIOS)
US8190950B2 (en) 2007-12-21 2012-05-29 Atmel Corporation Dynamic column redundancy replacement
TWI411959B (zh) * 2008-03-21 2013-10-11 Asustek Comp Inc 具雙開機程式碼區之電腦系統及其啟動方法
US20090248955A1 (en) 2008-03-31 2009-10-01 Satoru Tamada Redundancy for code in rom
TW201007465A (en) 2008-08-13 2010-02-16 Ene Technology Inc A sharable memory architecture of cache in a embedded controller and a method of sharing memory
US8103909B2 (en) 2008-09-15 2012-01-24 Juniper Networks, Inc. Automatic hardware-based recovery of a compromised computer
TWI386852B (zh) * 2008-10-24 2013-02-21 Wistron Corp 基本輸出入系統之切換系統及其切換方法
TW201017407A (en) 2008-10-31 2010-05-01 Ind Tech Res Inst Nonvolatile data storage system and method thereof
US8151101B2 (en) 2008-11-06 2012-04-03 Lenovo (Singapore) Pte. Ltd. Method, apparatus, and system for quiescing a boot environment
TW201133342A (en) 2010-03-30 2011-10-01 Hon Hai Prec Ind Co Ltd Method for integrating OS into BIOS chip, and method for booting the OS
US8732527B2 (en) * 2011-08-16 2014-05-20 Google Inc. Secure recovery apparatus and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101965570A (zh) * 2008-02-29 2011-02-02 先进微装置公司 具有安全启动机制的计算机系统

Also Published As

Publication number Publication date
EP2989579A1 (en) 2016-03-02
WO2014175862A1 (en) 2014-10-30
US9785596B2 (en) 2017-10-10
TW201502790A (zh) 2015-01-16
EP2989579A4 (en) 2016-11-30
US20160055113A1 (en) 2016-02-25
TWI530790B (zh) 2016-04-21
EP2989579B1 (en) 2018-06-06
CN105122262A (zh) 2015-12-02

Similar Documents

Publication Publication Date Title
CN105122262B (zh) 辅助非易失性存储器中的冗余系统引导代码
US11520894B2 (en) Verifying controller code
CN105122259B (zh) 控制器和用于检索系统引导代码的系统及方法
TWI522838B (zh) 組配系統之技術
CN105308609B (zh) 存储事件数据的系统和方法
JP6198876B2 (ja) セキュア・リカバリ装置及び方法
TWI648652B (zh) 修復受危害之系統啓動碼之技術
EP2989547B1 (en) Repairing compromised system data in a non-volatile memory

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant