導讀:本文介紹ACAI,其構建一個基于CCA的解決方案,使得機密虛擬機能夠安全地使用加速器,同時保持與現有應用程序的兼容性和安全性,能夠實現對加速器的安全訪問。
原文鏈接:ACAI: Protecting Accelerator Execution with Arm Confidential Computing Architecture | USENIX
ACAI: Protecting Accelerator Execution with Arm Confidential Computing Architecture
一、背景介紹
隨著可信執行環境在CPU中的發展,機密計算取得一定成果,可以確保用戶的代碼和數據免受惡意租戶和具有特權的管理員的侵害,但租戶無法在可信執行環境的保護下安全使用GPU和FPGA等加速器。
在云計算環境下,用戶希望在不可信云平臺部署安全敏感應用,同時利用加速器滿足大工作量需求,而當前可信執行主要在CPU層面,未延伸到加速器,這就需要解決機密計算在加速器使用上的安全和性能問題。
Arm在2021年宣布了機密計算架構(CCA)規范,它通過顆粒保護檢查實現了硬件級別訪問控制,隔離了機密虛擬機(Realm?VMs)。作者嘗試基于CCA進行設計,使得機密虛擬機可以安全地訪問加速器。
二、 現狀分析
為實現對加速器的安全訪問,研究設立以下兩個目標:
- 構建一個基于CCA的解決方案,使得機密虛擬機能夠安全地使用加速器。
- 同時保持與現有應用程序的兼容性和安全性。
現有硬件對可信執行環境的支持如Intel SGX主要是進程級抽象,且在使用加速器方面存在不足。對于加速器與機密計算的結合,一些方案存在如需要硬件修改且性能和面積受限,以及加速器無法判斷主機安全和CPU端TEE需考慮安全設備訪問等問題。同時,現有如加密通信的bounce-buffer設計存在內存和計算開銷大、兼容性差等缺陷。因此面臨以下三個問題:
- 如何在不破壞CCA保護的情況下允許外部加速器訪問Realm內存?
- 如何確保來自不同加速器的訪問被隔離到與其連接的相應虛擬機的指定共享區域,并阻止惡意外設的訪問?
- 如何隔離所有可能的I/O和內存訪問路徑,防止軟件和物理對手的攻擊?
三、應對設計
- 選擇Arm CCA:選擇Arm CCA作為基礎,因為它是即將推出的擴展,可在Arm的固定虛擬平臺上實驗,且其本身支持總線級訪問控制和內存保護。CCA架構引入了粒度保護表(GPT)追蹤物理地址,通過粒度保護檢查(GPCs)對處理單元增強,GPCs根據GPT的限制對安全領域內存的訪問進行檢查,防止外部訪問領域內存。同時因為有總線級別的加密性及完整性保護機制,物理攻擊者無法篡改主內存的數據。
- 設計思路:提出ACAI,擴展Arm CCA的安全常量到設備端訪問。為設備安全標記為realm - mode以利用隔離,使用設備側MMU(SMMU)實現VM級隔離,重新利用硬件加密支持保護設備通信,在VM創建流程中加入設備認證。以此身份與所有權的管理、內存區域保護和設備生命周期管理。
- 身份與所有權:設備經過認證后被賦予唯一不可偽造身份,并僅能被一個realm VM訪問和配置,確保設備與realm?VM一對一綁定。同時保證設備與realm?VM之間內存映射安全且兼容CCA,包括主機和設備側的地址轉換,以及兩者的同步。
- 創建保護內存區域:再realm?VM和加速器之間建立共享保護內存區域,位于realm世界內存中。通過RMM和SMMU頁表確定只有指定設備和realm?VM可訪問,防止惡意設備和VM干擾。同時利用GPT將SMMU數據結構標記為僅在根模式下可訪問,防止還有hypervisor篡改映射,同時引入SMMU接口,讓hypervisor按照規則請求更新。
- 設備生命周期管理:設備連接時,在realm?VM創建過程中附加加速器,確保相關內存區域符合安全常量。包括重置加速器、移動其配置空間到realm世界等操作。由monitor初始化設備并執行認證協議,確保設備正確初始化、認證、并收集報告,防止設備被篡改或替換。最后僅在realm?VM銷毀階段允許hypervisor分離設備,確保設備內存和狀態正確清理,防止數據泄露和安全漏洞。
- 架構圖:
四、技術解析
4.1 內存保護
在內存方面,ACAI設置了realm VM和設備間的共享內存區域(保護區域),通過多種機制確保內存訪問的安全,如確保設備和realm的初始狀態及身份映射,以及保證內存區域的安全訪問和正確的地址轉換。
4.2 設備管理
在設備管理上,利用IDE確保設備有唯一身份且不重疊,通過一系列流程如在創建VM時同時進行安全的加速器連接,在設備連接和初始化過程中保證配置正確和身份認證。
在應對惡意組件時,針對不可信hypervisor、惡意的co-tenants、其他的惡意設備和物理攻擊者等可能的威脅,ACAI通過多種機制如密鑰保護、身份驗證、內存隔離和加密等措施進行防護,確保系統安全。
ACAI的安全常量有效保證了CPU和設備TEE的安全組合,各種攻擊都難以突破其防御,維系了系統的保密性和完整性。
插圖:(a)-(c)潛在的攻擊,(d)ACAI保護
五、驗證評估
實驗設置:在Arm?FVP和Cortex-A35板上進行原型實現,使用Rodinia測試集的GPU基準測試和自定義的FPGA基準測試,在不同配置下進行測量,包括原始設置、加密模式、ACAI保護模式以及優化模式等。
結果展示:結果表明ACAI在系統啟動、realm創建、刪除、SMMU操作等方面有一定的開銷,但對正常世界執行影響較小,保持安全保證的同時具有可行性。與加密模式相比,ACAI顯著減少了指令數,在GPU和FPGA上有一定的性能提升。
本賬號發布內容均為原創,歡迎轉載,轉載請注明出處。更多資訊請移步【機密計算前沿技術】服務號,歡迎交流!