BIOS裡面的SGX全名為“Intel Software Guard Extensions”,是對因特爾體系(IA)的一個擴展,旨在以硬體安全為強制性保障,不依賴於韌體和軟體的安全狀態,提供使用者空間的可信任執行環境,可增強軟體的安全性。
本教學操作環境:windows7系統、Dell G3電腦。
SGX技術定義
SGX全名為Intel Software Guard Extensions,顧名思義,其是對因特爾體系(IA)的一個擴展,用於增強軟體的安全性。
SGX指令集擴展,旨在以硬體安全為強制性保障,不依賴韌體和軟體的安全狀態,提供用戶空間的可信任執行環境,透過一組新的指令集擴展與訪問控制機制,實現不同程式間的隔離運行,保障使用者關鍵程式碼與資料的機密性與完整性不受惡意軟體的破壞。
這種方式並不是識別和隔離平台上的所有惡意軟體,而是將合法軟體的安全作業封裝在一個enclave中,保護其不受惡意軟體的攻擊,特權或非特權的軟體都無法存取enclave,也就是說,一旦軟體和資料位於enclave中,即便作業系統或和VMM(Hypervisor)也無法影響enclave裡面的程式碼和資料。
Enclave的安全邊界只包含CPU和它本身。 SGX創建的enclave也可以理解為一個可信任執行環境TEE(Trusted Execution Environment)。
不過其與ARM TrustZone(TZ)還是有一點小區別的,TZ中透過CPU劃分為兩個隔離環境(安全世界和正常世界),兩者之間透過SMC指令通訊;而SGX中一個CPU可以運行多個安全enclaves,並發執行亦可。
當然,在TZ的安全世界內部實現多個相互隔離的安全服務也可達到相同的效果。
SGX Enclave的創建
#借助Intel處理器的SGX技術,透過CPU的硬體模式切換,系統進入可信任模式執行,只使用必需的硬體構成一個完全隔離的特權模式,載入一個極小的微核心作業系統支援任務調度,完成身分認證,並根據認證後的使用者身分.
透過使用Intel SGX技術,建構Enclave作為完全隔離的特權模式的具體實作方案如下:
(1)將需要執行的虛擬機器映像載入到磁碟中。
(2)產生加密應用程式程式碼和資料的秘鑰憑證,SGX技術提供了一種較為先進的秘鑰加密方法,其秘鑰由SGX版本秘鑰、CPU機器秘鑰和Intel官方分配給使用者的秘鑰在秘鑰產生演算法下產生的全新秘鑰,使用此秘鑰對需要載入的應用程式的程式碼和資料進行加密。
(3)將需要載入的應用程式或鏡像的程式碼和資料先載入到SGX Loader載入器中,為將其載入至Enclave做準備。
(4)在Intel SGX 可信模式下動態申請建立一個Enclave。
(5)將需要載入的程式和資料以EPC(Enclave Page Cache)的形式先透過秘鑰憑證解密。
(6)透過SGX指令證明解密後的程式和資料可信,並將其載入進Enclave中,然後對載入進Enclave中的每個EPC內容進行複製。
(7)由於使用了硬體隔離,進一步保障Enclave的機密性和完整性,保障了不同的Enclave之間不會發生衝突更不會允許其互相存取。
(8)啟動Enclave初始化程序,禁止繼續載入和驗證EPC,產生Enclave身分憑證,並對此憑證進行加密,並作為Enclave標示存入Enclave的TCS(Thread Control Structure)中,以恢復和驗證其身份。
(9)SGX的隔離完成,透過硬體隔離的Enclave中的鏡像程式開始執行,建構基於SGX技術的硬體隔離完成。
SGX Enclave的啟動和銷毀
在完成建置Enclave後,為保護Enclave在運行結束或掛起後,Enclave中的資訊不被洩露,而Enclave中的應用程式可能會因為系統出現中斷、異常等出現非正常情況下的退出,為解決此類問題使用SGX技術對可能出現的同步退出和非同步退出設定不同的處理方式,在同步退出時, Enclave中運行的資料和程式碼將會根據自訂的EEE(Enclave Exiting Events) 設定的處理方式進行處理。而如果時非同步退出的情況下,Enclave中的資料和運作狀態等資訊將會秘鑰憑證進行加密,並儲存到Enclave之外,在下一次啟動系統時有選擇的復原中斷的Enclave。
SGX 建立Enclave可信任通訊通道
#對於SGX Enclave的存取請求,建構偵測機制進行限制,首先判斷是否啟動了Enclave模式,然後判斷存取請求是否來自Enclave內部,如果是則繼續判斷,如果不是則回傳存取失敗,然後根據給予產生Enclave前的身份憑證用於檢驗此存取請求是否來自同一個Enclave,如果是則透過存取偵測,若不是則根據Enclave的身分憑證記錄表,更換下一個Enclave身分憑證進行匹配,知道所有的正在執行的Enclave全部匹配完成,若還無法匹配成功,返回訪問失敗。
更多相關知識,請造訪常見問題欄位!
以上是BIOS裡面SGX是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!