国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于邊緣計算的可信執(zhí)行環(huán)境研究

2019-07-15 12:13:20寧振宇張鋒巍施巍松
計算機研究與發(fā)展 2019年7期
關(guān)鍵詞:內(nèi)存處理器邊緣

寧振宇 張鋒巍 施巍松

(韋恩州立大學計算機科學系 美國密歇根州底特律 48202)

云計算(cloud computing)[1]的概念被提出并廣泛應(yīng)用之后,大型應(yīng)用服務(wù)的海量數(shù)據(jù)計算逐漸轉(zhuǎn)移到云端[2].隨著物聯(lián)網(wǎng)技術(shù)(Internet of things, IoT)[3]和萬物互聯(lián)技術(shù)(Internet of everything, IoE)[4]的推進,越來越多的節(jié)點開始融入互聯(lián)網(wǎng),同時也導致部分節(jié)點對數(shù)據(jù)和計算的實時性和隱私性提出了更高的要求.然而由于云計算模型結(jié)構(gòu)要求數(shù)據(jù)上傳,從而導致其無法滿足所有節(jié)點的要求,尤其是實時性和隱私性要求.因此,邊緣計算(edge computing)[5]和霧計算(fog computing)[6]應(yīng)運而生.

與傳統(tǒng)的云計算模型不同的是,邊緣計算模型在數(shù)據(jù)源和云計算中心之間增加了一層網(wǎng)絡(luò)邊緣節(jié)點.這些網(wǎng)絡(luò)邊緣節(jié)點不僅能夠與云計算中心進行雙向數(shù)據(jù)傳輸,還可以高效地在數(shù)據(jù)源附近執(zhí)行部分實時性要求較高的計算任務(wù).由于這些節(jié)點更加貼近數(shù)據(jù)源,他們與數(shù)據(jù)源的通信成本更低、時效性更高.此外,由于不再需要將數(shù)據(jù)統(tǒng)一上傳到云計算中心,數(shù)據(jù)的隱私性和安全性也得到了更好的保障.

然而網(wǎng)絡(luò)邊緣節(jié)點自身的安全性依然是一個不可忽視的問題.與集中式云計算中心自身的安全性不同,邊緣節(jié)點的分布式特性決定了難以對其進行統(tǒng)一的管理.因此,如何保證節(jié)點計算的安全性和隱私性依然是一個值得探討的研究問題.

例如在邊緣計算視頻監(jiān)控系統(tǒng)中[5],為了降低存儲空間并減少數(shù)據(jù)視頻上傳,邊緣節(jié)點將提供視頻預處理功能,這也意味著邊緣節(jié)點擁有所有視頻監(jiān)控的讀取權(quán)限.這些邊緣節(jié)點并不像云計算節(jié)點一樣集中管理,而是分布在各個邊緣端,因而它們被惡意入侵的風險更大.一旦這些節(jié)點被入侵,所有的監(jiān)控視頻都有可能被惡意讀取,進而造成公共隱私泄露等安全問題.又比如在由邊緣操作系統(tǒng)支持的智能家居系統(tǒng)中[5],邊緣節(jié)點集中了整個家居系統(tǒng)中的所有數(shù)據(jù),如家庭中照明系統(tǒng)、智能電視、智能監(jiān)控的數(shù)據(jù),并可能擁有其控制權(quán)限.一旦這些邊緣節(jié)點被人惡意控制,將使整個家庭不再有隱私可言,用戶甚至將對各種智能家居系統(tǒng)失去控制,造成嚴重的后果.再比如在由邊緣節(jié)點支持的智能交通系統(tǒng)中[5],自動駕駛汽車對于汽車的控制基于邊緣節(jié)點對于周邊環(huán)境的感知和分析來決策,一旦這些感知和分析出現(xiàn)了問題,自動駕駛汽車可能會做出危險的控制動作,造成嚴重影響公共安全的毀滅性的后果.這里僅以3個較為典型的場景為例分析了邊緣節(jié)點被攻擊者控制的后果,與傳統(tǒng)計算模型一樣,邊緣計算模型的幾乎所有應(yīng)用場景都不得不面臨節(jié)點的安全問題[7].

可信執(zhí)行環(huán)境(trusted execution environment, TEE)是指在設(shè)備上一個獨立于不可信操作系統(tǒng)而存在的可信的、隔離的、獨立的執(zhí)行環(huán)境,為不可信環(huán)境中的隱私數(shù)據(jù)和敏感計算提供了一個安全而機密的空間,其安全性通常通過硬件相關(guān)的機制來保障.常見的TEE包括Intel軟件防護擴展(software guard extensions, SGX)[8-10]、Intel管理引擎(manage-ment engine, ME)[11]、x86系統(tǒng)管理模式(system management mode, SMM)[12]、AMD內(nèi)存加密(memory encryption)技術(shù)[13]、AMD平臺安全處理器(platform security processor, PSP)[14]和ARM TrustZone技術(shù)[15].

近年來,對可信執(zhí)行環(huán)境技術(shù)的研究飛速發(fā)展,而在邊緣節(jié)點上應(yīng)用這一技術(shù)可以有效地提高邊緣節(jié)點的安全性和隱私性.本文將首先對這些技術(shù)的背景和概念進行闡述;其次通過2個案例從可信執(zhí)行環(huán)境對性能的影響方面來分析在邊緣節(jié)點上應(yīng)用可信執(zhí)行環(huán)境的可行性;最后,我們將討論可信執(zhí)行環(huán)境所面臨的各種挑戰(zhàn).通過本文的闡述,我們期待為邊緣計算模型安全性研究者提供未來的研究方向.

在本文的案例分析中,我們使用Intel霧計算樣機[16]以及ARM Juno開發(fā)板[17]來進行測試.其中,Intel霧計算樣機是Intel推出的專門為霧計算設(shè)計的計算節(jié)點.由于霧計算的概念與邊緣計算的概念十分貼近,使用這一樣機進行測試能夠在一定程度上反映邊緣計算節(jié)點的真實情況.ARM暫無專門為邊緣計算或霧計算設(shè)計的樣機,但ARM的Juno開發(fā)板是唯一由ARM公司推出的開發(fā)板,它反映了ARM對嵌入式節(jié)點的設(shè)計理念,并包含了ARM的高性能處理器以及大量的硬件特性.因此,我們相信它也能代表著ARM對未來霧計算節(jié)點或邊緣計算節(jié)點的設(shè)計標準.從這2個平臺的性能測試結(jié)果來看,Intel軟件防護擴展中的模式切換大約需要2.039~2.714s,而TrustZone中的模式切換大約需要0.218s.從計算的性能來看,Intel軟件防護擴展和TrustZone分別引入了1.423倍和1.175倍額外性能消耗.從Benchmark的測試來看,軟件防護擴展使單核和多核的性能分別下降了0.48%和0.26%,而TrustZone則分別下降了0.13%和0.02%.因此,整體而言,我們認為在邊緣節(jié)點中引入可信執(zhí)行環(huán)境對性能的影響是在可接受的范圍之內(nèi).

1 可信執(zhí)行環(huán)境

隨著可信執(zhí)行環(huán)境研究的興起,工業(yè)界的各大廠商均進行了研究和嘗試,并在各自的軟硬件上提供了各種不同的可信執(zhí)行環(huán)境.如表1所示,根據(jù)實現(xiàn)技術(shù)的不同,我們將這些廠商的可信執(zhí)行環(huán)境分為三大類:

1) 基于內(nèi)存加密的可信執(zhí)行環(huán)境.由于此類解決方案直接在應(yīng)用層進行隔離,我們認為它的權(quán)限級別為Ring 3;

2) 基于CPU模式的可信執(zhí)行環(huán)境.此類解決方案通常使用額外的CPU模式來實現(xiàn)內(nèi)存的隔離,獨立于不可信操作系統(tǒng)而存在,因此我們認為它的權(quán)限級別為Ring -2.

3) 基于協(xié)處理器(co-processor)的可信執(zhí)行環(huán)境.這一解決方案使用額外的協(xié)處理器來提供執(zhí)行環(huán)境,并且這種執(zhí)行環(huán)境有獨立的內(nèi)存,不受主處理器(main processor)和主內(nèi)存(main memory)的影響,我們認為它的權(quán)限級別為Ring -3.

我們將分別對這3種不同類型的可信執(zhí)行環(huán)境進行分析和介紹.

Table 1 Summary of TEEs表1 可信執(zhí)行環(huán)境歸類

1.1 基于內(nèi)存加密的Ring 3可信執(zhí)行環(huán)境

Intel軟件防護擴展[8-10]和AMD內(nèi)存加密技術(shù)[58-59]采用內(nèi)存加密的方式來保護Ring 3級別的內(nèi)存.此類加密技術(shù)通過Ring 3內(nèi)存加密來保證在內(nèi)核不可信的情況下,Ring 3應(yīng)用程序的運行環(huán)境依舊可信.

1.1.1 Intel軟件防護擴展

2013年Intel公開發(fā)表了3篇介紹軟件防護擴展SGX的文章[8-10],正式將這一技術(shù)帶入研究者的視野.Intel軟件防護擴展實際上是新加入到Intel處理器上的一系列擴展指令和內(nèi)存訪問機制.在這一擴展的支持下,應(yīng)用程序可以在內(nèi)存中創(chuàng)建1個受保護的執(zhí)行區(qū)域,又稱圍圈(enclave).每一個圍圈都可以被視作為1個單獨的可信執(zhí)行環(huán)境,它們的機密性和完整性由加密的內(nèi)存來保護.即使基本輸入輸出系統(tǒng)(basic IO system, BIOS)、固件(firm-ware)、管理程序(hypervisors)、操作系統(tǒng)都被惡意修改,軟件防護擴展技術(shù)依然能保障圍圈內(nèi)執(zhí)行環(huán)境的安全,這一技術(shù)也被很多研究學者們認為是Intel可信執(zhí)行技術(shù)(trusted execution technology, TXT)[60-61]的接班人.Intel將軟件防護擴展用于支持最新一代的可信計算(trusted computing),并且將在所有后續(xù)的Intel處理器上集成這一技術(shù)來為應(yīng)用程序提供可信執(zhí)行環(huán)境以解決各種安全問題.

隨著Intel軟件防護擴展的提出,研究學者們提出了一系列基于這一擴展的安全系統(tǒng).Haven系統(tǒng)[18]利用軟件防護擴展將系統(tǒng)庫(system libraries)和庫操作系統(tǒng)(library OS)移植進圍圈中,利用該圍圈來保障其在運行過程中的安全性;Arnautov等人[19]提出了利用軟件防護擴展來為Docker提供安全容器(container)的SCONE系統(tǒng),該系統(tǒng)能夠有效地幫助容器抵御各種外來攻擊;Hunt等人[20]開發(fā)了基于軟件防護擴展的分布式沙盒(distributed sand-box)系統(tǒng)Ryoan,這一系統(tǒng)可以讓用戶在處理數(shù)據(jù)時安全地持有他們的數(shù)據(jù)密鑰;Schuster等人[21]利用軟件防護擴展開發(fā)了用來為云端MapReduce計算提供可信執(zhí)行環(huán)境的VC3系統(tǒng),這一系統(tǒng)為大數(shù)據(jù)和云計算提供了安全保障;Karande等人[22]用軟件防護擴展來保護系統(tǒng)日志的安全;Shih等人[23]用軟件防護擴展來隔離網(wǎng)絡(luò)虛擬化(network function virtualization, NFV)應(yīng)用;SGX-Shield[24]為圍圈中的應(yīng)用程序提供了安全的地址空間布局隨機化(address space layout randomization, ASLR),而T-SGX[25]則用來對抗控制管道攻擊,并確保內(nèi)存缺頁(page fault)信息不會被泄露.

1.1.2 AMD內(nèi)存加密技術(shù)

AMD在ISCA 2016和USENIX Security 2016會議中介紹了2個x86新特性[58-59]:安全內(nèi)存加密(secure memory encryption, SME)和安全加密虛擬化(secure encrypted virtualization, SEV).其中安全內(nèi)存加密定義了一種新的主內(nèi)存(main memory)加密方式,而安全加密虛擬化則用來與現(xiàn)有的AMD -V虛擬化架構(gòu)結(jié)合以支持加密的虛擬機.這些特性使得選擇性地加密部分或者全部系統(tǒng)內(nèi)存成為可能,并且可以不依賴于管理程序運行加密虛擬機.總體而言,與Intel的軟件防護擴展相比,AMD的安全內(nèi)存加密技術(shù)也是1項非常有競爭力的技術(shù)——它利用內(nèi)存加密不僅可以提供Ring 3權(quán)限的可信執(zhí)行環(huán)境,也可以提供其他權(quán)限級別的可信執(zhí)行環(huán)境(例如管理程序級別,Ring -1權(quán)限).同樣地,安全加密虛擬化技術(shù)能夠加密虛擬機,使得運行在虛擬機內(nèi)的操作系統(tǒng)成為1個可信執(zhí)行環(huán)境.AMD承諾安全內(nèi)存加密和安全加密虛擬化技術(shù)將應(yīng)用到新的AMD芯片中.AMD最近發(fā)布的Zen Processor已經(jīng)包括了全新的AMD內(nèi)存加密技術(shù).

Fig. 1 x86 system management mode圖1 x86系統(tǒng)管理模式

1.2 基于限制內(nèi)存訪問的Ring -2可信執(zhí)行環(huán)境

Intel系統(tǒng)管理模式[12]和ARM TrustZone技術(shù)[15]都采用限制內(nèi)存訪問的方式來創(chuàng)建可信執(zhí)行環(huán)境.具體來說,他們使用硬件來輔助建立內(nèi)存區(qū)域的訪問權(quán)限,使得系統(tǒng)中的不可信區(qū)域的程序無法訪問可信區(qū)域中的內(nèi)存.以這種形式創(chuàng)建的可信執(zhí)行環(huán)境中的程序通常與不可信區(qū)域中的程序以時間片(time-slice)的形式來共享同一個CPU.

1.2.1 x86系統(tǒng)管理模式

系統(tǒng)管理模式[12]始于20世紀90年代早期的Intel奔騰系列CPU,它是x86平臺上類似于實模式(real mode)和保護模式(protected mode)的另一種運行模式,AMD隨后也在后續(xù)的處理器中實現(xiàn)了這一模式.這種運行模式為x86平臺特有的電源管理之類的系統(tǒng)控制功能提供了隔離的運行環(huán)境.系統(tǒng)管理模式的初始化由基本輸入輸出系統(tǒng)完成,并通過觸發(fā)1個系統(tǒng)管理中斷(system management interrupt, SMI)來進入.系統(tǒng)管理中斷的觸發(fā)方式有很多種,較為典型的如寫入1個硬件端口或用PCI設(shè)備生成1個消息信號中斷(message signaled interrupt).系統(tǒng)管理中斷觸發(fā)后,CPU將會把其狀態(tài)信息保存在一段名為系統(tǒng)管理RAM的特殊內(nèi)存區(qū)域中,這一段特殊的內(nèi)存區(qū)域無法被其他執(zhí)行模式下運行的程序進行尋址與訪問.在默認情況下,對系統(tǒng)管理RAM的尋址請求將會被轉(zhuǎn)到圖像存儲器,這一特性使得系統(tǒng)管理RAM可以被用來當做安全存儲設(shè)備.值得注意的是,系統(tǒng)管理中斷處理程序是由BIOS在系統(tǒng)啟動時加載到系統(tǒng)管理RAM中,該處理程序可以不受限制地訪問物理內(nèi)存空間,且可以執(zhí)行特權(quán)指令.因此,系統(tǒng)管理模式也通常被認為擁有Ring -2權(quán)限級別.另外,我們可以使用RSM指令來讓CPU退出系統(tǒng)管理模式并恢復到之前的模式繼續(xù)執(zhí)行.圖1顯示了x86系統(tǒng)管理模式的基本切換流程.保護模式通過軟件或硬件方法觸發(fā)一個系統(tǒng)管理中斷來進入系統(tǒng)管理模式,而系統(tǒng)管理模式中的中斷處理器會對這一中斷做進一步處理.中斷處理完成后,在系統(tǒng)管理模式內(nèi)使用RSM指令來切換回保護模式.

近年來,基于系統(tǒng)管理模式的研究經(jīng)常出現(xiàn)在系統(tǒng)安全的學術(shù)界研究中.一個典型的例子就是利用系統(tǒng)管理模式來檢查上層軟件(包括管理程序和操作系統(tǒng))的完整性.HyperGuard[29],HyperCheck[30],HyperSentry[31]都是利用系統(tǒng)管理模式來監(jiān)控完整性的系統(tǒng).另外,美國國家科學基金會(National Science Foundation)也在2015年資助了1個利用系統(tǒng)管理模式來在做運行時完整性檢測(runtime integrity checking)的項目[32];SICE[33]利用系統(tǒng)管理模式在AMD平臺上為敏感計算提供可信執(zhí)行環(huán)境;SPECTRE[34]使用系統(tǒng)管理模式進行實時的內(nèi)存自省(memory introspection),并以此為基礎(chǔ)來進行惡意軟件檢測;Reina等人[35]以及Jiang等人[36]都使用系統(tǒng)管理模式來可靠地獲取系統(tǒng)物理內(nèi)存以進行取證分析(forensic analysis);IOCheck[37]使用系統(tǒng)管理模式來保護輸入輸出(IO)設(shè)備的固件和設(shè)置;HRA[38]則通過系統(tǒng)管理模式來保護云端的資源審核,使得即使在管理程序被惡意修改后仍能保障資源審核程序的正確性;MalT[39]則更多關(guān)注于如何利用系統(tǒng)管理模式來進行裸機(bare-metal)程序調(diào)試,并提供更高的透明性(transparency)而不被惡意軟件察覺;TrustLogin[40]保護用戶的證書及密鑰等信息不被不可信運行環(huán)境中的軟件截獲;HOPS[41]則使用系統(tǒng)管理模式來減少自省過程中可被惡意進程偵測的痕跡.

