999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

抗電路板級物理攻擊的操作系統防御技術研究?

2020-01-02 03:45:34張倩穎趙世軍
軟件學報 2020年10期

張倩穎,趙世軍

1(首都師范大學 信息工程學院,北京 100048)

2(中國科學院 軟件研究所,北京 100190)

3(華為技術有限公司,北京 100195)

4(計算機體系結構國家重點實驗室(中國科學院 計算技術研究所),北京 100190)

5(高可靠嵌入式系統北京市工程研究中心(首都師范大學),北京 100048)

隨著信息技術的發展,移動互聯網、云計算、工業4.0 等應用場景不斷出現,以實現消費者、企業以及工業等領域的信息化目標.與此同時,越來越多的安全敏感業務也遷移到智能終端和服務器平臺等各種計算設備上:智能終端等個人終端設備提供身份認證、電子錢包、企業辦公等安全敏感功能;企業數據中心和智能工廠等服務器平臺存儲并處理企業數據以及工業數據,這些數據涉及企業的核心機密以及工廠的隱私信息,一旦泄露后果極為嚴重.

計算設備中信息價值的提高吸引了越來越多的攻擊者甚至黑色產業者的注意,并開始設計各種先進的攻擊方法.除了傳統的軟件攻擊,最新出現了一種低成本的物理攻擊:電路板級物理攻擊(以下簡稱為板級物理攻擊).這類攻擊典型的案例包括冷啟動攻擊[1-5]、總線竊聽攻擊[6-10]和DMA 攻擊[11-14].板級物理攻擊與傳統的物理攻擊相比(譬如侵入式攻擊[15]和半侵入式攻擊[16]),所需攻擊工具成本低,攻擊流程簡單,具有成本低、易復制、可流程化等特點,容易被攻擊者利用形成竊取個人機密信息的黑色產業,已經成為目前計算機系統嚴重的安全威脅之一.

冷啟動攻擊等板級物理攻擊出現之后,處理器體系結構領域的研究人員提出通過保護片外RAM 來抵抗該攻擊的方法,其主要思路是在處理器芯片與片外RAM 之間的傳輸路徑上部署硬件加密和完整性保護引擎[17-39]來保護片外RAM 的機密性和完整性.這種基于硬件的方法將片外RAM 的安全性規約為處理器芯片的安全性,從而徹底杜絕只能實施在處理器芯片外部的硬件組件的板級物理攻擊.加拿大滑鐵盧大學的Elbaz 等人和美國達特茅斯學院的Henson 等人分別就當前學術界硬件方式的內存完整性保護方案[40]和內存加密方案[41]進行了調研,總結了各種方案的優缺點以及所能達到的安全保護能力.學術界的先進方法也促進了產業界的技術發展,以 XOM[17]和 AEGIS[18]為代表的學術界技術思路被產業界所采納,形成了 Intel SGX(software guard extensions)[42,43]和AMD SME(secure memory encryption)[44]等產業界內存保護方案.

但是實際上,只有部分Intel 和AMD 的服務器處理器配備了SGX 和SME 等內存保護機制,智能終端、絕大多數個人電腦以及部分服務器都不具備抵抗板級物理攻擊的能力.而板級物理攻擊是這些設備所部署的應用場景的一個嚴重威脅,因此這些設備同樣需要具備抗板級物理攻擊的安全能力.針對該問題,學術界提出了基于軟件方式的抗板級物理攻擊的操作系統防御技術,這類技術的思路是在操作系統等系統軟件上擴展安全增強機制,將這些安全機制運行在設備上通用的安全存儲資源中并提供對片外RAM 的安全保護.中科院信工所的林璟鏘等人調研了利用緩存和寄存器這兩類通用安全存儲資源構建的內存保護方案[45],分析了各種方案的優點和局限性以指導硬件輔助安全性方面的研究.軟件方式的防護技術無需修改處理器硬件就能為安全關鍵程序、通用應用程序乃至整個系統提供較強的物理防護能力,對已經出廠但沒有配備硬件內存保護引擎的設備來說具有重要的實際意義,因此該方法自板級物理攻擊出現以后就一直受到系統安全領域的重視,是近10 年來系統安全的一個熱點研究課題.

本文首先介紹板級物理攻擊的基本原理、威脅模型和實際案例,然后描述基于軟件方式的抗板級物理攻擊方法的相關技術,之后按照保護范圍分析現有主流方案,對各種方案的優缺點、安全能力、技術局限等進行全方面的分析總結,其后討論該類技術的優勢與不足,并為相關技術人員部署該類技術提供參考建議,最后對該研究方向的發展趨勢進行分析展望.

1 物理攻擊概述

根據攻擊層次的不同,物理攻擊分為芯片級物理攻擊和電路板級物理攻擊[46]兩類.芯片級物理攻擊的目標是位于芯片內部的密鑰等機密信息,實施該攻擊需要電子顯微鏡工作臺、聚焦離子束工作臺和激光切割系統等企業級實驗環境,攻擊成本非常高.同時該類攻擊對攻擊人員的專業知識的廣度和深度都有很高的要求,一般要求攻擊人員掌握高級芯片架構、探針技術、聚焦離子束操作等多個領域的專業知識.此外,每次攻擊只能針對一塊芯片,無法一次性對批量的芯片造成威脅,因此對于價值一般的設備來說攻擊意義不大.

板級物理攻擊的主要目標是設備片外RAM 中的數據和代碼.攻擊者借助示波器、邏輯分析儀、探針等簡易工具就能通過電路板上片外RAM 與外部的連接通道(譬如CPU 芯片與片外RAM 之間的總線、片外RAM的接口、外設DMA 接口等等)實施對內存數據的竊聽、篡改和重放攻擊.板級物理攻擊的低成本、易流程化等特點導致其極容易被攻擊者利用形成竊取個人和企業機密信息的黑色產業,是當前智能終端、個人電腦和服務器等設備面臨的一個嚴重安全威脅.國際標準組織GlobalPlatform 在智能終端可信執行環境保護輪廓規范[47]中明確聲明板級物理攻擊是智能終端所面臨的除軟件攻擊之外的最大安全威脅.

1.1 板級物理攻擊威脅模型

在板級物理攻擊敵手能力下,只有CPU 芯片能夠抵抗板級物理攻擊,片外RAM 和系統總線等其他組件都能夠被攻擊者控制.因此在該模型下,只有CPU 芯片屬于可信區域,是整個系統的可信計算基(trusted computing base,簡稱TCB),其他硬件組件都允許被敵手控制.敵手能夠主動控制片外RAM 以及系統總線傳輸的內容.在該威脅模型下,敵手能夠任意控制CPU 從片外RAM 讀入的內容,譬如篡改和竊聽CPU 讀入的代碼和數據、篡改片外RAM 的內容等等.因此,所有從片外RAM 讀入的數據都不可信,必須經過機密性和完整性保護.

學術界將攻擊者劃分為被動敵手和主動敵手兩類.被動敵手不能對片外RAM 進行篡改,其主要通過總線監聽或者直接讀取片外RAM 的內容實施攻擊,因此該類敵手的主要能力是讀取片外RAM 的內容.主動敵手可以通過總線注入等手段篡改片外RAM 的內容,根據板級物理攻擊者對系統總線和片外RAM 的操控能力,學術界設計了通用的板級物理攻擊威脅模型(如圖1 所示)[32,40].在該模型中,敵手控制芯片外的總線并在總線上掛載一個惡意片外RAM,敵手可以自由控制該惡意片外RAM 的內容.該片外RAM 地址總線與正常的片外RAM 重用,敵手可以將數據總線在正常片外RAM 和惡意片外RAM 之間進行切換,從而控制CPU 獲取的數據來自正常片外RAM 或者惡意片外RAM.在該模型基礎上,所有的板級物理攻擊被抽象為3 種類型的攻擊:欺騙攻擊、替換攻擊和重放攻擊.

·欺騙攻擊:敵手使用任意的內容修改某地址處內存塊的內容.敵手將自己想讓CPU 獲取的內容存儲到惡意片外RAM 中.每當CPU 從該地址讀取內容時,敵手將數據總線切換到惡意片外RAM,這樣CPU 讀取的就是敵手設置的內容.

·替換攻擊:敵手將地址A處的內容替換為地址B處的內容.敵手將正常片外RAM 地址B處的內容存放在惡意片外RAM 地址A處.每當CPU 讀取地址A處的內容時,敵手將數據總線切換到惡意片外RAM,這樣CPU讀取的就是正常片外RAM 地址B處的內容.

·重放攻擊:敵手將地址A處的內容替換為地址A以前某一時刻的內容.敵手在某一時刻將正常片外RAM地址A處的內容記錄在惡意片外RAM 地址A處.在之后的某一時刻CPU 讀取地址A處的內容時,敵手將數據總線切換到惡意片外RAM,這樣CPU 實際讀取的是地址A以前的內容.

1.2 實際板級物理攻擊

現實世界中已經出現了眾多板級物理攻擊實例,攻破了DRAM 接口、系統總線和DMA 外設接口等硬件組件(如圖2 所示).

Fig.2 Illustration of real-world board level physical attacks圖2 實際板級物理攻擊示意圖

具體攻擊方法主要包含冷啟動攻擊、總線攻擊以及DMA 攻擊.冷啟動攻擊[1-5]利用DRAM 的斷電存留特點[48](DRAM 內存在斷電1~2s 內,大部分數據仍殘留在內存上,并且通過給DRAM 降溫可以延長數據存留時間),通過物理斷電重啟設備并重刷固件的方式在設備上加載惡意攻擊程序,利用該惡意程序獲取DRAM 內存的鏡像,進一步分析該鏡像即可獲得內存中的密鑰等機密信息.普林斯頓大學的研究團隊[1]實際測量了低溫下DRAM 隨溫度變化數據的損失率,測量結果發現在-50℃溫度下,掉電DRAM 每隔10 分鐘僅損失1%的數據;在-196℃溫度下,掉電DRAM 每隔60 分鐘僅損失0.17%的數據.該團隊成功實施了幾種類型的攻擊:低溫下直接重啟或斷電重啟后加載惡意內核來讀取DRAM 鏡像,或直接將DRAM 內存條移植到一個攻擊計算機上來讀取鏡像,最終從DRAM 鏡像中獲得了全盤加密系統的AES 密鑰以及RSA 密鑰等機密數據.德國埃爾朗根-紐倫堡大學的研究團隊[2]利用冷啟動攻擊成功攻破了谷歌Nexus、三星Galaxy 等系列品牌手機,能夠從DRAM 鏡像中直接獲取磁盤加密密鑰、通訊錄、網頁歷史記錄、照片等信息.該團隊開發并公開了他們的攻擊工具FROST,同時公開的還包括攻擊步驟和攻擊源代碼,因此黑產從業者可直接利用該工具實施攻擊.智能終端通常使用PoP(package on package)技術將CPU 和內存封裝在一個芯片內,因此無法直接將DRAM 組件移植到其他攻擊設備上,只能通過重啟加載攻擊程序來讀取DRAM 鏡像.為了減少攻擊程序對DRAM 鏡像內容的覆蓋,攻擊程序所占用的內存越少越好.德國帕紹大學的研究團隊[3]設計了一個輕量級的裸機攻擊程序,僅占用5KB 內存,大大減少了對DRAM 鏡像的覆蓋.德國埃爾朗根-紐倫堡大學的研究人員基于12 種計算機系統以及不同的內存配置對冷啟動攻擊進行了系統性的研究[4],證明冷啟動攻擊在DDR1 和DDR2 類型的內存上具有很高的可重現性,并證明每降低10℃就能夠極大增強DRAM 芯片的斷電存留特性.另外,該團隊通過針對5 種計算機系統以及多種內存配置的攻擊實驗發現:熱啟動方式的攻擊對DDR3 類型的內存能夠成功,但是冷啟動方式的攻擊則對DDR3 芯片無效.為了抵抗冷啟動攻擊等內存鏡像取證工具對內存的獲取,內存芯片廠商在DDR3 內存芯片中增加了內存加擾(memory scrambling)技術,該技術的有效性已經被相關研究人員的實驗所證實[5].德國埃爾朗根-紐倫堡大學的研究人員通過實驗分析證明了內存加擾機制一般實現為線性反饋移位寄存器(linear-feedback shift registers,簡稱LFSR),然后設計了一種已知明文攻擊攻破了內存加擾技術.該攻擊最多需要128B 的內存明文,并且在雙通道內存系統中利用LFSR 密鑰流的數學關系可將攻擊提升到只需要50B 內存明文.操作系統大量內存數據被初始化為0,因此這種攻擊是實際可行的,該團隊利用這種方法成功攻擊了4 種Intel 計算機設備.

