李 閩,張倩穎,2,3,王國輝,2,施智平,4,關 永,5
(1.首都師范大學 信息工程學院,北京 100048;2.高可靠嵌入式系統北京市工程研究中心,北京 100048;3.中國科學院計算技術研究所計算機體系結構國家重點實驗室,北京 100190;4.電子系統可靠性技術北京市重點實驗室,北京 100048;5.北京成像理論與技術高精尖創新中心,北京 100048)
隨著移動設備和信息技術的快速發展,移動設備中存儲了越來越多的用戶敏感信息,例如個人密鑰、面部信息和指紋信息,這些信息保存在磁盤或閃存等可持久存儲設備中,防止設備重啟時丟失敏感信息,從而進行身份驗證。為保護這些敏感數據,ARM 公司于2006 年提出TrustZone[1]安全解決方案。TrustZone 將CPU 劃分為安全世界和普通世界,其中安全世界提供了可信執行環境(Trusted Execution Environment,TEE)。TEE 是一個隔離的執行環境,它為運行在其中的可信應用(Trusted Application,TA)提供了安全性保證,保護可信應用免受來自普通世界的軟件攻擊。目前,高通、華為、三星等很多處理器廠商都在其產品中支持TrustZone 技術,提供可信執行環境。雖然TEE 已經得到商業化的應用,但是只能抵御軟件攻擊,不能抵御板級物理攻擊,例如對Xbox[2]和PlayStation 3[3]的總線竊聽攻擊[4],對Galaxy Nexus 智能手機的冷啟動攻擊[5]等。板級物理攻擊通過竊聽CPU 和DRAM 之間的地址總線或篡改DRAM 的內容進行攻擊,主要包括冷啟動攻擊、總線攻擊和DMA 攻擊。板級物理攻擊所付出的代價不大,并且隨著很多成熟的攻擊工具被開源[6-7],攻擊者可以很容易使用這些工具,例如:HALDERMAN 等[8]提出冷啟動攻擊,該攻擊可以繞過TrustZone 機制并從DRAM 中獲得密鑰,從而解密出用戶的敏感數據;MüLLER 等[5]提出Frost 工具,該工具能夠利用冷啟動攻擊從手機中獲取最近的電子郵件、照片和訪問過的網站信息。
為抵御板級物理攻擊,學術界和工業界提出許多解決方案,主要包括保護加密算法的抗板級物理攻擊方案和操作系統層的抗板級物理攻擊方案2 類,其中:第1 類方案會占用CPU 或GPU 的通用寄存器或專用寄存器,影響系統部分功能的運行;第2 類方案僅保護了程序中的部分敏感數據,無法滿足保護TEE 系統的安全性需求。片上內存(On-Chip Memory,OCM)具有不會暴露任何物理引腳或物理線的特性,保證了信息不會從物理引腳或者物理線上泄露,使運行在其中的任務具有抵抗板級物理攻擊的能力。從保護文件系統的安全性出發,本文將OCM 作為TEE OS 和TA 的工作內存。基于ARM TrustZone 技術構建持久存儲架構提供內存保護機制和持久存儲保護服務,前者用于將持久存儲保護服務運行在OCM 中,保護該服務的機密性和完整性,后者對文件系統中敏感數據進行加密保護和完整性保護,從而使文件系統抵御板級物理攻擊。該架構以軟件方式實現,無需占用專用硬件,可部署在沒有板級物理攻擊保護的現有系統上,以提高文件系統持久存儲的物理安全性。在基于ARM TrustZone 的物理開發板上實現了持久存儲架構的原型系統,普通世界運行Linux,安全世界運行OPTEE OS,并使用基準測試工具xtest[9]對系統性能進行評估。
TrustZone 通過硬件隔離技術提供一個TEE,TEE 可以有效地抵御軟件攻擊。TrustZone 利用硬件虛擬化技術,將片上系統(System on Chip,SoC)的硬件和軟件資源劃分為安全世界和普通世界。兩個世界通過監控器模式進行切換,保證普通世界無法訪問安全世界的資源,因此即使普通世界被攻破時也不會泄露安全世界的敏感數據。ARM TrustZone 架構如圖1 所示。雖然TrustZone 可以對內存進行隔離保護,但并不對內存進行加密,這使存儲在TrustZone 安全世界中的敏感數據面臨通過板級物理攻擊被竊取的威脅。

