TWI570592B - 更新電腦韌體的系統、方法與電腦可讀取儲存媒體 - Google Patents

更新電腦韌體的系統、方法與電腦可讀取儲存媒體 Download PDF

Info

Publication number
TWI570592B
TWI570592B TW104130985A TW104130985A TWI570592B TW I570592 B TWI570592 B TW I570592B TW 104130985 A TW104130985 A TW 104130985A TW 104130985 A TW104130985 A TW 104130985A TW I570592 B TWI570592 B TW I570592B
Authority
TW
Taiwan
Prior art keywords
firmware
file
computer
capacity
firmware file
Prior art date
Application number
TW104130985A
Other languages
English (en)
Other versions
TW201702929A (zh
Inventor
張耿維
Original Assignee
廣達電腦股份有限公司
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 廣達電腦股份有限公司 filed Critical 廣達電腦股份有限公司
Publication of TW201702929A publication Critical patent/TW201702929A/zh
Application granted granted Critical
Publication of TWI570592B publication Critical patent/TWI570592B/zh

Links

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

更新電腦韌體的系統、方法與電腦可讀 取儲存媒體
本發明是有關於電腦韌體,且特別是有關於更新電腦韌體而不用抹除(flash)整個韌體映象檔的方法。
一般的電腦系統在啟動程序期間使用特定的電腦韌體來辨認、初始化與測試電腦系統中的硬體,並且載入啟動載入器(boot loader)或者是作業系統。例如為基本輸入輸出系統(basic input/output system,BIOS)或是統一可擴展韌體介面(unified extensible firmware interface,UEFI)的韌體平台提供了介面,使得可以設定各種不同的參數,例如為硬體參數或是啟動設定參數。例如,韌體介面可用來指令時脈速度與匯流排速度,指出那些周邊裝置是連接到電腦系統,設定特定的監控程序,並且設定會影響電腦系統效能與功率使用的其他各種參數。
一般而言,電腦系統的韌體是儲存在快閃記憶體中,例如為非揮發隨機存取記憶體(non-volatile random access memory,NVRAM)、唯讀記憶體(read-only memory,ROM)、或者是電子式可抹除程式化唯讀記憶體(electrically erasable programmable read-only memory,EEPROM)。快閃記憶體可以讓韌體與韌體設定重複寫入而不用將記憶體晶片從電腦裝置中移除。然而,可惜的是任何對韌體的修改或更新現在都需要將整個韌體重新寫入至快閃記憶體,此步驟被稱為抹除或快閃(flashing)韌體映像檔。
本揭露的附加特徵和優點將在隨後的描述中闡述,其中一部分將從描述中變得明顯,或者可以通過實踐在此公開的原理而學習到這些特徵與優點。本揭露的附加特徵和優點可以借助在所附申請專利範圍中具體指出的儀器和組合來實現和獲得。這些和其他的本揭露特徵將從隨後的描述和所附申請專利範圍中變得更為完全地明顯,或者可以通過實踐在此闡述的原理來習得。
在此揭露的是用於更新電腦韌體而不用抹除整個韌體映像檔的系統、方法與非暫態電腦可讀取儲存媒體。此系統可在電腦韌體容量中產生使用者韌體容量,而電腦韌體容量包含了系統在啟動程序期間所使用的電腦韌體。在某些例子中,使用者韌體容量可以是一個檔案系統。此外,電腦韌體容量可以是在一或多個記憶體裝置上的邏輯容量,這些記憶體裝置例如為系統中的快閃記憶體儲存元件。
此系統可包含韌體檔案,其是用來更新系統在啟動程序期間所使用的電腦韌體。此系統可以透過網路從另一個單獨的裝置中取得韌體檔案或者是在本地產生並儲存韌體檔案。例如,在某些例子下,系統可以從一個伺服器或是中央位置取得韌體檔案以將韌體檔案配置或整合至系統的電腦韌體。在其他例子下,系統可以產生或編譯韌體檔案並將之儲存在例如為唯讀記憶體的記憶體中,用以配置或整合至系統的電腦韌體中。
接下來,系統可比較韌體檔案與電腦韌體容量的內容,並且基於比較結果將韌體檔案儲存在電腦韌體容量中的使用者韌體容量,而不用抹除系統在啟動程序期間所使用的電腦韌體的全部。此韌體檔案可包括一或多個韌體模組。系統可檢查韌體檔案是否已經在電腦韌體中。例如,系統可以檢查電腦韌體容量以判斷韌體檔案是否已經在電腦韌體容量中。如果系統判斷韌體檔案並不在電腦韌體裡,它可以簡單地把韌體檔案加入至電腦韌體以成為新的元件(即新檔案或模組)。在某些例子下,系統可以檢查韌體檔案是否已經在電腦韌體中且/或在系統的啟動程序期間將韌體檔案加入至電腦韌體。
另一方面,如果系統判斷韌體檔案是對應於已經在電腦韌體中的韌體檔案,它可以檢查或比較韌體檔案與電腦韌體中對應的韌體檔案的版本,藉此判斷韌體檔案是否為電腦韌體中韌體檔案的新版本或更新版本。如果系統判斷韌體檔案是電腦韌體中韌體檔案的新版本或更新版本,它可 以將電腦韌體中對應的韌體檔案替換或更新為上述的韌體檔案。另一方面,如果系統判斷韌體檔案中的韌體模組是電腦韌體中對應的韌體模組的相同版本與更舊的版本,它可以決定不要以韌體檔案中的韌體模組來替換或更新電腦韌體中對應的韌體模組。
在某些例子下,系統可以檢查或比較韌體檔案的版本及/或在系統的啟動程序期間將電腦韌體中對應的韌體檔案替換或更新為上述的韌體檔案。
為了一些安全的目的,系統也可以實作加密、簽章及/或驗證或授權的機制來保護韌體檔案及/或電腦韌體。例如,系統可以加密及/或簽章韌體檔案,並且在將韌體檔案加入或儲存至電腦韌體容量之前,或是在將現存韌體檔案更新或替換為韌體檔案之前,執行驗證或是授權的步驟。在某些例子下,系統可以透過對韌體檔案實施一雜湊函數(例如MD5、SHA等)來產生訊息摘要。此外,系統可以選擇性地以一加密金鑰來加密訊息摘要,此加密金鑰例如是非對稱加密的私鑰(private key)或者是對稱加密的金鑰。系統可以將簽章後及/或加密後的訊息摘要整合至韌體檔案以產生簽章後的韌體檔案。
為了驗證或授權簽章後的韌體檔案,系統可以從簽章後的韌體檔案擷取韌體檔案與訊息摘要。如果此訊息摘要是先前加密的那一個,系統可以根據解密金鑰(例如,對稱式加密所使用的金鑰,或者是非對稱式加密的公開金鑰)來解密訊息摘要。接下來,在簽章韌體檔案時所使用的 雜湊函數可用來實施在從簽章後的韌體檔案所擷取的韌體檔案上,並且其結果可和從簽章後的韌體檔案中擷取的(並且選擇定地解密)的訊息摘要做比較。如果比較結果顯示兩者配對,則韌體檔案可被驗證或授權成功。如此一來,系統接著可以使用此韌體檔案來更新或修改電腦韌體。另一方面,如果比較結果顯示兩者不配對,則表示韌體檔案不被驗證或授權成功,因此不會被系統用來更新或修改電腦韌體。透過判斷出兩個韌體檔案不配對的比較結果,系統可以辨認出潛在的妥協或者是駭客的嘗試,並且可以避免實施了未被授權的韌體檔案。
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]繪示了示範性的系統實施例;[圖2]繪示了用以透過網路來更新電腦韌體的示範性環境的方塊圖;[圖3]繪示了用以將韌體檔案整合至電腦韌體容量的一個示範性流程圖的示意圖;[圖4]繪示了用以將電腦韌體配置在系統中的一個示範性機制的流程圖; [圖5]繪示了在電腦韌體與系統管理者之間互動流程的示意圖;[圖6]繪示了邏輯韌體裝置的範例;[圖7]繪示了用以更新電腦韌體的一個示範性程序的示意圖;[圖8]繪示了用以更新電腦韌體的一個示範性方法實施例;以及[圖9]繪示了用以保護韌體檔案的示範性方法。
以下詳細地描述了本揭露的各種實施例。當討論特定的實作方式時,可理解的是此實作方式只做為解釋目的。本領域具有通常知識者可理解的是,當不離開本揭露的精神與範圍時,當可使用其他的元件與設定。
在此揭露的是用以更新電腦韌體而不抹除整個韌體映像檔的系統、方法與非暫態電腦可讀取儲存媒體。首先,會先揭露用於更新電腦韌體而不抹除整個韌體映像檔的示範性系統與環境的簡單介紹。更新電腦系統而不抹除整個韌體映像檔的詳細描述(包括範例與變化)都會在之後揭露。這些變化在此應被解釋為各種實施例。本揭露現在從圖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)格式指令、韌體、或原始碼。電腦可讀取媒體的例子包括磁碟、光碟、快閃記憶體、與非揮發性記憶體一起提供的通用串列匯流排裝置、連接至網路的儲存裝置等,而電腦可讀取媒體可用來儲存指令、使用的資訊及/或在上述例子的方法中所產生的資訊。
根據上述揭露用來實作方法的裝置可包括硬體、韌體及/或軟體,並且可以採用各種形狀因子。這些形狀因子的一般性例子包括筆記型電腦、智慧型手機、具有小 形狀因子的個人電腦、個人數位化助理、機架式設備或是獨立設備等等。在此所描述的功能可以實作為周邊裝置或是外接卡。在更進一步的例子中,這些功能也可以伴隨著不同的晶片而實作在電路板上,或者是實作在單一裝置中的不同處理器上。
這些指令、用來傳送指令的媒體、用來執行指令的計算資源、以及其他用來支持這些計算資源的結構都是用來提供所述功能的手段。
雖然各種例子與其他資訊已被用來解釋專利申請範圍中的觀點,但本領域具有通常知識者當使用這些例子來完成各式各樣的實作,在這些例子中特定的特徵或安排都不應用來限制專利申請範圍。更進一步來說,雖然一些標的已經用特定的語言來解釋為特定的結構性特徵即/或方法步驟,但可理解的是申請專利範圍中定義的標的並不限於所描述的特徵或動作。例如,這些功能可以分散在不同的元件或由不同的元件來執行,這些元件可以不同於上述的元件。相反的是,這些特徵與步驟是被解釋為申請專利範圍中系統與方法的元件的例子。權利項語言“一集合中的至少其中之一”指的是此集合中滿足申請專利範圍的一或多個成員。有形的電腦可讀取儲存媒體、電腦可讀取儲存裝置,或電腦可讀取記憶體裝置明確地排除了例如為暫態波形、能量、載波、電磁波以及訊號本身的媒體。
800‧‧‧方法
802、804、806、808‧‧‧步驟

