TWI779515B - 用於判定有無篡改統一可擴展韌體介面(uefi)之方法及系統、及相關非暫時性電腦可讀媒體 - Google Patents

用於判定有無篡改統一可擴展韌體介面(uefi)之方法及系統、及相關非暫時性電腦可讀媒體 Download PDF

Info

Publication number
TWI779515B
TWI779515B TW110108976A TW110108976A TWI779515B TW I779515 B TWI779515 B TW I779515B TW 110108976 A TW110108976 A TW 110108976A TW 110108976 A TW110108976 A TW 110108976A TW I779515 B TWI779515 B TW I779515B
Authority
TW
Taiwan
Prior art keywords
driver
hash
computing device
uefi
execution
Prior art date
Application number
TW110108976A
Other languages
English (en)
Other versions
TW202147157A (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 TW202147157A publication Critical patent/TW202147157A/zh
Application granted granted Critical
Publication of TWI779515B publication Critical patent/TWI779515B/zh

Links

Images

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

用於安全啟動統一可擴展韌體介面(UEFI)兼容裝置的技術被描述。在一實例中,可以在啟動一運算裝置期間檢測與該運算裝置之一硬體組件相關聯之一驅動程式的執行。基於該檢測,可以計算該UEFI之一系統表的一第一驅動程式雜湊,其中該系統表係儲存該運算裝置及UEFI服務之組配細節的一種資料結構。隨後,可基於該驅動程式執行完成的檢測來計算該系統表的一第二驅動程式雜湊。該第一驅動程式雜湊與該第二驅動程式雜湊然後可被比較以判定該UEFI的該系統表是否被篡改。

Description

用於判定有無篡改統一可擴展韌體介面(UEFI)之方法及系統、及相關非暫時性電腦可讀媒體 發明領域
本發明係有關於運算裝置安全啟動技術。
發明背景
運算裝置包括多個硬體組件,這些硬體組件需要在操作之前進行組配。諸如統一可擴展韌體介面(UEFI)之類的現代系統韌體允許在一運算裝置的啟動期間執行與此類硬體組件相關聯的驅動程式。驅動程式之這種方式的執行便利於該等硬體組件在該運算裝置啟動期間進行組配及初始化。
發明概要
依據本發明之一實施例,係特地提出一種方法,其包含有:在具有統一可擴展韌體介面(UEFI)之一運算裝置的啟動期間,檢測與該運算裝置之一硬體組件相關聯之一驅動程式的執行;計算該UEFI之一系統表的一第一驅動程式雜湊,其中該系統表係儲存該運算裝置及UEFI服務之組配細節的一種資料結構;檢測該驅動程式之該執行的完成;在該驅動程式之該執行的完成時,計算該系統表的一第二驅動程式雜湊;以及把該第一驅動程式雜湊與該第二驅動程式 雜湊進行比較以判定有無篡改該UEFI的該系統表。
100:運算裝置
102:檢測引擎
104:雜湊引擎
106:判定引擎
202:處理器
204:記憶體
206:引擎
208:修改引擎
210:資料
212:雜湊資料
214:判定資料
216:其他資料
300:方法
302~310:方塊
400:方法
402~418:方塊
500:系統環境
502:非暫時性電腦可讀媒體
504:處理資源
506:通訊鏈路
508:網路
510:資料源
512:指令
本文參照該等附圖提供了詳細的描述,其中:圖1根據本技術主題的一實例圖示出一種用於判定有無篡改該統一可擴展韌體介面(UEFI)的運算裝置;圖2根據本技術主題的另一個實例圖示出一種用於判定有無篡改該UEFI的運算裝置;圖3根據本技術主題的一實例圖示出一種用於判定有無篡改該統一可擴展韌體介面(UEFI)的方法;圖4根據本技術主題的一實例圖示出一種用於安全啟動該UEFI兼容運算裝置的方法;以及圖5根據本技術主題的一實例圖示出一種系統環境,該系統環境實現了用於判定有無篡改在該運算裝置中該UEFI的一種非暫時性電腦可讀媒體。
較佳實施例之詳細說明
通常,該統一可擴展韌體介面(UEFI)藉由在執行之前驗證與各種硬體組件相關聯的該等驅動程式來確保該運算裝置的安全啟動。一驅動程式的該驗證係藉由驗證與該驅動程式相關聯的一數位簽章來被執行,其中該數位簽章在該驅動程式的開發過程中與該驅動程式鏈結並且指出了該驅動程式的真實性。
與一硬體組件相關聯的該驅動程式通常是以二進制格式被提供並且沒有任何原始程式碼與其相關聯,其中該驅動程式的該二進制格式可由伴隨該驅動程式的該數位簽章來驗證。因此,在該驅動程式的開發過程中,如果該驅動程式的原始程式碼例如被一惡意程式碼篡改,然後對其進行數位簽署,則可能無法確定該驅動程式的完整性。因此,該驅動程式的該惡意程式碼可能損害該 UEFI以及儲存在該運算裝置上使用者資料的安全性。
根據本技術主題的示例實現方式,用於安全啟動一UEFI兼容運算裝置的技術被描述。
在操作中,當啟動一運算裝置時,用於組配該運算裝置之一硬體組件之一驅動程式的執行被檢測。基於該檢測,該UEFI之一系統表的一第一雜湊被計算,其中該系統表係儲存該運算裝置及各種UEFI服務之組配細節的一種資料結構。然後該驅動程式被允許執行以組配用於操作的該硬體組件。一旦完成了該硬體組件的該組配,便會計算該系統表的一第二雜湊並將其與該第一雜湊進行比較。然後判定該第一雜湊與該第二雜湊是否相等。
如果該第一雜湊與該第二雜湊不相等,則可被判定該系統表已被篡改。因此,指出該系統表已被篡改的一通知可被發布。在這種情況下,對該系統表所做的修改可以被回復,並且該驅動程式會被阻止做任何進一步的執行。因此,在該運算裝置的一後續啟動期間,可以阻止該驅動程式的執行,並且可以在不初始化與該驅動程式相關聯之該硬體組件的情況下啟動該運算裝置。
在另一方面,如果該第一雜湊與該第二雜湊被發現係相等的,則可判定該系統表沒被修改。在這種情況下,該運算裝置可以進行一正常的啟動。
因此,該等上述技術藉由與該運算裝置之一硬體組件相關聯的一驅動程式,檢測到對該UEFI之該系統表所做之任何的修改,從而確保了該UEFI之該系統表之該等內容的完整性。另外,阻止該驅動程式進一步的執行避免了在該運算裝置之一後續啟動期間中該惡意程式碼的執行,從而確保了該運算裝置的一安全啟動。
本文參考圖1至圖5進一步描述了該等上述技術。應被注意到的是,該說明及該等附圖僅示出了本技術主題的該等原理以及本文所述的實例,並不應被解釋為對本技術主題的限制。因此,應被理解的是,可以設計出雖然未在本 文中被明確描述出或展示出,但可體現出本技術主題之該等原理的各種設置。此外,本文中所引用之本技術主題的原理、方面、及實現方式之所有的陳述及其具體示例旨在涵蓋其之等同的形式。
圖1根據本技術主題的一實例圖示出一種用於判定有無篡改統一可擴展韌體介面(UEFI)的運算裝置100。該運算裝置100的實例可以包括但不侷限於膝上型電腦、桌上型電腦、平板電腦、及智慧型手機。
該運算裝置100可包括可在該運算裝置100之作業系統(OS)之前的初始化期間初始化的多個硬體組件。此外,該等多個組件中的每一個可相應地具有與其相關聯的一驅動程式,其中該等驅動程式的每一個可對應於多個回呼函式。
在一說明性的實例中,與該運算裝置100之一第一硬體組件相關聯的一第一驅動程式可被使用來把資料發佈到一先進組態與電力介面(ACPI)表中,其中在一個實例中,該ACPI表可以儲存該運算裝置100的硬體組配資訊及電源管理資訊。在該實例中,要被發佈到該ACPI表中的該資料在執行之後對於與該運算裝置100之一第二硬體組件相關聯的一第二驅動程式可能變得可用。在這種情況下,該第一驅動程式可以註冊一回呼函式以監控該資料的可用性。因為該資料的該可用性可被判定為真,因此可以觸發一事件以調用該第一驅動程式的該回呼函式。因此,可以執行該第一驅動程式的該回呼函式,並且該資料可被發布在該ACPI表中。
該運算裝置100可以包括一檢測引擎102,以確定與該運算裝置100之一硬體組件相關聯之一驅動程式的一回呼函式的執行。該回呼函式的執行可以在該運算裝置100的該OS之前的初始化期間的一驅動程式執行環境(DXE)階段中被檢測到。
基於檢測到該回呼函式的執行,該運算裝置100的一雜湊引擎104 可以計算該UEFI之一系統表的一第一回呼函式雜湊,其中該系統表係儲存該運算裝置及各種UEFI服務之組配細節的一種資料結構。
該雜湊引擎104可隨後檢測該回呼函式之該執行的完成。基於該檢測,該雜湊引擎104可以計算該驅動程式之一第二回呼函式雜湊。
然後,該運算裝置100的一判定引擎106可以把該第一回呼函式雜湊與該第二回呼函式雜湊進行比較,以判定該系統表是否已被篡改。因此,由於執行了該回呼函式而對該系統表所做之任何的修改可被識別出,從而確保了儲存在該系統表中該內容的完整性。
圖2根據本技術主題的另一個實例圖示出一種用於判定有無篡改該UEFI的該運算裝置100。如先前所述,該運算裝置100的實例可以包括但不侷限於桌上型電腦、膝上型電腦、智慧型手機、以及平板電腦。
該運算裝置100可以包括一處理器202及被耦合到該處理器202的一記憶體204。在該等附圖中所示之該等各種元件的該等功能,包括有被標記為「處理器」之任何功能方塊,可以透過使用專用硬體以及能夠執行指令之硬體來被提供。當由一處理器來提供時,該等功能可以由一單一專用處理器、由一單一共享處理器、或由複數個各別處理器來提供,其中一些可被共享。此外,明確地使用術語「處理器」不應被解讀為僅指能夠執行指令的硬體,並且可隱含地包括但不侷限於數位信號處理器(DSP)硬體、網路處理器、特定應用積體電路(ASIC)、現場可規劃閘陣列(FPGA)。其他的硬體,標準的及/或定制的,也可以被耦合到處理器202。
該記憶體204可以包括任何電腦可讀取媒體,包括有例如依電性記憶體(例如,隨機存取記憶體(RAM))、及/或非依電性記憶體(例如,ROM、EPROM、快閃記憶體、等等)。
此外,該運算裝置100還可以包括引擎206,該引擎206可以包括該 檢測引擎102、該雜湊引擎104、該判定引擎106、以及一修改引擎208。
在一實例中,該(等)引擎206可以被實現為一硬體、韌體以及其之一種組合。在本文所描述的實例中,可以以幾種不同方式來實現硬體及韌體的這種組合。例如,該引擎的該韌體可以是儲存在一非暫時性機器可讀儲存媒體上的處理器可執行指令,並且用於該引擎的該硬體可以包括一處理資源(例如,被實現為一單一處理器或係多個處理器的一種組合),以執行此類指令。
根據本技術主題的實現方式,該機器可讀取儲存媒體可以儲存指令,當該等指令由該處理資源執行時,實現該引擎的該等功能。在這樣的實現方式中,該運算裝置100可以包括用於儲存該等指令的機器可讀取儲存媒體以及用以執行指令的該處理資源。
在本技術主題的一實例中,機器可讀取儲存媒體可以位於在該運算裝置100內。然而,在其他的實例中,該機器可讀取儲存媒體可以位於一不同的位置,但可由運算裝置100及該處理器202來存取。
該運算裝置100更可包括資料210,其中該資料210作用為儲存可由該(等)引擎206來提取、處理、接收、或產生之資料的一儲存庫。該資料210可以包括雜湊資料212、判定資料214、以及其他資料216。在一實例中,該資料210可被儲存在記憶體204中。
在本技術主題的一實例實現方式中,具有該UEFI之該運算裝置的該OS之前的初始化被劃分為多個階段,即安全(SEC)階段、EFI之前(PEI)階段、驅動程式執行環境(DXE)階段、啟動裝置選擇(BDS)階段、以及暫態系統負載(TSL)階段。該OS之前的初始化可以從該SEC階段開始,其中可以執行初始操作以確保在該運算裝置100被供電或重啟之後用於該處理器、晶片組、以及母板初始化之該韌體的完整性。然後,該OS之前的初始化可進行到該PEI階段,其中該PEI階段提供了一種載入及調用用於該運算裝置100之該處理器、晶片組、以及母 板之特定初始組配程序的一標準化方法。該PEI階段是主要目的係確定該運算裝置100的啟動路徑並初始化及分配包含該DXE基礎及體系結構協定以允許該DXE階段實例化之一最小量的RAM及永久記憶體。
在該DXE階段,執行該運算裝置100之各種硬體組件的初始化。該等各種硬體組件的該初始化可借助於藉由執行與該等各種硬體組件每一個相關聯之不同的驅動程式。在一實例中,一DXE調度程序有助於發現及執行不同的驅動程式。
在本技術主題的一實例中,該DXE調度程序可被耦合到檢測引擎102,其中在該DXE階段,該檢測引擎102檢測與該運算裝置100之一硬體組件相關聯之一該驅動程式的執行。該驅動程式可以是一DXE驅動程式及一UEFI驅動程式中之一個。
基於該檢測引擎102對該驅動程式執行的該檢測,該雜湊引擎104可以產生一系統管理中斷(SMI),其中該SMI的該產生致使在該DXE階段期間觸發一系統管理模式(SMM)。該SMM的該觸發可以把該處理器202的一狀態保存在被指定為系統管理RAM(SMRAM)之該RAM的一安全區域中。
此外,該雜湊引擎104可以基於對該驅動程式執行的該檢測來計算該UEFI之該系統表的一第一驅動程式雜湊,並且可以把該第一該驅動程式雜湊儲存在該雜湊資料212中。如先前所解釋過的,該系統表係儲存該運算裝置及各種UEFI服務之組配細節的一種資料結構。
該等各種UEFI服務可以包括UEFI啟動服務、UEFI運行時服務、以及協定服務。可以透過被包括在該系統表中的UEFI啟動服務表及UEFI運行時服務表分別存取該等UEFI啟動服務及該等UEFI運行時服務。此外,該等協定服務係相關函式及資料欄位的群組,其可被使用來為諸如控制台、磁碟及網路之類的裝置提供軟件抽象。
在執行該驅動程式時,可以把指向該系統表的一指標傳遞給該驅動程式。把該指標傳遞給該驅動程式允許該驅動程式可以存取該運算裝置的該組配資訊以及該等各種UEFI服務,以初始化與之相關聯的該硬體組件。
要注意的是,一旦計算了該系統表的該第一驅動程式雜湊並將其儲存在雜湊資料212中,就可以終止該SMM並執行該驅動程式。
一旦該驅動程式的該執行被完成,該雜湊引擎104可以重新產生該SMI,從而在該DXE階段重新觸發該SMM。隨後,該雜湊引擎104可以計算該系統表的一第二驅動程式雜湊,並且可以把其儲存在雜湊資料212中。在一實例中,該雜湊資料212可被儲存在該SMRAM中以防止從該SMM之外存取該第一驅動程式雜湊及該第二驅動程式雜湊。
該雜湊引擎104可進一步被耦合到該判定引擎106,其中判定引擎106可以比較該系統表的該第一驅動程式雜湊與第二驅動程式雜湊,並把該比較結果儲存在該判定資料214中。在一實例中,該判定資料214也可被儲存在該SMRAM中。
可以比較該第一驅動程式雜湊與該第二驅動程式雜湊以識別在該驅動程式的執行期間是否對該系統表有進行任何的修改。
如果該判定引擎106判定該第一驅動程式雜湊與該第二驅動程式雜湊相等,則該判定引擎106可判定未對該系統表進行任何修改。隨後,可判定該DXE調度程序是否還有其他驅動程式要載入及執行。如果沒有其他的驅動程式被識別出要執行,則該DXE階段可被結束,而該控制可被傳遞到用於載入該OS之該等後續的階段。
在另一方面,如果該判定引擎106判定該第一驅動程式雜湊與該第二驅動程式雜湊不相等,則該判定引擎106可判定該驅動程式的該執行已經篡改該UEFI的該系統表。在這一種情況下,該驅動程式可以被阻擋。此外,在一實例 中,可以在該運算裝置100後續的啟動期間阻止該驅動程式的該執行。
隨後,該修改引擎208可以撤消在執行該驅動程式期間對該系統表所做的任何修改。
一旦該驅動程式的該執行被完成,該DXE調度程序可進一步判定是否有與該運算裝置之任何其他組件相關聯之任意更多的驅動程式需要執行。
在一實例中,該DXE調度程序可能未識別出與任何其他硬體組件相關聯之任何其他驅動程式需要執行。在這種情況下,被耦合到該運算裝置的一視訊輸出裝置可被識別。隨後,指出有篡改該系統表的一通知以及該驅動程式的該等詳細資訊可被顯示,然後重新啟動該運算裝置。
在另一個實例中,該DXE調度程序可以發現並執行與該運算裝置100之另一個硬體組件相關聯之另一個驅動程式的一回呼函式。在該實例中,被耦合到該DXE調度程序的該檢測引擎102可以檢測到該回呼函式的執行。
基於該檢測,該雜湊引擎104可以致使該SMM的該觸發。然後,該雜湊引擎104可以計算該系統表之一第一回呼函式雜湊,並將其儲存在雜湊資料212中。隨後,該SMM可被終止,並且該回呼函式的該執行可被完成。
一旦完成該回呼函式的執行,該雜湊引擎104可以重新觸發該SMM,並且可以計算該系統表的一第二回呼函式雜湊。之後,該第二回呼函式雜湊可被儲存在該雜湊資料212中。
該判定引擎106可以把該第一回呼函式雜湊與該第二回呼函式雜湊進行比較以判定該回呼函式的執行有無篡改該UEFI的該系統表。
如果該判定引擎106判定該第一回呼函式雜湊與該第二回呼函式雜湊是相等的,則該判定引擎106可判定並沒有對該UEFI之該系統表的修改。
在另一方面,如果該判定引擎106判定該第一回呼函式雜湊與該第二回呼函式雜湊是不相等的,則該判定引擎106可判定該回呼函式的執行已經篡 改了該系統表。因此,另一個驅動程式會被阻止。隨後,該修改引擎208可以在該回呼函式的該執行期間撤消對該系統表的該等修改。
該DXE調度程序可再次地識別是否仍存在有與任何其他硬體組件相關聯之任何其他驅動程式需要執行。在一實例中,該DXE調度程序可能沒有識別出與任何其他硬體組件相關聯之任何其他驅動程式需要執行。在這種情況下,可以判定是否有一視訊輸出裝置被耦合到該運算裝置100。如果未發現有視訊輸出裝置被耦合到該運算裝置100,則指出有對該UEFI攻擊的一通知可藉由使被安裝在該運算裝置100上的一發光二極體(LED)閃爍來顯示,然後重新啟動該運算裝置100。
圖3根據本技術主題的一實例圖示出一種用於判定有無篡改該UEFI的方法300。儘管該方法300可被實現在各式各樣的系統中,但是為了便於說明,本文僅參考該上述運算裝置100提供了對該方法300的描述。在該方法300中所描述的該順序並不意圖把其理解為係限制性的,並且可以以任意順序結合任意數量之該等描述的方法方塊來實現該方法300,或一替代的方法。
可被理解的是,該方法300的方塊可以在該運算裝置100中被執行。該方法300的該等方塊可基於儲存在一非暫時性電腦可讀媒體中的指令來被執行,如將容易被理解的。該非暫時性電腦可讀媒體可以包括例如數位記憶體、磁性儲存媒體諸如磁碟及磁帶、硬碟、或光學可讀數位資料儲存媒體。
在方塊302,可以在啟動具有統一可擴展韌體介面(UEFI)之一運算裝置期間檢測與該運算裝置之一硬體組件相關聯之驅動程式的執行。該驅動程式可以是一驅動程式執行環境(DXE)驅動程式及一UEFI驅動程式中之一個。在一實例中,該驅動程式的該執行可以由該運算裝置100的一檢測引擎102來進行檢測。
在方塊304,該UEFI之一系統表的一第一驅動程式雜湊被計算,其 中該系統表係儲存該運算裝置及UEFI服務之組配細節的一種資料結構。在一實例中,該運算裝置100的一雜湊引擎104可以計算該系統表的該第一驅動程式雜湊。
在方塊306,可以檢測該驅動程式之該執行的完成。在一實例中,該檢測引擎102可以檢測該驅動程式之該執行的該完成。
在方塊308,基於對該驅動程式之該執行完成的該檢測,可以計算該系統表的一第二驅動程式雜湊。在一實例中,該第二驅動程式雜湊可由該雜湊引擎104來計算。
在方塊310處,可以把該第一驅動程式雜湊與該第二驅動程式雜湊進行比較以判定有無篡改該UEFI的該系統表。在一實例中,該判定引擎106可能判定有篡改該UEFI的該系統表。如果判定UEFI的該系統表已被篡改,則被耦合到該運算裝置100的一視訊輸出裝置可被識別,並且可以在該視訊輸出裝置上顯示出提供有該驅動程式之該等細節的一通知。否則,該方法可前進到在該運算裝置上進行一作業系統的載入。
圖4根據本技術主題的一實例圖示出一種用於安全啟動一UEFI兼容運算裝置的方法400。儘管該方法400可被實現在各式各樣的系統中,但是為了便於說明,本文僅參考該上述運算裝置100提供了對該方法400的描述。在該方法400中所描述的該順序並不意圖把其理解為係限制性的,並且可以以任意順序結合任意數量之該等描述的方法方塊來實現該方法400,或一替代的方法。
可被理解的是,該方法400的方塊可以在該運算裝置100中被執行。該方法400的該等方塊可以基於儲存在一非暫時性電腦可讀媒體中的指令來被執行,如將容易被理解的。該非暫時性電腦可讀媒體可以包括例如數位記憶體、磁性儲存媒體諸如磁碟及磁帶、硬碟、或光學可讀數位資料儲存媒體。
在方塊402,在具有統一可擴展韌體介面(UEFI)之一運算裝置的啟 動期間與該運算裝置之一硬體組件相關聯的一驅動程式的執行可以在一驅動程式執行階段(DXE)階段中被檢測。該驅動程式可以是一驅動程式執行環境(DXE)驅動程式及一UEFI驅動程式中之一個。基於與該硬體相關聯之該驅動程式的該檢測,一系統管理中斷(SMI)可被產生,從而在該DXE階段內觸發一系統管理模式(SMM)。該SMM的該觸發可以在被指定為系統管理RAM(SMRAM)之該RAM的一安全區域中保存該運算裝置之一處理器的一狀態。在一實例中,該驅動程式的該執行可由該運算裝置100的一檢測引擎102來檢測。
在方塊404,計算該UEFI之一系統表的一第一驅動程式雜湊,其中該系統表係儲存該運算裝置及各種UEFI服務之組配細節的一種資料結構。該等各種UEFI服務可以包括UEFI啟動服務、UEFI運行時服務、以及協定服務。該第一驅動程式雜湊可被儲存在該RAM的該安全區域中。隨後,可以終止該SMM。在一實例中,該UEFI之該系統表的該第一驅動程式雜湊可由該運算裝置100的一雜湊引擎104來計算。
在方塊406,該系統表之該第二驅動程式雜湊之該執行的完成被檢測。基於該檢測,該SMI被重新產生,從而重新觸發該SMM。此後,計算該系統表之一第二驅動程式雜湊並把其儲存在該SMRAM中。在一實例中,該第二驅動程式雜湊可由該雜湊引擎104來計算。
在方塊408,可以從該SMRAM中提取出該系統表的該第一驅動程式雜湊及該第二驅動程式雜湊並把它們彼此進行比較。該比較的結果然後可被儲存在該SMRAM中,隨後終止該SMM。在一實例中,該第一驅動程式雜湊及該第二驅動程式雜湊可由該運算裝置100的一判定引擎106來進行比較。
隨後,在方塊410,與該運算裝置之另一個硬體組件相關聯之另一驅動程式之一回呼函式的執行可被檢測。在一實例中,對該回呼函式之該執行的該檢測可由該檢測引擎102來檢測。
在方塊412,基於該檢測,可以在該DXE階段內重新觸發該SMM模式。然後,該系統表的一第一回呼函式雜湊可被計算並被儲存在該SMRAM中,然後終止該SMM。該回呼函式然後可被執行。
在方塊414,該回呼函式之執行的完成可被檢測。基於該檢測,可以重新觸發該SMM,並且可以計算一第二回呼函式雜湊。然後,該第二回呼函式可以被儲存在該SMRAM中。在一實例中,該第二回呼函式雜湊可以由該雜湊引擎104來計算。
在方塊416,可以把該第一回呼函式雜湊與該第二回呼函式雜湊進行比較。然後可以把上述比較的結果儲存在該SMRAM中。在一實例中,該判定引擎106可把該第一回呼函式雜湊與該第二回呼函式雜湊進行比較。
在方塊418,基於該第一驅動程式雜湊與該第二驅動程式雜湊以及該第一回呼函式雜湊與該第二回呼函式雜湊中至少一組的該比較結果,可以判定是否已經篡改了該UEFI的該系統表。在一實例中,該判定引擎106可以判定有無篡改該UEFI的該系統表。
在一實例中,如果發現該第一驅動程式雜湊與該第二驅動程式雜湊並不相等,則可判定該驅動程式的該執行導致該系統表的該篡改。因此,該驅動程式可能會被阻擋。在該實例中,如果發現該第一回呼函式雜湊與該第二回呼函式雜湊不相等,則可以進一步判定該回呼函式的該執行也導致了該系統表的該篡改。因此,該回呼函式也可能被阻擋。在這種情況下,在該運算裝置100的後續啟動期間,該驅動程式及其他驅動程式之該回呼函式的該執行可能會被阻擋。
圖5根據本技術主題的一實例圖示出一種系統環境500,該系統環境500實現了一種用於判定有無篡改在一運算裝置中UEFI的非暫時性電腦可讀媒體502。在一實例實現方式中,該系統環境500可以是一運算裝置,諸如該運算 裝置100。該系統環境500包括透過一通訊鏈路506被通訊地耦合到該非暫時性電腦可讀媒體502的一處理資源504。在一實例中,該處理資源504從該非暫時性電腦可讀媒體502提取並執行電腦可讀取指令。
該非暫時性電腦可讀媒體502可以是例如一內部記憶體裝置或一外部記憶體裝置。在一實例實現方式中,該通訊鏈路506可以是一直接通訊鏈路,諸如任意的記憶體讀/寫介面。在另一個實例實現方式中,該通訊鏈路506可以是一間接通訊鏈路,諸如一網路介面。在這種情況下,該處理資源504可以透過一網路508存取該非暫時性電腦可讀媒體502。該網路508可以是一單一網路或多個網路的一種組合,並且可以使用各種不同的通訊協定。
該處理資源504及該非暫時性電腦可讀媒體502也可被通訊地耦合到資料源510。該(等)資料源510可被使用來儲存資料。在一實例實現方式中,該非暫時性電腦可讀媒體502包括一組電腦可讀取指令用於判定有無篡改諸如該運算裝置100之類一運算裝置中的該UEFI。該組電腦可讀取指令可由該處理資源504透過該通訊鏈路506來存取並且隨後被執行以授權對該運算裝置100的存取。
在一實例中,該非暫時性電腦可讀媒體502可包括用於實現一檢測引擎102的指令。在一個實例中,實現該檢測引擎102的該等指令可以是一可執行的程式碼以檢測與該運算裝置100之硬體組件相關聯之驅動程式的執行。該程式碼可以進一步促進該等驅動程式執行完成的檢測。
該非暫時性電腦可讀媒體502更可包括實現一雜湊引擎104的一組指令。在一個實例中,實現該雜湊引擎104的該等指令可以是一可執行的程式碼以在各種情況下計算該UEFI之一系統表的雜湊,其中該系統表係儲存該運算裝置及UEFI服務之組配細節的一種資料結構。
此外,該非暫時性電腦可讀媒體502更可包括實現一判定引擎106的一組指令。在一個實例中,實現該判定引擎106的該等指令可以是一可執行的 程式碼以比較由該雜湊引擎104所計算出的該等雜湊以判定有無篡改該UEFI的該系統表。
在本技術主題的一實例中,實現該檢測引擎102的該等指令可以在該運算裝置的作業系統(OS)之前的初始化期間在一驅動程式執行環境(DXE)階段中檢測與該運算裝置之一硬體組件相關聯之一驅動程式的執行。
基於對該驅動程式執行的該檢測,實現該雜湊引擎104的該等指令可以計算該系統表的一第一驅動程式雜湊。
然後,實現該檢測引擎102的該等指令可以檢測該驅動程式執行的完成。基於該檢測,實現雜湊引擎104的該等指令可以計算該系統表的一第二驅動程式雜湊。此後,實現該判定引擎106的該等指令可以把該第一驅動程式雜湊與該第二驅動程式雜湊進行比較,並且可把比較的一結果儲存在該(等)資料源510中。
隨後,實現該檢測引擎102的該等指令可以檢測與該運算裝置之另一個組件相關聯之另一驅動程式之一回呼函式的執行。基於該檢測,實現該雜湊引擎104的該等指令可以計算該系統表之一第一回呼函式雜湊。
實現該檢測引擎102的該等指令然後可以檢測該回呼函式執行的完成。基於該檢測,實現該雜湊引擎104的該等指令可以計算一第二回呼函式雜湊。之後,實現該判定引擎106的該等指令可以把該第一回呼函式雜湊與該第二回呼函式雜湊進行比較,並且可把比較的一結果儲存在該(等)資料源510中。
基於該第一與第二驅動程式雜湊及該第一與第二回呼函式雜湊中的至少一組的該比較,實現該判定引擎106的該等指令可以判定有無篡改該UEFI的該系統表。如果判定該第一與第二驅動程式雜湊不匹配或是該第一與第二回呼函式雜湊不匹配,則實現該判定引擎106的該等指令可判定該系統表已被篡改。
在這種情況下,實現該判定引擎106的該等指令可阻擋該驅動程式及另一驅動程式之該回呼函式中的至少一個。
阻擋該驅動程式及另一驅動程式之該回呼函式中的至少一個可避免在該運算裝置100的一後續啟動期間執行該惡意的程式碼,從而確保該運算裝置100之該UEFI的完整性。
儘管本技術主題的實例已經以特定於方法及/或結構特徵的語言來進行描述,但是將被理解的是,本技術主題並不侷限於該等特定的方法或被描述的特徵。反而,該等方法及特定特徵被揭露並被解釋成為本技術主題的實例。
300:方法
302,304,306,308,310:方塊

Claims (15)

  1. 一種用於判定有無篡改統一可擴展韌體介面(UEFI)之方法,該方法包含有:在具有該UEFI之一運算裝置的啟動期間,檢測與該運算裝置之一硬體組件相關聯之一驅動程式的執行;計算該UEFI之一系統表的一第一驅動程式雜湊,其中該系統表係儲存該運算裝置及UEFI服務之組配細節的一資料結構;檢測該驅動程式之該執行的完成;在該驅動程式之該執行的完成時,計算該系統表的一第二驅動程式雜湊;以及把該第一驅動程式雜湊與該第二驅動程式雜湊進行比較以判定有無篡改該UEFI的該系統表。
  2. 如請求項1之方法,其更包含有基於判定該UEFI的該系統表已被篡改,阻擋該驅動程式。
  3. 如請求項2之方法,其更包含有在該運算裝置之一後續啟動期間,阻擋該驅動程式的該執行。
  4. 如請求項1之方法,其更包含有:識別被耦合到該運算裝置的一視訊輸出裝置;以及在判定該系統表有被篡改時,在該視訊輸出裝置上顯示出提供有該驅動程式之細節的一通知。
  5. 如請求項1之方法,其更包含有撤消由該驅動程式對該系統表所做的修改。
  6. 如請求項1之方法,其中該驅動程式的該執行係在該運算裝置 的該啟動期間在一驅動程式執行環境(DXE)階段內被檢測的。
  7. 如請求項6之方法,其中該驅動程式係一DXE驅動程式及一UEFI驅動程式中之一者。
  8. 如請求項6之方法,其更包含有:在該DXE階段中觸發一系統管理模式(SMM),其中觸發該SMM把該運算裝置之一處理器的一狀態保存在與其耦合之一隨機存取記憶體(RAM)的一安全區域中;以及把該第一驅動程式雜湊及該第二驅動程式雜湊儲存在該RAM的該安全區域中。
  9. 如請求項1之方法,其更包含有:檢測與該運算裝置之另一個硬體組件相關聯之另一個驅動程式之一回呼函式的執行;計算該系統表的一第一回呼函式雜湊;檢測該回呼函式之該執行的完成;在檢測到該回呼函式的完成時,計算該系統表的一第二回呼函式雜湊;把該第一回呼函式雜湊與該第二回呼函式雜湊進行比較;以及基於該比較,判定有無篡改該UEFI的該系統表。
  10. 如請求項9之方法,其更包含有在該運算裝置的一後續啟動期間,阻擋該回呼函式的該執行。
  11. 一種用於判定有無篡改統一可擴展韌體介面(UEFI)之系統,該系統包含有:一檢測引擎,用以在具有該UEFI之一運算裝置的作業系統(OS)作用之前初始化期間的一驅動程式執行環境(DXE)階段中,檢測與該運算裝置之一硬體組件相關聯之一驅動程式之一回呼函式的執行; 一雜湊引擎,其被耦合到該檢測引擎,用以進行下列動作:計算該UEFI之一系統表的一第一回呼函式雜湊,其中該系統表係儲存該運算裝置及UEFI服務之組配細節的一資料結構;在檢測到該回呼函式之該執行的完成時,計算該系統表的一第二回呼函式雜湊;以及一判定引擎,其被耦合到該雜湊引擎,用以進行下列動作:判定該第一回呼函式雜湊是否不同於該第二回呼函式雜湊以判定有無篡改該UEFI的該系統表。
  12. 如請求項11之系統,其中該檢測引擎被耦合到一DXE調度程序,其中該DXE調度程序在該運算裝置之該OS作用之前的初始化期間發現並執行與該運算裝置之複數個硬體組件相關聯之複數個驅動程式。
  13. 如請求項11之系統,其更包含有一修改引擎用以基於篡改該UEFI之該系統表的該判定,撤消對該系統所做的修改。
  14. 一種包含有指令之非暫時性電腦可讀媒體,該等指令可由一處理資源執行用以進行下列動作:對具有統一可擴展韌體介面(UEFI)之一運算裝置,在該運算裝置的作業系統(OS)作用之前初始化期間的一驅動程式執行環境(DXE)階段中,檢測與該運算裝置之一硬體組件相關聯之一驅動程式的執行;計算該UEFI之一系統表的一第一驅動程式雜湊,其中該系統表係儲存該運算裝置及UEFI服務之組配細節的一資料結構;檢測該驅動程式之該執行的完成;在該驅動程式之該執行的完成時,計算該系統表的一第二驅動程式雜湊;把該第一驅動程式雜湊與該第二驅動程式雜湊進行比較;在該運算裝置的OS作用之前初始化期間的該DXE階段中檢測與該運算裝置 之另一個硬體組件相關聯之另一個驅動程式之一回呼函式的執行;計算該系統表的一第一回呼函式雜湊;檢測該回呼函式之該執行的完成;在該回呼函式之該執行的完成時,計算該系統表的一第二回呼函式雜湊;把該第一回呼函式雜湊與該第二回呼函式雜湊進行比較;以及基於該第一與第二驅動程式雜湊及該第一與第二回呼函式雜湊中之至少一組的該比較,判定有無篡改該UEFI的該系統表。
  15. 如請求項14之非暫時性電腦可讀媒體,其更包含有指令,用以在該運算裝置的一後續啟動期間,阻擋該驅動程式及另一驅動程式之該回呼函式中之至少一者的該執行。
TW110108976A 2020-06-08 2021-03-12 用於判定有無篡改統一可擴展韌體介面(uefi)之方法及系統、及相關非暫時性電腦可讀媒體 TWI779515B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
WOPCT/US20/36689 2020-06-08
PCT/US2020/036689 WO2021251950A1 (en) 2020-06-08 2020-06-08 Secure boot up of computing devices

Publications (2)

Publication Number Publication Date
TW202147157A TW202147157A (zh) 2021-12-16
TWI779515B true TWI779515B (zh) 2022-10-01

Family

ID=78846394

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110108976A TWI779515B (zh) 2020-06-08 2021-03-12 用於判定有無篡改統一可擴展韌體介面(uefi)之方法及系統、及相關非暫時性電腦可讀媒體

Country Status (5)

Country Link
US (1) US20230334156A1 (zh)
CN (1) CN115668157A (zh)
DE (1) DE112020007303T5 (zh)
TW (1) TWI779515B (zh)
WO (1) WO2021251950A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114254331B (zh) * 2021-12-24 2024-09-24 安天科技集团股份有限公司 终端设备的安全防护方法、装置、电子设备及存储介质
US11900150B2 (en) 2021-12-29 2024-02-13 Quanta Computer Inc. Methods and systems for collection of system management interrupt data
US20230418947A1 (en) * 2022-05-18 2023-12-28 Dell Products L.P. Pre-boot context-based security mitigation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180095679A1 (en) * 2016-09-30 2018-04-05 Piotr Wysocki Device driver to provide redundant array of independent disks functionality
US20180349607A1 (en) * 2017-06-02 2018-12-06 Dell Products, L.P. Recovering an information handling system from a secure boot authentication failure
TW202011214A (zh) * 2018-09-05 2020-03-16 廣達電腦股份有限公司 可配置伺服器及配置伺服器之功能的方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013067486A1 (en) * 2011-11-04 2013-05-10 Insyde Software Corp. Secure boot administration in a unified extensible firmware interface (uefi)- compliant computing device
US9336395B2 (en) * 2013-01-25 2016-05-10 Hewlett-Packard Development Company, L.P. Boot driver verification
US9870474B2 (en) * 2013-04-08 2018-01-16 Insyde Software Corp. Detection of secure variable alteration in a computing device equipped with unified extensible firmware interface (UEFI)-compliant firmware
US20150193620A1 (en) * 2014-01-07 2015-07-09 Dell Products, Lp System and Method for Managing UEFI Secure Boot Certificates
US9785801B2 (en) * 2014-06-27 2017-10-10 Intel Corporation Management of authenticated variables
US9524390B2 (en) * 2014-09-09 2016-12-20 Dell Products, Lp Method for authenticating firmware volume and system therefor
US9886580B2 (en) * 2014-12-23 2018-02-06 Dell Products, L.P. Method for optimizing boot time of an information handling system
US10181036B2 (en) * 2015-06-24 2019-01-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Automatic discovery and installation of secure boot certificates
US9742568B2 (en) * 2015-09-23 2017-08-22 Dell Products, L.P. Trusted support processor authentication of host BIOS/UEFI
JP6631303B2 (ja) * 2016-02-16 2020-01-15 富士通株式会社 認証方法、認証プログラム及び情報処理装置
US10824724B2 (en) * 2017-06-02 2020-11-03 Dell Products, L.P. Detecting runtime tampering of UEFI images in an information handling system
US10754955B2 (en) * 2017-08-04 2020-08-25 Dell Products, L.P. Authenticating a boot path update
US11416616B2 (en) * 2017-11-30 2022-08-16 Forcepoint Llc Secure boot chain for live boot systems
US11544414B2 (en) * 2019-02-04 2023-01-03 Dell Products L.P. Secure wake-on of a computing device
US11106798B2 (en) * 2020-01-28 2021-08-31 Hewlett Packard Enterprise Development Lp Automatically replacing versions of a key database for secure boots

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180095679A1 (en) * 2016-09-30 2018-04-05 Piotr Wysocki Device driver to provide redundant array of independent disks functionality
US20180349607A1 (en) * 2017-06-02 2018-12-06 Dell Products, L.P. Recovering an information handling system from a secure boot authentication failure
TW202011214A (zh) * 2018-09-05 2020-03-16 廣達電腦股份有限公司 可配置伺服器及配置伺服器之功能的方法

Also Published As

Publication number Publication date
WO2021251950A1 (en) 2021-12-16
TW202147157A (zh) 2021-12-16
CN115668157A (zh) 2023-01-31
DE112020007303T5 (de) 2023-05-04
US20230334156A1 (en) 2023-10-19

Similar Documents

Publication Publication Date Title
TWI779515B (zh) 用於判定有無篡改統一可擴展韌體介面(uefi)之方法及系統、及相關非暫時性電腦可讀媒體
US10620936B2 (en) Updating software
US10754955B2 (en) Authenticating a boot path update
US9501289B2 (en) Method of a UEFI firmware and computer system thereof
US9075995B2 (en) Dynamically loaded measured environment for secure code launch
US20140331037A1 (en) Secure boot override in a computing device equipped with unified-extensible firmware interface (uefi)-compliant firmware
US7921461B1 (en) System and method for rootkit detection and cure
US10540498B2 (en) Technologies for hardware assisted native malware detection
US10025587B2 (en) Method of bootup and installation, and computer system thereof
US9245122B1 (en) Anti-malware support for firmware
US20160253501A1 (en) Method for Detecting a Unified Extensible Firmware Interface Protocol Reload Attack and System Therefor
EP3048550B1 (en) Measurement method, electronic device and measurement system
US9448888B2 (en) Preventing a rollback attack in a computing system that includes a primary memory bank and a backup memory bank
US20200184077A1 (en) Method and apparatus for secure boot of embedded device
US11416614B2 (en) Statistical detection of firmware-level compromises
US7900033B2 (en) Firmware processing for operating system panic data
US11106457B1 (en) Updating firmware runtime components
US10664598B1 (en) Firmware security patch deployment
US10268822B2 (en) Firmware module execution privilege
US11669618B2 (en) Systems and methods for securing and loading bios drivers and dependencies in a predefined and measured load order
US12086258B1 (en) Firmware attestation on system reset
CN111194447A (zh) 监视控制流完整性
US11995452B2 (en) Firmware memory map namespace for concurrent containers
US20240241779A1 (en) Signaling host kernel crashes to dpu
US20240020103A1 (en) Parallelizing data processing unit provisioning

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent