當前位置:
首頁 > 新聞 > SGX的外部組件概述(一)

SGX的外部組件概述(一)

此前,我曾講過SGX的內部組件,從今天開始,我將繼續講解SGX的外部組件。

在這篇文章中,我首先會快速解釋一下應用程序如何與其enclave的相互作用過程,然後詳細介紹SDK和PSW中包含的軟體,最後,總結SGX技術可能遭受的攻擊方式。

相互作用方式

從理論上講,SGX enclave可以看作是一個能夠執行任意演算法的黑匣子。這個黑匣子可以使用下面介紹的三種不同方式與外界進行通信。

Enclave調用(ECALL)

應用程序可以在enclave內部調用預定義的函數,將進入參數和指針傳遞給應用程序內的共享內存,應用程序對enclave的調用便稱為ECALL。

外部調用(OCALL)

當enclave執行時,它可以對應用程序中的預定義函數執行OCALL,不過與ECALL相反,OCALL無法與應用程序共享enclave內存,因此必須在OCALL之前將參數複製到應用程序內存中。

非同步退出事件(AEX)

由於中斷或異常,執行也可以退出enclave,這些enclave退出事件被稱為非同步退出事件(AEX),它們可以從enclave內的任意位置將控制從enclave轉移到應用程序。

相互作用過程

可信代碼庫(TCB)

開發使用SGX enclave的應用程序需要提前標識好那些要保護的資源,以及包含這些資源的數據結構和管理它們的代碼。然後,所有已標識的內容必須放在enclave內。enclave文件是一個與傳統操作系統載入器兼容的庫,它包含enclave的代碼和數據,在磁碟上以明文形式顯示。

介面函數

應用程序與其enclave之間的介面必須仔細設計,由於enclave會提前聲明應用程序可以調用哪些函數,以及它可以調用的應用程序的函數。由於Enclave進入參數可以被非安全代碼觀察和修改,因此必須對它們進行仔細的檢查。另外,enclave無法直接訪問操作系統的服務,必須調用其應用程序。所以這些調用既不會保證隱私信息不被泄露,也不會保證按照enclave的預期執行。

軟體開發工具包

軟體開發工具包(SDK)為開發人員提供了開發支持SGX的應用程序所需的一切,它由一個生成應用程序和enclave之間的介面函數的工具,一個在使用它之前對enclave進行簽名的工具,一個調試它的工具以及一個性能檢查的工具組成。另外,它還包含模板和樣本參數,用於在Windows下使用Visual Studio開發enclave,或在Linux下使用Makefile。

平台軟體

平台軟體(PSW)是允許支持SGX的應用程序在目標平台上執行的軟體棧,它適用於Windows和Linux操作系統,由4個主要部分組成:

1.提供對硬體功能進行訪問的驅動程序;

2.為執行和認證提供多個支持庫;

3.運行所必需的架構型enclave;

4.載入並與enclave進行通信的服務;

架構型enclave

為了讓執行環境變得更為安全,需要幾個架構型enclave(Architectural Enclave,AE)。架構型enclave由英特爾提供並簽名,負責執行啟動策略,執行provisioning和認證過程……

啟動Enclave

啟動Enclave(Launch Enclave ,LE)是負責向希望在平台上執行任務的其他enclave分配EINITTOKEN結構,該結構會檢查enclave的簽名和標識,看它們是否有效。為了生成令牌,EINITTOKEN結構會負責啟動密鑰,因此啟動Enclave是唯一能夠檢索EINITTOKEN結構的enclave。

Provisioning enclave

Provisioning Enclave(PvE)是負責通過與Intel Provisioning Service伺服器通信來檢索認證密鑰的enclave。為了做到這一點,它使用PcE提供的證書認證平台的真實性。

Provisioning Certificate Enclave

Provisioning Certificate Enclave(PcE)是負責簽名發送給PvE的處理器證書的enclave。為了做到這一點,PcE使用Provisioning Key,它是唯一能夠檢索到它的enclave。 PvE和PcE目前還是作為獨立的enclave來實現的。

Quoting Enclave

Quoting Enclave(QE)負責檢測對enclave標識的信任程度以及它在遠程認證過程中執行的環境。它會解密從PvE接收的認證密鑰,並使用該密鑰將REPORT結構(本地驗證)轉換為QUOTE結構(遠程驗證)。

平台服務enclave

Platform Service Enclaves (PSE)是一個架構型enclave,為其他enclave提供多種服務,如單調計數器,可信時間等。這些enclave利用管理引擎(ME),形成一個個孤立的,安全的管理平台。

密鑰目錄