Claims (20)

  1. 一種更新電腦韌體的方法,包括:在一電腦韌體容量中產生一使用者韌體容量,其中該電腦韌體容量包含一電腦裝置在一啟動程序期間所使用的一電腦韌體,並且該使用者韌體容量包括一檔案系統,該使用者韌體容量是用以儲存被加入、更新、替換或安裝的檔案或模組;取得一韌體檔案,該韌體檔案是用以更新該電腦裝置在該啟動程序期間所使用的該電腦韌體;比較該韌體檔案與該電腦韌體容量的一內容以產生一比較結果;以及基於該比較結果,將該韌體檔案儲存在該電腦韌體容量中的該使用者韌體容量,而不抹除該電腦裝置在該啟動程序期間所使用的該電腦韌體的一整體部分。
  2. 如申請專利範圍第1項所述之方法,更包括:基於該比較結果,判斷該韌體檔案不對應於目前儲存於該電腦韌體容量的一現存韌體檔案;以及其中將該韌體檔案儲存於該使用者韌體容量的步驟包括將該韌體檔案儲存為一新檔案,而不替代該電腦韌體容量與該使用者韌體容量中的一現存檔案。
  3. 如申請專利範圍第1項所述之方法,更包括:當該韌體檔案是對應於目前儲存於該電腦韌體容量的一現存韌體檔案,判斷該韌體檔案是否包括該現存韌體檔案的一新版本;以及當該韌體檔案包括該新版本時,將該現存韌體檔案替換為該韌體檔案。
  4. 如申請專利範圍第3項所述之方法,其中判斷該韌體檔案是對應於目前儲存於該電腦韌體容量的一現存韌體檔案的步驟包括:將關聯於該韌體檔案的一總體唯一識別符與關聯於儲存在該電腦韌體容量的該現存韌體檔案的總體唯一識別符做比較;以及判斷關聯於該韌體檔案的該總體唯一識別符與該現存韌體檔案對應的該總體唯一識別符為一配對。
  5. 如申請專利範圍第1項所述之方法,其中該電腦韌體是基於一統一可擴展韌體介面(unified extensible firmware interface,UEFI)平台初始化。
  6. 如申請專利範圍第1項所述之方法,其中取得該韌體檔案的步驟包括:基於一統一可擴展韌體介面平台初始化規格來產生 該韌體檔案;以及基於一安全函數來簽章該韌體檔案。
  7. 如申請專利範圍第6項所述之方法,其中簽章該韌體檔案的步驟包括:將一雜湊函數應用於該韌體檔案以產生一訊息摘要;以一金鑰加密該訊息摘要以產生一加密後的訊息摘要;以及將該加密後的訊息摘要整合至該韌體檔案以產生一簽章後的韌體檔案。
  8. 如申請專利範圍第7項所述之方法,更包括根據以下步驟來驗證該簽章後的韌體檔案:從該簽章後的韌體檔案擷取該加密後的訊息摘要與該韌體檔案;以一第二金鑰解密該訊息摘要,其中該第二金鑰是關聯於加密該訊息摘要時所使用的該金鑰;將該雜湊函數應用在從該簽章後的韌體檔案中所擷取的該韌體檔案以產生一雜湊後的韌體檔案;以及將該訊息摘要與該雜湊後的韌體檔案做比較。
  9. 如申請專利範圍第8項所述之方法,更包括:當該訊息摘要與該雜湊後的韌體檔案配對,驗證從該 簽章後的韌體檔案所擷取的該韌體檔案以產生一驗證後的韌體檔案,其中所述儲存該韌體檔案的步驟包括儲存該驗證後的韌體檔案。
  10. 如申請專利範圍第1項所述之方法,其中儲存該韌體檔案的步驟是以內頻帶(in band)的方式執行。
  11. 如申請專利範圍第1項所述之方法,其中儲存該韌體檔案的步驟是以外頻帶(out-of-band)的方式執行。
  12. 如申請專利範圍第1項所述之方法,其中儲存該韌體檔案的步驟包括將該韌體檔案載入至該電腦韌體容量且執行該電腦韌體與該韌體檔案。
  13. 如申請專利範圍第1項所述之方法,其中比較該韌體檔案與該電腦韌體容量的該內容的步驟包括:判斷該韌體檔案是對應於儲存在該電腦韌體容量的一現存韌體檔案,其中該電腦韌體容量是該電腦韌體的一部分;以及透過以下手段的至少其中之一來判斷該韌體檔案是否包括不同於該現存韌體檔案的韌體檔案版本:一預可擴 展韌體介面初始化配置器,與一驅動程序執行環境配置器。
  14. 一種更新電腦韌體的系統,包括:一處理器;以及一電腦可讀取儲存媒體,具有多個指令儲存在其中,當該些指令被該處理器執行時,使該處理器所執行的操作包括:產生一韌體檔案,該韌體檔案是用於更新該系統在一啟動程序期間所使用的一電腦韌體;在一電腦韌體容量中產生一使用者韌體容量,其中該電腦韌體容量包含該系統在該啟動程序期間所使用的該電腦韌體,該使用者韌體容量是用以儲存被加入、更新、替換或安裝的檔案或模組,該使用者韌體容量包括一檔案系統,用以將該韌體檔案儲存至該電腦韌體容量以作為該電腦韌體的一部分;比較該韌體檔案與該電腦韌體容量的一內容以產生一比較結果;以及基於該比較結果,將該韌體檔案儲存在該電腦韌體容量中的該使用者韌體容量,而不抹除該系統在該啟動程序期間所使用的該電腦韌體的一整體部分。
  15. 如申請專利範圍第14項所述之系統,該電腦可讀取儲存媒體還儲存多個額外指令,當該些額外指令被該處理器執行時,使該處理器執行的操作包括: 基於該比較結果,判斷該韌體檔案不對應於目前儲存於該電腦韌體容量的一現存韌體檔案;以及其中將該韌體檔案儲存於該使用者韌體容量的步驟包括將該韌體檔案儲存為一新檔案,而不替代該電腦韌體容量與該使用者韌體容量中的一現存檔案。
  16. 如申請專利範圍第14項所述之系統,該電腦可讀取儲存媒體還儲存多個額外指令,當該些額外指令被該處理器執行時,使該處理器執行的操作包括:基於該比較結果,判斷該韌體檔案是對應於目前儲存於該電腦韌體容量的一現存韌體檔案;判斷該韌體檔案包括該現存檔案的一新版本;以及將該現存韌體檔案替換為該韌體檔案。
  17. 如申請專利範圍第14項所述之系統,其中該電腦韌體是基於一統一可擴展韌體介面平台初始化,並且產生該韌體檔案的步驟包括透過以下步驟來簽章該韌體檔案:將一雜湊函數應用於該韌體檔案以產生一訊息摘要;以一金鑰加密該訊息摘要以產生一加密後的訊息摘要;以及將該加密後的訊息摘要整合至該韌體檔案以產生一簽章後的韌體檔案。
  18. 一種非暫態電腦可讀取儲存媒體,具有多個指令儲存在其中,當該些指令被一處理器執行時,使該處理器執行的操作包括:在一電腦韌體容量中產生一使用者韌體容量,該電腦韌體容量包含一電腦裝置在一啟動程序期間所使用的一電腦韌體,該使用者韌體容量是用以儲存被加入、更新、替換或安裝的檔案或模組,使用者韌體容量包括在該電腦韌體容量中的一檔案系統;取得一韌體檔案,該韌體檔案是用以更新該電腦裝置在該啟動程序期間所使用的該電腦韌體;比較該韌體檔案與該電腦韌體容量的一內容以產生一比較結果;以及基於該比較結果,將該韌體檔案儲存在該電腦韌體容量中的該使用者韌體容量,而不抹除該電腦裝置在該啟動程序期間所使用的該電腦韌體的一整體部分。
  19. 如申請專利範圍第18項所述之非暫態電腦可讀取儲存媒體,其中該電腦韌體是基於一統一可擴展韌體介面平台初始化,並且其中產生該韌體檔案的步驟包括透過以下步驟來簽章該韌體檔案:將一雜湊函數應用於該韌體檔案以產生一訊息摘要;以一金鑰加密該訊息摘要以產生一加密後的訊息摘要;以及將該加密後的訊息摘要整合至該韌體檔案以產生一 簽章後的韌體檔案。
  20. 如申請專利範圍第18項所述之非暫態電腦可讀取儲存媒體,其中比較該韌體檔案與該電腦韌體容量的該內容的步驟包括:判斷該韌體檔案是對應於儲存在該電腦韌體容量的一現存韌體檔案,其中該電腦韌體容量是該電腦韌體的一部分;透過以下手段的至少其中之一來判斷該韌體檔案是否包括該現存韌體檔案的新版韌體檔案:一預可擴展韌體介面初始化配置器,與一驅動程序執行環境配置器;以及當判斷該韌體檔案是該現存韌體檔案的新版韌體檔案,將該韌體檔案儲存在該使用者韌體容量。
