SGX技術初探


一、SGX技術背景

1.1 SGX技術定義

SGX全稱Intel Software Guard Extensions,顧名思義,其是對因特爾體系(IA)的一個擴展,用於增強軟件的安全性。這種方式並不是識別和隔離平台上的所有惡意軟件,而是將合法軟件的安全操作封裝在一個enclave中,保護其不受惡意軟件的攻擊,特權或者非特權的軟件都無法訪問enclave,也就是說,一旦軟件和數據位於enclave中,即便操作系統或者和VMM(Hypervisor)也無法影響enclave里面的代碼和數據。Enclave的安全邊界只包含CPU和它自身。SGX創建的enclave也可以理解為一個可信執行環境TEE(Trusted Execution Environment)。不過其與ARM TrustZone(TZ)還是有一點小區別的,TZ中通過CPU划分為兩個隔離環境(安全世界和正常世界),兩者之間通過SMC指令通信;而SGX中一個CPU可以運行多個安全enclaves,並發執行亦可。當然,在TZ的安全世界內部實現多個相互隔離的安全服務亦可達到同樣的效果。
1.2 技術目標

相關文獻資料

---Intel發布了三個博客給出了SGX的設計目標(總共8個設計目標),作為理解SGX的背景材料比較重要:

 (1Intel? SGX for Dummies (Intel? SGX Design Objectives) : September 2013, Matthew Hoekstra

 (2Intel? SGX for Dummies – Part 2 : June 2014, Matthew Hoekstra

 (3Intel? SGX for Dummies – Part 3 : September 2014, Matthew Hoekstra

SGX本身的運行機制可以通過如下資料了解(前三篇是Intel在2013的HASP workshop上一連出三篇介紹SGX的文章):

         (4)Innovative Instructions and Software Model for Isolated Execution: June 2013, Frank McKeen, Ilya Alexandrovich, Alex Berenzon, Carlos Rozas, Hisham Shafi, Vedvyas Shanbhogue and Uday Savagaonkar, Intel Corporation

         (5)Using Innovative Instructions to Create Trustworthy Software Solutions

         (6)Innovative Technology for CPU Based Attestation and Sealing

         (7)Intel? Software Guard Extensions(Intel? SGX) Instructions and Programming Model: June 2013, Frank McKeen, Ilya Alexandrovich, Alex Berenzon, Carlos Rozas, Vedvyas Shanbhogue and Uday Savagaonkar, Intel Corporation

         (8)Intel? Software Guard Extensions(Intel? SGX): November 2013, Carlos Rozas, Intel Labs (given at CMU)

         (9)Intel? Software Guard Extensions Programming Reference Rev 2 (#329298-002): October 2014

---德國Technische Universit?t Darmstadt (CASED)的教授Ahmad-Reza Sadeghi作了一個關於嵌入式系統安全的講座,其中對Intel SGX這塊也有一個報告,總結的很不錯,如下: 

          (10Trusted Execution Environments Intel SGX

---了解SGX的基本運行方式和原理后,用戶最關心的就是SGX能有什么實際應用了,大家都知道PC時代是“WinTel”時代,也就是微軟和因特爾密不可分的關系,最先實用SGX的就是微軟了,值得關注的是微軟的VC3和Haven,文章分布參考如下鏈接:

         (11VC3: Trustworthy Data Analytics in the Cloud,October 2014

         (12Shielding applications from an untrusted cloud with Haven ,OSDI 2014

---作為安全方向的新技術,由於還沒有實用的系統和產品,分析其安全性就是比較重要的一步,下面資料是關於SGX技術的一些安全分析:

         (13Intel Software Guard Extensions (SGX) Is Mighty Interesting: July 2013, Rich Mogull - Discusses the positive applications against malware, hypervisors and potential to replace HSMs.

         (14Thoughts on Intel's upcoming Software Guard Extensions (Part 1): August 2013, Joanna Rutkowska – Initial high-level thoughts on the functionality provided and how it compliments existing Intel technologies.

         (15Thoughts on Intel's upcoming Software Guard Extensions (Part 2): September 2013, Joanna Rutkowska – Lower-level thoughts on good and bad applications for SGX.

         (16SGX: the good, the bad and the downright ugly: January 2014, Shaun Davenport & Richard Ford -

 

(1)允許應用開發者保護敏感信息不被運行在更高特權等級下的欺詐軟件非法訪問和修改。

(2)能夠使應用可以保護敏感代碼和數據的機密性和完整性並不會被正常的系統軟件對平台資源進行管理和控制的功能所擾亂。

(3)使消費者的計算設備保持對其平台的控制並自由選擇下載或不下載他們選擇的應用程序和服務。

(4)使平台能夠驗證一個應用程序的可信代碼並且提供一個源自處理器內的包含此驗證方式和其他證明代碼已經正確的在可信環境下得到初始化的憑證的符號化憑證。

(5)能夠使用成熟的工具和處理器開發可信的應用軟件.

(6)Allow the performance of trusted applications to scale with the capabilities of the underlying application processor.

(7)使軟件開發商通過他們選擇的分銷渠道可以自行決定可信軟件的發布和更新的頻率。

(8)能夠使應用程序定義代碼和數據安全區即使在攻擊者已經獲得平台的實際控制並直接攻擊內存的境況下也能保證安全和隱秘。

二、SGX技術硬件實現結構

三、SGX數據類型和指令

四、SGX Enclave的創建

SGX
借助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全部匹配完成,若還無法匹配成功,返回訪問失敗。

七、SGX的遠程證明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM