• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于TrustZone的開放環(huán)境中敏感應(yīng)用防護(hù)方案

      2017-11-07 10:11:26張英駿馮登國
      計(jì)算機(jī)研究與發(fā)展 2017年10期
      關(guān)鍵詞:頁表內(nèi)核進(jìn)程

      張英駿 馮登國 秦 宇 楊 波

      1(中國科學(xué)院軟件研究所可信計(jì)算與信息保障實(shí)驗(yàn)室 北京 100190) 2(計(jì)算機(jī)科學(xué)國家重點(diǎn)實(shí)驗(yàn)室(中國科學(xué)院軟件研究所) 北京 100190) 3(中國科學(xué)院大學(xué) 北京 100190) (zhangyingjun@tca.iscas.a(chǎn)c.cn)

      2017-06-02;

      2017-07-25

      國家自然科學(xué)基金項(xiàng)目 (91118006,61402455,61602455) This work was supported by the National Natural Science Foundation of China (91118006, 61402455, 61602455).

      基于TrustZone的開放環(huán)境中敏感應(yīng)用防護(hù)方案

      張英駿1,3馮登國1,2秦 宇1楊 波1

      1(中國科學(xué)院軟件研究所可信計(jì)算與信息保障實(shí)驗(yàn)室 北京 100190)2(計(jì)算機(jī)科學(xué)國家重點(diǎn)實(shí)驗(yàn)室(中國科學(xué)院軟件研究所) 北京 100190)3(中國科學(xué)院大學(xué) 北京 100190) (zhangyingjun@tca.iscas.a(chǎn)c.cn)

      針對(duì)BYOD(bring your own device)、移動(dòng)云計(jì)算等兼具強(qiáng)安全性、高開放性需求的新型應(yīng)用場(chǎng)景,提出了一種移動(dòng)嵌入式平臺(tái)敏感應(yīng)用防護(hù)方案.為滿足強(qiáng)安全性需求,方案基于ARM TrustZone硬件隔離技術(shù)構(gòu)建可信執(zhí)行環(huán)境,即使在整個(gè)操作系統(tǒng)內(nèi)核被攻破的情況下仍能保證敏感應(yīng)用的安全.為滿足高開放性需求,方案實(shí)現(xiàn)了傳統(tǒng)TrustZone安全方案不具備的兩大優(yōu)勢(shì).首先,將TrustZone保護(hù)域擴(kuò)展至普通世界,安全世界不再實(shí)現(xiàn)具體的敏感應(yīng)用,而只實(shí)現(xiàn)一個(gè)輕量級(jí)監(jiān)控模塊用以監(jiān)控普通世界內(nèi)核的行為.因此整個(gè)系統(tǒng)可信計(jì)算基不隨敏感應(yīng)用數(shù)量的增加而增大,減少了其可攻擊面和潛在漏洞。其次,監(jiān)控模塊確保內(nèi)核為這些敏感應(yīng)用提供安全的系統(tǒng)服務(wù),從而為滿足開放性需求提供關(guān)鍵功能支持,例如提供標(biāo)準(zhǔn)系統(tǒng)調(diào)用接口、敏感應(yīng)用動(dòng)態(tài)部署和加載等. 最后,方案提出了內(nèi)核主動(dòng)證明機(jī)制,要求內(nèi)核主動(dòng)提供關(guān)鍵信息協(xié)助監(jiān)控模塊驗(yàn)證其自身行為,有效提高了系統(tǒng)運(yùn)行效率.在真實(shí)設(shè)備上實(shí)現(xiàn)了原型系統(tǒng),實(shí)驗(yàn)結(jié)果證明了該方案的安全性和較為理想的運(yùn)行效率.

      TrustZone;可信執(zhí)行環(huán)境;敏感應(yīng)用防護(hù);內(nèi)核監(jiān)控;內(nèi)核主動(dòng)證明

      隨著移動(dòng)嵌入式設(shè)備計(jì)算性能的提升, BYOD(bring your own device)、移動(dòng)云計(jì)算等廣泛使用智能化移動(dòng)設(shè)備的新型信息化應(yīng)用場(chǎng)景應(yīng)運(yùn)而生.一方面,這些場(chǎng)景承載了大量敏感計(jì)算任務(wù)和隱私數(shù)據(jù),直接關(guān)系到企業(yè)、云用戶的經(jīng)濟(jì)利益,具有很強(qiáng)的安全需求;另一方面,移動(dòng)商用操作系統(tǒng)在為這些場(chǎng)景提供必要功能支撐的同時(shí),也由于自身可信計(jì)算基(trusted computing base, TCB)過大引入了大量安全威脅.事實(shí)上,利用各種系統(tǒng)漏洞獲取控制權(quán)進(jìn)而威脅上層應(yīng)用的現(xiàn)象在移動(dòng)平臺(tái)已經(jīng)比較普遍[1-2].而傳統(tǒng)安全工具無法為這些敏感應(yīng)用提供足夠的安全保障,原因在于它們同樣部署在內(nèi)核層并以系統(tǒng)內(nèi)核可信為基礎(chǔ),因此與潛在內(nèi)核攻擊者具有相同特權(quán)等級(jí),一旦內(nèi)核被攻破,這些防護(hù)手段都會(huì)失效.

      面對(duì)層出不窮的系統(tǒng)漏洞,可信執(zhí)行環(huán)境(trusted execution environment, TEE)技術(shù)逐漸成為研究熱點(diǎn).TEE技術(shù)能夠提供硬件隔離保障,即使整個(gè)內(nèi)核被攻擊者控制,TEE內(nèi)部的敏感應(yīng)用仍可安全運(yùn)行.TrustZone[3]作為ARM架構(gòu)特有的TEE實(shí)現(xiàn)技術(shù),目前被主流移動(dòng)嵌入式設(shè)備廣泛支持.TrustZone將ARM片上系統(tǒng)資源劃分為2個(gè)獨(dú)立的執(zhí)行域:普通世界和安全世界.其中安全世界擁有更高的執(zhí)行權(quán)限,普通世界程序無法對(duì)其資源進(jìn)行訪問.因此,普通世界運(yùn)行一般應(yīng)用和商用操作系統(tǒng)(Android, Linux等),而將敏感應(yīng)用部署在安全世界,已經(jīng)成為移動(dòng)平臺(tái)主流的TEE實(shí)現(xiàn)方式.基于這種方式實(shí)現(xiàn)的支付認(rèn)證[4-5]、密碼計(jì)算[6]等安全方案被學(xué)術(shù)界提出并被蘋果、三星、華為等主流移動(dòng)設(shè)備廠商采用.

      盡管TrustZone在一定程度上解決了操作系統(tǒng)層的固有安全問題,上述方案仍存在2個(gè)主要問題:1)安全世界代碼規(guī)模將隨敏感應(yīng)用的數(shù)量而增大,從而引入更多的可攻擊面和潛在漏洞.目前利用安全世界漏洞對(duì)移動(dòng)設(shè)備的攻擊已經(jīng)成為實(shí)際存在的安全威脅[7-10].因此,設(shè)備廠商通常只允許自身應(yīng)用使用TrustZone資源,而不對(duì)第三方開放,這在很大程度上限制了TrustZone技術(shù)的推廣.2)隔離使得正常操作系統(tǒng)服務(wù)無法被安全世界調(diào)用,敏感應(yīng)用需要重新編寫,既增加了代碼開發(fā)和維護(hù)成本,也導(dǎo)致其能夠?qū)崿F(xiàn)的功能受限.例如由于缺少動(dòng)態(tài)內(nèi)存分配、文件系統(tǒng)服務(wù)的支持,敏感應(yīng)用通常只能集成在系統(tǒng)鏡像文件中并隨系統(tǒng)啟動(dòng)一次性加載,無法動(dòng)態(tài)部署.而在安全世界內(nèi)集成這些服務(wù)會(huì)急劇增大系統(tǒng)TCB,引入已經(jīng)在操作系統(tǒng)中存在的漏洞風(fēng)險(xiǎn),這與TrustZone的設(shè)計(jì)初衷相違背.在BYOD、移動(dòng)云計(jì)算場(chǎng)景下,第三方敏感應(yīng)用和數(shù)據(jù)需要?jiǎng)討B(tài)部署到其所有者(企業(yè)和云用戶)不可控的設(shè)備上(員工手機(jī)和云主機(jī)),既有很強(qiáng)的安全需求,又具備一定的開放性.而現(xiàn)有TrustZone方案無法在安全性、可用性和開放性方面達(dá)到平衡,并不適用于這些場(chǎng)景.

      本文面向移動(dòng)嵌入式平臺(tái)提出了1種開放環(huán)境中的敏感應(yīng)用防護(hù)方案,改變了傳統(tǒng)TrustZone系統(tǒng)架構(gòu),將敏感應(yīng)用移至普通世界.安全世界不再包含具體應(yīng)用和系統(tǒng)服務(wù),只包含少量啟動(dòng)代碼及1個(gè)輕量級(jí)監(jiān)控模塊.因此系統(tǒng)TCB較小且不會(huì)隨敏感應(yīng)用的數(shù)量而增大.監(jiān)控模塊對(duì)普通世界系統(tǒng)底層行為進(jìn)行攔截和監(jiān)控,確保為敏感應(yīng)用提供與安全世界等價(jià)的隔離保護(hù),同時(shí)確保內(nèi)核為它們提供安全的基礎(chǔ)系統(tǒng)服務(wù).因此,本方案既能為BYOD、移動(dòng)云計(jì)算等場(chǎng)景提供強(qiáng)安全保障和必要系統(tǒng)功能支持,又不會(huì)由于這些應(yīng)用和服務(wù)而增大系統(tǒng)TCB,從而在安全性、易用性和開放性方面達(dá)到理想平衡,為將TrustZone資源向第三方應(yīng)用安全開放提供了基礎(chǔ).

      1 相關(guān)工作

      自TrustZone推出后,相關(guān)的標(biāo)準(zhǔn)化工作便一直致力于TrustZone技術(shù)的推廣.全球平臺(tái)組織(global platform, GP)推出GP TEE接口規(guī)范[11],并致力于為TrustZone等TEE實(shí)現(xiàn)技術(shù)提供統(tǒng)一的編程接口[12].微軟可信語言運(yùn)行時(shí)系統(tǒng)[13]和諾基亞開放票據(jù)系統(tǒng)[14]通過在安全世界內(nèi)部署通用編程語言解釋器,實(shí)現(xiàn)特定語言編寫的安全應(yīng)用的高效開發(fā)和移植.Open TEE系統(tǒng)[15]提供開源TrustZone開發(fā)環(huán)境并集成GP TEE規(guī)范,降低了TEE應(yīng)用的開發(fā)和測(cè)試成本.這些工作為TrustZone應(yīng)用的開發(fā)部署提供了一定方便,卻沒有解決傳統(tǒng)TrustZone架構(gòu)的本質(zhì)安全問題,即系統(tǒng)安全性會(huì)隨安全應(yīng)用數(shù)量的增加而下降,因此并沒有得到有效推廣.

      Fig. 1 TrustZone basic architecture圖1 TrustZone基本架構(gòu)

      另一方面,針對(duì)TrustZone安全世界的實(shí)際攻擊事件促進(jìn)了將TrustZone保護(hù)域擴(kuò)展至普通世界的研究.三星完整性度量架構(gòu)[16]提供普通世界內(nèi)核運(yùn)行時(shí)完整性保護(hù),然而方案只關(guān)注內(nèi)核防護(hù),對(duì)承載用戶隱私和敏感信息的上層應(yīng)用沒有提供保護(hù),同時(shí),方案由于頻繁陷入安全世界進(jìn)行內(nèi)核監(jiān)控導(dǎo)致較大的性能開銷;文獻(xiàn)[17]在三星完整性度量架構(gòu)的基礎(chǔ)上,在普通世界進(jìn)程地址空間創(chuàng)建隔離保護(hù)域,方案確保不可信內(nèi)核無法訪問該域內(nèi)的敏感數(shù)據(jù),如與安全世界的通信密鑰,卻沒有為敏感應(yīng)用調(diào)用系統(tǒng)服務(wù)提供安全保障;高級(jí)內(nèi)核攻擊如Iago攻擊[18]能夠通過篡改系統(tǒng)調(diào)用返回值引發(fā)進(jìn)程異常行為,在不直接訪問該保護(hù)域的情況下導(dǎo)致敏感應(yīng)用自身泄露域內(nèi)隱私數(shù)據(jù);文獻(xiàn)[19]在普通世界進(jìn)程空間創(chuàng)建與內(nèi)核隔離的安全計(jì)算環(huán)境,方案在受保護(hù)進(jìn)程掛起時(shí)將進(jìn)程內(nèi)存拷貝到安全世界,性能開銷較大,也由于技術(shù)限制無法支持多核系統(tǒng),同時(shí)仍需在其安全域內(nèi)重新實(shí)現(xiàn)必需的系統(tǒng)服務(wù),系統(tǒng)TCB沒有有效減小.事實(shí)上,不支持使用現(xiàn)有操作系統(tǒng)功能極大限制了安全世界敏感應(yīng)用的功能擴(kuò)展,尤其是文件讀寫等復(fù)雜的系統(tǒng)服務(wù).現(xiàn)有TrustZone方案依賴加密以提供基本的文件存儲(chǔ)安全[4,13-14],然而,如何為安全世界提供可信的文件系統(tǒng)組件以實(shí)現(xiàn)安全的動(dòng)態(tài)文件讀寫通常被忽略.此外,這些方案要求受保護(hù)應(yīng)用與安全世界顯式交互,因此需要改變現(xiàn)有程序代碼,增加了開發(fā)和維護(hù)成本.

      文獻(xiàn)[20-22]利用硬件虛擬化技術(shù),在操作系統(tǒng)不可信的情況下為上層應(yīng)用進(jìn)程提供隔離保障,同時(shí)對(duì)內(nèi)核進(jìn)行監(jiān)控,確保其為受保護(hù)進(jìn)程提供安全的系統(tǒng)服務(wù).這些方案在功能上滿足BYOD、移動(dòng)云計(jì)算等新型應(yīng)用場(chǎng)景的需求,但是都依賴頻繁的內(nèi)存加密實(shí)現(xiàn)進(jìn)程隔離,整個(gè)系統(tǒng)運(yùn)行效率會(huì)受到較大影響.另外,硬件虛擬化本身不是為安全設(shè)計(jì),而是為了實(shí)現(xiàn)多操作系統(tǒng)共享同一硬件平臺(tái),其產(chǎn)生的巨大計(jì)算和性能開銷不適用于資源受限的移動(dòng)終端設(shè)備.而考慮到低功耗ARM處理器在服務(wù)器端市場(chǎng)份額的提升以及虛擬化擴(kuò)展在ARM處理器中并沒有普及,這些方案也不適用于移動(dòng)云服務(wù)器.文獻(xiàn)[23]利用Intel最新的TEE實(shí)現(xiàn)技術(shù)SGX(software guard extension)為受保護(hù)應(yīng)用提供隔離執(zhí)行環(huán)境,并在其地址空間內(nèi)鏈接1個(gè)類操作系統(tǒng)庫以提供標(biāo)準(zhǔn)的系統(tǒng)功能支持.與TrustZone相比,SGX能提供更強(qiáng)的安全保障,原因是支持SGX擴(kuò)展的CPU實(shí)現(xiàn)了硬件級(jí)別的內(nèi)存加密保護(hù),高效的硬件密碼學(xué)支持可能會(huì)抵消本方案的性能優(yōu)勢(shì).然而,在ARM架構(gòu)下沒有類似SGX的實(shí)現(xiàn)技術(shù),因此這些方案也不適用于移動(dòng)嵌入式平臺(tái).另外,運(yùn)行在受保護(hù)進(jìn)程內(nèi)部的復(fù)雜系統(tǒng)庫也引入了已經(jīng)在操作系統(tǒng)內(nèi)核中存在的類似漏洞威脅和可攻擊面.

      2 背景知識(shí)

      2.1TrustZone安全技術(shù)

      TrustZone安全技術(shù)自ARMv6版本開始引入ARM架構(gòu)規(guī)范.通過處理器擴(kuò)展將整個(gè)ARM片上系統(tǒng)資源劃分為2個(gè)隔離執(zhí)行區(qū)域:安全世界(secure world, SW)和普通世界(normal world, NW),如圖1所示.通過安全配置寄存器的NS比特位標(biāo)識(shí)當(dāng)前CPU的安全狀態(tài),確保安全的客體如內(nèi)存、外設(shè),不能被非安全的主體如CPU、外設(shè)訪問.一種新的CPU執(zhí)行模式、Monitor模式作為安全世界的一部分,負(fù)責(zé)2個(gè)世界的切換工作.普通世界特權(quán)模式通過調(diào)用新的處理器指令,smc指令進(jìn)入Monitor模式.

      2.2ARM架構(gòu)相關(guān)

      ARM是目前最常用的移動(dòng)嵌入式設(shè)備處理器架構(gòu).其 CP15協(xié)處理器實(shí)現(xiàn)了主要的內(nèi)存管理組件,包括虛擬內(nèi)存管理單元(memory map unit,MMU)、Truszone擴(kuò)展及安全相關(guān)功能.其頁表基址寄存器(translate table base register, TTBR)指向系統(tǒng)頁表基地址.ARM提供7種不同的處理器運(yùn)行模式,其中用戶模式屬于非特權(quán)模式,用來運(yùn)行應(yīng)用進(jìn)程.其他特權(quán)模式分別用來處理中斷、系統(tǒng)調(diào)用或異常.特權(quán)模式的入口指令由異常向量基址寄存器(vector base address register, VBAR)決定.引入TrustZone支持后,2個(gè)世界擁有不同的TTBR和VBAR,虛擬內(nèi)存映射和異常處理相互獨(dú)立.安全世界可以將普通世界物理內(nèi)存映射到自身頁表對(duì)其進(jìn)行讀寫操作.

      2.3Linux相關(guān)

      本方案使用Linux作為普通世界的通用操作系統(tǒng),因此方案核心目標(biāo)是基于TrustZone,針對(duì)不可信內(nèi)核為上層Linux進(jìn)程提供與安全世界等價(jià)的隔離和安全保障.本節(jié)給出一些Linux相關(guān)的背景知識(shí).

      ARM版Linux使用4 KB的頁結(jié)構(gòu)(page)作為基本物理內(nèi)存單元.每個(gè)進(jìn)程用戶空間虛擬地址范圍為0~3 GB,其布局由1個(gè)虛擬內(nèi)存區(qū)結(jié)構(gòu)體vm_area_struct的鏈表描述.匿名區(qū)域(如進(jìn)程堆、棧)不關(guān)聯(lián)任何后端文件,由匿名內(nèi)存頁組成.非匿名區(qū)域(文件映射區(qū))關(guān)聯(lián)1個(gè)特定文件,由該文件緩存頁組成.內(nèi)核根據(jù)進(jìn)程mmap系統(tǒng)調(diào)用創(chuàng)建并維護(hù)其vm_area_struct結(jié)構(gòu).進(jìn)程物理內(nèi)存以按需調(diào)頁的形式由內(nèi)核動(dòng)態(tài)分配.進(jìn)程訪問尚未分配物理頁的虛擬地址時(shí)將產(chǎn)生缺頁中斷, Linux檢索包含該錯(cuò)誤地址的vm_area_struct結(jié)構(gòu),并由內(nèi)存管理子系統(tǒng)分配1個(gè)空閑物理頁.最后,錯(cuò)誤處理代碼更新進(jìn)程頁表,將該頁映射到訪問出錯(cuò)的虛擬地址并返回.

      3 敵手模型和安全假設(shè)

      方案完全移除了對(duì)普通世界操作系統(tǒng)內(nèi)核的信任,并假設(shè)敵手可以利用各種系統(tǒng)漏洞實(shí)施內(nèi)核攻擊以竊取隱私數(shù)據(jù)或干擾代碼執(zhí)行,包括任意讀寫敏感應(yīng)用進(jìn)程內(nèi)存、攔截或篡改外設(shè)(包括存儲(chǔ)設(shè)備和用戶交互設(shè)備)的輸入輸出數(shù)據(jù)、篡改敏感應(yīng)用系統(tǒng)調(diào)用的返回值等.方案不解決程序自身漏洞,若敏感應(yīng)用代碼自己泄露隱私信息,方案無法提供保護(hù).方案不保證系統(tǒng)服務(wù)可達(dá)性,內(nèi)核可能拒絕為敏感應(yīng)用提供服務(wù)或拒絕調(diào)度敏感應(yīng)用執(zhí)行,然而這些行為不會(huì)造成隱私泄露等實(shí)質(zhì)性危害,而且會(huì)造成嚴(yán)重的用戶體驗(yàn)問題而被用戶感知.本文重點(diǎn)關(guān)注系統(tǒng)啟動(dòng)后的運(yùn)行時(shí)保護(hù),因此假設(shè)設(shè)備使用安全引導(dǎo)機(jī)制在系統(tǒng)啟動(dòng)階段確保安全世界,操作系統(tǒng)內(nèi)核鏡像文件的完整性,保證系統(tǒng)初始狀態(tài)的可信.

      4 方案整體概述

      方案的基本設(shè)計(jì)思路是將核心監(jiān)控模塊部署在TrustZone安全世界,同時(shí)在普通世界內(nèi)核代碼區(qū)插入smc指令,攔截系統(tǒng)底層事件,在其發(fā)生前轉(zhuǎn)入安全世界進(jìn)行安全檢查,從而提供兩大核心保障:1)為普通世界敏感應(yīng)用進(jìn)程提供與安全世界等價(jià)的強(qiáng)隔離保護(hù);2)確保內(nèi)核為敏感應(yīng)用提供安全的系統(tǒng)服務(wù).

      4.1設(shè)計(jì)思路

      為實(shí)現(xiàn)方案的核心安全目標(biāo),需首先解決一系列技術(shù)挑戰(zhàn):

      1) 普通世界對(duì)自己的系統(tǒng)資源具有完全控制權(quán),包括物理內(nèi)存、頁表和系統(tǒng)控制寄存器.內(nèi)核可以通過修改自身頁表來設(shè)置自己的虛擬內(nèi)存映射屬性從而讀寫普通世界任一物理內(nèi)存區(qū)域,包括分配給敏感應(yīng)用的進(jìn)程內(nèi)存,使得上述隔離難以實(shí)現(xiàn).

      2) 允許敏感應(yīng)用與內(nèi)核進(jìn)行交互以調(diào)用系統(tǒng)服務(wù)會(huì)引發(fā)進(jìn)一步的安全問題.高級(jí)內(nèi)核攻擊如Iago攻擊[18]能夠通過篡改系統(tǒng)調(diào)用返回值破壞進(jìn)程地址空間布局完整性,如通過修改mmap返回的虛擬地址,使其指向其他隱私數(shù)據(jù)區(qū)或棧內(nèi)存儲(chǔ)的函數(shù)調(diào)用返回值.之后,應(yīng)用進(jìn)程對(duì)此次mmap申請(qǐng)的內(nèi)存映射區(qū)的讀寫訪問會(huì)導(dǎo)致隱私泄露或控制流劫持.此類攻擊可以在不直接破壞上述基本隔離保護(hù)的情況下危害進(jìn)程安全.

      3) 準(zhǔn)確并高效地對(duì)內(nèi)核行為進(jìn)行攔截和監(jiān)控難以實(shí)現(xiàn).商用操作系統(tǒng)功能繁多、語義復(fù)雜,使得其正常行為和惡意行為難以區(qū)分,例如某些正常系統(tǒng)功能也需要對(duì)進(jìn)程內(nèi)存進(jìn)行訪問,包括讀取系統(tǒng)調(diào)用參數(shù)、寫時(shí)拷貝、文件讀寫等.因此監(jiān)控模塊必須正確識(shí)別底層系統(tǒng)行為背后的高層語義.之前的系統(tǒng)監(jiān)控工作[20-22]重點(diǎn)關(guān)注如何在不修改內(nèi)核源代碼的前提下實(shí)現(xiàn)攔截,監(jiān)控效率較低.監(jiān)控模塊不僅需要自己推導(dǎo)內(nèi)核行為的高層語義,還需要頻繁的進(jìn)程內(nèi)存加密操作確保隔離,從而產(chǎn)生巨大的計(jì)算負(fù)擔(dān)和性能開銷,不適用于資源受限的移動(dòng)設(shè)備.

      Fig. 2 The whole architecture圖2 整體架構(gòu)圖

      本文方案解決了上述挑戰(zhàn).1)方案實(shí)現(xiàn)了不可繞過的虛擬內(nèi)存控制,移除了普通世界內(nèi)核對(duì)自身MMU資源的修改能力,包括頁表和MMU相關(guān)的控制寄存器.因此,內(nèi)核必須首先轉(zhuǎn)入安全世界進(jìn)行安全驗(yàn)證,再由安全世界完成這些修改操作,確保進(jìn)程內(nèi)存頁不會(huì)被映射為內(nèi)核可訪問,從而為敏感應(yīng)用提供基本隔離保護(hù).2)方案系統(tǒng)性地定義了一系列與Iago原理類似的高級(jí)內(nèi)核攻擊,這些攻擊能夠在不破壞基本隔離的情況下危害進(jìn)程安全且無法被現(xiàn)有工作防御.3)方案定義并實(shí)現(xiàn)了2類細(xì)粒度的進(jìn)程安全屬性、地址空間布局完整性保護(hù)和外設(shè)輸入輸出保護(hù)來阻止這些攻擊,確保內(nèi)核為敏感應(yīng)用提供可信的系統(tǒng)服務(wù).4)方案提出了內(nèi)核主動(dòng)證明機(jī)制,通過修改內(nèi)核源代碼的方式,強(qiáng)制內(nèi)核主動(dòng)提供關(guān)鍵信息協(xié)助監(jiān)控模塊驗(yàn)證其自身行為,簡化了驗(yàn)證過程,同時(shí)避免了之前工作中依賴的進(jìn)程內(nèi)存加密操作,從而極大提高了系統(tǒng)運(yùn)行效率.

      4.2系統(tǒng)安全屬性

      方案提供3層安全屬性,為敏感應(yīng)用進(jìn)程的整個(gè)生命周期提供保護(hù).

      1) 與安全世界等價(jià)的隔離保護(hù),即普通世界內(nèi)核無法訪問敏感應(yīng)用進(jìn)程的內(nèi)存和寄存器狀態(tài).

      2) 細(xì)粒度的安全保障.首先是地址空間布局完整性保護(hù),確保進(jìn)程物理內(nèi)存頁根據(jù)進(jìn)程的要求(mmap系統(tǒng)調(diào)用)映射到正確的虛擬地址.然后是外設(shè)輸入輸出保護(hù),確保受保護(hù)進(jìn)程與外設(shè)的輸入輸出數(shù)據(jù)不被內(nèi)核訪問或篡改.對(duì)于存儲(chǔ)設(shè)備,方案也確保進(jìn)程的文件操作(對(duì)文件映射區(qū)內(nèi)存的讀寫)最終會(huì)到達(dá)正確的后端存儲(chǔ)文件.這些屬性能夠在基本隔離的基礎(chǔ)上提供進(jìn)一步保護(hù),包括抵抗Iago等高級(jí)內(nèi)核攻擊,確保程序代碼、數(shù)據(jù)的正確加載,以及可信用戶交互.

      3) 基于以上安全保障,方案確保受保護(hù)進(jìn)程能夠通過標(biāo)準(zhǔn)系統(tǒng)調(diào)用接口安全地使用關(guān)鍵的系統(tǒng)基礎(chǔ)服務(wù),包括動(dòng)態(tài)內(nèi)存分配(mmap,malloc)、文件操作(read,write)、進(jìn)程控制(fork,exec)等.

      5 基于TrustZone的敏感應(yīng)用防護(hù)方案設(shè)計(jì)

      5.1整體架構(gòu)

      本方案整體架構(gòu)圖如圖2所示.其中灰色部分為可信實(shí)體,白色部分為不可信實(shí)體.其中部署在普通世界的敏感應(yīng)用與其他應(yīng)用及操作系統(tǒng)內(nèi)核隔離.每個(gè)敏感應(yīng)用地址空間都鏈接1個(gè)安全C運(yùn)行時(shí)庫,該庫對(duì)標(biāo)準(zhǔn)C庫進(jìn)行封裝,同時(shí)負(fù)責(zé)系統(tǒng)調(diào)用參數(shù)適配,檢查系統(tǒng)調(diào)用返回值以防止Iago攻擊,從而為敏感應(yīng)用安全使用標(biāo)準(zhǔn)C庫和標(biāo)準(zhǔn)系統(tǒng)調(diào)用接口提供支持.方案仍使用內(nèi)核現(xiàn)有物理內(nèi)存管理子系統(tǒng)為敏感應(yīng)用分配內(nèi)存,然而,一旦某一物理頁被分配給了受保護(hù)的敏感應(yīng)用,安全世界為其提供針對(duì)普通世界內(nèi)核的隔離保護(hù).因此,安全世界同時(shí)為普通世界的頁表內(nèi)存提供隔離保護(hù)并攔截所有的頁表更新事件,確保受保護(hù)進(jìn)程內(nèi)存不會(huì)被映射為內(nèi)核可訪問.

      在普通世界內(nèi)核代碼區(qū),某些關(guān)鍵的底層系統(tǒng)操作(頁表更新等)被替換為包含smc指令的監(jiān)控代碼,確保其發(fā)生前先轉(zhuǎn)入安全世界.在安全世界內(nèi)部,內(nèi)核監(jiān)控模塊根據(jù)監(jiān)控代碼的詳細(xì)參數(shù)、預(yù)置的安全策略,以及用來記錄普通世界系統(tǒng)狀態(tài)的安全元數(shù)據(jù)對(duì)操作請(qǐng)求進(jìn)行安全驗(yàn)證,并在驗(yàn)證通過后執(zhí)行必要操作,如更新普通世界頁表或更新安全元數(shù)據(jù)等.

      5.2安全元數(shù)據(jù)

      為了能準(zhǔn)確并高效地認(rèn)證內(nèi)核的行為,安全世界需要記錄普通世界的系統(tǒng)狀態(tài).例如,為實(shí)現(xiàn)基本隔離,安全世界需首先記錄哪些物理內(nèi)存頁(由頁物理基地址唯一標(biāo)識(shí))被用作頁表,確保頁表內(nèi)存自身不被內(nèi)核映射為可寫,從而實(shí)現(xiàn)頁表更新的攔截.此后,安全世界需要記錄哪些物理內(nèi)存頁被分配給受保護(hù)進(jìn)程,以便在頁表更新請(qǐng)求中確保其不被映射為內(nèi)核可訪問.在內(nèi)核不可信的前提下,安全世界無法依賴現(xiàn)有內(nèi)核數(shù)據(jù)結(jié)構(gòu),必須維護(hù)自己的安全元數(shù)據(jù).

      具體來講,安全世界維護(hù)s-page結(jié)構(gòu)標(biāo)識(shí)1個(gè)4 KB安全物理內(nèi)存頁,包括受保護(hù)進(jìn)程內(nèi)存以及頁表內(nèi)存.s-page的成員變量[oid,offset]指定頁所屬對(duì)象和偏移.對(duì)文件緩存頁表示所屬文件和文件內(nèi)偏移,對(duì)進(jìn)程匿名頁和頁表,這些成員表示所屬進(jìn)程和進(jìn)程空間虛擬地址偏移.文件頁有2種狀態(tài),保留狀態(tài)和同步狀態(tài),指明該頁內(nèi)容是否已經(jīng)與后端存儲(chǔ)文件同步.安全世界使用s-vma結(jié)構(gòu)標(biāo)識(shí)1個(gè)進(jìn)程虛擬內(nèi)存映射區(qū).其成員變量[address_range,oid,offset]指定該映射區(qū)域在進(jìn)程地址空間的虛擬地址范圍,所映射的對(duì)象和對(duì)象偏移量.對(duì)文件映射區(qū),表示所映射的文件和文件內(nèi)偏移.對(duì)匿名映射區(qū),表示所屬進(jìn)程和虛擬地址偏移.s-vma為確保地址空間布局完整性提供了必要信息.最后,安全世界使用s-task結(jié)構(gòu)標(biāo)識(shí)1個(gè)受保護(hù)的敏感應(yīng)用進(jìn)程.

      安全世界的s-page,s-vma,s-task結(jié)構(gòu)可以看做是原有Linux內(nèi)核數(shù)據(jù)結(jié)構(gòu)(page,vm_area_struct和task_struct)的可信版本.然而,安全世界沒有全盤復(fù)用這些結(jié)構(gòu),而只保留了安全相關(guān)的成員變量,因此元數(shù)據(jù)管理代碼規(guī)模較小,不會(huì)顯著增加系統(tǒng)TCB,內(nèi)存管理、進(jìn)程管理核心代碼仍位于普通世界內(nèi)核.

      5.3監(jiān)控代碼接口

      本方案為某些普通世界系統(tǒng)資源提供針對(duì)內(nèi)核的隔離保護(hù),包括頁表、MMU控制寄存器、受保護(hù)進(jìn)程內(nèi)存等,所有管理這些資源的內(nèi)核函數(shù)均被替換為包含smc指令的監(jiān)控函數(shù).接口定義如表1所示,替換位置和具體含義將在后續(xù)章節(jié)詳細(xì)描述.本方案以修改內(nèi)核源代碼的方式插入監(jiān)控指令,相對(duì)于動(dòng)態(tài)二進(jìn)制代碼重寫,優(yōu)勢(shì)在于能夠?qū)?nèi)核行為進(jìn)行細(xì)粒度的控制.例如強(qiáng)制內(nèi)核為安全世界提供額外信息以實(shí)現(xiàn)內(nèi)核主動(dòng)證明機(jī)制.盡管二進(jìn)制重寫更適合閉源系統(tǒng),本方案是為移動(dòng)設(shè)備廠商設(shè)計(jì)的系統(tǒng)級(jí)安全方案,而這些廠商通常都維護(hù)自己的系統(tǒng)內(nèi)核源代碼.

      Table 1 Interface for the Monitor Code表1 監(jiān)控函數(shù)接口定義

      5.4MMU隔離保護(hù)

      對(duì)敏感應(yīng)用的隔離依賴基本的硬件虛擬內(nèi)存管理(MMU)機(jī)制.然而,普通世界擁有對(duì)自身MMU資源的全部控制權(quán),包括MMU控制寄存器和頁表.內(nèi)核可以通過修改自身頁表訪問任意普通世界內(nèi)存,包括分配給敏感應(yīng)用的安全內(nèi)存.因此,方案必須移除內(nèi)核對(duì)自身MMU資源的控制能力.MMU隔離保護(hù)是方案其他保護(hù)機(jī)制的基礎(chǔ),因?yàn)樗_保內(nèi)核無法改變普通世界虛擬內(nèi)存布局及訪問權(quán)限,所有MMU相關(guān)操作被強(qiáng)制轉(zhuǎn)入安全世界進(jìn)行驗(yàn)證,確保這些操作不違背敏感應(yīng)用進(jìn)程內(nèi)存隔離等既定安全策略.

      方案沿用本文之前工作[24]的思路實(shí)現(xiàn)普通世界MMU隔離,本節(jié)給出高層設(shè)計(jì)方案和本文的改進(jìn)工作,詳細(xì)實(shí)現(xiàn)細(xì)節(jié)可參考文獻(xiàn)[24].

      方案對(duì)MMU控制指令(如更新頁表基址寄存器TTBR)和頁表更新事件實(shí)現(xiàn)了不可繞過的攔截,確保內(nèi)核既無法使用未經(jīng)驗(yàn)證的頁表,也無法修改現(xiàn)有頁表,從而實(shí)現(xiàn)MMU隔離.通過將內(nèi)核TTBR寫指令替換為監(jiān)控代碼(表1中的TTBR_switch函數(shù))實(shí)現(xiàn)對(duì)TTBR切換的攔截.對(duì)頁表更新事件的攔截借鑒虛了擬化技術(shù)中影子頁表的管理機(jī)制,強(qiáng)制所有包含頁表的物理內(nèi)存映射為只讀.這要求安全世界紀(jì)錄所有被用作頁表的物理內(nèi)存頁.ARM-Linux采用二級(jí)頁表格式,對(duì)一級(jí)頁表的記錄發(fā)生在TTBR切換事件中,安全世界記錄保存在TTBR寄存器中的一級(jí)頁表基地址,并確保其自身在當(dāng)前頁表中不存在可寫映射,從而實(shí)現(xiàn)對(duì)一級(jí)頁表更新的攔截.二級(jí)頁表的記錄發(fā)生在一級(jí)頁表更新事件中,安全世界記錄保存在待更新一級(jí)頁表項(xiàng)中的二級(jí)頁表基地址.最后,安全世界采用2類安全策略所有的攔截不可繞過.1)所有內(nèi)核代碼區(qū)內(nèi)存只能被映射為只讀,確保已有監(jiān)控代碼不被刪除或插入新的TTBR寫指令;2)所有記錄的頁表內(nèi)存只能被映射為只讀.安全世界從系統(tǒng)啟動(dòng)第1次寫入TTBR激活MMU后,將在之后每次TTBR切換和頁表更新攔截中對(duì)這些安全策略進(jìn)行檢查.

      本文之前的工作[23],采用對(duì)內(nèi)核透明的方式實(shí)現(xiàn)對(duì)上述MMU相關(guān)事件的攔截.如將普通世界異常向量表替換為smc指令,使得寫入只讀頁表產(chǎn)生的頁錯(cuò)誤通過異常向量表轉(zhuǎn)入安全世界.然而,這種方式下,頁錯(cuò)誤將產(chǎn)生額外的CPU模式切換.同時(shí)由于缺乏足夠的語義信息,安全世界需要自行區(qū)分頁表更新操作與其他正常的頁錯(cuò)誤中斷,如按需調(diào)頁,寫時(shí)拷貝,從而產(chǎn)生額外的性能開銷.本文方案通過修改內(nèi)核源代碼,要求內(nèi)核在需要更新頁表時(shí)通過監(jiān)控函數(shù)(表1中的set_pt)顯式請(qǐng)求安全世界,避免了額外的CPU模式切換以及安全世界語義推導(dǎo)工作.盡管不可信內(nèi)核可能偽造頁表更新請(qǐng)求,由于安全世界通過s-page結(jié)構(gòu)記錄所有頁表內(nèi)存的狀態(tài),任何對(duì)頁表的可寫映射請(qǐng)求都會(huì)被拒絕.所有對(duì)頁表的直接寫操作都會(huì)產(chǎn)生頁錯(cuò)誤從而被安全世界檢測(cè)并拒絕.

      5.5敏感應(yīng)用基本隔離保護(hù)

      MMU隔離使得內(nèi)核無法修改普通世界虛擬內(nèi)存映射屬性,確保方案所有基于虛擬內(nèi)存映射機(jī)制的安全策略不被破壞.首先,方案提供內(nèi)核代碼完整性保護(hù),確保所有插入內(nèi)核的監(jiān)控代碼不會(huì)被惡意刪除.由于內(nèi)核代碼位于固定的內(nèi)存區(qū)域,安全世界只需要在頁表更新中驗(yàn)證該區(qū)不存在可寫映射.

      5.5.1 可信上下文切換

      敏感應(yīng)用進(jìn)程在運(yùn)行過程中,可能由于系統(tǒng)調(diào)用或硬件中斷被掛起而轉(zhuǎn)入內(nèi)核,此時(shí)內(nèi)核可直接訪問進(jìn)程的寄存器狀態(tài)或通過用戶空間虛擬地址(0-3 GB)訪問進(jìn)程物理內(nèi)存,從而竊取敏感信息.因此,在進(jìn)程-內(nèi)核模式切換的入口點(diǎn),即異常向量表處插入監(jiān)控代碼(表1中的mode_switch),確保受保護(hù)進(jìn)程掛起時(shí)首先轉(zhuǎn)入安全世界進(jìn)行可信上下文切換.此時(shí),安全世界將寄存器狀態(tài)保存至當(dāng)前進(jìn)程s-task結(jié)構(gòu)中,并在寄存器中寫入噪聲值.之后,安全世界激活1個(gè)特殊的影子頁表,該頁表用戶空間范圍的頁表項(xiàng)全為空,從而確保內(nèi)核無法通過用戶空間虛擬地址訪問進(jìn)程內(nèi)存,由于TTBR_switch監(jiān)控函數(shù)代替了內(nèi)核TTBR寫指令,內(nèi)核無法私自禁用影子頁表.mode_switch監(jiān)控函數(shù)同時(shí)被插入內(nèi)核-進(jìn)程的返回代碼處,確保安全世界在受保護(hù)進(jìn)程重新運(yùn)行前恢復(fù)其寄存器值和原有頁表.可信上下文切換的安全性基于內(nèi)核代碼完整性對(duì)TTBR_switch和mode_switch代碼的保護(hù),整個(gè)流程如圖3所示:

      Fig. 3 Trusted context switch圖3 進(jìn)程-內(nèi)核可信上下文切換

      5.5.2 物理內(nèi)存隔離保護(hù)

      可信上下文切換提供了進(jìn)程虛擬內(nèi)存隔離保護(hù),確保內(nèi)核無法通過用戶空間范圍的虛擬地址訪問進(jìn)程內(nèi)存.然而,內(nèi)核仍可將進(jìn)程物理內(nèi)存映射到內(nèi)核地址空間進(jìn)行訪問.因此,安全世界必須記錄所有內(nèi)核分配給受保護(hù)進(jìn)程的物理頁,并在頁表更新事件的攔截中確保這些頁不被映射為內(nèi)核可訪問.因此,方案修改了內(nèi)核頁錯(cuò)誤處理函數(shù)中的內(nèi)存分配代碼,每當(dāng)內(nèi)核為受保護(hù)進(jìn)程分配頁面時(shí),必須顯式通知安全世界(表1中的zero和file函數(shù),分別用于聲明匿名頁和文件頁),安全世界將為其創(chuàng)建s-page結(jié)構(gòu)并標(biāo)記為受保護(hù).之后,任何將已聲明的安全頁映射至內(nèi)核空間的頁表更新請(qǐng)求都會(huì)被拒絕.方案同時(shí)確保該策略的反向安全,如果1個(gè)頁面在1次頁表更新中被映射至內(nèi)核空間,安全世界同樣對(duì)其進(jìn)行記錄并標(biāo)記為非安全頁,任何將非安全頁聲明為安全頁的請(qǐng)求都將被拒絕.

      5.6敏感應(yīng)用地址空間布局完整性保護(hù)

      基本隔離保護(hù)確保了內(nèi)核無法直接對(duì)受保護(hù)進(jìn)程內(nèi)存進(jìn)行訪問或篡改.然而,進(jìn)程在運(yùn)行過程中會(huì)與內(nèi)核進(jìn)行交互,如通過系統(tǒng)調(diào)用接口使用系統(tǒng)基礎(chǔ)服務(wù),使得不可信內(nèi)核可以通過篡改系統(tǒng)調(diào)用返回值篡改進(jìn)程地址空間布局,從而間接影響進(jìn)程執(zhí)行.本節(jié)列舉2種無需直接讀寫進(jìn)程內(nèi)存的高級(jí)內(nèi)核攻擊,并給出相應(yīng)防御策略.假設(shè)受保護(hù)進(jìn)程用戶空間有1個(gè)內(nèi)存緩沖區(qū),虛擬地址為VA,VB,包含物理頁P(yáng)A,PB.之后該進(jìn)程通過mmap系統(tǒng)調(diào)用申請(qǐng)了1個(gè)新的內(nèi)存區(qū).正常情況下,2個(gè)區(qū)域的虛擬地址、物理地址應(yīng)互不重疊,如圖4(a)所示.

      Fig. 4 Attacks to address space layout圖4 地址空間布局攻擊

      圖4(b)為映射覆蓋攻擊,通過篡改mmap系統(tǒng)調(diào)用返回的內(nèi)存區(qū)虛擬地址,使其與已有區(qū)域重疊,該攻擊是一種典型的Iago攻擊.圖4(c)為映射重定向攻擊,將某一內(nèi)存區(qū)虛擬地址映射至其他區(qū)的物理內(nèi)存,該攻擊并沒有篡改虛擬地址布局,應(yīng)用層無法察覺,因此比Iago更具隱蔽性.在這2種情況下,進(jìn)程通過虛擬地址VC對(duì)物理頁P(yáng)C的讀寫都會(huì)被重定向到PB,顯然破壞了數(shù)據(jù)完整性并可能導(dǎo)致隱私泄漏.若PB位于進(jìn)程棧,則可能造成棧上保存的函數(shù)調(diào)用返回值被篡改,形成典型的控制流劫持攻擊.

      5.6.1 防御策略

      地址空間布局攻擊利用了進(jìn)程默認(rèn)信任內(nèi)核,不對(duì)系統(tǒng)服務(wù)及返回值做校驗(yàn)的特點(diǎn),從而不按照進(jìn)程的要求進(jìn)行內(nèi)存映射操作.因此,安全世界必須實(shí)現(xiàn)與受保護(hù)進(jìn)程的可信交互以建立統(tǒng)一的地址空間布局視角,協(xié)同認(rèn)證內(nèi)核的內(nèi)存映射操作.方案利用s-vma結(jié)構(gòu)實(shí)現(xiàn)可信交互.每次進(jìn)程調(diào)用mmap申請(qǐng)新的內(nèi)存映射區(qū),安全C庫在進(jìn)程-安全世界共享內(nèi)存區(qū)為其創(chuàng)建s-vma結(jié)構(gòu).mmap從內(nèi)核返回后,安全C庫對(duì)其返回值進(jìn)行驗(yàn)證(返回值指定新建內(nèi)存區(qū)的虛擬起始地址).為防止映射覆蓋攻擊,只需確認(rèn)新建區(qū)的虛擬地址范圍不與任何已有區(qū)域的范圍(由其s-vma標(biāo)識(shí))重疊.若該驗(yàn)證通過,安全C庫將新s-vma標(biāo)記為有效并初始化其地址范圍及映射對(duì)象.

      由于保存s-vma的共享內(nèi)存區(qū)位于受保護(hù)進(jìn)程用戶空間,內(nèi)核無法篡改,從而無法對(duì)s-vma進(jìn)行偽造.s-vma向安全世界提供了進(jìn)程真實(shí)的內(nèi)存映射請(qǐng)求,可協(xié)助其驗(yàn)證內(nèi)核的頁表更新操作,確保所有安全頁都根據(jù)進(jìn)程的要求映射到正確的虛擬地址,從而防止映射重定向攻擊.以文件映射區(qū)為例,若收到頁表更新請(qǐng)求(“將物理頁P(yáng)映射到虛擬地址V”),安全世界首先搜索包含V的s-vma結(jié)構(gòu),若該s-vma指定的映射對(duì)象為安全文件F,即表示(“進(jìn)程要求將文件F映射到包含V的內(nèi)存區(qū)”).此時(shí),安全世界需確保內(nèi)核確實(shí)根據(jù)進(jìn)程的要求映射了正確的物理頁,因此檢查P的s-page結(jié)構(gòu),驗(yàn)證其[oid,offset]成員是否也指定了文件F及正確的文件內(nèi)偏移.若檢測(cè)到不匹配,此次頁表更新請(qǐng)求將被安全世界拒絕.

      5.6.2 內(nèi)核主動(dòng)證明

      盡管可行,上述方案要求每次頁表更新檢查對(duì)所有s-vma實(shí)例進(jìn)行遍歷搜索,性能開銷極大.實(shí)際上,Linux頁錯(cuò)誤處理代碼已有機(jī)制專門用于快速檢索內(nèi)存映射區(qū)結(jié)構(gòu),包括紅黑樹和最近出錯(cuò)區(qū)域緩存.因此,本方案采用內(nèi)核主動(dòng)證明機(jī)制,要求內(nèi)核主動(dòng)將其搜索結(jié)果隨頁表更新請(qǐng)求一起發(fā)送給安全世界,協(xié)助對(duì)s-vma結(jié)構(gòu)的快速檢索.交互流程如圖5所示.

      Fig. 5 Proactive attestation圖5 內(nèi)核主動(dòng)證明

      安全C庫使用連續(xù)數(shù)組維護(hù)s-vma結(jié)構(gòu).當(dāng)受保護(hù)進(jìn)程通過mmap調(diào)用創(chuàng)建內(nèi)存映射區(qū)時(shí),C庫在數(shù)組中搜索1個(gè)空閑的s-vma實(shí)例,并將其索引作為mmap參數(shù)傳給內(nèi)核.內(nèi)核為新內(nèi)存區(qū)創(chuàng)建自身的映射結(jié)構(gòu)(vm_area_struct)并將其與該索引綁定.之后,進(jìn)程訪問該區(qū)域內(nèi)某一虛擬地址V將產(chǎn)生缺頁錯(cuò)誤,內(nèi)核頁錯(cuò)誤處理代碼利用已有機(jī)制檢索包含V的vm_area_struct,最后將綁定的s-vma索引及頁表更新請(qǐng)求(P,V)發(fā)送給安全世界.

      與原方案相比,安全世界可以通過內(nèi)核傳送的索引快速檢索s-vma,無需再遍歷全部s-vma實(shí)例或重復(fù)內(nèi)核中已有的搜索操作.由于安全世界維護(hù)自身元數(shù)據(jù),因此可以通過對(duì)比P的s-page與包含V的s-vma檢測(cè)任何偽造的索引值和頁表更新請(qǐng)求.

      5.7存儲(chǔ)設(shè)備輸入輸出保護(hù)

      Fig. 6 File IO redirect attack圖6 文件輸入輸出重定向攻擊

      進(jìn)程地址空間布局完整性保護(hù)確保了安全內(nèi)存頁都根據(jù)進(jìn)程的要求映射到了正確的位置.然而,對(duì)于文件映射區(qū),其頁內(nèi)容來自于被內(nèi)核完全控制的后端存儲(chǔ)設(shè)備,不可信內(nèi)核可能發(fā)起文件輸入輸出重定向攻擊.如圖6所示,該攻擊從錯(cuò)誤的存儲(chǔ)設(shè)備區(qū)域加載了文件緩存頁內(nèi)容,但沒有破壞進(jìn)程地址空間布局.盡管磁盤加密提供對(duì)存儲(chǔ)文件的隱私性,完整性保護(hù),卻無法在文件與其緩存頁間提供可信數(shù)據(jù)路徑.顯然,將安全文件頁內(nèi)容寫入其他文件將導(dǎo)致隱私泄漏.而將內(nèi)容讀入數(shù)據(jù)流導(dǎo)向舊版本文件,將完整性檢查數(shù)據(jù)流導(dǎo)向新版本文件將導(dǎo)致回滾攻擊,使得代碼、數(shù)據(jù)無法正確加載.針對(duì)此類攻擊,方案提供文件輸入輸出保護(hù),確保進(jìn)程的文件操作(對(duì)文件緩存頁的讀寫)將全部導(dǎo)向正確的存儲(chǔ)文件.

      為提供上述保護(hù),須首先禁止內(nèi)核直接對(duì)存儲(chǔ)設(shè)備進(jìn)行控制.因此,安全世界將塊存儲(chǔ)設(shè)備的內(nèi)存映射區(qū)視為特殊的安全頁,確保內(nèi)核無法直接對(duì)其讀寫.同時(shí),將內(nèi)核塊設(shè)備驅(qū)動(dòng)中的設(shè)備交互代碼替換為安全世界監(jiān)控函數(shù)(表1中的popl),實(shí)現(xiàn)安全世界對(duì)內(nèi)核文件讀寫操作的攔截和驗(yàn)證.

      在介紹具體的驗(yàn)證策略之前,本節(jié)首先給出1個(gè)必要的安全假設(shè):所有屬于敏感應(yīng)用的安全文件包括可執(zhí)行程序、庫文件、其他普通文件,都位于塊存儲(chǔ)設(shè)備的1個(gè)獨(dú)立分區(qū)之中,與普通文件系統(tǒng)隔離.該假設(shè)提供了1個(gè)簡單但有效的安全不變量,即所有安全文件均位于1個(gè)固定連續(xù)的存儲(chǔ)區(qū)域內(nèi).在該假設(shè)下,安全世界能夠輕易實(shí)現(xiàn)基本的文件隔離:所有非安全內(nèi)存頁與安全分區(qū)的數(shù)據(jù)交互請(qǐng)求都將被拒絕.然而,驗(yàn)證安全內(nèi)存頁與安全文件數(shù)據(jù)流向的正確性需要更多的工作.例如當(dāng)收到內(nèi)核的文件操作請(qǐng)求(“從安全分區(qū)的第10塊將安全文件F的第4塊的內(nèi)容讀入其文件緩存頁”),安全世界需驗(yàn)證F的第4塊是否確實(shí)存儲(chǔ)在安全分區(qū)的第10塊中.這要求安全世界實(shí)現(xiàn)從文件邏輯塊號(hào)lbn到設(shè)備物理塊號(hào)pbn的可信轉(zhuǎn)換.考慮到目前商用文件系統(tǒng)復(fù)雜的存儲(chǔ)結(jié)構(gòu),這種轉(zhuǎn)換將極大增加安全世界的代碼規(guī)模.實(shí)際上,邏輯塊-物理塊轉(zhuǎn)換已經(jīng)被內(nèi)核文件系統(tǒng)層實(shí)現(xiàn),以完成正常的文件讀寫操作.因此,方案仍采用內(nèi)核主動(dòng)證明機(jī)制,要求內(nèi)核將其轉(zhuǎn)換結(jié)果與塊設(shè)備讀寫請(qǐng)求一起發(fā)送給安全世界.方案采用Linux下最常用的第二代擴(kuò)展文件系統(tǒng)(second extended filesystem, EXT2)構(gòu)建安全分區(qū).EXT2中索引節(jié)點(diǎn)inode結(jié)構(gòu)用來存儲(chǔ)單個(gè)文件的元數(shù)據(jù),所有的inode結(jié)構(gòu)都保存在位于分區(qū)固定位置的inode塊中.對(duì)單個(gè)文件的每個(gè)塊,都對(duì)應(yīng)1個(gè)索引項(xiàng)來標(biāo)識(shí)其物理塊號(hào).1種特殊的文件塊,即索引塊用來專門存儲(chǔ)其他文件塊的索引項(xiàng).每個(gè)文件的第1~12個(gè)邏輯數(shù)據(jù)塊和1~3級(jí)索引塊的索引項(xiàng)存儲(chǔ)在其inode結(jié)構(gòu)中,如圖7所示.為檢索給定數(shù)據(jù)塊的索引項(xiàng),其邏輯塊號(hào)需首先轉(zhuǎn)換成位置向量,轉(zhuǎn)換公式如圖7所示.位置向量指定了該數(shù)據(jù)塊的各級(jí)索引項(xiàng)在索引塊中的偏移量.之后,安全世界需從inode開始,依次讀取各級(jí)索引項(xiàng),最終找到該塊對(duì)應(yīng)的物理塊號(hào).然而,如果安全世界已經(jīng)知道了給定數(shù)據(jù)塊的父索引塊的物理塊號(hào),上述過程可以簡化為只在父索引塊中讀取其自身索引項(xiàng).

      Fig. 7 EXT2 index structure圖7 EXT2文件系統(tǒng)存儲(chǔ)結(jié)構(gòu)

      安全世界使用s-block結(jié)構(gòu)存儲(chǔ)單個(gè)物理塊的元數(shù)據(jù)信息,包括該塊所屬文件的inode號(hào)、邏輯塊號(hào)及位置向量.在內(nèi)核主動(dòng)證明機(jī)制下,內(nèi)核的文件塊讀請(qǐng)求可定義為[ino,lbn,epbn]分別指定了所讀文件inode號(hào)、所讀塊的邏輯塊號(hào)以及該塊的父索引塊的物理塊號(hào).由于inode塊位于分區(qū)中固定位置,安全世界預(yù)先知道它們的物理塊號(hào),并在分區(qū)加載后即為其創(chuàng)建s-block結(jié)構(gòu).由于inode塊可以看做其他文件塊的祖先塊,因此其s-block可作為讀取后續(xù)子塊的根證據(jù).當(dāng)收到對(duì)子塊的讀請(qǐng)求,安全世界根據(jù)epbn搜索父塊的s-block結(jié)構(gòu),將內(nèi)核提交的子塊lbn轉(zhuǎn)換成位置向量,并與s-block內(nèi)的父塊位置向量進(jìn)行比對(duì),若父塊向量是子塊向量的前綴,則驗(yàn)證了內(nèi)核提交的epbn確實(shí)指向了待讀子塊的父索引塊.之后,安全世界即可直接從父塊中找到子塊的物理塊號(hào),并向塊存儲(chǔ)設(shè)備發(fā)送讀指令.讀取完成后,安全世界為子塊創(chuàng)建s-block結(jié)構(gòu)并標(biāo)記為已讀.之后,該s-block結(jié)構(gòu)即可用作驗(yàn)證后續(xù)子塊讀操作的證據(jù),從而形成從inode塊到最終數(shù)據(jù)塊的可信證據(jù)鏈.

      內(nèi)核主動(dòng)證明機(jī)制要求內(nèi)核提交關(guān)鍵的ebpn參數(shù)指明待讀塊的父索引塊,使得安全世界能夠直接從父塊中快速檢索待讀塊的物理塊號(hào),而無需重復(fù)整個(gè)lbn-pbn轉(zhuǎn)換過程.實(shí)際上,在內(nèi)核正常文件讀寫過程中,提交塊操作請(qǐng)求前已經(jīng)完成了對(duì)父索引塊物理塊號(hào)epbn的查找,因此方案不會(huì)增加內(nèi)核額外的工作量,只要求其將已有搜索結(jié)果發(fā)送給安全世界.

      文件輸入輸出保護(hù)在安全文件及其文件緩存頁間建立了可信數(shù)據(jù)路徑,確保受保護(hù)進(jìn)程能夠與其文件進(jìn)行安全交互,也確保了其代碼,數(shù)據(jù)的正確加載.通過內(nèi)核主動(dòng)證明機(jī)制,安全世界能夠?qū)?nèi)核文件操作進(jìn)行高效驗(yàn)證,而不需要重新實(shí)現(xiàn)復(fù)雜的文件系統(tǒng)組件.另外,由于整個(gè)過程的根證據(jù),即inode塊的物理塊號(hào)被安全世界預(yù)知,因此由此構(gòu)建的s-block元數(shù)據(jù)信息都是可信的,所有惡意的文件操作請(qǐng)求都會(huì)造成元數(shù)據(jù)檢查的不匹配而被安全世界檢測(cè).

      5.8用戶設(shè)備輸入輸出保護(hù)

      存儲(chǔ)設(shè)備輸入輸出保護(hù)方案展示了如何在不可信內(nèi)核設(shè)備驅(qū)動(dòng)中構(gòu)建從應(yīng)用進(jìn)程到外圍設(shè)備的可信數(shù)據(jù)路徑.對(duì)于用戶輸入輸出設(shè)備,其通信協(xié)議,數(shù)據(jù)結(jié)構(gòu)遠(yuǎn)比存儲(chǔ)設(shè)備簡單.因此,方案提供用戶輸入輸出設(shè)備保護(hù),確保受保護(hù)進(jìn)程和用戶之間的數(shù)據(jù)交互(如鍵盤輸入的密碼和顯示給用戶的交易信息等)不被內(nèi)核攔截或篡改.

      方案的設(shè)計(jì)主要基于用戶交互設(shè)備驅(qū)動(dòng)程序的2個(gè)特點(diǎn):1)用戶輸入輸出只會(huì)在進(jìn)程空間的應(yīng)用緩沖區(qū),內(nèi)核驅(qū)動(dòng)中的臨時(shí)緩沖區(qū),以及設(shè)備的內(nèi)存映射區(qū)之間傳輸,數(shù)據(jù)流向非常簡單.2)驅(qū)動(dòng)中對(duì)這些關(guān)鍵區(qū)域進(jìn)行讀寫操作的代碼所占比例很小,根據(jù)本文對(duì)鍵盤、聲卡、串口驅(qū)動(dòng)程序的分析,這些代碼僅占全部驅(qū)動(dòng)代碼的1%~3%,主要包括:①緩沖區(qū)間的數(shù)據(jù)拷貝操作;②對(duì)輸入輸出數(shù)據(jù)的預(yù)處理,如內(nèi)核終端(Teletype,tty)子系統(tǒng)中的線路規(guī)程組件;③底層設(shè)備數(shù)據(jù)和控制指令,即對(duì)設(shè)備內(nèi)存映射區(qū)的讀寫.因此,安全世界將驅(qū)動(dòng)臨時(shí)緩沖區(qū),設(shè)備內(nèi)存映射區(qū)視為特殊的s-page,確保內(nèi)核無法對(duì)其訪問,從而無法直接攔截用戶數(shù)據(jù)或直接控制用戶設(shè)備.之后,將上述驅(qū)動(dòng)代碼移入安全世界,確保對(duì)用戶數(shù)據(jù)的正常操作能夠安全執(zhí)行.由于移植代碼所占比例很小,本方案不會(huì)顯著增加安全世界代碼規(guī)模.此外,為防止內(nèi)核使用非法緩沖區(qū)以偽造用戶輸入輸出,方案修改了驅(qū)動(dòng)初始化代碼,要求其將驅(qū)動(dòng)緩沖區(qū),設(shè)備映射區(qū)地址提交給安全世界,此后,任何使用其他未經(jīng)認(rèn)證緩沖區(qū)的操作請(qǐng)求都會(huì)被安全世界拒絕.對(duì)于受保護(hù)進(jìn)程內(nèi)的應(yīng)用緩沖區(qū),安全C庫會(huì)在進(jìn)程調(diào)用輸入輸出函數(shù)(例如printf,scanf)時(shí)記錄其地址,安全世界會(huì)在緩沖區(qū)數(shù)據(jù)拷貝操作中檢查內(nèi)核提交的緩沖區(qū)地址與C庫記錄的是否一致,從而確保數(shù)據(jù)流向的正確性.

      方案對(duì)用戶設(shè)備驅(qū)動(dòng)代碼進(jìn)行了細(xì)粒度的功能劃分,在不顯著增加安全世界代碼規(guī)模的情況下,實(shí)現(xiàn)了可信用戶輸入輸出機(jī)制.此外,由于方案僅將少量已有驅(qū)動(dòng)代碼移入安全世界,因此并沒有增加整體工作量,系統(tǒng)整體性能并沒有受到顯著影響.

      5.9安全系統(tǒng)調(diào)用接口

      本節(jié)介紹的各種保護(hù)策略為敏感應(yīng)用進(jìn)程安全使用內(nèi)核系統(tǒng)服務(wù)提供了基礎(chǔ).然而,某些正常的系統(tǒng)功能也需要對(duì)進(jìn)程內(nèi)存進(jìn)行操作.1)某些內(nèi)核功能需要對(duì)進(jìn)程安全頁進(jìn)行處理,如匿名頁的清零初始化、文件頁的內(nèi)容讀取等.2)內(nèi)核需要在系統(tǒng)調(diào)用處理時(shí)從用戶空間獲取系統(tǒng)調(diào)用參數(shù),如根據(jù)指針參數(shù)讀取進(jìn)程內(nèi)存中的參數(shù)內(nèi)容.對(duì)于前者,這些操作已經(jīng)被替換為表1中的監(jiān)控函數(shù),因此能夠在安全世界內(nèi)正常運(yùn)行.對(duì)于后者,安全C庫在系統(tǒng)調(diào)用轉(zhuǎn)入內(nèi)核前進(jìn)行了參數(shù)適配,將指針等地址參數(shù)的所指內(nèi)容拷貝到1個(gè)內(nèi)核共享頁中,并用頁內(nèi)地址替換指針參數(shù),確保內(nèi)核既能夠正確獲取參數(shù)內(nèi)容,又無法通過指針訪問進(jìn)程空間的其他內(nèi)存.

      基于各種保護(hù)策略和參數(shù)適配,進(jìn)程可以安全使用標(biāo)準(zhǔn)系統(tǒng)調(diào)用功能.首先,地址空間布局完整性保護(hù)提供了安全的內(nèi)存映射,內(nèi)存分配接口,包括mmap,malloc等.對(duì)于文件讀寫,方案將read,write接口實(shí)現(xiàn)為對(duì)文件映射區(qū)的mmap操作.對(duì)于進(jìn)程控制,MMU隔離保護(hù)確保了通過fork創(chuàng)建的子進(jìn)程頁表是父進(jìn)程的正確拷貝,對(duì)exec產(chǎn)生的新進(jìn)程,方案確保其地址空間布局(即初始s-vma結(jié)構(gòu))包含正確的可執(zhí)行文件和動(dòng)態(tài)鏈接庫映射.安全系統(tǒng)調(diào)用支持避免了在安全世界內(nèi)重新實(shí)現(xiàn)核心系統(tǒng)服務(wù),既減輕了代碼開發(fā)和維護(hù)負(fù)擔(dān),也降低了整個(gè)系統(tǒng)TCB.

      5.10性能增強(qiáng)

      第5.6,5.7節(jié)詳細(xì)闡述了如何利用內(nèi)核主動(dòng)證明機(jī)制有效簡化系統(tǒng)監(jiān)控過程,減少安全世界的單次執(zhí)行時(shí)間,本節(jié)著重介紹2種減少世界切換次數(shù)主要技術(shù)手段:

      1) 性能開銷本地化.本方案系統(tǒng)監(jiān)控產(chǎn)生的性能開銷應(yīng)盡可能限制在受保護(hù)應(yīng)用內(nèi)部,其他普通進(jìn)程的運(yùn)行盡可能不受影響.對(duì)于普通進(jìn)程,其寄存器內(nèi)容和內(nèi)存地址空間不需要保護(hù),所以當(dāng)他們運(yùn)行時(shí),方案使用原始異常向量表,從而CPU模式切換事件不會(huì)觸發(fā)安全世界監(jiān)控.受保護(hù)進(jìn)程運(yùn)行前,安全世界將新的異常向量表基地址載入VBAR寄存器,確保模式切換能被安全世界攔截以提供隔離保護(hù).對(duì)VBAR的保護(hù)采用與TTBR類似的方式,即內(nèi)核中所有VBAR修改指令均被替換為smc,從而防止內(nèi)核加載非法異常向量表.性能開銷本地化機(jī)制減少了不必要的世界切換,有效降低了系統(tǒng)監(jiān)控對(duì)普通應(yīng)用的效率影響.

      2) 監(jiān)控事件延遲提交.對(duì)于只影響受保護(hù)進(jìn)程執(zhí)行的系統(tǒng)事件,如用戶空間頁表更新操作,都可以被延遲到受保護(hù)進(jìn)程重新運(yùn)行前提交給安全世界進(jìn)行處理.因此系統(tǒng)事件監(jiān)控修改為如下流程:每次需要向安全世界提交可以被延遲處理的系統(tǒng)操作,內(nèi)核將該請(qǐng)求寫入1個(gè)與安全世界的共享內(nèi)存區(qū),不再立即調(diào)用smc轉(zhuǎn)入安全世界.每次安全世界執(zhí)行時(shí),首先檢查共享內(nèi)存區(qū),依次處理所有延遲請(qǐng)求.由于每次受保護(hù)應(yīng)用被調(diào)度運(yùn)行前都會(huì)觸發(fā)模式切換的mode_swtich監(jiān)控事件,從而確保所有被延遲的請(qǐng)求能夠被安全世界及時(shí)處理.延遲提交機(jī)制將部分監(jiān)控事件并入了不可延遲提交事件中進(jìn)行處理,從而有效減少了世界切換次數(shù).

      5.11方案總結(jié)

      本節(jié)對(duì)方案的各種保護(hù)策略、系統(tǒng)整體運(yùn)行流程進(jìn)行總結(jié).系統(tǒng)啟動(dòng)階段可信引導(dǎo)機(jī)制確保了正確的系統(tǒng)鏡像文件被加載,保證了系統(tǒng)初始狀態(tài)的可信.因此,該階段產(chǎn)生的第1條TTBR寫指令能夠正確被安全世界攔截,確保所有初始頁表被映射為只讀.從此時(shí)起,方案的MMU隔離保護(hù)機(jī)制將被激活.之后,基于MMU隔離的內(nèi)核代碼完整性保護(hù)確保了所有包含smc指令的內(nèi)核監(jiān)控代碼不會(huì)被惡意刪除.其中,sfork和sexec監(jiān)控函數(shù)確保了安全世界能及時(shí)獲知內(nèi)核的進(jìn)程創(chuàng)建事件.安全世界為每個(gè)受保護(hù)進(jìn)程創(chuàng)建s-task結(jié)構(gòu)并記錄其頁表基地址,作為該進(jìn)程的唯一標(biāo)識(shí).由于所有進(jìn)程切換的TTBR寫指令都被攔截,因此安全世界知道當(dāng)前運(yùn)行的是哪一進(jìn)程,能夠正確記錄內(nèi)核分配給每一進(jìn)程的物理內(nèi)存,結(jié)合MMU隔離為進(jìn)程提供基本隔離保護(hù),確保內(nèi)核無法訪問受保護(hù)進(jìn)程內(nèi)存.在基本隔離的基礎(chǔ)上,地址空間布局完整性保護(hù)、存儲(chǔ)設(shè)備和用戶設(shè)備輸入輸出保護(hù)提供了進(jìn)一步安全保障,包括防御地址空間布局篡改攻擊、程序代碼、數(shù)據(jù)正確加載、安全文件讀寫、安全用戶交互以及安全系統(tǒng)調(diào)用接口.

      6 安全分析

      第5節(jié)詳細(xì)介紹了本方案的各種保護(hù)策略如何實(shí)現(xiàn)在第4節(jié)中定義的安全屬性.本節(jié)將對(duì)其他5種不常見的攻擊方法進(jìn)行分析.

      1) 內(nèi)核控制流劫持.盡管方案提供內(nèi)核代碼完整性保護(hù),利用內(nèi)核漏洞實(shí)現(xiàn)控制流劫持攻擊仍可在不改變現(xiàn)有內(nèi)核代碼的情況下形成惡意行為.首先,這些攻擊無法刪除已有監(jiān)控代碼,確保敏感操作發(fā)生前總能轉(zhuǎn)入安全世界進(jìn)行安全檢查.其次,初始的安全元數(shù)據(jù)在系統(tǒng)啟動(dòng)階段建立,可信引導(dǎo)機(jī)制將確保這些數(shù)據(jù)的可信性.后續(xù)的運(yùn)行時(shí)安全數(shù)據(jù)將由安全世界根據(jù)內(nèi)核正常行為模式創(chuàng)建并維護(hù),因此這些攻擊產(chǎn)生的系統(tǒng)異常將觸發(fā)與元數(shù)據(jù)不匹配的監(jiān)控事件,無法攻破安全世界對(duì)敏感應(yīng)用進(jìn)程的保護(hù).例如內(nèi)核攻擊者可以通過控制流篡改繞過安全頁的聲明函數(shù),并試圖將非安全頁映射至安全區(qū)域.在處理該頁表更新請(qǐng)求時(shí),安全世界由于檢索不到該頁對(duì)應(yīng)的s-page結(jié)構(gòu)(聲明函數(shù)被繞過,安全世界沒有得到通知)而拒絕該操作,從而阻止了非安全頁被當(dāng)成安全頁使用而造成隱私泄露.

      2) DMA攻擊.攻擊者掛接惡意DMA設(shè)備,繞過MMU保護(hù)直接訪問安全物理內(nèi)存區(qū)域,包括安全世界內(nèi)存以及普通世界的受保護(hù)進(jìn)程內(nèi)存.首先,TrustZone硬件保護(hù)機(jī)制支持對(duì)外接設(shè)備進(jìn)行安全劃分,確保惡意DMA設(shè)備無法訪問安全世界內(nèi)存.其次,針對(duì)普通世界的受保護(hù)進(jìn)程內(nèi)存,若設(shè)備支持IOMMU(input output memory map unit),類似頁表更新,安全世界需對(duì)IOMMU頁表更新操作進(jìn)行攔截和監(jiān)控,阻止惡意的DMA內(nèi)存映射.對(duì)不支持IOMMU的設(shè)備,DMA操作將通過DMA控制器直接訪問物理內(nèi)存,頁表的映射保護(hù)屬性全部失效.因此,安全世界需將DMA控制寄存器的設(shè)備內(nèi)存映射區(qū)視為特殊s-page,阻止內(nèi)核直接對(duì)其讀寫,從而確保攻擊者無法發(fā)起惡意的DMA請(qǐng)求.

      3) 拒絕服務(wù)攻擊.內(nèi)核攻擊者可發(fā)起拒絕服務(wù)攻擊,如關(guān)閉自身系統(tǒng)服務(wù),拒絕對(duì)受保護(hù)進(jìn)程進(jìn)行調(diào)度,或繞過所有的監(jiān)控函數(shù)以完全屏蔽安全世界.首先,這些攻擊會(huì)造成受保護(hù)進(jìn)程無法運(yùn)行,卻無法攻破本方案的進(jìn)程隔離保護(hù),隔離域內(nèi)隱私數(shù)據(jù)和代碼執(zhí)行不會(huì)受到影響.其次,這種攻擊會(huì)產(chǎn)生嚴(yán)重的用戶體驗(yàn)問題,能夠輕易被用戶識(shí)別并及時(shí)采取補(bǔ)救措施,實(shí)際攻擊效果并不明顯.

      4) 用戶代碼提權(quán)攻擊.盡管方案對(duì)已有內(nèi)核代碼提供運(yùn)行時(shí)完整性保護(hù),攻擊者仍可利用系統(tǒng)漏洞劫持內(nèi)核控制流,在特權(quán)模式下跳轉(zhuǎn)到用戶空間,從而在特權(quán)模式下執(zhí)行包含惡意特權(quán)指令的用戶代碼,如篡改、刪除監(jiān)控函數(shù),或修改TTBR指向非法頁表.因此,安全世界需在頁表更新操作中確保所有用戶空間內(nèi)存映射全部帶有特權(quán)不可執(zhí)行屬性(privilege execution never, PXN)屬性,從而將特權(quán)模式可以執(zhí)行的代碼限制在內(nèi)核代碼區(qū).

      5) 安全世界攻擊.雖然漏洞利用是所有安全軟件存在的普遍問題,本方案基于TrustZone硬件隔離機(jī)制實(shí)現(xiàn),安全性遠(yuǎn)高于傳統(tǒng)的內(nèi)核層安全工具.另外,與傳統(tǒng)TrustZone安全方案相比,本方案的安全世界組件不包含任何具體的應(yīng)用和系統(tǒng)服務(wù),交互接口簡單,代碼規(guī)模很小,被攻擊的可能性要小很多,因此具有更高的安全性.

      7 實(shí) 現(xiàn)

      在賽靈思Zynq-7000開發(fā)板上實(shí)現(xiàn)了原型系統(tǒng).該設(shè)備支持TrustZone安全擴(kuò)展,配置ARM Cortex-A9雙核處理器.正常世界操作系統(tǒng)內(nèi)核為Linux 2.6.38,安全世界只包含少量系統(tǒng)啟動(dòng)代碼,普通世界內(nèi)核監(jiān)控模塊及安全元數(shù)據(jù)管理模塊.

      由于需要被替換為安全世界監(jiān)控函數(shù)的內(nèi)核源代碼規(guī)模較小且模式固定,方案僅修改了1 226行內(nèi)核代碼.具體來講,方案替換了位于pgalloc.h, pgtable.h文件中的頁表更新函數(shù).文件讀寫相關(guān)的監(jiān)控代碼位于內(nèi)核通用MMC卡驅(qū)動(dòng)中,其底層設(shè)備交互代碼(僅包含簡單了設(shè)備映射內(nèi)存讀寫指令)被移入安全世界.此外,方案使用UART(universal asynchronous receiver/transmitter)串口作為用戶交互設(shè)備,并用PC端鍵盤連接UART作為用戶輸入,而UART輸出將顯示在PC顯示器上.用戶交互相關(guān)的監(jiān)控代碼位于內(nèi)核通用UART驅(qū)動(dòng)中.

      安全世界使用預(yù)先分配的連續(xù)數(shù)組結(jié)構(gòu)維護(hù)s-page和s-block元數(shù)據(jù),并使用物理頁號(hào)、物理塊號(hào)作為索引.因此對(duì)其訪問只需要常數(shù)時(shí)間,而不會(huì)隨數(shù)組長度增加.在目前的實(shí)現(xiàn)中,s-page和s-block大小均為8 KB,分別代表4 KB內(nèi)存頁和1 KB磁盤塊.本文實(shí)驗(yàn)所用開發(fā)板、內(nèi)存容量1 GB、存儲(chǔ)卡容量1 GB,其中256 MB分配給安全分區(qū),因此,這2個(gè)數(shù)組所占內(nèi)存空間僅為4 MB.對(duì)于內(nèi)存和存儲(chǔ)容量更大的商用移動(dòng)設(shè)備,存儲(chǔ)安全元數(shù)據(jù)所需內(nèi)存空間會(huì)更大,但訪問效率和管理代碼的規(guī)模不會(huì)改變.

      方案將安全C庫、Linux系統(tǒng)庫、需要保護(hù)的敏感應(yīng)用程序放入安全分區(qū)中.這些文件應(yīng)該使用代碼檢查、模糊測(cè)試等技術(shù)進(jìn)行嚴(yán)格的安全驗(yàn)證,從而將漏洞風(fēng)險(xiǎn)降至最低.由于方案支持使用標(biāo)準(zhǔn)系統(tǒng)調(diào)用接口以及程序動(dòng)態(tài)加載,敏感應(yīng)用可直接運(yùn)行,不需要重寫代碼或重新編譯.方案在安全世界中預(yù)置了程序白名單,定義了所有需要保護(hù)的敏感應(yīng)用.敏感應(yīng)用的啟動(dòng)可以通過2種方式.首先,普通進(jìn)程可以通過exec調(diào)用將自己初始化為受保護(hù)進(jìn)程,這種方式用于用戶在不可信命令行中首次運(yùn)行敏感應(yīng)用.其次,敏感程序可通過fork調(diào)用創(chuàng)建子進(jìn)程.安全世界收到內(nèi)核sexec進(jìn)程創(chuàng)建請(qǐng)求時(shí),若待創(chuàng)建程序位于白名單中,則為其創(chuàng)建s-task結(jié)構(gòu)并標(biāo)記為受保護(hù).所有受保護(hù)進(jìn)程通過fork創(chuàng)建的子進(jìn)程都將被標(biāo)記為受保護(hù).盡管惡意應(yīng)用也可以通過exec將自己偽裝為敏感應(yīng)用,然而,在exec調(diào)用返回后,地址空間布局完整性保護(hù)將確保原有地址空間被完全清除,并強(qiáng)制進(jìn)程構(gòu)建與敏感應(yīng)用完全等價(jià)的新地址空間,惡意應(yīng)用中的原有惡意代碼將無法加載運(yùn)行.

      由于程序白名單定義了所有授權(quán)的受保護(hù)敏感應(yīng)用,移動(dòng)設(shè)備廠商應(yīng)該對(duì)其謹(jǐn)慎配置和更新,并使用現(xiàn)有TrustZone版權(quán)管理或固件更新技術(shù)提供安全保障.盡管方案解決了TrustZone在安全性、開放性方面的沖突問題,如何將TrustZone資源向第三方開發(fā)者開放涉及商業(yè)合作問題,不在本文的研究范圍內(nèi).

      8 實(shí)驗(yàn)結(jié)果評(píng)估

      8.1系統(tǒng)TCB

      本方案中,安全世界組件主要包括內(nèi)核監(jiān)控模塊、元數(shù)據(jù)管理模塊和內(nèi)核操作代理模塊.監(jiān)控模塊只關(guān)注安全相關(guān)的內(nèi)核底層行為,驗(yàn)證策略簡單且固定.元數(shù)據(jù)采用簡單數(shù)組結(jié)構(gòu)存儲(chǔ),因此管理代碼實(shí)現(xiàn)簡單.代理模塊代替內(nèi)核執(zhí)行某些關(guān)鍵操作,如頁表更新、底層設(shè)備交互等,這些操作僅由一系列簡單內(nèi)存讀寫指令組成,代碼開銷較小.因此,安全世界只包含2 400行代碼,系統(tǒng)TCB很小.不僅如此,與傳統(tǒng)TrustZone方案相比,本方案最大的優(yōu)勢(shì)在于TCB不會(huì)隨受保護(hù)敏感應(yīng)用的數(shù)量而增大.

      8.2安全性評(píng)估

      方案的安全性主要包括4個(gè)方面,對(duì)頁表的保護(hù)、對(duì)內(nèi)核代碼的保護(hù)、對(duì)敏感應(yīng)用進(jìn)程的保護(hù)以及對(duì)用戶設(shè)備數(shù)據(jù)流的保護(hù).

      1) 采取方法嘗試篡改頁表:①利用系統(tǒng)/dev/mem接口直接修改頁表內(nèi)存;②編寫惡意內(nèi)核模塊,調(diào)用set_pt監(jiān)控函數(shù)請(qǐng)求安全世界修改頁表,將頁表自身映射為可寫.實(shí)驗(yàn)結(jié)果表明:第1類攻擊由于頁表內(nèi)存的只讀映射而失敗;第2類攻擊由于安全世界對(duì)頁表的只讀保護(hù)策略而失敗.由此證實(shí)頁表隔離保護(hù)的安全性.

      2) 采用方法嘗試篡改內(nèi)核代碼:①利用系統(tǒng)/dev/mem接口直接修改內(nèi)核代碼區(qū)內(nèi)存;②編寫惡意內(nèi)核模塊,調(diào)用set_pt監(jiān)控函數(shù),請(qǐng)求安全世界在頁表中將內(nèi)核代碼頁映射為可寫.實(shí)驗(yàn)結(jié)果表明:第1類攻擊由于內(nèi)核代碼區(qū)的只讀映射屬性而失敗,第2類攻擊由于安全世界對(duì)內(nèi)核代碼的只讀保護(hù)策略而失敗.由此證實(shí)內(nèi)核代碼完整性保護(hù)的安全性.

      3) 嘗試破壞進(jìn)程保護(hù).首先編寫受保護(hù)進(jìn)程實(shí)例,該進(jìn)程從配置文件加載安全密鑰至固定內(nèi)存區(qū)域,并使用其進(jìn)行加密操作:①編寫內(nèi)核模塊,使用kprobes內(nèi)核調(diào)試框架攔截內(nèi)核入口代碼,使用密鑰虛擬地址竊取密鑰;②編寫內(nèi)核模塊,使用LSM框架(Linux security module)攔截mmap系統(tǒng)調(diào)用,篡改其返回值實(shí)現(xiàn)映射覆蓋攻擊,使其指向密鑰地址;③編寫內(nèi)核模塊實(shí)現(xiàn)映射重定向攻擊,調(diào)用set_pt監(jiān)控函數(shù),請(qǐng)求安全世界將保存密鑰的物理內(nèi)存映射至公開內(nèi)存緩沖區(qū);④編寫內(nèi)核模塊,實(shí)現(xiàn)文件重定向攻擊,調(diào)用popl監(jiān)控函數(shù),請(qǐng)求安全世界將密鑰從配置文件加載至非安全頁中.實(shí)驗(yàn)結(jié)果表明:第1類攻擊由于影子頁表機(jī)制的存在而失敗;第2類攻擊由于安全C庫對(duì)系統(tǒng)調(diào)用返回值的檢查而失敗;第3類攻擊由于方案的地址空間布局完整性保護(hù)機(jī)制而失敗;第4類攻擊由于方案的文件輸入輸出保護(hù)而失敗.由此驗(yàn)證了方案對(duì)敏感應(yīng)用進(jìn)程的保護(hù).

      Fig. 8 LMBench Overhead Comparison圖8 LMBench性能開銷結(jié)果對(duì)比

      4) 嘗試破壞對(duì)用戶設(shè)備數(shù)據(jù)流的保護(hù).首先編寫受保護(hù)進(jìn)程實(shí)例.該進(jìn)程接收用戶鍵入的密碼完成交易驗(yàn)證,并將交易信息顯示給用戶進(jìn)行確認(rèn).之后編寫惡意內(nèi)核模塊:1)定期讀取內(nèi)核通用tty層輸入緩沖區(qū)以竊取密碼;2)定期寫入U(xiǎn)ART串口輸出緩沖區(qū),以偽造交易信息.實(shí)驗(yàn)結(jié)果表明:2類攻擊均由于方案對(duì)用戶設(shè)備輸入輸出緩沖區(qū)的保護(hù)而失敗.

      上述攻擊多以內(nèi)核模塊的方式實(shí)現(xiàn),由于在實(shí)際場(chǎng)景中,攻擊者往往只能利用某些內(nèi)核漏洞實(shí)現(xiàn)有限的控制,敵手能力一般不足以加載內(nèi)核模塊以執(zhí)行任意內(nèi)核惡意代碼,從而進(jìn)一步證實(shí)了方案的安全性.

      8.3效率評(píng)估

      8.3.1 系統(tǒng)效率

      使用Linux的系統(tǒng)服務(wù)評(píng)分工具LMBench評(píng)估方案對(duì)整體系統(tǒng)性能的影響,所選測(cè)試用例主要涉及內(nèi)存映射、文件讀寫以及進(jìn)程創(chuàng)建.表2給出了本方案與原始Linux系統(tǒng)的評(píng)估結(jié)果以及本方案產(chǎn)生的額外開銷.結(jié)果表明:空系統(tǒng)調(diào)用產(chǎn)生了最大的性能開銷,代表了普通世界與安全世界的切換時(shí)間.世界切換的高延遲直接影響了其他系統(tǒng)調(diào)用的效率,因?yàn)榘踩澜鐣?huì)攔截所有的系統(tǒng)調(diào)用請(qǐng)求.然而,結(jié)果表明隨著系統(tǒng)調(diào)用處理時(shí)間的增加,性能開銷逐漸降低,說明世界切換與具體的系統(tǒng)調(diào)用處理相比時(shí)間較短且固定不變.

      Table 2 LMBench Results表2 LMBench系統(tǒng)效率評(píng)估

      圖8給出了本方案與相關(guān)工作中提到的2個(gè)類似系統(tǒng)Inktag[21]和SecRet[17]的LMBench性能開銷對(duì)比.Inktag提供了與本方案類似的安全屬性.然而,由于其依賴的硬件虛擬化機(jī)制和頻繁的內(nèi)存加解密操作產(chǎn)生的巨大計(jì)算負(fù)擔(dān),性能開銷遠(yuǎn)高于本方案.SecRet同樣基于TrustZone技術(shù),只實(shí)現(xiàn)了本方案的部分安全目標(biāo)卻產(chǎn)生了幾乎相同的性能開銷.原因在于SecRet由于不完善的保護(hù)而需要更多的安全檢查,例如由于缺少文件輸入輸出保護(hù),進(jìn)程寄存器保護(hù)而必需對(duì)進(jìn)程代碼頁和控制流做完整性檢查.相比之下,本方案提供了完善的安全策略,并且使用了內(nèi)核主動(dòng)證明機(jī)制極大簡化了安全世界的驗(yàn)證過程,有效提高了系統(tǒng)運(yùn)行效率.

      8.3.2 應(yīng)用層效率

      本節(jié)評(píng)估了方案對(duì)實(shí)際應(yīng)用程序運(yùn)行的效率影響.包括SPEC CPU 2006測(cè)試套件、輕量級(jí)Tomcat服務(wù)器以及自編寫的磁盤加密程序.

      選取SPEC CPU中的解壓縮程序bzip2、智能圍棋程序gobmk、序列搜索算法程序hmmer、視頻編碼程序h264ref四款應(yīng)用,對(duì)其進(jìn)行交叉編譯,分別在原始Linux系統(tǒng)和本方案下運(yùn)行,效率對(duì)比見表3所示.由于SPEC CPU主要用于測(cè)試CPU性能,這些程序以純數(shù)學(xué)計(jì)算為主,幾乎不需要與內(nèi)核進(jìn)行交互,因此性能開銷幾乎可以忽略,都在2%以內(nèi).

      Table 3 SPEC CPU Performance Overhead表3 SPEC CPU應(yīng)用效率開銷

      之后對(duì)Tomcat Web服務(wù)器進(jìn)行性能評(píng)估.使用本文所用開發(fā)板自帶的千兆以太網(wǎng)卡連接1個(gè)PC客戶端.客戶端運(yùn)行Apache的Web服務(wù)器評(píng)估工具(Apache benchmark, AB),該工具與開發(fā)板上的Tomcat創(chuàng)建50個(gè)并行連接,同時(shí)發(fā)送5 000個(gè)http請(qǐng)求.Tomcat代表了運(yùn)行性能較為理想的一類應(yīng)用程序,特點(diǎn)是只運(yùn)行幾個(gè)長期工作線程處理連接請(qǐng)求,不需要頻繁的進(jìn)程創(chuàng)建操作.如表4所示,相對(duì)于原始的Linux系統(tǒng),本方案在響應(yīng)延遲和網(wǎng)絡(luò)吞吐量方面的開銷僅為6%和5%.

      Table 4 Tomcat Performance Overhead表4 Tomcat應(yīng)用效率開銷

      最后使用Linux shell編寫的磁盤加密腳本,該程序?qū)ο到y(tǒng)安全分區(qū)進(jìn)行遍歷,對(duì)分區(qū)所有文件進(jìn)行加密.加密引擎使用openSSL-0.9.8y.將openSSL分別在原始Linux系統(tǒng),以及作為受保護(hù)應(yīng)用在本方案下運(yùn)行,并記錄總加密時(shí)間.Linux腳本通過fork+exec調(diào)用外部程序,程序運(yùn)行中產(chǎn)生了大量進(jìn)程創(chuàng)建事件,此外,文件加密需要頻繁與存儲(chǔ)設(shè)備進(jìn)行交互,大量內(nèi)存映射、文件讀寫操作導(dǎo)致了頻繁的安全世界切換.因此,本程序產(chǎn)生了最壞的性能評(píng)估結(jié)果,相對(duì)于原始Linux系統(tǒng),總加密時(shí)間增加了約12%.

      8.3.3 效率評(píng)估總結(jié)

      盡管LMBench的評(píng)估結(jié)果表明方案對(duì)某些系統(tǒng)調(diào)用產(chǎn)生了一定的性能影響(如表2所示),但方案對(duì)實(shí)際應(yīng)用程序的性能影響遠(yuǎn)低于單個(gè)系統(tǒng)服務(wù),原因在于實(shí)際應(yīng)用會(huì)執(zhí)行更多的自身計(jì)算任務(wù)來平攤這些性能開銷.此外,由于方案需要轉(zhuǎn)入安全世界進(jìn)行內(nèi)核監(jiān)控,世界切換時(shí)間將直接影響系統(tǒng)效率.本文采用內(nèi)核主動(dòng)證明機(jī)制有效減少了安全世界軟件的運(yùn)行時(shí)間,而純粹的世界切換時(shí)間取決于設(shè)備廠商如何實(shí)現(xiàn)TrustZone硬件及系統(tǒng)配置,如CPU緩存、TLB(translation lookaside buffer)緩存配置.這些影響因子不在本文研究范圍之內(nèi).

      9 總 結(jié)

      本文針對(duì)BYOD、移動(dòng)云計(jì)算等兼具強(qiáng)安全性,高開放性需求的新型應(yīng)用場(chǎng)景,提出了1種基于TrustZone的移動(dòng)平臺(tái)敏感應(yīng)用防護(hù)方案.該方案實(shí)現(xiàn)了傳統(tǒng)TrustZone方案不具備的兩大優(yōu)勢(shì).1)將需要保護(hù)的敏感應(yīng)用部署在普通世界,安全世界不再實(shí)現(xiàn)具體應(yīng)用,因此整個(gè)系統(tǒng)可信計(jì)算基不隨敏感應(yīng)用數(shù)量而增大,減少了其可攻擊面和潛在漏洞.2)方案支持通過標(biāo)準(zhǔn)系統(tǒng)調(diào)用接口安全使用內(nèi)核系統(tǒng)服務(wù),既為敏感應(yīng)用提供了必要功能支持又減少了代碼維護(hù)負(fù)擔(dān).最后,方案提出內(nèi)核主動(dòng)證明機(jī)制,有效提高了系統(tǒng)運(yùn)行效率.方案首次解決了TrustZone技術(shù)在安全性、易用性和開放性方面的沖突問題.

      [1] Hexamob. Android rooting method: Motochopeer[EB/OL]. [2017-05-31]. http://www.hexamob.com/how-to-root/motochopper-method

      [2] AndroidMTK. How to root my android device using vroot[EB/OL]. [2017-05-31]. http://www.androidxda.com/download-vroot

      [3] ARM. Building a secure system using TrustZone[EB/OL]. [2017-05-31]. http://www.arm.com

      [4] Marforio C, Karapanos N, Soriente C, et al. Smartphones as practical and secure location veri_cation tokens for payments[C] //Proc of the 22nd Network and Distributed Systems Security Symp (NDSS 2014). Reston, VA: ISOC, 2015

      [5] Zhang Yingjun, Zhao Shijun, Qin Yu, et al. TrustTokenF: A generic security framework for mobile two-factor authentication using TrustZone[C] //Proc of the 14th Int Conf on Trust, Security and Privacy in Computing and Communications. Piscataway, NJ: IEEE, 2015: 41-48

      [6] Zhao Shijun, Zhang Qianying, Qin Yu, et al. Providing root of trust for ARM TrustZone using On-Chip SRAM[C] //Proc of the 4th Int Workshop on Trustworthy Embedded Devices (TrustED 2014). New York: ACM, 2014: 25-36

      [7] Keltner N. Here be dragons: Vulnerabilities in TrustZone[EB/OL]. [2017-05-31]. https://atredispartners.blogspot.com/2014/08/here-be-dragons-vulnerabilities-in.html

      [8] Shen D. Attacking your trusted core, exploiting TrustZone on Android[EB/OL]. [2017-05-31]. http://docplayer.net/34134465-Attacking-your-trusted-core-exploiting-trustzone-on-android.html

      [9] Laginimaineb. Bits, please[EB/OL]. [2017-05-31]. https://bits-please.blogspot.com

      [10] Machiry A, Gustafson E, Spensky C, et al. BOOMERANG: Exploiting the semantic gap in trusted execution environments[C] //Proc of the 24th Network and Distributed Systems Security Symp (NDSS 2017). Reston, VA: ISOC, 2017

      [11] GlobalPlatform. TEE Internal Core API Specification[EB/OL]. [2017-05-31]. https://www.globalplatform.org/specificationsdevice.asp

      [12] Nyman T, Mcgillion B, Asokan N, et al. On making emerging trusted execution environments accessible to developers[C] //Proc of the 8th Int Conf on Trust & Trustworthy Computing. Berlin: Springer, 2015: 58-67

      [13] Santos N, Raj H, Saroiu S, et al. Using arm Trustzone to build a trusted language runtime for mobile applications[C] //Proc of the 19th Int Conf on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2014). New York: ACM, 2014: 67-80

      [14] Kostiainen K, Ekberg J, Asokan N, et al. On-board credentials with open provisioning[C] //Proc of the 2009 Symp on Information, Computer and Communications Security (ASIA CCS 2009). New York: ACM, 2009: 104-115

      [15] Mcgillion B, Dettenborn T, Nyman T, et al. Open-TEE-An open virtual trusted execution environment[C] //Proc of the 14th Int Conf on Trust, Security and Privacy in Computing and Communications. Piscataway, NJ: IEEE, 2015: 400-407

      [16] Azab M, Peng N, Shah J, et al. Hypervision across worlds: Real-time kernel protection from the ARM TrustZone secure world[C] //Proc of the 21st Conf on Computer and Communications Security (CCS 2014). New York: ACM, 2014: 90-102

      [17] Jang J, Kong S, Kim M, et al. SeCReT: Secure channel between Rich execution environment and trusted execution environment[C] //Proc of the 22nd Network and Distributed Systems Security Symp (NDSS 2015). Reston, VA: ISOC, 2015

      [18] Checkoway S, Shacham H. Iago attacks: Why the system call API is a bad untrusted RPC interface[C] //Proc of the 18th Int Conf on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2013). New York: ACM, 2013: 253-264

      [19] Sun He, Sun Kun, Wang Yuewu, et al. TrustICE: Hardware-assisted isolated computing environments on mobile devices[C] //Proc of the 45th Annual IEEE/IFIP Int Conf on Dependable Systems and Networks (DSN 2015). Piscataway, NJ: IEEE, 2015: 367-378

      [20] Chen X, Garfinkel T, Lewis E C, et al. Overshadow: A virtualization-based approach to retrofitting protection in commodity operating systems[C] //Proc of the 13th Int Conf on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2008). New York: ACM, 2008: 2-13

      [21] Hofmann O S, Kim S, Dunn A M, et al. InkTag: Secure applications on an untrusted operating system[C] //Proc of the 18th Int Conf on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2013). New York: ACM, 2013: 265-278

      [22] Yang J, Shin K G. Using hypervisor to provide data secrecy for user applications on a per-page basis[C] //Proc of the 2008 Int Conf on Virtual Execution Environments (VEE 2008). New York: ACM, 2008: 71-80

      [23] Baumann A, Peinado M, Hunt G. Shielding applications from an untrusted cloud with Haven[J]. ACM Transactions on Computer Systems, 2014, 33(3): 1-26

      [24] Zhang Yingjun, Feng Dengguo, Qin Yu, et al. A TrustZone-based trusted code execution with strong security requirements[J]. Journal of Computer Research and Development, 2015, 52(10): 2224-2238 (in Chinese)

      (張英駿, 馮登國, 秦宇, 等. 基于TrustZone的強(qiáng)安全需求環(huán)境下可信代碼執(zhí)行方案[J]. 計(jì)算機(jī)研究與發(fā)展, 2015, 52(10): 2224-2238)

      ATrustZoneBasedApplicationProtectionSchemeinHighlyOpenScenarios

      Zhang Yingjun1,3, Feng Dengguo1,2, Qin Yu1, and Yang Bo1

      1(TrustedComputingandInformationAssuranceLaboratory,InstituteofSoftware,ChineseAcademyofSciences,Beijing100190)2(StateKeyLaboratoryofComputerSciece(InstituteofSoftware,ChineseAcademyofSciences),Beijing100190)3(UniversityofChineseAcademyofSciences,Beijing100190)

      We propose a protection scheme for security-sensitive applications on mobile embedded devices, which is focus on the scenarios with both strong security and high openness requirements, such as “bring your own device”, mobile cloud computing. To meet the security requirements, we leverage the trusted execution environment of ARM TrustZone to provide strong isolation guarantees for applications even in the presence of a malicious operating system. To meet the openness requirements, our scheme has two major advantages compared with previous TrustZone-based solutions. Firstly, it moves concrete sensitive applications from TrustZone secure world to the normal world, so that the trusted computing base keeps small and unchanged regardless of the amount of supported security applications. Secondly, it leverages a light-weight kernel monitor in the secure world to enforce the untrusted operating system to serve these security applications legally, so that they could securely use standard system calls, which could provide critical features for the openness requirements, such as dynamic application deployment. We also propose proactive attestation, a novel technique that greatly improves the system efficiency by enforcing the operating system to contribute to its own verification. We implement the prototype system on real TrustZone devices. The experiment results show that our scheme is practical with acceptable performance overhead.

      TrustZone; trusted execution environment; sensitive application protection; kernel monitor; kernel proactive attestation

      TP309

      ZhangYingjun, born in 1990. PhD candidate. His main research interests include TrustZone based security applications and system protection technology on mobile platform.

      FengDengguo, born in 1965. Professor and PhD supervisor. Senior member of CCF. His main research interests include trusted computing and cryptography.

      QinYu, born in 1979. PhD and senior engineer. His main research interests include information security and trusted computing.

      YangBo, born in 1988. PhD. His main research interests include trusted computing and anonymous credential on mobile platform.

      猜你喜歡
      頁表內(nèi)核進(jìn)程
      萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      更正
      中國糖料(2022年4期)2022-03-15 22:37:37
      作者更正
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      勘 誤
      債券市場(chǎng)對(duì)外開放的進(jìn)程與展望
      中國外匯(2019年20期)2019-11-25 09:54:58
      更正
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      社會(huì)進(jìn)程中的新聞學(xué)探尋
      岳池县| 阿合奇县| 武强县| 宝坻区| 安仁县| 老河口市| 高青县| 阿图什市| 中江县| 营山县| 本溪| 思南县| 平湖市| 伊金霍洛旗| 凯里市| 阳山县| 恩平市| 伊川县| 华容县| 凌海市| 太谷县| 宁晋县| 青阳县| 胶州市| 海宁市| 子洲县| 仙游县| 安阳市| 庐江县| 文昌市| 牡丹江市| 淅川县| 葫芦岛市| 利辛县| 武乡县| 长兴县| 株洲市| 边坝县| 平邑县| 平安县| 香河县|