TW104130985A 2015-07-01 2015-09-18 更新電腦韌體的系統、方法與電腦可讀取儲存媒體 TWI570592B (zh)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
TW201702929A TW201702929A (zh) 2017-01-16
TWI570592B true TWI570592B (zh) 2017-02-11

Family

ID=57684120

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104130985A TWI570592B (zh) 2015-07-01 2015-09-18 更新電腦韌體的系統、方法與電腦可讀取儲存媒體

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729069A (zh) * 2017-10-12 2018-02-23 浪潮(北京)电子信息产业有限公司 一种安全启动显卡的方法、装置、计算机可读存储介质

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106462707B (zh) * 2014-04-28 2019-06-14 英特尔公司 安全引导计算设备
US11146449B2 (en) 2016-02-19 2021-10-12 Intel Corporation Network architecture for internet-of-things device
US10310832B2 (en) 2016-02-19 2019-06-04 Intel Corporation Internet-of-things device blank
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 联想(北京)有限公司 一种固件接口代码的调整方法及电子设备
US10691444B1 (en) * 2017-09-28 2020-06-23 American Megatrends International, Llc Launching updated firmware files stored in a dedicated firmware volume
US10684843B1 (en) * 2017-09-28 2020-06-16 American Megatrends International, Llc Firmware updates using updated firmware files in a dedicated firmware volume
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 艾訊股份有限公司 計算機系統及其主板
CN109933482A (zh) * 2017-12-15 2019-06-25 艾讯股份有限公司 计算机系统及其主板
JP6833074B2 (ja) * 2018-01-31 2021-02-24 富士通フロンテック株式会社 紙葉類取扱装置および紙葉類取扱装置におけるpldのコンフィギュレーション方法
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
CN109032636A (zh) * 2018-07-17 2018-12-18 济南浪潮高新科技投资发展有限公司 一种基于加密认证bmc更新uefi固件的方法
US10867046B2 (en) * 2018-08-08 2020-12-15 Quanta Computer Inc. Methods and apparatus for authenticating a firmware settings input file
CN111832013A (zh) * 2018-08-27 2020-10-27 创新先进技术有限公司 固件升级方法及装置
US11023217B2 (en) * 2018-11-09 2021-06-01 Dell Products L.P. Systems and methods for support of selective processor microcode updates
WO2020158247A1 (ja) * 2019-01-28 2020-08-06 オムロン株式会社 セーフティシステムおよびメンテナンス方法
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 瑞昱半導體股份有限公司 周邊裝置及其驗證更新方法
CN113051544A (zh) * 2019-12-26 2021-06-29 瑞昱半导体股份有限公司 外部设备及其验证更新方法
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
CN112579133A (zh) * 2020-12-29 2021-03-30 北京深思数盾科技股份有限公司 固件程序的更新方法、装置、存储介质及电子设备
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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200928979A (en) * 2007-12-31 2009-07-01 Quanta Comp Inc System and method for updating firmware
CN101770372B (zh) * 2008-12-31 2012-12-05 亚旭电脑股份有限公司 固件更新系统、方法以及固件更新系统的固件建构方法
TW201303636A (zh) * 2011-04-08 2013-01-16 Insyde Software Corp 用於處理改變依照統一可延伸韌體介面計算裝置中之系統安全資料庫及韌體儲存區請求的系統及方法