總線攻擊[6-10]通過在系統總線上掛載探針,并借助邏輯分析儀等數字信號解析工具對CPU 與片外RAM 之間的傳輸數據進行監聽和注入,從而達到竊取密鑰等機密信息以及篡改運行代碼的攻擊目標.MIT 研究人員通過在微軟Xbox 電子設備的南北橋總線上掛載總線探針,使用Xilinx Virtex-E 高速FPGA 設備分析探針截取的總線信號,成功破解了Xbox 南北橋信息傳輸所采用的高速總線協議HyperTransport[7],最終獲取了Xbox 用于數字版權保護的RC4 密鑰,使得攻擊者可以隨意安裝非授權軟件,而整個攻擊成本僅需幾十美元.文獻[8]證明即使設備配備了總線加密機制也可能遭受總線攻擊.該文獻提出的密文指令搜索攻擊通過總線向CPU 發送密文指令并觀察CPU 的響應來推測實際CPU 指令,在推測出足夠多的密文指令后利用這些密文指令構建攻擊程序,最終成功將受保護的內存內容發送給攻擊者.該攻擊方法成功應用在安全芯片DS5002FP 微控制器上,破解了其內部的加密密鑰.英國信息安全公司NCC Group 成功對可信計算技術的硬件安全基礎TPM(trusted platform module)芯片實施了總線攻擊,并開發了配套的攻擊工具TPM Genie[9].基于該攻擊工具可實施3 種類型的攻擊:篡改TPM 芯片內部的完整性度量值,影響計算機系統的信任鏈、遠程證明和數據封裝等可信計算功能;修改TPM 返回結果以減弱TPM 芯片內部的隨機數發生器的安全性,該攻擊可影響主機上基于TPM 隨機數的密碼學操作的安全性;通過在總線上偽造TPM 返回結果影響主機上TPM 軟件棧的安全性,基于該攻擊找到了30 多個TPM 驅動的內存安全隱患,影響到Linux 內核、U-boot 和tboot 等多個重要計算機系統軟件.總線攻擊由于實施容易、成本低,因而很容易與其他攻擊結合形成新的攻擊,加州大學伯克利分校的研究團隊結合總線攻擊與內存側信道攻擊提出了針對Intel SGX 的新型側信道攻擊方法[10],他們稱其為片外側信道.Intel SGX 雖然對處理器芯片外部的DRAM 內存進行了加密和完整性保護,即數據總線上的數據都是密文,但是未對地址總線進行加密,因此攻擊者可以通過總線探針獲得地址總線的信號,利用后臺的信號分析儀獲得要訪問的內存地址,從而得知內存的訪問模式,即可進一步實施側信道攻擊.該攻擊方法比較適合攻擊數據量大的程序,因此對大數據平臺以及云平臺上的人工智能算法具有較大的安全威脅.

DMA 攻擊是一種利用DMA 傳輸機制繞過內存管理單元(memory management unit,簡稱MMU)和CPU 而直接訪問物理內存的攻擊方法.法國國家網絡安全局基于網卡控制器的一個漏洞提出了一種遠程攻擊方法[11]:通過遠程向網卡發送一些定制攻擊包就能遠程控制網卡.基于該方法攻擊者可通過網卡的DMA 訪問能力進一步訪問計算機的全部內存并控制整個計算機系統.隨后該團隊提出了對應的安全解決方案[12].瑞士研究人員基于網卡和聲卡的DMA 能力提出了一種內存探測方法[13],該攻擊具體實現為一個安全shell 工具,通過遠程固件刷新將該shell 安裝到網卡或聲卡上.德國柏林高等工業學校的研究團隊提出了一種基于DMA 的惡意軟件DAGGER[14].DAGGER 實現在Intel 的管理引擎(manageability engine,簡稱ME)上,該攻擊利用ME 的DMA 硬件獲得對主機內存的訪問權限,通過搜索主機內存空間獲得鍵盤緩存區地址,然后通過監控該緩存區獲取用戶的鍵盤輸入信息.該團隊同時在Windows 和Linux 操作系統上實現了原型系統,實驗結果表明該攻擊能夠快速獲得用戶的鍵盤輸入信息,并且在平臺啟動早期就能夠獲取鍵盤輸入信息,譬如Linux 系統的硬盤加密口令.

2 抗板級物理攻擊相關技術

2.1 片上內存

片上內存(on-chip memory,簡稱OCM)已經是嵌入式領域處理器芯片(又稱為片上系統)的一個基礎組件,基本上所有的嵌入式處理器芯片都配備了片上內存.文獻[49]調研了智能終端領域十幾款主流的片上系統,統計結果表明大部分芯片都配備有100KB 以上的片上內存.

片上內存相比片外內存(一般為DRAM 芯片)在性能和安全性兩方面都具有一定的優勢.在性能方面,片上內存因為通過內部高速總線與CPU 連接,因此CPU 訪問片上內存的速度一般比片外內存快.在安全性方面,片上內存具有更高的物理安全性,具有抵抗板級物理攻擊的能力:片上內存沒有向芯片外部暴露物理引腳(physical pin),因此其數據信息和地址信息不會從芯片外引腳或總線上泄露出去.但是,物理攻擊者可以通過冷啟動攻擊加載惡意攻擊代碼或惡意DMA 設備來獲取片上內存的內容.對于冷啟動攻擊方式,英國哥倫比亞大學研究團隊[50]以及國內中科院軟件所研究團隊[51]在實際物理開發板上的實驗表明智能終端處理器芯片的BootROM 代碼在重啟后一般會對片上內存進行清空.而冷啟動攻擊的攻擊程序只能在重啟設備后才能加載,因此冷啟動攻擊無法獲取片上內存的內容.對于DMA 方式的攻擊,硬件系統或軟件系統設計者需要將片上內存與惡意DMA 外設進行隔離以防止它們通過DMA 方式獲取片上內存的內容.國內中科院軟件所的研究團隊[49,52]使用ARM TrustZone 的隔離能力來抵抗這種攻擊,其他可采用的隔離方式還包括嵌套內核隔離機制[53-56],該隔離機制允許系統軟件設計者在處理器沒有提供類似ARM TrustZone 這種硬件隔離機制的情況下邏輯隔離出一塊地址空間.

2.2 基于Merkle Tree的內存完整性保護技術

Merkle Tree 是保護內存完整性的主要機制.傳統的Merkle Tree 內存保護方案如下(如圖3 左所示):首先將內存劃分為一個個內存塊并對每個內存塊進行消息驗證碼(message authentication code,簡稱MAC)計算,得到的MAC 值作為Merkle Tree 的葉子節點,然后自葉子節點向上一層一層進行MAC 計算,最終計算到根節點.該樹根節點可以看作整個內存的完整性值,需要存儲在芯片內部.每次從片外內存讀取數據時,都需要從對應葉子節點計算到根節點,用計算得到的根節點值與芯片內部的標準完整性值對比,以檢測讀取的片外內存是否被篡改;每次將芯片內的數據(譬如緩存或片上內存的數據)寫回片外內存上時,需要更新對應葉子節點以及該節點到樹根路徑上所有節點的值.

Fig.3 Comparison between Merkle Tree and Bonsai Merkle Tree圖3 Merkle Tree 與Bonsai Merkle Tree 對比

基于Merkle Tree 的內存完整性保護技術每次驗證或更新數據都需要計算從葉子節點到樹根路徑上所有節點的值,給系統帶來較重的計算負載.為了降低計算負載,MIT CSAIL 實驗室提出了將樹節點存儲在緩存上的優化方法[57],一旦某一節點被緩存在了芯片內部,該節點可以看作樹根,完整性校驗和更新只需要從葉子節點計算到該緩存節點即可.但是該優化方法只有在Merkle Tree 比較小時才能提高完整性驗證的效率,如果Merkle Tree 較大,樹節點會占用大量緩存,極端情況下會占用50%的緩存,導致普通應用程序經常發生緩存缺失,降低應用程序運行速度.

因此,降低Merkle Tree 大小成為優化內存完整性保護的一個重要研究方向.北卡羅萊納州立大學的研究團隊提出了Bonsai Merkle Tree 的概念[29].Bonsai Merkle Tree 為每個內存塊分配一個計數器,然后對每個內存塊和對應計數器計算MAC 值,MAC 值就是該內存塊的完整性值.因為MAC 值已經對內存進行了完整性保護,所以實際上只需對內存的計數器進行完整性保護即可.圖3(右)描述了Bonsai Merkle Tree 方法,其中被保護區域是普通的需要保護的內存,計數器區域用于存放計算內存塊MAC 值時用到的計數器,最后一個區域存放對計數器區域進行完整性保護的樹節點和所有內存塊的MAC 值.為防止頻繁更新內存導致計數器溢出,Bonsai Merkle Tree 除了為每個內存塊設置一個局部計數器,還為較大的內存區域(譬如一個內存頁)設置一個全局計數器,局部計數器達到最大值后將全局計數器加1,然后局部計數器就可以歸零重新計數.這種計數器設置方式避免為每個內存塊設置大的計數器,降低計數器占用的內存.但是這種方式的一個缺點是一旦全局計數器更新,就需要將其對應的所有內存塊(譬如一個內存頁)重新加密.Bonsai Merkle Tree 方式極大地降低了需要完整性保護的內存大小.以內存塊為64B 和局部計數器為8 bit 為例,計數器所占用內存與普通數據內存比例僅為1:64.該研究團隊的實驗結果表明,Bonsai Merkle Tree 將完整性校驗帶來的負載從12.1%降低到1.8%,并且將完整性保護所占用的內存(包括樹節點和計數器區域等)從33.5%降低到21.5%.

3 軟件方式的抗板級物理攻擊防御技術

軟件方式的抗板級物理攻擊的操作系統防御技術借助處理器芯片內部的通用存儲資源,如CPU 專用寄存器、CPU 緩存、片內RAM 等,無需修改處理器硬件即可提供較高的物理安全性,成為系統安全領域的一個研究熱點.這方面的研究工作按照保護范圍可以分為3 類:第1 類主要關注密鑰等對安全性要求非常高的數據,保障其存儲和相應密碼算法實現的安全性;第2 類從保護安全攸關應用程序出發,借助片內存儲資源保護安全應用的物理安全性;第3 類從保護整個系統出發,著重考慮運用有限的片內存儲空間為包含操作系統和應用程序在內的完整系統提供安全執行環境.本節按上述分類對已有研究工作進行全面分析和系統總結.

3.1 密鑰及密碼算法安全保障研究