圖1 ARM TrustZone 架構Fig.1 Architecture of ARM TrustZone
板級物理攻擊通過竊聽CPU 和DRAM 之間的地址總線或篡改DRAM 的內存進行攻擊。本節將對冷啟動攻擊、總線攻擊和DMA 攻擊這3 種板級物理攻擊進行介紹。
1.2.1 冷啟動攻擊
冷啟動攻擊利用DRAM 的剩磁特性進行攻擊。剩磁特性是DRAM 的基本物理特性,無法消除,指設備在斷電后存儲在DRAM 中的信息不會立即消失,而會保留一段時間,并且在低溫下大幅延長保留時間。
冷啟動攻擊有2 種實現方式:1)首先將事先準備好的U 盤等存儲設備插入到目標計算機中,然后通過切斷電源或重啟目標計算機以啟動U 盤中定制的操作系統,該系統能將DRAM 中的內容保存到U盤上的指定分區,從而得到存儲在DRAM 中的數據;2)首先將正在運行的目標計算機的DRAM 進行冷卻,然后將DRAM 迅速轉移到事先準備好的攻擊設備上,最后利用設備中的攻擊程序讀取DRAM 中的密鑰等敏感信息。目前,已經有很多冷啟動攻擊成功的案例[10],對用戶的敏感信息造成了嚴重威脅。
1.2.2 總線攻擊
總線攻擊一般分為總線竊聽攻擊和總線篡改攻擊。攻擊者通過總線分析工具連接到內存總線上,等待CPU 通過總線請求敏感數據,進而竊聽或修改總線上傳輸的數據。目前,已經有很多總線竊聽攻擊成功的案例,例如MIT 研究團隊對Xbox 的總線竊聽攻擊和IBM 研究院對U 盤等存儲設備的USB 總線竊聽攻擊[11]。
1.2.3 DMA 攻擊
DMA 攻擊是一種利用DMA 接口將支持DMA的外設直接接入高速擴展端口,而無需CPU 或操作系統的干涉即可直接訪問任意物理內存的攻擊方式。DMA 攻擊可以繞過操作系統的保護,通過對具有DMA 功能的外設進行編程,從而利用DMA 控制器讀取存儲在內存中的敏感數據。DMA 攻擊可以通過便攜式攝像機視頻卡、網絡接口卡等發起。
片上內存由高速SRAM 構成,通過內部高速總線與CPU 連接,使CPU 訪問OCM 的速度要快于DRAM。OCM 與Cache 不同點在于其通常由軟件控制并且設計比Cache 簡單得多,因此更加靈活、功耗更低。
在設備引導完成后,操作系統和應用程序可以根據需要使用OCM,且OCM 不會對芯片外部暴露任何物理引腳或物理線的特性,使其可以抵御板級物理攻擊。因此,本文使用OCM 作為TEE OS 和TA的工作內存以提高TEE 系統的物理安全性。
為抵御板級物理攻擊和保護文件系統的敏感數據,近年來國內外學者進行了一系列相關研究,主要包括保護加密算法的抗板級物理攻擊方案、操作系統層的抗板級物理攻擊方案以及文件系統保護方案。
AESSE[12]是由德國亞琛工業大學提出的一種通過在微處理器上實現AES 來抵御冷啟動攻擊的方案。AESSE 利用處理器中SSE(Streaming SIMD Extensions)提供的寄存器來實現AES,使得密鑰和其中間狀態都不會離開處理器,保護了加密和解密的過程,但是與內核標準的AES 加密和解密相比,性能約下降了6 倍。
TRESOR[13]是由德國 埃爾朗根-紐倫堡大學提出的一種針對X86 架構抵御冷啟動攻擊和DMA 攻擊的方案。TRESOR 在微處理器上實現AES 加密算法和密鑰管理,使AES 加密算法完全運行在微處理器上,并利用英特爾的AES-NI 指令集,將AES 加密算法的所有中間狀態和密鑰存儲在調試寄存器中,從而使攻擊者無法在RAM 中獲得任何密鑰信息。
Loop-Amnesia[14]是由美國伊利諾伊大學提出的一種使磁盤加密能夠抵御冷啟動攻擊的方案。Loop-Amnesia 將磁盤加密使用的密鑰存儲在X86 平臺中的MSR(Model-Specific Register)性能計數器中,保護密鑰不被攻擊者竊取。該方案適用于基于操作系統的磁盤加密系統,并且項目已經開源。
PRIM[15]是由德國波鴻魯爾大學提出的一個保護RSA 私鑰的抗冷啟動攻擊方案。PRIM 使用對稱加密將RSA 私鑰加密存儲在RAM 中,使攻擊者無法獲取明文的RSA 私鑰,該對稱密鑰則存儲在Intel的多媒體寄存器中。實驗結果表明,PRIME 的RSA運行速度比傳統的RSA 慢10 倍。
PixelVault[16]是由希臘計算機科學研究所提出的一個保護加密密鑰的方案,用于保護AES 和RSA算法的物理安全性。PixelVault 將加密密鑰存儲在GPU 寄存器中,從而保護密鑰的機密性。密碼算法運行在GPU 的片上內存中且在運行時不會被搶占,以防止上下文切換時導致的密鑰泄露問題。
Cryptkeeper[17]是由美國加州大學洛杉磯分校提出的一種減少敏感數據泄露的方案。Cryptkeeper 將RAM 劃分為一個較小的明文段(Clear)和一個較大的密文段(Crypt),根據程序運行的需要動態將這兩個段的數據進行交換,保證數據在加密段的安全性。Cryptkeeper 不能保護全部數據的安全性,在RAM 中總是存在一部分明文數據,并且由于頻繁的產生磁盤交換,每頁讀取的時間開銷達到了300 μs。
Sentry[18]是由加拿大英屬哥倫比亞大學提出的一種保護手機和平板電腦免受冷啟動攻擊、總線竊聽攻擊、DMA 攻擊的方案。在設備鎖定狀態下,Sentry 將后臺運行的任務加載到SoC 的iRAM 中運行,并將其他敏感應用程序的內存頁加密。在設備解鎖狀態下,根據程序運行的需要對頁面進行解密。實驗結果表明,Sentry 在CPU 密集型任務測試中表現出了良好的性能。
RamCrypt[19]是由德國 埃爾朗根-紐倫堡大學提出的一種抗板級物理攻擊的方案。RamCrypt 作為一個Linux 內核補丁透明地加密了用戶模式進程的地址空間,程序無需重寫或者重新編譯。RamCrypt通過存儲在CPU 寄存器中的密鑰,對RAM 中的敏感數據進行加密存儲,僅在敏感數據使用時對其解密。sysbench 基準測試套件測試顯示進程效率降低了25%。
MemVault[20]是由美國喬治亞大學提出的一種抗板級物理攻擊方案。MemVault 將敏感信息標記為污染狀態,并追蹤標記信息的傳播,在DRAM 中加密標記信息,在片上內存中進行解密。MemVault減少了敏感信息在移動設備上的泄露。
BitLocker[21]是微軟公司提出的一種磁盤加密功能,用于保護存儲在文件中的敏感信息。在系統啟動期間,BitLocker 作為引導加載程序的組件,以確保安全地進行系統引導,并在引導完成后作為操作系統內核的驅動程序,以保護敏感信息的機密性和完整性。BitLocker 通過與可信平臺模塊(Trusted Platform Module,TPM)一起使用,可以在受保護的文件解密前對其完整性進行驗證,驗證不成功將禁止對其進行訪問。BitLocker 在文件加密和解密時使用的密鑰由TPM 進行管理,TPM 保證只有當平臺可信時才會將密鑰交給BitLocker 使用。BitLocker 以透明的方式運行,可以配置在微軟的Windows Vista及以上版本的操作系統中。
dm-crypt[22]是Linux 內核2.4 版本開始提供的一個磁盤加密模塊,可以運行在多種存儲塊設備中,為用戶提供了創建塊設備的通用方法。dm-crypt 在用戶和塊設備之間提供一個加密函數,用戶可以指定dm-crypt使用的密碼算法、加密模式以及密鑰,進而在Linux的/dev目錄下創建塊設備。dm-crypt 可以透明地加密文件數據,保護了文件的安全性。dm-crypt作為Linux 內核中內置的基礎系統,已經包含在大多數Linux 的發行版本中。
針對國內外相關研究中抗板級物理攻擊方案和文件系統保護方案存在的不足,本文提出抗板級物理攻擊的持久存儲方法。該方法在TEE 內核層實現內存保護機制,利用OCM 可以抵御板級物理攻擊的特性,將OCM 作為TEE OS 和TA 的工作內存,DRAM 作為其后備存儲保存加密的頁面,從而提高了TEE 系統的物理安全性;在內存保護機制的基礎上實現了持久存儲保護服務,保護了文件系統中敏感數據的機密性和完整性,從而提高了文件系統的安全性。
保護加密算法的抗板級物理攻擊方案需要占用CPU 或GPU 的通用寄存器或專用寄存器,影響系統的正常運行。目前,大多數平臺都在片上系統中配置了OCM 且在設備啟動后,OCM 可以由用戶根據需要進行使用,因此將TEE OS 和TA 運行在OCM 中不會對系統運行產生影響,不需要一直占用專用寄存器資源。本文方案以軟件方式實現,在不影響系統其他功能的基礎上,可以部署在沒有板級物理攻擊保護的現有系統上,提高了系統的物理安全性。
操作系統層的抗板級物理攻擊方案只保護了程序中的一部分敏感數據,仍有一部分敏感數據會被攻擊者竊取。本文方案通過內存保護機制保護存儲在DRAM 中TEE OS 和TA 頁面的機密性和完整性,使明文頁僅出現在OCM 中,從而保證TEE 系統可以抵御板級物理攻擊,提高了TEE 系統的物理安全性。
文件系統保護方案雖然能夠提高文件系統持久存儲的安全性,但由于文件加密使用的密鑰存儲在DRAM中,攻擊者可以通過板級物理攻擊獲取密鑰信息,進而解密出文件系統中的敏感數據,因此文件系統保護方案無法抵御板級物理攻擊。為了保護文件系統的安全性,本文在內存保護機制的基礎上實現了持久存儲保護服務。持久存儲保護服務運行在安全世界的OCM中,使其可以抵御板級物理攻擊。該服務對文件系統的敏感數據提供機密性和完整性保護,確保了文件系統中敏感數據持久存儲的物理安全性。
本文提出抗板級物理攻擊的持久存儲方法,將OCM 作為TEE OS 和TA 的工作內存,使它們在OCM 中運行,DRAM 作為其后備存儲,保存加密的敏感代碼和數據,保證TEE OS 和TA 免受板級物理攻擊,然后在此基礎上實現持久存儲保護服務對文件系統中敏感數據進行加密存儲與完整性校驗,以保護文件系統的機密性和完整性。
抗板級物理攻擊的持久存儲架構如圖2 所示。為了使文件系統能夠抵抗板級物理攻擊,該架構基于TrustZone 技術,在TEE OS 內核層中增加了內存保護機制并在TEE 用戶層實現了持久存儲保護服務,其中,內存保護機制對TEE OS 和TA 提供內存保護,持久存儲保護服務對文件系統中敏感信息提供機密性與完整性保護。