Family Cites Families (15)

* 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
US7103641B2 (en) * 2001-06-18 2006-09-05 Intel Corporation Method and apparatus for distributing computer platform firmware across a network
US8281116B2 (en) * 2003-02-12 2012-10-02 Intel Corporation System and method for utilizing a protected/hidden region of semiconductor based memory/storage
US20040259633A1 (en) * 2003-04-16 2004-12-23 Gentles Thomas A. 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
US7774596B2 (en) * 2005-02-02 2010-08-10 Insyde Software Corporation System and method for updating firmware in a secure manner
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
CN101923473B (zh) * 2009-06-11 2014-05-28 英华达(南京)科技有限公司 嵌入式电子装置及更新其固件的方法
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
CN102830984B (zh) * 2011-06-14 2016-07-06 联想(北京)有限公司 固件更新的方法、芯片以及通信终端
CN103377063B (zh) * 2012-04-28 2016-06-22 国际商业机器公司 从遗留操作系统环境恢复到uefi预启动环境的方法和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200928979A (en) * 2007-12-31 2009-07-01 Quanta Comp Inc System and method for updating firmware
CN101770372B (zh) * 2008-12-31 2012-12-05 亚旭电脑股份有限公司 固件更新系统、方法以及固件更新系统的固件建构方法
TW201303636A (zh) * 2011-04-08 2013-01-16 Insyde Software Corp 用於處理改變依照統一可延伸韌體介面計算裝置中之系統安全資料庫及韌體儲存區請求的系統及方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729069A (zh) * 2017-10-12 2018-02-23 浪潮(北京)电子信息产业有限公司 一种安全启动显卡的方法、装置、计算机可读存储介质

