官术网_书友最值得收藏!

? 可信執(zhí)行環(huán)境的實現(xiàn)方案

前面的內(nèi)容中,我們討論的是TEE的概念和理念。應(yīng)用上,TEE通常依賴于具體的技術(shù)廠商提供的不同實現(xiàn)方案,每個方案通過硬件或軟硬件協(xié)同實現(xiàn)隔離的機制各不相同,支持的功能特性也有所差異。目前最具代表的、應(yīng)用最多的技術(shù)方案是ARM的TrustZone和Intel的SGX。

● ARM:TrustZone

TrustZone是最早將TEE落地實現(xiàn)的技術(shù)方案。

2005年,基于OMTP提出的TEE標(biāo)準(zhǔn),ARM公司提出了一種基于硬件虛擬化的TEE實現(xiàn)方案,即TrustZone。TrustZone將系統(tǒng)的硬件和軟件資源一分為二,劃分為兩個執(zhí)行環(huán)境——安全環(huán)境(Secure World)和普通環(huán)境(Normal World),具體架構(gòu)如圖2-14所示。安全環(huán)境擁有更高的執(zhí)行權(quán)限,所有需要保密的操作在安全環(huán)境執(zhí)行,如指紋識別、密碼處理、數(shù)據(jù)加解密、安全認(rèn)證等;而一般的系統(tǒng)操作均在普通環(huán)境中執(zhí)行,且無法訪問安全環(huán)境,以此實現(xiàn)隔離。

開發(fā)者通過使用安全操作系統(tǒng)(secure OS)提供的API開發(fā)更多的可信應(yīng)用來實現(xiàn)特定的安全功能。可信應(yīng)用的執(zhí)行需要通過驗證建立環(huán)環(huán)相扣的信任鏈條,當(dāng)一個程序想要進(jìn)入安全環(huán)境中時,驗證操作系統(tǒng)需要檢查其安全性,只有通過檢驗的程序才能進(jìn)入安全環(huán)境。安全環(huán)境和普通環(huán)境之間通過一個叫作Monitor Mode的模式進(jìn)行轉(zhuǎn)換。

圖2-14 TrustZone架構(gòu)示意圖

TrustZone是標(biāo)準(zhǔn)TEE實現(xiàn)的一種方案,GP的TEE架構(gòu)和規(guī)范標(biāo)準(zhǔn)都是由TrustZone貢獻(xiàn)的。TrustZone的設(shè)計思想是利用CPU時間片切換來模擬一個安全環(huán)境,再配合外部的安全框架和安全OS來執(zhí)行應(yīng)用。只不過在實際落地時,除部署安全OS,TrustZone還需要單獨開發(fā)部署TA。

● Intel:SGX

SGX全稱Software Guard Extension,是Intel在2013年推出的指令集擴(kuò)展,旨在以硬件安全為強制性保障,不依賴于固件和軟件的安全狀態(tài),提供用戶空間的可信執(zhí)行環(huán)境。2015年8月,Intel第六代酷睿處理器Skylake發(fā)布,SGX作為其重要的安全屬性第一次正式發(fā)布。

SGX是與ARM TrustZone截然不同的另一種機制。簡單來說,SGX是一套面向CPU的指令,支持應(yīng)用創(chuàng)建一個安全區(qū),安全區(qū)內(nèi)的代碼通過專門的指令啟動。SGX將這個安全區(qū)域稱為enclave。結(jié)合enclave對應(yīng)的中文含義——飛地,這個概念就有了很直觀的理解。

SGX支持應(yīng)用程序在其地址空間單獨劃分出一個區(qū)域,創(chuàng)建一個enclave,把需要的安全操作全部加載到enclave中,只有enclave內(nèi)部的代碼才能訪問enclave所在的內(nèi)存區(qū)域。一旦軟件和數(shù)據(jù)位于enclave中,即便是操作系統(tǒng)也無法影響enclave里面的代碼和數(shù)據(jù)。

enclave的安全邊界只包含CPU和它自身。一個CPU可以運行多個enclave, enclave之間相互獨立,可以防止單個enclave被破壞后影響整個系統(tǒng)的安全性。也就是說,SGX的整個可信機制都集中在CPU上,因此SGX的部署方式相對靈活簡單,只需要在enclave通過代碼定義即可部署應(yīng)用,如圖2-15所示。

圖2-15 SGX部署示意圖

盡管如此,SGX也存在一些不足。首先是SGX無法抵御側(cè)信道攻擊。enclave只能保護(hù)其內(nèi)運行的代碼,這意味著不受信任的操作系統(tǒng)將保留服務(wù)資源管理任務(wù),這為側(cè)信道攻擊打開了一個很大的缺口。事實上,最近的研究已經(jīng)證明了一些針對SGX的側(cè)信道攻擊是有效的。其次是enclave與外部環(huán)境的交互會增大系統(tǒng)開銷。由于enclave自身無法執(zhí)行系統(tǒng)調(diào)用,需要與不可信區(qū)域進(jìn)行交互。在執(zhí)行系統(tǒng)調(diào)用前需要退出enclave,執(zhí)行完成后再將結(jié)果返回到enclave中,而SGX提供給enclave的可使用內(nèi)存太小,當(dāng)程序數(shù)量和規(guī)模增大時,需要頻繁換進(jìn)換出頁面,導(dǎo)致系統(tǒng)開銷大,也會增加過程中的安全風(fēng)險。

此外,AMD的安全加密虛擬化方案SEV也是比較著名的TEE實現(xiàn)方案之一,且原理與SGX相似,旨在加密運行在AMD CPU服務(wù)器上虛擬機的數(shù)據(jù)。但是2018年有德國研究團(tuán)隊提出了一個攻破方案,可以繞過SEV,恢復(fù)加密虛擬機中的數(shù)據(jù)。另外,國內(nèi)的兆芯和海光分別提出了名為TCT和CSV的可信執(zhí)行環(huán)境方案,兆芯的TCT基于可信平臺控制模塊(TPCM)實現(xiàn),而海光的CSV則是對硬件虛擬機技術(shù)的擴(kuò)展。具體的技術(shù)方案,此處不再贅述,讀者可以通過表2-1對上述5種方案進(jìn)行簡要的對比。

表2-1 5種代表性的TEE方案對比

續(xù)表

主站蜘蛛池模板: 富顺县| 梁河县| 广平县| 花莲市| 济阳县| 东乡族自治县| 苗栗市| 南澳县| 塘沽区| 嘉定区| 台州市| 崇仁县| 石阡县| 庆阳市| 迁安市| 昌乐县| 渑池县| 佛学| 巴马| 车致| 扶绥县| 田东县| 池州市| 玉林市| 赣州市| 闸北区| 儋州市| 宽城| 永城市| 孟村| 驻马店市| 南城县| 阳山县| 邯郸县| 登封市| 社会| 兴宁市| 榕江县| 望都县| 开鲁县| 德州市|