一種基于 TrustZone 的內生可信執行環境構建方法
摘要
針對安全模塊擴展技術面臨的安全風險以及性能較低的問題,提出了一種基于TrustZone技術構建內生可信執行環境的方法。重點研究了計算資源隔離分配、固件可信度量、安全存儲、全信任鏈構建等關鍵技術。設計了內生可信執行環境系統結構與可信計算基關鍵部件,通過對其安全性進行分析,表明基于內生可信執行環境,可以從底層硬件到上層軟件,逐級構建自啟動到運行整個活動周期的信任鏈,能夠有效地保證系統關鍵硬件、固件、操作系統文件、應用軟件和敏感數據的安全性和完整性,具備內生安全、易擴展、低成本等優點。
內容目錄:
1 TrustZone 介紹
2 關鍵技術
2.1 計算資源隔離分配
2.2 固件可信度量
2.3 安全存儲
2.4 全信任鏈構建
3 系統結構設計
4 可信計算基設計
5 安全性分析
6 結 語
近年來,計算機已成為人們工作生活中必不可少的工具,扮演著越來越重要的角色。計算平臺通過處理器內存映射手段,給每個進程配置一個單獨的地址空間,來隔離多個進程的代碼和數據,通過內核空間和用戶空間不同的特權級來隔離操作系統和用戶進程的代碼和數據,達到保護應用程序和數據的目的。但由于內存中的代碼和數據都是以明文方式存在的,外部病毒和木馬容易對內存中的代碼和數據實施緩沖區溢出、內存注入、數據竊取、拒絕服務等多種攻擊。此外,在應對新型安全威脅時,傳統“打補丁”的安全技術手段顯得力不從心。因此,探尋新的應對新型安全威脅的方法成為當前各機構的研究熱點。
為應對新型病毒和木馬的安全威脅,行業內通常采用安全模塊擴展技術。該技術是將代碼和數據送往安全模塊,由安全模塊對代碼實施完整性驗證和數據加密處理,從而實現對內存中代碼和數據的安全保護,數據的處理交由外部的安全模塊實現,這些模塊能夠保護自身資源和密鑰等數據的安全,如 SIM 卡、各種智能卡,以及連接到外部的硬件安全模塊等,但其同主芯片的通信線路暴露在外部,容易被監聽破解,通信的速率比較低,對系統性能影響較大。
本文研究基于 TrustZone 的內生可信執行環境構建方法,對系統的關鍵硬件、操作系統文件、應用軟件和敏感數據提供主動安全保護和完整性驗證。該方法是基于處理器的安全隔離特性,無需額外的安全模塊,在處理器中實現安全模塊的全部功能,能夠主動選擇需要保護的數據和進程,保證敏感數據不被惡意軟件和黑客竊取 ,與安全模塊擴展技術相比,不改變系統設計結構,能夠更加高效、可靠地保證系統安全性和完整性,對系統性能影響小,同時降低了系統成本。
1 TrustZone 介紹
TrustZone 技術由 ARM 公司推出伊始,便被產業界積極使用和推廣。從早期的蘋果公司的 Secure Enclave 技術、三星的 KNOX 技術提供的 TrustZone 的系統級實現,到如今華為榮耀可信指紋識別、小米防刷機技術的應用級實現,TrustZone 技術不斷發展成熟,已經形成了一套完整的產業鏈,構建了相對穩定的產業生態圈。當前,TrustZone 技術在華為、三星、蘋果等多家公司,以及 Globalplatform 等標準平臺的推動下,已經形成了 TrustZone 的統一標準,大大節省了 TrustZone 開發成本,降低了開發難度。TrustZone 安 全 架 構 的主要安全目標是防止敏感數據的完整性和機密性遭到破壞。通過建立有效的安全隔離執行環境,對系統軟硬件資源、運行環境進行劃分,得到安全世界(Secure World)和通用世界(Normal World)。安全世界采用獨立的安全操作系統處理器,可以同時處理安全環境和非安全環境下的任務,在保證安全性的前提下,將性能的損失降到了最低。通用世界執行獨立的通用操作系統,直接與用戶交互,用戶進程可以通過專用安全認證通道,經過認證授權后,才能訪問安全世界提供的安全服務。TrustZone 技術并不是針對所有的安全隱患的,而是提供了一系列的基本模塊,讓設計者可以針對自己的實際應用和系統環境來選擇出自己需要的模塊 。TrustZone 安全框架如圖 1 所示。