Also Published As

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

Similar Documents

Publication Publication Date Title
TWI570592B (zh) 更新電腦韌體的系統、方法與電腦可讀取儲存媒體
US20220035923A1 (en) Technologies for secure hardware and software attestation for trusted i/o
US9015455B2 (en) Processsor integral technologies for BIOS flash attack protection and notification
KR101359841B1 (ko) 신뢰성 있는 부트 최적화를 위한 방법 및 장치
US9881162B2 (en) System and method for auto-enrolling option ROMS in a UEFI secure boot database
KR101066779B1 (ko) 컴퓨팅 장치의 보안 부팅
JP5001818B2 (ja) ファームウェア装置更新システムおよびその方法
US7853804B2 (en) System and method for secure data disposal
US20080165971A1 (en) Trusting an Unverified Code Image in a Computing Device
WO2018157570A1 (zh) Pos终端软件升级方法、pos终端和存储介质
KR20150107826A (ko) 시스템 온 칩 디바이스들에서의 키 폐기
US11281768B1 (en) Firmware security vulnerability verification service
US20220398321A1 (en) Data management
JP2011210129A (ja) 記憶装置、データ処理装置、登録方法、及びコンピュータプログラム
US9870472B2 (en) Detecting malign code in unused firmware memory
CN110874467B (zh) 信息处理方法、装置、系统以及处理器、存储介质
US20230198775A1 (en) Memory device with secure boot updates and self-recovery
US20090327686A1 (en) Updating A Basic Input/Output System ('BIOS') Boot Block Security Module In Compute Nodes Of A Multinode Computer
CN113190880B (zh) 基于对安全协处理器的背书信息的分析确定是否对计算设备执行动作
US11989305B2 (en) Automated update of a customized secure boot policy
US11907375B2 (en) System and method for signing and interlocking a boot information file to a host computing system
US20240028734A1 (en) Automated update of a customized secure boot policy
US20240103837A1 (en) Seamless and secure motherboard replacement system and method
US9202058B1 (en) Root volume encryption mechanism in para-virtualized virtual machine
JP2019133220A (ja) 完全性検証装置、完全性検証システム、完全性検証方法、及び、完全性検証プログラム