密鑰的安全性是許多系統安全機制的基礎,為防止攻擊者通過板級物理攻擊從片外RAM中獲得密鑰[1,2,14,58,59],研究人員提出利用片內存儲保護密鑰和相應密碼算法實現以抵抗板級物理攻擊的解決方案,從而保證系統中密碼原語的安全性.這類工作的基本思路是:在系統運行期間,不再將密鑰存儲在片外RAM 中,而將其存儲在片內存儲中,并確保任何時刻密鑰和有助于推測密鑰的中間計算結果都不會以明文形式出現在片外RAM 中.用于存儲密鑰和進行加解密計算的片內存儲包括CPU 內部寄存器和緩存、GPU 內部寄存器和緩存,利用這些存儲空間將密鑰和加解密過程限制在處理器芯片內部,避免與密鑰相關的敏感數據受到板級物理攻擊.保護密鑰和密碼算法的方案按其實現層次可以分為3 類:應用層方案、內核層方案和hypervisor 層方案,本節分別對這3類方案進行分析和總結.

3.1.1 應用層密鑰和密碼算法保護方案

這類方案在用戶層實現,利用片內存儲資源進行密鑰存儲和密碼學計算,供其他應用程序調用,以保護應用程序密鑰的安全性.基于片內存儲的保護方案需要防止普通應用程序訪問敏感數據的存儲位置讀取或者覆蓋密鑰,以及防止上下文切換等過程將敏感數據保存到片外RAM 中,這些限制通常需要root 權限才能實現,因此這類方案通常在內核層實現,在應用層實現的密鑰和密碼算法保護方案較少,目前已知的僅有Parker 等提出的方案[60]和Peapods[61]方案.

Parker 等的方案[60]在x86 架構中利用SSE(streaming SIMD extension)擴展指令集[62]的XMM 寄存器組實現RSA 算法.該方案不將完整的RSA 私鑰明文存儲在片外RAM 中,而是先將其混淆處理后再存儲在片外RAM中,以防止內存泄露攻擊;在進行RSA 運算時,片外RAM 中混淆后的私鑰先經過重組得到原始私鑰再加載到SSE 寄存器進行密碼學計算,以確保私鑰明文僅出現在 CPU 寄存器中.該方案通過一個可加載內核模塊(loadable kernel module,簡稱LKM)在RSA 運算期間為不具有root 權限的應用程序禁用中斷,以防止SSE 寄存器的內容因上下文切換泄露到片外RAM 中.該方案基于OpenSSL 實現,因SSE 寄存器容量有限,不能使用中國剩余定理(Chinese remainder theorem,簡稱CRT)加速RSA 的模冪運算,其RSA-1024 簽名操作的性能比OpenSSL中常規RSA 實現低4.4 倍.該方案的一個安全問題是:如果攻擊者得到用于重組私鑰的代碼,就可以獲知私鑰混淆算法,攻擊者實施冷啟動攻擊獲得片外RAM 中經混淆的私鑰后,可以通過重組得到RSA 私鑰.

Peapods[61]是一種基于LLVM 的編譯器增強工具,旨在利用事務內存為軟件加密引擎中的密鑰提供用戶模式的保護.Peapods 在編譯階段解析程序開發人員指定的要保護的敏感變量(密鑰)和代碼片斷(密碼學計算),將其作為peapod 封裝在事務中,并為程序添加初始化代碼,用于生成AES 主密鑰,用主密鑰加密敏感變量,以及將主密鑰加載到XMM 寄存器中.在執行階段,Peapods 采用事務內存保護密鑰,將密碼學計算作為事務在CPU L1數據緩存中執行,以保證其原子性,事務結束前會重新加密密鑰和中間計算結果,以確保敏感變量僅以密文形式出現在RAM 中.Peapods 支持將耗時的密碼學計算拆分為多個事務以提高性能,采用peapods 保護開源加密引擎PolarSSL 中的RSA-2048 私鑰計算時,引入的性能開銷約為10%.

3.1.2 內核層密鑰和密碼算法保護方案

這類方案在內核層實現,通常作為操作系統補丁.這類方案用于保護密鑰的片內存儲資源通常具有以下特點:(1)能夠特權占用.為防止用戶空間進程訪問密鑰,密鑰存儲資源應能夠設置為僅特權級別才可以訪問;(2)能夠不將數據泄露到片外RAM.密鑰存儲資源應能夠設置為不將數據存儲到片外RAM 中,如不在上下文之中或不寫回到片外RAM;(3)被占用不影響系統運行.密鑰存儲資源在系統運行期間由密鑰保護機制獨占使用,不能用于預期用途,缺少該資源應仍能保持大部分應用程序的二進制兼容性;(4)具有足夠保護密鑰的容量.密鑰存儲資源應具備密鑰存儲和密碼學計算所需的存儲空間.基于以上特點,許多保護方案選擇調試寄存器、SSE 擴展的XMM 寄存器組等作為密鑰存儲資源.為防止密碼學計算過程中上下文切換將敏感數據泄漏到片外RAM,或其他內核模塊訪問敏感數據,密鑰保護機制通常以原子方式執行.

內核層密鑰和密碼算法保護方案有 x86 架構中保護對稱密碼算法的方案 AESSE[63]、TRESOR[64]、Loop-Amnesia[65]、FrozenCache[66],ARM 架構中保護對稱密碼算法的方案ARMORED[67,68]、Key-hiding[69]、Anti-forensics[70],x86 架構中保護非對稱密碼算法的方案PRIME[71]、文獻[72]中的方案、RegRSA[73]、Copker[74]、Mimosa[75],以及利用GPU 保護對稱和非對稱密碼算法的方案PixelVault[76].

在x86 架構對稱密碼算法保護方面,AESSE[63]是針對x86 架構上Linux 操作系統的AES 抗冷啟動攻擊實現.與Parker 等提出的方案[60]類似,AESSE 不將密鑰存儲在片外RAM 中,而是將一個密鑰和與密鑰有關的輪密鑰和中間狀態等中間計算結果直接存儲在SSE 寄存器中,并在SSE 寄存器中實現AES 算法,確保密鑰和任何中間計算結果不會離開CPU.AESSE 在內核模式原子執行,SSE 僅在原子代碼段中啟用,以防止SSE 寄存器中的敏感數據被讀取或覆蓋以及在上下文切換時被保存到片外RAM 中.受限于SSE 寄存器的容量,AESSE 對每個128 bit 輸入塊的加解密運算都需要重新計算10 個輪密鑰以節約輪密鑰的存儲空間,造成較高的性能開銷,其速度比內核標準AES 慢6 倍.AESSE 的另外一個問題是兼容性:用SSE 寄存器長期存儲AES 密鑰,影響使用SSE 擴展的多媒體、數學和3D 等應用.TRESOR[64]是AESSE 作者提出的后繼方案,旨在解決AESSE 在性能和兼容性兩方面的問題,其基本思路與AESSE 相同,但是不需要長期占用SSE 寄存器,并大幅提高了AES 加解密性能.為盡量避免引起兼容性問題,TRESOR 沒有使用SSE 寄存器長期存儲密鑰,而是將x86 架構中的調試寄存器用于長期存儲AES 密鑰,僅在每次加解密時將SSE 寄存器用于加載密鑰及存儲輪密鑰和中間狀態,因而無需長期占用SSE 寄存器.為提高算法性能,TRESOR 采用了用于硬件加速 AES 實現的 Intel AES-NI(Intel AES new instructions)擴展指令集[77,78].盡管在每次加解密時仍需重新計算輪密鑰,但是通過使用AES-NI 指令,TRESOR可達到與標準AES 相同或更好的性能.該方案的一個問題是:長期占用調試寄存器的全部斷點寄存器,運行TRESOR 的系統無法再設置硬件斷點,會對GDB 等調試程序造成影響.Loop-Amnesia[65]是一個與TRESOR 類似的方案,其與TRESOR 的不同點在于:(1)使用MSRs(model-specific registers)中的性能計數寄存器而不是調試寄存器長期存儲AES 密鑰;(2)將主密鑰存儲在性能計數寄存器中,將其他密鑰經主密鑰加密后存儲在片外RAM 中,以這種方式用存儲一個密鑰的能力支持對多密鑰的保護;(3)基于Linux 的開源磁盤加密軟件包loop-AES[79]實現,不使用AES-NI 指令,導致其性能低于TRESOR 和標準AES;(4)使用x86-64 架構中全部通用寄存器而不是SSE 寄存器存儲輪密鑰.由于占用了MSRs 的性能計數寄存器,運行Loop-Amnesia 的系統不能使用硬件輔助的性能分析器,會影響硬件性能分析工具的正常運行.上述方案僅能抵抗冷啟動攻擊這一種板級物理攻擊,不能抵抗DMA 攻擊.Blass 等提出對類似TRESOR 和Loop-Amnesia 的方案的一種DMA 攻擊TRESORHunt[80].TRESOR-Hunt 利用DMA 傳輸的寫操作向內核內存中注入攻擊代碼進行特權提升,攻擊代碼以root 權限執行將受保護的密鑰從寄存器提取到片外RAM 的指定位置,之后即可利用標準DMA 傳輸獲得片外RAM 中存儲的密鑰.FrozenCache[66]提出將密鑰存儲在CPU 緩存中以進行保護的思路:將內存映射到CPU 的L1 緩存,使用緩存存儲AES 密鑰和輪密鑰,并清除片外RAM 中的密鑰;通過讓所有處理器核心進入no-fill 模式,也稱CAR(cache-as-RAM)模式,來凍結緩存中的密鑰,以防止敏感數據被刷新到片外RAM 中.FrozenCache 使CPU緩存不能發揮正常作用,每次內存訪問都會導致緩存未命中.此外,因安全高效實現FrozenCache 涉及很多細節問題,作者未實現該方案的原型系統.

上述密鑰和密碼算法保護方案都是針對x86 架構平臺,然而ARM 架構平臺的安全性也受到板級物理攻擊的威脅,如FROST 攻擊[2].在ARM 架構對稱密碼算法保護方面,ARMORED[67,68]是針對ARM 架構和安卓操作系統的 TRESOR 修改版,利用 ARM-32 架構的調試寄存器和多媒體寄存器組 NEON[81]實現 AES 算法.ARMORED 將AES 密鑰長期存儲在調試寄存器的斷點寄存器和監視點寄存器中,受ARM 架構調試寄存器數量的限制,僅支持AES-128.每次加解密時,AES 密鑰被加載到NEON 寄存器,輪密鑰和中間狀態也都存儲在NEON 寄存器中.為提高性能,ARMORED 將原子代碼中加解密范圍從1 個AES 輸入塊增加到16 個,從而減少輪密鑰計算次數,即輪密鑰計算頻率由每輸入128 bit 計算1 次減少為每輸入2K bit 計算1 次.ARMORED 實現為安卓的LKM,并通過集成到Crypto-API 支持基于ARM 的Linux 內核,其性能比通用AES 低2.3 倍.該方案的一個安全問題是:ARM 架構平臺上的JTAG 設備可以通過JTAG 接口破壞內核完整性,因而ARMORED 不能抵抗通過JTAG 接口進行的攻擊.Key-hiding[69]在ARMORED 基礎上進行了改進,將保護密鑰的長度擴大到256 bit.ARMORED 無法存儲超過128 bit 密鑰的原因是:ARM 架構要求所有指令都開始于能被4 整除的地址,因此每個值寄存器的最后2 位必須為0,導致ARMORED 用4 個32 bit 斷點寄存器和4 個32 bit 監視點寄存器不能存儲256 bit 密鑰.Key-hiding 的解決方案是利用與每個斷點或監視點寄存器對應的控制寄存器,將不能在斷點或監視點寄存器最后2 位存儲的數據存儲到相應控制寄存器的第1 位和第2 位中,從而利用4 個斷點寄存器和4 個監視點寄存器,以及相應的控制寄存器,在ARM-32 架構中保護256 bit AES 密鑰.因為缺少與原型系統兼容的AES-256 算法,Key-hiding 未進行性能測試.Anti-forensics[70]是一種針對安卓設備抗FROST 攻擊[2]的AES 密鑰保護方案.與前述方案不同,Anti-forensics 不是將密鑰和加解密算法限制在CPU 內部,而是通過更改密鑰在內存中的存儲位置來防止FROST 攻擊.Anti-forensics 將AES 密鑰存放在存儲安卓啟動命令行參數的內存地址,系統重新啟動時密鑰將被命令行參數覆蓋,使FROST 攻擊無法獲得密鑰.該方案不需要占用CPU 寄存器等其他存儲資源,不會影響系統正常運行,且對AES 算法性能影響較小,僅1.03 倍性能降低,其性能比ARMORED 高2 倍,但是由于密鑰存儲空間的限制,Anti-forensics 只能保護一個密鑰.

