TWI804703B - 電腦裝置及基於信任鏈的權限管理方法 - Google Patents
電腦裝置及基於信任鏈的權限管理方法 Download PDFInfo
- Publication number
- TWI804703B TWI804703B TW108148545A TW108148545A TWI804703B TW I804703 B TWI804703 B TW I804703B TW 108148545 A TW108148545 A TW 108148545A TW 108148545 A TW108148545 A TW 108148545A TW I804703 B TWI804703 B TW I804703B
- Authority
- TW
- Taiwan
- Prior art keywords
- activation code
- function
- activation
- code
- control circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
- Lock And Its Accessories (AREA)
Abstract
一種電腦裝置,包括:複數個週邊裝置、一記憶體單元、一處理單元、及一權限控制電路。記憶體單元係用以儲存複數個啟動碼及相應於各啟動碼之週邊裝置之功能集合的設定值,其中啟動碼係組成一信任鏈。處理單元係執行信任鏈之一目前啟動碼。權限控制電路係從記憶體單元讀取相應於各啟動碼之功能集合的設定值。因應於目前啟動碼執行完畢,權限控制電路設定下一啟動碼相應的第二功能集合之設定值,並依據第二功能集合中之設定值以發出權限控制信號以控制相應的週邊裝置,並設定下一啟動碼在權限控制電路中相應的啟動旗標以執行下一啟動碼。
Description
本發明係有關於電腦系統,特別是有關於基於信任鏈(chain of trust)的一種電腦裝置及其權限管理方法。
在現行的電腦系統中,安全啟動(secure boot)搭配信任鏈(chain of trust)以做為安全執行環境(secure execution environment)或是信任執行環境(trusted execution environment)之基礎已被廣泛使用。舉例來說,安全啟動搭配信任鏈的啟動程序(boot flow)可達到安全執行環境的功能,藉以防止未被授權軟體在個人電腦上的開機啟動程序期間被執行。它檢查每個軟體程式區段是否擁有一個有效的簽章,包括作業系統被載入時也須被檢查。此外,一個系統程式啟動並執行的過程分為多個階段的啟動碼(boot code),且每個階段的啟動碼的功能均不同,也可能是由不同的開發者所提供。
信任鏈的概念係基於可信賴程式之機制,意即欲執行的下階段的程式會先進行認證,且當認證通過後才會執行。然而,信任鏈的機制並未加入權限管理。因此,在不同的啟動碼由不同的
開發者進行開發的情況下,有可能產生安全問題之疑慮。
有鑑於此,需要一種電腦裝置及基於信任鏈的權限管理方法以解決上述問題。
本發明係提供一種電腦裝置,包括:複數個週邊裝置、一記憶體單元、一處理單元、及一權限控制電路。週邊裝置係具有相應的複數個功能。記憶體單元係用以儲存複數個啟動碼及相應於各啟動碼之該等週邊裝置之功能集合的設定值,其中該等啟動碼係組成一信任鏈。處理單元係用以執行該信任鏈中之其中一個啟動碼以做為一目前啟動碼,其中該目前啟動碼係對應於該等週邊裝置之一第一功能集合。權限控制電路係電性連接至該處理單元及該等週邊裝置,用以從該記憶體單元讀取相應於各啟動碼之該等週邊裝置的功能集合的設定值。因應於處理單元執行目前啟動碼完畢,權限控制電路係設定該目前啟動碼在該信任鏈中之下一啟動碼相應的第二功能集合中之該等功能的設定值,並依據該第二功能集合中之該等功能的設定值以發出一權限控制信號以控制相應於該第二功能集合之週邊裝置,並接著設定該目前啟動碼之該下一啟動碼在該權限控制電路中相應的一啟動旗標以使該處理單元執行該下一啟動碼,其中第一功能集合與第二功能集合不同。
在一些實施例中,當該下一啟動碼相應的第二功能集合中之該等功能的設定值並鎖定後,該下一啟動碼及後續的啟動碼無法修改該第二功能集合中之該等功能的設定值。若該等功能中之一第一功能不具有預設設定值,該處理單元係先設定該第一功能
之設定值後再鎖定該第一功能之設定值。
在一些實施例中,該處理單元包括複數個運算核心,且該等運算核心中之該主控運算核心係依據所執行的該目前啟動碼以設定相應的該啟動旗標,且該等運算核心中之其他運算核心係串聯於該啟動旗標。
在一些實施例中,當該處理單元係由該目前啟動碼切換至執行下一啟動碼時,該權限控制電路係隱藏該記憶體單元所儲存的該目前啟動碼之儲存區域,並同時隱藏對應於該目前啟動碼之密鑰。
在一些實施例中,當該權限控制電路接收到該電腦裝置之一重置信號,該權限控制電路係清除各啟動碼之啟動旗標及各功能的設定值。
本發明更提供一種基於信任鏈的權限管理方法,用於一電腦裝置。電腦裝置包括複數個週邊裝置及一權限控制電路。上述權限管理方法包括:執行一信任鏈中之複數個啟動碼之其中一者以做為一目前啟動碼,其中該目前啟動碼係對應於該等週邊裝置之一第一功能集合;利用該權限控制電路從該電腦裝置之一非揮發性記憶體讀取相應於各啟動碼之該等週邊裝置之功能集合的設定值;以及因應於該目前啟動碼執行完畢,利用該權限控制電路設定該目前啟動碼在該信任鏈中之下一啟動碼相應的第二功能集合中之該等功能的設定值,並依據該第二功能集合中之該等功能的設定值以發出一權限控制信號以控制相應於該第二功能集合之週邊裝置,並接著設定該目前啟動碼之該下一啟動碼在該權限控制電路中相應的一啟動旗標以執行該下一啟動碼,其中該第一功能集合與該第二
功能集合不同。
100:電腦裝置
110:處理單元
111:系統匯流排
120:記憶體控制器
130:記憶體單元
131:揮發性記憶體
132:非揮發性記憶體
140:權限控制電路
141:權限控制邏輯
142:暫存器組
143:存取介面
150:匯流排主控裝置
160:週邊裝置
170:除錯埠管理電路
172:外部除錯裝置
200、210:軟體啟動流程
BL0~BLm、BL32-BL33、BLmm:啟動碼
400、410、420:軟體啟動流程
BF0~BFm:啟動旗標
FS1-FS3:功能集合
S510-S560:步驟
第1圖係顯示依據本發明一實施例中之電腦裝置的方塊圖。
第2A及2B圖為依據本發明不同實施例中之軟體啟動流程的示意圖。
第3圖為依據本發明一實施例中之權限控制電路的示意圖。
第4A圖為依據本發明一實施例中之權限控制電路的權限控制邏輯之示意圖。
第4B圖為依據本發明另一實施例中之權限控制電路的權限控制邏輯之示意圖。
第4C圖為依據本發明另一實施例中之權限控制電路的權限控制邏輯之示意圖。
第5圖為依據本發明一實施例中之基於信任鏈的權限管理方法的流程圖。
以下說明係為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的"包含"、"包括"等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、
方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如"第一"、"第二"、"第三"等詞係用來修飾權利要求中的元件,並非用來表示之間具有優先權順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
第1圖係顯示依據本發明一實施例中之電腦裝置的方塊圖。電腦裝置100例如為一個人電腦或一伺服器。在一實施例中,電腦裝置100係包括處理單元110、一記憶體控制器120、一記憶體單元130、一權限控制電路140、一或多個匯流排主控裝置150、複數個週邊裝置160及一除錯埠管理電路170。處理單元110、記憶體控制器120、記憶體單元130、權限控制電路140、匯流排主控裝置150、週邊裝置160及除錯埠管理電路170係透過系統匯流排111而互相電性連接。在一些實施例中,系統匯流排111例如可為先進高效能匯流排(advanced high-performance bus,AHB)、先進系統匯流排(advanced system bus,ASB)、先進週邊匯流排(advanced peripheral bus,APB)或先進可擴充介面(advance extensible interface,AXI),但本發明並不限於此。
處理單元110可使用多種方式實施,例如專用硬體電路或通用硬體實現(例如,單一處理器、具平行處理能力的多個處理器或多個處理核心、或其他具運算能力的處理器)、上述實現方式例如可為通用處理器(general-purpose processor)或中央處理器(central processing unit,CPU),但本發明並不限於此。
記憶體控制器120係用以控制記憶體單元130之資料存取。記憶體單元130包括一揮發性記憶體131及一非揮發性記憶
體132,其中揮發性記憶體131例如是靜態隨機存取記憶體(SRAM)或動態隨機存取記憶體(DRAM),但本發明並不限於此。非揮發性記憶體132例如是一硬碟機(hard disk drive)、一固態硬碟(solid-state disk)、一快閃記憶體(flash memory)、一唯讀記憶體(read-only memory)、可擦除可程式化唯讀記憶體(erasable programmable read-only memory,EPROM)、電子可擦除可程式化唯讀記憶體(electrically erasable programmable read-only memory,EEPROM)或電子熔絲(e-fuse),但本發明並不限於此。非揮發性記憶體132係用以儲存複數個啟動碼及作業系統、以及權限控制邏輯141所管理之不同功能集合之設定值。在一些實施例中,電腦裝置100可包括複數個非揮發性記憶體(可包含非揮發性記憶體132),其均電性連接至系統匯流排111,且啟動碼及不同功能集合之設定值可分開儲存於不同的非揮發性記憶體。本發明並不限定啟動碼及不同功能集合之設定值在一或多個非揮發性記憶體中的儲存方式。
在此實施例中,記憶體控制器120包括一記憶體分區功能,其可將所控制的非揮發記憶體132(例如為一唯讀記憶體)劃分為複數個區塊,且各區塊可擁有各自的特定屬性,其中上述各區塊的分區方式例如可為:固定大小、起始位址與結束位址、起始位址與區塊大小、或硬體預先定義分區。舉例來說,若分區方式為固定大小,則每個區塊皆為固定大小(例如為4KB),例如電腦裝置100中之位址0x0~0x0FFF為一區塊,位址0x1000~0x1FFF則為另一區塊,依此類推,且每個區塊均可單獨設定屬性。若分區方式為起始位址與結束位址,則每個區塊均可指定其起始位址及結束位址、
以及該區塊的屬性,例如可設定起始位址為0x1000,結束位址0x2000,則此區塊佔了0x1000~0x1FFF(即0x2000-1之數量)之位址範圍的空間。
若分區方式為起始位址與區塊大小,則每個區塊均可指定其起始位址及區塊大小、以及該區塊的屬性,例如可設定起始位址為0x1000,區塊大小為0x2000,則此區塊佔了0x1000~0x1FFF(即0x2000-1之數量)之位址範圍的空間。若分區方式為硬體預先定義分區,則硬體電路(例如權限控制電路140)則可直接定義非揮發性記憶體132中的複數個位址範圍分別對應至不同的啟動碼,例如0x2_0000~0x2_FFFF的位址範圍為啟動碼BL0專用的區塊、0x3_0000~0x3_FFFF的位址範圍為啟動碼BL1專用的區塊,依此類推。
匯流排主控裝置150例如具有控制記憶體單元130存取之能力或是可控制其他週邊裝置160。週邊裝置160可包括:序列式的通訊設備(例如支援UART、SPI、I2C、USB等協定)、監測電路(watchdog)、實時時鐘(real-time clock,RTC)、時脈控制器(clock controller)、電源管理單元(power management unit)、通用輸入/輸出埠(general-purposed I/O)控制單元、密鑰管理單元、內建自我測試(built-in self-test,BIST)邏輯等等,但本發明並不限於此。此外,除錯埠管理單元170亦屬於週邊裝置的其中一者。
詳細而言,各個週邊裝置160均配置了一些需要受到權限管制功能。舉例來說,實時時鐘為提供可信任的時間,將可能實作單調(monotonic)的功能,意即僅可將時鐘的值增加(上數),
不能減少(下數)。透過權限控制電路140,可以限制程式在某啟動階段之後即無法下數實時時鐘的值。時脈控制器則可提供系統中各裝置的時脈,且透過設定啟動旗標(booting flag)可限制時脈的開關,且時脈的調整僅在特定啟動階段才可被設定。電源管理單元控制系統中的電源開關、電壓的調整。在多電壓域(power domain)的系統中,電源管理單元可以單獨控制部分區域的電壓開關。結合啟動階段的權限管理,可以限制這些開關的調整權限。除錯埠管理單元170係包括一除錯埠,用以連接至外部除錯裝置(External debugger)172,其可存取系統資源、對系統進行除錯的路徑。除錯埠管理單元170會透過控制除錯埠來管制外部除錯裝置172存取系統的權限,而除錯埠管理單元170透過設定啟動旗標可以限制各啟動階段的除錯埠權限。
密鑰管理單元可將所儲存的密鑰區分為軟體在啟動流程中不同階段所使用的密鑰。密鑰管理單元例如可包括下列設計:密鑰僅有在軟體於相對應的啟動階段才可被存取。例如:密鑰被設定為啟動碼BL2,則僅當軟體執行在啟動碼BL2階段時,密鑰管理單元才會開發對此密鑰的存取。密鑰在軟體處於相對應的啟動階段之前(包含該階段)才能被存取,例如:密鑰對應啟動碼BL2,則當軟體在執行啟動碼BL0、BL1及BL2時,密鑰管理單元皆會允許此密鑰的存取。此後,密鑰管理單元會拒絕此密鑰的存取。內建自我測試邏輯可提供電腦裝置自動測試其電路是否正常的功能。透過設定啟動旗標,可以限制內建自我測試的啟動時機。
第2A及2B圖為依據本發明不同實施例中之軟體啟動流程的示意圖。如第2A圖所示,使用信任鏈的電腦裝置100在重
置(reset)或開機後,其軟體啟動流程200會基於硬體的設計以確保處理單元110必定先執行啟動碼BL0(例如稱為初始啟動碼或第一啟動碼),其中啟動碼BL0例如為完全不可修改的程式碼(immutable non-volatile code),且儲存於非揮發性記憶體132之特定位址範圍中。
當處理單元110開始執行程式碼BL0並且執行完程式碼BL0之任務(task)後,會判斷程式碼BL1是否存在。若程式碼BL1存在,則處理單元110對程式碼BL1進行驗證。當驗證通過後,處理單元110才會切換至程式碼BL1並執行,並且執行完程式碼BL1之任務後判斷程式碼BL2是否存在以及在程式碼BL2存在時對其進行驗證,依此類推。因此,利用上述流程可得到一條信任鏈,如第2A圖所示。
舉例來說,啟動碼BL0例如可執行下列操作:搜尋記憶體空間中是否包含啟動碼BL1、驗證啟動碼BL1之完整性、以及驗證啟動碼BL1之真實性(確保BL1是由合法之特定開發者提供)。啟動碼BL0在執行完成後,在跳離啟動碼BL0之前會設定啟動碼BL1相應的功能集合的設定值及鎖定值,並在功能集合的設定值鎖定值設定完成後再設定啟動旗標BF1以執行啟動碼BL1。當啟動碼BL1相應的啟動旗標BF1被設定之後,處理單元110會認為此時軟體正在執行啟動碼BL1,且電腦裝置100上的所有週邊裝置160皆僅有相應於啟動碼BL1的權限。當電腦裝置100重置之後,處理單元110(或權限控制電路140)會依據重置信號清除在權限控制電路140中的所有啟動旗標,此即表示軟體流程已重置,且處理單元110會從預先定義的啟動碼BL0開始執行,並確保軟體流程會遵守
信任鏈。其中,上述重置信號例如可為電腦裝置100重新上電之重置信號(power on reset,POR)。
在另一實施例中,電腦裝置100的軟體啟動流程210的信任鏈會產生分支,如第2B圖所示。舉例來說,在執行完啟動碼BL2之後,處理單元110可能會執行啟動碼BL32或BL33,且啟動碼BL32及BL33之權限可能不同。權限控制電路140可透過不同的啟動旗標控制各個啟動碼所相應之功能的開關。類似地,當電腦裝置100重置之後,處理單元110會依據重置信號以清除在權限控制電路140中的所有啟動旗標,此即表示軟體流程已重置,且處理單元110會從預先定義的啟動碼BL0開始執行,並確保軟體流程會遵守信任鏈。
第3圖為依據本發明一實施例中之權限控制電路的示意圖。
如第3圖所示,權限控制電路140包括權限控制邏輯141、一暫存器組142、以及一存取介面143。權限控制電路140可包括一匯流排介面(未繪示),並可透過系統匯流排111以電性連接至電腦裝置100中之其他元件,且處理單元110所執行的軟體可存取在暫存器組142中之各個啟動旗標的數值。權限控制邏輯141例如可具有存取非揮發性記憶體132之功能,其係透過存取介面143(例如為一非揮發性記憶體存取介面)讀取儲存於非揮發性記憶體132之權限管理設定值,並且提供寫入設定值的功能。
權限控制邏輯141係電性連接至各個週邊裝置160及除錯埠管理電路170並且可發送權限控制信號(authority control signal)至各個週邊裝置160及除錯埠管理電路170以控制
其相應之功能的開啟或關閉。暫存器組142可記錄複數個啟動旗標(flag),例如為啟動旗標BF0~啟動旗標BF(N-1),其中各個啟動旗標係對應於一啟動碼(例如啟動碼BL0~BL(N-1))。處理單元110所執行的軟體可以設定上述啟動旗標藉以表示目前的軟體流程的狀態,且權限控制邏輯141可依據上述啟動旗標以控制在電腦裝置100中的各項功能及週邊裝置160的使用權限。
在此實施例中,權限控制電路140可接收電腦裝置100中之重置信號,藉以清除儲存於暫存器組142中的所有啟動旗標,此即表示軟體流程已重置,且所有啟動旗標及權限控制邏輯141均會回到預設狀態。接著,處理單元110會從預先定義的啟動碼BL0開始執行,並確保軟體流程會遵守信任鏈。
請同時參考第3圖及第2B圖。在權限控制電路140之暫存器組142所儲存的各個啟動旗標係由一或多個位元所組成,且可表示「設置(configured)」及「未設置(not configured)」兩種狀態。處理單元110所執行的軟體可將暫存器組142中的各個啟動旗標設定為「設置」狀態,但無法將各個啟動旗標設定為「未設置」狀態。此外,各個啟動旗標僅可由電腦裝置100中之重置信號所清除以回到「未設置」狀態。
在此實施例中,各個啟動旗標的寫入權限亦會受權限控制邏輯141所管理。當啟動旗標BF1等於1時,啟動旗標BF2的寫入權限才會由權限控制邏輯141開啟。因此,啟動旗標BF2所相應的開機流程狀態會在啟動旗標BF1所相應的開機流程狀態之後。舉例來說,若啟動碼BL1及BL2之開機流程狀態係分別由啟動旗標BF1及BF2表示,則當開機流程狀態為執行啟動碼BL2時,表示啟
動碼BL2相應的權限已被啟動碼BL1正確地設定。
第4A圖為依據本發明一實施例中之權限控制電路的權限控制邏輯之示意圖。請同時參考第2A圖及第4A圖。
第4A圖中的軟體啟動流程400係類似於第2A圖之軟體啟動流程200,且軟體啟動流程400可包括m+1個啟動碼,例如為啟動碼BL0~BLm。各個啟動碼BL0~BLm均分別對應至一個啟動旗標。此外,若電腦裝置100之週邊裝置160具有n+1個功能,且各個啟動碼BL0~BLm均分別對應至功能集合FS0~FSm。例如權限控制邏輯141可將n+1個功能預先定義其設定值至m+1個集合中,且每個集合均對應至一個啟動旗標。其中,各個集合中之功能的預設值可以是權限控制電路140預先定義的設定值、不可被修改的設定值、或是預先儲存在非揮發性記憶體132中的設定值。當電腦裝置100重置後,權限控制電路140可透過存取介面143由非揮發性記憶體132讀取預先儲存之各個集合的設定值,其中每個集合FS的作用如第4A圖所示。
在此實施例中,當處理單元110執行啟動碼BL0之工作完成後,在跳離啟動碼BL0之前,啟動碼BL0會先設定相應於啟動碼BL1之功能集合FS1的各個功能的設定值及鎖定值,再接著設定相應於啟動碼BL1之啟動旗標BF1。當啟動旗標BF1設定完成後,處理單元110即執行啟動碼BL1,表示軟體啟動流程已處於啟動碼BL1之狀態,依此類推。
詳細而言,當處理單元110設定啟動旗標BF1時,表示會設定功能集合FS1中之各個功能的設定值及鎖定值(lock),其中設定值表示此功能是否可被使用,例如可用設定值1及0分別表示
開啟(enable)/關閉(disable)此功能。此外在第4A圖之各功能被標示為「NI」表示此功能未使用或未被鎖定。
鎖定值則表示此功能的設定值是否可再被修改,且設定值與鎖定值可能是連動的。若一特定功能的設定值之預設值為0,當此特定功能的設定值被設定為1時,就不可再被設定為0。當鎖定值被設定之後,只有在重置訊號觸發時,才能由處理單元110或權限控制電路140才能清除鎖定值,且將設定值回復到預設值。上述重置訊號例如為電腦裝置100重新上電的重置信號(POR),可用以將軟體流程重新執行,意即觸發重置訊號可將此硬體鎖定值清除,且處理單元110所執行的軟體也會先執行啟動碼BL0(即初始啟動碼)。
在第4A圖中,當啟動碼BL0執行結束時,處理單元110(或權限控制電路140)會先設定與功能集合FS1有關的各功能之設定值及/或鎖定值,再接著設定相應於啟動碼BL1之啟動旗標BF1。例如當設定啟動旗標BF1之前,處理單元110(或權限控制電路140)係將功能集合FS1中的功能1的設定值開啟(enable)並將功能2的設定值關閉(disable),在功能集合FS1中的其他功能的設定值及鎖定值則未被修改。
需注意的是,此時因為功能集合FS1中的功能1及功能2的設定值已被修改,故其相應的鎖定值亦會被設定為1(表示已鎖定),且在啟動碼BL0之後的各個啟動碼BL1~BLm均無權限可修改在相應的各個功能集合中的功能1及功能2的設定值。在功能集合FS1中未被修改設定值的功能3至功能m,其權限將開啟給後續的程式碼進行管理。則當處理單元110執行完畢啟動碼BL1後並且要
接著執行啟動碼BL2時,處理單元110(或權限控制電路140)則可視功能集合FS2之功能需求而設定相關功能的設定值,例如可將功能3的設定值設定為關閉。因為功能3的設定值已被啟動旗標BF2鎖定,所以在啟動碼BL2之後的啟動碼將無法再對功能4進行設定。
此外,在軟體啟動流程中的不同執行狀態時,權限控制電路140所輸出的權限控制信號也會隨之改變,如第4A圖中的權限控制邏輯141中之各功能的設定值所示。詳細而言,權限控制信號包括多個位元,且各位元可控制相應的週邊裝置的功能開啟或關閉。當部分功能的設定值未被目前的啟動碼修改時,則此部分功能的設定值會延用預設設定值或是由先前的啟動碼所修改的設定值。
第4B圖為依據本發明另一實施例中之權限控制電路的權限控制邏輯之示意圖。請同時參考第2B圖及第4B圖。
第4B圖中的軟體啟動流程410係類似於第2B圖之軟體啟動流程210。在軟體啟動流程410中,當啟動碼BL2執行完畢後會視條件而設定啟動旗標BF3或BF4,並選擇執行對應的啟動碼BL32或BL33。若執行啟動碼BL32,則軟體啟動流程410會進入第一分支,例如從啟動碼BL32至BLm。若執行啟動碼BL33,則軟體啟動流程410會進入第二分支,例如從啟動碼BL32至BLmm。類似地,各個啟動碼亦對應於一個啟動旗標,且各個啟動碼亦具有對應的功能集合FS。啟動旗標BF1及BF2的設定方式與第4A圖之實施例類似,故其細節於此不再贅述。
當啟動碼BL2執行完畢後,處理單元110會視條件而設定啟動旗標BF3或BF4。若執行啟動碼BL32使得軟體啟動流程
410會進入第一分支,則啟動旗標BF32中所設定的功能集合FS32中之部分功能(例如功能3)的設定值會被鎖定,故在第一分支之後續啟動碼僅能針對啟動旗標BF1~BF2尚未設定的設定值進行修改。若執行啟動碼BL33使得軟體啟動流程410會進入第二分支,則啟動旗標BF33中所設定的功能集合FS33中之部分功能(例如功能n)的設定值會被鎖定,故在第一分支之後續啟動碼僅能針對啟動旗標BF1、BF2及BF3尚未設定的設定值進行修改。
在第4B圖之軟體啟動流程410中,啟動碼BL32及BL33的啟動旗標BF32及BF33係由啟動碼BL2所設置,且啟動碼BL32及BL33無權互相啟動,故上述設計仍符合信任鏈的概念。
第4C圖為依據本發明另一實施例中之權限控制電路的權限控制邏輯之示意圖。請同時參考第2A圖及第4C圖。
在第4C圖之實施例中,第4C圖中的軟體啟動流程420係類似於第2A圖之軟體啟動流程200,且軟體啟動流程400可包括m+1個啟動碼,例如為啟動碼BL0~BLm。此外,功能1~9之預設設定值係用粗體字表示,且功能5並沒有預設設定值。
當處理單元110執行啟動碼BL0完畢並設定相應的啟動旗標BF0時,權限控制電路140可依據啟動旗標BF0對功能1及功能6進行設定及鎖定,例如功能1的設定值由預設的關閉狀態(例如設定值為0)設定為開啟狀態(例如設定值為1),且功能6的設定值由預設的開啟狀態(例如設定值為1)設定為關閉狀態(例如設定值為0)。此外,權限控制電路140可依據啟動旗標BF0對功能1及功能6的設定值進行鎖定,表示功能1及功能6之管理權限係屬於啟動碼BL0。當軟體啟動流程執行到啟動碼BL1時,因為功能1已被鎖定,
所以啟動碼BL1試圖修改功能1之設定值則會被拒絕。然而,啟動碼BL1仍有權限以設定功能2、3、7之設定值。在此實施例中,當啟動碼BL1設定功能7之設定時為開啟狀態後,並未鎖定功能7之設定值。故表示啟動碼BL1開放管理功能7之權限給後續的啟動碼,例如啟動碼BL2。
接著,軟體啟動流程執行到啟動碼BL2時,啟動碼BL2設定了功能3、4的設定值,並鎖定功能3、4、8的設定值,表示功能3、4、8的管理權限只到啟動碼BL2為止。因為啟動碼BL2並未設定功能8之設定值,表示功能8之設定值會維持在預設值且無法再被後續的啟動碼所修改。此外,功能4的預設設定值為開啟狀態,且啟動碼BL2將功能4設定為反向設定值(即關閉狀態),其中反向設定值即與鎖定值相同,故啟動碼BL2可以只設定功能4的設定值且不需再另外設定「鎖定值」。
此外,因為啟動碼BL2至BLm均未設定功能5及功能9,表示啟動碼BLm具有功能5及功能9的管理權限。如第4C圖所示,啟動碼BLm設定了功能5及功能9之鎖定值,但並未設定功能5及功能9的設定值。因為功能5並沒有預設設定值,故在此狀態下,啟動碼BLm設定功能5之鎖定值的操作是無效的。意即,需要先設定功能5的設定值後才可以設定功能5的鎖定值。
在前述實施例中,權限控制電路140可結合軟體的信任鏈流程,並提供一個階層式的硬體權限管理功能,並且可透過統一的權限控制電路140以達成多種優點。舉例來說,權限控制電路140可提供硬體啟動旗標以指示電腦裝置100當前的啟動階段(booting state),使得電腦裝置100可支援多個處理器或多個運算
核心。當電腦裝置100包括多個運算核心,則主控的運算核心可依據目前所執行的啟動碼以設定相應的啟動旗標,且其他的運算核心可透過上述啟動旗標以得知電腦裝置100的啟動狀態並進行相應的操作,藉以降低在多個運算核心之間的同步延遲。此外,多個運算核心的啟動階段可串聯於此硬體啟動旗標。
當使用了前述實施例中之硬體啟動旗標的設計,可以確保在軟體啟動流程的各階段中所有週邊裝置的權限之一致性(atomicity),意即統一的設定方式可確保各種權限功能的一致性。舉例來說,當軟體啟動流程從啟動碼BL0跳至啟動碼BL1時,權限控制電路140(或相應於啟動碼BL0之週邊裝置)可將啟動碼BL0的儲存區域隱藏,同時也會隱藏供啟動碼BL0所使用的密鑰,上述兩個動作及其作用會一致發生,故更能確保電腦裝置沒有安全漏洞。
因為權限控制電路140可以提供各個週邊裝置及相關硬體電路之預先設置且不可被任何軟體修改的權限管理功能,藉以確保所有預先設置的功能均能產生作用,且無法被任何軟體修改。此外,各功能的預設設定值可在電腦裝置啟動時就讀取完成,例如權限控制電路140可透過存取介面143以讀取儲存於非揮發性記憶體132中的預設設定值,因此可確保軟體啟動流程之各階段的權限狀態不會受到軟體執行狀態的影響。其中,設定值的寫入或修改可受到額外認證機制進行管理,例如需利用密碼認證成功後才能修改設定值。
第5圖為依據本發明一實施例中之基於信任鏈的權限管理方法的流程圖。
在步驟S510,開啟電腦裝置100之電源。
在步驟S520,利用權限控制電路140從電腦裝置100之一非揮發性記憶體讀取各週邊裝置在預設啟動碼之功能集合的預設設定值(及/或預設鎖定值),並依據所讀取的預設設定值以發出權限控制信號以控制相應的週邊裝置。
在步驟S525,處理單元110執行信任鏈中之預設啟動碼(例如啟動碼BL0)。其中,信任鏈至少包含預設啟動碼(例如啟動碼BL0)及後續的一或多個啟動碼(例如啟動碼BL1~BLm)。此外,預設啟動碼為處理單元110在開機時必定執行的啟動碼,故可不包含相應的啟動旗標。
在步驟S530,因應於執行完畢該信任鏈中之目前啟動碼,設定在該信任鏈中之下一啟動碼相應之功能集合的設定值及鎖定值。舉例來說,在信任鏈中之各啟動碼的執行流程可參考第2A~2B圖或第4A~4C圖之實施例。
在步驟S540,依據相應於下一啟動碼之設定值及鎖定值以發出權限控制信號以控制相應於下一啟動碼的週邊裝置。舉例來說,在軟體啟動流程中的不同執行狀態時,權限控制電路140所輸出的權限控制信號也會隨之改變,如第4A圖中的權限控制邏輯141中之各功能的設定值所示。詳細而言,權限控制信號包括多個位元,且各位元可控制相應的週邊裝置的功能開啟或關閉。當部分功能的設定值未被目前的啟動碼修改時,則此部分功能的設定值會延用預設設定值或是由先前的啟動碼所修改的設定值。舉例來說,若目前啟動碼有修改部分功能的設定值(例如與預設設定值不同),目前啟動碼可以一併將部分功能在修改後的設定值進行鎖定。若有某些功能不具有預設設定值,則需在設定此些功能之設定值後,鎖
定值才能發揮功用。一但有部分功能的設定值已被鎖定,在目前啟動碼的後續啟動碼均無權限再修改這些功能的設定值。
在步驟S550,設定下一啟動碼在權限控制電路140中相應的啟動旗標,並執行下一啟動碼。對於處理單元110而言,當下一啟動碼之啟動旗標被設定後,即表示軟體執行的信任鏈的狀態已進入下一啟動碼之執行狀態。因此,在處理單元110執行下一啟動碼之前,權限控制電路140需先設定相應於下一啟動碼之功能集合的設定值及鎖定值,以避免下一啟動碼可控制在其權限之外的週邊裝置。
在步驟S560,判斷是否為目前啟動碼是否為信任鏈中的最後一個啟動碼。若目前啟動碼為信任鏈中的最後一個啟動碼,則此流程結束。若目前啟動碼並非信任鏈中的最後一個啟動碼,則回到步驟S530,並執行信任鏈中的下一個啟動碼。舉例來說,處理單元110可在執行目前啟動碼完畢後,再判斷目前啟動碼是否為信任鏈中的最後一個啟動碼。
綜上所述,本發明係提供一種電腦裝置及基於信任鏈的權限管理方法,其可利用統一的硬體權限控制電路以控制在信任鏈中之各啟動碼所相應之功能的權限,藉以提供階層式的權限管理功能。此外,本發明之電腦裝置及權限管理方法可確保在軟體啟動流程之各階段的所有週邊裝置之權限以及權限管理作用時間的一致性,藉以增進電腦裝置之安全性。
本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾,因此本發明之
保護範圍當視後附之申請專利範圍所界定者為準。
100:電腦裝置
140:權限控制電路
110:處理單元
150:匯流排主控裝置
111:系統匯流排
160:週邊裝置
120:記憶體控制器
170:除錯埠管理電路
130:記憶體單元
172:外部除錯裝置
131:揮發性記憶體
132:非揮發性記憶體
Claims (9)
- 一種電腦裝置,包括:複數個週邊裝置,具有相應的複數個功能;一記憶體單元,用以儲存複數個啟動碼及相應於各啟動碼之該等週邊裝置之功能集合的設定值,其中該等啟動碼係組成一信任鏈;一處理單元,用以執行該信任鏈中之其中一個啟動碼以做為一目前啟動碼,其中該目前啟動碼係對應於該等週邊裝置之一第一功能集合;以及一權限控制電路,電性連接至該處理單元及該等週邊裝置,用以從該記憶體單元讀取相應於各啟動碼之該等週邊裝置的功能集合的設定值;其中,因應於該處理單元執行該目前啟動碼完畢,該權限控制電路係設定該目前啟動碼在該信任鏈中之下一啟動碼相應的第二功能集合中之該等功能的設定值,並依據該第二功能集合中之該等功能的設定值以發出一權限控制信號以控制相應於該第二功能集合之週邊裝置,並接著設定該目前啟動碼之該下一啟動碼在該權限控制電路中相應的一啟動旗標以使該處理單元執行該下一啟動碼;其中該第一功能集合與該第二功能集合不同;其中當該處理單元由該目前啟動碼切換至執行下一啟動碼時,該權限控制電路係隱藏該記憶體單元所儲存的該目前啟動碼之儲存區域,並同時隱藏對應於該目前啟動碼之密鑰。
- 如申請專利範圍第1項所述之電腦裝置,其中當該下一啟動碼相應的該第二功能集合中之該等功能的設定值被設定及鎖 定後,該下一啟動碼及後續的啟動碼無法修改該第二功能集合中之該等功能的設定值。
- 如申請專利範圍第1項所述之電腦裝置,其中若該等功能中之一第一功能不具有預設設定值,該處理單元係先設定該第一功能之設定值後再鎖定該第一功能之設定值。
- 如申請專利範圍第1項所述之電腦裝置,其中該處理單元包括複數個運算核心,且該等運算核心中之該主控運算核心係依據所執行的該目前啟動碼以設定相應的該啟動旗標,且該等運算核心中之其他運算核心係串聯於該啟動旗標。
- 如申請專利範圍第1項所述之電腦裝置,其中當該權限控制電路接收到該電腦裝置之一重置信號,該權限控制電路係清除各啟動碼之啟動旗標及各功能的設定值。
- 一種基於信任鏈的權限管理方法,用於一電腦裝置,該電腦裝置包括複數個週邊裝置及一權限控制電路,該方法包括:執行一信任鏈中之複數個啟動碼之其中一者以做為一目前啟動碼,其中該目前啟動碼係對應於該等週邊裝置之一第一功能集合;利用該權限控制電路從該電腦裝置之一非揮發性記憶體讀取相應於各啟動碼之該等週邊裝置之功能集合的設定值;因應於該目前啟動碼執行完畢,利用該權限控制電路設定該目前啟動碼在該信任鏈中之下一啟動碼相應的第二功能集合中之該等功能的設定值,並依據該第二功能集合中之該等功能的設定值以發出一權限控制信號以控制相應於該第二功能集合之週邊裝置,並接著設定該目前啟動碼之該下一啟動碼 在該權限控制電路中相應的一啟動旗標以執行該下一啟動碼;以及當由該目前啟動碼切換至執行下一啟動碼時,利用該權限控制電路隱藏該記憶體單元所儲存的該目前啟動碼之儲存區域,並同時隱藏對應於該目前啟動碼之密鑰;其中該第一功能集合與該第二功能集合不同。
- 如申請專利範圍第6項所述之基於信任鏈的權限管理方法,其中當該下一啟動碼相應的該第二功能集合中之該等功能的設定值被設定及鎖定後,該下一啟動碼及後續的該等啟動碼無法修改該第二功能集合中之該等功能的設定值。
- 如申請專利範圍第6項所述之基於信任鏈的權限管理方法,更包括:若該等功能中之一第一功能不具有預設設定值,先設定該第一功能之設定值後再鎖定該第一功能之設定值。
- 如申請專利範圍第6項所述之基於信任鏈的權限管理方法,其中該電腦裝置之一處理單元包括複數個運算核心,且該等運算核心中之該主控運算核心係依據所執行的該目前啟動碼以設定相應的該啟動旗標,且該等運算核心中之其他運算核心係串聯於該啟動旗標。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108148545A TWI804703B (zh) | 2019-12-31 | 2019-12-31 | 電腦裝置及基於信任鏈的權限管理方法 |
CN202011404409.1A CN113064663B (zh) | 2019-12-31 | 2020-12-04 | 电脑装置及基于信任链的权限管理方法 |
US17/138,141 US11347863B2 (en) | 2019-12-31 | 2020-12-30 | Computer apparatus and authority management method based on trust chain |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108148545A TWI804703B (zh) | 2019-12-31 | 2019-12-31 | 電腦裝置及基於信任鏈的權限管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202127435A TW202127435A (zh) | 2021-07-16 |
TWI804703B true TWI804703B (zh) | 2023-06-11 |
Family
ID=76545513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108148545A TWI804703B (zh) | 2019-12-31 | 2019-12-31 | 電腦裝置及基於信任鏈的權限管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11347863B2 (zh) |
CN (1) | CN113064663B (zh) |
TW (1) | TWI804703B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB202014682D0 (en) * | 2020-09-17 | 2020-11-04 | Nordic Semiconductor Asa | Bootloaders |
US12008107B2 (en) * | 2022-06-27 | 2024-06-11 | Nuvoton Technology Corporation | Chip and method capable of authenticating off-chip debug firmware program and debug user |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101167108A (zh) * | 2005-03-09 | 2008-04-23 | Igt公司 | 作为关键事件存储器用于掉电游戏机的mram |
US20150052610A1 (en) * | 2013-08-15 | 2015-02-19 | Microsoft Corporation | Global platform health management |
CN104794393A (zh) * | 2015-04-24 | 2015-07-22 | 杭州字节信息技术有限公司 | 一种嵌入式分区映像安全认证及内核可信引导方法及其设备 |
TW201610682A (zh) * | 2014-06-27 | 2016-03-16 | 英特爾股份有限公司 | 確認虛擬位址轉譯 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040005505A (ko) * | 2002-07-10 | 2004-01-16 | 삼성전자주식회사 | 컴퓨터시스템 및 그 부팅제어방법 |
CN1297891C (zh) * | 2003-06-16 | 2007-01-31 | 纬创资通股份有限公司 | 交叉式固件升级方法和系统 |
US20060136705A1 (en) * | 2004-12-21 | 2006-06-22 | Motorola, Inc. | Multiple stage software verification |
US8145917B2 (en) * | 2005-12-30 | 2012-03-27 | Nokia Corporation | Security bootstrapping for distributed architecture devices |
US7987351B2 (en) * | 2006-10-06 | 2011-07-26 | Broadcom Corporation | Method and system for enhanced boot protection |
KR20090037712A (ko) * | 2007-10-12 | 2009-04-16 | 삼성전자주식회사 | 보안 부트-업되는 전자 장치, 그것의 해쉬값 계산 방법 및부트-업 방법 |
WO2015048922A1 (en) * | 2013-10-02 | 2015-04-09 | Intel Corporation | Trusted boot and runtime operation |
US9830456B2 (en) * | 2013-10-21 | 2017-11-28 | Cisco Technology, Inc. | Trust transference from a trusted processor to an untrusted processor |
US9755831B2 (en) * | 2014-01-22 | 2017-09-05 | Qualcomm Incorporated | Key extraction during secure boot |
US10282549B2 (en) * | 2017-03-07 | 2019-05-07 | Hewlett Packard Enterprise Development Lp | Modifying service operating system of baseboard management controller |
TWI698769B (zh) * | 2018-04-18 | 2020-07-11 | 新唐科技股份有限公司 | 透過匯流排安全存取周邊裝置之裝置及方法 |
GB201806465D0 (en) * | 2018-04-20 | 2018-06-06 | Nordic Semiconductor Asa | Memory-access controll |
US11475134B2 (en) * | 2019-04-10 | 2022-10-18 | Arm Limited | Bootstrapping a device |
-
2019
- 2019-12-31 TW TW108148545A patent/TWI804703B/zh active
-
2020
- 2020-12-04 CN CN202011404409.1A patent/CN113064663B/zh active Active
- 2020-12-30 US US17/138,141 patent/US11347863B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101167108A (zh) * | 2005-03-09 | 2008-04-23 | Igt公司 | 作为关键事件存储器用于掉电游戏机的mram |
US20150052610A1 (en) * | 2013-08-15 | 2015-02-19 | Microsoft Corporation | Global platform health management |
TW201610682A (zh) * | 2014-06-27 | 2016-03-16 | 英特爾股份有限公司 | 確認虛擬位址轉譯 |
CN104794393A (zh) * | 2015-04-24 | 2015-07-22 | 杭州字节信息技术有限公司 | 一种嵌入式分区映像安全认证及内核可信引导方法及其设备 |
Also Published As
Publication number | Publication date |
---|---|
US11347863B2 (en) | 2022-05-31 |
TW202127435A (zh) | 2021-07-16 |
CN113064663A (zh) | 2021-07-02 |
CN113064663B (zh) | 2024-04-09 |
US20210200876A1 (en) | 2021-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7149854B2 (en) | External locking mechanism for personal computer memory locations | |
EP3646223B1 (en) | Remote attestation for multi-core processor | |
JP6433198B2 (ja) | 安全なブートromパッチのためのシステム及び方法 | |
US7917716B2 (en) | Memory protection for embedded controllers | |
US6938164B1 (en) | Method and system for allowing code to be securely initialized in a computer | |
US6397337B1 (en) | Unified password prompt of a computer system | |
JP6985011B2 (ja) | アクセス保護スキームを確保するための装置及び方法 | |
US10402567B2 (en) | Secure boot for multi-core processor | |
US8161258B2 (en) | Method to qualify access to a block storage device via augmentation of the device'S controller and firmware flow | |
JP5975629B2 (ja) | メモリ保護ユニットおよび記憶素子へのアクセスコントロール方法 | |
KR101077673B1 (ko) | 신속하고 안전한 메모리 컨텍스트 스위칭을 위한 장치 및방법 | |
TW201015323A (en) | Secure information processing | |
JP2007249933A (ja) | データ処理装置内コンテンツへのアクセス管理 | |
US11586779B2 (en) | Embedded system and method | |
EP3646224B1 (en) | Secure key storage for multi-core processor | |
WO2006093618A2 (en) | Integrated microcontroller and memory with secure interface between system program and user operating system and application | |
EP3631667B1 (en) | Flash recovery mode | |
TWI804703B (zh) | 電腦裝置及基於信任鏈的權限管理方法 | |
CN113254949A (zh) | 对存储器区域的访问权限 | |
US11531760B1 (en) | Baseboard management controller (BMC)-based security processor | |
WO2020063975A1 (zh) | 一种非易失性存储器的分区保护方法及装置 | |
CN112541166A (zh) | 一种方法、系统和计算机可读存储介质 | |
CN114721493B (zh) | 芯片启动方法、计算机设备及可读存储介质 | |
CN116340243A (zh) | 一种双核可信执行的安全芯片架构 | |
US9589088B1 (en) | Partitioning memory in programmable integrated circuits |