母板、计算机可读存储装置以及固件验证方法与流程

文档序号:11590923阅读:212来源:国知局

本发明涉及固件认证,特别涉及防止启动服务器母板的恶意固件更新的固件认证。



背景技术:

在以往,英特尔(intel)以及其他芯片供货商已将越来越多的功能,集成至芯片封装中。举例而言,现今的一个普通芯片设计,包括一核心处理器、存储器控制器、集成的输入/输出控制器、usb控制器、sata控制器等等。芯片制造商还可提供一客户参考板(customerreferenceboard)以及硅固件参考码,藉以帮助服务器母板(motherboard)设计的原厂设计制造(originaldesignmanufactures(odm))。客制化芯片的能力,依据母板的原厂设计制造的需求,上述现象意味着芯片的改变受限于输入/输出周边、布局、元件配置以及固件设计。换句话说,服务器母板的设计变成更加正规化以及更低复杂度的工程,且设计已迁移至硅(也即芯片本身)。

近来,开源基金会(opensourcefoundations)(例如opc基金会)已开始鼓励设计者通过提供公共结构以享有存储在共享数据库的设计的好处,在网络上公开地分享想法、规格以及其他知识产权。上述开源基金会的使用者,可进一步访问所记录的数据库,且制造任何一个可运用的文献。

近年来,源自恶意软件、蠕虫以及病毒的恶意攻击,已从软件转移至固件,特别是统一可扩展固件接口(unifiedextensiblefirmwareinterface)、基本输入输出系统(basicinput/outputsystem)以及基板管理控制器(baseboardmanagementcontroller)固件。如图2所示,由于上述所提到的固件的一部分源于开源基金会202以及论坛204,因此黑客使用开放原始码数据库的恶意行为,是有可能存在的。特别的是,恶意人士可不受限制地下载固件规格(步骤208),进而研究上述固件规格以找出可能的安全漏洞,且利用上述安全漏洞以非法地访问及/或伤害服务器。特别的是,上述黑客可将一服务器母板的固件(步骤210),更换为缺少各种安全协定的固件,进而在上述安全性功能 未启用的情况下启动服务器(步骤212)。由于上述安全性功能被关闭,上述黑客进而可以在母板启动时,植入病毒或恶意软件至操作系统内部(步骤214),并将上述病毒通过网络以及各种机架服务器218进行传递(步骤216)。虽然使用者可在服务器母板的固件内部设定一安全机制(例如安全启动(secureboot)或用户密码),然而当固件可通过开源信息而被更换时,数据即处于高风险的状况,因为服务器的母板很少对于固件的更换,进行安全检查。



技术实现要素:

本发明所提供的系统、母板、计算机可读存储装置以及实施例的概念,可在一母板启动之前,验证硬件及/或固件配置。举例而言,依据本发明的一系统配置,在提供电源给一母板,且在上述母板完成启动程序之前,会产生一随机数(nonce)(单次使用的密码),并传送上述随机数至上述母板的一第一元件,以及传送上述随机数至上述母板的一第二元件。上述系统进而从上述母板的一或多个元件(上述第一元件以及上述第二元件)接收一响应,而上述响应以上述第一元件与上述第二元件之间的一通信为基础,且上述通信使用上述随机数。当上述响应表示一正确硬件配置及/或固件配置时,上述系统执行上述母板的启动。

附图说明

图1是依据本发明一实施例的系统的示意图。

图2是依据本发明一实施例的在一母板中使用伪固件的示意图。

图3是依据本发明一实施例的服务器母板元件的专用通信的示意图。

图4是依据本发明另一实施例的服务器母板元件的专用通信的示意图。

图5是依据本发明一实施例的一母板的各元件之间的硬件连接的示意图。

图6是依据本发明一实施例的一母板的各元件之间的交叉验证的示意图。

图7是依据本发明一实施例的一复杂可编程逻辑设备传送一个密码和验证反馈的示意图。

图8是依据本发明另一实施例的一复杂可编程逻辑设备传送一个密码和验证反馈的示意图。

图9是依据本发明又一实施例的一复杂可编程逻辑设备传送一个密码和验证反馈的示意图。

图10是依据本发明又一实施例的一复杂可编程逻辑设备传送一个密码和验证反馈的示意图。

图11是依据本发明一实施例的方法的示意图。

附图标记说明

100~系统

110~系统总线

120~处理器

122~高速缓存

130~存储器

140~只读存储器

150~随机存取存储器

160~存储装置

170~输出装置