Fig. 2 ARM TrustZone technology圖2 ARM TrustZone技術(shù)

1.2.2 ARM TrustZone技術(shù)

ARM TrustZone技術(shù)[15]是ARM公司在2002年前后基于ARMv6架構(gòu)[62]提出的一種硬件新特性,它通過特殊的CPU模式提供了一個獨立的運行環(huán)境.與其他硬件隔離技術(shù)類似,TrustZone將整個系統(tǒng)的運行環(huán)境劃分為可信執(zhí)行環(huán)境和富運行環(huán)境(rich execution environment, REE)兩個部分,并通過硬件的安全擴展來確保2個運行環(huán)境在處理器、內(nèi)存和外設(shè)上的完全隔離.

如圖2所示,支持TrustZone技術(shù)的ARM處理器有2種不同的處理模式:普通模式和安全模式.2種處理器模式都擁有各自的內(nèi)存區(qū)域和權(quán)限.在普通模式下運行的代碼無法訪問安全模式擁有的內(nèi)存區(qū)域,而安全模式下運行的程序則可以訪問普通模式下的內(nèi)存.當前處理器所處的模式可以用安全配置寄存器(secure configuration register, SCR)的NS位來判斷,而這個寄存器的值只能在安全模式下進行修改.圖2同時還描述了ARMv8架構(gòu)下不同的異常等級(exception level, EL),低的異常等級擁有更低的權(quán)限.最高的異常等級是異常級別3,它類似于一個在普通模式和安全模式之間切換的看門人,所有的切換都必須經(jīng)過異常級別3.普通模式可以通過安全監(jiān)控調(diào)用(secure monitor call, SMC)指令觸發(fā)1個異常級別3的異?;蚴怯|發(fā)1個安全中斷來進入安全模式,而安全模式則可以通過異常返回(exception return, ERET)指令來返回普通模式.同時,TrustZone利用內(nèi)存管理單元(memory management unit, MMU)同時在普通模式和安全模式下支持虛擬內(nèi)存地址.2個模式下同一個虛擬地址空間可以被映射到不同的物理內(nèi)存區(qū)域.在硬件中斷方面,ARM支持中斷請求(interrupt request, IRQ)和快速中斷請求(fast interrupt request, FIQ).通過安全配置寄存器的IRQ位和FIQ位可以將這2種中斷分別設(shè)置為安全中斷,無論普通模式如何進行配置,安全中斷都將直接被轉(zhuǎn)送到異常級別3.通常情況下,ARM推薦將中斷請求做為普通模式下的中斷源,而將快速中斷請求做為安全模式下的中斷源.

由于現(xiàn)有的移動設(shè)備大都采用ARM處理器,研究學者們也利用TrustZone技術(shù)對移動設(shè)備的安全性進行了大量的研究.TrustDump[42]利用TrustZone來進行可靠的內(nèi)存信息轉(zhuǎn)儲,它通過將1個非可屏蔽中斷(non-maskable interrupt, NMI)設(shè)置為安全中斷來完成處理器模式轉(zhuǎn)換,并從安全模式下轉(zhuǎn)儲普通模式下的內(nèi)存;TZ-RKP系統(tǒng)[43]在安全模式下通過事件驅(qū)動的監(jiān)控來保護普通模式下的操作系統(tǒng);Sprobes[44]則利用安全模式來審查普通模式下的操作系統(tǒng),并保障普通模式下內(nèi)核代碼的完整性;SeCReT系統(tǒng)[45]在普通模式和安全模式之間建立1條安全的通信渠道;TrustICE[46]通過TrustZone為系統(tǒng)中的敏感計算提供了1個安全而隔離的運行環(huán)境;TrustOTP[47]提供了1個在移動設(shè)備上保護一次性密碼的解決方案;AdAttester[48]提出了安全的可驗證的在線廣告架構(gòu);Brasser[49]等人則建議利用TrustZone來將如攝像頭之類的外設(shè)控制在受限區(qū)域內(nèi);fTPM[50]在TrustZone中實現(xiàn)了固件版本的可信平臺模塊(trusted platform module, TPM);PrivateZone[51]利用TrustZone來創(chuàng)建一個獨立于富運行環(huán)境和可信執(zhí)行環(huán)境的獨占執(zhí)行環(huán)境;C-FLAT[52]系統(tǒng)利用TrustZone中的實時控制流(control-flow)監(jiān)控來檢測控制流劫持;TrustShadow[53]利用TrustZone為安全性要求較高的應(yīng)用程序提供了一個可信執(zhí)行環(huán)境,并將這些應(yīng)用程序?qū)τ诓僮飨到y(tǒng)相關(guān)服務(wù)的請求轉(zhuǎn)送至普通模式下的操作系統(tǒng),并檢查對于每一個請求的回復.

1.3 通過協(xié)處理器實現(xiàn)的Ring -3可信執(zhí)行環(huán)境

與1.1節(jié)、1.2節(jié)提到的可信執(zhí)行環(huán)境不同的是,Intel管理引擎[11]和AMD平臺安全處理器[14]通過1個額外的專用協(xié)處理器來引入1個可信執(zhí)行環(huán)境.協(xié)處理器通常與主處理器隔離,并擁有獨立的內(nèi)存和寄存器,因而為這類可信執(zhí)行環(huán)境提供了更有力的安全保障.

1.3.1 Intel管理引擎

