CN106325915A - 更新计算机固件的系统、方法与计算机可读取储存媒体 - Google Patents

更新计算机固件的系统、方法与计算机可读取储存媒体 Download PDF

Info

Publication number
CN106325915A
CN106325915A CN201510629496.3A CN201510629496A CN106325915A CN 106325915 A CN106325915 A CN 106325915A CN 201510629496 A CN201510629496 A CN 201510629496A CN 106325915 A CN106325915 A CN 106325915A
Authority
CN
China
Prior art keywords
firmware
archives
computer
capacity
user
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.)
Pending
Application number
CN201510629496.3A
Other languages
English (en)
Inventor
张耿维
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.)
Quanta Computer Inc
Original Assignee
Quanta Computer Inc
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 Quanta Computer Inc filed Critical Quanta Computer Inc
Publication of CN106325915A publication Critical patent/CN106325915A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Abstract

本发明涉及用于更新计算机固件的系统、方法与计算机可读取储存媒体。此系统在计算机固件容量中产生用户固件容量,其中计算机固件容量包含计算机装置在启动程序期间所使用的计算机固件。在一些例子中用户固件容量包括档案系统。系统也取得固件档案,此固件档案是用以更新计算机装置在启动程序期间所使用的计算机固件。接下来,系统比较固件档案与计算机固件容量的内容以产生比较结果,并且基于比较结果将固件档案储存在计算机固件容量中的用户固件容量,而不擦除计算机装置在启动程序期间所使用的计算机固件的整体部分。

Description