上述內核層對稱密鑰和密碼算法保護方法被擴展到非對稱密碼算法保護中.與對稱密碼算法相比,非對稱密碼算法的存儲或運算通常需要占用更多存儲空間.以RSA 算法為例,RSA 實驗室[82]和NIST[83]建議RSA 私鑰長度最少為2048 bit,并且與RSA 私鑰相關的解密/簽名運算也需要大量存儲空間.在x86 架構非對稱密碼算法保護方面,PRIME[71]、RegRSA[73]、Copker[74]、Mimosa[75]的基本思路類似:將受TRESOR 保護的AES 密鑰用作主密鑰加密RSA 私鑰,只需長期占用調試寄存器存儲AES 密鑰,而將加密后的RSA 私鑰存儲在片外RAM 中,以解決私鑰較長存儲空間不足的問題,然后選擇其他CPU 內部存儲保護AES 算法和RSA 算法,僅在進行RSA解密/簽名的原子代碼中獨占這些存儲資源,以降低對系統正常運行的影響.PRIME[71]利用Intel AVX(advanced vector extensions)[84]的多媒體寄存器組實現了RSA-2048 算法,其在AVX 寄存器中解密RSA 私鑰以及進行RSA運算.PRIME 采用蒙哥馬利(Montgomery)方法在AVX 寄存器中實現了RSA 的模冪運算,但是需要將一些不會影響RSA 安全性的中間結果短暫存儲在片外RAM 中.由于存儲空間限制,PRIME 不能使用CRT 加速運算,導致其運行速度比常規RSA 實現慢約9 倍.與PRIME 思路類似,Yang 等人[72]利用x86-64 架構的調試寄存器和AVX 寄存器實現橢圓曲線密碼算法ECDH(elliptic curve Diffie-Hellman),將上述寄存器分別用于長期存儲163 bit 私鑰和計算ECDH 共享密鑰.RegRSA[73]提出寄存器緩沖區的概念,將所有可用CPU 寄存器用作安全數據緩沖區,敏感數據僅存儲在寄存器緩沖區中,并利用寄存器緩沖區實現了使用CRT 加速的RSA-2048 算法.該方案使用標量指令和寄存器執行計算,在向量寄存器中維護中間結果,利用704B 的寄存器緩沖區(16 個64 bit 通用寄存器,8 個64 bit MM 寄存器[85]和16 個256 bit YMM 寄存器[84])實現完全在寄存器緩沖區中計算的1 024bit蒙哥馬利乘法,且允許多個實例同時在多核CPU 上運行.由于寄存器緩沖區的容量有限,一些中間結果需要經AES 主密鑰加密后存儲到片外RAM 中.RegRSA 解決了PRIME 不能使用CRT 加速的問題,其性能是OpenSSL中常規RSA 實現的74%,且其性能超過了PRIME.Copker[74]利用CPU 緩存實現RSA 算法,緩存的容量優勢使其支持更長的私鑰和更高效的算法,AES 解密和RSA 解密/簽名操作都在緩存中進行,且能夠使用CRT 加速運算,從而獲得更好的性能.但是,Copker 在密碼學計算過程中強制所有共享LLC(last-level cache)的其他處理器核心進入no-fill 模式,以防止這些核心將L1 緩存刷新到片外RAM 中,急劇降低了這些核心的內存訪問性能,且Copker 不支持共享LLC 的核心上的多個實例.Copker 原型系統采用128bit AES 主密鑰保護2 048bit RSA 私鑰,其運行速度比常規RSA 實現慢約3 倍.Mimosa[75]利用Intel TSX 機制在CPU L1 數據緩存中為RSA 提供安全計算環境.Intel TSX[86]是x86 架構的指令集擴展,增加了對硬件事務內存(hardware transactional memory,簡稱HTM)的支持.在密碼學計算期間,Mimosa 使用HTM 保證私鑰和中間結果等敏感數據只出現在CPU 綁定緩存中,不會泄露到片外RAM,并且HTM 的原子性保證任何非授權的私鑰訪問會導致密碼學計算終止,所有敏感數據通過硬件機制自動清除,以防止軟件形式的密鑰竊取攻擊.Mimosa 的性能可以與常規RSA 實現媲美,并且借助Intel TSX 的硬件支持,Mimosa 的性能優于PRIME 和Copker.

在利用GPU 保護密碼算法方面,PixelVault[76]基于GPU 實現AES 和RSA 算法保護,其基本思想是在GPU中執行完整的密碼算法,不使用主機和主機可訪問的內存.PixelVault 將密鑰和敏感代碼分別存儲在GPU 的寄存器和指令緩存中,利用GPU 與主機的隔離特性防止特權主機代碼訪問GPU 上的敏感數據和代碼,以保證敏感數據和代碼的安全性.GPU 的非搶占執行特點使PixelVault 獨占執行,避免因上下文切換而導致敏感數據泄露.PixelVault 將計算密集型的加解密操作在GPU 中執行,獲得了較好的性能.Zhu 等人[87]分析了PixelVault 關于GPU 硬件特性的假設,指出該方案依賴的一些安全假設存在漏洞,利用控制寄存器和調試器的更新功能能夠繞過PixelVault 的安全機制破壞其安全性,從而指出PixelVault 無法在其威脅模型下保證主密鑰的機密性.之后,ZeroKernel[88]的作者指出對PixelVault 的另一種攻擊,攻擊者通過操縱GPU 上下文可以將寄存器中存儲的主密鑰泄露到設備內存的特定位置.

內核層密鑰和密碼算法保護方案可以抵抗冷啟動攻擊,但通常難以抵抗對系統空間具有寫訪問權限的攻擊者的攻擊.例如,具有root 權限的攻擊者可以輕松加載內核模塊,利用該模塊將密鑰從CPU 寄存器提取到片外RAM 中.Blass 和Robertson 將不能在內核特權級運行任意代碼定義為內核完整性屬性[80].即使是PixelVault 在其初始化期間也需要保證操作系統內核的完整性.事實上這樣的屬性很難滿足.在實際應用中,惡意軟件通常可以獲取root 權限,且DMA 攻擊可以通過物理訪問將惡意代碼寫入系統空間,而很多方案的威脅模型中并沒有考慮抵抗DMA 攻擊.此外,大部分基于寄存器的方案只能保護物理平臺密鑰的安全性,無法保護虛擬機中的密鑰,這是因為客戶機的寄存器在虛擬機切換時會存儲到主機的片外RAM 中,存在被物理攻擊的風險.

3.1.3 Hypervisor 層密鑰和密碼算法保護方案

內核層保護方案依賴于操作系統內核的完整性,并且大部分方案不能抵抗DMA 攻擊,雖然DMA 攻擊可以利用IOMMU 防御,但是一些設備沒有配備該機制.為保護不同操作系統中的密鑰,即實現與操作系統無關的密鑰和密碼算法保護,研究人員提出hypervisor 層保護方案.Hypervisor 層保護方案具有以下優勢:(1)hypervisor與操作系統隔離,即使是root 權限用戶和本地特權提升也不會破壞密碼學計算過程或恢復出密鑰;(2)與操作系統類型無關,可以保護不同類型的操作系統;(3)一些與安全性相關的硬件設置可以在hypervisor 層統一設置,如通過設置IOMMU 集中防御DMA 攻擊;(4)這類hypervisor 可具有較小的TCB,降低了系統存在漏洞的風險,也便于通過形式化方法驗證其正確性.

在hypervisor 層實現的密鑰和密碼算法保護方案較少,目前已知的僅有TRESOR 的作者提出的TreVisor方案[89].該方案將TRESOR 功能從內核層下移到hypervisor,可以透明的保護客戶機操作系統的密鑰.TreVisor建立在BitVisor 基礎上,BitVisor[90]是一種輕量級虛擬機監視器,為單個客戶機實現各種安全功能,利用虛擬化技術增強I/O 設備安全性,其IOMMU 設置可抵抗DMA 攻擊,但是BitVisor 不能防御冷啟動攻擊.TreVisor 結合了TRESOR 和BitVisor 這兩個項目,借助前者抗冷啟動攻擊,而后者抗DMA 攻擊的特性,形成了一個hyptervisor層抗冷啟動攻擊和DMA 攻擊的、對操作系統透明的安全加解密方案.作者認為將密鑰存儲在用主密鑰加密的片外RAM 中會帶來明顯的性能缺陷,因此為保證性能,TreVisor 僅保護一個密鑰,其性能比AES-NI 下降約33%.由于TreVisor 占用了調試寄存器且使用了Intel VT-x,造成客戶機操作系統不完全支持調試器,無法設置硬件斷點,也不完全支持VirtualBox 和VMware 等虛擬化軟件.該方案存在的安全問題是:(1)依賴于hypervisor 的安全性,hypervisor 運行在片外RAM 中,如果被攻擊者通過板級物理攻擊攻破,將破壞整個系統的安全性;(2)在多核架構中,TreVisor 需要在所有處理器核心間分配密鑰,以將密鑰寫入不同的核心,方法是將密鑰從BSP(boot strap processor)復制到片外RAM,再復制到AP(application processors),該過程對于冷啟動攻擊是不安全的.

3.1.4 小 結

密鑰和密碼算法保護方案利用片內存儲資源將密鑰存儲和密碼學計算限制在處理器芯片內部,能夠抵抗板級物理攻擊,特別是冷啟動攻擊.AESSE 是保護AES 密鑰及相應密碼算法安全性的開創性工作,其后續工作TRESOR 解決了AESSE 的性能問題,已經成為該研究方向的基礎技術.譬如,ARMORED 將TRESOR 移植到ARM CPU 硬件平臺上的安卓操作系統中;Key-hiding 將TRESOR 保護的AES 密鑰長度從128bit 擴展到256bit;TreVisor 系統軟件利用TRESOR 提供的高安全密碼服務保護上層虛擬機內部的密鑰.此外,大部分RSA 密鑰和密碼算法保護方案都采用TRESOR 的AES 算法加密保護RSA 私鑰.在非對稱密鑰和密碼算法保護方面,各項工作主要保護RSA 密鑰和算法的安全性,這些工作利用CPU 架構提供的各種安全硬件機制來實施保護,其中RegRSA 和Mimosa 方案分別通過實現CRT 加速和采用Intel HTM 機制提高了算法實現的性能,是這些工作中性能比較好的方案.