Intel管理引擎[11]是1個嵌入在最新發(fā)布的Intel處理器內(nèi)的微型計算機,它存在于Intel的服務(wù)器、工作站、個人電腦、平板電腦以及手機設(shè)備中.Intel最早提出管理引擎這一概念是在2007年,那時該引擎的主要作用是為了支持Intel的主動管理技術(shù)(active management technology, AMT)[63],而此技術(shù)也成為了在Intel管理引擎中運行的第1個應(yīng)用程序.最近,Intel轉(zhuǎn)而利用管理引擎來為安全敏感的應(yīng)用程序提供可信執(zhí)行環(huán)境.依照Intel管理引擎的最新聲明[11],有不少的安全應(yīng)用(如增強的隱私識別、受保護的視頻音頻路徑、身份辨識保護技術(shù)、啟動保護等)已經(jīng)或即將在管理引擎中運行.

圖3所示為Intel管理引擎的硬件架構(gòu).從圖3中我們可以發(fā)現(xiàn),這個管理引擎就像1臺獨立的電腦,它有專用處理器、加密引擎、直接內(nèi)存存取(direct memory access, DMA)引擎、主機嵌入式通訊接口(host-embedded communication interface, HECI)引擎、只讀存儲器(read-only memory, ROM)、內(nèi)部靜態(tài)隨機存取存儲器(internal static random-access memory, SRAM)、中斷控制器、計時器以及其他的輸入輸出設(shè)備.管理引擎的指令在其處理器上執(zhí)行,而內(nèi)部靜態(tài)隨機存取存儲器則用來保存固件代碼和實時數(shù)據(jù).管理引擎的處理器也同時擁有代碼緩存和數(shù)據(jù)緩存,可以減少對內(nèi)部靜態(tài)隨機存取存儲器的訪問次數(shù).除內(nèi)部靜態(tài)隨機存取存儲器外,管理引擎也會使用一部分主機系統(tǒng)的動態(tài)隨機存取存儲器(dynamic random-access memory, DRAM),這一部分的動態(tài)隨機存取存儲器就像是管理引擎的硬盤空間.管理引擎中處理器暫時不用的代碼和數(shù)據(jù)內(nèi)存頁會被從靜態(tài)隨機存取存儲器中移除并換出到主機內(nèi)存的動態(tài)隨機存取存儲器中.要注意的是,這一段動態(tài)隨機存取存儲器區(qū)域在系統(tǒng)啟動時就由BIOS保留下來專門給管理引擎使用,主機的操作系統(tǒng)無法訪問到這一區(qū)域.

1.3.2 AMD臺安全處理器

與Intel的管理引擎類似,AMD平臺安全處理器[14]也是1個嵌入在在AMD主處理器內(nèi)的專用處理器.這個專用處理器利用ARM的TrustZone技術(shù)和Ring -2級別的可信執(zhí)行環(huán)境來運行可信的第三方應(yīng)用程序.通過平臺安全處理器,AMD保障了從BIOS到可信執(zhí)行環(huán)境的安全啟動,而受保護的可信第三方應(yīng)用程序則可以利用工業(yè)級別的API來使用可信執(zhí)行環(huán)境.另外,系統(tǒng)管理單元(system management unit, SMU)[64]是北橋上在系統(tǒng)啟動和運行時用來負責一系列系統(tǒng)和電源管理任務(wù)的子部件,它的內(nèi)部也包含了1個處理器[65].而由于AMD將北橋直接集成至處理器中,系統(tǒng)管理單元中的這個處理器也可以被視作為一個主處理器中的嵌入式協(xié)處理器.

2 案例分析

本節(jié)中,我們將對應(yīng)用最廣泛的Intel軟件防護擴展和ARM TrustZone這2個典型可信執(zhí)行環(huán)境的實際應(yīng)用進行分析,以闡述在邊緣節(jié)點中應(yīng)用這些可信執(zhí)行環(huán)境的可行性.由于硬件的支持已經(jīng)保障了可信執(zhí)行環(huán)境的隔離性和安全性,而邊緣計算節(jié)點對性能較為敏感,我們將重點關(guān)注Intel軟件防護擴展和ARM TrustZone引入造成的額外性能成本.

2.1 Intel軟件防護擴展

Intel于2017年5月推出了根據(jù)霧計算參考設(shè)計的真機樣品[16],其配備了8核Intel Xeon E3-1275處理器、32 GB DDR4內(nèi)存、M.2 PCIE固態(tài)硬盤以及SATA固態(tài)硬盤,軟件方面則是使用Tianocore開源BIOS和64位Ubuntu 16.04操作系統(tǒng).由于霧計算的概念與邊緣計算類似,且真機樣品的處理器包含了對Intel軟件防護擴展的支持,我們將該樣品機作為邊緣計算節(jié)點,測試Intel軟件防護擴展的性能.

在霧計算真機樣品軟件環(huán)境的基礎(chǔ)上,我們部署了Intel軟件防護擴展軟件開發(fā)SDK 1.9[66]來支持我們的測試.之后我們將測試Intel軟件防護擴展在進行模式切換時的時間消耗、在圍圈模式中進行計算導致的額外時間成本,以及圍圈模式內(nèi)的計算對整個系統(tǒng)的性能影響.

2.1.1 模式切換時間

為了計算模式切換所需要的時間,我們利用Intel提供的API在圍圈內(nèi)定義了1個空函數(shù).從圍圈外調(diào)用該函數(shù)時,CPU將會切換為圍圈模式,而該函數(shù)執(zhí)行完畢并返回后,CPU將退出圍圈模式.為了精確地計算切換所需的時間,我們使用RDTSC指令來讀取CPU周期(cycle),并通過對比CPU周期數(shù)量以及對應(yīng)的CPU頻率來計算圍圈模式切換所花費的時間.由于圍圈模式下禁用該指令,我們無法準確測量從非圍圈模式進入圍圈模式或是退出非圍圈模式所需的時間,而只能測量從非圍圈模式進入圍圈模式,再回到非圍圈模式這一完整周期所需要的時間.另外,2種模式之間的參數(shù)傳遞由指定大小的緩存實現(xiàn),而這一緩存的大小也會對模式切換的性能產(chǎn)生影響,因此我們使用不同大小的緩存來測量Intel軟件防護擴展中模式切換的時間.為了減少CPU頻率調(diào)節(jié)(frequency scaling)所帶來的誤差,我們將CPU頻率固定為4 GHz,并且將這一實驗重復1 000次.