圖 1 TrustZone 安全框架
2 關鍵技術
基于 TrustZone 技術構建內生可信計算環境,涉及諸多軟硬件關鍵技術。本文在計算資源隔離分配、固件可信度量、安全存儲、全信任鏈接構建等方面進行了關鍵技術的研究,給出了關鍵技術解決思路。
2.1 計算資源隔離分配
計算資源隔離分配技術是基于 TrustZone 硬件隔離特性而提出的,能夠實現針對處理器、內存、數據通道和中斷的安全隔離,為內生可信執行環境的構建提供安全基礎平臺支撐。計算資源隔離分配結構如圖 2 所示。

圖 2 計算資源隔離分配結構
(1)處理器隔離。TrustZone 實現了多核處理器的安全隔離,將一個處理器的多個核分成了通用執行環境(Rich Execute Environment,REE)和 可 信 執 行 環 境(Trust Execute Environment,TEE)。當處理器處于 REE 時,只能訪問非安全的外部和內存資源,而不能訪問任何安全資源。當處理器核處于 TEE 時,除了可以訪問安全資源,還可以訪問非安全資源。
(2)內存隔離。為保證 TEE 與 REE 的內存隔離,使用 TrustZone 地址空間控制器將物理內存劃分為安全域內存和非安全域內存,分別運行 TEE 和 REE 程序。為保證用戶態程序不能直接訪問或破壞內核態數據及代碼,利用TrustZone 提供的兩個虛擬內存單元,將安全域內存映射到 TEE 的虛擬地址空間,將非安全域內存映射到 REE 的虛擬地址空間。
(3)數據通道安全隔離。為保障數據機密性,通過在 REE 內核層設置加密數據傳輸通道, 可 防 止 REE 中 直 接 明 文 泄 露。同 時, 在TrustZone 硬件保護下,REE 獲取 TEE 的數據途徑只有通過專門的安全數據傳輸通道和共享內存,使得 TEE 不能直接與 REE 通信,從而能夠有效保證數據交換的安全。
(4)中斷隔離。當 TEE 執行時,CPU 狀態寄存器中的對應位置 0,這將會使總線訪問信號的對應位電平拉低,使安全內存和安全設備能夠響應 CPU 的訪問,并通過中斷控制器將安全設備的中斷信號通知到異常級別 3 的異常機制中。當 REE 執行時,CPU 狀態寄存器以及總線信號中的對應位會置 1,安全內存和安全設備不再接受 CPU 的訪問請求。TEE 使用快速中斷請求,REE 使用中斷請求。
2.2 固件可信度量
固件可信度量技術是固件對硬件設備特征數據(硬盤的序列號)、操作系統裝載器(OS Loader)、操作系統內核(OS Kernel)、啟動配置文件,以及關鍵文件列表等部件進行度量,保證這些部件的完整性。系統開機啟動時,首先,TEE 執行并完成對安全固件的可信度量后,加載安全固件;其次,安全固件調用 TEE 提供的可信度量服務,對系統上的硬件設備進行可信度量,硬件設備可信度量是通過對硬件設備的特征數據的驗證,實現對平臺中硬件的認證,防止不安全硬件設備在平臺上使用;最后,安全固件對 OS Loader、OS Kernel、啟動配置文件,以及關鍵文件列表進行可信度量,檢查這些文件的內容是否被篡改,如被篡改,固件將提示錯誤并記錄日志,停止系統啟動過程。固件可信度量過程如圖 3 所示。

圖 3 固件可信度量過程
2.3 安全存儲
安全存儲技術是 TEE 將敏感數據進行加密后存儲到介質中的關鍵技術。主要采用安全存儲結構,安全高效地將敏感數據進行加密,并封裝成專門格式的數據報文,再通過文件系統存儲到介質中。當 TEE 應用程序進行文件寫操作時,會產生可信存儲系統調用,通過 TEE 文件操作接口將數據加密后發送到 REE 文件操作接口,再通過 REE 的文件系統將加密后的數據存儲到介質上,在進行存儲加密的加密密鑰產生后,由主密鑰加密保護存儲,主密鑰通過密管產生后直接注入到處理器片內安全存儲器區中保存。TEE 安全存儲結構如圖 4 所示。