但是這類方案在安全性和實用性方面仍存在一些問題.在安全性方面,這類方案可用的安全存儲空間有限,只能保護密鑰和中間計算結果等很小部分敏感數據,并不能保護其他敏感信息,更不能保護整個片外RAM.此外,這類方案依賴于包括操作系統或hypervisor 在內的龐大TCB.在實用性方面,這類方案占用了CPU/GPU 內部專用存儲資源,使該存儲資源無法用于其預期用途,會影響系統特定功能.此外,某些資源的獨占使用會影響系統性能.例如,在禁用中斷以原子執行密碼學計算的情況下,操作系統對交互事件的響應可能會受到影響,鼠標和鍵盤等事件引起的中斷被延遲到加解密/簽名操作結束之后才能響應;運行基于緩存的保護方案時需要利用緩存控制指令防止共享緩存的其他核心訪問為密碼學計算保留的緩存,會降低其他核心上并發任務的性能,同時大部分方案需要將緩存設置到no-fill 模式來保護密鑰,而緩存在該模式與正常運行模式之間切換比較耗時.

3.2 應用程序抗物理攻擊防御技術研究

第3.1 節的方案只對密鑰和密碼算法進行了保護,而實際上應用程序的其他內存同樣也可能存放著安全敏感的數據,譬如口令、個人生物信息和圖像信息等,保護這些信息的安全性同樣重要.為此,學術界提出了保護應用程序整體或部分關鍵數據免受物理攻擊的方案:其中一部分方案重點針對冷啟動攻擊,考慮到系統休眠時是冷啟動攻擊的主要時機,所以這些方案重點保護系統休眠時的內存內容;其余方案考慮的比較完善,能夠在系統運行時為應用程序提供物理防護.值得注意的是,很多方案使用第3.1 節中的抗物理攻擊密碼算法作為保護應用程序的密碼原語.

3.2.1 系統休眠時應用程序保護方案

研究人員為常見的開源操作系統提出了各種防護方案來抵抗休眠或鎖屏時的冷啟動攻擊.加拿大卡爾頓大學為安卓系統設計了一種抵抗冷啟動攻擊的安全運行模式Deadbolt[91].該模式啟動前會清空安卓的全盤加密密鑰和卸載全盤加密機制所保護的用戶分區,從而保障用戶數據分區免受冷啟動攻擊.該模式還加載一個僅包含基本用戶應用的臨時用戶分區,為用戶提供一些基本的手機功能.該方法的安全弱點是只能保障Deadbolt模式下設備的安全性,設備正常使用時仍存在被攻擊的風險,因此只能緩解物理攻擊.Sentry[50]是一種抵抗FROST[2]等針對移動設備的物理攻擊的方案,該方案利用ARM SoC 架構中的片上內存或二級緩存實現了可抵抗物理攻擊的AES 算法,用于在安卓系統鎖屏時對片外RAM 上的機密數據進行加密保護,并基于ARM 內存管理機制實現了在保持RAM 內存頁為密文狀態的情況下將明文寫入二級緩存的技術,使得在安卓系統鎖屏后內存數據為密文的情況下后臺程序仍能正常運行,該方案采用禁止中斷的方式防止AES 中間計算結果被切換到片外RAM.

為增強Linux 操作系統休眠時的物理安全性,德國Fraunhofer 協會的應用集成信息安全研究所將Linux 的全盤加密機制從磁盤加密擴展到了內存加密[92].設備休眠和啟動時Linux 操作系統會轉換所有進程狀態,該方案在進程轉換狀態之前調用全盤加密機制的加解密接口對進程的虛擬內存地址空間進行加解密,之后清空磁盤加密密鑰以及相關密碼算法的數據結構以防止攻擊者從內存鏡像中獲取該密鑰.該團隊后續又基于Linux CGroup 的freezer 子系統實現了對進程組的內存加密方案Freeze&Crypt[93].該方案的技術思路是在freezer 子系統停止和啟動進程組的流程中加入進程加密和解密步驟,從而達到同時加密保護一個進程組的目標.該方案適用于移動設備等活動進程和休眠進程共存的場景.該團隊在安卓容器場景中展示了方案的可行性,只有活動的安卓容器在內存中處于明文狀態,其他后臺容器均被加密以抵抗物理攻擊.

另外也有研究人員提出使用底層hypervisor 來對上層操作系統進行內存加密的思路,從而使內存保護與操作系統無關.加拿大康考迪亞大學提出了一個與操作系統無關的計算機內存加密方案Hypnoguard[94].該方案利用Intel 的動態信任鏈技術TXT 構建了一個動態可信執行環境Hypnoguard 對休眠前的內存進行加密.該方案的加密密鑰由安全芯片TPM 保護,以此抵抗物理攻擊.同時該方案使用了可信計算的封裝機制和用戶的口令認證機制,保證只有未被篡改的Hypnoguard 和合法用戶才能解密內存喚醒計算機.為提高加密速度,該方案使用了AES-NI 硬件加密指令和多核計算,保證在1s 之內實現對8G 內存的保護,降低用戶等待時間.

3.2.2 系統運行時應用程序保護方案

在系統休眠時提供物理防護只能解決一部分場景的安全問題,實際上并沒有為設備提供全面的物理防護:攻擊者在設備運行時仍可以實施物理攻擊.為解決該問題,研究人員提出能夠在設備運行時對安全敏感應用進行保護的方案.這些方案中,一部分是通過內存滑動窗口技術來減緩物理攻擊的威脅;一部分是通過片上內存、緩存和寄存器等處理器片內存儲來保護應用的關鍵數據或代碼,從而更加安全的抵抗物理攻擊;還有一部分是利用處理器其他硬件機制來保護應用程序免受物理攻擊.本節按照方案采用的內存滑動窗口、片上內存、緩存、寄存器以及其他硬件機制這5 類進行劃分對相關方案進行分類總結.

(1)基于內存滑動窗口的內存防護技術研究

減緩針對內存的物理攻擊的一個方法是減少內存中明文內存頁的比例,基于該思路研究人員提出了滑動窗口技術.該技術的主要思路是只保持一部分內存頁為明文狀態,為應用提供工作內存,其余內存頁均處于加密狀態.CryptKeeper[95]實現為一個具有加解密功能的虛擬內存管理器,保證任何時刻只有一小塊固定大小的內存處于明文狀態用以支撐系統運行,其他片外RAM 上的所有數據都處于加密狀態,以緩解物理攻擊.由于部分數據仍在片外RAM 中以明文狀態存儲,因此該方案并沒有徹底解決板級物理攻擊問題.德國埃爾朗根-紐倫堡大學提出了RamCrypt 方案[96],目標是保護進程私有數據在運行時的安全性.該方案借助TRESOR[64]等方案的抗物理攻擊密碼算法,對進程地址空間中的BSS 以及堆棧等私有數據空間進行加密保護,并基于操作系統的請求分頁機制保證這些地址空間中的內存頁只有被操作系統訪問時才被解密,從而大大降低了數據在內存中以明文形式存在的時間.為降低性能損失,該方案實現了一個滑動窗口,保證進程在任意時刻只有滑動窗口內的內存頁處于明文狀態,是安全與性能的折衷方案.實驗結果表明,一些密鑰等機密數據只有3%的時間處于明文狀態,大大減少了物理攻擊者的攻擊時機.

(2)基于片上內存的防護技術研究

CryptMe 方案[97]將通用操作系統的進程遷移到ARM TrustZone 的安全世界來運行,并設計了一個特權軟件來維護進程在安全世界的執行環境.該特權軟件首先通過同步進程在兩個世界間的進程結構體和頁表等關鍵數據結構體以及轉發系統調用來維持進程在安全世界的執行環境;其次,將受保護進程的數據段映射到片上內存以抵抗物理攻擊,并在片內RAM 上設計滑動窗口機制以解決片上內存無法同時加載進程全部數據的問題.MemVault 是針對安卓設備的細粒度片外RAM 加密方案[98].該方案利用安卓的動態污點跟蹤和分析工具TaintDroid[99]跟蹤標記敏感數據傳播,將片外RAM 中受污染的敏感數據對象加密,訪問時將其解密存儲在片上內存中.為避免頻繁的加密操作,MemVault 使用LRU(least recently used)算法將最常使用的對象保留在片上內存中.該方案需要借助ARM TrustZone 或SMMU[100]才能抵抗DMA 攻擊,并且因無法污染由本機代碼處理的敏感數據,而無法為這類數據提供保護.Oath 是一種針對TrustZone 平臺的敏感數據保護方案[101],其思路是僅在TrustZone 安全世界能夠訪問的片上內存中存儲和處理敏感數據.在該方案中,內存拆分機制將可信應用劃分為敏感部分和非敏感部分,僅將敏感部分加載到片上內存中存儲和處理,從而支持多個可信應用執行;動態片上內存分配機制按需動態調整分配給安全世界的安全片上內存大小,將安全世界不使用的片上內存交給普通世界使用,以減輕對通用操作系統的影響.Oath 將敏感I/O 數據存儲在安全片上內存中,從而為用戶提供可信用戶界面.ZeroKernel 是在GPU 片內存儲隔離的上下文中執行輕量級任務的方案[88].在該方案中,ZeroKernel 的代碼、數據和頁表分別加載到GPU 片內存儲I-Cache、C-Cache 和TLB 中,以形成駐留緩存的上下文,而ZeroKernel的代碼地址轉換和代碼PTE 則分別從TLB 和設備內存中刪除,以防止攻擊者訪問其代碼頁.為防止攻擊者重構GPU 上下文,ZeroKernel 將GPU 頁表內存位置隨機化并持續檢測頁表基地址是否被修改.該方案的局限是:ZeroKernel 代碼大小不能超出I-Cache 容量,并且由于GPU 上下文信息已在設備內存中刪除,ZeroKernel 不支持多個GPU 內核執行.一些嵌入式系統利用片上內存來抵抗物理攻擊(數據移出片上內存時需要加密保護),同時也利用片上內存的高速訪問特性來存儲高頻訪問數據以提高程序運行速度.韓國國民大學提出一種片上內存高效分配方法DynaPoMP[102],通過優化片上內存專用于敏感數據的內存比例來提高嵌入式應用程序運行速度.DynaPoMP 使用經驗方式來確定安全區域占用片上內存的比例:在各種比例情況下運行嵌入式應用程序,統計程序運行時間,程序運行時間最短的即為最佳比例.這種片上內存劃分方法只適用于程序比較固定的嵌入式設備,對于運行程序種類繁多的設備則無效.

(3)基于緩存的防護技術研究

CaSE 是弗吉尼亞理工學院暨州立大學為智能終端設計的抗物理攻擊并且與移動操作系統隔離的安全解決方案[103],其利用Cache-as-RAM 技術在TEE(trusted execution environment)安全緩存內設計了包含數據段、代碼段以及堆棧的安全運行環境,利用TEE 提供軟件隔離,利用加密和完整性校驗機制保證片外RAM 抵抗物理攻擊;該團體同時發現具有TEE 擴展的ARM CPU 在Cache 層面存在不一致現象,并利用該不一致現象成功在Cache 中為RootKit 構建執行環境CacheKit,可躲避軟硬件安全工具的檢測.美國西北大學為嵌入式系統提出了一種基于軟件的總線加密方案[104].該方案借助操作系統的分頁機制實現了對應用程序的保護.應用程序的內存頁被調用時,操作系統內核的頁錯誤處理函數將該頁從磁盤中讀入片外RAM,對該頁解密,并利用緩存鎖定技術將其鎖定在緩存中.當該頁需要被踢出內存時,內核先將其加密,然后再放入磁盤.EncExec 方案[105]預留一塊專用緩存作為安全環境,然后制定如下規則來保護進程的機密數據:首先,預留所有映射到該緩存的物理內存頁,修改內核請求分頁系統將這些內存頁只映射給進程機密數據;其次,同一時刻使用專用內存頁的總量不得超過專用緩存,防止處理器因為緩存沖突將機密數據從緩存寫回內存;最后,預留緩存必須被配置為write-back 模式,保證處理器不會將修改的數據寫回內存.上述規則保證在任意時刻進程的機密數據只在緩存中以明文形式存在,在片外RAM 中則以密文形式存在.