我們的實驗結(jié)果如表2所示,從表2中我們可以發(fā)現(xiàn),在不使用緩存?zhèn)鬟f參數(shù)的情況下,1次完整的圍圈模式切換需要的時間大約為2.039s.而隨著緩存的增大,模式切換所需要的時間也同步增加.當緩存大小分別1 KB,4 KB,8 KB,16 KB時,模式切換所需的時間分別增加到2.109s,2.251s,2.362s,2.714s.通過表2中這一切換時間的95%可信區(qū)間不難看出,這一切換時間的可信區(qū)間(confidence interval, CI)范圍非常小,也就說明了我們的測試結(jié)果十分穩(wěn)定.

Table 2 Switching Time of SGX Enclave表2 圍圈模式切換時間

2.1.2 MD5散列計算時間

在這一階段的實驗中,我們使用開源的基于RFC 1321標準的MD5算法[67]來計算字符串的散列值.我們分別在圍圈模式和非圍圈模式下應(yīng)用該算法計算同一段預先生成的長度為1 024的隨機字符串的散列值.我們先測量非圍圈模式下進行此散列計算的時間消耗,隨后在非圍圈模式下調(diào)用圍圈模式中的函數(shù)來進行這一計算,并比較這2次計算的時間消耗.與2.1.1節(jié)中的實驗類似,我們同樣將這一實驗重復1 000次來減少誤差.

從表3中可以發(fā)現(xiàn),在非圍圈模式下進行該MD5散列計算所需的時間約為4.734s,而調(diào)用圍圈模式中的函數(shù)則需要約6.737s,這2種計算的時間差距約為2.003s.值得注意的是,本節(jié)實驗中在圍圈模式下進行MD5計算的時間應(yīng)為進行圍圈模式切換的時間加上圍圈模式下進行MD5計算的時間.而在2.1.1節(jié)的實驗中我們測出的圍圈模式切換時間也約為2s,與本節(jié)實驗中2種方式進行MD5計算的時間差基本吻合,這也說明在圍圈模式和非圍圈模式中CPU的性能基本相當,在圍圈模式中進行計算引入的額外性能消耗即為圍圈模式切換所需的性能消耗.

Table 3 Time Consumption of MD5表3 MD5計算時間

2.1.3 整體系統(tǒng)性能影響

為了測試Intel軟件防護擴展中運行在圍圈模式下的代碼對整個系統(tǒng)性能的影響,我們使用一個每隔1 s進行1次模式切換的應(yīng)用程序來模擬系統(tǒng)中的敏感計算.該程序每次切換到圍圈模式后,會進行一次1 024長度字符串的MD5散列計算,隨后切換回非圍圈模式.通過比較啟動該程序前后整個系統(tǒng)的性能,我們可以得知該計算對整體性能的影響.為了準確測量多核CPU系統(tǒng)的性能,我們使用GeekBench 4.1.1[68]的Linux版本來測試我們的Intel霧計算真機樣品的性能分,此實驗被重復了100次來減少隨機誤差.

表4顯示了在有無敏感計算的情況下GeekBench給出的霧計算真機樣品的性能分.在沒有敏感計算的情況下,單核性能分約為4 327.325;而存在敏感計算的情況下,單核性能分約為4 306.458,性能降低了約0.48%.同樣地,在沒有敏感計算的情況下,多核性能分約為17 739.62,而存在敏感計算的情況下多核性能分約為17 692.72,性能降低了約0.26%.很明顯,即使是每秒鐘1次的頻繁模式切換,對整體系統(tǒng)性能的影響也幾乎可以忽略不計.

Table 4 Performance Score with GeekBench表4 GeekBench測試性能分

2.2 ARM TrustZone

我們在ARM平臺上使用ARM Juno v1開發(fā)板[16]進行實驗.該開發(fā)板上的處理器包含了1組雙核Cortex-A57處理器集群和1組4核Cortex-A53處理器集群.存儲方面,Juno開發(fā)板搭載了8 GB DDR3L內(nèi)存以及64 MB NOR閃存.由于ARM尚未推出專門用于邊緣計算或是霧計算的硬件,我們把Juno開發(fā)板當做邊緣計算中的一個節(jié)點,并在ARM可信固件(ARM trusted firmware) v1.1[69]和Linaro發(fā)布的安卓5.1.1版本交付件[70]的基礎(chǔ)上進行本階段的實驗.與針對Intel軟件防護擴展的測試類似,我們將分析TrustZone進行模式切換的時間消耗、在安全模式中進行計算導致的額外時間成本,以及安全模式中計算對整個系統(tǒng)的性能影響.

2.2.1 模式切換時間

她走過去,撫摸他的額頭,手指輕輕拂過他額際頭發(fā),如同安撫頑劣遲歸的孩子。他把腦袋埋在她腿上,愧疚無措,淚如雨下開始抽泣。他說,F(xiàn)iona,你可愛我,你有無真正愛過我。她停頓在那里,不知道如何應(yīng)答他。一直遲疑,最終依然只有沉默。他的微笑仿佛是嘲笑自己卻有一種悲戚,輕聲說,其實我在萬象遇見你就已知道,我是你操縱在手里的工具。家,孩子,我的愛。這一切有無讓你覺得安全。有無讓你感覺到最終的滿足。有無讓你得到歸宿。我知道你沒有。我曾深深愛過你,你可知道。

