今天和大家一起概要認識RISC-V可信執行環境(TEE):Risc-V Keystone。
Keystone是一個開源框架,旨在構建自定義的可信執行環境(TEE)。
它提供了一個高度可編程的受信任層,位于不可信操作系統之下,并使用RISC-V的基本組件來實現。
Keystone的設計理念是,通過將隔離機制與資源管理、虛擬化和信任邊界的決定解耦,為低成本用例定制鋪平道路。
與現有的TEE方案相比,Keystone更加靈活和可定制,它可以獨立探索現有設計中的差距/權衡、快速原型化新功能要求、更短的修復周期、適應威脅模型和特定于用途的部署。
Keystone的設計也考慮了安全性,利用硬件原語提供對TEE保證的內置支持,例如安全引導、內存隔離和認證。
下面來一起看一下!
為什么需要Keystone?
Keystone是一個開源框架,可以讓你像搭積木一樣構建自己的可信執行環境(TEE)。TEE是可以在不安全的計算機環境中保護你的代碼和數據的地方。過去十年,TEE得到了快速發展,許多CPU供應商都推出了自己的TEE。
但是每個供應商的TEE都有自己的限制,就像你不能隨意改變積木的形狀一樣。當你選擇一個云服務提供商或軟件開發人員時,他們可能會被鎖定在他們自己TEE的限制中,這可能不符合你的實際應用需求。
Keystone就像一個新的積木盒,里面有各種可以構建TEE的組件。你可以根據自己的需求,選擇使用哪些組件,構建出符合自己需求的TEE。這樣你就可以更靈活地保護你的代碼和數據,無論是在云服務器、移動電話、互聯網服務提供商、物聯網設備、傳感器還是硬件令牌上。
Keystone的設計也考慮了安全性。它有一個安全監視器(SM)和運行時(RT)組件。SM使用硬件原語提供安全保證,例如安全引導、內存隔離和認證。RT則在飛地內提供功能模塊,例如系統調用接口、標準libc支持、虛擬內存管理和自分頁。這樣,任何飛地特定的功能都可以由RT干凈地實現,而SM則強制保證硬件的安全性。
總的來說,Keystone是一個更靈活、更安全的開源框架,可以讓你構建自定義的TEE來保護你的代碼和數據。
Keystone簡介
具有 Keystone 功能的系統由不同權限模式的多個組件組成。
可信硬件(Trusted Hardware) 是由可信供應商構建的 CPU 包,必須包含與 Keystone 兼容的標準 RISC-V 內核和信任根。硬件還可能包含可選功能,例如緩存分區、內存加密、密碼安全的隨機源等。安全監視器需要特定于平臺的插件來支持可選功能。
Security Monitor (SM) 是具有小型 TCB 的 M 模式軟件。SM 提供了一個接口來管理 enclave 的生命周期以及利用平臺特定的功能。SM 執行大部分 Keystone 的安全保證,因為它管理 enclave 和不受信任的操作系統之間的隔離邊界。
飛地(Enclave) 是與不受信任的操作系統和其他飛地隔離的環境。每個飛地都有一個私有物理內存區域,只能由飛地和 SM 訪問。每個 enclave 由一個用戶級 enclave 應用程序eapp和一個主管級運行時組成。
Enclave Application (eapp) 是在 enclave 中執行的用戶級應用程序??梢詮念^開始構建自定義 eapp,或者只在 Keystone 中運行現有的 RISC-V 可執行文件。
運行時 是 S 模式軟件,它實現了系統調用、陷阱處理、虛擬內存管理等功能。
Keystone特性
Keystone是一個基于RISC-V構建可定制的可信執行環境(TEEs)的開源項目,適用于各種平臺和用例。
我們的目標是構建一個安全可信的開源安全硬件飛地,可應用于各種應用和設備。
Keystone是一個基于Risc-V的開源TEE框架,在任意Risc-V處理器中,只需對硬件進行非常小的修改即可滿足Keystone平臺框架的使用,下面就簡單介紹一下使用Keystone需要Risc-V的CPU支持哪些特性。
指令集兼容性
?Keystone 需要所有三種權限模式 (M/S/U) 來支持 Linux 機器中的動態用戶級隔離。?rv64gc-lp64d(Sv39 虛擬尋址模式)?rv32gc-ilp32d(Sv32 虛擬尋址模式)
Keystone 需要所有三種權限模式 (M/S/U) 來支持 Linux 機器中的動態用戶級隔離。這意味著 Keystone 可以支持三種不同的權限級別,即機器級(M)、系統級(S)和用戶級(U)。這三種權限級別可以用于創建和管理不同類型的隔離和安全環境。
Keystone 還支持兩種不同的虛擬尋址模式,即 Sv39 和 Sv32。這些模式是 RISC-V 架構中的虛擬內存系統的一部分,用于在虛擬內存中管理代碼和數據。Sv39 是 64 位模式,支持 32 位應用程序在 64 位系統中運行。而 Sv32 是 32 位模式,支持在 32 位系統中運行 32 位應用程序。
三個軟件特權
RISC-V 具有三個軟件特權級別(按功能遞增的順序):
?用戶模式(U-mode)、?主管模式(S-mode)?機器模式(M-mode)。
處理器一次只能在其中一種特權模式下運行。
權限級別定義了正在運行的軟件在其執行期間可以做什么。各個權限級別的常用用法如下:
?U-mode:用戶進程?S-mode:內核(包括內核模塊和設備驅動程序)、管理程序?M 模式:引導加載程序、固件
一些嵌入式設備可能只有 M 模式或只有 M/U 模式。
M-mode 是最高特權模式,控制所有物理資源和中斷。M 模式類似于 x86 等復雜指令集計算機 (CISC) ISA 中的微代碼,因為它不可中斷且不受較低模式的干擾。
Keystone 使用 M 模式運行安全監視器 (SM),即系統的可信計算庫 (TCB)。
是的,M-mode 是最高特權模式,可以控制所有物理資源和中斷。它類似于 x86 等復雜指令集計算機 (CISC) ISA 中的微代碼,因為它不可中斷且不受較低模式的干擾。在 RISC-V 架構中,M-mode 是一種特權模式,可以執行諸如內存管理、異常處理和系統調用等關鍵任務。它具有對所有物理資源的完全控制權,并且可以中斷其他較低模式的操作。相比之下,S-mode 和 U-mode 分別具有系統級和用戶級權限,并且必須通過特定的系統調用才能進入 M-mode。
內存保護
首先,RISC-V是一種開源的指令集架構(ISA),它提供了一種靈活的方式來定義和擴展指令集。RISC-V Priv 1.10標準引入了物理內存保護(PMP)功能,這是一個強大的原語,允許在M模式下從較低的權限(U-/S模式)來控制物理內存的訪問。
PMP通過一組控制和狀態寄存器(CSR)來實現。這些寄存器可以配置為允許或禁止對特定物理內存區域的訪問。
?在U模式下,只能訪問那些由PMP配置為允許訪問的物理內存區域。?在S模式下,可以訪問所有未被禁止的物理內存區域。?然而,只有M模式下可以配置和更改PMP寄存器的狀態。
每個PMP條目可以由一個或多個PMP CSR定義。每個CSR都有一個特定的位模式,用于指示該CSR所控制的物理內存區域的大小和范圍。
例如,一個PMP條目可能由兩個CSR定義,一個用于指示物理內存區域的起始地址,另一個用于指示大小。
Keystone是一個用于構建自定義可信執行環境(TEE)的開源框架。它使用RISC-V作為其基本的指令集,并引入了安全監視器(SM)和運行時(RT)組件。Keystone需要PMP來實現enclave的內存隔離。
在Keystone中,SM負責執行安全監視功能,它使用PMP來強制執行內存訪問控制。每個enclave都有自己的隔離的物理內存區域,這些區域只能被該enclave訪問。
RT在每個enclave內提供功能模塊,例如系統調用接口、標準libc支持、虛擬內存管理和自分頁。RT通過與SM通信來請求訪問外部資源,例如共享內存或主機資源。
通過這種方式,Keystone能夠提供高度隔離和安全的執行環境。
每個enclave都有自己的虛擬內存空間,并且只能訪問由SM授權的物理內存區域。這種設計使得在執行敏感任務時可以確保數據的安全性和完整性。
中斷與異常
在默認情況下,M模式是系統中任何中斷或異常(即陷阱)的第一個接收者,這意味著M模式對CPU調度和配置具有完全的權限。然而,M模式可以根據需要將這種控制權委派給S模式。
M模式可以使用mieCSR來禁用或啟用每個中斷。mieCSR是一個控制和狀態寄存器,可以配置為指示哪些中斷被允許或禁止。
M模式還可以通過設置陷阱委托寄存器的位(即mideleg和medeleg)將陷阱委托給S模式。Trap委托可以跳過M-mode處理程序,這樣S-mode可以快速處理頻繁的陷阱,例如頁面錯誤、系統調用(環境調用)等。
通過這種方式,M模式和S模式之間的協作可以優化系統性能。頻繁的中斷或異??梢杂蒘模式快速處理,而M模式可以專注于更重要的任務,如CPU調度和配置等。這種分權處理方式使得系統可以根據特定的應用需求進行優化配置。
虛擬地址轉換
在RISC-V中,虛擬地址轉換是由內存管理單元(MMU)執行的,這一過程由兩個硬件組件組成:頁表遍歷器(PTW)和轉換后備緩沖區(TLB)。
虛擬地址轉換使用多級頁表,頁表中的頁數和頁大小取決于尋址方式。CSR(控制和狀態寄存器)確定MMU應該使用哪種尋址模式以及哪個物理頁面包含用于開始頁表遍歷的根頁表。
在Keystone飛地中,內存訪問保護是通過PMP(物理內存保護)實現的。飛地具有自己的受保護的頁表,操作系統無法修改。
PMP通過控制和狀態寄存器(CSR)來限制對物理內存的訪問。每個飛地都有自己的隔離的物理內存區域,只能被該飛地訪問。
操作系統無法修改飛地的頁表,因此無法通過更改頁表來進行攻擊。這種設計提供了高度隔離和安全的執行環境,確保了在執行敏感任務時數據的安全性和完整性。
Keystone工作流程
這個圖片展示了開發的工作分配,主要可以分為飛地開發者和平臺開發者。
????步驟由平臺提供者執行,需要將滿足Keystone架構的Security Monitor部署在設備上;?飛地開發人員使用Keystone SDK 開發飛地。開發人員構建 eapp、主機和運行時二進制文件,并(可選)將它們打包到一個文件中 (?);?然后通過?、?和?部署在設備上;??是遠程證明的流程。
SM作為跟平臺強相關的組件由平臺開發者提供,而飛地開發者負責Host APP、Eapp、Runtime的開發。
?平臺開發者的工作:?平臺開發者需要開發和部署滿足Keystone架構的Security Monitor。這個組件負責監視和管理內存訪問權限,確保只有經過授權的代碼和數據能夠訪問物理內存。?平臺開發者還需要配置和管理頁表(Page Table),這是操作系統用來管理虛擬內存和物理內存之間映射的數據結構。平臺開發者需要設置正確的頁表,以確保虛擬地址可以正確地映射到物理地址。?飛地開發人員的工作:?飛地開發人員使用Keystone SDK來開發飛地應用程序。這個SDK提供了一套API和工具,用于構建隔離的、安全的執行環境。?飛地開發人員首先需要創建一個eapp,這是飛地應用程序的代碼和數據的集合。eapp可以是任何類型的程序,例如一個簡單的應用程序、一個操作系統或者一個安全關鍵的應用程序。?飛地開發人員還需要開發和配置運行時(Runtime)環境。運行時環境提供了執行eapp所需的各種服務,例如內存管理、進程調度、輸入輸出等。?飛地開發人員可以使用Keystone SDK提供的工具來將eapp和運行時環境打包為一個可執行的二進制文件。這個二進制文件可以在設備上運行,并且可以與其他飛地應用程序隔離執行。?部署過程:?飛地開發人員將可執行的二進制文件部署到設備上。部署方式可以根據設備類型和操作系統而有所不同,例如可以通過USB傳輸、網絡上傳或者直接在設備上安裝。?在設備上部署后,飛地應用程序將會被加載到內存中,并開始執行。每個飛地應用程序都有自己的隔離的物理內存區域,只能訪問自己的內存空間,而不能訪問其他應用程序的內存空間。?遠程證明流程:?在某些情況下,可能需要驗證飛地應用程序的完整性和安全性。這時可以使用Keystone提供的遠程證明(Remote Attestation)流程。這個流程允許第三方機構或者用戶驗證飛地應用程序是否符合Keystone的安全標準。?遠程證明流程通常包括收集飛地應用程序的元數據、運行時狀態和內存內容等信息,并將這些信息提交給驗證機構進行驗證。驗證機構可以使用Keystone SDK提供的工具和分析算法來驗證這些信息的完整性和安全性。如果驗證通過,那么可以認為飛地應用程序是可信的。
Keystone生命周期
創建階段:
?申請內存:在創建飛地之前,需要向系統申請一塊連續的內存,這塊內存被稱為飛地私有內存(EPM)。EPM是飛地應用程序的專用內存,只能由該飛地訪問。?加載二進制文件:在申請到EPM之后,需要將飛地的二進制文件加載到EPM中。這個二進制文件包括飛地的頁表(PT)、運行時(RT)和eapp。這些組件是飛地應用程序運行所必需的。?創建飛地:在加載完二進制文件之后,通過調用SM(安全監視器)來創建飛地。SM使用PMP(物理內存保護)條目來隔離和保護創建的EPM內存。PMP條目定義了哪些物理內存區域是受保護的,以及哪些核可以訪問這些區域。?校驗和度量:在飛地創建完成后,SM將對飛地進行校驗和度量。這個過程主要是為了驗證飛地的初始狀態是否符合預期,確保沒有惡意代碼注入或者其他安全問題。
執行階段:
?運行和繼續:在這個階段,Host可以控制一個核運行飛地。為了實現這個控制,SM將賦予這個核訪問EPM的PMP權限。然后,該核開始執行飛地應用程序。?停止和退出:運行飛地是可以隨時退出或停止的。當停止或退出時,SM會切換核的PMP權限,確保核不再具有訪問EPM的權限,從而保持通過PMP與外界隔離。
銷毀階段:
?銷毀:Host可以隨時銷毀一個飛地。當銷毀一個飛地時,SM會釋放相關的PMP條目,并回收EPM所占用的空閑內存。這樣,系統可以重復利用這塊內存來創建新的飛地。
VS TrustZone
TrustZone的關鍵核心詞匯就是隔離,這個詞匯。什么模塊都增加了一個filter,都增加了一個安全與非安的標志位,這個真的設計蠻巧妙的。
那Risc-V的keystone方案相對于TrustZone的優勢會有什么優勢呢?
主要體現在以下幾個方面:
?內存保護:Keystone使用PMP(物理內存保護)機制來隔離和保護每個飛地的物理內存,確保一個飛地無法訪問其他飛地的內存空間。這種保護機制可以防止惡意代碼注入和數據泄露,提高了安全性。TrustZone雖然也提供了內存隔離功能,但它無法像Keystone那樣提供全面的物理內存保護。?飛地隔離:Keystone支持創建多個相互隔離的飛地(Zone),每個飛地都有自己的運行時環境、應用程序和數據,相互之間不受影響。這種隔離機制可以防止一個飛地發生問題時影響到其他飛地,提高了系統的可靠性。而TrustZone雖然也提供了隔離功能,但每個隔離區(Secure World)之間的數據和程序共享,存在潛在的安全風險。?靈活性和可擴展性:Keystone的架構更為靈活和可擴展,它支持在飛地中動態創建和銷毀虛擬機,支持多種操作系統和應用程序的部署,可以滿足不同場景的需求。而TrustZone在虛擬化方面的支持相對較弱,擴展性也有限。?性能優化:Keystone通過將不同的運行時環境和應用程序部署在不同的飛地中,可以更好地利用系統資源,減少不必要的開銷,提高性能。而TrustZone的運行時環境是固定的,無法進行優化。
總體而言,Risc-V的keystone方案在內存保護、飛地隔離、靈活性和可擴展性以及性能優化等方面相對于TrustZone具有優勢。然而,需要注意的是,這些優勢并非絕對,具體選擇哪種方案還需根據實際應用場景和需求進行權衡。
Keystone方案面臨的一些挑戰和限制
?方案的靈活性必定帶來開發者的工作量,因為需要同時在SM中進行內存管理和生命周期管理,也就對應著代碼量的增加,于是風險性就變大了。
怎么保證代碼的可靠性?對于這些關鍵部分的代碼,可以采用形式化驗證(formal verification)或靜態代碼分析(static code analysis)等方法來檢查代碼的正確性。
其次,可以采用安全的編程實踐,避免常見的安全漏洞。最后,可以通過在SM上實施訪問控制,只允許授權的實體訪問這些代碼,防止未經授權的訪問。
?PMP段數配置有限和內存要求連續的問題
關于PMP段數配置有限和內存要求連續的問題,這確實可能會對系統部署造成挑戰。這可能需要系統設計師在實現時進行適當的規劃和優化。例如,可以預先對系統內存進行分區,并保留一些區域專門用于飛地的創建。同時,對于需要連續內存的情況,可以通過預分配或動態內存管理技術來解決。
?攻擊者通過無限創建飛地達到DDOS攻擊的目的
在Keystone中,飛地的創建和銷毀都需要經過SM的授權,并且SM會跟蹤每個飛地的狀態和資源使用情況。
Keystone本身的設計并沒有提供防止DDOS攻擊的機制。然而,可以通過其他安全機制來緩解這種攻擊風險。
?資源限制:通過在系統級別或飛地級別設置資源限制(如內存、CPU等),防止單個飛地或多個飛地過度消耗資源。這樣可以限制潛在的DDOS攻擊者利用飛地資源的程度。?訪問控制:通過嚴格的訪問控制機制,限制飛地之間的通信和交互。這樣可以防止惡意飛地通過大量請求或數據流來淹沒其他飛地或系統資源。?監控和檢測:通過實時監控系統的資源使用情況,及時發現異常流量或行為。一旦發現潛在的DDOS攻擊,可以采取相應的防御措施,如限流、隔離或終止惡意飛地的運行。
?實現復雜性
Keystone方案需要實現和管理多個飛地和相應的運行時環境,這需要復雜的內存管理和生命周期管理機制。同時,要確保所有飛地之間的隔離和安全性,需要實現精細的訪問控制和驗證機制。
?有限的資源
雖然Keystone方案可以有效地隔離和保護飛地,但每個飛地仍然需要獨立的運行時環境和內存空間。這可能導致有限的資源分配,特別是在內存和處理器資源有限的情況下。
?性能開銷
Keystone方案的實現和管理需要一定的性能開銷。例如,在創建和銷毀飛地時,需要進行內存分配和回收、權限驗證和安全監控等操作。這些開銷可能會影響系統的整體性能。
?so on
keyStone
如果你想學習了解keystone,簡單的follow下面流程或許會對你有所幫助:
?了解Riscv
關于芯片架構、中斷與異常、內存管理
?了解操作系統相關知識
進程、中斷、驅動
?理論:keystone
【Keystone: An Open Framework for Architecting Trusted Execution Environments】[1]
【Keystone-Enclave-An-Open-Source-Secure-Enclave-for-RISC-V】[2]
?實踐:閱讀官方指導文檔【最好的指導書】
【Keystone-Getting-Started】[3]
一個新的技術的產生,必定是為了解決在某些方面的痛點而產生的,但是同時也必定會帶來一些新的痛點。我想這就是為什么,很多的項目中都需要技術專家來做技術選型,通過不同技術搭配來實現一個系統的穩定與平衡。
-
虛擬化
+關注
關注
1文章
368瀏覽量
29775 -
開源框架
+關注
關注
0文章
32瀏覽量
9408 -
RISC-V
+關注
關注
44文章
2232瀏覽量
46039
原文標題:keyStone
文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論