更新计算机固件的系统、方法与计算机可读取储存媒体
技术领域
本发明涉及计算机固件,且特别是涉及更新计算机固件而不用擦除(flash)整个固件映像档的方法。
背景技术
一般的计算机系统在启动程序期间使用特定的计算机固件来辨认、初始化与测试计算机系统中的硬件,并且载入启动载入器(boot loader)或者是操作系统。例如为基本输入输出系统(basic input/output system,BIOS)或是统一可扩展固件接口(unified extensible firmware interface,UEFI)的固件平台提供了接口,使得可以设定各种不同的参数,例如为硬件参数或是启动设定参数。例如,固件接口可用来指令时钟脉冲速度与总线速度,指出那些周边装置是连接到计算机系统,设定特定的监控程序,并且设定会影响计算机系统效能与功率使用的其他各种参数。
一般而言,计算机系统的固件是储存在快闪存储器中,例如为非易失随机存取存储器(non-volatile random access memory,NVRAM)、只读存储器(read-only memory,ROM)、或者是电可擦除可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)。快闪存储器可以让固件与固件设定重复写入而不用将存储器芯片从计算机装置中移除。然而,可惜的是任何对固件的修改或更新现在都需要将整个固件重新写入至快闪存储器,此步骤被称为擦除或快闪(flashing)固件映像档。
发明内容
本发明的附加特征和优点将在随后的描述中阐述,其中一部分将从描述中变得明显,或者可以通过实践在此公开的原理而学习到这些特征与优点。本发明的附加特征和优点可以借助在权利要求中具体指出的仪器和组合来实现和获得。这些和其他的本发明特征将从随后的描述和权利要求中变得更为完全地明显,或者可以通过实践在此阐述的原理来获得。
本发明披露了用于更新计算机固件而不用擦除整个固件映像档的系统、方法与非暂态计算机可读取储存媒体。此系统可在计算机固件容量中产生用户固件容量,而计算机固件容量包含了系统在启动程序期间所使用的计算机固件。在某些例子中,用户固件容量可以是一个档案系统。此外,计算机固件容量可以是在一个或多个存储器装置上的逻辑容量,这些存储器装置例如为系统中的快闪存储器储存元件。
此系统可包含固件档案,其是用来更新系统在启动程序期间所使用的计算机固件。此系统可以通过网络从另一个单独的装置中取得固件档案或者是在本地产生并储存固件档案。例如,在某些例子下,系统可以从一个伺服器或是中央位置取得固件档案以将固件档案配置或整合至系统的计算机固件。在其他例子下,系统可以产生或编译固件档案并将之储存在例如为只读存储器的存储器中,用以配置或整合至系统的计算机固件中。
接下来,系统可比较固件档案与计算机固件容量的内容,并且基于比较结果将固件档案储存在计算机固件容量中的用户固件容量,而不用擦除系统在启动程序期间所使用的计算机固件的全部。此固件档案可包括一个或多个固件模块。系统可检查固件档案是否已经在计算机固件中。例如,系统可以检查计算机固件容量以判断固件档案是否已经在计算机固件容量中。如果系统判断固件档案并不在计算机固件里,它可以简单地把固件档案加入至计算机固件以成为新的元件(即新档案或模块)。在某些例子下,系统可以检查固件档案是否已经在计算机固件中和/或在系统的启动程序期间将固件档案加入至计算机固件。
另一方面,如果系统判断固件档案是对应于已经在计算机固件中的固件档案,它可以检查或比较固件档案与计算机固件中对应的固件档案的版本,由此判断固件档案是否为计算机固件中固件档案的新版本或更新版本。如果系统判断固件档案是计算机固件中固件档案的新版本或更新版本,它可以将计算机固件中对应的固件档案替换或更新为上述的固件档案。另一方面,如果系统判断固件档案中的固件模块是计算机固件中对应的固件模块的相同版本与更旧的版本,它可以决定不要以固件档案中的固件模块来替换或更新计算机固件中对应的固件模块。
在某些例子下,系统可以检查或比较固件档案的版本和/或在系统的启动程序期间将计算机固件中对应的固件档案替换或更新为上述的固件档案。
为了一些安全的目的,系统也可以实施加密、签章和/或验证或授权的机制来保护固件档案和/或计算机固件。例如,系统可以加密和/或签章固件档案,并且在将固件档案加入或储存至计算机固件容量之前,或是在将现存固件档案更新或替换为固件档案之前,执行验证或是授权的步骤。在某些例子下,系统可以通过对固件档案实施一杂凑函数(例如MD5、SHA等)来产生信息摘要。此外,系统可以选择性地以一加密金钥来加密信息摘要,此加密金钥例如是非对称加密的私钥(private key)或者是对称加密的金钥。系统可以将签章后和/或加密后的信息摘要整合至固件档案以产生签章后的固件档案。
为了验证或授权签章后的固件档案,系统可以从签章后的固件档案撷取固件档案与信息摘要。如果此信息摘要是先前加密的那一个,系统可以根据解密金钥(例如,对称式加密所使用的金钥,或者是非对称式加密的公开金钥)来解密信息摘要。接下来,在签章固件档案时所使用的杂凑函数可用来实施在从签章后的固件档案所撷取的固件档案上,并且其结果可和从签章后的固件档案中撷取的(并且选择定地解密)的信息摘要做比较。如果比较结果显示两者配对,则固件档案可被验证或授权成功。如此一来,系统接着可以使用此固件档案来更新或修改计算机固件。另一方面,如果比较结果显示两者不配对,则表示固件档案不被验证或授权成功,因此不会被系统用来更新或修改计算机固件。通过判断出两个固件档案不配对的比较结果,系统可以辨认出潜在的妥协或者是骇客的尝试,并且可以避免实施了未被授权的固件档案。
附图说明
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。可理解的是这些图式仅绘示了本发明中示范性的实施例,并不用以限制本发明,其中的原理会使用所附的图式另外具体且详细的描述和解释。
图1A与图1B绘示了示范性的系统实施例;
图2绘示了用以通过网络来更新计算机固件的示范性环境的方块图;
图3绘示了用以将固件档案整合至计算机固件容量的一个示范性流程图的示意图;
图4绘示了用以将计算机固件配置在系统中的一个示范性机制的流程图;
图5绘示了在计算机固件与系统管理者之间互动流程的示意图;
图6绘示了逻辑固件装置的范例;
图7绘示了用以更新计算机固件的一个示范性程序的示意图;
图8绘示了用以更新计算机固件的一个示范性方法实施例;以及
图9绘示了用以保护固件档案的示范性方法。
附图符号说明
100:系统
105:总线
110:处理器
112:快取存储器
115:存储器
120:只读存储器
125:随机存取存储器
130:储存装置
132:模块一
134:模块二
135:输出装置
136:模块三
138:基板管理控制器
140:通讯接口
142:快闪存储器
145:输出装置
148:固件
150:系统
155:处理器
160:芯片组
165:输出装置
170:储存装置
175:随机存取存储器
180:桥
185:用户接口元件
190:通讯接口
195:固件
200:环境方块图
202:网络
204、206、208:远端装置
210:系统
300:示意图
302:计算机固件容量
304:用户固件容量
306、308:步骤
310:固件档案
400:流程图
402~422:步骤
500:示意图
502:系统管理者
504、506、508、510:步骤
600:逻辑固件装置
602、604、608:固件容量
700:程序
702:计算机固件模块
606:固件容量
704、706、708、710、712:步骤
800、900:方法
802、804、806、808、902、904、906、908、910、912、914:步骤
具体实施方式
以下详细地描述了本发明的各种实施例。当讨论特定的实施方式时,可理解的是此实施方式只作为解释目的。本领域技术人员可理解的是,当不离开本发明的精神与范围时,可使用其他的元件与设定。
在此描述的是用以更新计算机固件而不擦除整个固件映像档的系统、方法与非暂态计算机可读取储存媒体。首先,会先描述用于更新计算机固件而不擦除整个固件映像档的示范性系统与环境的简单介绍。更新计算机系统而不擦除整个固件映像档的详细描述(包括范例与变化)都会在之后描述。这些变化在此应被解释为各种实施例。本发明现在从图1A与图1B开始。
图1A与1B绘示了示范性的系统实施例。在实施此技术时,对于本领域技术人员来说当可理解有更适当的实施例。本领域技术人员当可理解其他系统实施例也是可能的。
图1A绘示了系统总线计算系统100,此系统的元件是通过总线105彼此电性通讯。示范性的系统100包括了处理单元(中央处理器或是处理器)110与系统总线105,系统总线105将各种系统元件(包括系统存储器115,例如为储存装置170与随机存取存储器175)耦接至处理器110。系统100可包括高速的快取存储器112,其是靠近地直接连接到处理器110或是整合为处理器110的一部分。系统可以将数据从存储器115和/或储存装置130复制到快取存储器112中,让处理器110快速地存取。以此方式,快取存储器112可以提升效能,避免处理器110在等待数据时延迟了。这些模块与其他模块可控制处理器110或是被处理器110所控制,由此执行各种动作。也可以使用其他的系统存储器115。存储器115可包括多个不同类型且具有不同效能特性的存储器。处理器110可包括通用目的的处理器与硬件模块或软件模块,例如为储存在储存装置130的模块132、134与136,用来控制处理器110成为特定目的的处理器,在此其中的软件指令是与实际的处理器设计一起合作。处理器110可实质上为完全自足的计算系统,包含多个核心或处理器、总线、存储器控制器、快取存储器等。多核心的处理器可以为对称式或是非对称式。
为了让用户与计算机装置100互动,输入装置145可表示为任意数目的输入机制,例如为语音用的麦克风、用于手势或图形输入的触控面板、键盘、鼠标、动作输入、语音等等。输出装置135可以为本领域技术人员能理解的一个或多个输出机制。在一些例子中,多模块的系统可以让用户提供各种输入来与计算机装置100通讯。一般来说,通讯接口140可用来支配并管理用户的输入和系统的输出。本发明并不限制运作任意特定的硬件配置,因此随着硬件的发展,在此基本的特征可以轻易地置换为更好的硬件或固件配置。
储存装置130是一个非易失性的存储器,可以为硬盘或其他形式的计算机可读取媒体,其可以储存计算机可存取的数据。此计算机可读取媒体例如为磁带盒(magnetic cassettes)、快闪存储器卡、固态存储器装置、数字通用磁盘(digital versatile disks)、盒式磁带(cartridges)、随机存取存储器125、只读存储器120或其组合。
储存装置130可包括软件模块132,134,136,用以控制处理器110。其他的硬件或软件模块是可预期的。储存装置130可连接至系统总线105。从某一个角度,实施特定功能的一个硬件模块可包括储存在计算机可读取媒体的软件元件,此计算机可读取媒体是连接到必要的硬件元件,例如为处理器110、总线105、显示器135等等,由此进行上述的功能。
基板管理控制器(baseboard management controller,BMC)138可以为系统100中专门的微控制器或处理器。在某些例子中,基板管理控制器138可以是智能平台管理接口(Intelligent Platform Management Interface,IPMI)的一部分。此外,在一些例子中,基板管理控制器138可以嵌入在系统的主机板或主要电路板中。基板管理控制器138可管理系统管理软件与平台硬件之间的接口。在系统中建置的不同种类的传感器可以回报一些参数给基板管理控制器138,这些参数例如为温度、冷却风扇速度、电源状态、操作系统状态等等。基板管理控制器138可以监控这些传感器并且通过网络接口(例如为通讯接口140)发出警告给管理员(administrator),如果有任一个参数没有落在预设的限制或临界值内,上述的警告可指出系统100潜在的故障或是错误。管理员也可以远端地与基板管理控制器138通讯以采取正确的动作,例如重置系统100或执行电源循环,由此回复系统的功能。
快闪存储器142可以为电子式非易失性计算机储存媒体或是芯片,其可被系统100用来作为储存和/或转移数据的用途。快闪存储器142可被电子式地擦除和/或重新编程。例如,快闪存储器142可包括可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、电子式可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读存储器、非易失性随机存取存储器或互补金属氧化物半导体(complementary metal-oxide semiconductor,CMOS)。快闪存储器142可储存固件148,当系统100开机时系统100会执行固件148与固件148指定的一组设定。快闪存储器142也可以被固件148所使用的设定。
固件148可包括基本输入/输出系统、其继承者(successors)或具有相同功能的系统,例如可扩展固件接口(Extensible Firmware Interface,EFI)、或者是统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI)。每次系统100开机时,固件148可被载入且执行为一顺序程序(sequence program)。固件可以基于上述该组设定来辨认、初始化与测试系统100中的硬件。固件可以在系统100上执行自我测试,例如为电力开启自我测试(Power-on-Self-Test,POST)。此自我测试可以测试各种硬件元件,例如为硬盘驱动器、光学读取装置、冷却装置、存储器模块、扩充卡等的功能。固件148在存储器115、只读存储器120、随机存取存储器125和/或储存装置130中定址且分配出一个区域,由此储存操作系统。固件148可载入一个启动载入器和/或操作系统,并且将系统100的控制交给操作系统。
系统100的固件148可包括固件设置,其定义了固件148如何控制系统100中的各种元件。此固件设置可决定系统100中各种硬件元件启动的顺序。固件148可以提供例如为统一可扩展固件接口的接口,使得可设定各种不同的参数,这些设定的参数可不同于预设固件设置中的参数。例如,用户(例如管理员)可以使用固件148来指定时钟脉冲速度或是总线速度,定义那些周边装置是连接至系统100,设定健康状况(例如风扇速度与中央处理器的温度上下限)的监视,和/或提供会影响系统100整体效能与电力使用的其他各种参数。
当描述固件148储存在快闪存储器142时,本领域技术人员当可理解固件148也可以储存在其他的存储器元件,例如为存储器115或是只读存储器120。然而,为了解释的目的,在此描述固件148是被储存在快闪存储器142中以作为一个非限制性的例子。
图1B绘示了包含芯片组架构的示范性计算机系统150,其可用来执行上述的方法或操作,并且产生与显示图形化接口(graphical user interface,GUI)。计算机系统150可包括可用来实施上述技术的计算机硬件、软件与固件。系统150可包括处理器155,代表任意数目且不同的物理和/或逻辑资源,其能够执行用来实施上述计算的软件、固件与硬件。处理器155可与芯片组160进行通讯,芯片组160可控制处理器155的输入与输出。在此例子中,芯片组160输出资讯给输出装置165(例如为显示器),并且可以从储存装置170中读取或写入资讯,储存装置170可例如包括磁性媒体或者是固态媒体。芯片组160可从随机存取存储器175中读取数据或是写入数据。桥(bridge)180可作为芯片组160和各种用户接口元件185之间的接口。这些用户接口元件185可包括键盘、麦克风、触控检测和处理电路、指向装置(例如鼠标)等。一般来说,系统150的输入可以来自于各种来源,这些来源可以是机器产生的和/或人所产生的。
芯片组160也可以接合至一个或多个通讯接口190,其可具有不同的物理接口。这些通讯接口可以是用于有线或是无线的区域网络、宽频无线网络或个人区域网络的接口。用于产生、显示并使用图形化用户接口的方法的一些应用可以包括由处理器155接收有序的数据集,这些数据集可以是在物理接口上接收的,或者是由机器本身产生的,处理器155会分析在储存装置170或随机存取存储器175中的数据。另外,机器可以通过用户接口元件185接收用户的输入并且执行适当的功能,例如是使用处理器155来解译这些输入而达到浏览的功能。
此外,芯片组160也可以与固件195通讯,此固件195可以在开机时由计算机系统150来执行。固件195可以基于一组固件设定来辨认、初始化并且测试计算机系统150中的硬件。固件可以在系统150上执行自我测试,例如为电力开启自我测试(POST)。此自我测试会测试各种硬件元件(符号155~190)的功能。固件195可以在随机存取存储器175中定址并配置一个区域来储存操作系统。固件195可以载入启动载入器和/或操作系统,并且将系统150的控制交给操作系统。在某些例子中,固件195可与硬件元件155-190通讯。在此,固件可通过芯片组160和/或通过一或多个其他的元件来与硬件元件155-190通讯。在一些例子中,固件195可以直接与硬件元件155-190通讯。
可理解的是,示范性的系统100与150可包含多于一个处理器110或者也可以是由网络连接的一群或一丛集计算机装置中的一部分以提供更大的处理能力。
为了清楚的解释,在一些例子中本技术可以表示为包括个别的功能方块,其中一些功能方块可包括装置、装置元件、由软件实施的方法中的步骤或程序、或者是硬件与软件的结合。
在一些实施例中,这些计算机可读取储存装置、媒体与存储器可包括缆线或无线信号,其中具有位串。然而,在此提到的非暂态计算机可读取储存媒体明确地排除了例如为能量、载波、电磁波以及信号本身的媒体。
上述例子的方法可以利用计算机可执行指令来实施,这些指令可以储存在计算机可读取媒体或者可以从计算机可读取媒体中取得。例如,这些指令可包括指令与数据,其造成或设定通用目的的计算机、特殊目的的计算机或特殊目的的处理装置来执行特定的功能或功能组。所使用的计算机资源的一部分也可以通过网络来存取。例如,这些计算机可执行指令可以是数字档、例如为组合语言的中间(intermediate)格式指令、固件、或原始码。计算机可读取媒体的例子包括磁盘、光盘、快闪存储器、与非易失性存储器一起提供的通用串列总线(Universal Serial Bus,USB)装置、连接至网络的储存装置等,而计算机可读取媒体可用来储存指令、使用的资讯和/或在上述例子的方法中所产生的资讯。
根据上述发明用来实施方法的装置可包括硬件、固件和/或软件,并且可以采用各种形状因子(form factor)。这些形状因子的一般性例子包括笔记型计算机、智能型手机、具有小形状因子的个人计算机、个人数字化助理、机架式设备或是独立设备等等。在此所描述的功能可以实施为周边装置或是外接卡。在更进一步的例子中,这些功能也可以伴随着不同的芯片而实施在电路板上,或者是实施在单一装置中的不同处理器上。
这些指令、用来传送指令的媒体、用来执行指令的计算资源、以及其他用来支持这些计算资源的结构都是用来提供所述功能的手段。
图2绘示了用来通过网络202更新计算机固件的示范性环境方块图200。系统210可以通过网络202来增加、更新和/或替换远端装置204~208上的固件模块(例如固件档案)。例如,为了远端装置204~208上的计算机固件,系统210可以传送一个或多个固件模块和/或指令至远端装置204~208以增加、更新和/或替换固件模块。远端装置204~208可包含客户端装置,例如为笔记型计算机、桌上型计算机、平板计算机、智能型手机等;伺服器;网络装置,例如为交换器(switch)或路由器(router);或任意其他的计算机装置。在一些例子中,系统210可传送固件模块(可伴随安装指令或不伴随安装指令)至一个或多个远端装置204~208,并且驱动已经接收到固件模块的远端装置204~208来增加或安装固件模块至特定远装装置上的计算机固件。
在其他例子中,系统210可以传送固件修改指令至一个或多个远端装置204~208来驱动此一个或多个远端装置204~208来增加、更新或替换在特定远端装置上的计算机固件中的固件模块。例如,系统210可以传送一指令,此指令指定某个的第一固件模块应该被安装在远端装置204上。远端装置204可接收此指令,并且对应地在远端装置204上启动第一固件模块的安装。在此,如果远端装置已经具有第一固件模块的复本(copy),它可以简单地根据从系统210接收的指令来执行安装程序。另一方面,如果远端装置204并没有第一固件模块的复本,则它可以向系统210和/或任意其他的装置要求和/或取得第一固件模块。在一些例子中,来自系统210的指令可以指定远端装置204可找到并取得第一固件模块的位置以完成安装程序。在一些其他的例子中,远端装置204具有用来指定一个或多个位置的设定,让远端装置204可以从这些位置要求或下载第一固件装置和/或任意其他的固件模块以完成安装程序。
从系统210而来的指令可以包括一个触发器,用以启动固件的更新、安装和/或修改。从系统210而来的指令也可以指出要被接收到此指令的远端装置加入、更新和/或替换的一个或多个固件模块。此外,从系统210而来的指令可以包括指示如何加入、更新和/或替换一个特定的固件模块的指令。如果从系统210而来的指令并没有伴随着要被接收到指令的装置来安装的固件模块,则此指令可包括一个或多个位址,其会指出装置可以从哪里下载或要求此特定的固件模块,而此特定的固件模块会被安装在接收到指令的装置上。此外,此指令也可以概述接收到指令的装置要如何将此计算机固件与新的、被加入的或被替换的固件模块组合。
此指令可以概述接收到指令的装置要如何处理新的固件模块集合,由此更新或替换在装置上现存的固件模块。例如,如果现存的固件模块与新的固件模块是属于相同的类型(例如,如果现存的固件模块与新的固件模块有配对的识别符、功能或特定),则此指令可指示应该执行版本的检查,并且当新的固件模块比现存的固件模块具有更高或更新的版本,或者当新的固件模块解决了现存固件模块中的问题时,则此指令可以指示现存的固件模块应替换为新的固件模块。
从系统210而来的指令也可以包括安全资讯,例如为签章(signature)、加密/解密金钥、验证规则和/或安全指令。除此之外,从系统210而来的指令可包括其他的参数,例如为安装参数、档案种类参数、档案名称参数、超数据(metadata)、规则、固件设定等等。
如先前所述,系统210可以传输固件模块和/或指令至远端装置204~208以通过网络202加入、替换和/或更新一个或多个固件模块。网络202可包括一个或多个物理和/或逻辑网络。而且,网络202可包括例如为区域网络(local area network,LAN)或是无线区域网络(wireless LAN)的私有网络;例如为互联网或是广域网络(wide area network,WAN)的公开网络;和/或例如为虚拟私有网络(virtual private network,VPN)的混和网络。更进一步来说,远端装置204~208可属于一个或多个网络和/或数据中心。例如,远端装置204~206可属于某个特定的虚拟区域网络(virtual LAN,VLAN),并且远端装置208可以属于相同或是不相同的网络段(network segment),例如为不同的VLAN、LAN或者数据中心。在一些例子中,系统210可以和远端装置204~208属于相同的物理或逻辑网络或网络片段。然而,在其他例子中,系统210可以和远端装置204~208属于不同的物理或逻辑网络或网络片段。
系统210与远端装置204~208可以是任意具有网络连线能力的计算机装置,例如为笔记型计算机、伺服器、平板计算机、智能型手机等等。例如,系统210与远端装置208可以为分开的伺服器,其中远端装置204~206可以为客户端装置。在一些实施例中,系统210可以是能远端修改远端装置204~208上的计算机固件的伺服器或是交换器。在其他的实施例中,系统210可以是客户端装置,用户可以使用此客户端装置来修改远端装置204~208上的计算机固件。在一些例子中,系统210可以在远端装置204~208上监控计算机固件的版本与更新,并且触发计算机固件的任何修改。
此外,系统210可以在每一个远端装置204~208上监控不同种类或是版本的计算机固件,和/或触发每一个远端装置204~208上计算机固件任意的更新、安装或替换。例如,系统210可以在远端装置208上触发一个伺服器固件模块的安装,此远端装置208可以是一个特定类型的伺服器和/或伺服器硬件,系统210可以在远端装置204上触发客户端固件模块的安装,此远端装置204可以是一个特定类型的客户端计算机和/或计算机硬件。在另一个例子中,系统210可以触发远端装置206上的计算机固件更新至一个特定的版本,并且触发远端装置208上的计算机固件更新至不同的版本。
图3绘示了用以整合固件档案至计算机固件容量302的示范性流程图的示意图300。计算机固件容量(computer firmware volume)302可包括在系统100上被系统100所使用的档案系统或储存手段,用以让系统100储存计算机固件148。计算机固件容量302可包含在系统100中一个存储器装置上的方法、数据结构、分割和/或磁盘,此存储器装置例如为快闪存储器148,用以储存或维护计算机固件148。在一些实施例中,计算机固件容量302可把计算机固件148储存为一个映像档和/或属于计算机固件148的特定模块、片段、部分、功能、档案和/或固件。
系统100可在计算机固件容量302中建立用户固件容量304,用以储存固件的内容,例如为被用户或系统100加入、更新、替换或安装的固件档案或模块。用户固件容量304可以是计算机固件容量302的一部分、一片段或一部分。并且,用户固件容量304可以和计算机固件容量302储存在相同的磁盘、分割、或者是存储器装置。然而,在一些实施例中,用户固件容量304可以和计算机固件容量302储存在不相同的磁盘、分割、或者是存储器装置。并且,在一些例子中,用户固件容量304可以跨越地储存在多个分割、磁盘、档案系统或存储器装置。在此,用户固件容量304可以和计算机档案系统容量储存在相同的分割、磁盘、档案系统或存储器装置,但也可以跨越地储存在一个或多个不同的分割、磁盘、档案系统或存储器装置。
在步骤306,系统100检查是否有固件档案(例如,固件模块)要被整合至计算机固件148。如果有固件档案要被整合至计算机固件148,在步骤308中系统100会将固件档案310(即须要被整合至计算机固件148的固件档案)整合至用户固件容量304。如此一来,固件档案310可以被整合至计算机固件容量302中的用户固件容量304,其中计算机固件容量302会持续地更新或修改系统100上的计算机固件148。在一些例子中,固件档案310可以是要被加入至计算机固件148的新固件模块。然而,在其他例子中,固件档案310可以替换计算机固件148中现存的固件模块。在此,在替换现存的固件模块之前,系统100可在固件档案310与现存固件模块之间执行档案的检查或比较。例如,系统可比较固件档案310与现存模块的总体唯一识别符(globally unique identifier,GUID)以判断这两个总体唯一识别符是否是对应于相同的固件模块,并且判断哪一个固件模块是较新且应该被保留成计算机固件148的一部分的模块。
图4绘示了用以配置系统100上的计算机固件的示范性机制的流程图400。在步骤402,产生要被整合至计算机固件的固件映像档。此固件映像档可包括固件档案和/或固件模块。并且,固件映像档可以包括例如为用户固件容量的逻辑容量,用户固件容量可以被整合至具有现存计算机固件的计算机固件容量。如此一来,固件影像档可以包括固件模块以及要被整合至计算机固件和/或计算机固件容量的档案系统或逻辑结构。
在步骤404,可基于安全的理由来签章固件映像档。在一些例子中,可对固件映像档执行杂凑函数(hash function,例如:MD5或SHA)以取得信息摘要。在一些例子中,为了更进一步的安全,此信息摘要可通过一加密金钥来加密以形成加密后的信息摘要。
在步骤408,验证签章后的固件映像档。在一些例子中,此验证的程序可包括从签章后的固件映像档撷取出内容,对此撷取出的部分执行相同的杂凑函数,并且比较上述的信息摘要与杂凑函数的结果。在此,如果比较结果显示两者是配对,则表示签章后的固件映像档被验证成功,否则表示签章后的固件映像档没有被验证成功而会被视为未授权。
如果签章后的固件映像档没有被验证成功,在步骤422可拒绝更新。另一方面,如果签章后的固件映像档被验证成功,在步骤410中,固件映像档会被整合至计算机固件。例如,可从签章后的固件映像档中撷取出固件映像档,并且将此固件映像档整合至用来存放计算机固件的计算机固件容量中所建立的用户固件容量。在一些例子中,固件映像档可包括计算机固件容量中用户固件容量的对应版本,因此固件映像档可以被整合至计算机固件中的用户固件容量。当将固件映像档整合至计算机固件时,在计算机固件中的用户固件容量可被擦除,由此将固件档案和/或模块整合至计算机固件中的固件映像档。
在步骤412,固件映像档可从计算机固件中被载入。此固件映像档可在系统的启动程序期间或被视为启动程序的一部分而被载入。在步骤414,比较此固件映像档与计算机固件中的固件档案和/或模块,由此判断是否固件映像档具有对应的识别符,其是配对到计算机固件中任意其他的固件档案和/或模块的识别符。换句话说,可检查固件映像档的识别符和在计算机固件中其他固件档案或模块的识别符,由此判断此固件映像档是否为其余固件档案或模块中任何一个的复本。配对的识别符表示固件映像档是新的固件档案或模块,或者是对应于计算机固件中的现存固件档案或模块。
这些识别符可以指向任意的属性、档案、特性、金钥、名称、超数据或资讯,其可以提供对应固件档案、模块和/或映像档的身分。例如在一些例子中,这些识别符可以是固件档案或是模块的总体唯一识别符。如此一来,固件映像档的总体唯一识别符可以与计算机固件中现存的固件内容的总体唯一识别符做比较,由此判断固件映像档是否已经存在于计算机固件中。
在步骤416,如果固件映像档的识别符并没有配对于计算机固件中任意一个固件档案模块的识别符,将固件映像档依照一个适当的执行顺序放置在计算机固件中。换句话说,计算机固件的元件、档案、模块和/或驱动程序会具有正确的执行顺序,由此阐释计算机固件中不同元件、档案、模块和/或驱动程序的相依性。在一些例子中,这些顺序或组织可以由一或多个模块或驱动程序配置器,例如为预可扩展固件接口(pre-EFI,PEI)/驱动程序执行环境(driver execution environment,DXE)来执行。
另一方面,如果固件映像档的识别符配对于计算机固件中一个现存固件档案或模块对应的识别符,在步骤418中会执行版本的检查,由此判断固件映像档是否为现存固件档案或模块较新的版本。此版本的检查可以通过以下手段来执行:比较固件档案或模块、比较档案或模块的识别符、比较版本的识别符、比较超数据、比较时间戳记、比较属性、比较固件内容、比较档名、或比较关联于固件映像档与现存固件档案的或模块的任意其他相关资讯。
在执行版本检查以后,如果判断固件映像档是现存固件档案或模块的新版本,在步骤420中,固件映像档可替换计算机固件中的现存固件档案或模块。或者,在步骤422可结束更新。
在一些例子中,系统100可以在执行计算机固件期间和/或在启动程序期间执行任意数目的步骤402~422。例如,系统100可以在系统100的启动程序期间执行一个或多个步骤402~422,并且在流程图400的机制完成以后回到启动程序和/或固件的电力开启自我测试。如此一来,系统100可以在启动程序期间动态地将新模块整合至计算机固件和/或替换计算机固件中现存的模块。在一些例子中,系统100在开机时动态地载入且执行从固件映像档取得的模块。实际上,系统100可以在将系统100的控制从计算机固件交付至操作系统或启动载入器之前执行任意数目的步骤402~422。
图5绘示了在计算机固件容量302与系统管理者502之间互动的流程的示意图500。系统管理者502可以是管理模块或是固件接口。例如,管理模块可以是用于存取系统管理功能的管理接口或环境,例如为控制台等。然而,在一些实施例中,系统管理者502可以是在远端装置(例如为远端伺服器)上的管理模块或应用程序。
系统管理者502可以将模块加入至用户固件容量304(步骤504)。固件模块可以为新的模块或者是计算机固件容量302中现存模块的替换/更新。如先前解释的,用户固件容量304可以包括档案系统、档案、容量和/或建立用来将固件模块和/或档案整合至计算机固件容量302的印象档,其中计算机固件容量302包含有计算机固件。
计算机固件容量302中的计算机固件接下来可以配置在固件模块304中的模块(步骤506)。在一些例子中,基本输入输出系统(BIOS)或是统一可扩展固件接口(UEFI)元件可以配置在用户固件容量304中的模块。例如,这些在用户固件容量304中的模块可以由预可扩展固件接口(PEI)初始化和/或关联于统一可扩展固件接口(UEFI)平台初始化(platform initialization,PI)规格的驱动程序执行环境(DXE)配置器来配置。
接下来,系统100可以动态地载入并执行模块(步骤508)。例如,模块可以在系统100的启动程序期间,或者是被当作为启动程序的一部份而被载入并启动。在载入并执行模块以后,系统100可以回到启动程序(步骤510)。在此,控制可以交还给计算机固件,已完成启动程序和/或电力开启自我测试,或者是将控制交给操作系统或启动载入器。
图6绘示了逻辑固件装置600的范例。逻辑固件装置600可包括固件容量604~608以储存关联于某一给定装置的计算机固件的固件内容。每个固件容量604~608可表示为储存库,其是根据统一可扩展固件接口(UEFI)平台初始化(PI)规格来储存数据和/或程序码。然而,在其他的实施例中,每个固件容量604~608可以是根据其他的固件平台或是规格(包括了未来的固件平台或规格),例如为基本输入输出系统或任意其他的固件平台或规格。
每个固件容量604~608可以组织在一个档案系统当中。如此一来,每一个固件容量604~608的储存单位为可以是一个档案。
用户固件容量604可包括一个固件容量,其是建立来让用户或装置可以配置固件档案和/或模块、替换或更新现存固件档案和/或模块等。因此用户固件容量604可以让固件档案和/或模块被整合至逻辑固件容量602中的计算机固件,而不需要擦除在逻辑固件容量602中全部的计算机固件。
驱动程序执行环境(DXE)固件容量606可包括一固件容量,其是用来储存驱动程序执行环境元件、模块、档案和/或统一可扩展固件接口(UEFI)的各阶段。例如,驱动程序执行环境固件容量606可包括在以统一可扩展固件接口为基础的计算机固件中任意的DXE驱动程序、配置器和/或模块。
预可扩展固件接口(PEI)固件容量608可包括一固件容量,用来储存预可扩展固件接口元件、模块、档案和/或统一可扩展固件接口(UEFI)的各阶段。例如,预可扩展固件接口固件容量608可包括在以统一可扩展固件接口为基础的计算机固件中任意的PEI驱动程序、配置器和/或模块。
图7绘示了用来更新计算机固件的示范性程序700的示意图。在系统上的计算机固件模块702可比较用户固件容量604与逻辑固件容量606~608。计算机固件模块702指的可以是给定系统上的计算机固件,或者是在给定系统中一个或多个特定的模块、功能、档案或单元。例如,在一些实施例中,计算机固件模块702可以是在统一可扩展固件接口平台或环境中的可扩展固件接口和/或驱动程序执行环境配置器。在其他的实施例中,计算机固件模块702可以是给定系统的基本输入输出系统。
在用户固件容量604与逻辑固件容量606~608的比较中,计算机固件模块702可比较用户固件容量604中任意的内容(例如为模块或是档案)与逻辑固件容量606~608中任意的内容。计算机固件模块702可以比较用户固件容量604与逻辑固件容量606~608,由此判断用户固件容量604和/或其中任意的内容是否配对至逻辑固件容量606~608和/或其中任意的内容。
为了判断用户固件容量604是否配对至逻辑固件容量606~608,在步骤704中,计算机固件模块702可检查用户固件容量604与逻辑固件容量606~608是否拥有配对或重复的识别符。这些识别符可以是标签(tag)、标记(label)、属性或资讯,其可以识别出对应的固件容量604~608和/或在每一个固件容量604~608任意的模块或档案。例如,这些识别符可以是关联于在固件容量604~608中每一个模块或档案的总体唯一识别符。在此,计算机固件模块702可以比较用户固件容量604中任意特定模块或档案的总体唯一识别符,以和逻辑固件容量604~608中模块或档案的总体唯一识别符。通过检查这些识别符,计算机固件模块702可判断用户固件容量604或其中任意的内容是否配对于(及相同或等同于)逻辑固件容量604~608或其中任意的容量。
在步骤706,如果用户固件容量604没有配对至逻辑固件容量606~608或其他任意的内容,计算机固件模块702可以将用户固件容量604加入或整合至逻辑固件容量606~608或是其他关连于给定系统的计算机固件的其他逻辑容量。在一些例子中,在步骤706中,计算机固件模块702可以将用户固件容量604加入或整合至计算机固件(例如,加入或整合至任意的逻辑固件容量606~608)而不擦除关联于逻辑固件容量606~608的计算机固件。
在步骤708,如果用户固件容量604没有配对至任意的逻辑固件容量606~608,计算机固件模块702在步骤708中会检查用户固件容量604是否为任意一个逻辑固件容量606~608的新版本。例如,计算机固件模块702可以判断用户固件容量604是否为逻辑固件容量606~608的新版本或者用户固件容量604是否包括一个或多个模块,其是逻辑固件容量606~608中一个或多个模块的新版本。
如果用户固件容量604并不是任意一个逻辑固件容量606~608的新版本,在步骤710中,计算机固件模块702可略过将用户固件容量604整合至逻辑固件容量606~608的步骤,或者结束程序700。
另一方面,如果用户固件容量604是任意一个逻辑固件容量606~608的新版本,在步骤714中,计算机固件模块702可以将逻辑固件容量606~608中现存版本的用户固件容量替换为新模块(即用户固件容量604)。在一些例子中,在步骤712中计算机固件模块702可以替换现存的版本而不擦除关联于逻辑固件容量606~608的计算机固件。
在以上对于程序700关于用户固件容量604与逻辑固件容量606~608的描述中,本领域具有通常知识者当可理解程序700中任意的步骤或概念可以执行于任意特定的固件模块或档案而不是容量,或者是执行于任意特定的固件模块或档案再加上容量。例如,步骤704、708可以被实施为检查用户固件容量604与逻辑固件容量606~608中一个或多个模块是否有重复的识别符或比较这些模块的版本。并且,步骤706、712可以被实施加入、整合或替换给定系统中计算机固件特定的模块或档案。换言之,步骤702~712可以执行于所有的固件容量604~608或是固件容量604~608中特定的模块或档案。
在教示了基本的系统元件与概念以后,现在开始教示图8与图9中示范性的方法实施例。为了清楚起见,图8中的方法是以系统100(如图1所示)来描述,其中系统100是用来实践此方法。图9的方法是以系统210与远端装置(以下称伺服器)208(如图2所示)来描述,其中系统210与伺服器208是用来实践此方法。在此概述的步骤是示范性的,并且在实施这些步骤时可以对某些步骤进行排除、增加、修改或其组合等动作。
图8绘示了用于更新计算机固件148的示范性方法800。在此,系统100可更新(例如增加、安装、替换、移除或整合固件内容)计算机固件148,而不擦除整个计算机固件148。在一些实施例中,系统100可以在计算机固件容量中产生用户固件容量,其中计算机固件容量包含计算机装置在启动程序期间所使用的计算机固件(步骤802)。此用户固件容量可包括例如档案系统、逻辑容量、档案、模块、映像档、软件包(package)或任意其他的内容或储存单元。并且系统100所使用的计算机固件可包括在启动程序期间或之前装置所使用的任意类型的固件。例如,计算机固件可包括基本输入输出系统、统一可扩展固件接口固件、若任意其他类型的固件和/或固件接口。启动程序可包括用来测试、侦测和/或启动硬件元件的程序;载入系统100的设置设定,例如为效能和硬件的设置设定;载入驱动程序,例如为预可扩展固件接口和/或驱动程序执行环境驱动程序;将系统100的控制交给操作系统或启动载入器;以及其他步骤。
系统100可以取得固件档案,此固件档案是用以更新计算机装置在启动程序期间所使用的计算机固件(步骤804)。例如,此固件档案可包括一个或多个模块、档案、容量(例如用户固件、只读存储器或逻辑容量)、档案系统、映像档、软件包等。并且,固件档案可以由系统100来产生、编译或建立。然而,在一些例子中,为了检查固件档案和/或将固件档案整合至系统100的计算机固件中,固件档案可以由不同的系统(例如为伺服器)来产生、编译或建立,并且接下来被系统100所接收。
接下来,系统100可以比较固件档案与计算机固件容量的内容(步骤806)。例如,系统可以比较上述的固件档案与计算机固件容量中任意固件档案(包括任意的模块或容量)的属性、识别符(例如总体唯一识别符)、标记、超数据或内容,由此判断上述的固件档案是否已经安装或整合至计算机固件。在一些例子中,在上述比较后如果系统100判断固件档案已经存在或整合至计算机固件,则系统100可执行版本检查以判断上述的固件档案是否为计算机固件中现存对应的固件档案的新版本。在此,系统100可以识别固件档案与计算机固件中任何一个现存固件档案的版本,由此判断哪一个固件档案的版本较新。如果系统100判断上述的固件档案是计算机固件中对应的现存固件档案的新版本,则系统100可执行如以下解释的步骤808。
另一方面,如果系统100判断上述的固件档案是计算机固件中对应的现存固件档案的新版本或旧版本,则系统100可略过步骤808。然而,在一些例子中,在判断上述的固件档案是计算机固件中对应的现存固件档案的新版本或旧版本后,系统100仍然可以继续执行步骤808。例如,系统100可以想要替换计算机固件中损坏的固件档案,因此即使计算机固件中一个或多个固件档案是相同于(即相同档案或相同版本)上述的固件档案,系统100也可以继续执行步骤808。在另一个例子中,系统100可能想要将计算机固件中一个或多个固件档案还原成较旧的版本(例如,如果固件档案的更新与计算机固件造成了问题或错误),因此即使计算机固件中一个或多个固件档案具有较新的版本,也可以继续步骤808。
根据上面的比较结果,系统100会将固件档案储存在计算机固件容量中的用户固件容量,而不擦除计算机装置在启动程序期间所使用的计算机固件的整体部分(步骤808)。系统100将固件档案加入、安装或载入以成为计算机固件的新模块、档案或元件,或者是将计算机固件中现存的模块、档案或元件替换为固件档案,并且这些步骤都不会擦除整个计算机固件。此外,系统100可以在系统100启动时,在启动程序期间,动态地载入、执行或储存固件档案。更进一步来说,固件档案可以永久的被储存,使得在系统100关机和/或重开机以后固件档案依然是计算机固件的一部分。然而,在一些实施例中,固件档案可以暂时地储存在计算机固件容量中,使得固件档案在启动程序期间被载入(或固件档案为启动程序的一部分),但在系统100关机和/或重开机以后固件档案不会维持在计算机固件中。
系统100可以用内频带(in band)或外频带(out-of-band)的方式来储存固件档案。当以外频带的方式来储存固件档案时,系统100可以使用专属的通道、装置、控制器或环境(例如基板管理控制器)来储存固件档案。例如,基板管理控制器可以基于从远端伺服器接收的指令来将固件档案储存在系统100中。在一些例子中,即使系统100并没有开机或者系统100中的操作系统并没有被安装、执行或不具有功能,固件档案依然可以用外频带的方式来储存。另一方面,当以内频带的方式储存固件档案,系统100可以在操作系统被启动以后再储存固件档案。例如,在系统100已经启动以后,可根据系统100从远端装置接收到的指令来将固件档案储存在系统100中。
在一些实施例中,系统100可以在启动程序期间执行上述方法800中的一个或多个步骤。
当在步骤808中将固件档案储存在用户固件容量时,固件档案也可以储存在关联于计算机固件的其他容量,而不只是将固件档案储存在用户固件容量,或者是用来代替将固件档案储存在用户固件容量的步骤。例如,在一些实施例中,固件档案可以储存在关联于计算机固件的不同固件容量,例如为图6所示的逻辑容量606~608,其中固件档案也可以是也可以不是储存在用户固件容量中。
为了安全的目的,系统100可以实施加密、签章和/或验证或授权机制以保护固件档案和/或计算机固件。例如,在将固件档案加入或储存至计算机固件容量之前,或是在将现存固件档案替换或更新为固件档案之前,系统100可以签章和/或加密固件档案,并且对此签章或加密后的固件档案执行验证获授权的步骤。在一些例子中,系统100可以先通过对固件档案执行杂凑函数(例如MD5或SHA)来产生信息摘要。此外,系统100可以选择性地以加密金钥来加密此信息摘要,此金钥例如为非对称加密的私钥或者是对称加密的金钥。接下来,系统100可将签章后和/或加密后的信息摘要整合至固件档案中以产生签章后的固件档案。
为了验证或授权签章后的固件档案,系统100可以从签章后的固件档案撷取出固件档案与信息摘要。如果此信息摘要是先前加密的那一个,则系统100可以解密金钥(例如对称式加密所使用的金钥,或者是非对称加密中的公开金钥)来解密信息摘要。接下来,用来签章固件档案的杂凑函数,可用来执行在从签章后的固件档案中撷取的固件档案,并且签章后的结果可以和信息摘要(从签章后的固件档案撷取并选择性地解密)作比较。如果比较结果显示为配对,则表示固件档案被验证或授权成功。如此一来,系统100接下来可以使用固件档案来更新或修改计算机固件。另一方面,如果比较结果显示两者不配对,则表示固件档案没有被验证或授权成功,因此并不会系统100用来更新或修改计算机固件。通过判断出两个固件档案不配对的比较结果,系统100可以辨认出潜在的妥协或者是骇客的尝试,并且可以避免实施了未被授权的固件档案。
以上描述了被相同系统(即系统100)执行的步骤(包括步骤802~808),但在一些实施例中,一些步骤802~808也可以被不同或远端的装置(例如伺服器)来执行。实际上,本领域技术人员当可理解,在此描述的一个或多个步骤可以被一或多个不同的装置来执行。例如,在一些例子中,固件档案可以被某一个装置(例如伺服器)来签章,而被另一个装置(例如系统100)来验证或授权。事实上,为了清楚与解释起见,在此描述的步骤是由相同的系统来执行,其是一个非限制性的例子。再次申明的是,这里也可以考虑使用步骤与装置的其他组合。
图9绘示了用于保护固件档案的示范性方法900。在此,伺服器208可先签章固件档案以产生信息摘要(message digest)(步骤902)。伺服器208可以对固件档案执行一个函数,例如为杂凑函数(例如MD5、SHA等)以产生信息摘要。
伺服器208可以加密信息摘要(步骤904)。伺服器208可以使用任意的加密机制来加密信息摘要。例如,伺服器208可以以一金钥,基于对称式或非对称式的加密机制来加密信息摘要。在一些实施例中,伺服器208可以以私钥来加密信息摘要。接下来,伺服器208可以将加密后的信息摘要整合至包含固件档案的用户固件容量(步骤906)。
接下来,系统210可以从用户固件容量中撷取加密后的信息摘要以及固件档案(步骤908)。例如,系统210从伺服器208(或任意其他的装置)接收用户固件容量,并且撷取其中的内容。在一些例子中,系统210可以通过网络202从伺服器208接收用户固件容量。接下来系统210可以解密从用户固件容量中撷取的信息摘要(步骤910),并且签章从用户固件容量撷取的固件档案以产生第二信息摘要(步骤912)。系统210可以使用杂凑函数来签章所撷取的固件档案,此杂凑函数是相同于在步骤902用来签章固件档案的杂凑函数。此步骤会产生第二信息摘要(即签章后的固件档案),其可与步骤902所产生的信息摘要作比较,由此判断固件档案的真实性或者是侦测固件档案的操控或修改。
接下来,系统210可授权此固件档案(步骤914)。系统210可以通过比较步骤902所产生的信息摘要和第二信息摘要来授权固件档案。如果步骤902所产生的信息摘要和第二信息摘要配对,则系统210可生效或授权固件档案。或者,如果步骤902所产生的信息摘要和第二信息摘要不配对,则系统可使固件档案失效或将之视为没有授权。在此,系统210可以忽略或丢弃没有生效或授权的固件档案。
在以上配合图9对于各个步骤(包括步骤902~914)的描述中,是由不同的系统(即伺服器208与系统210)来执行这些步骤,但在一些实施例中,一些步骤也可以由相同的装置(例如系统210)来执行。并且,在其他实施例中,一些步骤也可以被其他额外的装置来执行,例如为另一个伺服器或集中式的系统。同样地,为了清楚与解释的目的,步骤902~914是与系统210与伺服器208一起解释。
为了清楚的解释,在一些例子中本技术可以表示为包括个别的功能方块,其中一些功能方块可包括装置、装置元件、由软件实施的方法中的步骤或程序、或者是硬件与软件的结合。
在一些实施例中,这些计算机可读取储存装置、媒体与存储器可包括缆线或无线信号,其中具有位元串。然而,在此提到的非暂态计算机可读取储存媒体明确地排除了例如为能量、载波、电磁波以及信号本身的媒体。
上述例子的方法可以利用计算机可执行指令来实施,这些指令可以储存在计算机可读取媒体或者可以从计算机可读取媒体中取得。例如,这些指令可包括指令与数据,其造成或设定通用目的的计算机、特殊目的的计算机或特殊目的的处理装置来执行特定的功能或功能组。所使用的计算机资源的一部分也可以通过网络来存取。例如,这些计算机可执行指令可以是数字档、例如为组合语言的中间(intermediate)格式指令、固件、或原始码。计算机可读取媒体的例子包括磁盘、光盘、快闪存储器、与非易失性存储器一起提供的通用串列总线装置、连接至网络的储存装置等,而计算机可读取媒体可用来储存指令、使用的资讯和/或在上述例子的方法中所产生的资讯。
根据上述发明用来实施方法的装置可包括硬件、固件和/或软件,并且可以采用各种形状因子。这些形状因子的一般性例子包括笔记型计算机、智能型手机、具有小形状因子的个人计算机、个人数字化助理、机架式设备或是独立设备等等。在此所描述的功能可以实施为周边装置或是外接卡。在更进一步的例子中,这些功能也可以伴随着不同的芯片而实施在电路板上,或者是实施在单一装置中的不同处理器上。
这些指令、用来传送指令的媒体、用来执行指令的计算资源、以及其他用来支持这些计算资源的结构都是用来提供所述功能的手段。
虽然各种例子与其他资讯已被用来解释专利申请范围中的观点,但本领域技术人员当使用这些例子来完成各式各样的实施,在这些例子中特定的特征或安排都不应用来限制权利要求。更进一步来说,虽然一些标的已经用特定的语言来解释为特定的结构性特征和/或方法步骤,但可理解的是权利要求中定义的标的并不限于所描述的特征或动作。例如,这些功能可以分散在不同的元件或由不同的元件来执行,这些元件可以不同于上述的元件。相反的是,这些特征与步骤是被解释为权利要求中系统与方法的元件的例子。权利项语言“一集合中的至少其中之一”指的是此集合中满足权利要求的一个或多个成员。有形的计算机可读取储存媒体、计算机可读取储存装置,或计算机可读取存储器装置明确地排除了例如为暂态波形、能量、载波、电磁波以及信号本身的媒体。