由于指令集的差異,ARM架構(gòu)中不支持使用RDTSC指令來讀取CPU周期.在Juno開發(fā)板所搭載的Cortex-A53和Cortex-A57處理器中,我們可以使用處理器附帶的性能監(jiān)視單元(performance monitor unit, PMU)來計算2個時間點之間所經(jīng)過的CPU周期數(shù).我們在執(zhí)行觸發(fā)模式切換的指令前打開性能監(jiān)視單元,并記錄當前CPU周期數(shù),然后在進入到安全模式時以及回到普通模式后分別記錄CPU周期數(shù).通過這些記錄值的差距,我們可以計算出從非安全模式進入安全模式、從安全模式進入非安全模式,以及1次完整的從非安全模式進入安全模式再回到非安全模式的切換所需要的時間.與Intel軟件防護擴展不同的是,在TrustZone的安全模式和非安全模式之間傳遞參數(shù)并不需要通過緩存,而是通過寄存器直接傳遞,因而不會帶來任何額外的性能消耗,所以這里的實驗不再測試不同大小的參數(shù)值對模式切換產(chǎn)生的影響.在本節(jié)的實驗中,我們將CPU頻率設(shè)置為1.15 GHz,并重復實驗1 000次以減少誤差.

表5顯示了本階段的實驗結(jié)果.我們可以發(fā)現(xiàn),從非安全模式進入安全模式大概需要0.135s,而從安全模式退回非安全模式大概需要0.082s,1次完整的從普通模式到安全模式再回到普通模式的切換所需要的時間約為0.218s.我們注意到1 000次實驗結(jié)果之間的差異很小,這說明TrustZone中的模式切換時間基本不受外在因素的干擾.

Table 5 Time Consumption of Mode Switch表5 模式切換時間

2.2.2 MD5散列計算時間

在本節(jié)的實驗中,我們使用與2.1.2節(jié)中同樣的開源算法代碼以及隨機字符串來進行MD5散列計算.我們自定義了一個內(nèi)核模塊(kernel module),并分別測量在該模塊中直接進行散列計算和使用安全監(jiān)控調(diào)用來切換到安全模式下進行散列計算的時間消耗.同樣,該組實驗重復1 000次以減少誤差.

本階段的實驗結(jié)果如表6所示.從表6可見,在普通模式的內(nèi)核模塊中直接進行散列計算需要的時間約為8.229s,而切換到安全模式下進行散列計算所需的時間約為9.670s,兩者之間的差距為1.441s.我們注意到2.2.1節(jié)中測出的1次完整模式切換所需的時間僅為0.346s,因此,我們猜測CPU在安全模式下的計算性能有略微的降低.

Fig. 4 Performance comparison on Intel and ARM platforms圖4 Intel和ARM平臺的性能比較

ModeSwitch Time∕μsMeanSTD95% CINormal Mode8.2290.231[8.215,8.244]Secure Mode9.6700.171[9.660,9.681]

2.2.3 整體系統(tǒng)性能影響

與2.1.3節(jié)中的測試類似,我們編寫了一個安卓環(huán)境下的Linux可執(zhí)行程序來模擬邊緣節(jié)點中的敏感數(shù)據(jù)計算,該程序每隔1 s會進行1次從非安全模式到安全模式的切換.在安全模式下,邊緣節(jié)點會進行1次2.2.2節(jié)中的字符串MD5計算,隨后退回到非安全模式.為了了解在這一頻繁的敏感計算對整個節(jié)點性能的影響,我們通過谷歌應(yīng)用商店中的GeekBench 4應(yīng)用來測試此程序執(zhí)行時和不執(zhí)行時邊緣節(jié)點的整體性能分.與Linux版本的GeekBench類似,安卓環(huán)境下的GeekBench同時對單核的性能以及多核的整體性能進行測試估分.值得注意的是,為了減少隨機誤差,我們重復此實驗100次.

從表7中可以看出,在有無敏感計算的情況下單核平均分分別為983.440和984.700,而多核平均分分別為2 143.920和2 144.420.頻繁的模式切換和敏感計算使單核性能分和多核性能分分別下降了0.13%和0.02%,這說明模式切換引入的性能下降基本是可以忽略的.

Table 7 Performance Score with GeekBench表7 GeekBench測試性能分

2.3 性能比較

圖4總結(jié)了Intel與ARM在GeekBench測試中的得分.從圖4中不難看出,Intel架構(gòu)下的系統(tǒng)比ARM架構(gòu)下的系統(tǒng)性能更占優(yōu)勢,這也是由于ARM系統(tǒng)設(shè)計的初衷是為了在移動端能夠以最少的能耗做最多的計算,而Intel系統(tǒng)在設(shè)計中并不需要考慮能耗問題.在邊緣節(jié)點的設(shè)計中,我們可以根據(jù)不同的需求來選擇不同的架構(gòu).若可以保證該節(jié)點的持續(xù)供電,我們可以選用性能更強大的Intel架構(gòu),反之,我們則可以選用能耗較低的ARM架構(gòu).

3 挑戰(zhàn)與未來

雖然現(xiàn)有的可信執(zhí)行環(huán)境已經(jīng)可以應(yīng)用在邊緣節(jié)點來提高節(jié)點的安全性,但這些可信執(zhí)行環(huán)境自身仍然存在一些缺陷和漏洞,可能會影響整個邊緣計算模型的安全.

Schwarz等人[26]通過緩存?zhèn)刃诺?side channel)來攻擊Intel軟件防護擴展,并演示了如何在幾分鐘獲取圍圈中內(nèi)保存的以mbedTLS實現(xiàn)的RSA加密私鑰.Brasser等人[27]則演示了一種更有效的攻擊,它通過軟件防護擴展中的緩存信息泄漏來攻擊人類基因組索引項目;AsyncShock[28]說明了可以通過攻擊來控制線程調(diào)度,并利用這一控制來尋找圍圈中的同步漏洞.

