張鋒巍 周 雷 張一鳴 任明德 鄧韻杰
(南方科技大學(xué)斯發(fā)基斯可信自主系統(tǒng)研究院 廣東深圳 518055)
(南方科技大學(xué)計(jì)算機(jī)科學(xué)與工程系 廣東深圳 518055)
(zhangfw@sustech.edu.cn)
隨著各行業(yè)領(lǐng)域信息化的普及,尤其是以云計(jì)算為代表的網(wǎng)絡(luò)計(jì)算服務(wù)的大規(guī)模應(yīng)用,使得越來越多的應(yīng)用程序跨系統(tǒng)平臺(tái)和網(wǎng)絡(luò)進(jìn)行計(jì)算并生成海量數(shù)據(jù),在推動(dòng)大數(shù)據(jù)業(yè)務(wù)快速發(fā)展的同時(shí)也導(dǎo)致人們對(duì)于設(shè)備和數(shù)據(jù)安全的關(guān)注度不斷上升. 如何保證計(jì)算和數(shù)據(jù)的機(jī)密性成為網(wǎng)絡(luò)空間安全的重要基礎(chǔ). 因此針對(duì)用戶安全計(jì)算服務(wù)的需求,研究人員提出了可信執(zhí)行環(huán)境[1](trusted execution environment,TEE)技術(shù),用于保護(hù)非可信平臺(tái)中應(yīng)用和數(shù)據(jù)可信執(zhí)行. TEE 通常采用隔離部分軟硬件資源的方法構(gòu)建安全區(qū)域,確保在其中運(yùn)行的程序和數(shù)據(jù)保密性和完整性不受外部干擾.
具體而言,一個(gè)可靠的TEE 需要提供4 方面的安全保障[2]:1)數(shù)據(jù)隔離. 一個(gè)可信應(yīng)用使用的數(shù)據(jù)不能被其他應(yīng)用訪問、修改,包括可信應(yīng)用的數(shù)據(jù)對(duì)外部操作系統(tǒng)隔離以及多個(gè)可信應(yīng)用之間的數(shù)據(jù)隔離. 2)計(jì)算隔離. 可信應(yīng)用的計(jì)算資源不能被其他應(yīng)用觀測(cè)和攔截,同時(shí)需要清理可信應(yīng)用執(zhí)行后的痕跡,并防御來自側(cè)信道的攻擊. 3)通信控制. 非可信應(yīng)用和可信應(yīng)用、多個(gè)可信應(yīng)用之間的會(huì)話和數(shù)據(jù)交互不能破壞隔離性. 4) 錯(cuò)誤隔離. 非可信區(qū)域的安全漏洞不能擴(kuò)散到可信應(yīng)用中. 針對(duì)上述4 個(gè)安全需求,研究者可以通過密碼學(xué)方法實(shí)現(xiàn)基本的功能,如安全多方計(jì)算[3]和同態(tài)計(jì)算[4]等,但這些算法實(shí)現(xiàn)依賴于大量復(fù)雜計(jì)算,即使可以通過GPU 等加速器提升計(jì)算效率[5],但仍然會(huì)因?yàn)榇嬖谛阅芷款i而難以大規(guī)模應(yīng)用. 因此實(shí)用的TEE 設(shè)計(jì)思路是基于硬件隔離基礎(chǔ),通過數(shù)據(jù)加解密和特權(quán)指令執(zhí)行實(shí)現(xiàn)其安全服務(wù).
本文將以x86、Arm、RISC-V、異構(gòu)計(jì)算單元架構(gòu)為代表,分析TEE 的發(fā)展路線和技術(shù)特點(diǎn). 如圖1展示了這些架構(gòu)中TEE 技術(shù)發(fā)展的關(guān)鍵節(jié)點(diǎn). 早在20 世紀(jì)末,Intel 和AMD 等x86 架構(gòu)處理器中開始設(shè)計(jì)了系統(tǒng)管理模式(system management mode,SMM)[6].區(qū)別于處理器保護(hù)模式和實(shí)模式,系統(tǒng)執(zhí)行在SMM中具備獨(dú)立的內(nèi)存資源和高級(jí)權(quán)限,因此被設(shè)計(jì)為隔離的執(zhí)行環(huán)境,用于部分安全敏感的服務(wù)如電源管理、設(shè)備檢測(cè)等. 早期的TEE 技術(shù)主要用于服務(wù)提供商開發(fā)和部署管理程序,如Intel TXT[7],ME[8], 甚至在2002 年就提出的TrustZone[9]. 在后續(xù)的10 年里,用戶難以接觸且并不了解設(shè)備中TEE 的存在. 面向用戶的可信應(yīng)用開始于2013 年蘋果智能手機(jī)的Touch ID 服務(wù),將用戶指紋信息部署在安全區(qū)域,防止外部攻擊篡改. 此后面向用戶程序開發(fā)的Intel SGX(software guard extensions)和SEV 進(jìn)一步發(fā)展了可信計(jì)算環(huán)境的應(yīng)用領(lǐng)域.
Fig.1 The development of TEE technology in different architectures圖1 不同架構(gòu)中TEE 技術(shù)的發(fā)展
當(dāng)前主流計(jì)算機(jī)系統(tǒng)架構(gòu)包括x86,Arm 等均在其設(shè)備平臺(tái)中部署TEE 技術(shù),代表性設(shè)計(jì)包括軟件保護(hù)拓展Intel SGX[10]和Arm TrustZone,其中SGX 通過內(nèi)存隔離和加密,以及拓展的指令集在用戶空間提供TEE,實(shí)現(xiàn)不同程序間的隔離運(yùn)行,保證用戶關(guān)鍵代碼和數(shù)據(jù)的機(jī)密性和完整性不受惡意軟件的破壞. 而TrustZone 則是通過設(shè)計(jì)處理器不同的處理模式,結(jié)合隔離內(nèi)存等軟硬件資源,將系統(tǒng)劃分為安全和非安全2 個(gè)世界. 因此服務(wù)提供商通過在安全世界中部署獨(dú)立于用戶操作系統(tǒng)的可信應(yīng)用,為用戶提供身份認(rèn)證和授權(quán)服務(wù). 其他系統(tǒng)框架如RISC-V 等在開放應(yīng)用領(lǐng)域如物聯(lián)網(wǎng)設(shè)備中廣泛應(yīng)用,其應(yīng)用系統(tǒng)也因數(shù)據(jù)采集和前端數(shù)據(jù)處理的安全性需求設(shè)計(jì)對(duì)應(yīng)的TEE,相關(guān)研究包括Keystone[11],PENGLAI[12]等. 由于目前的計(jì)算單元偏向于應(yīng)用適配的發(fā)展趨勢(shì),尤其是在大數(shù)據(jù)處理環(huán)境中,以GPU 為代表的異構(gòu)計(jì)算單元承擔(dān)了絕大多數(shù)的計(jì)算任務(wù),因此對(duì)于這些計(jì)算模塊同樣需要考慮計(jì)算安全問題. 研究人員提出了以StrongBox[13],Graviton[14]等為代表的可信計(jì)算技術(shù),為大數(shù)據(jù)任務(wù)提供安全執(zhí)行環(huán)境. 總的來說,現(xiàn)有的TEE 技術(shù)具有3 個(gè)明顯特點(diǎn):
1)面向用戶設(shè)計(jì). TEE 的發(fā)展歷程中從為管理端提供特權(quán)服務(wù)到為用戶提供機(jī)密計(jì)算環(huán)境,其應(yīng)用環(huán)境有巨大的改變. 目前在商業(yè)服務(wù)中部署或?qū)⑼瞥龅腁MD SEV[15-16]、Intel SGX 和可信域拓展、Arm 機(jī)密計(jì)算架構(gòu)等充分考慮在云環(huán)境中安全任務(wù)計(jì)算的需求.
2)硬件輔助支持設(shè)計(jì). 從基于x86 到RISC-V 架構(gòu)的平臺(tái)均引入了新硬件特性,在圖2 中展示了部分技術(shù)特征,包括內(nèi)存隔離、特權(quán)指令集和硬件加解密模塊,用于安全系統(tǒng)設(shè)計(jì).
Fig.2 TEE technology evolution on x86, Arm, RISC-V and heterogeneous computing unit architectures圖2 基于x86、Arm、RISC-V 和異構(gòu)計(jì)算單元架構(gòu)的TEE 技術(shù)演進(jìn)
3)共享資源. 雖然在設(shè)計(jì)TEE 的過程中引入了新的加解密引擎、協(xié)處理器等. 但TEE 仍然復(fù)用主處理器和內(nèi)存單元,與不可信系統(tǒng)的數(shù)據(jù)交互保持便捷性.
因此基于上述3 個(gè)原則,平臺(tái)供應(yīng)商和研究人員在現(xiàn)有的系統(tǒng)中引入了協(xié)處理器、硬件密碼算法和內(nèi)存隔離機(jī)制的硬件特性,同時(shí)設(shè)計(jì)遠(yuǎn)程和本地證明方法,保證用戶在不依賴操作系統(tǒng)的安全性背景下獲取可信服務(wù). 然而現(xiàn)有的TEE 技術(shù)均存在不同程度的缺陷:
1)安全攻擊. 由于TEE 技術(shù)和操作系統(tǒng)并非完全的隔離,如共用處理器、內(nèi)存、緩存等,導(dǎo)致TEE容易面臨來自共享資源的側(cè)信道攻擊.
2)性能影響. TEE 中數(shù)據(jù)保護(hù)普遍采用內(nèi)存加密的方式防止數(shù)據(jù)泄露,即使通過硬件電路支持加解密操作,其數(shù)據(jù)訪問效率仍然低于明文計(jì)算.
3)服務(wù)便捷性. 早期TEE 中部署的簡(jiǎn)化操作系統(tǒng)所提供的服務(wù)有限且由服務(wù)商定制,難以部署大型應(yīng)用. TEE 面向用戶設(shè)計(jì)后,用戶可以在應(yīng)用層實(shí)現(xiàn)關(guān)鍵代碼的安全執(zhí)行,但對(duì)于系統(tǒng)資源的調(diào)用仍然需要非可信系統(tǒng)的支持. 目前在推出安全虛擬化的TEE 技術(shù)后,用戶安全應(yīng)用領(lǐng)域?qū)⑦M(jìn)一步發(fā)展.
本文通過研究現(xiàn)有的TEE 技術(shù),如圖2 所示,將重點(diǎn)分析現(xiàn)有TEE 技術(shù)的優(yōu)缺點(diǎn). 由于應(yīng)用場(chǎng)景和安全需求的不同,各類系統(tǒng)中TEE 設(shè)計(jì)框架和技術(shù)實(shí)現(xiàn)原理存在較大差異. 而在網(wǎng)絡(luò)計(jì)算環(huán)境中,用戶通??缙脚_(tái)和系統(tǒng)進(jìn)行機(jī)密計(jì)算,因此分析各類TEE 的技術(shù)特點(diǎn),有助于用戶構(gòu)建統(tǒng)一完整的可信服務(wù)環(huán)境. 本文將分別從x86、Arm、RISC-V 和異構(gòu)計(jì)算單元4 類架構(gòu)分析,重點(diǎn)介紹其部署的TEE 的技術(shù)原理、面臨的挑戰(zhàn)和未來的發(fā)展,為TEE 發(fā)展提供新的思路.
基于x86 架構(gòu)的設(shè)備主要面向家用、商用服務(wù)領(lǐng)域,其優(yōu)點(diǎn)在于高性能以及強(qiáng)兼容性. 目前主要以Intel,AMD 廠商為代表推動(dòng)x86 架構(gòu)的發(fā)展. 因此基于x86 的計(jì)算平臺(tái)以Intel 軟件防護(hù)拓展和AMD 安全加密虛擬化為代表為用戶機(jī)密計(jì)算服務(wù)提供TEE.
隨著x86 架構(gòu)日益成為個(gè)人、企業(yè)或者數(shù)據(jù)中心服務(wù)器處理器的通用架構(gòu),面向x86 架構(gòu)平臺(tái)的安全性需求設(shè)計(jì)成為高優(yōu)先級(jí)的目標(biāo). 追溯到1991 年,在AMD 設(shè)備中部署系統(tǒng)管理模式,然后從2005 年開始,Intel 和AMD 分別推出了可信計(jì)算技術(shù)(trusted execution technology,TXT)[7]和 SKINIT[16],采用TPM芯片、特殊的指令集和驗(yàn)證算法,構(gòu)建從硬件到系統(tǒng)啟動(dòng)過程的可信證明鏈[52]. 其中Intel 的TEE 發(fā)展路線較為明確,從TXT 到目前的SGX[10],以及后續(xù)的TDX[29],設(shè)計(jì)了從系統(tǒng)底層到用戶自定義開發(fā)的TEE. 構(gòu)建x86 可信計(jì)算環(huán)境的軟硬件技術(shù)呈現(xiàn)多樣化發(fā)展趨勢(shì),但各技術(shù)之間交叉融合,本節(jié)將從系統(tǒng)架構(gòu)硬件層到應(yīng)用層之間介紹各類x86 架構(gòu)TEE 技術(shù)的發(fā)展路線.
2.1.1 可信平臺(tái)技術(shù)
在處理器層面,x86 架構(gòu)首先引入可信平臺(tái)技術(shù),x86 是基于可信平臺(tái)模塊[53-54](trusted platform module,TPM)的發(fā)展. 目前設(shè)備中普遍部署TPM2.0 版本,TPM 作為一種集成到芯片組中的微控制器,主要用于密鑰生成、存儲(chǔ)和證書驗(yàn)證,同時(shí)保存系統(tǒng)各層次模塊的測(cè)量值. TPM 基于硬件的密碼學(xué)特點(diǎn)可以保證存儲(chǔ)數(shù)據(jù)免受外部惡意軟件的攻擊,因此是廣泛應(yīng)用于系統(tǒng)啟動(dòng)和應(yīng)用部署的安全策略的基礎(chǔ).
2.1.2 基于協(xié)處理器的可信子系統(tǒng)
由于TPM 作為系統(tǒng)子模塊由主系統(tǒng)調(diào)用,因此是與主系統(tǒng)耦合性強(qiáng)、可擴(kuò)展性弱以及缺乏系統(tǒng)運(yùn)行行的安全策略. 針對(duì)上述問題,Intel 和AMD 分別推出了Intel 管理引擎(management engine, ME)[8]和AMD平臺(tái)安全處理器(platform security processor,PSP)[16]子系統(tǒng),采用協(xié)處理器和隔離技術(shù),構(gòu)建管理端TEE.以ME 為例,Intel 在主處理器外引入Quark 芯片和MINIX 操作系統(tǒng),作為單獨(dú)的子系統(tǒng)運(yùn)行在用戶設(shè)備中. ME 子系統(tǒng)擁有獨(dú)立的物理地址和IP 地址,通過直接連接網(wǎng)卡訪問遠(yuǎn)程資源,因此管理端可以通過ME 子系統(tǒng)遠(yuǎn)程透明地管理設(shè)備開關(guān)機(jī)、主系統(tǒng)啟動(dòng)驗(yàn)證、設(shè)備溫度、電壓等物理特征檢測(cè),甚至對(duì)主系統(tǒng)運(yùn)行時(shí)狀態(tài)監(jiān)控. 由于ME 子系統(tǒng)擁有獨(dú)立的計(jì)算能力和內(nèi)存空間,因此在Intel 架構(gòu)安全體系中作為基礎(chǔ)可信域存在,如主系統(tǒng)其他可信模塊的根密鑰、證書等均可保存在ME 子系統(tǒng)中,并對(duì)證書驗(yàn)證、時(shí)鐘同步等操作提供基本的TEE.
2.1.3 基于處理器模式的可信系統(tǒng)
針對(duì)協(xié)處理器和主處理器之間的隔離性,ME 和PSP 子系統(tǒng)只能管控平臺(tái)設(shè)備的物理屬性,因此子系統(tǒng)難以同步獲取和驗(yàn)證主系統(tǒng)狀態(tài),也不能操控主系統(tǒng)的正常運(yùn)行. 而基于主CPU 的不同執(zhí)行模式構(gòu)建的TEE 則能有效控制主系統(tǒng). Intel 和AMD 平臺(tái)利用系統(tǒng)管理模式SMM 部署了可信服務(wù)代碼. SMM構(gòu)建環(huán)境與Arm TrustZone 類似,基于SMM 計(jì)算模式以及內(nèi)存區(qū)域的隔離性,設(shè)備制造商(OEM)可以在設(shè)備出廠前部署管理需求的任務(wù),如CPU 電源管理、啟動(dòng)代碼塊驗(yàn)證、TPM 數(shù)據(jù)清理等一系列高權(quán)限的處理模塊. 研究人員也可以拓展SMM 處理程序接口,用于檢測(cè)內(nèi)核程序完整性,調(diào)試用戶程序的執(zhí)行流等.
2.1.4 基于內(nèi)存加密的用戶TEE
基于協(xié)處理器、隔離執(zhí)行模式的x86 TEE 均面向管理者服務(wù),不提供開源服務(wù). 因此用戶難以通過上述方法開發(fā)用戶可信應(yīng)用程序. 而面對(duì)用戶機(jī)密計(jì)算任務(wù)的廣泛需求,Intel 和AMD 分別提出Intel SGX 和AMD SEV[55]技術(shù). Intel SGX 為用戶提供應(yīng)用層TEE,用戶可以將機(jī)密計(jì)算程序片段部署在SGX飛地(Enclave)執(zhí)行,但對(duì)于內(nèi)核函數(shù)的調(diào)用則需要切換至非可信系統(tǒng)中執(zhí)行. AMD 為用戶提供系統(tǒng)級(jí)的TEE,通過內(nèi)存加密和虛擬化技術(shù),直接構(gòu)建面向用戶的安全虛擬機(jī)系統(tǒng). AMD SEV 相比于SGX 飛地在使用場(chǎng)景上有極大的拓展,且虛擬化和加密性能降低在可接受范圍內(nèi),尤其適用于云環(huán)境下對(duì)租戶提供安全計(jì)算平臺(tái)的需求. 因此后續(xù)Intel 也將推出可信區(qū)域拓展技術(shù)(trust domain extensions,TDX)[28],實(shí)現(xiàn)虛擬化系統(tǒng)的可信隔離.
2.1.5 x86 TEE 的主要設(shè)計(jì)思路
x86 TEE 是基于物理隔離方法和加密驗(yàn)證技術(shù)構(gòu)建的. 物理隔離方法包括協(xié)處理器、隔離執(zhí)行模式、物理內(nèi)存隔離,如圖3 所示. 而訪問權(quán)限控制和加密方法則復(fù)雜多樣,包括Diffie-Hellman 密鑰交換、HMAC 可信鏈驗(yàn)證、ECC 密鑰分配等通用密碼算法.協(xié)處理器單元的引入極大地提升TEE 中加解密和特殊指令集計(jì)算的效率. 在x86 設(shè)備中各TEE 技術(shù)并非獨(dú)立存在,如Intel ME,AMD PSP 作為協(xié)處理系統(tǒng),與主系統(tǒng)最大限度地隔離,因此可以作為可信第三方驗(yàn)證主系統(tǒng)啟動(dòng)的可信性,包括驗(yàn)證x86 SMM 固件的完整性,為SGX 提供可信證書和時(shí)間同步功能等. x86 SMM 通過增加硬件設(shè)施保存和恢復(fù)其他模式運(yùn)行時(shí)的處理器狀態(tài),從而快速正確地處理系統(tǒng)切換. 內(nèi)存區(qū)域SMRAM 的隔離通過特殊寄存器設(shè)置訪問權(quán)限和范圍,有利于OEM 廠商的個(gè)性化定制.Intel SGX,TDX 和 AMD SEV 由于面向用戶設(shè)計(jì),因此除了底層硬件實(shí)現(xiàn),服務(wù)提供商設(shè)計(jì)了大量的用戶接口用于自定義開發(fā),其軟硬件設(shè)計(jì)的復(fù)雜性大幅度提升.
Fig.3 x86 architecture based TEE圖3 基于x86 架構(gòu)平臺(tái)的TEE
TEE 面臨的主要安全風(fēng)險(xiǎn)來自于2 個(gè)方面:內(nèi)部軟硬件設(shè)計(jì)漏洞和外部側(cè)信道攻擊. 軟硬件設(shè)計(jì)漏洞問題包括控制邏輯代碼缺陷、接口設(shè)計(jì)不嚴(yán)謹(jǐn)?shù)?,例如可信區(qū)域執(zhí)行代碼不嚴(yán)格遵守約定的安全可信代碼庫(kù)和不可信代碼庫(kù)之間的接口調(diào)用,當(dāng)指令在可信區(qū)域和非可信區(qū)域之間切換時(shí),CPU 狀態(tài)標(biāo)志不能及時(shí)清除,堆棧指針無法恢復(fù),指針和數(shù)組的范圍缺少檢查以及寄存器數(shù)據(jù)泄露等. 這些來自于可信系統(tǒng)固件、驅(qū)動(dòng)或者接口自身的漏洞將嚴(yán)重影響可信程序的正確執(zhí)行. 另外攻擊者基于TEE 自身的漏洞結(jié)合用戶代碼的缺陷,在TEE 中執(zhí)行非可信程序主動(dòng)暴露機(jī)密數(shù)據(jù),如SmashEx[56],AsyncShock[57]等在飛地內(nèi)實(shí)現(xiàn)ROP 攻擊,導(dǎo)致飛地控制流錯(cuò)誤和數(shù)據(jù)泄露. 具體地,我們從3 個(gè)方面分析TEE 面臨的具體安全攻擊.
2.2.1 針對(duì)隔離機(jī)制的攻擊
TEE 基礎(chǔ)設(shè)施的隔離并非完全封閉. 首先,可信域和非可信域之間存在交互通道,并提供了可信域接口用于信號(hào)傳遞和數(shù)據(jù)傳輸. 其次,系統(tǒng)預(yù)留調(diào)試接口用于廠商對(duì)可信系統(tǒng)的開發(fā)、測(cè)試和維護(hù). 再次,可信域框架引入額外的攻擊面,包括系統(tǒng)切換后的狀態(tài)保存恢復(fù)的堆棧空間、時(shí)針同步機(jī)制等. 最后,基于硬件和固件組成的可信基礎(chǔ)存在設(shè)計(jì)缺陷. 因此,當(dāng)隔離機(jī)制在上述問題中存在漏洞,將會(huì)導(dǎo)致TEE 的暴露,如2017 年因Intel 直聯(lián)接口技術(shù)漏洞導(dǎo)致ME 系統(tǒng)運(yùn)行時(shí)指令控制流被攔截[58],其攻擊方式同樣能針對(duì)SMM 技術(shù)并造成嚴(yán)重后果. 而在SGX CROSSTALK 攻擊[59]中,飛地運(yùn)行時(shí)使用的隱藏共享緩存設(shè)施被暴露,因此導(dǎo)致飛地內(nèi)機(jī)密數(shù)據(jù)可能被泄露. SGX-Step[60]則是因?yàn)樵试S單步配置APIC 計(jì)時(shí)器、中斷和跟蹤頁(yè)表項(xiàng),從而泄露飛地控制流信息.而對(duì)于AMD SEV,由于安全虛擬機(jī)對(duì)I/O 操作缺乏保護(hù),因此攻擊者能夠利用非安全的I/O 實(shí)施任意的安全內(nèi)存加解密. 此外可以通過修改NPT 入口地址的特殊字節(jié),產(chǎn)生并利用SEV 的內(nèi)存頁(yè)錯(cuò)誤來跟蹤SEV 內(nèi)存訪問,從而達(dá)到側(cè)信道攻擊效果[27].
2.2.2 基于共享資源的側(cè)信道攻擊
由于平臺(tái)資源的高度集成化,計(jì)算機(jī)系統(tǒng)各組件通過緊耦合設(shè)計(jì)實(shí)現(xiàn). 因此內(nèi)存、處理器等通常在非可信系統(tǒng)和可信系統(tǒng)中共享使用. 2009 年Intel ME[8]系統(tǒng)因內(nèi)存地址重映射漏洞從而泄露了ME 的外部?jī)?nèi)存, 其作為系統(tǒng)主內(nèi)存中隱藏的區(qū)域,可通過重新映射加入到主系統(tǒng)內(nèi)存頁(yè)表中,因此攻擊者可以利用該內(nèi)存區(qū)域并部署任意的代碼在ME 子系統(tǒng)中運(yùn)行. 處理器中緩存即便是在引入了TEE 技術(shù)后,仍然沒有為可信區(qū)域和非可信區(qū)域提供緩存隔離機(jī)制. 因此基于緩存的攻擊能有可能導(dǎo)致可信執(zhí)行區(qū)域的機(jī)密信息泄露. 目前基于緩存的攻擊能碰撞出SMM,SGX,SEV 的可信程序機(jī)密數(shù)據(jù),其共同點(diǎn)是遍歷緩存讀寫、刷新并定位可暴露的可信內(nèi)存數(shù)據(jù)[61-63]. 例如2010 年,針對(duì)于SMM cache 攻擊[6],導(dǎo)致SMRAM 內(nèi)存段暴露給非可信應(yīng)用,使得攻擊者可以繞過內(nèi)存訪問控制權(quán)限,在SMM 可信處理單元中部署調(diào)用非可信區(qū)域代碼段. 而針對(duì)SGX 的緩存攻擊則包括CacheOut[64],CacheZoom[65]等一系列攻擊方法,CacheZoom 攻擊從非可信區(qū)域檢測(cè)是否存在可信區(qū)域內(nèi)存數(shù)據(jù)存留在相同的緩存片段上,有則暴露并利用. 文獻(xiàn)[66]使用Prime+Probe 方法攻擊Intel 的驗(yàn)證飛地,暴露飛地的EPID 信息. 文獻(xiàn)[67]在AMD SEV虛擬化研究中,提出可以通過TLB 緩存投毒的方式,暴露安全虛擬機(jī)加密內(nèi)存.
2.2.3 基于硬件設(shè)計(jì)漏洞的攻擊
指令預(yù)測(cè)執(zhí)行極大地優(yōu)化了系統(tǒng)執(zhí)行效率,但對(duì)于大部分Intel 和AMD TEE 設(shè)計(jì)引入了新的安全漏洞,幽靈攻擊Spectre[68]的核心是預(yù)測(cè)執(zhí)行指令會(huì)導(dǎo)致CPU 狀態(tài)或CPU 緩存發(fā)生可測(cè)量的變化. 因此攻擊者可以通過狀態(tài)信息變化暴露預(yù)測(cè)指令涉及的數(shù)據(jù),這些數(shù)據(jù)可能來自可信區(qū)域. SgxPectre[69]驗(yàn)證了SGX 面臨分支預(yù)測(cè)執(zhí)行攻擊的風(fēng)險(xiǎn),利用SgxPectre攻擊從Intel 簽名引用飛地中提取秘密密封密鑰和認(rèn)證密鑰. Koruyeh 等人[70]提出了SpectreRSB 攻擊,該攻擊交替使用返回堆棧緩沖區(qū)以推測(cè)預(yù)測(cè)執(zhí)行幀(函數(shù))的返回地址. 熔斷攻擊Meltdown[71]則利用了現(xiàn)代CPU 的無序執(zhí)行特性. 與Spectre 不同的是,Meltdown沒有利用推測(cè)執(zhí)行功能,而是在CPU 發(fā)出故障并回滾這些指令的結(jié)果之前,通過無序執(zhí)行的指令訪問未經(jīng)授權(quán)的內(nèi)存. 基于文獻(xiàn)[69-71]所述的方法,F(xiàn)oreshadow 攻擊[72]通過mprotect 功能調(diào)整頁(yè)面訪問權(quán)限,使得攻擊者可以通過頁(yè)面故障和預(yù)測(cè)執(zhí)行攻擊,從緩存中獲取飛地內(nèi)部數(shù)據(jù). 類似的攻擊同樣可以運(yùn)行在AMD SEV 和Intel SMM 機(jī)制中[73-74].
另外針對(duì)電源管理漏洞的攻擊同樣會(huì)導(dǎo)致TEE安全邊界破壞,如Murdock 等人[75]提出的Plundervolt攻擊. 為了破壞飛地計(jì)算,Plundervolt 攻擊濫用x86CPU 上動(dòng)態(tài)電壓縮放的特權(quán)接口,使得攻擊者可以在SGX 飛地的計(jì)算過程中將故障注入到被攻擊的飛地控制流. 相關(guān)工作還包括VoltPillager[76],由于從物理特性上破壞了內(nèi)存的完整性,從而導(dǎo)致TEE 隔離機(jī)制破壞,影響整個(gè)可信區(qū)域的安全性.
針對(duì)x86 TEE 技術(shù),我們從功能、架構(gòu)和安全方面探討未來的發(fā)展方向.
1)功能方面. x86 TEE 從早期面向設(shè)備供應(yīng)商定制的安全服務(wù)(如ME, PSP, SMM 等),到目前的面向普通用戶的TEE (SGX,SEV,TDX),其設(shè)計(jì)目的在逐步變化. 在未來發(fā)展中,面向管理端和用戶端的TEE 方案將同步發(fā)展,如目前在Intel 設(shè)施中同時(shí)提供了ME 和SGX 服務(wù). 值得注意的是,由于不同TEE技術(shù)在面向不同用戶時(shí)所暴露的接口、訪問權(quán)限等均不同,因此安全等級(jí)有所區(qū)別. 例如,到目前為止ME 僅產(chǎn)生3 個(gè)嚴(yán)重漏洞,而SGX 面臨大量的攻擊.Intel 設(shè)計(jì)過程中,SGX 的可信根如時(shí)針信息等保存在ME 中,另外還包括SMM 模塊的固件驗(yàn)證值. 因此,x86 TEE 將進(jìn)一步推動(dòng)管理端TEE 和用戶端TEE 設(shè)計(jì),協(xié)同構(gòu)建系統(tǒng)可信執(zhí)行區(qū)域.
2)架構(gòu)方面. 管理端TEE 以協(xié)處理系統(tǒng)設(shè)計(jì)為主,獨(dú)立于主操作系統(tǒng),面向平臺(tái)遠(yuǎn)程管理、能耗分析、主系統(tǒng)資源驗(yàn)證等提供可信環(huán)境,進(jìn)一步提升可信服務(wù)計(jì)算性能并減少對(duì)主系統(tǒng)的干擾. 用戶端TEE 則基于處理器異構(gòu)模式、內(nèi)存隔離、數(shù)據(jù)加解密引擎設(shè)計(jì)面向用戶層的計(jì)算環(huán)境. 對(duì)于目前CPU 集成大小核機(jī)制和獨(dú)立的安全芯片,管理端TEE 能構(gòu)建功能豐富的可信系統(tǒng). 對(duì)于用戶端,TEE 將面向大型安全應(yīng)用、豐富的資源調(diào)度和遠(yuǎn)程安全連接等功能需求,因此基于虛擬化的TEE 將進(jìn)一步推動(dòng)發(fā)展,如AMD 進(jìn)一步完善SEV-SNP,Intel 將要推出TDX 等.
3)安全方面. 提升對(duì)側(cè)信道攻擊的防御能力,減少系統(tǒng)被攻擊的接口數(shù)量. 例如針對(duì)管理端TEE,限制調(diào)試模式的訪問權(quán)限,降低共享資源的使用,嚴(yán)格驗(yàn)證寄存器使用規(guī)則,最大限度地降低攻擊者從用戶端對(duì)管理端TEE 的訪問權(quán)限. 而在用戶端TEE 方面,需要檢查已有指令集處理模式對(duì)TEE 功能的影響,如預(yù)測(cè)執(zhí)行和亂序執(zhí)行等,驗(yàn)證可信域與非可信域之間交互接口的有效性,以及分析處理器異常、中斷等對(duì)于主系統(tǒng)內(nèi)可信區(qū)域程序運(yùn)行的影響.
Arm 在智能手機(jī)和物聯(lián)網(wǎng)領(lǐng)域有著至關(guān)重要的作用. 在數(shù)據(jù)中心、云端服務(wù)器和車聯(lián)網(wǎng)領(lǐng)域,Arm也在快速發(fā)展. 針對(duì)安全應(yīng)用需求, Arm 側(cè)重于設(shè)計(jì)通用的TEE 硬件基礎(chǔ). 本節(jié)將介紹Arm 架構(gòu)TEE 發(fā)展與現(xiàn)有研究的設(shè)計(jì)思路、面臨的風(fēng)險(xiǎn)挑戰(zhàn)以及未來Arm TEE 的展望.
3.1.1 TrustZone 技術(shù)
在2002 年左右,Arm 開始發(fā)展TEE 技術(shù). 為了增強(qiáng)移動(dòng)設(shè)備運(yùn)行的安全性,Arm 公司在Armv6 架構(gòu)中引入了TrustZone. 2011 年11 月,Arm 發(fā)布了新一代處理器架構(gòu)Armv8,這是Arm 公司的首款支持64位指令集的處理器架構(gòu). 同時(shí),隨著Armv8-M 架構(gòu)的公布,為了滿足市場(chǎng)對(duì)嵌入式安全解決方案的需求,Arm Cortex-M 微處理器系列也引入了TrustZone 技術(shù).
TrustZone 是一種嵌入到Arm 處理器中的技術(shù),已在數(shù)十億的移動(dòng)終端和嵌入設(shè)備中運(yùn)行. 供應(yīng)商和原始設(shè)備制造商(OEM)依靠TrustZone 部署TEE,保護(hù)名為可信應(yīng)用(TA)的敏感程序的執(zhí)行. 一些可信應(yīng)用實(shí)現(xiàn)了操作系統(tǒng)的內(nèi)核級(jí)服務(wù),例如,用于用戶認(rèn)證或文件磁盤加密[9]. 其他可信應(yīng)用提供各類用戶功能,例如,數(shù)字媒介解碼器[77]或在線銀行服務(wù)[78].TEE 本身包括一個(gè)可信的軟件棧,為托管可信應(yīng)用提供接口和運(yùn)行環(huán)境支持,例如高通公司的QSEE[79]和開源的OP-TEE[80].
TrustZone 技術(shù)提供了2 種執(zhí)行環(huán)境,即正常世界和安全世界. 正常世界運(yùn)行一個(gè)豐富的軟件棧,稱為富執(zhí)行環(huán)境(REE),由完整的操作系統(tǒng)(如Linux)和應(yīng)用程序組成,它通常被認(rèn)為是不可信任的. 安全世界運(yùn)行一個(gè)較小的軟件棧,由可信操作系統(tǒng)和可信應(yīng)用組成. TrustZone 執(zhí)行系統(tǒng)范圍內(nèi)的世界間隔離,并在富執(zhí)行環(huán)境調(diào)用可信應(yīng)用的服務(wù)時(shí)為世界切換提供受控的入口點(diǎn). TrustZone 啟用了2 種處理器安全狀態(tài):正常狀態(tài)(NS)和安全狀態(tài)(S). 在Arm架構(gòu)中,有一種基于權(quán)限劃分的防御機(jī)制,稱為異常級(jí)別(EL0~EL3). 一般來說,處于異常級(jí)別EL0 和EL1的處理器核心運(yùn)行在這2 種安全狀態(tài)中的任何一種中,例如,在NS.EL1 中執(zhí)行一個(gè)不受信任的操作系統(tǒng),在S.EL1 中執(zhí)行一個(gè)受信任的操作系統(tǒng). 從Armv-8.4 開始,EL2 可以在安全狀態(tài)下使用,因?yàn)榘踩謪^(qū)管理器(SPM)得到了支持. EL3 始終處于安全世界,并運(yùn)行一個(gè)安全監(jiān)控器,在改變安全狀態(tài)方面發(fā)揮作用. 典型的基于TrustZone 的系統(tǒng)使用資源分區(qū)的靜態(tài)策略,只允許安全世界內(nèi)存駐留在幾個(gè)固定的內(nèi)存區(qū)域. 例如,TrustZone 地址空間控制器,TZASC(TZC-400)[81]支持配置多達(dá)8 個(gè)不同的內(nèi)存區(qū)域.
3.1.2 CCA 架構(gòu)設(shè)計(jì)
2021 年上半年,在Armv8 發(fā)布10 年后,Armv9架構(gòu)面世. 同時(shí),Arm 公司發(fā)布全新的Arm 機(jī)密計(jì)算架構(gòu)(confidential compute architecture, CCA)的初步技術(shù)規(guī)格. CCA 的關(guān)鍵目標(biāo)之一就是為第三方提供機(jī)密計(jì)算的能力. 此外,隨著Arm 逐漸布局服務(wù)器端處理器,CCA 旨在改變行業(yè)在應(yīng)用程序中構(gòu)建可信計(jì)算環(huán)境信任模型的處理方式,隨時(shí)隨地保護(hù)云端用戶的數(shù)據(jù)與代碼的機(jī)密性和一致性. 不同于TrustZone,CCA 在硬件上直接支持內(nèi)存加密能力,并且Trust-Zone 內(nèi)的特權(quán)軟件也無法訪問CCA 中的數(shù)據(jù).
如圖4 所示,Arm CCA 在一個(gè)名為領(lǐng)域世界的新隔離環(huán)境中進(jìn)行計(jì)算. CCA 旨在保留現(xiàn)有的系統(tǒng)軟件(如虛擬機(jī)管理器)來管理領(lǐng)域虛擬機(jī)的硬件資源,同時(shí)防止軟件和其他硬件組件觀察或修改領(lǐng)域虛擬機(jī)的內(nèi)容. 為了管理領(lǐng)域虛擬機(jī)的執(zhí)行,CCA 引入了一個(gè)名為領(lǐng)域管理監(jiān)控器(RMM)的軟件組件[82]. 在領(lǐng)域狀態(tài)下,運(yùn)行在異常級(jí)別EL2 的領(lǐng)域管理監(jiān)控器也使用現(xiàn)有的虛擬機(jī)管理技術(shù),如用階段-2 轉(zhuǎn)換表來隔離領(lǐng)域虛擬機(jī). 領(lǐng)域管理擴(kuò)展[79]是CCA 的硬件組件,擴(kuò)展了TrustZone 中引入的隔離模型. 與TrustZone相比,領(lǐng)域管理擴(kuò)展將異常級(jí)別EL3 擴(kuò)展到新的根安全狀態(tài),監(jiān)控器運(yùn)行在根世界. 根世界防止從任何其他世界訪問EL3 內(nèi)存. 當(dāng)處理器執(zhí)行內(nèi)存訪問時(shí),領(lǐng)域管理擴(kuò)展通過顆粒保護(hù)檢查(granule protection check,GPC)[83]確定該訪問是否被允許. 領(lǐng)域管理擴(kuò)展阻止非法訪問,并返回一個(gè)訪問故障(granule protection fault,GPF). CCA 維護(hù)一個(gè)顆粒保護(hù)表(granule protection table,GPT),作為內(nèi)存中的結(jié)構(gòu),它規(guī)定了每個(gè)細(xì)粒度的物理內(nèi)存(例如4KB)所屬的安全世界,以便與領(lǐng)域管理擴(kuò)展配合. CCA 支持通過更新顆粒保護(hù)表動(dòng)態(tài)地將一塊物理內(nèi)存轉(zhuǎn)換為一個(gè)新的安全地址空間(如正常世界、安全世界、領(lǐng)域世界).
Fig.4 Arm CCA TEE architecture圖4 Arm CCA TEE 架構(gòu)
3.1.3 Arm TEE 架構(gòu)設(shè)計(jì)
第1 類設(shè)計(jì)方案是利用虛擬化提供正常世界的TEE. 著名的例子包括vTZ[32],OSP[33],PrivateZone[34],它們利用正常世界的虛擬化擴(kuò)展在正常世界創(chuàng)建隔離環(huán)境. vTZ 虛擬化了整個(gè)TrustZone 的硬件使其能夠在正常世界中執(zhí)行可信操作系統(tǒng),而OSP 和Private-Zone 則為每個(gè)可信應(yīng)用提供一個(gè)自定義的運(yùn)行環(huán)境. 第2 類系統(tǒng)如Sanctuary[35]和TrustICE[36]使用TZASC提供正常世界的用戶級(jí)別飛地,它們依靠監(jiān)控器和可信的操作系統(tǒng)對(duì)TZASC 進(jìn)行動(dòng)態(tài)編程來與REE隔離. 文獻(xiàn)[84]通過對(duì)富運(yùn)行環(huán)境操作系統(tǒng)底層接口進(jìn)行修改、隔離,將敏感應(yīng)用運(yùn)行在正常世界中.第3 類系統(tǒng)是創(chuàng)建軟件構(gòu)建的安全世界隔離環(huán)境. 例如,TEEv[37]和PrOS[38]旨在支持沒有S.EL2 的Arm 平臺(tái)上的多個(gè)TEE 軟件棧. 這些方案依賴于在S.EL1(TEEv)或EL3(PrOS)中運(yùn)行的管理程序,并對(duì)在S.EL1中運(yùn)行的可信操作系統(tǒng)進(jìn)行二進(jìn)制檢測(cè)以保證同特權(quán)隔離. SecTEE[39]除了提供TEE,還能防御基于側(cè)信道的攻擊. ReZone[40]旨在創(chuàng)建硬件施加的安全世界飛地. 通過依靠PPC/ACU 硬件,ReZone 創(chuàng)建了安全世界的隔離區(qū)域,以有效限制S.EL1 的權(quán)限. Arm在Armv8.4-A 之后引入了S.EL2. 通過新的安全權(quán)限,Hafnium[41]在安全世界中執(zhí)行獨(dú)立的安全分區(qū)管理器,以虛擬化多個(gè)可信的操作系統(tǒng). TwinVisor[42]利用S.EL2 將安全保護(hù)與資源管理解耦,并在正常世界中重用hypervisor.
截至目前,由于CCA 的生態(tài)系統(tǒng)處于早期階段,開發(fā)者還無法使用它. 領(lǐng)域管理監(jiān)控器的可用代碼還未公開發(fā)布,領(lǐng)域管理監(jiān)控器實(shí)現(xiàn)領(lǐng)域虛擬機(jī)的細(xì)節(jié)有待進(jìn)一步的分析.
盡管TEE 已經(jīng)被廣泛用于保護(hù)移動(dòng)設(shè)備免受惡意軟件的侵害[85-87],不幸的是,在過去幾年中仍然有一些商用TrustZone 的TEE 出現(xiàn)了漏洞. 我們觀察到主要有3 個(gè)方面的安全風(fēng)險(xiǎn).
1)Arm TEE 系統(tǒng)長(zhǎng)期以來一直存在嚴(yán)重的軟件實(shí)現(xiàn)錯(cuò)誤[84]. 許多漏洞在可信應(yīng)用程序和負(fù)責(zé)管理TEE 運(yùn)行時(shí)的可信操作系統(tǒng)內(nèi)核中被發(fā)現(xiàn). 這些錯(cuò)誤涉及典型的輸入驗(yàn)證錯(cuò)誤,如緩沖區(qū)溢出. 正如多個(gè)攻擊漏洞所顯示的那樣,這些錯(cuò)誤可以被用來劫持安卓的Linux 內(nèi)核,或者完全破壞如高通[85-86]、Trustonic[87-88]或華為[89]設(shè)備的TEE 內(nèi)核.
2)TrustZone 的TEE OS 缺少一些保護(hù)機(jī)制,這為利用脆弱的TA 提供了便利. 例如,現(xiàn)代操作系統(tǒng)中常見的內(nèi)存保護(hù),如ASLR 或頁(yè)面保護(hù),在大多數(shù)TEE 系統(tǒng)中幾乎沒有或?qū)崿F(xiàn)得不好的[88]. TEE 系統(tǒng)也傾向于暴露出一個(gè)大的攻擊面,包括可以被TA 調(diào)用的危險(xiǎn)的TEE OS 系統(tǒng)調(diào)用. 例如,在高通公司的TEE 上,任何TA 都可以映射到主機(jī)操作系統(tǒng)的內(nèi)存區(qū)域. 因此,通過劫持脆弱的TA,例如利用緩沖區(qū)溢出,攻擊者可以很容易地控制Android[86].
3)大多數(shù)TrustZone 系統(tǒng)在架構(gòu)和微架構(gòu)層面忽略了重要的硬件屬性,這可能會(huì)損害TEE 的安全性.一些漏洞是由于微架構(gòu)的側(cè)信道(例如在緩存中)導(dǎo)致可信硬件組件的意外行為造成的[90-94]. 還有一些威脅是由可以利用的硬件組件造成的,例如通過嵌入現(xiàn)代SoC 的可重構(gòu)硬件FPGA,從TEE 限制的內(nèi)存中泄露敏感數(shù)據(jù)[95-96];沒有正確處理緩存屬性也可能導(dǎo)致系統(tǒng)從緩存中暴露數(shù)據(jù),例如基于緩存中間件的攻擊[97].
針對(duì)Arm TEE 技術(shù),我們分別從應(yīng)用和安全方面來探討其未來的發(fā)展趨勢(shì).
1)應(yīng)用方面. 隨著TEE 技術(shù)的發(fā)展,基于移動(dòng)終端的TEE 應(yīng)用已經(jīng)較為成熟[98-100],具體應(yīng)用場(chǎng)景包括指紋/人臉識(shí)別、手機(jī)錢包等涉及隱私計(jì)算的服務(wù).2013 年,蘋果公司推出的基于TEE 的指紋識(shí)別TouchID,可被視為TEE 技術(shù)在手機(jī)端的一次具體應(yīng)用.
Arm 服務(wù)器端的TEE 應(yīng)用還處于起步階段,根據(jù)Arm 的路線圖,CCA 的領(lǐng)域管理擴(kuò)展需要等到Armv9.2 才能作為一個(gè)可選硬件出現(xiàn). 盡管如此,Arm 公司為CCA 的發(fā)展已經(jīng)確立了一條清晰的路線,同時(shí)與開源社區(qū)也有了密切合作. 領(lǐng)域管理監(jiān)控器將由Arm 公司與操作系統(tǒng)廠商微軟及行業(yè)合作,推進(jìn)與領(lǐng)域管理監(jiān)控器及其擴(kuò)展功能交互的標(biāo)準(zhǔn)接口,為領(lǐng)域虛擬機(jī)提供架構(gòu). 此外,Arm 與trustedfirmware.org 等開源項(xiàng)目合作,提供CCA 監(jiān)控器固件的標(biāo)準(zhǔn)實(shí)現(xiàn),并為機(jī)密計(jì)算創(chuàng)建新項(xiàng)目,如Project Veraison[101]將為構(gòu)建CCA 證明(attestation)提供開源軟件. 最后,Arm 還提出了動(dòng)態(tài)TrustZone 技術(shù):由領(lǐng)域管理擴(kuò)展成的TrustZone 擴(kuò)展功能,可以移除TrustZone 對(duì)靜態(tài)分區(qū)內(nèi)存的需求,并使得TrustZone可應(yīng)用于占據(jù)大容量動(dòng)態(tài)內(nèi)存的應(yīng)用程序.
2)安全方面. 目前的商用TEE 中實(shí)施的防御機(jī)制嚴(yán)重落后于商用主流操作系統(tǒng)中所包含的和研究界所提出的最先進(jìn)的防御機(jī)制. 因此TEE 應(yīng)該考慮增加部分架構(gòu)防御機(jī)制,如安全通道、內(nèi)存加密,以及現(xiàn)代操作系統(tǒng)的內(nèi)存保護(hù).
此外,商業(yè)化TEE 系統(tǒng)大多是用C 語(yǔ)言編寫的,可以編譯出高效率的代碼,但不提供內(nèi)存安全. 然而,許多實(shí)現(xiàn)錯(cuò)誤是由程序員引入的內(nèi)存違規(guī)錯(cuò)誤造成的. 研究人員已經(jīng)探索了使用類型安全的編程語(yǔ)言來實(shí)現(xiàn)TEE 軟件的特定組件的想法. 例如RustZone[102]是OP-TEE 的一個(gè)擴(kuò)展,其可信應(yīng)用是用Rust 編程語(yǔ)言實(shí)現(xiàn)的. 鑒于Rust 提供內(nèi)存和線程安全,RustZone可以幫助防止驗(yàn)證錯(cuò)誤和一些可信應(yīng)用軟件的并發(fā)錯(cuò)誤. 另外,實(shí)現(xiàn)錯(cuò)誤往往是由于軟件的預(yù)期需求和實(shí)際實(shí)現(xiàn)之間的不匹配而出現(xiàn)的. 軟件驗(yàn)證由模型檢查、符號(hào)執(zhí)行和形式化驗(yàn)證等技術(shù)組成[103],旨在通過確保實(shí)現(xiàn)完全滿足所有設(shè)想的需求來防止這種錯(cuò)誤匹配. 因此,它有可能幫助防止可能存在的TEE 實(shí)現(xiàn)錯(cuò)誤. 我們相信,通過采用最新的防御措施,商業(yè)化的TEE 可以變得更加安全,并且能夠抵御許多普遍存在的漏洞.
RISC-V 是新興的開源指令集架構(gòu),因?yàn)槠涓叨瓤啥ㄖ菩远艿綄W(xué)術(shù)界、嵌入式設(shè)備廠商等的青睞.課題組或廠商可以使用RISC-V 來自行設(shè)計(jì)TEE 架構(gòu),從而擺脫對(duì)傳統(tǒng)廠商TEE 設(shè)計(jì)的限制和依賴. 本節(jié)將介紹RISC-V 架構(gòu)的相關(guān)背景、RISC-V 架構(gòu)下現(xiàn)有的TEE 設(shè)計(jì)、現(xiàn)有TEE 設(shè)計(jì)中存在的問題以及未來RISC-V TEE 可能的發(fā)展方向.
RISC-V 架構(gòu)是一個(gè)開源的指令集架構(gòu)[104],該項(xiàng)目于2010 年在加州大學(xué)伯克利分校啟動(dòng). RISC-V 指令集架構(gòu)具有高度可定制性,硬件廠商可以根據(jù)自己的需求選擇支持不同的拓展模塊. 廠商必須選擇RV32I,RV64I,RV128I 這3 種整數(shù)計(jì)算模塊中的一個(gè)作為基礎(chǔ)模塊. 可選的拓展模塊包括M-Extension(整數(shù)乘法與除法)、A-Extension(原子指令)、F-Extension(單精度浮點(diǎn)數(shù)計(jì)算)等[105]. 由于RISC-V 開源的特性,廠商也可以設(shè)計(jì)自定義的拓展模塊來滿足其額外的對(duì)功能性、安全性等方面的需求.
類似于Arm 架構(gòu)的異常等級(jí)(exception level)設(shè)計(jì),RISC-V 中也有不同的特權(quán)等級(jí):用戶態(tài)U-Mode(user mode)、內(nèi)核態(tài)S-Mode(supervisor mode)和機(jī)器態(tài)M-Mode(machine mode). 如果設(shè)備支持H-Extension,則在S-Mode 和M-Mode 之間存在一個(gè)H-Mode(hypervisor mode). 對(duì)于嵌入式設(shè)備,廠商也可以選擇只支持U-Mode 和M-Mode 這2 種特權(quán)等級(jí).
TEE 使用硬件來保護(hù)運(yùn)行在其中的程序,而RISC-V 的高度可定制性使得自行設(shè)計(jì)TEE 硬件單元成為可能,因此使用RISC-V 指令集架構(gòu)設(shè)計(jì)TEE已經(jīng)在學(xué)術(shù)界引起關(guān)注. RISC-V 官方社區(qū)提供的特權(quán)指令規(guī)范文件中提供了一個(gè)基礎(chǔ)的硬件隔離單元設(shè)計(jì):物理內(nèi)存保護(hù)( physical memory protection,PMP).用戶可以通過設(shè)置一些特定的M-Mode 控制狀態(tài)寄存器(control and status register, CSR)來配置PMP.CPU 中的每個(gè)核上都各自有一組PMP CSR,用來標(biāo)識(shí)若干段連續(xù)的物理地址范圍,以及該核對(duì)每個(gè)范圍的訪問權(quán)限.
具體來說,PMP CSR 包含若干組pmpcfg 和pmpaddr寄存器. 其中pmpcfg 用于配置地址配對(duì)模式及訪問權(quán)限,pmpaddr 用于標(biāo)記對(duì)應(yīng)的地址范圍. 核上的pmpcfg 和pmpaddr 寄存器數(shù)量決定了硬件能夠提供的隔離區(qū)域數(shù)量上限. PMP 可選的地址配對(duì)模式有TOR(top of range), NA4(naturally aligned four-byte region),NAPOT(naturally aligned power-of-two region)這3 種. 其中TOR 模式下,2 個(gè)pmpaddr 寄存器用于標(biāo)識(shí)一段連續(xù)的物理地址區(qū)域;NA4 和NAPOT 模式僅需要1 個(gè)pmpaddr 寄存器即可標(biāo)識(shí)一段連續(xù)的物理地址區(qū)域,但前提是該區(qū)域大小是2 的冪次,并且起始地址對(duì)齊至該大小. 除了官方提供的PMP 設(shè)計(jì)之外,廠商也可以使用自己設(shè)計(jì)的硬件隔離單元.
現(xiàn)有的RISC-V 架構(gòu)的TEE 設(shè)計(jì)側(cè)重點(diǎn)包括TEE 的整體架構(gòu)、可信I/O、規(guī)模化運(yùn)行以及對(duì)緩存?zhèn)刃诺拦舻姆烙? 本節(jié)將分別進(jìn)行討論,并在最后討論現(xiàn)有RISC-V TEE 中存在的問題.
4.2.1 TEE 的整體架構(gòu)
在第2 節(jié)和第3 節(jié)中我們已經(jīng)介紹了Intel SGX和Arm TrustZone 的設(shè)計(jì). 目前部分研究者也在RISCV 架構(gòu)下研究構(gòu)造類似架構(gòu)和編程模型的TEE:如Costan 等人[44]的Sanctum 和 Weiser 等人[45]的TIMBER-V.同時(shí),部分工作拋開主流平臺(tái)中如SGX 以及Trustzone的TEE 設(shè)計(jì)思路,研究全新的TEE 架構(gòu),如Lee 等人[11]的Keystone、Bahmani 等人[46]的CURE 等. 其中Keystone是一個(gè)基于軟件的TEE 的設(shè)計(jì),僅用到了PMP 作為硬件隔離單元,它給每一個(gè)創(chuàng)建的Enclave 分配一組PMP CSR,從而實(shí)現(xiàn)飛地與宿主機(jī)之間、飛地彼此之間的相互隔離.
不同于SGX 只提供用戶層服務(wù),Keystone 中的飛地包含S-Mode 的特權(quán)級(jí)別. 另外,不同于Trustzone安全/非安全世界的雙重隔離, Keystone 支持多個(gè)不同的隔離域,類似于Arm CCA. CURE 進(jìn)一步擴(kuò)大飛地應(yīng)用領(lǐng)域,同時(shí)支持僅運(yùn)行在U-Mode 的飛地、包含S-Mode 運(yùn)行時(shí)的飛地和運(yùn)行在M-mode 下的深層飛地. 其中深層飛地用于將部分關(guān)鍵的M-Mode 代碼從其他代碼中隔離開,使得TCB 中不必包含全部的M-Mode 代碼.
圖5 展示了部分現(xiàn)有的RISC-V TEE 的架構(gòu)設(shè)計(jì). 其中最右側(cè)為宿主系統(tǒng)架構(gòu),左側(cè)5 款TEE 設(shè)計(jì)中,Sanctum 與SGX 類似,飛地所需要的特權(quán)功能委托宿主內(nèi)核進(jìn)行處理;TIMBER-V 則在S-Mode 中運(yùn)行一個(gè)可信操作系統(tǒng)來處理這些特權(quán)功能;Keystone則兼顧了這2 種模式:部分特權(quán)功能在一個(gè)微小的運(yùn)行時(shí)中處理,其余的運(yùn)行時(shí)委托給宿主操作系統(tǒng)內(nèi)核;CURE 中支持多種不同特權(quán)等級(jí)的飛地,可以運(yùn)行普通的飛地應(yīng)用(Enclave 1)、不依賴宿主功能的飛地(Enclave 2)、提供系統(tǒng)功能的特權(quán)飛地(Enclave 3)以及用于縮小可信基的飛地(Enclave 4);PENGLAI 使用的是類似微內(nèi)核的思路,由一些服務(wù)型飛地提供類似文件系統(tǒng)等功能,供飛地應(yīng)用使用.
Fig.5 TEE architecture on RISC-V platform圖5 RISC-V 平臺(tái)TEE 架構(gòu)
4.2.2 安全I(xiàn)/O
由于SGX 中的飛地不包含S-Mode 的處理模塊,因此飛地中所有I/O 請(qǐng)求都必須交給宿主系統(tǒng)處理,這會(huì)帶來額外的安全隱患. 為了解決I/O 過程中可能的信息泄露,目前有部分工作使用自定義的硬件來輔助實(shí)現(xiàn)安全的I/O,包括上文提到的CURE 和Nasahl 等人[106]的HECTOR-V,這 2 部分工作通過修改I/O總線設(shè)施,實(shí)現(xiàn)“飛地-設(shè)備綁定”機(jī)制,即在同一時(shí)刻1 個(gè)設(shè)備只能被1 個(gè)飛地應(yīng)用訪問. 但是上述機(jī)制并未考慮如何對(duì)有狀態(tài)的外設(shè)進(jìn)行綁定和解除綁定.
4.2.3 規(guī)?;\(yùn)行飛地
隨著云服務(wù)中無服務(wù)器計(jì)算Serverless 的興起,越來越多的廠商開始使用Serverless 架構(gòu)部署自己的服務(wù). Serverless 架構(gòu)中,往往使用單個(gè)容器或虛擬機(jī)來啟動(dòng)單個(gè)的應(yīng)用. 這種“單應(yīng)用系統(tǒng)環(huán)境”跟飛地有很多相似之處,因此可以考慮使用飛地來保護(hù)Serverless 架構(gòu)下提供服務(wù)的應(yīng)用. 此前在x86 架構(gòu)下已有類似的工作使用SGX 保護(hù)容器運(yùn)行,如Arnautov等人[107]的SCONE. 使用飛地來主持Serverless 服務(wù)要求架構(gòu)可以規(guī)模化地啟動(dòng)飛地以及飛地自身需要靈活、可拓展, Feng 等人[12]的PENGLAI 使得這成為可能. 在PENGLAI 之前的TEE 并不適合主持Serverless服務(wù),因?yàn)轱w地的數(shù)量受到限制(如Keystone 和CURE 中飛地?cái)?shù)量受到硬件單元數(shù)量限制)或飛地本身大小受到限制(如SGX 中飛地內(nèi)存最高可以拓展到256 MB). PENGLAI 使用了自定義的MMU,從而支持大范圍地開啟飛地,最高支持1 000 個(gè)以上的飛地同時(shí)運(yùn)行. 此外,PENGLAI 還使用可掛載的Merkle樹(mountable Merkle tree)來大范圍保證內(nèi)存完整性.
4.2.4 針對(duì)緩存?zhèn)刃诺拦舻姆烙?/p>
側(cè)信道攻擊使用時(shí)間、功率等非常規(guī)的數(shù)值作為信息源來泄露關(guān)鍵信息,它是TEE 的重要安全隱患之一. 其中基于緩存的側(cè)信道攻擊是側(cè)信道攻擊中的一個(gè)大類,如Yarom 等人[61]提出的FLUSH+RELOAD 攻擊. 這類攻擊存在的根本原因是并沒有對(duì)緩存進(jìn)行隔離設(shè)計(jì). 緩存作為一個(gè)所有運(yùn)行環(huán)境共享的用于優(yōu)化的硬件單元,難免會(huì)在彼此之間泄露信息. 但是對(duì)于已經(jīng)出廠的設(shè)備,這類漏洞往往難以根治,而運(yùn)行在其中的飛地的安全性也難以得到保證. 因?yàn)镽ISC-V 的硬件可定制性,開發(fā)者可以自行設(shè)計(jì)緩存的結(jié)構(gòu),從而防御部分已知的基于緩存的側(cè)信道漏洞. 如此前提到的Sanctum 和CURE,使用了緩存標(biāo)簽、緩存分區(qū)等方案實(shí)現(xiàn)緩存的隔離機(jī)制,從而可以防御基于緩存的側(cè)信道攻擊.
4.2.5 現(xiàn)有RISC-V TEE 設(shè)計(jì)中存在的問題
目前RISC-V 的TEE 中還存在碎片化、Iago 攻擊和側(cè)信道攻擊等問題. RISC-V 自身的硬件可定制性帶來了便利的同時(shí)也不可避免地帶來了碎片化的問題. 每個(gè)廠商或高校課題組設(shè)計(jì)出不同的硬件來實(shí)現(xiàn)自己的目標(biāo),但硬件彼此之間并不兼容,也沒有統(tǒng)一的編程模型,因此難以推廣,目前更多停留在學(xué)術(shù)界的嘗試中. 與SGX 中的飛地一樣,RISC-V 下的TEE也可能會(huì)存在Iago 攻擊. 如Bulck 等人[108]證明了Keystone中存在Iago 攻擊,這是因?yàn)镵eystone 在運(yùn)行時(shí)將一部分系統(tǒng)調(diào)用委托給了宿主內(nèi)核. 其他借助了宿主內(nèi)核系統(tǒng)調(diào)用的TEE 也面臨同樣的風(fēng)險(xiǎn). 最后,RISCV TEE 也面臨層出不窮的側(cè)信道攻擊. 目前已發(fā)現(xiàn)針對(duì)RISC-V 高性能處理器BOOM 的基于亂序執(zhí)行的側(cè)信道攻擊[109].
總體來看,RISC-V 下的TEE 設(shè)計(jì)還在蓬勃發(fā)展的階段. 除了此前提到的各類學(xué)術(shù)界工作,RISC-V 社區(qū)本身、一些硬件廠商也都在推進(jìn)自己的TEE 設(shè)計(jì)[110-112]. RISC-V 官方社區(qū)推進(jìn)的TEE 設(shè)計(jì)也有助于解決設(shè)計(jì)碎片化的問題. 此外,未來RISC-V 的TEE設(shè)計(jì)還可以會(huì)聚焦3 個(gè)方向:側(cè)信道攻擊的防御、基于RISC-V 協(xié)處理器的TEE 和針對(duì)邊緣計(jì)算場(chǎng)景的TEE.
首先,因?yàn)閭?cè)信道攻擊大多與硬件相關(guān),所以很難從軟件上根治側(cè)信道相關(guān)的漏洞. 要根治這一類漏洞,必須進(jìn)行硬件修改. RISC-V 在這方面有得天獨(dú)厚的優(yōu)勢(shì).
其次,現(xiàn)在也有很多廠商選擇在片上系統(tǒng)SoC中加入一個(gè)RISC-V 核心作為協(xié)處理器,輔助完成一些高度定制化的任務(wù). 這些協(xié)處理器也可以用于給任意一個(gè)架構(gòu)的SoC 增加TEE 的功能. 目前業(yè)界已經(jīng)有這個(gè)方面的嘗試[113].
最后,RISC-V 目前備受青睞的領(lǐng)域是嵌入式設(shè)備等邊緣計(jì)算場(chǎng)景. 這些場(chǎng)景下設(shè)備的數(shù)據(jù)采集、數(shù)據(jù)處理也可能會(huì)導(dǎo)致隱私信息的泄露,而這些設(shè)備往往成本相對(duì)較低,功能相對(duì)較少,難以直接移植使用現(xiàn)有的TEE 設(shè)計(jì). 因此,專門針對(duì)嵌入式設(shè)備的TEE 設(shè)計(jì)也可能是未來的一個(gè)研究方向. 此前提到TIMBER-V 也是該方向的一個(gè)嘗試.
計(jì)算應(yīng)用的蓬勃發(fā)展對(duì)計(jì)算性能提出了很高的要求,尤其是要求系統(tǒng)能夠擁有快速處理大規(guī)模數(shù)據(jù)的能力. 因此,當(dāng)今的計(jì)算機(jī)系統(tǒng)開始使用各種異構(gòu)計(jì)算單元來加速計(jì)算過程,其中最為廣泛使用的是GPU,除此之外還有DPU,NPU 等各類專用加速器. 這些異構(gòu)計(jì)算單元通常是獨(dú)立于CPU 之外的硬件外設(shè),擁有極高的數(shù)據(jù)吞吐量和強(qiáng)大的計(jì)算能力,目前已經(jīng)廣泛應(yīng)用于數(shù)據(jù)分析[114]、機(jī)器學(xué)習(xí)[115]、深度神經(jīng)網(wǎng)絡(luò)[116]等大規(guī)模計(jì)算任務(wù)的加速. 如今,不管是邊緣端的設(shè)備,還是用于高性能計(jì)算的服務(wù)器,都開始配備異構(gòu)計(jì)算單元以滿足用戶日益增長(zhǎng)的計(jì)算需求.
在異構(gòu)計(jì)算單元被廣泛應(yīng)用于計(jì)算機(jī)系統(tǒng)中的同時(shí),異構(gòu)計(jì)算所面臨的安全性問題也需要受到重視. 對(duì)于大多數(shù)異構(gòu)計(jì)算單元來說,其設(shè)計(jì)僅考慮了計(jì)算的高效性,而沒有對(duì)安全性進(jìn)行考量. 目前,許多異構(gòu)計(jì)算單元的使用高度依賴于安裝在操作系統(tǒng)中的驅(qū)動(dòng)程序,計(jì)算單元中的上下文創(chuàng)建、數(shù)據(jù)傳輸、計(jì)算命令提交等操作都需要借助驅(qū)動(dòng)程序來與相關(guān)硬件進(jìn)行交互. 然而,這種交互過程會(huì)受到外部環(huán)境的威脅,攻擊者可以利用操作系統(tǒng)層面的許多漏洞來取得特權(quán),從而干預(yù)驅(qū)動(dòng)程序與異構(gòu)單元的交互,進(jìn)而破壞異構(gòu)計(jì)算單元中的上下文隔離或直接訪問其內(nèi)存中的計(jì)算數(shù)據(jù). 考慮異構(gòu)計(jì)算單元需要服務(wù)于各種涉及隱私信息(如人臉信息、目標(biāo)圖像等)的計(jì)算應(yīng)用,解決異構(gòu)計(jì)算所面臨的威脅迫在眉睫.
近年來,學(xué)術(shù)界提出了許多針對(duì)異構(gòu)計(jì)算單元的TEE 構(gòu)建方案,其中大部分工作以構(gòu)建GPU TEE為主. Volos 等人[14]提出了Graviton,對(duì)GPU 上的指令處理器進(jìn)行修改以對(duì)GPU 內(nèi)存數(shù)據(jù)提供安全保護(hù),并禁止操作系統(tǒng)直接與GPU 硬件進(jìn)行交互,所有交互行為都必須通過在GPU 上的指令處理器的檢查.Jang 等人[117]設(shè)計(jì)了HIX 系統(tǒng),將GPU 驅(qū)動(dòng)程序部署于利用Intel CPU 提供的SGX 飛地中,并在已有的SGX 技術(shù)基礎(chǔ)上增加部分新的硬件指令,實(shí)現(xiàn)對(duì)GPU數(shù)據(jù)和計(jì)算的保護(hù). Zhu 等人[47]提出了HETEE 系統(tǒng),該系統(tǒng)將GPU 資源抽象成計(jì)算節(jié)點(diǎn),通過結(jié)合一個(gè)可信CPU 和額外的FGPA 硬件來對(duì)每個(gè)計(jì)算節(jié)點(diǎn)提供保護(hù)和安全認(rèn)證操作,為人工智能模型的訓(xùn)練和推理提供了隔離的執(zhí)行環(huán)境,并保證了相關(guān)數(shù)據(jù)的機(jī)密性. 隨著GPU TEE 逐步受到重視,工業(yè)界也開始著手解決GPU 計(jì)算所面臨的安全性問題. 著名的GPU 生產(chǎn)廠商N(yùn)VIDIA 于2022 年發(fā)布了H100 GPU[48],這是全球第一個(gè)具有機(jī)密計(jì)算功能的GPU 產(chǎn)品.NVIDIA 通過在GPU 內(nèi)建提供安全功能的硬件設(shè)施,針對(duì)人工智能相關(guān)的機(jī)密數(shù)據(jù)以及模型數(shù)據(jù)進(jìn)行保護(hù),并能夠確保多方協(xié)作的安全性,在確保GPU 計(jì)算機(jī)密性的同時(shí)也能提供優(yōu)秀的計(jì)算性能.
上述GPU TEE 都是考慮解決服務(wù)器GPU 的安全計(jì)算問題. 但隨著邊緣端計(jì)算的興起,邊緣端設(shè)備上的GPU 也不可避免地需要承擔(dān)許多敏感計(jì)算任務(wù),同樣有構(gòu)建GPU TEE 的需求. 然而現(xiàn)有的工作都是依賴于服務(wù)器GPU 擁有獨(dú)立內(nèi)存的特性,即計(jì)算數(shù)據(jù)存放于自己的獨(dú)立內(nèi)存中. 而邊緣端設(shè)備使用的是共享內(nèi)存GPU,其計(jì)算數(shù)據(jù)直接存放于與CPU 共享的內(nèi)存之中,針對(duì)獨(dú)立內(nèi)存GPU 的相關(guān)設(shè)計(jì)方案難以直接應(yīng)用于共享內(nèi)存GPU 上. StrongBox[13]工作填補(bǔ)了這一空缺. StrongBox 是為Arm 邊緣端統(tǒng)一內(nèi)存GPU 構(gòu)建TEE 的工作,解決了共享內(nèi)存GPU 面臨的相關(guān)安全性問題. 除此之外,不同于先前基于Intel x86 平臺(tái)系統(tǒng)的工作,StrongBox 利用了Arm 架構(gòu)現(xiàn)有的硬件特性,在不需要硬件修改的前提下為共享內(nèi)存GPU 構(gòu)建了TEE. 圖6 展示了StrongBox 在Rodinia[118]基準(zhǔn)中的測(cè)試結(jié)果,實(shí)驗(yàn)結(jié)果表明其整體引入較低的性能開銷(4.70%~15.26%). 除StrongBox 外,近期的CAGE[119]工作也為下一代Arm 設(shè)備(即支持Arm CCA 的設(shè)備)的統(tǒng)一內(nèi)存GPU 提供安全保護(hù),擴(kuò)展了Arm CCA 的功能. CAGE 借助了Arm CCA 提出的內(nèi)存保護(hù)機(jī)制,將統(tǒng)一內(nèi)存GPU 的工作流程與Arm CCA 的系統(tǒng)設(shè)計(jì)相結(jié)合,為Arm CCA 中新提出的領(lǐng)域世界提供GPU 機(jī)密計(jì)算支持,有助于Arm CCA 在機(jī)密計(jì)算和異構(gòu)計(jì)算領(lǐng)域的推廣.
Fig.6 Evaluation of StrongBox in the Rodinia benchmark圖6 StrongBox 在Rodinia 基準(zhǔn)中的評(píng)估
除了針對(duì)GPU 的TEE,目前也有一些工作考慮了為其他異構(gòu)計(jì)算單元構(gòu)建TEE. CRONUS[49]設(shè)計(jì)了一個(gè)通用的加速器TEE,該工作通過將加速器驅(qū)動(dòng)程序部署到Arm TrustZone 中,并利用Arm 提供的安全世界虛擬化特性SEL2,保證了服務(wù)器中多個(gè)加速器的安全隔離和錯(cuò)誤隔離. NPUFort[50]考慮的是保護(hù)DNN 加速器中的模型計(jì)算安全,通過在加速器中增加保護(hù)指令和數(shù)據(jù)的安全單元來對(duì)模型計(jì)算中的重要參數(shù)配置信息和時(shí)間信息進(jìn)行隱藏以保護(hù)模型隱私. 文獻(xiàn)[50-51]所述的工作針對(duì)的是獨(dú)立內(nèi)存架構(gòu)的加速器,而TNPU[51]關(guān)注的是共享內(nèi)存架構(gòu)NPU的計(jì)算安全性問題. 該工作利用了SGX 飛地來對(duì)NPU的上下文和計(jì)算內(nèi)存進(jìn)行隔離,并使用SGX 提供的內(nèi)存加密技術(shù)來提供更低開銷的完整性保護(hù)機(jī)制.
目前異構(gòu)計(jì)算單元的TEE 構(gòu)建尚處于發(fā)展階段,尚未有成熟且廣泛應(yīng)用的產(chǎn)品. 盡管NVIDIA 已經(jīng)推出了具有機(jī)密計(jì)算功能的H100 GPU[48],但這仍然只是NVIDIA 的初步嘗試,距離其成為主流推廣使用的GPU 仍有一定的距離. 因此,為當(dāng)前廣泛使用的異構(gòu)計(jì)算單元構(gòu)建TEE,保護(hù)敏感計(jì)算的安全性,仍然是需要重點(diǎn)解決的問題. 根據(jù)現(xiàn)有的工作,我們可以總結(jié)出未來構(gòu)建異構(gòu)計(jì)算單元工作需要關(guān)注的3 個(gè)問題,即安全性、兼容性以及性能開銷.
1)安全性. 安全性需要確保異構(gòu)計(jì)算單元的計(jì)算數(shù)據(jù)機(jī)密性和完整性,為數(shù)據(jù)的傳輸構(gòu)建安全通路并提供相應(yīng)的內(nèi)存保護(hù). 數(shù)據(jù)的安全通路構(gòu)建主要依賴于加密手段,所有敏感數(shù)據(jù)在傳輸?shù)绞鼙Wo(hù)的內(nèi)存之前都處于加密狀態(tài),并且只會(huì)在受保護(hù)的內(nèi)存中被解密. 明文數(shù)據(jù)只會(huì)在計(jì)算時(shí)被使用,并且會(huì)在計(jì)算之后被加密或者安全銷毀. 針對(duì)異構(gòu)計(jì)算單元內(nèi)存的保護(hù)需要禁止外部操作系統(tǒng)的惡意訪問,并確保機(jī)密計(jì)算任務(wù)內(nèi)存與其他計(jì)算任務(wù)內(nèi)存的隔離性,避免攻擊者利用惡意的計(jì)算任務(wù)發(fā)起攻擊.
安全性還需要考量可信計(jì)算基的大小,這是衡量TEE 安全性的重要指標(biāo). 小的可信計(jì)算基可以降低安全漏洞的存在可能性,也可以更容易驗(yàn)證安全性. 部分現(xiàn)有的工作選擇將整個(gè)加速器的驅(qū)動(dòng)程序引入TEE 中. 然而,許多加速器的驅(qū)動(dòng)程序都存在安全漏洞[120-122],這意味著直接引入復(fù)雜的驅(qū)動(dòng)程序會(huì)導(dǎo)致額外的安全性問題. 因此,相關(guān)工作可以考慮利用驅(qū)動(dòng)程序完成非敏感性的操作,輔以輕量級(jí)的安全檢查程序來對(duì)敏感操作進(jìn)行監(jiān)視和保護(hù),以減少可信計(jì)算基的大小.
2)兼容性. 在兼容性方面,針對(duì)異構(gòu)計(jì)算單元的TEE 需要保證盡可能高的兼容性,以便能夠大規(guī)模部署在現(xiàn)有的系統(tǒng)上. 然而,許多現(xiàn)有的異構(gòu)計(jì)算單元TEE 的設(shè)計(jì)與實(shí)現(xiàn)都依賴于硬件層面的修改,這種基于硬件修改的解決方案會(huì)降低方案的兼容性,導(dǎo)致相關(guān)工作難以應(yīng)用在現(xiàn)有的系統(tǒng)上. 未來的相關(guān)工作可以考慮純軟件的TEE 設(shè)計(jì)方案,利用系統(tǒng)架構(gòu)現(xiàn)有的軟硬件特性,實(shí)現(xiàn)高兼容性、可廣泛部署的解決方案.
3)性能開銷. 在性能開銷方面,需要盡可能降低TEE 保護(hù)方案對(duì)計(jì)算性能的影響. 根據(jù)現(xiàn)有工作的分析,性能開銷主要來源于構(gòu)建數(shù)據(jù)安全通路時(shí)對(duì)計(jì)算數(shù)據(jù)的加解密以及完整性驗(yàn)證過程. 這是因?yàn)楫悩?gòu)計(jì)算單元通常用于處理大規(guī)模計(jì)算數(shù)據(jù),針對(duì)這些數(shù)據(jù)的加解密操作會(huì)帶來不可忽視的延遲開銷.針對(duì)降低性能開銷的問題,未來的相關(guān)工作可以設(shè)計(jì)專用的硬件加解密引擎,以降低加解密對(duì)計(jì)算資源的占用,減少TEE 所帶來的額外開銷.
TEE 技術(shù)伴隨著用戶隱私計(jì)算、機(jī)密計(jì)算等任務(wù)需求而得到有效地發(fā)展,從Arm TrustZone 等實(shí)用性TEE 推出到目前x86、RISC-V 和以GPU 為代表的異構(gòu)計(jì)算單元計(jì)算框架中SGX,SEV,Keystone 等技術(shù)的發(fā)展,TEE 技術(shù)在服務(wù)器領(lǐng)域、個(gè)人電腦、移動(dòng)終端設(shè)備等計(jì)算平臺(tái)中廣泛部署. 本文針對(duì)上述各類系統(tǒng)架構(gòu),詳細(xì)介紹了相關(guān)部署的TEE 技術(shù)的發(fā)展歷程和技術(shù)路線,并具體分析了各類技術(shù)在應(yīng)用范圍內(nèi)面臨的挑戰(zhàn)和安全風(fēng)險(xiǎn). 需要重點(diǎn)指出的是目前基于軟硬件協(xié)同的可信技術(shù)框架廣泛采用硬件隔離技術(shù)基礎(chǔ),降低了對(duì)不可信系統(tǒng)的依賴,從而減少了在運(yùn)行期間可能存在的攻擊. 但是上述TEE 技術(shù)并非絕對(duì)安全,攻擊者可能利用基于緩存溢出、頁(yè)表故障、非法指令的訪問甚至電源控制等軟件侵入或者側(cè)信道攻擊手段,導(dǎo)致TEE 的機(jī)密性和完整性破壞. 因此在未來的發(fā)展中,TEE 技術(shù)將需要重點(diǎn)研究TEE 的高效性和安全性,尤其是針對(duì)共享資源隔離、運(yùn)行時(shí)安全認(rèn)證等方面提出快速處理和可信性保證的方法,為用戶在網(wǎng)絡(luò)環(huán)境中安全任務(wù)提供一個(gè)TEE.
作者貢獻(xiàn)聲明:張鋒巍負(fù)責(zé)總體論文的撰寫和修改,確立論文框架和指導(dǎo)文章內(nèi)容;周雷負(fù)責(zé)資料調(diào)研和論文整理,撰寫背景知識(shí)與基于x86 構(gòu)架的相關(guān)技術(shù);張一鳴、任明德、鄧韻杰分別負(fù)責(zé)撰寫基于Arm、RISC-V 和異構(gòu)計(jì)算單元的相關(guān)技術(shù).