(4)基于寄存器的防護技術研究

美國萊斯大學提出使用寄存器在不可信操作系統中保護應用程序中敏感數據的方案Ginseng[106].該方案的安全目標是敏感數據在運行時只能出現在寄存器中,并且使用它的函數一旦被切換,則函數切換上下文只會以密文形式存在于內存中,從而不給物理攻擊者任何攻擊時機.Ginseng 設計靜態保護和運行時保護機制實現上述安全目標.靜態保護實施在編譯階段,通過擴展編譯器保證用戶標記的敏感數據在編譯后只存在于寄存器中,不會出現在內存中.運行時保護機制實施在敏感數據所在的函數,在函數調用或上下文切換需要將寄存器存儲到內存中時,通過ARM TrustZone 安全世界的一個安全服務將機密數據加密存儲在安全堆棧上.希臘FORTH 計算機科學研究所基于靜、動態插樁技術對內存操作指令進行監控[107],然后以XMM 寄存器作為中間存儲對CPU 加載/寫回的內存進行解密/加密,從而實現對片外內存數據的機密性保護.該方案的缺點在于假設整個操作系統內核以明文存儲在片外內存中并且不被攻擊,而物理攻擊者完全可以攻破該假設.德國埃爾朗根-紐倫堡大學設計了一個可抵抗板級物理攻擊的字節碼解釋器[108].該解釋器被實現為一個簡易棧圖靈機,所有的指令操作對象都存儲在棧上,同時該團隊還設計了一個安全類C 語言SCLL.在編譯階段,SCLL 編譯器調用抗物理攻擊的密碼算法TRESOR[64]對二進制程序進行加密;在運行階段,解釋器將內存中的指令、操作數解密到x86 架構的AVX 寄存器中,之后在寄存器中執行指令,最后將運行結果加密后存儲到內存中,從而保證程序的指令和數據運行時只存儲于AVX 寄存器內,一旦離開CPU 都以密文形式存在.

(5)基于其他硬件機制的防護技術研究

上海交通大學的研究團隊提出軟硬件協同的VM 安全保護方法Fidelius[109].Fidelius 利用AMD SEV 的硬件內存加密機制保護VM 內存頁,使其免受冷啟動和總線監聽等物理攻擊.為防止惡意hypervisor 通過操縱關鍵資源繞過內存保護機制,Fidelius 通過不可旁路的內存隔離機制撤銷了hypervisor 對關鍵資源的訪問權限,并提供3 種不同的門機制來確保隔離的地址空間之間的轉換,以對關鍵資源進行保護.此外,Fidelius 通過復用SEV API 實現對 VM 從啟動到關閉的寄存器狀態、運行時內存、I/O 讀寫以及內存共享的全生命周期保護.SEVGuard[110]是一個基于AMD SEV 構建的最小化的虛擬執行環境,旨在保護用戶模式應用程序的機密性.該方法將加密的應用程序遷移到輕量級VM 中,使用SEV 加密其內存和寄存器狀態,從而確保其代碼和數據的機密性.SEVGuard 引入一個主機調用接口,該接口將執行流重定向到主機,以使加密的應用程序可以使用不可信的主機功能,如系統調用和庫調用.由于重定向機制需要進行上下文切換,SEVGuard 對I/O 密集型任務的性能影響大于對CPU 密集型任務的性能影響.

3.2.3 小 結

應用程序抗物理攻擊防御方案主要針對系統休眠時和系統運行時這兩種時刻的攻擊.系統休眠時的防御方案主要目的是解決各種流行的操作系統缺乏內存保護的缺陷:Deadbolt 和Sentry 方案針對的是安卓系統,德國Fraunhofer 協會應用集成信息安全研究所的方案[92,93]針對的是Linux 操作系統,Hypnoguard 在虛擬層解決的是虛擬機的休眠時內存安全.在系統運行時防御方面,最初的方案是基于滑動窗口的思路,只有部分內存頁以明文狀態存在,其他內存頁被加密保護以減少攻擊者可獲得的信息.但是這種思路只能緩解板級物理攻擊,無法全面抵抗這種攻擊.為此,研究人員進一步提出利用芯片內部的存儲資源,包括OCM、Cache 和寄存器,構建安全執行環境的思路,基于該思路出現了各種方案:CryptMe、MemVault、ZeroKernel、CaSE 和Ginseng 等.但是這些方案的缺點在于大部分受限于片內存儲的容量,只能運行有限大小的程序.值得注意的是,CryptMe 方案采用了分頁調度機制,可以將應用程序暫時不使用的內存頁調度到片外RAM 中,從而能夠運行體積較大的程序.該方案出現了全盤加密的影子,但是沒有對OS 內核層進行加密保護,因此在理論上仍存在被攻擊的風險.基于其他處理器硬件機制保護應用程序的方案雖然不受片內存儲容量的限制,但是實際上其采用的硬件機制不屬于處理器通用資源,因此這類方案只能應用在特定處理器架構中.

3.3 全系統加密技術研究

3.3.1 密碼算法及應用程序保護方案的安全隱患

雖然第3.1 節和第3.2 節描述的研究工作能夠抵抗冷啟動攻擊等特定類型的攻擊,但是理論上他們無法全面抵抗板級物理攻擊.密鑰及密碼算法安全保障方面的工作僅僅保護了密鑰及密碼算法這類高安全要求的數據和代碼,但是沒有保護整個內存空間,物理攻擊者仍然可以對片外RAM 實施攻擊,包括獲取應用程序的機密數據、篡改代碼等.應用程序保護方面的工作僅保護了應用層,沒有考慮內核遭受物理攻擊的情況.另外,這類工作局限于片上內存容量,只能保護有限大小的程序,而實際的操作系統通常占用幾兆甚至上百兆的地址空間,遠遠超出片上內存的容量,所以這類工作無法直接應用到整個操作系統的保護.

綜上所述,前文介紹的方案均無法對整個操作系統進行保護,所以必然有一部分操作系統內核數據和代碼以明文形式存放在片外RAM 中,攻擊者完全可以通過板級物理攻擊篡改這些數據和代碼,CPU 一旦運行被篡改的代碼即可被攻擊者獲取內核的控制權,并且如果頁表、中斷向量表、內核棧、中斷處理函數等CPU 運行所必需的基本組件沒有被保護,攻擊者可利用這些組件加速攻擊,一個典型的攻擊實例如圖4 所示:CPU 讀取片上內存中的指令時,需要讀取頁表獲得指令虛擬地址對應的物理地址,攻擊者可以篡改頁表中映射該虛擬地址的Entry,將該虛擬地址映射到已經植入惡意代碼的內存,從而獲得系統的控制權.雖然CaSE 方案[103]提出將被保護程序的地址映射鎖定在TLB 中以防止攻擊者篡改的思路,但是一般來說操作系統的地址空間遠遠大于TLB 所能保護的地址空間,因此同樣存在由于部分地址空間沒有被保護而受到攻擊的缺陷,譬如以下攻擊:(1)一旦CPU 執行片外RAM 中的指令,攻擊者即通過總線向CPU 注入清空TLB 指令,使得鎖定的TLB 失效,而CPU 再次建立地址映射時頁表已經被攻擊者篡改;(2)如果中斷處理代碼沒有受到完整的保護,攻擊者可以向CPU 發起硬件中斷,將未被保護的中斷處理代碼(即位于片外RAM 中的代碼)篡改為清空TLB 指令或其他惡意代碼來控制系統.

Fig.4 An example of board level physical attacks圖4 板級物理攻擊實例

第3.1 節和第3.2 節的密碼算法保障和應用程序保護類工作無法從根本上抵抗板級物理攻擊的主要原因在于防御組件無法對其所在的地址空間進行整體保護(如果防御組件實現為內核模塊,那么其所在地址空間就是內核地址空間).雖然部分方案提出將所有的代碼特別是管理代碼全部放入片內存儲的思路,但是圖4 描述的攻擊表明這種思路對實際的操作系統內核是不可行的:由于操作系統內核體積較大無法全部放入片內存儲,攻擊者可以攻擊未受保護的那些代碼和數據,并且如果防御組件缺乏對頁表、中斷處理等關鍵數據和代碼的保護則會加速攻擊過程,而這恰恰是當前眾多方案所缺乏的.針對該安全問題,學術界提出了全系統加密技術,該技術的思路是對防御組件所在的地址空間進行整體防護.一般來說防御組件位于內核層,因此這類工作基本上對操作系統內核進行了整體防護,并向上對應用層內存也進行了加密和完整性保護.根據技術實現思路的不同,全系統加密技術可分為輕量級操作系統全系統加密和基于請求分頁系統的全系統加密兩類.

3.3.2 輕量級操作系統全系統加密

這類方案面向的是實時操作系統、嵌入式操作系統等輕量級操作系統.這類操作系統運行所需工作內存較小,完全可以整體放入片上內存中來抵抗物理攻擊.在此基礎上,內核為應用程序提供物理防護機制.

美國達特茅斯學院的研究團隊設計并實現了一個運行在片上內存的輕量級操作系統Bear OS[111]來抵抗板級物理攻擊.該操作系統內核使用微內核架構來減少自身TCB 以便運行在容量有限的片上內存中.Bear OS 限定進程只能運行在片上內存中,并設計了進程靜態加密和動態加密兩種進程保護方式.進程靜態加密的技術思路是只將進程的二進制鏡像加密,進程的數據段,包括heap、stack、data 等,直接在片上內存中分配,內核在加載進程時直接從磁盤中讀取加密鏡像,解密后放入片上內存.靜態加密方式在進程初次運行時整體加載至片上內存,對進程性能影響較小,但是對片上內存容量要求較大,需要容納整個進程空間.動態加密方式將進程的不同段分別進行加密,包括code、data、heap、stack 等段都分別加密,在進程運行過程中需要哪個段就將該段解密加載到片上內存,如果片上內存耗盡,那么就將一些暫不需要的段加密暫時備份到片外RAM 中.這種加載方式會降低進程運行速度,但是適用于進程較多并且對工作內存需求較大的場景.

國內首都師范大學的研究團隊針對實時操作系統對軟件隔離和物理安全的要求,基于ARM TrustZone 和內存加密技術提出實時任務的物理防護方法SoftME[112,113].該方法在TrustZone 的安全世界運行實時操作系統FMP[114]來處理實時任務,并將該實時操作系統運行在片上內存中以抵抗物理攻擊.SoftME 在實時操作系統內核層增加了一個任務調度器和一個內存保護引擎,其中任務調度器負責安全實時任務的調度,內存加密引擎負責安全實時任務在片上內存和片外RAM 之間的調度:當某個任務需要從片上內存切換到片外RAM 時,內存保護引擎對該任務進行加密并保護數據的完整性;當某個任務需要從片外RAM 加載到片上內存運行時,內存保護引擎會對其進行解密并執行完整性檢查.為保證普通世界與安全世界之間的通信,SoftME 設計了共享內存機制來傳遞信息.

3.3.3 基于請求分頁系統的全系統加密