180~通信接口

190~输入装置

162、164、166~模块

202~开源基金会

204~论坛

208、210、212、214、216~步骤

218~机架服务器

300~示意图

302~bmc

304~uefibios

306~cpld

308、310、312、314、316、318~步骤

400~示意图

402~uefibios

404~cpld

406~bmc

418、424~gpio区块

434~gpio区块或信箱

438~ipmi

410、412、416、420、422、426、428、436、440、442、444~步骤

408~服务器管理

500~示意图

502~bmc

506~cpld

508~数学逻辑

512~pch

514~uefibios

504、510、516~密码

518、520~图表

600~示意图

602~pch

604~cpld

606~bmc

608~uefibios

610~算法

612、614、616、618、620、622~图表

702-714~步骤

802-818~步骤

902-918~步骤

1002-1012~步骤

1102-1112~步骤

具体实施方式

本发明提供系统、方法以及计算机可读存储装置,藉以提供一服务器母板在启动之前的保护机制。上述保护机制在上述服务器母板接收电源时,通过在服务器母板的硬件元件之间,建立新的专用通信,来使能该保护。上述 硬件元件可以是基板管理控制器(baseboardmanagementcontroller,以下称为bmc)以及统一可扩展固件接口(unifiedextensiblefirmwareinterface,以下称为uefi)基本输入输出系统(basicinput/outputsystem,以下称为bios)。上述保护机制使得上述bmc、uefibios以及上述服务器母板彼此之间的通信,使用一动态协议,上述动态协议通过随机数(nonce)产生器来初始化,而随机数可以是一个字、代码或仅用在单一时机的密码。上述母板的每一个元件,必须对所接收的输入信号做出正确的响应,直到验证程序完成。若任何元件产生不正确的响应,则导致上述服务器母板的电源被中断。上述服务器母板的复杂的可编程逻辑器件(complexprogrammablelogicdevice,以下称为cpld),是一根可信模块(roottrustedmodule),且可为验证固件配置的元件之一。举例而言,当一伪(fake)uefibios以及bmc固件被重新编程时,上述cpld可检查所接收的序列,并且可将上述所接收的序列与一正确序列做比较。若上述所接收的序列与上述正确序列不匹配,则表示一伪固件元件,且上述伪固件元件不知道用以通信的算法。在此情况下,上述cpld(或其他固件元件)将立即地关闭上述服务器母板的电源。

依据本发明一实施例,一系统的配置,可在一母板接收到电源,且在上述母板启动(booting)之前,产生一随机数;传送上述随机数至上述母板的一第一元件,以及传送上述随机数至上述母板的一第二元件。上述系统进而从上述母板的上述第一元件以及第二元件的至少其中之一,接收一响应,其中上述响应以上述第一元件与第二元件之间的一通信协议为基础,且上述通信协议使用上述随机数。当上述响应表示一正确硬件配置时,上述系统执行上述母板的启动。

本说明书将在下文中,详细描述本发明的各种实施例。本发明的具体的实施例将被描述,应当理解的是,各具体的实施例仅用于达到说明的目的。在不脱离本发明的精神以及范围的情况下,其他的元件以及配置也可被采用。此外,可以理解的是,本发明的一实施例或示例所描述的特征或配置,可以在本发明的其他实施例中实现,或与本发明的其他实施例做结合。也即,例如“实施例”、“变化”、“观点”、“示例”、“配置”、“实现”、“案例”以及其他的技术用语,可意味着描述特定特征或配置的实施例,但并不用以将相关的特定特征或配置限制在特定或独立的实施例,且并不用以表示上述特征或配置不能与其他实施例、变化、观点、示例、配置、实现、案例等等所提 到的特征或配置做结合。换句话说,本发明的一特定示例(例如实施例,变化、观点、配置、实现、案例等等)所描述的特征,可与其他示例所描述的特征做结合。因此,本领域技术人员应可了解,本发明的各实施例以及相关的特征,可与彼此做结合。

图1所示的基本通用系统或计算装置的简单介绍说明,可用以实现本发明的概念、方法以及技术。有关固件验证的更详细的描述,将伴随着各实施例以及变化,在下文中阐述。在此的各种变化可描述为各种实施例。以下将介绍图1的内容。

