亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2017-11-07 10:11:26張英駿馮登國
        計算機研究與發(fā)展 2017年10期
        關(guān)鍵詞:進程系統(tǒng)

        張英駿 馮登國 秦 宇 楊 波

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

        2017-06-02;

        2017-07-25

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

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

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

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

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

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

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

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

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

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

        1 相關(guān)工作

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

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

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

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

        2 背景知識

        2.1TrustZone安全技術(shù)

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

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

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

        2.3Linux相關(guān)

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

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

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

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

        4 方案整體概述

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

        4.1設(shè)計思路

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

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

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

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

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

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

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

        方案提供3層安全屬性,為敏感應用進程的整個生命周期提供保護.

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

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

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

        5 基于TrustZone的敏感應用防護方案設(shè)計

        5.1整體架構(gòu)

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

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

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

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

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

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

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

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

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

        5.4MMU隔離保護

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

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

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

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

        5.5敏感應用基本隔離保護

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

        5.5.1 可信上下文切換

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

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

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

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

        5.6敏感應用地址空間布局完整性保護

        基本隔離保護確保了內(nèi)核無法直接對受保護進程內(nèi)存進行訪問或篡改.然而,進程在運行過程中會與內(nèi)核進行交互,如通過系統(tǒng)調(diào)用接口使用系統(tǒng)基礎(chǔ)服務,使得不可信內(nèi)核可以通過篡改系統(tǒng)調(diào)用返回值篡改進程地址空間布局,從而間接影響進程執(zhí)行.本節(jié)列舉2種無需直接讀寫進程內(nèi)存的高級內(nèi)核攻擊,并給出相應防御策略.假設(shè)受保護進程用戶空間有1個內(nèi)存緩沖區(qū),虛擬地址為VA,VB,包含物理頁PA,PB.之后該進程通過mmap系統(tǒng)調(diào)用申請了1個新的內(nèi)存區(qū).正常情況下,2個區(qū)域的虛擬地址、物理地址應互不重疊,如圖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)存,該攻擊并沒有篡改虛擬地址布局,應用層無法察覺,因此比Iago更具隱蔽性.在這2種情況下,進程通過虛擬地址VC對物理頁PC的讀寫都會被重定向到PB,顯然破壞了數(shù)據(jù)完整性并可能導致隱私泄漏.若PB位于進程棧,則可能造成棧上保存的函數(shù)調(diào)用返回值被篡改,形成典型的控制流劫持攻擊.

        5.6.1 防御策略

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

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

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

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

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

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

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

        5.7存儲設(shè)備輸入輸出保護

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        5.10性能增強

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

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

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

        5.11方案總結(jié)

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

        6 安全分析

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

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

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

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

        4) 用戶代碼提權(quán)攻擊.盡管方案對已有內(nèi)核代碼提供運行時完整性保護,攻擊者仍可利用系統(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硬件隔離機制實現(xiàn),安全性遠高于傳統(tǒng)的內(nèi)核層安全工具.另外,與傳統(tǒng)TrustZone安全方案相比,本方案的安全世界組件不包含任何具體的應用和系統(tǒng)服務,交互接口簡單,代碼規(guī)模很小,被攻擊的可能性要小很多,因此具有更高的安全性.

        7 實 現(xiàn)

        在賽靈思Zynq-7000開發(fā)板上實現(xiàn)了原型系統(tǒng).該設(shè)備支持TrustZone安全擴展,配置ARM Cortex-A9雙核處理器.正常世界操作系統(tǒng)內(nèi)核為Linux 2.6.38,安全世界只包含少量系統(tǒ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ū)動中,其底層設(shè)備交互代碼(僅包含簡單了設(shè)備映射內(nèi)存讀寫指令)被移入安全世界.此外,方案使用UART(universal asynchronous receiver/transmitter)串口作為用戶交互設(shè)備,并用PC端鍵盤連接UART作為用戶輸入,而UART輸出將顯示在PC顯示器上.用戶交互相關(guān)的監(jiān)控代碼位于內(nèi)核通用UART驅(qū)動中.

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

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

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

        8 實驗結(jié)果評估

        8.1系統(tǒng)TCB

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

        8.2安全性評估

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

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

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

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

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

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

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

        8.3效率評估

        8.3.1 系統(tǒng)效率

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

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

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

        8.3.2 應用層效率

        本節(jié)評估了方案對實際應用程序運行的效率影響.包括SPEC CPU 2006測試套件、輕量級Tomcat服務器以及自編寫的磁盤加密程序.

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

        Table 3 SPEC CPU Performance Overhead表3 SPEC CPU應用效率開銷

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

        Table 4 Tomcat Performance Overhead表4 Tomcat應用效率開銷

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

        8.3.3 效率評估總結(jié)

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

        9 總 結(jié)

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

        猜你喜歡
        進程系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        債券市場對外開放的進程與展望
        中國外匯(2019年20期)2019-11-25 09:54:58
        半沸制皂系統(tǒng)(下)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        我國高等教育改革進程與反思
        Linux僵死進程的產(chǎn)生與避免
        男女平等進程中出現(xiàn)的新矛盾和新問題
        乱人伦中文无码视频| 一本色道久在线综合色| 中文有码无码人妻在线| 国产熟人av一二三区| 麻豆国产乱人伦精品一区二区| 99久久精品国产一区色| 美腿丝袜诱惑一区二区| 好看的欧美熟妇www在线| 日韩成人免费一级毛片| av有码在线一区二区 | 亚洲精品在线国产精品| 久久久久亚洲av片无码v| 女高中生自慰污免费网站| 日韩中文字幕一区二十| 激情综合五月| 欧美疯狂做受xxxx高潮小说| 久久亚洲午夜牛牛影视| 久久99人妖视频国产| 国产乱人伦av在线a麻豆| 人妻人人澡人人添人人爽人人玩 | 在线观看免费的黄片小视频| 人妻熟妇乱又伦精品视频| 无码人妻丰满熟妇区毛片| 精品国产一区二区三区香蕉| 日本成人精品一区二区三区| 日韩av午夜在线观看| 国产成人无码区免费网站| 偷拍自拍一区二区三区| 日韩不卡的av二三四区| 久久国产劲暴∨内射| 98国产精品永久在线观看| av黄色大片久久免费| 亚洲av一二三四区四色婷婷| 99爱这里只有精品| 国产精品农村妇女一区二区三区| 亚洲精品在线国产精品| 免费无码毛片一区二区三区a片| 99热在线播放精品6| 中美日韩在线一区黄色大片| 中国丰满熟妇xxxx性| 国产妇女乱一性一交|