除了一些簡單的實時操作系統和嵌入式操作系統,大部分成熟的操作系統運行所需的內存都比片上內存大,因此無法像輕量級操作系統那樣直接加載到片上內存中來抵抗物理攻擊.針對該問題,學術界提出了基于請求分頁系統的全系統加密技術.

德國埃爾朗根-紐倫堡大學基于TreVisor[89]系統實現了對虛擬機操作系統及上層應用的全系統加密方案HyperCrypt[115].該方案利用x86 架構的二級頁表(second layer address translation,簡稱SLAT)在虛擬機物理內存地址和實際物理內存地址轉換過程中實現了請求分頁系統,然后利用TreVisor 提供的能夠抵抗物理攻擊的加密引擎,在請求分頁系統中實現了對虛擬機物理內存頁的加密保護:虛擬機訪問一個內存頁時,HyperCrypt 對該頁進行解密放入滑動窗口,如果滑動窗口已滿就加密一個不用的內存頁以將其踢出滑動窗口.雖然該方案能夠保證虛擬機的絕大部分內存都處于加密狀態,但是滑動窗口仍然暴露給物理攻擊者,因此不能算是嚴格的全系統加密方案.德國Fraunhofer 協會的應用集成信息安全研究所幾乎同時提出了與HyperCrypt 類似的方案TransCrypt[116].TransCrypt 面向ARM 架構設計了一個輕量級hypervisor,基于硬件虛擬化機制實現了請求分頁系統,同樣保證只有虛擬機的部分內存頁處于明文狀態,其他大部分內存被加密保護.與HyperCrypt 不同的是,TransCrypt 實現了一個動態的DMA 內存頁檢測方法以抵抗DMA 攻擊,另外該方案還提供多核支持和動態的滑動窗口支持.

中國科學院軟件研究所針對ARM 平臺的TEE 操作系統不能抵抗物理攻擊的安全弱點,設計了一種新型的TEE 操作系統架構Minimal Kernel[49].該架構針對大部分TEE 操作系統鏡像較大而片上內存太小的難題,將TEE 操作系統劃分為兩部分:一部分只包含維持CPU 運行軟件所必須的核心組件,稱為最小核;其余操作系統組件則由最小核調度運行.為減小最小核的代碼量,該方案提出一種構建最小化請求分頁系統的原則,基于該原則確定了最小化請求分頁系統所必須包含的內核組件(頁表、異常向量表、低層異常處理函數、棧以及這些組件所依賴的組件).為了抵抗板級物理攻擊,最小核運行在片上內存中,其余組件運行在片外RAM 中,并由最小核提供機密性和完整性保護.實驗表明該方案構建的最小核只需要100KB,可運行在大部分ARM 平臺的片上內存中.該團隊后續為ARM CPU 架構提出了高安全Enclave 架構SecTEE[52],為ARM 平臺提供了抗板級物理攻擊和內存側信道攻擊等現代高威脅性攻擊手段的安全能力.SecTEE 在Minimal Kernel 的抗板級物理攻擊基礎之上,擴展了抗內存側信道的安全能力和可信計算特性:基于Page coloring 機制和緩存鎖定機制將安全敏感應用固定在不受外部攻擊程序影響的緩存上,抵抗基于頁表的側信道和緩存側信道攻擊;并實現可信度量、遠程證明、數據綁定等核心可信計算機制,為用戶敏感應用提供高安全并且可證明的可信執行環境.SecTEE 以軟件方式為ARM CPU 提供了一種與Intel SGX 方案同等安全水平的安全解決方案,適用于當前主流的ARM 設備,具有很好的實際意義和應用前景.Minimal Kernel 和SecTEE 實現了完整的全系統加密,具有很高的安全性,但是其帶來的系統負載也很高:一般來說SecTEE 帶來約2 倍以上的性能負載,而對于一些數據密集型程序帶來的負載可能達幾十倍.

3.3.4 小 結

從嚴格意義上來說,密鑰及密碼算法保障方案和應用程序保護方案僅僅保護了整個軟件系統中很少部分的軟件,主要是關鍵密碼算法以及部分應用程序,沒有能力提供對系統軟件(譬如操作系統內核)的保護.而系統軟件是所有應用程序的TCB,如果TCB 得不到保護,那么攻擊者在攻破TCB 之后就可以完全控制整個系統,這也是全系統加密技術產生的動機.但是目前全系統加密技術要么只能保護輕量級操作系統,要么會對系統造成極大的性能負載.以Bear OS 和SoftME 方案為例,這些方案都只能保護最多幾百KB 大小的輕量級操作系統,無法應用于成熟的大型操作系統.HyperCrypt、TransCrypt、Minimal Kernel 和SecTEE 等方案雖然能夠對成熟的操作系統進行加密保護,但這些方案給系統帶來了相當大的負載,譬如Minimal Kernel 方案對一些內存操作密集型的應用帶來的負載能夠達到50 倍.如此高的性能負載極大的限制了這些方案的實際應用,一個比較好的解決方法是結合硬件密碼加速器降低內存保護帶來的計算負載.另外,全系統加密技術離不開密鑰的支持,因此密鑰的安全性是這類方案的安全基礎之一.密鑰的安全性問題可以通過兩種方法來解決.第1 種方法是利用第3.1 節所述的密鑰及密碼算法安全保障技術來保護密鑰的安全性,這種解決思路已經在TreVisor 和RamCrypt等方案中有所體現.第2 種方法是利用設備的硬件安全密鑰,譬如移動設備普遍配備了設備根密鑰,可以基于該密鑰派生或保護內存加密所需要的密鑰,譬如Minimal Kernel 和SecTEE 等全系統加密方案使用設備硬件密鑰作為信任根,派生或保護內存加密、身份認證和數據加密等功能所需要的密鑰.

4 技術討論與工程應用建議

本節討論當前軟件方式的抗板級物理攻擊技術的優勢與不足,并給出在實際工程中部署該技術的建議.

4.1 技術優勢

軟件方式的抗板級物理攻擊技術主要有如下幾方面的技術優勢:首先,不需要專有的硬件安全資源;其次,其部署不受硬件平臺類型限制,可廣泛部署在服務器、智能終端和嵌入式設備等各種平臺上;最后,能夠達到安全性很高的物理攻擊防御能力,甚至能夠達到專有硬件保護引擎的安全水平.

不需要專有的硬件安全資源.基于硬件的物理防護方案一般在處理器上擴展硬件安全組件對片外內存進行機密性和完整性保護,譬如Intel SGX 的內存加密引擎[117].但是該類硬件安全組件目前主要應用在服務器設備,智能終端、嵌入式等設備均沒有該類技術.而軟件方式的抗板級物理攻擊技術只依賴處理器的寄存器和片上內存等處理器普遍具備的硬件資源,然后通過軟件內存加密技術實現對片外內存的保護,為不具備硬件加密引擎但是對物理防護有需求的應用場景提供了一種可行的解決方法.此外,部署這些方案無需更換硬件,只需改造系統軟件即可,極大的降低了硬件成本.另外,軟件的可擴展性和靈活性均高于硬件,一旦出現安全問題,能夠比較容易的通過打補丁的方式進行更新.

不受平臺限制.軟件方式的抗板級物理攻擊方法因為僅使用處理器芯片內普遍配備的資源,所以可以靈活的部署在各種平臺上.TreVisor、HyperCrypt 等方案可以應用在云平臺上,為虛擬機提供保護;AESSE、TRESOR、Loop-Amnesia 等方案可以應用于個人電腦;Minimal Kernel、SecTEE 等方案可以應用于智能終端;SoftME、Bear OS 等方案可以應用于低端嵌入式設備.因此,軟件方式的抗物理攻擊防護方案幾乎涵蓋了所有類型的計算平臺,能夠為絕大多數的設備提供物理防護能力.

能達到很高的物理安全水平.雖然部分方案的威脅模型只涵蓋某種類型的板級物理攻擊(譬如只考慮冷啟動攻擊)或者從效率方面出發,沒有考慮全面的板級物理攻擊能力,只對密鑰、密碼算法或應用程序等部分代碼和數據提供了物理防護,但是實際上軟件方式的抗板級物理攻擊防御技術完全能夠全面抵抗冷啟動攻擊、總線攻擊和DMA 攻擊,達到與硬件方式相同的安全能力.中科院軟件所研究團隊的Minimal Kernel 和SecTEE 方案達到了與Intel SGX 相同的安全水平.此外,SecTEE 方案還增加了內存側信道防護機制,而Intel SGX 的內存側信道防護問題至今仍未完全解決,從這方面也可以看出軟件方式的靈活性.

4.2 技術不足之處

大部分方案只保護部分關鍵代碼,不能提供全系統加密.目前絕大多數方案主要是保護應用程序的關鍵數據,沒有考慮對操作系統內核的保護.實際上,本文第3.3.1 節已經指出,如果攻擊者具備全方面的電路板物理操控能力,在沒有對內核進行保護的情況下,其完全有能力從總線獲取內核的內存鏡像甚至讓處理器運行內核態的惡意代碼.攻擊者一旦攻破內核,也就具備控制整個系統的能力,從而使得應用層的保護沒有意義.這也是為什么大部分方案的威脅模型只考慮部分板級物理攻擊,主要是冷啟動攻擊,而不考慮總線攻擊,或者僅考慮被動式總線竊聽攻擊.然而總線攻擊是板級物理攻擊的一個典型案例,以MIT 團隊攻擊Xbox[7]為例,其所用到的硬件成本僅幾十美元,是一種非常嚴重并且必須考慮的實際威脅.

對系統性能影響較大.軟件方式的內存保護需要使用軟件加密引擎來對片外內存進行加密,而軟件加密引擎會占用處理器資源,從而影響普通程序的運行效率.另外,很多方案基于寄存器實現,中間計算結果存儲在寄存器中,為避免進行上下文切換將中間計算結果切換到不安全的內存中,每次調用必須是原子操作并且占用時間不能太長以免影響用戶輸入響應,這種方式會造成頻繁的關中斷和上下文切換操作,從而降低系統性能.通過統計各種方案的實驗結果,發現大部分方案都給系統帶來了2 倍以上的性能負載,而Minimal Kernel 等全系統加密方案甚至給部分應用帶來幾十倍的性能負載.軟件加密帶來的負載可以通過一些硬件密碼加速器來緩解,譬如TRESOR 方案使用x86 架構提供的硬件加密指令AES-NI 來降低內存加密帶來的性能負載.

影響部分專有功能的運行.一些方案占用了處理器上一些具有專門用途的硬件資源,譬如AESSE 方案占用了用于多媒體計算的SSE 寄存器,TRESOR 方案占用了用于程序調試的斷點寄存器,CaSE 方案占用了用于提高內存讀寫速度的緩存等等.占用這些硬件資源必然會對相關功能的正常運行造成影響.

缺乏對隔離機制的支持.大部分方案將板級物理攻擊防御組件實現為操作系統的一個內核模塊,但是并沒有與其他內核組件進行隔離,因此一旦攻擊者攻破內核就完全有能力禁用防御組件.不但Linux、Windows 這類大型操作系統經常被暴露出安全漏洞,像 TEE OS 這種專有的小型操作系統也被暴露出多個高危漏洞(CVE-2013-3051,CVE-2014-4322,CVE-2015-4422 等).如果軟件實現的抗物理攻擊組件沒有與操作系統隔離,那么攻擊者可以利用軟件漏洞禁用抗物理攻擊機制,這也是大部分方案都假設內核安全的原因.實際上,學術界已經提出在內核內部建立邏輯隔離地址空間的技術[53-56],并且該技術僅依賴處理器的內存管理等基本機制,可廣泛應用在各種平臺上.因此,增加隔離機制是增強當前方案安全性的一個可行思路.