圖2 抗板級物理攻擊的持久存儲架構Fig.2 Architecture of persistent storage resistant to boardlevel physical attacks
抗板級物理攻擊的持久存儲架構能夠抵御軟件攻擊和板級物理攻擊。對于軟件攻擊,TrustZone 通過硬件隔離機制,將DRAM 劃分為普通世界和安全世界,因為普通世界無法對安全世界的資源進行訪問,所以惡意的操作系統和惡意的普通應用無法對TEE OS 造成破壞。對于板級物理攻擊,內存保護機制保證了TEE OS和TA 頁面的機密性和完整性,將OCM 作為TEE OS和TA 的工作內存,當TEE OS 或TA 加載到OCM 中運行時,對其頁面進行解密并檢查其數據頁的完整性,當TEE OS 和TA 置換到DRAM 中時,對其頁面進行加密并對數據頁進行完整性保護。在OCM 中運行的持久存儲保護服務實現了對文件系統中敏感數據的加密存儲和完整性校驗:當用戶對文件系統中敏感數據寫入時,對敏感數據加密,保護其機密性;當用戶對文件系統中敏感數據讀取之前,會驗證敏感數據的完整性,只有驗證成功后,才對敏感數據進行解密,從而防止敏感數據被篡改。
為保護TEE OS和TA不會被攻擊者所竊取或篡改,需要確保后備存儲上數據的機密性和完整性。抗板級物理攻擊的持久存儲架構在可信操作系統中實現內存保護機制保證TEE OS 和TA 的機密性和完整性,內存保護機制工作流程如圖3 所示,具體步驟如下:

圖3 內存保護機制工作流程Fig.3 Workflow of memory protection mechanism
1)攔截缺頁中斷。當CPU 訪問的數據或代碼不在OCM 中時,會產生一個缺頁異常,該異常會被內存保護機制攔截并進行處理。
2)內存機密性/完整性校驗。內存保護機制會在OCM 中找到一個空閑頁并將DRAM 中所需的頁面加載進去,在加載的過程中使用SHA-256 算法驗證代碼和數據的完整性。在驗證成功后,使用AES算法對加載的頁面進行解密。
3)頁面重映射。內存保護機制更新頁表項并將該頁重新映射到分配的OCM 空閑頁中。
4)CPU 重新訪問。CPU 從OCM 中重新訪問該代碼段或數據。
5)機密性/完整性保護。當OCM 沒有空閑頁時,使用最近最少使用頁面置換算法將OCM 中的頁與DRAM 進行置換。當置換的頁為數據頁時,內存保護機制會將該頁加密并存儲到DRAM 中,并將其哈希值存儲到OCM 中以備下次驗證。
為保護用戶敏感數據的機密性和完整性,在抗板級物理攻擊的持久存儲架構中設計一個持久存儲保護服務,對普通世界的文件系統中敏感數據提供機密性和完整性保障。持久存儲保護服務架構如圖4 所示。