圖 4 TEE 安全存儲結構
2.4 全信任鏈構建
信任鏈是可信計算中的重要概念。利用它可以將信任域從信任根擴展到整個計算平臺[8]。可信計算聯盟組織定義的信任鏈構建方法是以外部可信平臺模塊(Trusted Platform Module,TPM)作為可信度量根,使用信任鏈擴展理論,從 BIOS 固件開始逐級建立信任鏈 [9]。本文研究基于 TrustZone 的可信執行環境構建全信任鏈的方法,將可信度量根植入到處理器內部的BootLoader 中作為可信根,BootLoader 作為系統啟動時最先加載執行的程序,對 TEE 進行可信度量后加載 TEE;再由 TEE 對安全固件進行可信度量后加載安全固件;安全固件繼續對硬件設備、操作系統核心文件進行可信度量后加載REE;最后由 REE 中的可信運行控制模塊對可執行程序進行可信度量后,完成系統啟動。通過全信任鏈的逐級擴展,保證了計算平臺啟動過程安全可信。全信任鏈構建過程如圖 5 所示。

圖 5 全信任鏈構建過程
3 系統結構設計
基于 TrustZone 的安全隔離架構,構建內生可信執行環境,通過構建可信計算基(Trusted Computing Base,TCB)、可信軟件棧、可信運行控制和可信應用(Trusted Application,TA),實現可信執行環境對通用執行環境的可信服務和主動管控。基于 TrustZone 的內生可信執行環境系統結構如圖 6 所示。

圖 6 基于 TrustZone 的內生可信執行環境系統結構
基于 TrustZone 的內生可信執行環境系統架構采用雙體系架構,將計算環境劃分為 TEE 和REE,自上而下分為:應用層、接口層、系統層和硬件層。客戶端應用請求由應用層逐層傳遞到硬件層的安全監視器,再由安全監視器傳遞到 TEE 中的可信服務,可信應用以服務的方式處理請求,并將服務結果通過安全監視器傳遞回 REE 的客戶端應用,完成一次交互過程。對于可信應用開發者來說,只需要關注應用層和接口層,系統層和平臺硬件層對其是透明的。應用層通過調用統一的 TEE 客戶端接口,實現對 TEE 服務的訪問,接口層對應用層輸入的參數進行安全檢查,同時在調用接口功能前,進行認證與鑒權,從而保證應用層對 TEE 服務的安全訪問。
4 可信計算基設計
可信計算基是內生可信執行環境的關鍵部件,基于可信計算基將安全和可信機制向全系統輻射延伸,提升主動安全防護能力。通過將處理器劃分為 TEE 和 REE 的方式,讓可信計算基運行在 TEE 上,TEE 占用一個專門的處理器核,與 REE 安全隔離,保證可信計算基安全可信運行的同時,又不影響 REE 的運行性能。REE 確保常規系統服務高效實現,兩者一起實現了對當前操作系統的平滑繼承和復用。可信計算基充分結合了硬件的最新特性和發展成果,利用處理器提供的 TEE 安全擴展機制,能夠較好地實現系統安全性、可靠性與計算性能的平衡。既能夠確保敏感應用、隱私數據和敏感信息的安全,還能夠檢測、監控系統的惡意行為攻擊,提高系統抵御威脅的能力。可信計算基由命令解析、可信服務、調度管理及若干度量算法核等模塊組成。可信計算基功能組成如圖 7 所示。