4.3 工程應用建議

首先,對于像Windows、Linux 這樣的大型操作系統,建議將防御組件以內核模塊的形式實現在內核層,然后向上層應用提供相應的安全服務.并且不建議這些操作系統使用全系統加密方案,因為以Minimal Kernel 和SecTEE 等全系統加密方案的性能評估結果來看,全系統加密帶來的性能負載可達2~50 多倍(主要與應用對內存的訪問頻率有關,對內存訪問越頻繁性能影響越大);而密碼算法保障以及應用程序保護等非全系統加密方案帶來的性能負載一般在2 倍以內,最差情況也在10 倍以內.大型操作系統對性能要求較高,而大部分應用的安全要求不需要達到防御物理攻擊的水平,因此將防御組件實現為內核模塊并只保障安全密切相關的應用即可.但是為了防止內核軟件漏洞導致攻擊者使用軟件方式即破壞防御組件的安全問題,建議參考內核嵌套隔離地址空間技術[53-56]在內核層構建一個受保護的隔離地址空間,該技術通過獨立頁表、安全上下文切換、內核態代碼去特權指令等安全機制保證其他內核組件無法訪問隔離地址空間內部的代碼和數據,并且只能通過預先定義好的接口調用隔離地址空間內部的安全服務,從而保證隔離地址空間與其他內核組件的邏輯隔離;然后在該隔離地址空間內運行可抵抗板級物理攻擊的防御組件并向外部提供調用接口,應用層可調用該接口實現對關鍵數據的保護.

其次,對于安全性要求較高的小型操作系統,譬如TEE OS 或安全密切相關的嵌入式OS,建議使用全系統加密方案.因為TEE OS 這類操作系統處理的主要是安全敏感業務,譬如密鑰管理、身份認證、移動支付、數字版權保護和個人生物信息存儲等,一旦信息泄露造成的損失較大.在這種高安全要求的背景下,為系統部署安全性較高的全系統加密方案是必要的.對于體積特別小的嵌入式OS,譬如只有幾十KB 或100KB 左右的輕量級操作系統內核,可以將操作系統內核整體運行在片內存儲中,然后根據需要將應用調度到片內存儲中運行,一旦不需要運行即可將應用加密存儲到片外內存中.對于體積較大的操作系統內核,可以借鑒Minimal Kernel 方案,構建一個可調度內核以及應用的最小化請求分頁系統,將該請求分頁系統運行在片內存儲中,對內核其他組件以及應用進行按需調度并實施加密和完整性保護.基于請求分頁機制的全系統加密方案由于對內核等系統軟件也進行了內存加密保護,給系統帶來的性能負載較重,特別是對內存訪問較頻繁的應用帶來的性能負載可能達50多倍.

最后,對于配備了硬件密碼加速器的處理器,防御組件應盡可能使用這些加速器來進行密碼操作,從而減少對主處理器的使用,降低方案帶來的負載.但是,并不是所有的硬件密碼加速都能提高軟件加密的速度.法國帕萊索的研究所對飛思卡爾的密碼加速模塊CAAM(cryptographic acceleration and assurance module)進行了性能測試[118],測試結果表明在保護數據較小時,譬如1KB,ARM i.MX6Q 處理器進行完整性校驗只需要23μs,而CAAM 需要1 075μs;只有在保護較大數據(超過100KB)時,CAAM 密碼加速器才會比普通軟件加密速度快:保護數據為1MB 時,主處理器進行完整性校驗需要21 696μs,而CAAM 只需要13 008μs.這是因為CAAM 使用DMA 方式進行數據傳輸,在輸入數據較小時,DMA 數據傳輸帶來的延遲大大超過了其本身帶來的加速.因此,最好采用類似Intel AES-NI 這種CPU 擴展指令方式的硬件密碼加速機制.

5 研究展望

本節根據軟件方式抗板級物理攻擊防御技術的演進,對該技術的發展趨勢和可能出現的研究點進行總結和討論.

5.1 全系統加密或邏輯隔離的防御技術研究

隨著物理攻擊方法的提高,用戶對計算機系統的安全要求也越來越高.而安全本身是一個木桶效應非常明顯的領域,攻擊者一般會從安全性最弱的組件實施攻擊.對于計算機系統來說,如果某一部分組件沒有被防護,那么攻擊者會先攻擊這一部分組件,獲得系統權限后再去攻擊防御組件.因此,為了保證安全方案實際可用,需要防御組件能夠保護其所在的整個地址空間.

如果防御組件位于內核層,那么就需要對整個內核進行加密防御.但是從性能角度來看,對整個內核進行全系統加密只適用于小型、安全密切相關并且對性能要求不太高的操作系統,不適用于對性能要求較高的大型操作系統.對于大型操作系統,可以將嵌套內核隔離技術與軟件加密相結合,設計與其他組件隔離的抗板級物理攻擊防御技術,避免對整個內核進行加密帶來的計算負載.這方面的工作在學術界還沒有展開,但是能夠解決軟件方式抗板級物理攻擊的短板,是一種實際可用的技術思路.

5.2 軟硬件協同的安全防御技術

軟件方式的抗板級物理攻擊方法的一個技術劣勢是性能低,這是軟件內存加密造成的.解決該問題的常規思路是設計專有的硬件加密引擎或硬件密碼加速器,將內存加密部分交給專門的硬件組件來處理,軟件專門負責安全內存管理、中斷管理、任務調度等系統軟件功能.這種設計思路也符合現代計算機的發展趨勢:圖靈獎獲得者Hennessy 和Patterson 共同提出未來計算機體系結構的一大發展趨勢[119]就是為專有領域設計專有的處理器(domain-specific architecture).

軟硬件協同設計在抗板級物理攻擊方面具有優勢的另外一個實例是現代Secure Enclave 技術.現代計算機系統已經將抗板級物理攻擊作為一項必備安全屬性,而Secure Enclave 技術的一個重要安全能力就是抵抗板級物理攻擊.主流處理器都已經配備或開始研究Secure Enclave 方案,譬如Intel SGX、AMD SME、RISC-V Keystone[120],還有為ARM 平臺設計的學術界方案Komodo[121]和SecTEE 等.Komodo 方案設計者提出了一種軟硬件協同設計方法:硬件只負責基本的硬件安全機制,包括內存加密和地址空間隔離等,軟件利用這些基本的硬件安全機制實現Secure Encalve 功能,包括內存管理、中斷處理和可信計算等.這種設計方法的主要出發點是硬件的可塑性較低,一旦出現問題難以修復,而軟件具有很高的靈活性,可以比較容易的修復或增添特性.SecTEE方案的實驗結果也證實了軟件內存加密會增加很高的負載.類似于人工智能領域的專用深度學習處理器TPU[122]和寒武紀AI 芯片[123-126],為Secure Enclave 技術設計專用的安全處理器既符合體系結構領域的發展趨勢,也是該技術的實際需求.

5.3 與側信道結合的新攻擊方法

以前內存側信道攻擊[127-137]主要基于頁錯誤或緩存獲取另外一個地址空間或隔離執行環境所運行程序的內存地址訪問模式,然后基于內存地址訪問模式推測被攻擊程序的機密信息,譬如密鑰或圖像信息.由于內存的數據和代碼都是經系統總線傳輸給處理器,其中地址總線傳輸地址信息,數據總線傳輸數據和代碼,因此板級物理攻擊完全有能力從總線上竊聽處理器正在訪問的數據或代碼的地址,從而獲得程序的內存地址訪問模式.也就是說,攻擊者完全有能力利用板級物理攻擊實施側信道攻擊.該攻擊方法由加州大學伯克利分校的研究團隊提出并實現[10],已經成功對Intel SGX 的Encalve 實施了攻擊.但是目前該攻擊方法還處于初級階段,只能對數據加載類型的、數據量大的程序有效,與依賴代碼分支的側信道(譬如RSA 算法的側信道攻擊[138])結合的攻擊效果還不明顯,因為處理器會將經常執行的代碼保留在緩存中,從總線上無法檢測到該代碼的地址信息.同樣對于數據量小的程序,內存訪問分布不均勻的程序,以及受緩存回寫機制影響的程序,該方法的攻擊能力還無法提供精確的內存地址訪問模式,有待后續研究.由于該類攻擊剛剛被提出,并且攻擊能力還不完善,是一個非常值得關注并深入探索的研究點.

6 結束語

本文針對威脅日益嚴重的板級物理攻擊,調研其威脅模型、相關技術和現實存在的攻擊案例,重點對軟件方式的、不需要修改處理器體系結構的抗板級物理攻擊防御技術進行了詳細深入的歸納總結,包括各種方案的技術原理、安全能力和保護范圍等.本文還討論了這種防御技術的優勢及其目前存在的問題,并給出了在實際工程中應用該技術的建議,以便工程人員能夠合理、正確的使用該技術.最后本文探討了該技術今后的發展趨勢和一些研究點,以供相關領域的研究人員參考.

主站蜘蛛池模板: 福利片91| 亚洲精品国产日韩无码AV永久免费网 | 99久久精品国产综合婷婷| 国产精品美人久久久久久AV| 亚洲色图欧美| 无码网站免费观看| 国内精品91| 亚洲一级毛片在线播放| 国产精品中文免费福利| 日本高清在线看免费观看| 久久国产精品波多野结衣| 成人欧美在线观看| 尤物国产在线| 亚国产欧美在线人成| 午夜天堂视频| 美女国产在线| 国产aaaaa一级毛片| 国产免费精彩视频| 中文无码毛片又爽又刺激| 久久青草免费91线频观看不卡| 精品少妇三级亚洲| 国产黄在线观看| 国产欧美日韩综合一区在线播放| 中文字幕欧美日韩高清| 国产亚洲精久久久久久无码AV| 色色中文字幕| 亚洲第一视频区| 香蕉视频国产精品人| 国产成人精品免费av| 综合色亚洲| 2022国产无码在线| 欧美a在线视频| 中文字幕在线观看日本| 91精品情国产情侣高潮对白蜜| 999精品视频在线| 91在线播放免费不卡无毒| 在线观看国产黄色| AV在线麻免费观看网站| 色网在线视频| 一级爆乳无码av| 国产丝袜无码一区二区视频| 国产无遮挡裸体免费视频| 国产乱人乱偷精品视频a人人澡| 99热最新网址| 91亚瑟视频| 国产女人水多毛片18| 日本国产精品一区久久久| 国产激情无码一区二区APP| 澳门av无码| 一级片免费网站| 91在线国内在线播放老师| 97无码免费人妻超级碰碰碰| 国产欧美视频在线观看| 亚洲人成人无码www| 亚洲二区视频| 成人精品亚洲| 精品福利国产| 国产在线一区二区视频| 女人18毛片水真多国产| 国产成人区在线观看视频| 精品人妻一区二区三区蜜桃AⅤ| 欧美特黄一级大黄录像| 精品视频91| 暴力调教一区二区三区| 国产免费久久精品44| 日韩中文精品亚洲第三区| 亚洲国产中文欧美在线人成大黄瓜 | 亚洲最新地址| 97在线视频免费观看| 日本免费精品| 福利国产在线| 国产草草影院18成年视频| 天天综合天天综合| 麻豆精品久久久久久久99蜜桃| 欧美午夜久久| 成人一级免费视频| 中文成人在线视频| 强奷白丝美女在线观看| 国产香蕉在线| 国产一级二级在线观看| 国产精品福利导航| 国产毛片基地|