Claims (20)

1.一种更新计算机固件的方法,包括:
在一计算机固件容量中产生一用户固件容量,其中该计算机固件容量包含一计算机装置在一启动程序期间所使用的一计算机固件,并且该用户固件容量包括一档案系统;
取得一固件档案,该固件档案是用以更新该计算机装置在该启动程序期间所使用的该计算机固件;
比较该固件档案与该计算机固件容量的一内容以产生一比较结果;以及
基于该比较结果,将该固件档案储存在该计算机固件容量中的该用户固件容量,而不擦除该计算机装置在该启动程序期间所使用的该计算机固件的一整体部分。
2.如权利要求1所述的方法,还包括:
基于该比较结果,判断该固件档案不对应于目前储存于该计算机固件容量的一现存固件档案;以及
其中将该固件档案储存于该用户固件容量的步骤包括将该固件档案储存为一新档案,而不替代该计算机固件容量与该用户固件容量中的一现存档案。
3.如权利要求1所述的方法,还包括:
当该固件档案是对应于目前储存于该计算机固件容量的一现存固件档案,判断该固件档案是否包括该现存固件档案的一新版本;以及
当该固件档案包括该新版本时,将该现存固件档案替换为该固件档案。
4.如权利要求3所述的方法,其中判断该固件档案是对应于目前储存于该计算机固件容量的一现存固件档案的步骤包括:
将关联于该固件档案的一总体唯一识别符与关联于储存在该计算机固件容量的该现存固件档案的总体唯一识别符做比较;以及
判断关联于该固件档案的该总体唯一识别符与该现存固件档案对应的该总体唯一识别符为一配对。
5.如权利要求1所述的方法,其中该计算机固件是基于一统一可扩展固件接口平台初始化。
6.如权利要求1所述的方法,其中取得该该固件档案的步骤包括:
基于一统一可扩展固件接口平台初始化规格来产生该固件档案;以及
基于一安全函数来签章该固件档案。
7.如权利要求6所述的方法,其中签章该固件档案的步骤包括:
将一杂凑函数应用于该固件档案以产生一信息摘要;
以一金钥加密该信息摘要以产生一加密后的信息摘要;以及
将该加密后的信息摘要整合至该固件档案以产生一签章后的固件档案。
8.如权利要求7所述的方法,还包括根据以下步骤来验证该签章后的固件档案:
从该签章后的固件档案撷取该加密后的信息摘要与该固件档案;
以一第二金钥解密该信息摘要,其中该第二金钥是关联于加密该信息摘要时所使用的该金钥;
将该杂凑函数应用在从该签章后的固件档案中所撷取的该固件档案以产生一杂凑后的固件档案;以及
将该信息摘要与该杂凑后的固件档案做比较。
9.如权利要求8所述的方法,还包括:
当该信息摘要与该杂凑后的固件档案配对,验证从该签章后的固件档案所撷取的该固件档案以产生一验证后的固件档案,其中所述储存该固件档案的步骤包括储存该验证后的固件档案。
10.如权利要求1所述的方法,其中储存该固件档案的步骤是以内频带的方式执行。
11.如权利要求1所述的方法,其中储存该固件档案的步骤是以外频带的方式执行。
12.如权利要求1所述的方法,其中储存该固件档案的步骤包括将该固件档案载入至该计算机固件容量且执行该计算机固件与该固件档案。
13.如权利要求1所述的方法,其中比较该固件档案与该计算机固件容量的该内容的步骤包括:
判断该固件档案是对应于储存在该计算机固件容量的一现存固件档案,其中该计算机固件容量是该计算机固件的一部分;以及
通过以下手段的至少其中之一来判断该固件档案是否包括不同于该现存固件档案的固件档案版本:一预可扩展固件接口初始化配置器,与一驱动程序执行环境配置器。
14.一种更新计算机固件的系统,包括:
一处理器;以及
一计算机可读取储存媒体,具有多个指令储存在其中,当该些指令被该处理器执行时,使该处理器所执行的操作包括:
产生一固件档案,该固件档案是用于更新该系统在一启动程序期间所使用的一计算机固件;
在一计算机固件容量中产生一用户固件容量,其中该计算机固件容量包含该系统在该启动程序期间所使用的该计算机固件,该用户固件容量包括一档案系统,用以将该固件档案储存至该计算机固件容量以作为该计算机固件的一部分;
比较该固件档案与该计算机固件容量的一内容以产生一比较结果;以及
基于该比较结果,将该固件档案储存在该计算机固件容量中的该用户固件容量,而不擦除该系统在该启动程序期间所使用的该计算机固件的一整体部分。
15.如权利要求14所述的系统,该计算机可读取储存媒体还储存多个额外指令,当该些额外指令被该处理器执行时,使该处理器执行的操作包括:
基于该比较结果,判断该固件档案不对应于目前储存于该计算机固件容量的一现存固件档案;以及
其中将该固件档案储存于该用户固件容量的步骤包括将该固件档案储存为一新档案,而不替代该计算机固件容量与该用户固件容量中的一现存档案。
16.如权利要求14所述的系统,该计算机可读取储存媒体还储存多个额外指令,当该些额外指令被该处理器执行时,使该处理器执行的操作包括:
基于该比较结果,判断该固件档案是对应于目前储存于该计算机固件容量的一现存固件档案;
判断该固件档案包括该现存档案的一新版本;以及
将该现存固件档案替换为该固件档案。
17.如权利要求14所述的系统,其中该计算机固件是基于一统一可扩展固件接口平台初始化,并且产生该固件档案的步骤包括通过以下步骤来签章该固件档案:
将一杂凑函数应用于该固件档案以产生一信息摘要;
以一金钥加密该信息摘要以产生一加密后的信息摘要;以及
将该加密后的信息摘要整合至该固件档案以产生一签章后的固件档案。
18.一种非暂态计算机可读取储存媒体,具有多个指令储存在其中,当该些指令被一处理器执行时,使该处理器执行的操作包括:
在一计算机固件容量中产生一用户固件容量,该计算机固件容量包含一计算机装置在一启动程序期间所使用的一计算机固件,用户固件容量包括在该计算机固件容量中的一档案系统;
取得一固件档案,该固件档案是用以更新该计算机装置在该启动程序期间所使用的该计算机固件;
比较该固件档案与该计算机固件容量的一内容以产生一比较结果;以及
基于该比较结果,将该固件档案储存在该计算机固件容量中的该用户固件容量,而不擦除该计算机装置在该启动程序期间所使用的该计算机固件的一整体部分。
19.如权利要求18所述的非暂态计算机可读取储存媒体,其中该计算机固件是基于一统一可扩展固件接口平台初始化,并且其中产生该固件档案的步骤包括通过以下步骤来签章该固件档案:
将一杂凑函数应用于该固件档案以产生一信息摘要;
以一金钥加密该信息摘要以产生一加密后的信息摘要;以及
将该加密后的信息摘要整合至该固件档案以产生一签章后的固件档案。
20.如权利要求18所述的非暂态计算机可读取储存媒体,其中比较该固件档案与该计算机固件容量的该内容的步骤包括:
判断该固件档案是对应于储存在该计算机固件容量的一现存固件档案,其中该计算机固件容量是该计算机固件的一部分;
通过以下手段的至少其中之一来判断该固件档案是否包括该现存固件档案的新版固件档案:一预可扩展固件接口初始化配置器,与一驱动程序执行环境配置器;以及
当判断该固件档案是该现存固件档案的新版固件档案,将该固件档案储存在该用户固件容量。
CN201510629496.3A 2015-07-01 2015-09-29 更新计算机固件的系统、方法与计算机可读取储存媒体 Pending CN106325915A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/789,245 2015-07-01
US14/789,245 US9965270B2 (en) 2015-07-01 2015-07-01 Updating computer firmware