圖4 持久存儲保護服務架構Fig.4 Architecture of persistent storage protection service
當持久存儲保護服務需要對文件系統中敏感數據進行寫入/讀取時,首先會對數據進行加密/解密,然后通過RPC 調用,將加密/解密的數據發送給TEE Supplicant,最 后TEE Supplicant 將加密/解密的數 據交由普通世界的文件系統進行寫入和讀取操作。
普通世界的文件系統使用二叉樹的結構對加密文件進行存儲。這些加密的文件以編號進行區分,通過一個數據庫文件進行管理。數據庫文件中保存了加密文件對應的哈希值,每次對加密文件進行操作時,會先計算每個文件的哈希值,并與保存的哈希值進行比較驗證文件的完整性。
密鑰管理器是持久存儲保護服務的一個組件,負責提供敏感數據的加密和解密以及密鑰的生成。對于每一個加密的文件都有唯一的文件加密密鑰(File Encryption Key,FEK)用于加密敏感數據。密鑰生成流程如圖5 所示。首先通過密鑰派生函數(Key Derivation Function,KDF)使用設備密鑰(Device Key,DK)和持久存儲保護服務的哈希值k派生出安全存儲密鑰(Secure Storage Key,SSK),然后使用隨機數派生器生成的隨機數random 與SSK派生出每個文件的FEK,最后通過AES-128 加密算法將SSK 作為密鑰加密FEK 生成En-FEK 并保存在加密文件頭部。

