Arm

今年3月底,Arm宣布推出新一代運算架構Armv9,當中備受關注的最新技術,除了運算效能的增長,莫過於機密運算架構(Confidential Compute Architecture,CCA)。

根據當時的預告,Armv9主要基於長期發展的TrustZone技術,採用動態設置機密領域(Realm),讓應用程式可分別執行在獨立運作區域,以保護敏感資料與程式碼,使其不會受到系統其他部分的存取與竄改。Arm希望在這樣的架構之下,無論在資料處於使用中、傳輸中,或是靜置等狀態,皆能維持加密。

同時,Armv9也將整合先前應用的記憶體標記延伸技術(MTE),以及新增的機密領域管理延伸技術(RME),以及機密運算韌體架構(Confidential Compute Firmware Architecture)。

闡釋機密運算發展方向,從硬體、軟體、韌體架構,與社群合作著手

到了6月底,Arm發表了初步的CCA技術規格,並揭示4大重要發展方向,分別是:RME、動態TrustZone技術、建立軟體與韌體架構、與開放原始碼專案合作。

以RME而言,Arm會針對機密領域來定義硬體架構。而新出現的動態TrustZone,是由RME提供,而且是從TrustZone延伸出來的技術,Arm表示,相較於既有的TrustZone,動態TrustZone不再需要專屬記憶體,可用在大量、動態配置記憶體的應用程式上。

在軟體與韌體架構上,Arm會與作業系統廠商與業界組織合作,推動與RME韌體互動的標準介面發展,他們會共同定義出機密領域管理監控器(Realm Management Monitor,RMM),以及監控器(Monitor)的延伸機制,進而提供用於機密領域的架構。

同時,Arm也提供編譯器支援、開放原始碼的Trusted Firmware-A(TF-A)監控程式碼,以及Veraison專案,未來將提供RMM的實作參考,並與工具鏈(Toolchain)及作業系統的相關廠商合作,促使各種領域的應用程式開發者都能運用機密領域。

在開放原始碼專案的協同作業上,Arm目前是與trustedfirmware.org合作,提供Arm CCA韌體的標準實作,並且針對機密運算成立新的專案,以Project Veraison為例,將會提供開放原始碼軟體,用於建構見證查驗服務。

值得注意的是,對照3月底Arm發布的架構,與Hypervisor、Secure Partition Manager(SPM)並列為EL2的機密領域管理員(Real Manager),現稱為機密領域管理監控器(RMM);底層原先採用的安全監控器(Secure Monitor),現在則由監控器(Monitor)涵蓋在內。

【Arm CCA的技術區分】關於機密運算架構的發展與實現,Arm區分為4大工作項目,分別是硬體架構、軟體與韌體架構、開放原始碼軟體實作,以及動態TrustZone技術。(圖片來源/Arm)

揭露CCA架構更多細節,與Arm既有安全運算技術一脈相承

在資安防護上,除了Armv9新增的CCA,Arm在既有的Armv8-A架構,已提供多種技術,像是TrustZone、Non-secure virtualization(EL2)、Secure virtualization(S-EL2),可針對從系統管理層級去存取權限較低軟體的資源,提供預防,以此構築安全運算環境。

涇渭分明的安全區與常態區

在Arm現行的架構之下,TrustZone會將CPU運算區隔成兩部分,分別是:安全區(Secure world)、常態區(Normal world),前者執行受到信任的應用程式與作業系統,後者執行標準的應用程式與作業系統,而在安全區中執行的軟體,可存取這個區域的實體記憶體位址空間,但不能存取常態區的記憶體位址空間。透過這樣的隔離,處理器就能保護受信任的應用程式(TA),以及受信任的作業系統(TOS)。

不過,TrustZone適用的平臺安全應用案例仍很有限,他們發展機密運算的目標,則是希望突破這樣的局面,讓任何第三方開發者,都能以此來保護虛擬機器或應用程式,因此,必須在不受限制或切離的作法上,在系統執行的當下,即時保護與虛擬機器或應用程式相關的記憶體,同時,為了確保平臺安全性,Arm也會繼續支援TrustZone。

【Armv9機密運算架構支援3種安全隔離要求】運用記憶體實體位址空間的配置,Arm處理器分隔出3種安全區。中間是常態區/非安全區,採用基於Hypervisor的保護模式;右邊是安全區/TrustZone,可根據不同的安全狀態來隔離;左邊是Arm最新發展的機密領域區,可用於第三方機密運算的場域。(圖片來源/Arm)

可橫跨安全區與常態區的機密領域區

而在Arm最新發展的CCA當中,基本上,處於機密領域內的程式碼或資料,會坐落在預先配置給機密領域的記憶體,而且,任何能建立機密領域的系統管理軟體層級(系統核心或Hypervisor)、透過TrustZone程式碼、其他機密領域,或不被機密領域信任的設備,若要針對機密領域內容(程式碼、資料、CPU暫存器狀態)進行嘗試存取的動作,都會被阻擋下來,並出現故障異常的例外狀況。

此外,機密領域將會執行在Arm新推出的機密領域區(Realm)中,系統在執行時期所運用的記憶體空間,還可以在常態區與機密領域區之間移動,甚至是在常態區與安全區之間移動。

而為了實現這樣的機制,Arm在此加入新的資料架構「顆粒層級防護資料表(Granule Protection Table,GPT)」。這個架構會追蹤記憶體分頁是否用於機密領域區、TrustZone設置的安全區,或是既有的應用程式、系統核心、Hypervisor所處的常態區。

就硬體的部份來看,CCA會在每次處理器每次存取記憶體時,根據GPT這張資料表來進行檢查,並在兩區之間進行強制隔離,阻擋所有非法的存取(如從Hypervisor存取機密領域的記憶體分頁這類異常活動)。同時,在每一區當中,此份轉譯表可提供更進一步的隔離,這也就是機密領域區能與其他區彼此隔離的主因。

Hypervisor或系統核心不能直接更新GPT,只能間接更新,但允許記憶體分頁能在常態區與機密領域區之間搬移,甚至在常態區與TrustZone之間搬移,而在這樣的架構配置中,系統的記憶體也會套用加密與清理的動作,確保當中存放的內容,不會被後繼的使用者存取。

對於需同時處理不同安全要求的環境而言,Arm認為,CPU架構若能具有此種動態搬移記憶體資源的能力,會是重大變革,而且,CCA能讓系統管理層級的處理,無法存取機密領域內容。

但要做到這樣的機制,運作上,CCA需要與那些管理顆粒層級保護資料表,以及機密領域轉換表、前後脈絡的安全韌體元件,來進行互動。因此,在CCA後續發展上,Arm會著重在基礎韌體介面的標準化,促使韌體能兼具簡單、體型小,以及易於稽核與驗證等特性。

【Arm機密領域的關鍵元件】關於Arm機密領域的架構,關鍵在於:機密領域管理監控器(RMM)、安全監控器(Monitor)。其中的RMM,可延伸與機密領域溝通的機密領域管理介面(RMI),以及與Hypervisor互動的機密領域服務介面(RSI)。(圖片來源/Arm)

熱門新聞

Advertisement