Publications (1)

Publication Number Publication Date
CN106325915A true CN106325915A (zh) 2017-01-11

Family

ID=57684120

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510629496.3A Pending CN106325915A (zh) 2015-07-01 2015-09-29 更新计算机固件的系统、方法与计算机可读取储存媒体

Country Status (3)

Country Link
US (1) US9965270B2 (zh)
CN (1) CN106325915A (zh)
TW (1) TWI570592B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032636A (zh) * 2018-07-17 2018-12-18 济南浪潮高新科技投资发展有限公司 一种基于加密认证bmc更新uefi固件的方法
CN109933482A (zh) * 2017-12-15 2019-06-25 艾讯股份有限公司 计算机系统及其主板
CN110825401A (zh) * 2018-08-08 2020-02-21 广达电脑股份有限公司 认证固件设定输入文档的方法与装置
CN111656416A (zh) * 2018-01-31 2020-09-11 富士通先端科技株式会社 纸张处理装置和纸张处理装置的pld配置方法
CN112579133A (zh) * 2020-12-29 2021-03-30 北京深思数盾科技股份有限公司 固件程序的更新方法、装置、存储介质及电子设备
CN113051544A (zh) * 2019-12-26 2021-06-29 瑞昱半导体股份有限公司 外部设备及其验证更新方法

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3138040B1 (en) * 2014-04-28 2020-12-09 Intel Corporation Securely booting a computing device
US10310832B2 (en) 2016-02-19 2019-06-04 Intel Corporation Internet-of-things device blank
US11146449B2 (en) 2016-02-19 2021-10-12 Intel Corporation Network architecture for internet-of-things device
EP3216569A1 (en) * 2016-03-07 2017-09-13 Aldebaran Robotics Modular manufacturing of a robot
FR3050555B1 (fr) * 2016-04-21 2019-09-27 Thales Procede de traitement d'un fichier de mise a jour d'un equipement avionique d'un aeronef, produit programme d'ordinateur, dispositif electronique de traitement et systeme de traitement associes
US10157009B2 (en) * 2016-07-06 2018-12-18 Arris Enterprises Llc Custom command file for efficient memory update
CN107169344B (zh) 2017-05-10 2020-04-21 威盛电子股份有限公司 阻挡非授权应用程序的方法以及使用该方法的装置
CN107329753B (zh) * 2017-06-28 2021-07-16 联想(北京)有限公司 一种固件接口代码的调整方法及电子设备
US10684843B1 (en) * 2017-09-28 2020-06-16 American Megatrends International, Llc Firmware updates using updated firmware files in a dedicated firmware volume
US10691444B1 (en) * 2017-09-28 2020-06-23 American Megatrends International, Llc Launching updated firmware files stored in a dedicated firmware volume
CN107729069A (zh) * 2017-10-12 2018-02-23 浪潮(北京)电子信息产业有限公司 一种安全启动显卡的方法、装置、计算机可读存储介质
US10534620B2 (en) * 2017-11-30 2020-01-14 Dell Products, L.P. Systems and methods for establishing core root of trust measurement (CRTM) for basic input/output (BIOS) image recovery
US10838747B2 (en) * 2017-12-14 2020-11-17 Hewlett Packard Enterprise Development Lp Virtual appliances
TWI639087B (zh) 2017-12-15 2018-10-21 艾訊股份有限公司 計算機系統及其主板
US10977367B1 (en) * 2018-02-06 2021-04-13 Facebook, Inc. Detecting malicious firmware modification
TWI685790B (zh) * 2018-03-16 2020-02-21 神雲科技股份有限公司 伺服器裝置及其即時變更韌體設定的方法
CN108920171A (zh) * 2018-05-15 2018-11-30 联想(北京)有限公司 固件更新方法及装置、电子设备
US10503489B1 (en) * 2018-05-22 2019-12-10 Quanta Computer Inc. Updating firmware via a remote utility
US20200019397A1 (en) * 2018-07-13 2020-01-16 Seagate Technology Llc System and method for controlling rollback of firmware
CN109214168B (zh) * 2018-08-27 2020-08-18 阿里巴巴集团控股有限公司 固件升级方法及装置
US11023217B2 (en) * 2018-11-09 2021-06-01 Dell Products L.P. Systems and methods for support of selective processor microcode updates
US20220085982A1 (en) * 2019-01-28 2022-03-17 Omron Corporation Safety system and maintenance method
TWI709037B (zh) * 2019-05-23 2020-11-01 神雲科技股份有限公司 基本輸入輸出系統設置方法
TWI694452B (zh) * 2019-09-11 2020-05-21 英業達股份有限公司 電腦測試方法
US11099828B2 (en) * 2019-10-22 2021-08-24 Microsoft Technology Licensing, Llc Updating a metadata structure for a firmware update
US11550918B2 (en) * 2019-12-12 2023-01-10 Landis+Gyr Innovations, Inc. Package-based remote firmware update
TWI736074B (zh) * 2019-12-20 2021-08-11 瑞昱半導體股份有限公司 周邊裝置及其驗證更新方法
TWI762914B (zh) * 2020-04-27 2022-05-01 神雲科技股份有限公司 加入所新增之感測器的方法
WO2022046105A1 (en) * 2020-08-31 2022-03-03 Hewlett-Packard Development Company, L.P. Bios update
US11709669B2 (en) 2020-09-04 2023-07-25 Paypal, Inc. Operating system update via sideband processor
US11347496B2 (en) 2020-09-04 2022-05-31 Paypal, Inc. Driver update via sideband processor
TWI784500B (zh) * 2021-04-28 2022-11-21 威鋒電子股份有限公司 電子裝置及其安全韌體更新方法
TWI822531B (zh) * 2022-12-23 2023-11-11 技鋼科技股份有限公司 韌體保護系統及方法
CN116522368A (zh) * 2023-06-29 2023-08-01 浙江大学 一种物联网设备固件解密解析方法、电子设备、介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020194313A1 (en) * 2001-06-18 2002-12-19 Brannock Kirk D. Method and apparatus for distributing computer platform firmware across a network
TW200928979A (en) * 2007-12-31 2009-07-01 Quanta Comp Inc System and method for updating firmware
CN101923473A (zh) * 2009-06-11 2010-12-22 英华达(南京)科技有限公司 嵌入式电子装置及更新其固件的方法
CN102830984A (zh) * 2011-06-14 2012-12-19 联想(北京)有限公司 固件更新的方法、芯片以及通信终端

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010050990A1 (en) * 1997-02-19 2001-12-13 Frank Wells Sudia Method for initiating a stream-oriented encrypted communication
US7055148B2 (en) * 2000-12-07 2006-05-30 Hewlett-Packard Development Company, L.P. System and method for updating firmware
US20050114639A1 (en) * 2001-05-11 2005-05-26 Zimmer Vincent J. Hardened extensible firmware framework to support system management mode operations using 64-bit extended memory mode processors
US8281116B2 (en) * 2003-02-12 2012-10-02 Intel Corporation System and method for utilizing a protected/hidden region of semiconductor based memory/storage
CA2464797A1 (en) * 2003-04-16 2004-10-16 Wms Gaming Inc. Remote authentication of gaming software in a gaming system environment
TWI272534B (en) * 2003-12-31 2007-02-01 Asustek Comp Inc Firmware update processing method and application program
US7603562B2 (en) * 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
US9395968B1 (en) * 2006-06-30 2016-07-19 American Megatrends, Inc. Uniquely identifying and validating computer system firmware
US20080109647A1 (en) * 2006-11-07 2008-05-08 Lee Merrill Gavens Memory controllers for performing resilient firmware upgrades to a functioning memory
CN101770372B (zh) * 2008-12-31 2012-12-05 亚旭电脑股份有限公司 固件更新系统、方法以及固件更新系统的固件建构方法
US8589302B2 (en) * 2009-11-30 2013-11-19 Intel Corporation Automated modular and secure boot firmware update
US8607040B2 (en) * 2010-11-16 2013-12-10 Intel Corporation Method of provisioning firmware in an operating system (OS) absent services environment
JP2014513348A (ja) * 2011-04-08 2014-05-29 インサイド ソフトウェア コーポレーション 統合拡張ファームウェアインタフェース準拠計算装置内のシステムセキュリティデータベースおよびファームウェア格納部を変更する要求を処理するシステムおよび方法
CN103377063B (zh) * 2012-04-28 2016-06-22 国际商业机器公司 从遗留操作系统环境恢复到uefi预启动环境的方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020194313A1 (en) * 2001-06-18 2002-12-19 Brannock Kirk D. Method and apparatus for distributing computer platform firmware across a network
TW200928979A (en) * 2007-12-31 2009-07-01 Quanta Comp Inc System and method for updating firmware
CN101923473A (zh) * 2009-06-11 2010-12-22 英华达(南京)科技有限公司 嵌入式电子装置及更新其固件的方法
CN102830984A (zh) * 2011-06-14 2012-12-19 联想(北京)有限公司 固件更新的方法、芯片以及通信终端

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933482A (zh) * 2017-12-15 2019-06-25 艾讯股份有限公司 计算机系统及其主板
CN111656416A (zh) * 2018-01-31 2020-09-11 富士通先端科技株式会社 纸张处理装置和纸张处理装置的pld配置方法
CN109032636A (zh) * 2018-07-17 2018-12-18 济南浪潮高新科技投资发展有限公司 一种基于加密认证bmc更新uefi固件的方法
CN110825401A (zh) * 2018-08-08 2020-02-21 广达电脑股份有限公司 认证固件设定输入文档的方法与装置
CN110825401B (zh) * 2018-08-08 2023-03-31 广达电脑股份有限公司 认证固件设定输入文档的方法与装置
CN113051544A (zh) * 2019-12-26 2021-06-29 瑞昱半导体股份有限公司 外部设备及其验证更新方法
CN112579133A (zh) * 2020-12-29 2021-03-30 北京深思数盾科技股份有限公司 固件程序的更新方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
US20170003956A1 (en) 2017-01-05
TWI570592B (zh) 2017-02-11
US9965270B2 (en) 2018-05-08
TW201702929A (zh) 2017-01-16