圖5 密鑰生成流程Fig.5 Procedure of key generation
當用戶寫入敏感數據時,首先使用SHA-256 算法計算持久存儲保護服務的哈希值k 并獲取DK,然后調用KDF(DK,k)派生出SSK,之后使用隨機數派生器生成的random 與SSK 調用KDF(SSK,random)派生出FEK,FEK 用于加密敏感數據,保證敏感數據的機密性,最后使用SSK 作為AES-128 的加密密鑰加密FEK 生成En-FEK。敏感數據使用FEK 加密后發送給普通世界的文件系統進行持久存儲,寫入完成后計算加密文件的哈希值kv,將kv 和En-FEK 保存到數據庫文件中,分別用于驗證加密文件的完整性和解密。
當用戶讀取敏感數據時,驗證加密文件的哈希值是否在數據庫文件中存在,驗證失敗說明該文件無效或文件內容已經被攻擊者篡改,結束本次讀取;在驗證成功之后,首先密鑰管理器調用KDF 算法使用DK 和重新計算的持久存儲保護服務哈希值k 派生出SSK,然后使用SSK 將獲取到的En-FEK 通過AES-128 進行解密得到該加密文件的FEK,最后使用FEK 將密文數據解密。解密失敗說明FEK 派生失敗,持久存儲保護服務的哈希值k 已經發生變化,即持久存儲保護服務已經被篡改,獲取不到明文數據;解密成功則將明文數據發送給用戶。
本文原型系統選用開源的OP-TEE 2.6.0 作為安全世界的操作系統,選用Linux 的imx_4.1.15_2.0.0_ga 版本作為普通世界的操作系統。物理硬件平臺選用支持ARM TrustZone 的NXP BD-SL-i.MX6 開發板,在該開發板上實現了抗板級物理攻擊的持久存儲架構。
由于OP-TEE OS 和TA 需要在運行時加載到OCM中運行以抵抗板級物理攻擊,因此需要將OCM 分配給安全世界,用于運行OP-TEE OS 和TA。DRAM 一部分分配給安全世界,作為OCM 的后備存儲,保存TA 的加密頁面;另一部分分配給普通世界,用于運行Linux和普通應用。OP-TEE OS 和TA 運行在0x00900000-0x0093FFFF,后備存儲地址為0x4F000000-0x50000000,Linux 運行在0x12000000-0x4EFFFFFF。
為使OP-TEE 能夠實現內存保護機制,以在OCM 不足時與DRAM 進行頁面置換,將運行時代碼和數據加載到OCM 中。本文在OP-TEE OS 的內核層中構建一個物理頁面池,它映射不同的虛擬地址。當物理頁面池不足時,使用最近最少使用頁面置換算法選擇最舊的物理頁面保存到后備存儲中。在保存的過程中使用加密算法AES-128 保護置換出的頁面數據段和代碼段的機密性,并使用SHA-256 哈希算法保護代碼段的完整性。
為保護文件系統的機密性和完整性,原型系統實現了持久存儲保護服務:
1)利用SHA-256 哈希算法計算持久存儲保護服務的哈希值;基于散列消息認證碼(Hash-based Message Authentication Code,HMAC)的密鑰派生函數,先后派生出SSK 和FEK;利用AES-128 加密算法以SSK 作為對稱密鑰加密FEK 生成En-FEK。
2)利用哈希算法SHA-256,驗證持久存儲文件和持久存儲保護服務的完整性;利用AES-128 加密算法加密/解密明文/密文數據,從而保證敏感數據的機密性。
OCM 大小與持久存儲保護操作是影響抗板級物理攻擊的持久存儲架構性能的關鍵因素,因此,本文將對這2 個關鍵因素進行測試,評估本文原型系統產生的時間開銷。
本文測試在NXP BD-SL-i.MX6 開發板上進行,該板有4 個ARM Cortex-A9 處理器核心,1 GB DDR3L,256 KB OCM,主頻為1 GHz,支持ARM TrustZone。
本文評估了內存保護機制對原始OP-TEE 系統的性能影響,利用基礎測試工具xtest 對原始OP-TEE系統和原型系統的SHA1 哈希算法進行測試。為保證測試的可靠性,分別對原始OP-TEE 系統和原型系統進行30 次回歸測試。
如圖6 所示,原始OP-TEE 系統執行SHA1 哈希算法的最大時間為134.284 μs,30 次實驗平均時間為132.543 μs,而原型系統執行SHA1 哈希算法的最大時間為186.624 μs,30 次實驗平均時間為184.172 μs。原型系統的性能開銷約為原始OP-TEE 系統性能的72%,這部分開銷是由于內存保護機制在保護可信應用時,片外內存需要與片上內存進行頁面置換,以將可信應用加載到安全的片上內存中運行,從而導致頁面置換產生了額外的時間開銷,但是該時間開銷對于用戶而言是在可接受范圍之內的。

圖6 SHA1 哈希算法執行時間開銷Fig.6 SHA1 hash algorithm execution time overhead
通過上述分析得知,原型系統中內存保護機制的時間開銷是在頁面置換時產生的,因此OCM 的大小是影響性能的主要因素。由于可用的OCM 非常有限,并且當空閑的OCM 地址空間不足以加載可信任務時,會產生過多的頁面置換,因此本文對OCM的大小進行調整,從256 KB 到352 KB,并測試不同OCM 大小通過持久存儲保護服務對1 KB 數據進行寫入和讀取所需的時間。每種情況進行30 次測試取其平均值。由于實驗所用開發板的OCM 最大為256 KB,為了測試OCM 大小對性能的影響,OCM大于256 KB 的實驗均為仿真實驗,例如OCM 為288 KB、320 KB、352 KB。如圖7 所示,使用本文方案對文件系統進行保護時,在OCM 為256 KB 的情況下,原型系統的性能比原始OP-TEE 系統降低了2 倍,這是由于調用持久存儲保護服務時會進行多次的頁面置換,以將該服務加載到OCM 中運行。隨著OCM 地址空間的增大,工作內存也隨之增大,時間開銷呈線性減少。

