TW201719490A - 使用外部裝置之運行時驗證技術 - Google Patents

使用外部裝置之運行時驗證技術 Download PDF

Info

Publication number
TW201719490A
TW201719490A TW105124457A TW105124457A TW201719490A TW 201719490 A TW201719490 A TW 201719490A TW 105124457 A TW105124457 A TW 105124457A TW 105124457 A TW105124457 A TW 105124457A TW 201719490 A TW201719490 A TW 201719490A
Authority
TW
Taiwan
Prior art keywords
bios
controller
processor
memory
smi
Prior art date
Application number
TW105124457A
Other languages
English (en)
Other versions
TWI604336B (zh
Inventor
傑佛瑞K 珍森納
瓦利 阿里
大衛 帕拉昆恩
毛根 維拉托爾
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 TW201719490A publication Critical patent/TW201719490A/zh
Application granted granted Critical
Publication of TWI604336B publication Critical patent/TWI604336B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • 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
    • 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
    • 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
    • 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
    • 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/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

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

Abstract

本文實例揭示以處理器為基礎的一計算系統。該系統包含至少一個處理器,包含基本輸入輸出系統(BIOS)的一非依電性記憶體,其中該BIOS產生一資料結構及建構由該處理器執行的至少一個驗證軟體組件,通訊式鏈接至該至少一個驗證軟體組件的一控制器,及一記憶體其包含耦接至該至少一個處理器的一系統管理記憶體及代碼,該代碼可由該以處理器為基礎的系統執行來使得該處理器,於該以處理器為基礎的系統的一運行時間期間,使用該至少一個驗證軟體組件及該控制器來驗證該BIOS。

Description

使用外部裝置之運行時驗證技術
本發明係有關於使用外部裝置之運行時驗證技術。
發明背景
該計算系統可包括進行該計算裝置的各種起始功能的代碼。此種代碼包括基本輸入/輸出系統(BIOS)代碼。該BIOS代碼起始及測試該計算裝置的硬體。一電腦啟動時基本輸入/輸出系統(BIOS)從事多項任務,自起始該微處理器至起始與測試硬體來開始該作業系統。此外,該BIOS代碼可從該計算裝置的一記憶體裝置載入啟動程式代碼及/或一作業系統。又復,該BIOS含有控制該鍵盤、顯示器螢幕、碟片驅動裝置、串列通訊、及多種其它功能所需的全部代碼。
依據本發明之一實施例,係特地提出一種以處理器為基礎的計算系統,其包含:至少一個處理器;包含一基本輸入輸出系統(BIOS)的一非依電性記憶體,其中該BIOS產生一資料結構及建構由該處理器執行的至少一個驗 證軟體組件;通訊式鏈接至該至少一個驗證軟體組件的一控制器;及一記憶體其包含耦接至該至少一個處理器的一系統管理記憶體及代碼,該代碼可由該以處理器為基礎的系統執行來使得該處理器,於該以處理器為基礎的系統的一運行時間期間,使用該至少一個驗證軟體組件及該控制器來驗證該BIOS。
100‧‧‧計算系統
110‧‧‧處理器
120‧‧‧記憶體
125‧‧‧代碼區塊、BIOS
130‧‧‧主記憶體
134‧‧‧系統管理隨機存取記憶體(SMRAM)
136‧‧‧BIOS代碼
138‧‧‧嵌入式應用程式
140‧‧‧控制器
200、300‧‧‧方法
206-210、302-324‧‧‧操作
於附圖中,類似的元件符號係指相似的組件或區塊。後文詳細說明部分參考附圖,附圖中:圖1為依據本文揭示的原理用於驗證於一計算系統中之BIOS的完整性之一計算系統實例的方塊圖;圖2為依據本文揭示的原理由一計算裝置可執行用以驗證於一計算系統中之BIOS的完整性之一方法實例的流程圖;及圖3為依據本文揭示的原理由一計算裝置可執行用以驗證於一計算系統中之BIOS的完整性之一方法實例的流程圖。
較佳實施例之詳細說明
BIOS代碼之安裝入計算裝置可發生在製造層級或製造後層級。BIOS可與當起始時用於驗證的一數位簽章及一金鑰對相關聯。BIOS可於與該計算裝置通訊中以受控方式開發。如此進一步以無縫方式提供更新給BIOS,原因在於該計算裝置可從遠端位置(例如,外部來源)接收更新。 每次該計算裝置被切換啟動時,BIOS即刻發號司令(控制)。最初,BIOS跑過一串列的診斷常式,在任何時間或資料為該計算裝置所可信賴之前,系統檢查來確保該計算裝置的每個部分正確地發揮功能。BIOS檢查該系統板及該記憶體、該鍵盤、該等碟片及各個擴充板的電路。在該計算裝置為可操作之後,該BIOS韌體跑程式規劃調用來進行例行功能的數個常式集-在螢幕上打字、讀取按鍵、及計時事件。
於此一實例中,該計算裝置使用安全驗證軟體及外部硬體組件(例如,嵌入式控制器)來達成該BIOS之完整性的運行時驗證。該外部硬體組件無需即時存取該記憶體,反而只需要與該安全驗證軟體有個安全通訊鏈路。於一個實例中,該指令及該BIOS可被發射且各自以不同的密鑰數位簽章。如此提供額外安全性特徵,原因在於該指令及該BIOS兩者可在該BIOS的安裝之前獲得驗證。雖然於後述建置中係結合一BIOS及詳細描述之。但於其它建置中,取而代之,可使用一統一可擴延韌體介面(UEFI)。依據本文揭示的原理,UEFI係設計為該BIOS的接替者且可置換該BIOS。
參考圖1,依據本發明之若干實施例,以處理器為基礎的系統諸如計算系統100可包括至少一個處理器110,耦接至至少一個處理器110的至少一個記憶體120,及一代碼區塊125(例如,儲存於記憶體120)。記憶體120可以是非依電性記憶體(例如,唯讀記憶體)。計算系統100進一 步包括一控制器140及一主記憶體130,其於一個建置中,可以是依電性記憶體(例如,隨機存取記憶體)。主記憶體130包含BIOS代碼136。系統100在運行時自代碼區塊125(例如,BIOS)產生相關聯的完整性資訊用以驗證BIOS代碼136。因此,計算系統100之建置包括行動裝置、客端裝置、個人電腦、桌上型電腦、膝上型電腦、平板、可攜式裝置、視訊遊戲機台、或其它類型的電子裝置。系統100可進一步包括由計算系統100可執行的代碼用以使得計算系統100在計算系統100重新啟動時產生BIOS代碼136的完整性資訊,及於計算系統100運行時使用完整性資訊確認BIOS代碼136的完整性。代碼區塊125可對應韌體元件中之一者,諸如BIOS。
計算系統100包括控制器140以達成BIOS的完整性之運行時驗證。控制器140的建置包括處理器、電子裝置、計算系統、微處理器、微晶片、電子電路、半導體、微控制器、中央處理單元(CPU)、或其它類型的處理系統。於一個建置中,控制器140可以是系統100的外部硬體組件。於其它建置中,控制器140可結合入計算系統100內。控制器140可能無需即時連結至記憶體130,只要控制器140與在處理器110上跑的安全驗證軟體(例如,嵌入式應用程式138)維持安全的通訊鏈路即可。如於本文中使用,術語「處理器」可以是中央處理單元(CPU)、以半導體為基礎之微處理器、圖形處理單元(GPU)、用以取回及執行指令的可現場程式規劃閘陣列(FPGA)、適用於取回及執行儲存於機 器可讀取儲存媒體上的指令之電子電路、或其組合中之至少一者。
於一個實例中,控制器140為嵌置於計算裝置內的外部硬體組件。計算系統100可接收由控制器140發射的資料包。資料包可包括指令及BIOS檔案。作為資料包的一部分,指令及BIOS檔案兩者包括數位簽章。舉例言之,指令可以密鑰數位簽章。控制器140使用嵌置於控制器140的公鑰驗證BIOS 125的簽章。BIOS 125(其也含有嵌入式應用程式138)係由處理器110載入主記憶體130,及處理器110執行BIOS 125。於一個建置中,當執行時,BIOS代碼136藉由發送對稱鑰讓控制器140使用而與控制器140建立安全通道。於此一實例中,指令發送給控制器140。於另一個建置中,BIOS代碼136藉由使用在開機啟動時間產生的一對非對稱鑰而與控制器140建立安全通道。於此一實例中,BIO與控制器140在開機啟動期間交換其相關聯的金鑰。金鑰給予安全驗證軟體,且唯有安全驗證軟體能夠存取該金鑰。雖然金鑰係描述為非對稱鑰及簽章,但於其它建置中,金鑰可以是非對稱鑰。
指令為發送給計算系統100指示計算系統100驗證BIOS的完整性的請求。於此一建置中,在接收指令之前,計算系統100接收對應數位簽章的密碼鑰。於一個建置中,為了指令的確認及/或驗證,計算系統100使用此一密碼鑰來驗證與該指令相關聯的數位簽章。此點唯有在從計算系統100發送到控制器140時才要求。計算系統100例示可透過 網路通訊的計算系統,諸如廣域網路(WAN)、本地區域網路(LAN)、個人區域網路(PAN)、網格網路、行動裝置網路、或能夠發射指令給計算系統100的其它類型的網路。於另一個建置中,外部來源藉由來到計算系統100的緊密近處而與計算系統100直接通訊。
非依電性記憶體120為計算系統100內部的維持BIOS 125的儲存區。因此,非依電性記憶體120的建置包括唯讀記憶體、快閃記憶體、鐵電記憶體、鐵電RAM、磁性儲存記憶體、儲存驅動裝置、記憶體組件、或用以維持BIOS125的此等記憶體組件之任何組合。如前文討論,BIOS 125裝置藉由指供基本指令集及進行系統啟動任務而負責電腦的開機啟動。BIOS 125以中斷處理程式存庫之形式提供介接作業系統的下方硬體。BIOS 125包括在測試BIOS安裝之前存在於計算系統100上的BIOS。於一個建置中,BIOS 125係在測試BIOS安裝之前事先安裝於計算系統100上。如先前解釋,測試BIOS可被涵括作為在給計算系統100的資料包內部的BIOS檔案之一部分。於一個建置中,測試BIOS可以是BIOS 125的對應部分之修飾。修飾可包括對BIOS 125的更新、開發、及/或除錯面向。
再者,計算系統100包括主記憶體130(例如,隨機存取記憶體)。主記憶體130可由CPU直接存取。主記憶體130為處理器110啟用程式及資料時該等程式及資料的儲存位置。當程式及資料變成作用態時,其被複製入主記憶體130,於該處處理器110可與其互動。主記憶體130包含系統 管理隨機存取記憶體(SMRAM)134及BIOS代碼136。SMRAM 134為由處理器用以儲存用於系統管理模式的代碼之系統記憶體部分。SMRAM 134係由處理器110可予存取,而非由作業系統或其它程式可予存取。SMRAM 134也儲存處理器狀態及系統管理中斷(SMI)處理程式。SMI處理程式為從事各種系統管理功能包括系統功率控制的軟體常式。SMRAM係保留供專用處理之用,包括用來更新BIOS 125的BIOS代碼136之處理。於一個建置中,BIOS代碼136含有負責處理SMI及調用適當服務來服務一請求的SMI調度器組件。於一個建置中,SMI調度器在調用任何其它服務之前發送一SMI進入事件訊息給控制器140。
於一個建置中,在計算系統100的開機啟動處理期間,處理器110執行來自非依電性記憶體120的BIOS 125。BIOS 125起始系統管理RAM(SMRAM)及複製其本身至主記憶體130。又復,BIOS 125針對靜態代碼模組建立一資料結構(亦即資訊表示檔(manifest)),各個模組有個雜湊。更明確言之,BIOS 125自動產生含有記憶體位址範圍及該等記憶體區中之各者的記憶體內容之密碼雜湊(例如,SHA1、SHA256及/或其類)的一資料結構(稱作資訊表示檔)。記憶體區包括SMI調度器代碼、BIOS的靜態碼之其餘部分、及資料結構諸如SMI調度器表。
於一個建置中,於開機啟動時,BIOS 125產生安全驗證軟體組件(亦即,SMI退出檢查器及/或SMM記憶體檢查器)。於一個建置中,軟體可使用Intel BIOS Guard、Intel SGX等產生。BIOS 125也產生一亂數,及將該數字發送給驗證軟體組件及發送給控制器140。於一個實例中,該亂數可以是專用的且為計算系統100中的任何其它軟體所無法存取。於此一實例中,若該等組件的完整性匹配而確證只有正確的組件才能存取該數字,則可授予該數字的存取。
於一個建置中,當BIOS 125的開機啟動程序完成時,BIOS 125發送一訊息(例如,開機啟動結束)給控制器140及起始下列程序。首先,控制器140產生一SMI掃描事件訊息。處理器110處理SMI及開始SMI調度器的執行。回應於控制器140產生的SMI掃描事件訊息,控制器140在一特定時框以內預期一SMI進入事件訊息。於控制器在特定時框以內未接收到該訊息之情況下,BIOS 125之完整性的運行時驗證不合格。於SMI調度器發送一SMI進入事件訊息給控制器140之情況下,控制器140在一特定時框以內預期一SMM掃描結果訊息。於控制器在特定時框以內未接收到該訊息之情況下,BIOS 125之完整性的運行時驗證不合格。於SMI調度器識別SMM掃描事件之情況下,控制器140執行SMM記憶體檢查器軟體。SMM記憶體檢查器使用資訊表示檔來驗證在該資訊表示檔中描述的全部記憶體區之完整性。更明確言之,SMM記憶體檢查器計算用來產生該資訊表示檔的相同密碼雜湊,且將該等結果與在該資訊表示檔中呈現者作比較。於另一個建置中,SMM記憶體檢查器為了效能理由驗證在該資訊表示檔中的該等分錄之一非空白隨機選擇子集。又,然後,SMM記憶體檢查器使用隨機產生數字 來發送一經確認的SMM掃描結果事件訊息給控制器140。於一個建置中,SMM掃描結果事件訊息包括BIOS 136的完整性之驗證狀態。若未檢測得錯誤,則驗證狀態可以是肯定。若檢測得錯誤,則傳遞一錯誤訊息。又復,控制器140在一特定時框以內可預期一SMI退出事件訊息。在特定時框以內未接收到該訊息之情況下,BIOS 125之完整性的運行時驗證不合格。
最後,SMI調度器代碼確保執行安全軟體SMI退出檢查器。更明確言之,SMI退出檢查器驗證SMI調度器的完整性,及驗證在自SMI返回之前此乃被執行的最末代碼。當驗證時,SMI退出檢查器使用該隨機產生的數字來發送一經確認的SMI退出事件訊息給控制器140及退出。
於一個建置中,與前文詳細解釋的程序並行地,可建置一第二程序。首先,在處理器或控制器140以外的計算系統100之組件上跑的系統軟體產生一SMI用以由該BIOS處理。SMI調度器發送一SMI進入事件訊息給控制器140。歷經一特定時間量,控制器140預期一SMI退出事件訊息。在該特定時間量以內控制器140未接收到該訊息或接收到不同訊息之情況下,BIOS 125之完整性的運行時驗證不合格。
SMI調度器識別該SMI事件及執行處理該事件之要求代碼。最後,SMI調度器代碼確保執行安全軟體SMI退出檢查器。更明確言之,SMI退出檢查器驗證SMI調度器的完整性,及驗證在自SMI返回之前此乃被執行的最末代 碼。當驗證時,SMI退出檢查器使用該隨機產生的數字來發送一經確認的SMI退出事件訊息給控制器140及退出。
現在轉向參考圖1中描述的系統100之操作,圖2為於開機啟動處理期間,使用安全驗證軟體(亦即,在計算系統的處理器上跑的軟體,於該處,對該軟體的存取受限制)及外部硬體組件(例如,嵌入式控制器)的組合,由計算裝置可執行用以達成BIOS之完整性的運行時驗證之方法實例的方塊圖。如參考圖1中描述,圖2特別聚焦在計算系統100之開機啟動程序。於另一個實例中,如同於圖1,處理器110執行操作206-210。又,雖然圖2係描述為藉計算裝置建置,但也可在其它合宜組件上執行。
於一個建置中,方法可始於BIOS 125起始系統管理RAM(SMRAM)及複製其本身至主記憶體130。於一個建置中,處理器110自非依電性記憶體120執行BIOS 125。於操作206,系統接收一資料結構。更明確言之,BIOS 125針對靜態代碼模組建立一資料結構(亦即資訊表示檔),各個模組有個雜湊(例如,SHA1、SHA256及/或其類)。更明確言之,BIOS 125自動產生含有記憶體位址範圍及記憶體區中的記憶體內容之密碼雜湊的資料結構(稱作資訊表示檔)。記憶體區包括SMI調度器代碼、BIOS的靜態碼之其餘部分、及資料結構諸如SMI調度器表。於操作208,系統執行安全軟體組件。更明確言之,BIOS 125產生安全軟體組件(亦即,SMI退出檢查器及SMM記憶體檢查器)。於一個建置中,軟體可使用Intel BIOS Guard、Intel SGX等產生。
於操作210,系統可使用安全軟體組件及控制器提供BIOS之運行時驗證。於一個建置中,運行時驗證可使用隨機產生數字(亦即,機密)傳遞。該數字係介於控制器與安全軟體組件間(例如,代碼發送訊息,諸如SMI進入事件訊息、SMM掃描結果訊息、及SMI退出事件訊息),其將參考圖3以進一步細節討論。更明確言之,BIOS 125產生一亂數,及將該數字發送給驗證軟體組件及發送給控制器140。於一個實例中,該亂數可以是專用的且為計算系統100中的任何其它軟體所無法存取。於此一實例中,只有在該等組件產生時匹配該數字的驗證軟體組件才可授予該數字的存取。
雖然圖2之流程圖顯示某些功能進行的特定順序,但方法200並不受限於該順序。舉例言之,該流程圖中循序顯示的該等功能可以不同的順序進行,可同時或部分同時、或其組合進行。於若干實例中,本文中關聯圖2描述的特徵及功能可與本文描述的特徵及功能組合提供。
現在轉向參考圖1中描述的系統100之操作,圖3為於開機啟動處理之後,使用安全驗證軟體(亦即,在計算系統的處理器上跑的軟體,於該處對該軟體的存取受限制)及外部硬體組件(例如,嵌入式控制器)的組合,由計算裝置可執行用以達成BIOS之完整性的運行時驗證之方法實例的方塊圖。如前文參考圖1中以進一步細節描述,圖3特別聚焦在BIOS 125之開機啟動程序完成後的計算系統。於另一個實例中,如同於圖1,處理器110執行操作302-324。又, 雖然圖3係描述為藉計算裝置建置,但也可在其它合宜組件上執行。
BIOS 125發送一訊息(例如,開機啟動結束)給控制器140及起始下列程序。首先,於操作302,控制器產生SMM掃描事件訊息,其由處理器接收。於操作304,處理器處理SMI及開始SMI調度器的執行。於操作306,回應於控制器產生的SMI掃描事件訊息,控制器在一特定時框以內預期接收一SMI進入事件訊息。於操作308,於控制器在特定時框以內未接收到該訊息之情況下,BIOS之完整性的運行時驗證不合格。於操作310,於處理器(例如,跑SMI調度器)發送一SMI進入事件訊息給控制器之情況下,控制器在一特定時框以內預期一SMI掃描結果訊息。於操作312,於控制器在特定時框以內未接收到該訊息之情況下,BIOS之完整性的運行時驗證不合格。於SMI調度器識別SMI掃描事件之情況下,處理器(執行驗證軟體組件諸如SMM記憶體檢查器)發送一經確認的SMM掃描結果事件訊息給控制器。於操作314,於一個建置中,SMM掃描結果事件訊息包括BIOS 136的完整性之驗證狀態。若未檢測得錯誤,則驗證狀態可以是肯定。於操作316,若檢測得錯誤,則傳遞一錯誤訊息。又復,於操作318,當該狀態為肯定時(例如,未找到錯誤),控制器在一特定時框以內預期一SMI退出事件訊息。於操作320,在特定時框以內未接收到該訊息之情況下,BIOS之完整性的運行時驗證不合格。
最後,SMI調度器代碼確保執行安全軟體SMI退 出檢查器。於操作322,在SMI退出事件訊息被發送給控制器之情況下,執行SMI退出檢查器。更明確言之,SMI退出檢查器驗證SMI調度器的完整性,及驗證在自SMI返回之前此乃被執行的最末代碼。於操作324,當驗證時,SMI退出檢查器使用該隨機產生的數字來發送一經確認的SMI退出事件訊息給控制器及退出。
須注意於操作中,SMM記憶體檢查器使用該資訊表示檔來驗證於該資訊表示檔中描述的全部記憶體區的完整性。更明確言之,SMM記憶體檢查器計算用來產生該資訊表示檔的相同密碼雜湊,且將該等結果與在該資訊表示檔中呈現者作比較。於另一個建置中,SMM記憶體檢查器為了效能理由驗證在該資訊表示檔中的該等分錄之一非空白隨機選擇子集。
雖然圖3之流程圖顯示某些功能進行的特定順序,但方法300並不受限於該順序。舉例言之,該流程圖中循序顯示的該等功能可以不同的順序進行,可同時或部分同時、或其組合進行。於若干實例中,本文中關聯圖3描述的特徵及功能可與本文描述的特徵及功能組合提供。
前文討論意圖例示本發明之原理及各種實施例。一旦已經全然瞭解前文揭示,無數變化及修改將為熟諳技藝人士顯然易知。意圖後文申請專利範圍部分解譯為涵蓋全部此等變化及修改。
100‧‧‧計算系統
110‧‧‧處理器
120‧‧‧非依電性記憶體(NVM)
125‧‧‧基本輸入輸出系統(BIOS)
130‧‧‧主記憶體
134‧‧‧系統管理隨機存取記憶體(SMRAM)
136‧‧‧BIOS代碼
138‧‧‧嵌入式應用程式
140‧‧‧控制器

Claims (15)

  1. 一種以處理器為基礎的計算系統,其包含:至少一個處理器;包含一基本輸入輸出系統(BIOS)的一非依電性記憶體,其中該BIOS產生一資料結構及建構由該處理器執行的至少一個驗證軟體組件;通訊式鏈接至該至少一個驗證軟體組件的一控制器;及一記憶體其包含耦接至該至少一個處理器的一系統管理記憶體及代碼,該代碼可由該以處理器為基礎的系統執行來使得該處理器,於該以處理器為基礎的系統的一運行時間期間,使用該至少一個驗證軟體組件及該控制器來驗證該BIOS。
  2. 如請求項1之系統,其中該控制器不要求存取該記憶體。
  3. 如請求項1之系統,其中該資料結構含有記憶體位址範圍及記憶體內容之密碼雜湊,該密碼雜湊用以產生該資料結構。
  4. 如請求項3之系統,其中該處理器執行該至少一個驗證軟體組件,及該至少一個驗證軟體組件藉由計算使用來產生該資料結構的該密碼雜湊及比較該計算密碼雜湊與於該資料結構中之該密碼雜湊而驗證於該資料結構中之該等記憶體區之完整性。
  5. 如請求項1之系統,其中該BIOS發送一訊息至該控制器 及起始一系統開機啟動程序的一結束。
  6. 如請求項1之系統,其中該處理器處理包含軟體常式的系統管理中斷(SMI)處理程式其進行包括該系統開機啟動程序的各種系統管理功能。
  7. 如請求項1之系統,其中該控制器發送一SMI掃描事件訊息及回應於該SMI掃描事件訊息在一載明的時框以內預期一SMI進入事件訊息。
  8. 如請求項7之系統,其中若在該載明的時框以內該SMI進入事件訊息未提供給該控制器則該BIOS為失效。
  9. 如請求項7之系統,其中若該SMI進入事件訊息提供給該控制器則在一載明的時框以內該控制器預期一SMM掃描結果訊息。
  10. 如請求項9之系統,其中若在該載明的時框以內該SMM掃描結果訊息未提供給該控制器則該BIOS為失效。
  11. 如請求項1之系統,其中該BIOS產生一亂數及發送給該至少一個驗證軟體組件及給該控制器。
  12. 如請求項11之系統,其中該至少一個驗證軟體組件使用該隨機產生的數字發送一訊息給該控制器,該訊息包含該BIOS之運行時驗證的狀態。
  13. 如請求項12之系統,其中該狀態包含一成功訊息或一錯誤訊息。
  14. 一種由一計算裝置可執行的方法,其包含:接收包含於該等記憶體區中的記憶體位址範圍及記憶體內容之密碼雜湊,該等記憶體區包含與一基本輸 入輸出系統(BIOS)相關聯的且與一控制器通訊的代碼;執行至少一個驗證軟體組件用以驗證於該資料結構中之該等記憶體區之完整性;及使用該至少一個驗證軟體組件及一控制器來提供該BIOS之運行時驗證,其中,該至少一驗證軟體組件和該資料結構是由該BIOS所產生。
  15. 如請求項14之方法,其中執行至少一個驗證軟體組件用以驗證於該資料結構中之該等記憶體區之完整性進一步包含計算使用來產生該資料結構的該密碼雜湊及比較該計算密碼雜湊與於該資料結構中之該密碼雜湊。
TW105124457A 2015-09-30 2016-08-02 使用外部裝置之運行時驗證技術 TWI604336B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2015/053345 WO2017058225A1 (en) 2015-09-30 2015-09-30 Runtime verification using external device

Publications (2)

Publication Number Publication Date
TW201719490A true TW201719490A (zh) 2017-06-01
TWI604336B TWI604336B (zh) 2017-11-01

Family

ID=58427857

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105124457A TWI604336B (zh) 2015-09-30 2016-08-02 使用外部裝置之運行時驗證技術

Country Status (5)

Country Link
US (1) US10867045B2 (zh)
EP (1) EP3356931B1 (zh)
CN (1) CN108139901B (zh)
TW (1) TWI604336B (zh)
WO (1) WO2017058225A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017058225A1 (en) * 2015-09-30 2017-04-06 Hewlett-Packard Development Company, L.P. Runtime verification using external device
WO2019212547A1 (en) * 2018-05-02 2019-11-07 Hewlett-Packard Development Company, L.P. Executing sotware
TWI807947B (zh) * 2022-08-01 2023-07-01 精英電腦股份有限公司 多顆嵌入式控制器的更新和檢驗方法與其電子設備
CN115543587B (zh) * 2022-11-29 2023-03-07 暨南大学 一种使用寿命驱动的OpenCL应用调度方法及系统

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401208B2 (en) * 1998-07-17 2002-06-04 Intel Corporation Method for BIOS authentication prior to BIOS execution
US6625730B1 (en) * 2000-03-31 2003-09-23 Hewlett-Packard Development Company, L.P. System for validating a bios program and memory coupled therewith by using a boot block program having a validation routine
US6715106B1 (en) 2000-11-10 2004-03-30 Dell Products L.P. Bios corruption detection system and method
US20030037237A1 (en) * 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
US20040030877A1 (en) * 2002-08-06 2004-02-12 Aleksandr Frid Using system BIOS to update embedded controller firmware
US7200758B2 (en) 2002-10-09 2007-04-03 Intel Corporation Encapsulation of a TCPA trusted platform module functionality within a server management coprocessor subsystem
US7337309B2 (en) * 2003-03-24 2008-02-26 Intel Corporation Secure online BIOS update schemes
US7558966B2 (en) 2004-06-09 2009-07-07 Intel Corporation Notifying remote administrator of platform integrity determination
US20070088969A1 (en) * 2005-10-13 2007-04-19 Weekley Michael D Method and system for monitoring an accumulated runtime in a device
US8209542B2 (en) * 2006-12-29 2012-06-26 Intel Corporation Methods and apparatus for authenticating components of processing systems
WO2008094420A1 (en) * 2007-01-26 2008-08-07 Wms Gaming Inc. Resource validation
US7917741B2 (en) * 2007-04-10 2011-03-29 Standard Microsystems Corporation Enhancing security of a system via access by an embedded controller to a secure storage device
CN101983375A (zh) * 2008-04-02 2011-03-02 惠普开发有限公司 将密码模块绑定到平台
US8832454B2 (en) * 2008-12-30 2014-09-09 Intel Corporation Apparatus and method for runtime integrity verification
WO2012148422A1 (en) * 2011-04-29 2012-11-01 Hewlett-Packard Development Company, L.P. Embedded controller to verify crtm
TWI436280B (zh) 2011-08-22 2014-05-01 Acer Inc 存取基本輸入輸出系統設定的認證方法
CN102332070A (zh) 2011-09-30 2012-01-25 中国人民解放军海军计算技术研究所 一种可信计算平台的信任链传递方法
GB2510281B (en) 2011-10-21 2020-08-12 Hewlett Packard Development Co Providing a function of a basic input/output system (bios) in a privileged domain
US9152793B2 (en) * 2012-09-28 2015-10-06 Intel Corporation Methods, systems and apparatus to self authorize platform code
WO2014175867A1 (en) * 2013-04-23 2014-10-30 Hewlett-Packard Development Company, L.P. Verifying controller code and system boot code
CN105308609B (zh) * 2013-04-23 2017-12-29 惠普发展公司,有限责任合伙企业 存储事件数据的系统和方法
US20150006714A1 (en) 2013-06-28 2015-01-01 Microsoft Corporation Run-time verification of middlebox routing and traffic processing
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US9507942B2 (en) * 2013-11-13 2016-11-29 Via Technologies, Inc. Secure BIOS mechanism in a trusted computing system
US20150220736A1 (en) * 2014-02-04 2015-08-06 Dell Products, Lp Continuous Memory Tamper Detection Through System Management Mode Integrity Verification
US9317691B2 (en) * 2014-05-08 2016-04-19 Dell Products L.P. Pre-boot software verification
US10387651B2 (en) * 2014-09-23 2019-08-20 Hewlett-Packard Development Company, L.P. Detecting a change to system management mode bios code
WO2017058225A1 (en) * 2015-09-30 2017-04-06 Hewlett-Packard Development Company, L.P. Runtime verification using external device

Also Published As

Publication number Publication date
EP3356931A1 (en) 2018-08-08
CN108139901B (zh) 2022-04-26
WO2017058225A1 (en) 2017-04-06
TWI604336B (zh) 2017-11-01
CN108139901A (zh) 2018-06-08
EP3356931B1 (en) 2021-06-23
US20180239901A1 (en) 2018-08-23
US10867045B2 (en) 2020-12-15
EP3356931A4 (en) 2019-03-13

Similar Documents

Publication Publication Date Title
US11843705B2 (en) Dynamic certificate management as part of a distributed authentication system
TWI606396B (zh) 母板、電腦可讀儲存裝置以及韌體驗證方法
US10826904B2 (en) Local verification of code authentication
JP5380276B2 (ja) 共用不揮発性メモリ・アーキテクチャ
JP2007525774A (ja) ランタイム・セキュリティ保証用の自律型メモリ・チェッカ
TWI604336B (zh) 使用外部裝置之運行時驗證技術
TW201519100A (zh) 用於在uefi安全開機資料庫中自動註冊任選rom的系統以及方法
US10776524B2 (en) Secure communication channel for system management mode
CN107567629B (zh) 在可信执行环境容器中的动态固件模块加载器
CN103080904A (zh) 提供多阶段锁步完整性报告机构
US10592661B2 (en) Package processing
TWI754219B (zh) 更新信號技術
JP2022136052A (ja) セキュア不揮発性メモリのためのシステム、方法およびデバイス
TW201602835A (zh) 允許測試金鑰用於bios安裝之技術
CN116266467A (zh) 具有安全启动更新及自动恢复的存储器装置
US20200387612A1 (en) Secure boot system, method and apparatus
CN115964721A (zh) 一种程序验证方法及电子设备
WO2016184180A1 (zh) 一种系统安全启动方法及装置
TWI728377B (zh) 安全啟動系統、方法及裝置
CN113239347B (zh) 一种适用于tee安全应用实例的启动方法及装置
US20240111543A1 (en) Concurrent execution and copy of updated basic input/output system instructions
JP2023026017A (ja) 起動検証プログラム、情報処理装置および起動検証方法
CN116204216A (zh) 补丁处理方法、装置及计算机设备
CN116956267A (zh) 平台证书的基于管理控制器的验证