博客 / 詳情

返回

TrustFlow 可信執行環境之 Intel SGX TEE 方案

打開鏈接即可點亮社區Star,照亮技術的前進之路。

Github 地址:https://github.com/secretflow/trustflow/

Intel SGX(Software Guard Extensions)是由Intel推出的一種TEE方案。SGX的安全模型是隻信任CPU和微碼。

Enclave

SGX最重要的核心概念是Enclave(飛地),Enclave可以被視為進程中安全可信的部分,其中運行的程序和數據的機密性和完整性受到SGX的保護。Enclave所處的內存是加密的,除了Enclave自身和CPU之外, 其他系統軟件包括 Operating system (OS), Virtual Machine Monitor (VMM), System Management Mode (SMM), BIOS等都無法訪問 Enclave,從而避免 Enclave 被惡意攻擊。

下圖中黃色部分表示了Enclave。從圖中我們可以看到,在標準的SGX模型下,應用被分為可信和不可信兩部分,可信部分為 Enclave,
非可信部分為運行在外面的代碼和數據。

關於Enclave的更詳細介紹,可以閲讀SGX Enclave.

Enclave身份標識 - MRENCLAVE 和 MRSIGNER

每個Enclave都具有兩個與其綁定的身份標識。

第一個是Enclave Identity(飛地身份),它由MRENCLAVE的值表示,MRENCLAVE是Enclave的度量值,度量了Enclave構建和初始化過程的每個步驟的加密哈希值。MRENCLAVE唯一標識任何特定的飛地。不同版本的飛地構建/版本將導致不同的MRENCLAVE值。

第二個是由授權機構提供的Signing Identity(簽名身份),該機構在分發之前對enclave進行簽名。該值稱為MRSIGNER,對於所有使用相同授權機構簽名的飛地,該值均是相同的。

根據場景的不同,您可以選擇用MRENCLAVE或者MRSIGNER來唯一確認Enclave的身份,通常情況下應該使用MRENCLAVE。若您可以信任某個機構,則可以使用MRSIGNER,從而減緩使用中可能遇到的潛在問題,比如代碼頻繁升級帶來的困擾。

遠程認證

遠程認證提供了一種機制,允許遠程用户驗證遠程進程中軟件的真實性。SGX的遠程認證可以對以下內容進行驗證:

  1. Enclave運行在SGX內部
  2. Enclave運行在具有最新安全級別的系統上
  3. Enclave的代碼

通過遠程認證,用户可以確保enclave運行環境是可靠的,且運行的代碼未被篡改。

目前SGX支持兩種類型的遠程認證:ECDSA(Elliptic Curve Digital Signature Algorithm)認證和 Intel EPID(Intel Enhanced Privacy ID) 認證,更詳細説明參見intel remote attestation。SecretFlow目前僅支持ECDSA認證模式。

ECDSA配合 Intel SGX DCAP(Intel Software Guard Extensions Data Center Attestation Primitives)可以允許用户構建自己的認證服務,而不需要依賴intel的遠程認證服務。intel提供了Provisioning Certification Caching Service (PCCS)來幫助用户完成這一目標。

(圖片來源)

如何部署PCCS服務

情形一:使用雲廠商自帶的PCCS服務

如果您購買的是雲廠商的機器,則雲廠商通常會默認提供PCCS服務。
比如您的服務器提供商是阿里雲,則可參考阿里雲遠程證明服務。

具體可以查閲對應雲廠商的官方文檔。

自行搭建PCCS服務

如果您希望自行搭建PCCS服務,則可以參考Intel PCCS。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.