圖7 不同OCM 大小對寫入和讀取1 KB 敏感數據的時間開銷Fig.7 Time overhead of writing and reading 1 KB sensitive data with different OCM sizes
為探究持久存儲保護的不同操作對系統性能的影響,本節對持久存儲保護服務的寫入、讀取和刪除操作時間進行測試,分別針對兩種不同大小的數據(100 KB 和1 MB)進行實驗。測試同樣進行30 次并取平均值。如圖8 所示,寫入100 KB 和1 MB 數據的時間分別為5.947 s 和50.913 s,讀取100 KB 和1 MB 數據的時間分別為0.918 s 和3.395 s,刪除100 KB 和1 MB 數據的時間分別為0.750 s 和0.736 s,可以看出對同樣數據量的寫入、讀取和刪除操作而言,寫入操作的時間是最長的,即寫入操作是持久存儲保護服務產生時間開銷的主要因素。從圖8 中還可以看出,寫入操作和讀取操作都隨著數據量的增加呈線性增長,而刪除操作是最快的,并且與數據量的大小沒有關系。由于用戶敏感數據通常是密鑰或個人信息,這類數據一般比較小,因此持久存儲保護服務開銷對用戶而言是在可接受范圍之內的,并且可以通過優化密碼算法對大文件的保護性能進行改善。

圖8 持久存儲保護操作時間開銷Fig.8 Time overhead of persistent storage protect operation
本文提出抗板級物理攻擊的持久存儲方案,對于其抗板級物理攻擊的安全性分析具體如下:
1)冷啟動攻擊。本文利用片上內存作為TEE OS 和TA 的工作內存抵御冷啟動攻擊。對于第一種冷啟動攻擊,需要對目標設備進行重啟才能進行后續的攻擊,研究表明設備重啟后OCM 中的數據會立即被BootROM 清除[23],因此攻擊者在使用第一種冷啟動攻擊對本文方案進行攻擊時無法獲得片上內存中的敏感數據。對于第二種冷啟動攻擊,攻擊者會將目標設備的DRAM 冷卻后轉移到攻擊設備中,從而讀取DRAM 中的敏感數據,本文方案利用內存保護機制對DRAM 中的數據進行加密保護,即使攻擊者將DRAM 冷卻后轉移到攻擊設備中進行讀取,也只能獲得加密后的密文信息,使攻擊失敗。因此,本文方案可以抵御冷啟動攻擊。
2)總線攻擊。本文使用OCM 作為工作內存保存頁面的明文形式。由于OCM 的地址空間有限,因此需要將OCM 中運行完畢的頁面切換到DRAM進行保存。數據在總線上進行傳輸前,本文方案的內存保護機制對數據加密以保護其機密性,因此攻擊者只能竊聽到加密數據,從而抵御總線竊聽攻擊。在頁面從DRAM 加載到OCM 后,內存保護機制對頁面解密并驗證頁面的完整性,如果驗證失敗,說明頁面已經被攻擊者篡改,則結束本次加載,從而抵御總線篡改攻擊。因此,本文方案可以抵御總線攻擊。
3)DMA 攻擊。本文方案建立在ARM TrustZone技術的基礎上,為了防止DMA 攻擊竊取片上內存的敏感信息,利用TrustZone 的硬件隔離機制,將普通世界的惡意DMA外設與分配給安全世界的OCM進行隔離,使攻擊者無法通過惡意DMA 外設訪問OCM 中的敏感數據,從而使DMA 攻擊失敗。因此,本文方案可以抵御DMA 攻擊。
本文提出抗板級物理攻擊的持久存儲保護方法,使文件系統的持久存儲可以抵御板級物理攻擊。該方法將OCM 作為TEE OS 和TA 的工作內存,并保護存儲在DRAM 中TEE OS 和TA 的機密性和完整性,使TEE 系統可以抵御板級物理攻擊,在此基礎上實現持久存儲保護服務,為文件系統中敏感數據提供機密性和完整性保護,提高了文件系統持久存儲的物理安全性。該方法以軟件的方式實現,無需對硬件進行額外的修改,可以很方便地部署在沒有板級物理攻擊保護的現有系統上。實驗結果表明,本文方法的時間開銷主要來自OCM 與DRAM 的頁面置換和對持久存儲文件的寫入和讀取操作,在用戶可接受范圍之內。由于OCM 大小對整個架構性能具有較大的影響,因此下一步的研究重點是僅將TA的關鍵頁面加載到OCM 中運行,其余部分在DRAM中運行,從而增大工作內存空間,提升系統性能。