在x86系統(tǒng)管理模式中,SMRAM由BIOS鎖定,系統(tǒng)啟動后其他任何處理器模式下都不能訪問SMRAM.然而,Rutkowska和Wojtczuk分別通過內(nèi)存回收(memory reclaiming)[29]以及緩存投毒(cache poisoning)技術(shù)[71]繞過這一鎖定來訪問SMRAM;Duflot等人[72]也整理了系統(tǒng)管理模式的一些設(shè)計漏洞;Wojtczuk等人[73]展示了通過操控UEFI啟動腳本來繞過系統(tǒng)管理模式的鎖定,從而允許從Ring 0權(quán)限下修改系統(tǒng)管理中斷處理器;Butterworth等人[74]也發(fā)現(xiàn)了系統(tǒng)管理模式中BIOS升級的一個緩沖區(qū)溢出漏洞.

Shen[75]利用ret2usr攻擊獲取系統(tǒng)中的root權(quán)限,隨后利用一個邊界檢查漏洞來實現(xiàn)往任意物理內(nèi)存地址中寫入1B的數(shù)據(jù),這也最終導致了可以在TrustZone的安全模式下執(zhí)行任意代碼.Rosenberg[76]在高通(Qualcomm)基于Trust-Zone實現(xiàn)的高通安全執(zhí)行環(huán)境(Qualcomm’s secure execu-tion environment, QSEE)中通過一個整數(shù)溢出漏洞來實現(xiàn)對安全模式下任意內(nèi)存的寫入,而重寫TrustZone中的安全系統(tǒng)調(diào)用處理器則導致可以在安全模式下執(zhí)行任意代碼;ARMageddon[77]使用Prime+Probe緩存攻擊來泄露安全模式下的信息,從而實現(xiàn)了在普通模式下監(jiān)控安全模式下的代碼執(zhí)行.

Tereshkin等人[54]通過在Intel主動管理技術(shù)中注入代碼來在Intel管理引擎中實現(xiàn)了一個Ring 3權(quán)限的rootkit;DAGGER[55]使用類似的技術(shù)破壞了Intel管理引擎中的隔離性.與Tereshkin等人使用的技術(shù)不同的是,DAGGER是通過在管理引擎固件的memset函數(shù)上使用鉤子(hook)完成攻擊,因為這一函數(shù)調(diào)用更加頻繁.最近,Intel自身也公開了管理引擎中主動管理技術(shù)中的一個漏洞CVE-2017-5689,即INTEL-SA-00075[56],攻擊者可以通過這一漏洞在Intel機器上不用輸入密碼而獲取管理員權(quán)限[7].

所有的這些攻擊,都說明了可信執(zhí)行環(huán)境自身的安全性仍然需要進一步完善.隨著這些可信執(zhí)行環(huán)境的功能逐漸完善,在可信環(huán)境的執(zhí)行代碼也會進一步增加,這就導致了這些可信執(zhí)行環(huán)境的可信計算基礎(chǔ)(trusted computing base, TCB)逐步增大.而可信計算基礎(chǔ)的增大則不可避免地引入了更多可能的漏洞.

4 總 結(jié)

在大數(shù)據(jù)的驅(qū)動下,傳統(tǒng)的云計算模式已經(jīng)無法有效地解決實時性、高額負載以及數(shù)據(jù)的安全隱私問題.伴隨著物聯(lián)網(wǎng)以及萬物互聯(lián)的推進,邊緣計算更加凸顯其重要性.

本文主要從數(shù)據(jù)安全的角度,闡述怎么樣在邊緣計算的背景下建立一個獨立的、隔離的、安全的可信執(zhí)行環(huán)境.我們首先總結(jié)了現(xiàn)有硬件支持的可信執(zhí)行環(huán)境;隨后,我們對2種應(yīng)用廣泛的可信執(zhí)行環(huán)境進行測試分析,在此測試分析中,我們采用了Intel霧計算的節(jié)點的模擬真機以及ARM公司自己的開發(fā)板,以增強我們分析的結(jié)果在邊緣計算模型下的實際性和代表性.

總體來說,我們的分析和實驗表明,將現(xiàn)有的可信執(zhí)行環(huán)境融入到邊緣計算模型當中可以有效地提高邊緣計算節(jié)點中關(guān)鍵計算的安全性和可信度.與此同時,可信執(zhí)行環(huán)境的引入對邊緣節(jié)點的性能影響也較小.因此,這一方案是切實可行的.

我們希望通過本文能夠引起產(chǎn)業(yè)界和學術(shù)界對可信執(zhí)行環(huán)境在邊緣計算中重要性的關(guān)注.我們相信,在不久的將來,會有越來越多的可信執(zhí)行環(huán)境應(yīng)用到邊緣計算中,使得邊緣計算更加地安全和可靠.

猜你喜歡
內(nèi)存處理器邊緣
“春夏秋冬”的內(nèi)存
當代陜西(2019年13期)2019-08-20 03:54:22
一張圖看懂邊緣計算
Imagination的ClearCallTM VoIP應(yīng)用現(xiàn)可支持Cavium的OCTEON? Ⅲ多核處理器
ADI推出新一代SigmaDSP處理器
汽車零部件(2014年1期)2014-09-21 11:41:11
呼嚕處理器
小青蛙報(2014年1期)2014-03-21 21:29:39
基于內(nèi)存的地理信息訪問技術(shù)
上網(wǎng)本為什么只有1GB?
激發(fā)大內(nèi)存威力
電子設(shè)計應(yīng)用(2004年7期)2004-09-02 08:44:00
在邊緣尋找自我
雕塑(1999年2期)1999-06-28 05:01:42
利津县| 庄浪县| 广宗县| 东乌珠穆沁旗| 恩平市| 平顺县| 惠州市| 安图县| 鲁甸县| 分宜县| 咸阳市| 永年县| 滨州市| 徐闻县| 康定县| 贺兰县| 西贡区| 高阳县| 东台市| 通化县| 吕梁市| 蕉岭县| 上林县| 武汉市| 霍林郭勒市| 霍山县| 五寨县| 泾阳县| 莱阳市| 台湾省| 松江区| 桂阳县| 福海县| 石门县| 莫力| 漠河县| 临泽县| 南宫市| 准格尔旗| 杭锦旗| 奎屯市|