Similar Documents

Publication Publication Date Title
CN106325915A (zh) 更新计算机固件的系统、方法与计算机可读取储存媒体
CN101578609B (zh) 安全启动计算设备
KR102347562B1 (ko) 보안 제어 방법 및 컴퓨터 시스템
CN112182655A (zh) 多设备间的数据交互方法及相关设备
CN107797827A (zh) 安全储存系统以及用于安全储存的方法
US9858421B2 (en) Systems and methods for detecting hardware tampering of information handling system hardware
CN107408172A (zh) 从用户信任的设备安全地引导计算机
KR20170015968A (ko) 모바일 장치들의 원격 구성을 허용하기 위해 모바일 장치들 상에 설치되는 고속 어플리케이션
CN109726067A (zh) 一种进程监控方法以及客户端设备
CN103309709A (zh) 一种固件升级方法、装置及通信设备
CN111695166B (zh) 磁盘加密保护方法及装置
CN106462711A (zh) 经验证启动
CN108304727A (zh) 数据处理的方法与装置
CN105809028A (zh) 在移动设备中运行相同应用的多个实例的装置和方法
US9659171B2 (en) Systems and methods for detecting tampering of an information handling system
US10642984B2 (en) Secure drive and method for booting to known good-state
CN110515634A (zh) 通过远端工具程序更新固件的方法、电脑系统以及介质
CN109271789A (zh) 恶意进程检测方法、装置、电子设备及存储介质
CN106156600A (zh) 一种应用程序的解锁方法及移动终端
CN109063011A (zh) 日志处理方法、电子装置及计算机可读存储介质
CN103455750B (zh) 一种嵌入式设备的高安验证方法及装置
CN110597496B (zh) 应用程序的字节码文件获取方法及装置
CN107491316A (zh) 基板管理控制器的扩展方法、装置及电子设备
CN103729604A (zh) 一种用户访问区域的方法和装置
CN107085900B (zh) 数据处理方法、装置、系统及pos终端

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170111