每個支持SGX的CPU都包含兩個存儲在e-fuses存儲電路中的root密鑰——Root Provisioning Key(RPK)和根Seal Key( Root Seal Key,RSK)。英特爾會支持RPK啟用遠程認證過程,而RSK僅被平台所支持。儘管SGX的攻擊模型已經排除了物理攻擊的可能性,但這反過來會使得處理器架構難以被使用,或者至少使得提取密鑰成為非常複雜的事情。有了足夠的硬體支持,就可以以破壞性的方式讀取e-fuses存儲電路。這就是為什麼只有加密版本的密鑰存儲在e-fuses存儲電路上的原因,Physical Unclonable Function(PUF)用於存儲在處理器執行期間解密其他密鑰的對稱密鑰。

root密鑰

Root Provisioning Key(RPK)

英特爾在安全處理過程中創建的第一個密鑰就是Root Provisioning Key(RPK)。此密鑰是在位於名為Intel Key Generation Facility(iKGF)的設施內的專用硬體安全模塊(HSM)上隨機生成的。英特爾負責維護包含HSM生成的所有密鑰的資料庫,RPK也被發送到多個運行設施,並嵌入到處理器e-fuses內。

Root Seal Key

位於e-fuses內的第二個密鑰被稱為Root Seal Key(RSK),與第RSK的相同之處在於,RSK會保證每個單獨運行之間的統計差異。與RSK相反的是,英特爾宣布從其運行環節中中刪除所有這些密鑰的痕迹,以便每個平台都擁有一個只有自己知道的唯一密鑰。

訪問導出密鑰

根據安全設計原則,enclave是無法訪問root密鑰的。然而,它可以訪問從root密鑰導出的密鑰。導出函數允許enclave開發者指定自己的密鑰導出策略。這些策略允許使用可信值,如MRENCLAVE,MRSIGNER或enclave的屬性。不過,enclave無法獲得屬於另一個enclave的MRENCLAVE或MRSIGNER的鑰匙。此外,當密鑰導出策略不使用欄位時,它會自動設置為零。因此,即使非專用密鑰可用,也無法從中導出專用密鑰。

為了添加來自用戶的熵,在導出期間使用名為Owner Epoch的值作為參數。該值在啟動時通過導出密碼進行配置,並在每個power循環期間保存在非易失性內存中。對於enclave而言,這個值必須保持不變,才能檢索相同的密鑰。相反,當平台的管理者更改時,必須更改此值,因為它會阻止新所有者訪問舊所有者的個人信息,直到恢復原始密碼。

SGX基礎設施支持TCB對其硬體和軟體組件的更新,每個組件都有一個SVN,它會在每次安全更新後都遞增SVN。一個新的SVN會導致一個新的Seal Key。這意味著,新的TCB可以訪問舊的TCB的密鑰,以進行數據遷移,但舊的TCB不能訪問新TCB的密鑰。

各種密鑰的導出

Provisioning Key

此密鑰是從RPK導出的,並用作Intel Provisioning Service與處理器之間的信任root(與TCB版本相關聯)。當非SGX處理器使用一組合法的SGX處理器時,會危及所有處理器的遠程認證過程,因此必須採取極端的預防措施,以禁止對Provisioning Key的訪問。目前,只有當enclave由英特爾簽名(英特爾的MRSIGNER在Launch Enclave代碼中被硬編碼)時,Launch Enclave才能訪問此密鑰。

Provisioning Seal Key

該密鑰是從RPK和RSK導出的,在組中的處理器註冊期間,使用此密鑰對每個平台的私鑰進行加密,並將其發送到英特爾的認證服務系統。必須注意的是,私鑰不可以使用RPK加密,因為這會破壞使用的匿名註冊協議。類似地,私鑰也不能使用RSK加密,因為它允許非特權enclave訪問平台的私鑰。但問題是,已知RSK的生成過程存在不確定性,人們可能會認為英特爾知道每個平台的私鑰。

啟動密鑰(Launch Key)

此密鑰是由RSK導出的,並由Launch Enclave用於生成EINITTOKEN。未經英特爾簽名的每個enclave必須獲得此令牌,否則處理器無法實例化該令牌。而且只有特定的MRSIGNER(其對應的私鑰只有英特爾知道)才能訪問啟動密鑰。在SGXv2中,可以通過編程方式更改Launch Enclave的MRSIGNER,但尚不知道英特爾打算如何將訪問控制應用於Provisioning Key。

Seal Key

此密鑰是從RSK導出的,用於加密與當前平台相關的數據。重要的是無論是加密還是標識驗證,都不要使用非專用的Seal Key ,因為這會損害enclave的安全性。

報告密鑰(Report Key)

此密鑰是從RSK導出的,用於本地認證過程。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

2018年第二季度網路犯罪技術總結和預測
Hide N Seek殭屍網路:在更多平台和設備上不斷的添加漏洞利用

TAG:嘶吼RoarTalk |