TrustZone、SGX、SEV/TDX 的差異:隔離單位、信任範圍、記憶體加密比較
三者都是以 CPU 硬體保護機密處理的機制(TEE,可信執行環境),即使一般的作業系統或超管理器(hypervisor)遭到入侵也能保護。差異在於以什麼為單位切分。TrustZone 將處理器分為安全世界與一般世界,主要用於智慧型手機與嵌入式裝置。SGX 只把應用程式的一部分切出成為飛地(enclave),讓信任範圍最小。SEV 與 TDX 則將整個虛擬機器(VM)的記憶體加密,讓雲端業者也無法讀取內容,屬於機密運算的方式。
| 項目 | TrustZone | SGX(飛地) | SEV/TDX(VM 型機密運算) |
|---|---|---|---|
| 隔離的單位 | 將整個處理器分為安全世界與一般世界兩部分。在安全世界中執行小型的可信作業系統與可信應用程式 | 應用程式中處理機密的一部分(飛地) | 整個虛擬機器 |
| 防範的對象 | 一般世界的作業系統與應用程式。即使其核心遭到入侵,也讀不到安全世界的記憶體 | 作業系統、超管理器、其他應用程式,以及以物理方式讀取主記憶體的攻擊者 | 超管理器、雲端業者的管理者、其他虛擬機器,以及以物理方式讀取主記憶體的攻擊者 |
| 信任範圍(TCB) | CPU 硬體、負責切換模式的安全監控程式(secure monitor),以及安全世界的可信作業系統與應用程式 | CPU 的硬體與韌體,以及飛地本身的程式碼。不包含作業系統 | CPU 的硬體與韌體(AMD 的安全處理器、Intel 的 TDX 模組等),以及包含客體作業系統在內的整個虛擬機器內容。不包含超管理器 |
| 記憶體加密 | 不包含在基本機制中。以匯流排訊號區分是否為安全存取,直接阻擋存取本身來隔離 | 飛地的分頁在 CPU 外的主記憶體中保持加密。視實作而定也會偵測竄改 | 以每台虛擬機器各自的金鑰,加密整個虛擬機器的記憶體。金鑰只在 CPU 內部管理。SEV-SNP 與 TDX 還加上完整性保護,防止超管理器改寫或重新對應記憶體 |
| 遠端證明 | 沒有架構層級的共通方式,需與 SoC 的安全開機及金鑰機制搭配實現 | 以 CPU 內的金鑰簽署飛地啟動時的量測值,出具報告。使用者確認後才交出機密資料 | 由 CPU 量測虛擬機器的初始狀態,出具以 CPU 內金鑰簽署的報告。使用者確認後才交出解密資料用的金鑰 |
| 主要用途 | 在智慧型手機與嵌入式裝置上進行生物辨識比對、處理支付憑證、保管 DRM 金鑰、安全開機中的驗證 | 在伺服器上,只保護金鑰管理或處理機密資料等一部分處理 | 雲端的機密虛擬機器。在連雲端業者也無法讀取的狀態下執行既有的應用程式 |
| 移植的工作量 | 需寫成在安全世界執行的應用程式,並設計與一般世界之間狹窄的介面 | 大。需將應用程式分成飛地內與飛地外,系統呼叫、檔案與通訊的處理交給外部的程式碼 | 小。使用支援的客體作業系統,就能幾乎原樣執行既有的作業系統與應用程式 |
| 已知的攻擊類型 | 因共用核心、快取與電源,研究已展示快取旁路攻擊,以及以電壓或時脈擾動進行的故障注入攻擊。可信作業系統與應用程式的漏洞也會成為目標 | 研究曾報告利用快取時序、分頁錯誤的模式與推測執行的旁路攻擊洩漏機密的例子 | 研究曾報告惡意的超管理器操縱記憶體對應、中斷等與虛擬機器之間互動的攻擊,以及旁路攻擊。完整性保護就是為對付這類攻擊而加入的 |
| 提供狀況 | 廣泛用於 Arm 的應用處理器,Armv8-M 的微控制器有輕量版。Armv9-A 也定義了以虛擬機器為單位隔離的 Arm CCA(Realm) | 截至 2020 年代前半,Intel 已不在用戶端 CPU 提供 SGX,主要在伺服器用 CPU 提供 | SEV 是 AMD、TDX 是 Intel 伺服器用 CPU 的功能。截至 2020 年代中期,主要雲端業者已提供機密虛擬機器 |
數值為具代表性的大致參考值,會因世代或產品而異。