如图1所示,一系统100(或计算装置)包括一处理器(中央处理器(cpu)或处理器)120与一系统总线110,系统总线110将包括存储器130的各系统元件耦接至处理器120,例如只读存储器140与随机存取存储器150。系统100可包含一高速存储器的高速缓存(cache)122,高速缓存122可与处理器120直接连接、靠近或集成为一部分。系统100可由存储器130及/或存储装置160,复制数据至高速缓存122,藉以使处理器120可快速存取。通过此方法,该高速缓存可提供一性能提升以避免处理器120于等待数据时发生延迟。此模块与其他模块可控制,或被配置以控制处理器120执行各种操作或动作。其他存储器130也可被使用。存储器130可包含多种不同类型且具有不同性能特征的存储器。可以理解的是,本发明所揭露的内容可在系统100上,通过一个以上的处理器120来进行操作,或在一群或一聚集的链接成网络的多个计算设备中进行操作,藉以提供更好的处理性能。处理器120可包含任何通用处理器及一硬件模块或软件模块(如存储于存储装置160的模块162、模块164与模块166),并被配置以控制处理器120以及一特殊目的处理器,其中软件指令合并于处理器中。处理器120可为一自足式计算系统(self-containedcomputingsystem),并包含多个核心或处理器、一总线、存储器控制器、高速缓存等。一多核处理器可为对称或非对称。处理器120可包括多个处理器,例如一系统具备在不同插槽的多个实体独立处理器,或一系统具备在单一实体芯片中的多个处理器核心。相似地,处理器120可包括多个分布式处理器,设置于多个独立计算装置,且共同运行(例如通过一通信网络)。多个处理器或处理器核心可分享资源(例如存储器130或高速缓存122),或可通过独立资源进行操作。处理器120可包括一或多个状态机(statemachine)、一专用集成电路(applicationspecificintegratedcircuit(asic))或一 可编程门阵列(programmablegatearray(pga))(包括一现场可编程门阵列(fieldpga,以下称为fpga)。

系统总线110可为任何总线结构,包括一存储器总线或存储器控制器、一接口设备总线以及使用任何总线架构的本地总线。存储在只读存储器140之类的一bios,可提供基本功能,藉以协助转换系统100的各元件之间的信息(例如在启动的期间)。系统100还包括存储装置160或计算机可读存储介质(例如硬盘驱动器、磁盘驱动器、光盘驱动器、磁带驱动器、固态驱动器、随机存取存储器驱动器、可删除的存储装置、磁盘阵列、混合存储装置等等)。存储装置160可包括软件模块162、164、166以控制处理器120。系统100可包括其他硬件或软件模块,存储装置160通过一驱动器接口连接系统总线110。上述驱动器以及相关的计算机可读存储装置,提供计算机可读指令、数据结构、程序模块以及其他用于系统100的数据的非易失性存储。另一方面,一硬件模块执行一特定功能,上述特定功能包括存储在实体的计算机可读存储装置中的软件元件,并与必要的硬件元件链接(例如处理器120、系统总线110、输出装置170等等)以执行一特定功能。此外,上述系统可使用一处理器以及计算机可读存储装置来存储指令,当上述指令被上述处理器执行时,致使上述处理器执行多个操作、方法或其他特定动作。上述各基本元件以及适当的变化,可依据装置的类型做修改,例如系统100是否为一小型手持计算装置、一台式计算机或一计算机服务器。当处理器120执行多个指令以执行多个操作时,处理器120可直接执行及/或直接促进上述操作,或与其他装置或元件合作以执行上述操作。

本发明一些实施例的存储装置160采用硬盘,然而其他类型的可存储数据的计算机可读存储装置,也可被一计算机所存取,例如磁盒(magneticcassettes)、闪速存储卡、dvd、盒式磁带(cartridges)、随机存取存储器150、只读存储器140、具备一比特流的一电缆等,也可在各实施例的操作环境中使用。其中,所述的实体的计算机可读存储介质、计算机可读存储装置或计算机可读存储器装置,则明确排除如短暂的波动、能量、载波、电磁波与信号本身。

为启动用户与系统100的互动,一输入设备190可表示任何数量的输入机制,例如一用于演讲的麦克风、一用于手势或图形输入的触控屏幕、键盘、鼠标、动作输入、语音等等。一输出装置170也可为多个输出机制中的一或 多个,且该输出机制为本领域技术人员所公知。在一些实施例中,多模式接口(multimodal)系统可致使一用户以提供多种类型的输入以与系统100通信。通信接口180通常可治理与管理用户输入与系统输出。本发明并未限制操作在任何特定硬件配置中,因此本发明所述的基本硬件可被轻易地置换于所开发的较佳的硬件或固件配置中。

一bmc可为系统100的一专门的微控制器或处理器。在一些实施例中,上述bmc可为一智能平台管理接口(intelligentplatformmanagementinterface,以下称为ipmi)的一部分。此外,在一些实施例中,上述bmc可被嵌入至系统100的一母板或主要电路板。上述bmc可管理系统管理软件以及平台硬件之间的接口。建立在系统100的不同类型的传感器,可向上述bmc回报各种参数,例如温度、冷却风扇的速度、电源状态、操作系统状态等等。上述bmc可监测上述传感器,若任何一个上述参数没有保持在一预设限制范围或阈值时,表示系统100的一潜在失效或错误,则通过一网络接口(例如一通信接口)传送警报给一管理者。上述管理者也可远程地与上述bmc进行通信,藉以采取一些修正措施,例如重置或将系统100进行电力循环(powercycling)以恢复功能。

固件可包括一基本输入/输出系统或上述基本输入/输出系统的承接或等效元件。例如一可扩展固件接口(extensiblefirmwareinterface)或uefi。上述固件可在每一次系统100开启时,如同一序列程序般地被加载且执行。上述固件可基于配置,对系统100的硬件进行辨识、初始化以及测试。上述固件可在系统100执行一自检测,例如开机自检测(power-on-self-test,以下称为post)。上述自检测可测试各个硬件元件的功能,上述硬件元件包括硬盘驱动器、光学读取装置、冷却装置、存储器模块、扩充卡等等。上述固件可寻址以及分配存储器130、只读存储器140、随机存取存储器150及/或存储装置160的一区域,藉以存储一操作系统。上述固件可加载一启动加载器及/或操作系统,且将系统100的控制权交给上述操作系统。

一cpld是复杂性与pal以及fpga相似的一可编程逻辑设备,且与pal以及fpga两者的架构特征相似。上述cpld的主要元件是一宏单元(macrocell),上述宏单元包含实现析取范式表达式(disjunctivenormalformexpressions)的逻辑以及更加特定的逻辑运算。cpld可在一芯片层级,实现适度复杂的数据处理,且可为本发明所描述的一母板的一元件。

为了清楚地说明,本实施例的系统描述成包括多个独立功能区块,上述独立功能区块包括称为处理器或处理器120的功能区块。上述功能区块的功能,可通过分享的或专用的硬件来提供,上述硬件包括但不限于可执行软件的硬件;以及建立用以运作,并且等效于执行软件的一通用处理器的硬件(例如处理器120)。举例而言,如图1所示的一或多个处理器的功能,可通过单一分享的处理器或多个处理器来提供。在此所述的处理器,不可被解释成专门指定可执行软件的硬件。在一些实施例中,可包括微处理器及/或数字信号处理器(digitalsignalprocessor(dsp))硬件;用以存储执行下文的操作的软件的只读存储器140;以及用以存储结果的随机存取存储器150。超大规模集成电路(verylargescaleintegration,以下称为vlsi)硬件以及客制化vlsi电路结合一通用数字信号处理器(dsp)电路,也可被采用。

上述各实施例的逻辑操作,可实现为:(1)计算机实现的步骤、操作或程序的一序列,上述程序在一般使用的计算机的一可编程电路中运作;(2)计算机实现的步骤、操作或程序的一序列,上述程序在一专用的可编程电路中运作;及/或(3)互联的机器模块或上述可编程电路的程序引擎。图1的系统100可实现全部或部分的上述方法,也可为上述实施例的系统的一部分,及/或可依据上述实体的计算机可读存储装置的指令来运作。上述逻辑操作可被实现为模块,而上述模块被配置以控制处理器120,藉以依据上述模块的编程来执行特定功能。举例而言,图1描述三个模块(模块162、164、166),上述模块被配置以控制处理器120。上述模块可被存储在存储装置160,且在运作时被加载至随机存取存储器150或存储器130,或可被存储在其他计算机可读存储器的位置。

系统100的一或多个部分,直至系统100的整体,可被虚拟化。举例而言,一虚拟处理器可为一软件对象,且可依据一特定指令集进行操作(即使在与上述虚拟处理器相同类型的一实体处理器不能运作时)。一虚拟层或一虚拟主机可通过将虚拟化操作转换为实体操作,启用一或多个不同计算装置或计算类型的虚拟化元件。然而,任何类型的虚拟化硬件,通过一些底层实体硬件而被实现或执行。因此,一虚拟计算层可在一实体计算层上操作。上述虚拟计算层可包括一或多个虚拟机、一覆盖网络(overlaynetwork)、一管理程序(hypervisor)、虚拟切换以及任何其他虚拟应用。

处理器120可包括本发明所揭露的所有类型的处理器,包括一虚拟处理 器。然而,有关于一虚拟处理器,处理器120包括有关于在一虚拟层以及底层硬件,执行上述虚拟处理器的软件元件,其中,上述底层硬件执行上述虚拟层的必要元件。系统100可包括一实体的或虚拟的处理器120,用以接收存储在一计算机可读存储装置的指令,上述指令致使处理器120执行特定操作。关于一虚拟的处理器120,上述系统也包括上述底层实体硬件以运行上述虚拟的处理器120。

上述实施例描述一计算系统的一些元件,而图2的内容,已叙述黑客以伪固件更换固件的危险,以下将针对图3做描述,图3描述服务器母板元件的专用通信。在示意图300中,一服务器母板的固件验证,通过在母板元件(bmc302、uefibios304、cpld306)之间,以一密码做通信来完成。若上述母板的各元件针对一输入,提供正确响应,则启动上述母板的上电(power-on)程序。

在示意图300的实施例中,一密码在上述母板中产生(例如使用uefibios304)。上述密码是(建议为)一随机数,上述随机数是随机(或拟随机)产生的单一使用的密码。上述密码通过上述母板的第一元件读取(例如bmc302),如步骤308。一第二元件(例如cpld306)使用一通信协议,读取上述密码(例如被bmc302读取的密码),如步骤310。若cpld306表示bmc302的密码是不正确的,或尚未被上述bmc正确的修正,则cpld306可启动一母板关闭程序。同样地,上述母板读取(通过一元件,例如uefibios304)被cpld306接收或修正的密码,且相似地判定上述密码的正确性,如步骤312。如示意图300所示,验证过程在三个位置之间发生(uefibios304、bmc302、以及cpld306),而在其他配置中,可采用额外的或更少的元件。

在上述各元件接收密码且验证密码的有效性后,可启动上电程序。在一些实施例中,如图3所示,上述上电程序通过与读取密码相反的顺序来进行。如图3所示,当确认来自cpld306的密码(步骤312)时,上述母板启动一设定上电程序,并传送至cpld306,如步骤314。若cpld306从bmc302所接收的密码(步骤310)是正确的,则上述上电程序继续进行,cpld306通过与bmc302的通信,停止一监视定时器(watchdogtimer),如步骤316。当bmc302接收到上述监视定时器被停止(步骤316)的通知时,完成安全程序,如步骤318。此时,上述母板可完成一启动程序。

如上文所述,本发明的系统配置,可通过更多或更少的元件,来执行固 件验证。此外,上述上电程序可在每个独立固件元件被验证后执行,或可在所有上述固件元件被验证后执行。举例而言,若bmc302无法正确地提供一密码至cpld306,则上述上电程序可立即被终止,不需要uefibios304对cpld306的额外的验证(如步骤312)。

图4是服务器母板元件(uefibios402、cpld404、bmc406、服务器管理408)的专用通信的示意图400。服务器母板在步骤410中启动电源,且在步骤412中启动一post程序。一专用通信在服务器母板硬件元件(例如uefibios402以及bmc406)之间进行通信,直到一安全程序被完成。在一元件传送一讯息,表示无法传递一上电密码至一后续元件,且不能正确地从上述元件接收响应的情况下,可执行一措施以立即关闭上述服务器母板的电源,并结束上述post程序。

在上述服务器母板中,uefibios402、cpld404、bmc406、服务器管理408各自具备独特的硬件接口,以及彼此之间的通信协议。上述服务器母板的各种元件(uefibios402、cpld404、bmc406、服务器管理408),可通过设定以及读取通用输入/输出(generalpurposeinput/output,以下称为gpio)的区块来进行通信。在示意图400中,启动电源(步骤410)以开启一bmc启动(步骤416),此时,在bmc406接收通过一随机数产生器所产生的一初始上电密码。上述初始上电密码可来自其他上述服务器母板的元件(例如来自服务器管理408或bmc406的一模块)。当bmc406接收上述初始上电密码时,可对上述初始上电密码执行一算法或其他数据处理,藉以修改或转换上述初始上电密码。举例而言,上述bmc可对所接收的上述初始上电密码的值加“2”。bmc406进而存储上述修改后的密码至cpld404可存取的一gpio区块418。在此同时,bmc406启动一监视定时器,若没有在一预定时间内接收到来自cld404的响应,则终止上述post程序。

在步骤420中,cpld404读取上述gpio区块的密码;并通过设定一通用输出(generalpurposeoutput)来响应bmc406(步骤422)。当cpld404接收源自bmc406的上述gpio区块的密码(步骤420)时,也可对所接收的密码执行计算或算法,且将修改后的密码记录至另一个gpio区块424。gpio区块424由uefibios402所读取(步骤426),且uefibios402通过设定上述gpio区块来响应上述cpld(步骤428)。当cpld404通过gpio区块434接收源自uefibios402的响应时,将上述响应与一预期响应进行比较。 若上述响应是不正确的,或没有收到上述响应,则上述cpld可关闭电源及/或关闭启动程序。上述bmc也可读取gpio且做出相对应的响应(步骤436)。依据特定的配置,uefibios402也可对bmc406的输出做验证,藉以响应于读取已更新的密码,或可被配置成只依据cpld404的输出(步骤442)。若所接收的密码是正确的,则上述bmc通过通报上述安全程序已完成来进行响应(步骤440);且与服务器管理408通过ipmi438,对上述服务器母板的安全检查的结果进行通信(步骤444)。

图5是一母板的各元件(bmc502、cpld506、pch512)之间的硬件连接的示意图500。一种新的硬件通信,被增加在bmc502至cpld506;cpld至pch512;以及pch512至bmc502。实体硬件接口可通过gpio区块或更复杂的硬件协议来连接,上述更复杂的硬件协议取决于cpld506的设计。

在此实施例中,上述各元件被配置以加密在各元件之间传递的密码。在一实施例中,上述加密的动作可应用数学计算,藉以将所接收的存储在gpio的上述密码的值加“2”(也可使用任意数值)。图5的图表,图表518表示一成功的硬件配置,以及图表520表示一失败的硬件配置。在图表518的配置中,bmc502接收或产生一随机数的密码504,而密码504存储在gpio区块。bmc502的输出(密码)是“0”(仅用于说明),且被cpld506读取为输入。上述cpld的数学逻辑508对上述密码执行一数学算法,产生一密码510。在此实施例中,上述数学算法将输入加“2”,且cpld506的输出在图表518中表示为“2”。表示为“2”的密码510被pch512读取为输入,通过额外的数学计算,产生表示为“4”的密码516,并被记录至gpio,且被上述bmc以及uefibios514所读取。由于通过pch512所输出的最终结果对应一正确值,以上描述的安全程序认定上述固件是合乎认证的,且发送成功结果,并允许上述母板启动。

然而,若上述固件被不知道上述加密算法的人所修改,则通过pch512所输出的上述最终结果将不是“4”,进而导致以上描述的安全程序产生失败的结果。如图表520所示的失败的配置,cpld506的输出是正确的(结果为“2”),但pch512产生“0”而不是“4”,此状况表示pch512已被破坏。因此,上述安全程序可保护上述母板的上电程序。此外,上述的事件可以被记录,以供日后审核和数据汇总。

图6是一母板的各元件之间的交叉验证的示意图600。在一实施例中, 所示的配置可用以确认固件是否被不适当地修改。此外,所示的配置表示上述母板如何确认结果。在示意图600中,各元件(pch602、cpld604、bmc606)具备与图5所示的相反的通信流程。也即,pch602将一密码存储至一gpio区块;cpld604接收上述密码并执行计算,进而存储修改后的密码至一gpio区块(可以是与pch602所使用的相同或不同的gpio区块),此gpio区块由bmc606所读取。bmc606所接收的密码再被修改、存储,进而被pch602所读取。基于上述通信过程(以及uefibios608),上述固件的状态可被验证。

如图6所示,在此实施例中,交叉验证(计算)将“1”加入至所接收的值,如算法610所示。举例而言,在bmc606与pch602之间的通信中,若bmc606所接收的密码为“0”,将适当的输出“1”做为结果,如图表612所示。其中“0”或其他值将表示一失败的结果,如图表614所示。相似地,cpld604接收源自pch602的密码,进而加“1”。若结果符合规定的值(如图表616),则cpld604被认证且辨识为成功。若上述pch检查cpld604的输出,而结果不是输入加“1”的值,则判定为失败,如图表618所示。相似的验证步骤可在cpld604至bmc606执行,而成功的状态如图表620所示;失败的状态如图表622所示。

上述失败的结果,会基于不同的固件元件的验证失败而有所不同。举例而言,如图6所示,若上述pch验证失败(图表614),则对应的措施可要求上述事件的记录,而非不启动上述母板。若cpld604验证失败(图表618),则结果可导致立即关闭上述母板的电源。若bmc606验证失败(图表622),则结果可导致立即停止post程序。上述措施仅用以说明,且可依据需求进行组合或修改。举例而言,在一些实施例中,上述任何一种验证失败的结果,可被记录错误,当找到两个错误时,系统停止自检测程序。在另一实施例中,每一个上述元件以多个方向进行检测,也即从不同来源接收输入,且传送输出至不同元件,例如图5以及图6所述的不同数据流动方向。在此配置中,在一个方向中的错误,可导致停止一部分的post程序,但在两个方向中的错误,将导致上述母板的电源关闭。

此外,上述母板的各元件之间的通信,可使用gpio区块以外的机制来执行存储与检索。举例而言,uefibios与bmc固件之间的另一种通信,可为原始设备制造商(originalequipmentmanufacturer,以下称为oem)ipmi 指令或专用信箱(由芯片设计所支持)。举例而言,上述oemipmi指令可通报服务器的恶意软件固件检查状态;读取源自uefibios的上电密码;及/或从bmc传递交叉验证的结果至uefi。

以上实施例描述一些基本系统元件以及概念,以下将描述图7至11的示例性方法。为了清楚地表达,以下方法将搭配图1的系统100做描述。各实施例的方法用以示范,且可通过任何实施例的组合来实现,上述组合的方式包括排除、增加或修改特定步骤。

图7描述一复杂可编程逻辑设备传送一个密码和验证反馈的示意图。特别的是,图7描述可被加入至一bmc固件设计的逻辑,用以开始通信。图7的内容,包括在接收到电源时产生一上电密码(步骤702);传送新的上电密码至输出逻辑,上述输出逻辑连接至cpld(步骤704)从连接至cpld的输入逻辑读取响应(步骤706);以及通过一数学子程序来验证上述响应(步骤708)。若所接收的上述响应与预期不同,则上述bmc固件将记录一暂停事件至服务器事件日志(servereventlog)(步骤712)。若所接收的上述响应与预期相同,则以上所述的用以开启母板电源的安全程序将被启动(步骤714)。

图8是一复杂可编程逻辑设备传送一个密码和验证反馈的示意图。特别的是,图8描述可被加入至一cpld的逻辑,用以与母板的其他固件进行通信。如图8所示的内容,上述cpld可读取源自连接bmc的输入逻辑的上电密码(步骤802)。上述cpld可用连接至bmc的输出逻辑,传送有关于上述上电密码的响应至上述bmc(步骤804);以及通过数学逻辑,加密所读取的上电密码(步骤806)。举例而言,若上述上电密码是一数字,则上述数学逻辑可对所接收的上述数字进行加法、减法或其他数学运算。此修改后(新的)的密码通过连接上述cpld以及pch的输出逻辑,被传送至上述pch(步骤808);且从上述pch接收响应(步骤810)。上述源自pch的响应通过数学逻辑来验证是否有效(步骤812),且可与上述cpld所使用的数学逻辑相同或不相同。若上述响应是正确的,则上述cpld执行上电程序(步骤818);若上述响应是不正确的(步骤814),则上述cpld关闭服务器的电源(步骤816)。

图9是一复杂可编程逻辑设备传送一个密码和验证反馈的示意图。特别的是,图9描述可被加至uefibios的新的子程序。配置上述子程序的uefibios,从cpld读取上电密码(步骤902);提供响应至上述cpld(步骤904), 用以表示上述上电密码以被接收;使用一数学子程序加密上述上电密码(步骤906);以及传送已更新的加密(被修改)的上电密码,到连接上述bmc的输出逻辑或信箱(步骤908)。上述uefibios进而从连接至上述bmc的输入逻辑或信箱,接收上述响应(步骤910);且通过一数学子程序验证上述响应(步骤912)。若上述响应是正确的,则上述uefibios执行开机自检测程序;若上述响应是不正确的(步骤914),则上述uefibios停止开机自检测程序(步骤916)。

图10是一复杂可编程逻辑设备传送一个密码和验证反馈的示意图。特别的是,图10描述可被加至bmc固件的子程序,用以最终检查。具备上述子程序的一bmc通过连接pch的输入逻辑或信箱读取一上电密码(例如经过两个元件的一上电密码),上述上电密码已被其他元件修改(调整)(步骤1002)。上述bmc通过输出逻辑或上述信箱,提供响应至上述pch(步骤1004);以及通过将所接收的上述上电密码与一原始密码比较,藉以验证上述上电密码(步骤1006)。若所接收的上述上电密码是正确的,则完成以上所述的安全程序(步骤1012)。若所接收的上述上电密码是不正确的(步骤1008),则将相关错误记录至服务器错误日志(severerrorlog)(步骤1010)。

图11是一方法的示意图,可用于系统100的配置。当一母板接收到电源,且在上述母板启动之前(步骤1102);系统100产生一随机数(步骤1104);传送上述随机数至上述母板的一第一元件(步骤1106);以及传送上述随机数至上述母板的一第二元件(步骤1108)。系统100也从上述母板的上述第一元件以及第二元件的至少其中之一接收一响应,其中上述响应以上述第一元件与第二元件之间的一通信协议做为基础,且上述通信协议使用上述随机数(步骤1110)。当上述响应表示一正确硬件配置时,启动上述母板(步骤1112)。

上述硬件配置可以是(或需要)上述各种元件的特定固件配置。上述通信协议可使用gpio区块、搭配上述随机数的数学算法及/或上述随机数(或密码)的加密。本实施例的方法可包括在上述响应表示一错误硬件配置时,发送上述母板的一电源关闭命令,及/或使用在上述母板、上述第一元件与上述第二元件之间的一反向通信路径,执行上述响应的一交叉验证。上述通信协议可使用上述母板各元件之间的一专用信箱通信系统。

以上所述的各方法、逻辑以及配置可依据需求,相互地混合以及融合。举例而言,专注于一母板的一或多个特定元件的逻辑的实施例,在采用相同 的概念、检查以及验证机制的应用中,可被使用于以上各实施例以外的其他母板元件的固件验证。同样地,一些实施例主要是针对用于已知硬件的特定固件配置的讨论,上述所讨论的概念可通过确认硬件的固件正确地配置,而应用于硬件验证。

本发明的范围也可包括实体的及/或非瞬时的计算机可读存储装置,用于承载或拥有所存储的计算机可执行指令或数据结构。实体计算机可读存储装置可为任何可使用的装置,上述可使用的装置可被一通用或特殊目的计算机所存取,包括任何特殊目的处理器的功能设计(如前文所述)。上述实体计算机可读存储装置可包括但不限于随机存取存储器、只读存储器、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁式存储装置,或任何其他可用于承载或存储所需的程序代码的装置,其中上述程序代码是计算机可执行指令、数据结构或处理器芯片设计的形式。当信息或指令通过一网络或其他通信连接(有线、无线方式或两者的组合),而被提供至一计算机时,上述计算机适当地将上述链接视为一计算机可读介质。因此,任何上述连结被适当地视为一计算机可读介质。上述各特征的组合应包括在本发明的计算机可读存储装置的范围之中。

计算机可执行指令包括指令以及数据,致使一通用计算机、特殊目的计算机或特殊目的处理装置执行特定的功能或一组功能。计算机可执行指令也包括程序模块,上述程序模块通过计算机以独立或网络环境来执行。一般而言,程序模块包括例程、程序、元件、数据结构、对象、以及在特殊目的处理器的设计中固有的功能等等,用以执行特定任务或实现特定抽象数据类型。计算机可执行指令、相关的数据结构以及程序模块可代表上述程序代码的示例,用以执行本发明的方法的步骤。上述可执行指令或相关的数据结构的特定程序,可代表实现本发明各个步骤的功能的相对应动作的示例。

本发明的其他实施例可在具备多种计算机系统配置的网络计算环境中实现,包括个人计算机、手持装置、多处理器系统、基于微处理器的或可编程消费性电子产品、网络个人计算机、迷你计算机、大型计算机等等。本发明的特征也可实现于分布式计算环境,其中各任务通过已链接的本地以及远程处理装置(有线、无线方式或两者的组合),通过一通信网络来执行。在一分布式计算环境中,程序模块可被设置在本地以及远程存储器存储装置。

以上各实施例所描述的内容仅用于说明,不应对本发明的范围造成限 制。举例而言,以上所描述的原理可应用至服务器以及非服务器计算机的母板。在不脱离本发明的精神以及范围的情况下,以上所述的各实施例的内容,可进行各种修改以及变化,且不需依照以上所述的各实施例的内容。权利要求所描述的“至少一”,表示属于权利要求的一组特征中的其中一个特征或多个特征。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1