TWI598814B - 用於管理及診斷配備有統一可延伸韌體介面(uefi)相容韌體的計算裝置之系統與方法 - Google Patents

用於管理及診斷配備有統一可延伸韌體介面(uefi)相容韌體的計算裝置之系統與方法 Download PDF

Info

Publication number
TWI598814B
TWI598814B TW103109079A TW103109079A TWI598814B TW I598814 B TWI598814 B TW I598814B TW 103109079 A TW103109079 A TW 103109079A TW 103109079 A TW103109079 A TW 103109079A TW I598814 B TWI598814 B TW I598814B
Authority
TW
Taiwan
Prior art keywords
firmware
call
uefi
service call
variable
Prior art date
Application number
TW103109079A
Other languages
English (en)
Other versions
TW201447759A (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 TW201447759A publication Critical patent/TW201447759A/zh
Application granted granted Critical
Publication of TWI598814B publication Critical patent/TWI598814B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices

Landscapes

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

Description

用於管理及診斷配備有統一可延伸韌體介面(UEFI)相容韌體的計算裝置之系統與方法 【相關申請案】
本申請案主張2013年3月15日申請、標題為「用於管理及診斷配備有統一可延伸韌體介面(UEFI)相容韌體的計算裝置之系統與方法(System and Method for Managing and Diagnosing a Unified Extensible Firmware Interface (UEFI)-Compliant Computing Device)」的美國臨時專利申請案第61/790,818號的權益,其全部內容以引用方式併入本文中。
本發明係關於用於管理及診斷配備有統一可延伸韌體介面(UEFI)相容韌體的計算裝置之系統與方法。
計算裝置藉由包括於該裝置內之韌體來初始 化,且此韌體提供一系列軟體服務,該等軟體服務促進作業系統(OS)之啟動以及提供在該作業系統已啟動之後繼續可用的此等服務之子集。韌體係為由系統製造商供應且已經被寫入至唯讀記憶體(ROM)模組上之軟體,ROM模組包括(但不限於)ROM、PROM、EPROM、EEPROM及快閃記憶體(在下文統稱為「ROM」)。除了其他作用之外,韌體亦負責計算裝置之操作直至可執行開機程序為止,該開機程序將用於計算裝置之作業系統載入至記憶體中。一旦載入,作業系統便負責計算裝置之正常操作,但出於安全性及其他原因,在作業系統之載入後提供某些服務可需要將控制自作業系統轉變回至韌體。
統一可延伸韌體介面(UEFI)為非營利產業團體所建立之規範,其詳述作業系統與諸如(但不限於)個人電腦(PC)之計算裝置所包含的韌體間之程式設計介面。UEFI規範描述了一組工具,計算裝置可藉由該等工具而以一組織方式自「電力施加(power-applied)」狀態移動至「完全操作(fully operational)」。該規範告知所要結果,但故意不指明內部韌體實施。UEFI韌體規範替換先前由產業所使用且通常已知為舊版BIOS(基本輸入輸出系統)的早期作業系統(OS)/韌體介面。
當實施於計算裝置中時,用於UEFI韌體之機器碼及由韌體使用之所有永久資料駐留於唯讀記憶體(ROM)中。在許多狀況下,ROM為一稱作快閃ROM之電可抹除矽裝置。快閃ROM具有以下特性:其可藉由電命 令而抹除,且個別元件可接著被寫入,且該裝置將無限期地保持資料。當首次將電力施加至計算裝置時,該系統執行稱作重設之程序,該程序將狀態清除至已知條件且開始韌體之執行。該韌體係由該快閃ROM或在該計算裝置中的其他ROM讀取。
該韌體之操作係可受快閃ROM或其他裝置內的可更新儲存器所控制。此用於選項及資料的可更新儲存器通常係依據關於UEFI變數的UEFI規範章節而組織。UEFI規格中的變數係定義為包含識別變數名稱資訊加上屬性(金鑰)以及一或多個相關資料位元組(值)的金鑰/值對(key/value pairs)。該變數名稱係由二個部分組成,第一為一電腦編碼字串而第二為一128位元全球唯一識別碼(GUID)。GUID係用以分配該變數名稱空間,讓用於不同目的之相同名稱字串的重複使用在統計上是不大可能的。在其用途中,該等變數儲存了於該韌體環境與在操作系統環境中執行的代理人/應用程式(agents/applications)之間傳遞的資料。該等變數係可通過一UEFI規範定義之介面而由作業系統環境存取,該介面使用了在UEFI規範中定義作為GetVariable及SetVariable功能之韌體服務呼叫,該等功能分別截取一變數值或設定儲存於韌體中的一指定變數值。GetVariable及SetVariable係使用於系統啟動的韌體階段中,此外,GetVariable及SetVariable呼叫的使用係已為現今許多作業系統支援而在該作業系統啟動之後使用。UEFI變數的子集係與額外的保護屬性一起產生,並 稱作為鑑認變數。在一配備有統一UEFI相容韌體的計算裝置中的該等鑑認變數係意欲被保護不受軟體修改,除了由保存有一更新簽章金鑰的授權代理人之外。
本發明之該等實施例提供了一配備有統一可延伸韌體介面(UEFI)相容韌體的計算裝置,其經由一使用於存取UEFI變數的經定義的韌體介面的擴展而附加功能性。一表現該延伸UEFI變數介面的系統係可使用為該韌體所識別之唯一參數而呼叫,並可允許特別的管理或診斷功能被存取。此方式允許標準韌體功能的新擴展可通過現有韌體介面而存取,不需改變提供變數存取服務(Variable Access service)的作業系統程式碼。實施例可使用鑑認變數以提供對於該特別介面的安全性、使用該韌體介面以提供對於診斷的存取、且使用該韌體介面以提供對於系統管理的存取。
在一實施例中,一用於管理及診斷一配備有統一可延伸韌體介面(UEFI)相容韌體的計算裝置之電腦實施方法包含經由一標準UEFI變數韌體介面的擴展,自一在一作業系統環境內執行之軟體代理人接收一韌體服務呼叫。該韌體服務呼叫包含一延伸變數參數。該韌體服務呼叫中之一命令、一時間標記及一交談識別碼(session ID)之至少一者係以加密形式被接收。該延伸變數參數係識別,且根據該識別而重新導向該韌體服務呼叫之處置。利用一 由該韌體儲存之金鑰解密該命令、該時間標記及該交談識別碼之至少一者,該解密於該韌體服務呼叫進行處理之前鑑別該呼叫代理人。該韌體服務呼叫係於重新導向及解密後被處理,且一處理的結果係回傳至該呼叫軟體代理人。該回傳的結果係用於對該計算裝置執行一管理或診斷功能之至少一者。
在另一實施例中,一配備有UEFI相容韌體之計算裝置係包含保存該韌體之唯讀記憶體(ROM)及一保存一作業系統之記憶體。該計算裝置亦包含一處理器,該處理器係配置以執行使該計算裝置進行以下動作之指令:經由一標準UEFI變數韌體介面的擴展,自一在一作業系統環境內執行之軟體代理人接收一韌體服務呼叫。該韌體服務呼叫係以一延伸變數參數做成。該韌體服務呼叫中之一命令、一時間標記及一交談識別碼之至少一者係以加密形式被接收。該指令的執行進一步使該計算裝置識別該延伸變數參數,並根據該識別重新導向該韌體服務呼叫的處置。利用一由該韌體儲存之金鑰解密該命令、該時間標記及該交談識別碼之至少一者,該解密於該韌體服務呼叫進行處理之前鑑別該呼叫代理人。該韌體服務呼叫係於重新導向及解密後處理,且一處理的結果係回傳至該呼叫作業系統模組。該結果係用以對該計算裝置執行一管理或診斷功能之至少一者。
在一實施例中,一用於管理及診斷一配備有統一可延伸韌體介面(UEFI)相容韌體的計算裝置之電腦實 施方法係包含經由一標準UEFI變數韌體介面的擴展,自一在一作業系統環境內執行之軟體代理人接收一韌體服務呼叫。該韌體服務呼叫包含一延伸變數參數。該延伸變數參數係識別,並根據該識別而重新導向該韌體服務呼叫之處置。該韌體服務呼叫係於該重新導向之後進行處理,且一處理的結果係回傳至該呼叫軟體代理人。該回傳的結果係用以對該計算裝置執行一管理或診斷功能之至少一者。
100‧‧‧電腦裝置
110‧‧‧OS
112‧‧‧代理人
114‧‧‧外掛程式模組
150‧‧‧UEFI相容韌體
160‧‧‧變數服務模組
170‧‧‧特別服務模組
180‧‧‧硬體
420‧‧‧交談識別碼
500‧‧‧計算裝置
510‧‧‧作業系統
512‧‧‧代理人
514‧‧‧外掛程式模組
520‧‧‧UEFI驅動程式
522‧‧‧變數服務連結
524‧‧‧特別服務模組
550‧‧‧UEFI韌體
560‧‧‧變數服務模組
併入本說明書中且構成本說明書之一部分的附圖說明本發明之一或多個實施例,且與描述一起幫助解釋本發明。在圖式中:圖1描繪適於實踐本發明之實施例的例示性環境;圖2描繪本發明之一實施例利用一延伸UEFI變數介面執行之例示性步驟的序列;圖3描繪本發明之一實施例執行一經鑑認的特別韌體呼叫執行之例示性步驟的序列;圖4描繪一例示性經鑑認資料佈局;以及圖5描繪一適於施行本發明一使用執行時間UEFI驅動程式的實施例之例示性替代環境。
本發明的實施例對一配備有UEFI相容韌體的 計算裝置提供增進的管理及診斷能力,而不需改變作業系統(OS)的程式碼。通過一以韌體為基礎的方式,係可於改善管理及診斷能力的同時,允許對於在OS環境中執行之應用程式及其他軟體代理人所可用之韌體特徵集的快速改變。這些能力係通過一在系統上具有UEFI相容韌體之延伸韌體變數介面的產生而增進。鑑認變數係使用於在處置該等韌體服務呼叫之前藉由鑑別該等呼叫者而對該延伸介面提供安全性。
在一實施例中,若一在計算裝置的作業系統環境中執行之管理應用程式需要已為韌體所知的低階系統資訊,該管理應用程式係可使用標準GetVariable介面的擴展而自韌體中的特別服務請求資訊。可藉由通常傳遞至含有唯一供應商GUID(Vendor GUID)及唯一變數名稱(Variable Name)的GetVariable功能的參數值之獨特組合而識別經請求的資訊。GUID係可根據試圖確保其值是唯一的且因而有高度機率不會有其他標準GetVariable呼叫意外地使用到識別此擴展的GUID之程序而構建。在另一實施例中,一希望在韌體等級改變設定之系統管理應用程式係可使用該延伸SetVariable介面以請求韌體改變其設定。相似地,在診斷的區域中,一在該OS環境中執行之診斷應用程式或其他工具係可請求一由該計算裝置的韌體在下次重新啟動期間所執行的特別測試。該診斷工具係可請求該韌體以一經由本發明之延伸SetVariable介面所做成的請求而執行該測試。
藉由本發明的實施例所擴展之標準定義UEFI變數服務介面係已為各種作業系統支援多年,並包含對GetVariable及SetVariable韌體服務呼叫的支援。實施例從而藉由產生一遍及不同變數的API(應用程式介面)而對新功能性的增添提供一彈性機制。就系統管理而言,變數介面的使用係如同系統管理的一主要元件在審閱及修改系統設定般地自然。本發明的實施例不需要可在不使用系統管理中斷(SMI)觸發系統管理模式(SMM)轉變以提供更多功能的新硬體。
本發明的實施例對含有GetVariable及SetVariable的經定義的UEFI韌體變數服務呼叫使用了特別參數以存取系統的管理及診斷。系統管理功能包含(但不限於)獲得詳細清單及/或平台資訊、更新韌體、改變韌體設定及控制平台的啟動。診斷功能包含(但不限於):在平台上執行測試、查詢測試結果、查詢平台錯誤及設定下次啟動時所要執行的測試。使用在韌體變數服務呼叫的特別參數係可包含一特別的GUID值,以避免與該變數介面的標準用途相衝突。本發明的實施例所使用的韌體變數介面係可用於平台作業的所有階段期間,包含OS執行時間。例如,在最新的Windows版本下,呼叫SetFirmwareEnvironmentVariable()係可用於Windows API之中。以相同方式,GetFirmwareEnvironmentVariable()係可用於讀取一UEFI變數。
應理解到雖然本文所述之說明性實施例描述 了GetVariable及SetVariable韌體變數服務呼叫的用途,其他對於本文所述之延伸韌體介面之韌體變數服務呼叫係可在不偏離本發明範圍下使用,從而GetVariable及SetVariable呼叫之運用之例示性說明亦可適用於其他韌體變數服務呼叫(例如,UpdateCapsule)。
圖1描繪了一適用實施本發明一實施例之例示性環境。配備有UEFI相容韌體150之電腦裝置100係執行OS 110。軟體代理人、應用程式或其他可執行程序(在下文統稱為「代理人(agent)」)112係執行於OS環境中。代理人112的實例係為一管理應用程式,儘管代理人112亦可為一診斷工具或某些其他可執行的程式碼。在一實施例中,外掛程式模組114係可提供一於非平台相依型代理人112與UEFI相容韌體150之間的轉換。執行於作業系統中的代理人112係可使用或不使用外掛程式模組114而對使用延伸變數韌體服務介面之UEFI相容韌體150做出一韌體服務呼叫,延伸變數韌體服務介面係藉由UEFI相容韌體提供的變數服務模組160而暴露。變數服務模組160識別了在韌體服務呼叫中的指定參數。例如,變數服務模組160可識別一在VendorGuid參數內所傳遞的特別GUID,VendorGuid參數為GetVariable或SetVariable呼叫的一部分。該識別觸發對該呼叫的特別處置。變數服務模組160係依據該識別將該韌體服務呼叫的處置控制傳遞至替代韌體程式碼,諸如在UEFI相容韌體150中的特別服務模組170。特別服務模組170係根據一 包含在重新導向的服務呼叫內之指定命令而提供諸如系統管理及診斷之特別服務。例如,在一實施例中,命令係可包含在GetVariable或SetVariable服務呼叫的資料部分中。為提供指令給該韌體,該服務呼叫中的數值資料包含可為該韌體理解的編碼資料(諸如一特定的請求命令),加上額外的交換識別(諸如時間標記或交談識別碼)。取決於服務呼叫的性質,特別服務模組170可自硬體180擷取資料或傳送命令至硬體180。在一實施例中,由於UEFI變數服務模組提供一鑑認選擇,該鑑認資料係可用於驗證該介面的呼叫者的權限,以於處理該服務呼叫之前存取在該系統中受保護的功能。例如,該鑑認係可為該呼叫者可執行之一已簽章散列。
UEFI規範中定義之GetVariable服務呼叫係使用多種經定義的參數。按規範GetVariable服務呼叫係定義為:EFI_STATUS GetVariable(IN CHAR16 *VariableName, IN EFI_GUID *VendorGuid, OUT UINT32 *Attributes OPTIONAL, IN OUT UINTN *DataSize, OUT VOID *Data); EFI_STATUS 傳統上,使用此定義而執行於作業系統中欲擷取一特定韌體變數值之應用程式或其他軟體代理人會使用GetVariable對該韌體呼叫,並提供含有變數的指定名稱(變數名稱)之參數以及變數(VendorGuid)範圍之唯一識別碼。其他由該呼叫者提供的參數會包含輸入的傳回資料緩衝區的大小或輸出的傳回資料的大小(DataSize),以及應該回傳的變數內容之緩衝區(Data)。該等參數亦可選擇性地包含一記憶體位置,以回傳該變數的屬性掩碼(Attributes bitmask)。
本發明的實施例係可做成此經定義的韌體介面使用。例如,一於OS環境中執行之軟體代理人係可呼叫GetVariable並提供該供應商GUID參數中之一特別且唯一的經定義的GUID。該特別的GUID係作為變數服務模組160的旗標,並藉由不同於原本處置該呼叫的程式碼之韌體程式碼而致使該韌體服務呼叫的處置重新導向。此外,該資料欄位係可使用一命令而填入,而由特別服務模組170在進行該經重新導向韌體服務呼叫時使用。例如,該命令可被讀取並回傳一系統管理或診斷所需、否則不會提供給以OS為基礎的代理人之特定硬體設定值。
如上所述,在一實施例中,在該韌體服務呼叫中之特別GUID參數使用只會觸發該韌體服務呼叫處置的重新導向,且該特別服務模組可使用一在資料或其他參數欄位中的命令以處理該韌體服務呼叫。在一替代實施例中,該特定的特別GUID值之識別係藉由經配置根據該特 別GUID值處理該呼叫之一變數服務模組及/或該等特別服務模組,不但可觸發了該呼叫的特別處置,也觸發了該特別處置的性質(即,特別GUID值A致使處置C且特別GUID值B致使處置D)。
與GetVariable服務呼叫相似,在UEFI規範中定義之SetVariable服務呼叫使用了多種經定義的參數。例如,SetVariable服務呼叫係可表示為:SetVariable(IN CHAR16 *VariableName, IN EFI_GUID *VendorGuid, IN UINT32 Attributes, IN UINTN DataSize, IN VOID *Data ); 傳統上,使用此定義而執行於作業系統中欲設定一特定韌體變數值之應用程式或其他軟體代理人會使用SetVariable對該韌體呼叫,並提供含有變數的名稱(變數名稱)之參數以及變數(VendorGuid)範圍之唯一識別碼。其他由該呼叫者提供的參數會包含資料緩衝區的大小(DataSize)以及變數(Data)更新內容所傳送到的緩衝區,並包含一記憶體位置以供應該變數的屬性掩碼(Attributes bitmask)。
與上述的GetVariable使用相似,本發明的實施例係可於自執行於OS環境中的一代理人呼叫本發明之 延伸介面時讓此經定義的韌體介面使用。例如,OS環境中的代理人可在該呼叫中提供一特別GUID代替供應商GUID。該特別的GUID係作為變數服務模組160的旗標,並致使該韌體變數服務呼叫的處置重新導向。此外,該資料欄位係可使用一命令而填入,而由特別服務模組170在處理該呼叫時使用。例如,在一實施例中,若系統正在執行Linux OS且一系統管理軟體代理人欲改變韌體設定,諸如啟用PXE啟動,該代理人可使用該特別GUID以及於資料參數中傳遞之正確命令而做出一UEFI SetVariable呼叫。變數服務模組160係藉由傳遞該命令至特別服務模組170而對該特別GUID的識別做出反應。特別服務模組170修改韌體設定並接著回傳至該標準變數程式碼。該變數程式碼會回傳至該代理人。若該特別SetVariable呼叫有錯誤回傳,在一實施例中該代理人可做出一類似的特別服務以擷取更多的詳細錯誤資訊。其他系統管理功能係可以類似方式執行。
除管理功能之外,本發明之延伸介面亦可使用至擴展一電腦裝置的診斷能力。例如,在一實施例中,若一診斷應用程式欲在下次啟動期間執行一診斷測試,諸如一記憶體測試,該應用程式可做成一UEFI SetVariable呼叫。SetVariable呼叫包含了代替該供應商GUID參數之特別GUID以觸發特別的處置,以及該應用程式希望在資料參數中處理之命令(pseudo-code=“set memory test to run next boot”)。變數服務模組160識別該特別GUID並將該 命令傳遞至該具有處理診斷測試設定的能力之特別服務模組170。特別服務模組170可修改所請求的診斷測試設定,接著回傳至標準變數程式碼。該變數程式碼接著回傳至代理人。在一實施例中,若回傳一特別SetVariable呼叫的錯誤,該診斷應用程式係可做成一類似的特別呼叫以擷取更多詳細的錯誤資訊。其他診斷功能係可以類似方式執行。
圖2描繪了本發明之一實施例利用一延伸UEFI變數介面執行之例示性步驟的序列。該序列係起始於以一代理人在OS環境中使用一延伸參數(諸如一特別GUID)做成一韌體服務呼叫以擷取所欲資訊X(步驟202)。該呼叫係做給由UEFI相容韌體150的變數服務模組160而暴露之GetVariable介面(步驟204)。若該變數服務模組識別出該延伸參數,該特別GUID(或其他延伸參數)觸發一呼叫至一特別服務韌體模組以讀取並接著回傳由該服務呼叫所請求的資訊X的值(步驟208)。不包含該延伸參數的一般韌體服務係可由該變數服務模組正常處理(步驟206)。
該特別韌體介面的安全性是很重要的。若不採取特別措施,對於一般的Variable API而言,特別功能上唯一的安全性係由該作業系統所提供。某些特別的功能將會需要鑑認資料。此類鑑別資訊在一SetVariable呼叫期間係可作為資料的一部分而傳遞。然而,若對GetVariable呼叫需要有特別的保護,當呼叫者未傳送任 何資料至GetVariable時,傳遞該鑑認資料係困難的。為處理此問題,本發明的實施例係可提供額外的安全性以避免本發明之延伸韌體變數服務介面的未經授權使用。
圖3描繪了本發明之一實施例執行一經鑑認的特別韌體呼叫執行之例示性的步驟序列。在一實施例中,執行於OS中的代理人已於平台部署期間產生一特別的經鑑認變數,其稱作(例如)「SystemManagementKey(系統管理金鑰)」。該經鑑認變數係可使用一為該作業系統所保護以防止其他代理人對該經鑑認變數做任何修改之私用金鑰而簽章。此受保護的變數含有使用於授權延伸功能的資料,該等功能使用了一已知為公開/私密金鑰加密的密碼使用法技術。在此例示性序列中,該變數資料可含有一由經授權OS等級使用者代理人所產生及為其已知的公用/私用金鑰對之公用金鑰。該金鑰係可儲存在一由下列兩個來自UEFI規範的GUID中任一者所指定的結構中:EFI_CERT_RSA2048_GUID或EFI_CERT_X509_GUID。第一個結構係可使露出的公用金鑰被儲存,而第二個結構係可使一X.509憑證被儲存。在相關格式中該公用金鑰資料係緊隨著GUID。
經鑑認的特別韌體變數服務呼叫序列係於一經授權代理人欲開啟對該韌體的交談時開始,並呼叫GetVariable以擷取一隨機交談識別碼(步驟302)。該呼叫係做給由UEFI相容韌體150之變數服務模組160所暴露的GetVariable介面(步驟304)。一旦佈告該特別GUID (步驟305),該呼叫係以特別處置處理,其處理中該交談識別碼係在一由韌體使用SystemManagementKey公用金鑰執行之一般稱作簽章之程序中加密。已簽章的交談識別碼係回傳至呼叫者(步驟306)。
執行於作業系統內之管理應用程式係使用其保密私用金鑰解密該回應,藉以由使用的回傳的資料中擷取交談識別碼(步驟310)。經授權的代理人可接著藉由簽章SetVariable資料(包含了時間標記及交談識別碼)並使用與擷取該交談識別碼相同之私用金鑰而傳送一系統管理命令至該韌體。在一實施例中,該代理人可使用該金鑰簽章某些命令、時間標記、交談識別碼或其他資料但少於其全部。在一實施例中,一交談期間內的時間標記僅向前移動。在一實施例中,交談識別碼420係可設在變數資料404的起始處,如圖4所示。該經授權的代理人可接著呼叫在參數欄位中包含該已簽章命令之SetVariable(步驟312)。SetVariable呼叫被接受(步驟314)且若該韌體變數服務識別出該特別GUID(步驟314),該呼叫係被分派為特別處置。在該特別處置中,該命令、交談識別碼及時間標記係經驗證以確定其是否已由原本用於簽章SystemManagementKey變數的私用金鑰所簽章。在其他方法之中,這可藉由簽章該結合有命令、交談識別碼及時間標記的散列而實施,並接著與已儲存之先前命令、交談識別碼及時間標記散列進行比較。在任何情況下,若驗證了該已解密的命令及交談識別碼,接著該呼叫應用程式被授 權存取系統管理功能。若時間標記不正確,可忽略該命令並回傳一安全違規(Security Violation)錯誤。若該驗證成功,接著會執行所請求的命令,且先回傳一處理結果至一般變數服務模組160,並接著至呼叫代理人112(步驟316)。應注意到,可於一單一交談期間做成多個經鑑認呼叫。在一實施例中,若一對於該特別SetVariable呼叫的錯誤回傳,該代理人可做成一類似的特別呼叫以擷取更多的詳細錯誤資訊。
當該經授權的代理人欲關閉與韌體的交談,其可使用以SystemManagementKey私用金鑰簽章的交談識別碼呼叫SetVariable(步驟320)。SetVariable呼叫被接受(步驟322)且若該特別GUID經識別過(步驟323),該呼叫係由韌體分派為特別處置。該命令、交談識別碼及時間標記係經驗證以確定其是否為SystemManagementKey私用金鑰所簽章,如果是,該交談會被關閉(步驟324)。應理解,其他系統管理或診斷功能係可以類似方式藉由本發明的實施例執行。
以上雖然描述了一使用公用及私用金鑰的特定解密及加密序列,應理解其他的序列及其他種類金鑰(諸如對稱式金鑰)的使用亦落入本發明之範圍內且本發明並未限制於圖3及本文其他處所述之序列及特定金鑰。
藉由使用關於圖3所討論方式之公用及私用金鑰而提供的額外安全性可有助於防止多種不同類型的未授權修改(稱作為攻擊)。例如,該韌體變數服務呼叫的驗 證有助於防止交談攻擊、交談攻擊的接替(replay)、中間人攻擊及對GetVariable的竊取攻擊。
在另一實施例中,該代理人所需的資料係可使用一匹配GetVariable呼叫而擷取。雖然沒有GetVariable呼叫的鑑別,該資料係可使用一預共享公用金鑰而加密。該代理人接著在做成GetVariable呼叫後,可使用該預共享金鑰的私鑰部分進行解密。或者,GetVariable呼叫係可藉由附加該授權資料(簽章)至該變數名稱而鑑別。該簽章係可使用SystemManagementKey私用金鑰而產生,以對編序為{variable name,timestamp}之散列簽章。該簽章係可依據UEFI規範之EFI_CERT_RSA2048_SHA1_GUID類型,且包含256位元組(十六進位格式)。
圖5描繪一適於施行本發明一使用執行時間UEFI驅動程式的實施例之例示性替代環境。與上述圖1相似,一計算裝置500包含作業系統510及執行於該作業系統環境中之軟體代理人512。計算裝置500亦可包含外掛程式模組514,以經由UEFI介面提供一於非平台相依型代理人512與UEFI韌體550之間的轉換。然而,不若圖1中在韌體變數服務模組560內對特別韌體服務提供支援,而是該對於特別韌體服務的支援係可由執行時間UEFI驅動程式520的方式提供。執行時間UEFI驅動程式520係可由磁碟或網路載入且不需建立於該平台上。當UEFI計算裝置500啟動時,執行時間驅動程式520係載 入計算裝置500上的記憶體內。
於此替代性實施例中,當代理人512或外掛程式模組514請求特別韌體服務時,延伸參數(諸如VendorGuid參數中的特別GUID)係在一變數服務呼叫內使用於執行時間UEFI驅動程式520。於此實施例中,所有的SetVariable呼叫係由該經載入的SetVariable驅動程式所檢查。執行時間UEFI驅動程式520中的變數服務連結522識別了延伸參數(例如,特別GUID),並呼叫特別服務模組524以處理該服務呼叫。特別服務模組524係可提供諸如診斷及系統管理的服務。若需要標準變數服務,變數服務連結522反而接著將呼叫傳遞至韌體550中的標準變數服務模組560。再者,如上所述,係可利用GetVariable和SetVariable的經鑑認格式讓只有被信任的呼叫者能存取該韌體的特別功能。藉由讓執行執間UEFI驅動程式520取代由標準UEFI相容韌體所提供之變數服務呼叫,可對現存之配備有UEFI相容韌體之計算裝置增加新的功能性,即使該現存之配備有UEFI相容韌體之計算裝置已發送給消費者。應注意執行時間UEFI驅動程式520及UEFI韌體550可來自於不同的公司。
在一實施例中,藉由使用經鑑認變數的構築,可鑑認使用者並根據憑證而分派特權。例如,在該計算裝置中對某些硬體元件的存取係可被限制於管理者所需的子集中。UEFI韌體定義允許經鑑認變數內容的改變在最初由一被信任的來源經由變數簽章驗證過程而產生時進 行驗證。此可延伸至驗證特別的延伸變數呼叫的來源。產生已簽章變數呼叫的過程係於本文之範圍之外。
本發明之實施例之部分或全部可提供作為體現於一或多個非暫時性媒體上或其中的一或多個電腦可讀程式或程式碼。媒體可為(但不限於)硬碟、緊密光碟、數位影音光碟、ROM、PROM、EPROM、EEPROM、快閃記憶體、RAM或磁帶。大體而言,電腦可讀程式或程式碼可以任何計算語言來實施。
由於可在不偏離本發明之範疇的情況下進行某些改變,因此意欲含於上文描述或展示於附圖中之所有內容經解譯為說明性而非按照字面意義解譯。此項技術之實踐者將認識到諸圖中所描繪之步驟序列及架構可在不偏離本發明之範疇的情況下更改,且本文中所含的說明為本發明之大量可能描述中之單一實例。
本發明之實例實施例之以上描述提供說明及描述,但並不意欲為詳盡的或將本發明限於所揭示之精確形式。修改及變化鑒於以上教示而為可能的或可自本發明之實踐獲取。舉例而言,雖然已描述一系列動作,但可在與本發明之原理一致的其他實施中修改動作之次序。此外,可並行執行非相依動作。

Claims (23)

  1. 一種用於管理及診斷一配備有統一可延伸韌體介面(UEFI)相容韌體的計算裝置之電腦實施方法:經由一標準UEFI變數韌體介面的擴展,自一在一作業系統環境內執行之軟體代理人接收一韌體服務呼叫,該韌體服務呼叫係以一延伸變數參數以及於該韌體服務呼叫中以加密形式被接收之一命令、一時間標記及一交談識別碼之至少一者做成;識別該延伸變數參數;根據該延伸變數參數的識別,觸發一處置該韌體服務呼叫之重新導向;利用一由該韌體儲存之金鑰解密該命令、該時間標記及該交談識別碼之至少一者,該解密於該韌體服務呼叫進行處理之前鑑別該呼叫代理人;於該重新導向及該解密後處理該韌體服務呼叫;以及回傳該處理之一結果至該呼叫代理人,該結果係用以對該計算裝置執行一管理或診斷功能之至少一者。
  2. 如申請專利範圍第1項所述之方法,其中該交談識別碼係以加密形式於接收該韌體服務呼叫之前藉由該韌體提供至該呼叫代理人,且該以加密形式被接收之命令、時間標記及交談識別碼之至少一者係由一金鑰所簽章,該金鑰亦使用於解密接收自該韌體的該經加密交談識別碼。
  3. 如申請專利範圍第2項所述之方法,其中該使用於解密該經加密交談識別碼的該金鑰係由一用於該計算裝 置的作業系統所保護。
  4. 如申請專利範圍第2項所述之方法,其中一使用於加密該經交談識別碼的該金鑰係儲存在一於平台部署期間所產生之鑑認變數內。
  5. 如申請專利範圍第1項所述之方法,其中該延伸變數參數係包含一預先指定的GUID值。
  6. 如申請專利範圍第1項所述之方法,更包括:以一由該計算裝置的該韌體提供的UEFI變數服務模組接收該韌體服務呼叫,且重新導向該韌體服務呼叫以藉由另一韌體模組根據該延伸變數參數的識別進行處置。
  7. 如申請專利範圍第1項所述之方法,更包括:以一執行時間UEFI驅動程式接收該韌體服務呼叫,該執行時間UEFI驅動程式連結一呼叫至一UEFI變數服務,並根據該經識別的延伸變數參數而重新導向進行處置之該韌體服務呼叫。
  8. 如申請專利範圍第1項所述之方法,其中該UEFI定義之變數韌體介面係為GetVariable及SetVariable之其中一者。
  9. 一種保存用於管理及診斷一配備有統一可延伸韌體介面(UEFI)相容韌體的計算裝置之指令之非暫時性電腦可讀取媒體,該指令在執行時係使該計算裝置:經由一標準UEFI變數韌體介面的擴展,自一在一作業系統環境內執行之軟體代理人接收一韌體服務呼叫,該韌體服務呼叫係以一延伸變數參數以及於該韌體服務呼叫 中以加密形式被接收之一命令、一時間標記及一交談識別碼之至少一者做成;識別該延伸變數參數;根據該延伸變數參數的識別觸發一處置該韌體服務呼叫之重新導向;利用一由該韌體儲存之金鑰解密該命令、該時間標記及該交談識別碼之至少一者,該解密於該韌體服務呼叫進行處理之前鑑別該呼叫代理人;於該重新導向及該解密後處理該韌體服務呼叫;以及回傳該處理之一結果至該呼叫代理人,該結果係用以對該計算裝置執行一管理或診斷功能之至少一者。
  10. 如申請專利範圍第9項所述之媒體,其中該交談識別碼係以加密形式於接收該韌體服務呼叫之前藉由該韌體提供至該呼叫代理人,且該以加密形式被接收之命令、時間標記及交談識別碼之至少一者係由一金鑰所簽章,該金鑰亦使用於解密接收自該韌體的該經加密交談識別碼。
  11. 如申請專利範圍第10項所述之媒體,其中該使用於解密該經加密交談識別碼的該金鑰係由一用於該計算裝置的作業系統所保護。
  12. 如申請專利範圍第9項所述之媒體,其中一使用於加密該經交談識別碼的該金鑰係儲存在一於平台部署期間所產生之鑑認變數內。
  13. 如申請專利範圍第9項所述之媒體,其中該延伸變數參數係包含一預先指定的GUID值。
  14. 如申請專利範圍第9項所述之媒體,其中該指令在執行時係進一步使該計算裝置:以一由該計算裝置的該韌體提供的UEFI變數服務模組接收該韌體服務呼叫,且重新導向該韌體服務呼叫以藉由另一韌體模組根據該延伸變數參數的識別進行處置。
  15. 如申請專利範圍第9項所述之媒體,其中該指令在執行時係進一步使該計算裝置:以一執行時間UEFI驅動程式接收該韌體服務呼叫,該執行時間UEFI驅動程式連結一呼叫至一UEFI變數服務,並根據該經識別的延伸變數參數而重新導向進行處置之該韌體服務呼叫。
  16. 如申請專利範圍第9項所述之媒體,其中該UEFI定義之變數韌體介面係為GetVariable及SetVariable之其中一者。
  17. 一種配備有統一可延伸韌體介面(UEFI)相容韌體之計算裝置,包括:保存該韌體之唯讀記憶體(ROM);保存一作業系統之記憶體;以及一處理器,係配置以執行使該計算裝置進行以下動作之指令:經由一標準UEFI變數韌體介面的擴展,自一在一作業系統環境內執行之軟體代理人接收一韌體服務呼叫,該韌體服務呼叫係以一延伸變數參數以及於該韌體服務呼叫中以加密形式被接收之一命令、一時間標記及一交談識別 碼之至少一者做成;識別該延伸變數參數;根據該延伸變數參數的識別重新導向該韌體服務呼叫;利用一由該韌體儲存之金鑰解密該命令、該時間標記及該交談識別碼之至少一者,該解密於該韌體服務呼叫進行處理之前鑑別該呼叫代理人;於該重新導向及加密後處理該韌體服務呼叫;以及回傳該處理之一結果至該呼叫代理人,該結果係用以對該計算裝置執行一管理或診斷功能之至少一者。
  18. 如申請專利範圍第17項所述之計算裝置,更包括:一執行時間UEFI驅動程式,該執行時間UEFI驅動程式連結一呼叫至一UEFI變數服務,並根據該延伸變數參數而重新導向進行處置之該韌體服務呼叫。
  19. 如申請專利範圍第17項所述之計算裝置,其中該UEFI定義之變數韌體介面係為GetVariable及SetVariable之其中一者。
  20. 如申請專利範圍第17項所述之計算裝置,其中該交談識別碼係以加密形式於接收該韌體服務呼叫之前藉由該韌體提供至該呼叫代理人,且該以加密形式被接收之韌體服務呼叫、時間標記及交談識別碼之至少一者係由一金鑰所簽章,該金鑰亦使用於解密接收自該韌體的該經加密交談識別碼。
  21. 如申請專利範圍第20項所述之計算裝置,其中該使用於解密該經加密交談識別碼的該金鑰係由一用於該計算裝置的作業系統所保護。
  22. 如申請專利範圍第20項所述之計算裝置,其中一使用於加密該經交談識別碼的該金鑰係儲存在一於平台部署期間所產生之鑑認變數內。
  23. 一種用於管理及診斷一配備有統一可延伸韌體介面(UEFI)相容韌體的計算裝置之電腦實施方法:經由一標準UEFI變數韌體介面的擴展,自一在一作業系統環境內執行之軟體代理人接收一韌體服務呼叫,該韌體服務呼叫係以一延伸變數參數以及該韌體服務呼叫之至少一者做成;識別該延伸變數參數;根據該延伸變數參數的識別觸發一處置該韌體服務呼叫之重新導向;於該重新導向後處理該韌體服務呼叫;以及回傳該處理之一結果至該呼叫代理人,該結果係用以對該計算裝置執行一管理或診斷功能之至少一者。
TW103109079A 2013-03-15 2014-03-13 用於管理及診斷配備有統一可延伸韌體介面(uefi)相容韌體的計算裝置之系統與方法 TWI598814B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201361790818P 2013-03-15 2013-03-15

Publications (2)

Publication Number Publication Date
TW201447759A TW201447759A (zh) 2014-12-16
TWI598814B true TWI598814B (zh) 2017-09-11

Family

ID=51534093

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103109079A TWI598814B (zh) 2013-03-15 2014-03-13 用於管理及診斷配備有統一可延伸韌體介面(uefi)相容韌體的計算裝置之系統與方法

Country Status (3)

Country Link
US (1) US9477848B2 (zh)
TW (1) TWI598814B (zh)
WO (1) WO2014150478A1 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9208105B2 (en) 2013-05-30 2015-12-08 Dell Products, Lp System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support
JP6054908B2 (ja) * 2014-05-22 2016-12-27 レノボ・シンガポール・プライベート・リミテッド 変数セットを修復する方法、コンピュータ・プログラムおよびコンピュータ
US9817671B2 (en) * 2014-06-30 2017-11-14 Microsoft Technology Licensing, Llc. Rule-based activation of behaviors in an extensible software application
US9537822B2 (en) * 2014-07-30 2017-01-03 Dell Products, L.P. UEFI and operating system driver methods for updating MAC address in LAN-based NIC
US10146942B2 (en) * 2015-02-24 2018-12-04 Dell Products, Lp Method to protect BIOS NVRAM from malicious code injection by encrypting NVRAM variables and system therefor
US9734311B1 (en) * 2015-03-17 2017-08-15 American Megatrends, Inc. Secure authentication of firmware configuration updates
CN106203129A (zh) * 2015-04-30 2016-12-07 联想企业解决方案(新加坡)有限公司 用于确保数据安全性的方法、设备和装置
EP3292671B1 (en) 2015-05-06 2022-10-12 Hewlett Packard Enterprise Development LP Securely and reliably transferring startup script
KR102336663B1 (ko) * 2015-05-13 2021-12-07 삼성전자 주식회사 서버 시스템 및 이의 관리 방법
US10218510B2 (en) * 2015-06-01 2019-02-26 Branch Banking And Trust Company Network-based device authentication system
US9612887B2 (en) 2015-06-26 2017-04-04 Intel Corporation Firmware-related event notification
US10521216B2 (en) 2017-01-17 2019-12-31 Oracle International Corporation Unified extensible firmware interface updates
US10430206B1 (en) 2017-03-14 2019-10-01 American Megatrends International, Llc Multi-user hidden feature enablement in firmware
US11036408B2 (en) 2017-03-26 2021-06-15 Oracle International Corporation Rule-based modifications in a data storage appliance monitor
US10063699B1 (en) * 2017-04-18 2018-08-28 EMC IP Holding Company LLC Method, apparatus and computer program product for verifying caller identification in voice communications
KR20180129302A (ko) * 2017-05-26 2018-12-05 삼성에스디에스 주식회사 보안 키보드의 실행 방법 및 이를 수행하기 위한 장치 및 시스템
US11836254B2 (en) 2017-09-14 2023-12-05 Insyde Software Corp. System and method for securing a series of firmware function calls using session tokens
US10901821B2 (en) 2017-10-31 2021-01-26 Insyde Software Corp. System and method for sending restful commands to UEFI firmware using UEFI variable services
US10642603B2 (en) 2018-01-16 2020-05-05 Nutanix, Inc. Scheduling upgrades in distributed computing systems
US11321494B2 (en) 2018-03-12 2022-05-03 Hewlett-Packard Development Company, L.P. Platform configurations
US10838754B2 (en) 2018-04-27 2020-11-17 Nutanix, Inc. Virtualized systems having hardware interface services for controlling hardware
US10726133B1 (en) * 2019-02-04 2020-07-28 Dell Products L.P. Securely loading UEFI images at runtime
US11347856B2 (en) * 2019-05-24 2022-05-31 Dell Products L.P. Bios method to block compromised preboot features
US11861011B2 (en) * 2019-06-25 2024-01-02 ZPE Systems, Inc. Secure boot process
KR20210008216A (ko) 2019-07-11 2021-01-21 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
TWI788594B (zh) * 2019-10-07 2023-01-01 系微股份有限公司 安全執行可延伸韌體應用程式的方法及計算機設備
WO2022019910A1 (en) * 2020-07-23 2022-01-27 Hewlett-Packard Development Company, L.P. Read protection for uefi variables
US11416615B2 (en) * 2020-09-02 2022-08-16 Dell Products, L.P. Configuring trusted remote management communications using UEFI
CN114296754A (zh) * 2021-11-30 2022-04-08 深圳市广和通无线股份有限公司 芯片平台升级方法及相关装置
CN114327650B (zh) * 2021-12-17 2023-08-18 苏州浪潮智能科技有限公司 一种SetVariable服务实现方法、装置及介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6963970B2 (en) * 2002-04-29 2005-11-08 Hewlett-Packard Development Company, L.P. System and method for executing a fast reset of a computer system
US7237102B2 (en) * 2002-10-30 2007-06-26 Intel Corporation Methods and apparatus for configuring hardware resources in a pre-boot environment without requiring a system reset
US8100323B1 (en) * 2002-12-26 2012-01-24 Diebold Self-Service Systems Division Of Diebold, Incorporated Apparatus and method for verifying components of an ATM
US7320052B2 (en) * 2003-02-10 2008-01-15 Intel Corporation Methods and apparatus for providing seamless file system encryption and redundant array of independent disks from a pre-boot environment into a firmware interface aware operating system
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
US7146488B2 (en) 2003-04-16 2006-12-05 Hewlett-Packard Development Company, L.P. System and method for expanding processor functionality
US20050010811A1 (en) * 2003-06-16 2005-01-13 Zimmer Vincent J. Method and system to support network port authentication from out-of-band firmware
US7512956B1 (en) * 2003-08-14 2009-03-31 Hewlett-Packard Development Company, L.P. System and method for supporting non-standard procedure calls
US7165170B2 (en) 2003-09-12 2007-01-16 Intel Corporation System and method for firmware to export pre-boot data into the operating system runtime environment
US7207039B2 (en) * 2003-12-24 2007-04-17 Intel Corporation Secure booting and provisioning
US7574593B2 (en) * 2004-12-03 2009-08-11 Hewlett-Packard Development Company, L.P. Persistent memory manipulation using EFI
US8418226B2 (en) * 2005-03-18 2013-04-09 Absolute Software Corporation Persistent servicing agent
US7743072B2 (en) * 2006-07-28 2010-06-22 American Megatrends, Inc. Database for storing device handle data in an extensible firmware interface environment
US20080196043A1 (en) * 2007-02-08 2008-08-14 David Feinleib System and method for host and virtual machine administration
US8327415B2 (en) * 2008-05-30 2012-12-04 Intel Corporation Enabling byte-code based image isolation
US8510422B2 (en) * 2009-09-30 2013-08-13 Dell Products L.P. Systems and methods for extension of server management functions
CN102236621B (zh) * 2010-04-28 2014-12-24 国网浙江富阳市供电公司 计算机接口信息配置***及方法
US8428929B2 (en) * 2010-09-30 2013-04-23 Intel Corporation Demand based USB proxy for data stores in service processor complex
US8484631B2 (en) * 2011-03-30 2013-07-09 Phoenix Technologies Ltd. Supporting hardware configuration changes in a UEFI firmware component
US9372699B2 (en) 2011-04-08 2016-06-21 Insyde Software Corp. System and method for processing requests to alter system security databases and firmware stores in a unified extensible firmware interface-compliant computing device
US8924737B2 (en) * 2011-08-25 2014-12-30 Microsoft Corporation Digital signing authority dependent platform secret
US9110744B2 (en) * 2011-09-02 2015-08-18 Phoenix Technologies Ltd. Secure application firmware environment for X86 and non-X86 processors
WO2013095573A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Activation and monetization of features built into storage subsystems using a trusted connect service back end infrastructure
TWI464583B (zh) * 2012-03-02 2014-12-11 Wistron Corp 取得觸發功能之指令的方法
TW201337760A (zh) * 2012-03-09 2013-09-16 Phoenix Tech Ltd 呼叫基本輸入輸出系統之韌體執行時間服務之方法

Also Published As

Publication number Publication date
WO2014150478A1 (en) 2014-09-25
US20140281577A1 (en) 2014-09-18
US9477848B2 (en) 2016-10-25
TW201447759A (zh) 2014-12-16

Similar Documents

Publication Publication Date Title
TWI598814B (zh) 用於管理及診斷配備有統一可延伸韌體介面(uefi)相容韌體的計算裝置之系統與方法
US10931451B2 (en) Securely recovering a computing device
US7243230B2 (en) Transferring application secrets in a trusted operating system environment
US7305553B2 (en) Manifest-based trusted agent management in a trusted operating system environment
US8291480B2 (en) Trusting an unverified code image in a computing device
US8560857B2 (en) Information processing apparatus, a server apparatus, a method of an information processing apparatus, a method of a server apparatus, and an apparatus executable program
US7159240B2 (en) Operating system upgrades in a trusted operating system environment
KR20170085503A (ko) 암호화된 템플릿으로부터 암호화된 가상 머신의 안전한 생성 기법
US20080165952A1 (en) Secure Booting A Computing Device
TW201516733A (zh) 用以核對uefi認證變量變化之系統及方法
CN109150811B (zh) 一种实现可信会话的方法及装置、计算设备
CN117453343A (zh) 虚拟机度量、机密计算认证方法、设备、***及存储介质
CN114491565B (zh) 固件安全启动方法、装置、计算设备和可读存储介质
JP6741236B2 (ja) 情報処理装置
WO2023169409A1 (zh) 模型调用方法、装置及存储介质