圖 7 可信計算基功能組成
(1)命令解析。命令解析負責解析可信應用下發的命令報文,檢測命令報文的合規性、參數的合法性,并將合規的命令報文轉發到對應的可信服務功能模塊上進行處理,并將處理結果返回給上層應用。(2)可信服務。可信服務是實現可信計算功能的實體,負責處理可信應用各種命令請求,提供可信度量、可信存儲、完整性報告、度量服務、資源配置管理和日志審計等功能。當執行度量算法服務時,將數據和資源通過調度管理模塊發送到各個度量算法核進行運算處理,并將處理結果返回給命令解析模塊。(3)調度管理。調度管理負責多個度量算法核的并行任務調度處理,將可信服務發送的數據、資源,通過操作系統內核態調用接口發送到多個對應的度量算法核上進行處理,并將處理結果返回給可信服務模塊。(4)度量算法核。度量算法核是由若干個高速度量算法處理引擎構成的,算法核在國產飛騰處理器獨立的核上運行,算法調用接口封裝后,由調度管理模塊調用。
5 安全性分析
基于 TrustZone 的內生可信執行環境的安全性主要體現在系統啟動、運行的各個階段,因此安全性分析主要是分析系統啟動、運行各個階段的可信機制的安全性。系統啟動過程的執行周期可分為 5 個階段,其中每個階段的安全性都是建立在前一階段信任鏈擴展的基礎上。系統啟動、運行各個階段的安全性分析如下文所述。
(1)可信執行環境階段。該階段 CPU 片內的飛騰引導只讀存儲器(Phytium Boot ROM,PBR)的代碼首先執行,由于 PBR 及相關資源是存儲在 CPU 片內 ROM 安全存儲區,外部無法訪問獲取,因此,將 PBR 作為系統的初始可信根,利用 PBR 驗證存儲在片外的飛騰基礎固件(Phytium Base Firmware,PBF),如果驗證成功則繼續執行 PBF,當信任鏈擴展到 PBF,由 PBF加載 TEE 執行,并利用 PBF 驗證第三方 BIOS 固件,如果驗證成功,則將信任鏈擴展到 BIOS 固件。在整個執行過程中,PBR 固件作為可信根始終是在處理器芯片內部執行,外部無法篡改,因此該階段基于 PBR 構建的啟動信任鏈是安全的。(2)安全驗證階段。該階段是通用計算環境執行的第一個階段,其主要功能是對 CPU、Cache、內存控制單元、內存等部件進行初始化,為代碼的執行準備資源。該階段的所有執行代碼都是 BIOS 固件的一部分,由于整個 BIOS 固件都是經過 PBF 成功驗證后,才加載執行的,因此該執行階段也是安全的。(3)驅動程序執行階段。該階段開始大規模地加載設備驅動,這是 BIOS 工作的主體階段。執行完成之后,整個系統基本準備就緒,機器的控制開始逐步轉交給上層的系統軟件。由于整個 BIOS 固件都是經過了 PBF 成功驗證后,才加載執行的,因此該執行階段也是安全的。(4)啟動設備選擇階段。設備授權啟動模塊及用戶認證、完整性驗證功能在該階段開始執行,在用戶認證通過后依次讀取硬件外設特征信息和 REE 系統核心文件數據,并進行完整性驗證。該階段對硬件外設、REE 操作系統核心文件進行完整性驗證,保證了硬件外設、REE操作系統不被篡改。(5)通用執行環境階段。該階段加載執行經完整性驗證通過的通用操作系統,同時執行可信運行控制機制,保證了所有加載的內核模塊、動態鏈接庫、可執行文件等不被篡改,該階段執行完成后,通用執行環境及整個系統的信任鏈構建完成。
6 結 語
面對日益復雜的網絡環境,針對計算平臺面臨的安全威脅,基于國產處理器 TrustZone 安全架構,研究了內生可信執行環境構建方法和若干關鍵技術,提出了內生可信執行環境系統結構。通過構建 TEE 與 REE 兩個具備安全隔離特性的執行環境,將安全任務與非安全任務劃分到不同的執行環境中運行,不僅保證了多用戶多任務的安全執行,也保證了對系統敏感資源的安全訪問,提高了計算環境整體安全性。同時,在系統啟動與運行過程中,通過構建從啟動到運行的完整信任鏈,對各個環節實施完整性驗證,可以有效地防止外部病毒和木馬對系統的基礎軟硬件實施注入攻擊,為計算平臺提供了一種安全可信的運行環境解決方案。
引用格式:龐飛 , 唐六華 , 謝小賦 , 等 . 一種基于 TrustZone 的內生可信執行環境構建方法 [J]. 信息安全與通信保密 ,2022(6):102-110.