• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    抗電路板級(jí)物理攻擊的操作系統(tǒng)防御技術(shù)研究?

    2020-01-02 03:45:34張倩穎趙世軍
    軟件學(xué)報(bào) 2020年10期

    張倩穎,趙世軍

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

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

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

    4(計(jì)算機(jī)體系結(jié)構(gòu)國(guó)家重點(diǎn)實(shí)驗(yàn)室(中國(guó)科學(xué)院 計(jì)算技術(shù)研究所),北京 100190)

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

    隨著信息技術(shù)的發(fā)展,移動(dòng)互聯(lián)網(wǎng)、云計(jì)算、工業(yè)4.0 等應(yīng)用場(chǎng)景不斷出現(xiàn),以實(shí)現(xiàn)消費(fèi)者、企業(yè)以及工業(yè)等領(lǐng)域的信息化目標(biāo).與此同時(shí),越來(lái)越多的安全敏感業(yè)務(wù)也遷移到智能終端和服務(wù)器平臺(tái)等各種計(jì)算設(shè)備上:智能終端等個(gè)人終端設(shè)備提供身份認(rèn)證、電子錢(qián)包、企業(yè)辦公等安全敏感功能;企業(yè)數(shù)據(jù)中心和智能工廠(chǎng)等服務(wù)器平臺(tái)存儲(chǔ)并處理企業(yè)數(shù)據(jù)以及工業(yè)數(shù)據(jù),這些數(shù)據(jù)涉及企業(yè)的核心機(jī)密以及工廠(chǎng)的隱私信息,一旦泄露后果極為嚴(yán)重.

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

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

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

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

    1 物理攻擊概述

    根據(jù)攻擊層次的不同,物理攻擊分為芯片級(jí)物理攻擊和電路板級(jí)物理攻擊[46]兩類(lèi).芯片級(jí)物理攻擊的目標(biāo)是位于芯片內(nèi)部的密鑰等機(jī)密信息,實(shí)施該攻擊需要電子顯微鏡工作臺(tái)、聚焦離子束工作臺(tái)和激光切割系統(tǒng)等企業(yè)級(jí)實(shí)驗(yàn)環(huán)境,攻擊成本非常高.同時(shí)該類(lèi)攻擊對(duì)攻擊人員的專(zhuān)業(yè)知識(shí)的廣度和深度都有很高的要求,一般要求攻擊人員掌握高級(jí)芯片架構(gòu)、探針技術(shù)、聚焦離子束操作等多個(gè)領(lǐng)域的專(zhuān)業(yè)知識(shí).此外,每次攻擊只能針對(duì)一塊芯片,無(wú)法一次性對(duì)批量的芯片造成威脅,因此對(duì)于價(jià)值一般的設(shè)備來(lái)說(shuō)攻擊意義不大.

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

    1.1 板級(jí)物理攻擊威脅模型

    在板級(jí)物理攻擊敵手能力下,只有CPU 芯片能夠抵抗板級(jí)物理攻擊,片外RAM 和系統(tǒng)總線(xiàn)等其他組件都能夠被攻擊者控制.因此在該模型下,只有CPU 芯片屬于可信區(qū)域,是整個(gè)系統(tǒng)的可信計(jì)算基(trusted computing base,簡(jiǎn)稱(chēng)TCB),其他硬件組件都允許被敵手控制.敵手能夠主動(dòng)控制片外RAM 以及系統(tǒng)總線(xiàn)傳輸?shù)膬?nèi)容.在該威脅模型下,敵手能夠任意控制CPU 從片外RAM 讀入的內(nèi)容,譬如篡改和竊聽(tīng)CPU 讀入的代碼和數(shù)據(jù)、篡改片外RAM 的內(nèi)容等等.因此,所有從片外RAM 讀入的數(shù)據(jù)都不可信,必須經(jīng)過(guò)機(jī)密性和完整性保護(hù).

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

    ·欺騙攻擊:敵手使用任意的內(nèi)容修改某地址處內(nèi)存塊的內(nèi)容.敵手將自己想讓CPU 獲取的內(nèi)容存儲(chǔ)到惡意片外RAM 中.每當(dāng)CPU 從該地址讀取內(nèi)容時(shí),敵手將數(shù)據(jù)總線(xiàn)切換到惡意片外RAM,這樣CPU 讀取的就是敵手設(shè)置的內(nèi)容.

    ·替換攻擊:敵手將地址A處的內(nèi)容替換為地址B處的內(nèi)容.敵手將正常片外RAM 地址B處的內(nèi)容存放在惡意片外RAM 地址A處.每當(dāng)CPU 讀取地址A處的內(nèi)容時(shí),敵手將數(shù)據(jù)總線(xiàn)切換到惡意片外RAM,這樣CPU讀取的就是正常片外RAM 地址B處的內(nèi)容.

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

    1.2 實(shí)際板級(jí)物理攻擊

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

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

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

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

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

    2 抗板級(jí)物理攻擊相關(guān)技術(shù)

    2.1 片上內(nèi)存

    片上內(nèi)存(on-chip memory,簡(jiǎn)稱(chēng)OCM)已經(jīng)是嵌入式領(lǐng)域處理器芯片(又稱(chēng)為片上系統(tǒng))的一個(gè)基礎(chǔ)組件,基本上所有的嵌入式處理器芯片都配備了片上內(nèi)存.文獻(xiàn)[49]調(diào)研了智能終端領(lǐng)域十幾款主流的片上系統(tǒng),統(tǒng)計(jì)結(jié)果表明大部分芯片都配備有100KB 以上的片上內(nèi)存.

    片上內(nèi)存相比片外內(nèi)存(一般為DRAM 芯片)在性能和安全性?xún)煞矫娑季哂幸欢ǖ膬?yōu)勢(shì).在性能方面,片上內(nèi)存因?yàn)橥ㄟ^(guò)內(nèi)部高速總線(xiàn)與CPU 連接,因此CPU 訪(fǎng)問(wèn)片上內(nèi)存的速度一般比片外內(nèi)存快.在安全性方面,片上內(nèi)存具有更高的物理安全性,具有抵抗板級(jí)物理攻擊的能力:片上內(nèi)存沒(méi)有向芯片外部暴露物理引腳(physical pin),因此其數(shù)據(jù)信息和地址信息不會(huì)從芯片外引腳或總線(xiàn)上泄露出去.但是,物理攻擊者可以通過(guò)冷啟動(dòng)攻擊加載惡意攻擊代碼或惡意DMA 設(shè)備來(lái)獲取片上內(nèi)存的內(nèi)容.對(duì)于冷啟動(dòng)攻擊方式,英國(guó)哥倫比亞大學(xué)研究團(tuán)隊(duì)[50]以及國(guó)內(nèi)中科院軟件所研究團(tuán)隊(duì)[51]在實(shí)際物理開(kāi)發(fā)板上的實(shí)驗(yàn)表明智能終端處理器芯片的BootROM 代碼在重啟后一般會(huì)對(duì)片上內(nèi)存進(jìn)行清空.而冷啟動(dòng)攻擊的攻擊程序只能在重啟設(shè)備后才能加載,因此冷啟動(dòng)攻擊無(wú)法獲取片上內(nèi)存的內(nèi)容.對(duì)于DMA 方式的攻擊,硬件系統(tǒng)或軟件系統(tǒng)設(shè)計(jì)者需要將片上內(nèi)存與惡意DMA 外設(shè)進(jìn)行隔離以防止它們通過(guò)DMA 方式獲取片上內(nèi)存的內(nèi)容.國(guó)內(nèi)中科院軟件所的研究團(tuán)隊(duì)[49,52]使用ARM TrustZone 的隔離能力來(lái)抵抗這種攻擊,其他可采用的隔離方式還包括嵌套內(nèi)核隔離機(jī)制[53-56],該隔離機(jī)制允許系統(tǒng)軟件設(shè)計(jì)者在處理器沒(méi)有提供類(lèi)似ARM TrustZone 這種硬件隔離機(jī)制的情況下邏輯隔離出一塊地址空間.

    2.2 基于Merkle Tree的內(nèi)存完整性保護(hù)技術(shù)

    Merkle Tree 是保護(hù)內(nèi)存完整性的主要機(jī)制.傳統(tǒng)的Merkle Tree 內(nèi)存保護(hù)方案如下(如圖3 左所示):首先將內(nèi)存劃分為一個(gè)個(gè)內(nèi)存塊并對(duì)每個(gè)內(nèi)存塊進(jìn)行消息驗(yàn)證碼(message authentication code,簡(jiǎn)稱(chēng)MAC)計(jì)算,得到的MAC 值作為Merkle Tree 的葉子節(jié)點(diǎn),然后自葉子節(jié)點(diǎn)向上一層一層進(jìn)行MAC 計(jì)算,最終計(jì)算到根節(jié)點(diǎn).該樹(shù)根節(jié)點(diǎn)可以看作整個(gè)內(nèi)存的完整性值,需要存儲(chǔ)在芯片內(nèi)部.每次從片外內(nèi)存讀取數(shù)據(jù)時(shí),都需要從對(duì)應(yīng)葉子節(jié)點(diǎn)計(jì)算到根節(jié)點(diǎn),用計(jì)算得到的根節(jié)點(diǎn)值與芯片內(nèi)部的標(biāo)準(zhǔn)完整性值對(duì)比,以檢測(cè)讀取的片外內(nèi)存是否被篡改;每次將芯片內(nèi)的數(shù)據(jù)(譬如緩存或片上內(nèi)存的數(shù)據(jù))寫(xiě)回片外內(nèi)存上時(shí),需要更新對(duì)應(yīng)葉子節(jié)點(diǎn)以及該節(jié)點(diǎn)到樹(shù)根路徑上所有節(jié)點(diǎn)的值.

    Fig.3 Comparison between Merkle Tree and Bonsai Merkle Tree圖3 Merkle Tree 與Bonsai Merkle Tree 對(duì)比

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

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

    3 軟件方式的抗板級(jí)物理攻擊防御技術(shù)

    軟件方式的抗板級(jí)物理攻擊的操作系統(tǒng)防御技術(shù)借助處理器芯片內(nèi)部的通用存儲(chǔ)資源,如CPU 專(zhuān)用寄存器、CPU 緩存、片內(nèi)RAM 等,無(wú)需修改處理器硬件即可提供較高的物理安全性,成為系統(tǒng)安全領(lǐng)域的一個(gè)研究熱點(diǎn).這方面的研究工作按照保護(hù)范圍可以分為3 類(lèi):第1 類(lèi)主要關(guān)注密鑰等對(duì)安全性要求非常高的數(shù)據(jù),保障其存儲(chǔ)和相應(yīng)密碼算法實(shí)現(xiàn)的安全性;第2 類(lèi)從保護(hù)安全攸關(guān)應(yīng)用程序出發(fā),借助片內(nèi)存儲(chǔ)資源保護(hù)安全應(yīng)用的物理安全性;第3 類(lèi)從保護(hù)整個(gè)系統(tǒng)出發(fā),著重考慮運(yùn)用有限的片內(nèi)存儲(chǔ)空間為包含操作系統(tǒng)和應(yīng)用程序在內(nèi)的完整系統(tǒng)提供安全執(zhí)行環(huán)境.本節(jié)按上述分類(lèi)對(duì)已有研究工作進(jìn)行全面分析和系統(tǒng)總結(jié).

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

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

    3.1.1 應(yīng)用層密鑰和密碼算法保護(hù)方案

    這類(lèi)方案在用戶(hù)層實(shí)現(xiàn),利用片內(nèi)存儲(chǔ)資源進(jìn)行密鑰存儲(chǔ)和密碼學(xué)計(jì)算,供其他應(yīng)用程序調(diào)用,以保護(hù)應(yīng)用程序密鑰的安全性.基于片內(nèi)存儲(chǔ)的保護(hù)方案需要防止普通應(yīng)用程序訪(fǎng)問(wèn)敏感數(shù)據(jù)的存儲(chǔ)位置讀取或者覆蓋密鑰,以及防止上下文切換等過(guò)程將敏感數(shù)據(jù)保存到片外RAM 中,這些限制通常需要root 權(quán)限才能實(shí)現(xiàn),因此這類(lèi)方案通常在內(nèi)核層實(shí)現(xiàn),在應(yīng)用層實(shí)現(xiàn)的密鑰和密碼算法保護(hù)方案較少,目前已知的僅有Parker 等提出的方案[60]和Peapods[61]方案.

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

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

    3.1.2 內(nèi)核層密鑰和密碼算法保護(hù)方案

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

    內(nèi)核層密鑰和密碼算法保護(hù)方案有 x86 架構(gòu)中保護(hù)對(duì)稱(chēng)密碼算法的方案 AESSE[63]、TRESOR[64]、Loop-Amnesia[65]、FrozenCache[66],ARM 架構(gòu)中保護(hù)對(duì)稱(chēng)密碼算法的方案ARMORED[67,68]、Key-hiding[69]、Anti-forensics[70],x86 架構(gòu)中保護(hù)非對(duì)稱(chēng)密碼算法的方案PRIME[71]、文獻(xiàn)[72]中的方案、RegRSA[73]、Copker[74]、Mimosa[75],以及利用GPU 保護(hù)對(duì)稱(chēng)和非對(duì)稱(chēng)密碼算法的方案PixelVault[76].

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

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

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

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

    內(nèi)核層密鑰和密碼算法保護(hù)方案可以抵抗冷啟動(dòng)攻擊,但通常難以抵抗對(duì)系統(tǒng)空間具有寫(xiě)訪(fǎng)問(wèn)權(quán)限的攻擊者的攻擊.例如,具有root 權(quán)限的攻擊者可以輕松加載內(nèi)核模塊,利用該模塊將密鑰從CPU 寄存器提取到片外RAM 中.Blass 和Robertson 將不能在內(nèi)核特權(quán)級(jí)運(yùn)行任意代碼定義為內(nèi)核完整性屬性[80].即使是PixelVault 在其初始化期間也需要保證操作系統(tǒng)內(nèi)核的完整性.事實(shí)上這樣的屬性很難滿(mǎn)足.在實(shí)際應(yīng)用中,惡意軟件通??梢垣@取root 權(quán)限,且DMA 攻擊可以通過(guò)物理訪(fǎng)問(wèn)將惡意代碼寫(xiě)入系統(tǒng)空間,而很多方案的威脅模型中并沒(méi)有考慮抵抗DMA 攻擊.此外,大部分基于寄存器的方案只能保護(hù)物理平臺(tái)密鑰的安全性,無(wú)法保護(hù)虛擬機(jī)中的密鑰,這是因?yàn)榭蛻?hù)機(jī)的寄存器在虛擬機(jī)切換時(shí)會(huì)存儲(chǔ)到主機(jī)的片外RAM 中,存在被物理攻擊的風(fēng)險(xiǎn).

    3.1.3 Hypervisor 層密鑰和密碼算法保護(hù)方案

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

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

    3.1.4 小 結(jié)

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

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

    3.2 應(yīng)用程序抗物理攻擊防御技術(shù)研究

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

    3.2.1 系統(tǒng)休眠時(shí)應(yīng)用程序保護(hù)方案

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

    為增強(qiáng)Linux 操作系統(tǒng)休眠時(shí)的物理安全性,德國(guó)Fraunhofer 協(xié)會(huì)的應(yīng)用集成信息安全研究所將Linux 的全盤(pán)加密機(jī)制從磁盤(pán)加密擴(kuò)展到了內(nèi)存加密[92].設(shè)備休眠和啟動(dòng)時(shí)Linux 操作系統(tǒng)會(huì)轉(zhuǎn)換所有進(jìn)程狀態(tài),該方案在進(jìn)程轉(zhuǎn)換狀態(tài)之前調(diào)用全盤(pán)加密機(jī)制的加解密接口對(duì)進(jìn)程的虛擬內(nèi)存地址空間進(jìn)行加解密,之后清空磁盤(pán)加密密鑰以及相關(guān)密碼算法的數(shù)據(jù)結(jié)構(gòu)以防止攻擊者從內(nèi)存鏡像中獲取該密鑰.該團(tuán)隊(duì)后續(xù)又基于Linux CGroup 的freezer 子系統(tǒng)實(shí)現(xiàn)了對(duì)進(jìn)程組的內(nèi)存加密方案Freeze&Crypt[93].該方案的技術(shù)思路是在freezer 子系統(tǒng)停止和啟動(dòng)進(jìn)程組的流程中加入進(jìn)程加密和解密步驟,從而達(dá)到同時(shí)加密保護(hù)一個(gè)進(jìn)程組的目標(biāo).該方案適用于移動(dòng)設(shè)備等活動(dòng)進(jìn)程和休眠進(jìn)程共存的場(chǎng)景.該團(tuán)隊(duì)在安卓容器場(chǎng)景中展示了方案的可行性,只有活動(dòng)的安卓容器在內(nèi)存中處于明文狀態(tài),其他后臺(tái)容器均被加密以抵抗物理攻擊.

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

    3.2.2 系統(tǒng)運(yùn)行時(shí)應(yīng)用程序保護(hù)方案

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

    (1)基于內(nèi)存滑動(dòng)窗口的內(nèi)存防護(hù)技術(shù)研究

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

    (2)基于片上內(nèi)存的防護(hù)技術(shù)研究

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

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

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

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

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

    (5)基于其他硬件機(jī)制的防護(hù)技術(shù)研究

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

    3.2.3 小 結(jié)

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

    3.3 全系統(tǒng)加密技術(shù)研究

    3.3.1 密碼算法及應(yīng)用程序保護(hù)方案的安全隱患

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

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

    Fig.4 An example of board level physical attacks圖4 板級(jí)物理攻擊實(shí)例

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

    3.3.2 輕量級(jí)操作系統(tǒng)全系統(tǒng)加密

    這類(lèi)方案面向的是實(shí)時(shí)操作系統(tǒng)、嵌入式操作系統(tǒng)等輕量級(jí)操作系統(tǒng).這類(lèi)操作系統(tǒng)運(yùn)行所需工作內(nèi)存較小,完全可以整體放入片上內(nèi)存中來(lái)抵抗物理攻擊.在此基礎(chǔ)上,內(nèi)核為應(yīng)用程序提供物理防護(hù)機(jī)制.

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

    國(guó)內(nèi)首都師范大學(xué)的研究團(tuán)隊(duì)針對(duì)實(shí)時(shí)操作系統(tǒng)對(duì)軟件隔離和物理安全的要求,基于ARM TrustZone 和內(nèi)存加密技術(shù)提出實(shí)時(shí)任務(wù)的物理防護(hù)方法SoftME[112,113].該方法在TrustZone 的安全世界運(yùn)行實(shí)時(shí)操作系統(tǒng)FMP[114]來(lái)處理實(shí)時(shí)任務(wù),并將該實(shí)時(shí)操作系統(tǒng)運(yùn)行在片上內(nèi)存中以抵抗物理攻擊.SoftME 在實(shí)時(shí)操作系統(tǒng)內(nèi)核層增加了一個(gè)任務(wù)調(diào)度器和一個(gè)內(nèi)存保護(hù)引擎,其中任務(wù)調(diào)度器負(fù)責(zé)安全實(shí)時(shí)任務(wù)的調(diào)度,內(nèi)存加密引擎負(fù)責(zé)安全實(shí)時(shí)任務(wù)在片上內(nèi)存和片外RAM 之間的調(diào)度:當(dāng)某個(gè)任務(wù)需要從片上內(nèi)存切換到片外RAM 時(shí),內(nèi)存保護(hù)引擎對(duì)該任務(wù)進(jìn)行加密并保護(hù)數(shù)據(jù)的完整性;當(dāng)某個(gè)任務(wù)需要從片外RAM 加載到片上內(nèi)存運(yùn)行時(shí),內(nèi)存保護(hù)引擎會(huì)對(duì)其進(jìn)行解密并執(zhí)行完整性檢查.為保證普通世界與安全世界之間的通信,SoftME 設(shè)計(jì)了共享內(nèi)存機(jī)制來(lái)傳遞信息.

    3.3.3 基于請(qǐng)求分頁(yè)系統(tǒng)的全系統(tǒng)加密

    除了一些簡(jiǎn)單的實(shí)時(shí)操作系統(tǒng)和嵌入式操作系統(tǒng),大部分成熟的操作系統(tǒng)運(yùn)行所需的內(nèi)存都比片上內(nèi)存大,因此無(wú)法像輕量級(jí)操作系統(tǒng)那樣直接加載到片上內(nèi)存中來(lái)抵抗物理攻擊.針對(duì)該問(wèn)題,學(xué)術(shù)界提出了基于請(qǐng)求分頁(yè)系統(tǒng)的全系統(tǒng)加密技術(shù).

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

    中國(guó)科學(xué)院軟件研究所針對(duì)ARM 平臺(tái)的TEE 操作系統(tǒng)不能抵抗物理攻擊的安全弱點(diǎn),設(shè)計(jì)了一種新型的TEE 操作系統(tǒng)架構(gòu)Minimal Kernel[49].該架構(gòu)針對(duì)大部分TEE 操作系統(tǒng)鏡像較大而片上內(nèi)存太小的難題,將TEE 操作系統(tǒng)劃分為兩部分:一部分只包含維持CPU 運(yùn)行軟件所必須的核心組件,稱(chēng)為最小核;其余操作系統(tǒng)組件則由最小核調(diào)度運(yùn)行.為減小最小核的代碼量,該方案提出一種構(gòu)建最小化請(qǐng)求分頁(yè)系統(tǒng)的原則,基于該原則確定了最小化請(qǐng)求分頁(yè)系統(tǒng)所必須包含的內(nèi)核組件(頁(yè)表、異常向量表、低層異常處理函數(shù)、棧以及這些組件所依賴(lài)的組件).為了抵抗板級(jí)物理攻擊,最小核運(yùn)行在片上內(nèi)存中,其余組件運(yùn)行在片外RAM 中,并由最小核提供機(jī)密性和完整性保護(hù).實(shí)驗(yàn)表明該方案構(gòu)建的最小核只需要100KB,可運(yùn)行在大部分ARM 平臺(tái)的片上內(nèi)存中.該團(tuán)隊(duì)后續(xù)為ARM CPU 架構(gòu)提出了高安全Enclave 架構(gòu)SecTEE[52],為ARM 平臺(tái)提供了抗板級(jí)物理攻擊和內(nèi)存?zhèn)刃诺拦舻痊F(xiàn)代高威脅性攻擊手段的安全能力.SecTEE 在Minimal Kernel 的抗板級(jí)物理攻擊基礎(chǔ)之上,擴(kuò)展了抗內(nèi)存?zhèn)刃诺赖陌踩芰涂尚庞?jì)算特性:基于Page coloring 機(jī)制和緩存鎖定機(jī)制將安全敏感應(yīng)用固定在不受外部攻擊程序影響的緩存上,抵抗基于頁(yè)表的側(cè)信道和緩存?zhèn)刃诺拦?并實(shí)現(xiàn)可信度量、遠(yuǎn)程證明、數(shù)據(jù)綁定等核心可信計(jì)算機(jī)制,為用戶(hù)敏感應(yīng)用提供高安全并且可證明的可信執(zhí)行環(huán)境.SecTEE 以軟件方式為ARM CPU 提供了一種與Intel SGX 方案同等安全水平的安全解決方案,適用于當(dāng)前主流的ARM 設(shè)備,具有很好的實(shí)際意義和應(yīng)用前景.Minimal Kernel 和SecTEE 實(shí)現(xiàn)了完整的全系統(tǒng)加密,具有很高的安全性,但是其帶來(lái)的系統(tǒng)負(fù)載也很高:一般來(lái)說(shuō)SecTEE 帶來(lái)約2 倍以上的性能負(fù)載,而對(duì)于一些數(shù)據(jù)密集型程序帶來(lái)的負(fù)載可能達(dá)幾十倍.

    3.3.4 小 結(jié)

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

    4 技術(shù)討論與工程應(yīng)用建議

    本節(jié)討論當(dāng)前軟件方式的抗板級(jí)物理攻擊技術(shù)的優(yōu)勢(shì)與不足,并給出在實(shí)際工程中部署該技術(shù)的建議.

    4.1 技術(shù)優(yōu)勢(shì)

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

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

    不受平臺(tái)限制.軟件方式的抗板級(jí)物理攻擊方法因?yàn)閮H使用處理器芯片內(nèi)普遍配備的資源,所以可以靈活的部署在各種平臺(tái)上.TreVisor、HyperCrypt 等方案可以應(yīng)用在云平臺(tái)上,為虛擬機(jī)提供保護(hù);AESSE、TRESOR、Loop-Amnesia 等方案可以應(yīng)用于個(gè)人電腦;Minimal Kernel、SecTEE 等方案可以應(yīng)用于智能終端;SoftME、Bear OS 等方案可以應(yīng)用于低端嵌入式設(shè)備.因此,軟件方式的抗物理攻擊防護(hù)方案幾乎涵蓋了所有類(lèi)型的計(jì)算平臺(tái),能夠?yàn)榻^大多數(shù)的設(shè)備提供物理防護(hù)能力.

    能達(dá)到很高的物理安全水平.雖然部分方案的威脅模型只涵蓋某種類(lèi)型的板級(jí)物理攻擊(譬如只考慮冷啟動(dòng)攻擊)或者從效率方面出發(fā),沒(méi)有考慮全面的板級(jí)物理攻擊能力,只對(duì)密鑰、密碼算法或應(yīng)用程序等部分代碼和數(shù)據(jù)提供了物理防護(hù),但是實(shí)際上軟件方式的抗板級(jí)物理攻擊防御技術(shù)完全能夠全面抵抗冷啟動(dòng)攻擊、總線(xiàn)攻擊和DMA 攻擊,達(dá)到與硬件方式相同的安全能力.中科院軟件所研究團(tuán)隊(duì)的Minimal Kernel 和SecTEE 方案達(dá)到了與Intel SGX 相同的安全水平.此外,SecTEE 方案還增加了內(nèi)存?zhèn)刃诺婪雷o(hù)機(jī)制,而Intel SGX 的內(nèi)存?zhèn)刃诺婪雷o(hù)問(wèn)題至今仍未完全解決,從這方面也可以看出軟件方式的靈活性.

    4.2 技術(shù)不足之處

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

    對(duì)系統(tǒng)性能影響較大.軟件方式的內(nèi)存保護(hù)需要使用軟件加密引擎來(lái)對(duì)片外內(nèi)存進(jìn)行加密,而軟件加密引擎會(huì)占用處理器資源,從而影響普通程序的運(yùn)行效率.另外,很多方案基于寄存器實(shí)現(xiàn),中間計(jì)算結(jié)果存儲(chǔ)在寄存器中,為避免進(jìn)行上下文切換將中間計(jì)算結(jié)果切換到不安全的內(nèi)存中,每次調(diào)用必須是原子操作并且占用時(shí)間不能太長(zhǎng)以免影響用戶(hù)輸入響應(yīng),這種方式會(huì)造成頻繁的關(guān)中斷和上下文切換操作,從而降低系統(tǒng)性能.通過(guò)統(tǒng)計(jì)各種方案的實(shí)驗(yàn)結(jié)果,發(fā)現(xiàn)大部分方案都給系統(tǒng)帶來(lái)了2 倍以上的性能負(fù)載,而Minimal Kernel 等全系統(tǒng)加密方案甚至給部分應(yīng)用帶來(lái)幾十倍的性能負(fù)載.軟件加密帶來(lái)的負(fù)載可以通過(guò)一些硬件密碼加速器來(lái)緩解,譬如TRESOR 方案使用x86 架構(gòu)提供的硬件加密指令A(yù)ES-NI 來(lái)降低內(nèi)存加密帶來(lái)的性能負(fù)載.

    影響部分專(zhuān)有功能的運(yùn)行.一些方案占用了處理器上一些具有專(zhuān)門(mén)用途的硬件資源,譬如AESSE 方案占用了用于多媒體計(jì)算的SSE 寄存器,TRESOR 方案占用了用于程序調(diào)試的斷點(diǎn)寄存器,CaSE 方案占用了用于提高內(nèi)存讀寫(xiě)速度的緩存等等.占用這些硬件資源必然會(huì)對(duì)相關(guān)功能的正常運(yùn)行造成影響.

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

    4.3 工程應(yīng)用建議

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

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

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

    5 研究展望

    本節(jié)根據(jù)軟件方式抗板級(jí)物理攻擊防御技術(shù)的演進(jìn),對(duì)該技術(shù)的發(fā)展趨勢(shì)和可能出現(xiàn)的研究點(diǎn)進(jìn)行總結(jié)和討論.

    5.1 全系統(tǒng)加密或邏輯隔離的防御技術(shù)研究

    隨著物理攻擊方法的提高,用戶(hù)對(duì)計(jì)算機(jī)系統(tǒng)的安全要求也越來(lái)越高.而安全本身是一個(gè)木桶效應(yīng)非常明顯的領(lǐng)域,攻擊者一般會(huì)從安全性最弱的組件實(shí)施攻擊.對(duì)于計(jì)算機(jī)系統(tǒng)來(lái)說(shuō),如果某一部分組件沒(méi)有被防護(hù),那么攻擊者會(huì)先攻擊這一部分組件,獲得系統(tǒng)權(quán)限后再去攻擊防御組件.因此,為了保證安全方案實(shí)際可用,需要防御組件能夠保護(hù)其所在的整個(gè)地址空間.

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

    5.2 軟硬件協(xié)同的安全防御技術(shù)

    軟件方式的抗板級(jí)物理攻擊方法的一個(gè)技術(shù)劣勢(shì)是性能低,這是軟件內(nèi)存加密造成的.解決該問(wèn)題的常規(guī)思路是設(shè)計(jì)專(zhuān)有的硬件加密引擎或硬件密碼加速器,將內(nèi)存加密部分交給專(zhuān)門(mén)的硬件組件來(lái)處理,軟件專(zhuān)門(mén)負(fù)責(zé)安全內(nèi)存管理、中斷管理、任務(wù)調(diào)度等系統(tǒng)軟件功能.這種設(shè)計(jì)思路也符合現(xiàn)代計(jì)算機(jī)的發(fā)展趨勢(shì):圖靈獎(jiǎng)獲得者Hennessy 和Patterson 共同提出未來(lái)計(jì)算機(jī)體系結(jié)構(gòu)的一大發(fā)展趨勢(shì)[119]就是為專(zhuān)有領(lǐng)域設(shè)計(jì)專(zhuān)有的處理器(domain-specific architecture).

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

    5.3 與側(cè)信道結(jié)合的新攻擊方法

    以前內(nèi)存?zhèn)刃诺拦鬧127-137]主要基于頁(yè)錯(cuò)誤或緩存獲取另外一個(gè)地址空間或隔離執(zhí)行環(huán)境所運(yùn)行程序的內(nèi)存地址訪(fǎng)問(wèn)模式,然后基于內(nèi)存地址訪(fǎng)問(wèn)模式推測(cè)被攻擊程序的機(jī)密信息,譬如密鑰或圖像信息.由于內(nèi)存的數(shù)據(jù)和代碼都是經(jīng)系統(tǒng)總線(xiàn)傳輸給處理器,其中地址總線(xiàn)傳輸?shù)刂沸畔?數(shù)據(jù)總線(xiàn)傳輸數(shù)據(jù)和代碼,因此板級(jí)物理攻擊完全有能力從總線(xiàn)上竊聽(tīng)處理器正在訪(fǎng)問(wèn)的數(shù)據(jù)或代碼的地址,從而獲得程序的內(nèi)存地址訪(fǎng)問(wèn)模式.也就是說(shuō),攻擊者完全有能力利用板級(jí)物理攻擊實(shí)施側(cè)信道攻擊.該攻擊方法由加州大學(xué)伯克利分校的研究團(tuán)隊(duì)提出并實(shí)現(xiàn)[10],已經(jīng)成功對(duì)Intel SGX 的Encalve 實(shí)施了攻擊.但是目前該攻擊方法還處于初級(jí)階段,只能對(duì)數(shù)據(jù)加載類(lèi)型的、數(shù)據(jù)量大的程序有效,與依賴(lài)代碼分支的側(cè)信道(譬如RSA 算法的側(cè)信道攻擊[138])結(jié)合的攻擊效果還不明顯,因?yàn)樘幚砥鲿?huì)將經(jīng)常執(zhí)行的代碼保留在緩存中,從總線(xiàn)上無(wú)法檢測(cè)到該代碼的地址信息.同樣對(duì)于數(shù)據(jù)量小的程序,內(nèi)存訪(fǎng)問(wèn)分布不均勻的程序,以及受緩存回寫(xiě)機(jī)制影響的程序,該方法的攻擊能力還無(wú)法提供精確的內(nèi)存地址訪(fǎng)問(wèn)模式,有待后續(xù)研究.由于該類(lèi)攻擊剛剛被提出,并且攻擊能力還不完善,是一個(gè)非常值得關(guān)注并深入探索的研究點(diǎn).

    6 結(jié)束語(yǔ)

    本文針對(duì)威脅日益嚴(yán)重的板級(jí)物理攻擊,調(diào)研其威脅模型、相關(guān)技術(shù)和現(xiàn)實(shí)存在的攻擊案例,重點(diǎn)對(duì)軟件方式的、不需要修改處理器體系結(jié)構(gòu)的抗板級(jí)物理攻擊防御技術(shù)進(jìn)行了詳細(xì)深入的歸納總結(jié),包括各種方案的技術(shù)原理、安全能力和保護(hù)范圍等.本文還討論了這種防御技術(shù)的優(yōu)勢(shì)及其目前存在的問(wèn)題,并給出了在實(shí)際工程中應(yīng)用該技術(shù)的建議,以便工程人員能夠合理、正確的使用該技術(shù).最后本文探討了該技術(shù)今后的發(fā)展趨勢(shì)和一些研究點(diǎn),以供相關(guān)領(lǐng)域的研究人員參考.

    成人亚洲精品一区在线观看| 欧美黄色片欧美黄色片| 亚洲精品国产区一区二| 亚洲电影在线观看av| 久久精品国产综合久久久| 国产成人精品久久二区二区免费| 国产99久久九九免费精品| 精品高清国产在线一区| 久久国产亚洲av麻豆专区| 怎么达到女性高潮| 日韩欧美国产在线观看| 国产成人啪精品午夜网站| 精品久久久久久成人av| 欧美中文综合在线视频| 在线av久久热| 99久久综合精品五月天人人| 女人精品久久久久毛片| 亚洲一区高清亚洲精品| 给我免费播放毛片高清在线观看| 久久九九热精品免费| 欧美成狂野欧美在线观看| 18禁黄网站禁片午夜丰满| 国产欧美日韩综合在线一区二区| 91精品三级在线观看| 成人av一区二区三区在线看| 国产精品电影一区二区三区| av福利片在线| 亚洲九九香蕉| 成人三级黄色视频| 亚洲精品一卡2卡三卡4卡5卡| 91大片在线观看| 久久精品91无色码中文字幕| 午夜福利一区二区在线看| 在线观看66精品国产| 伦理电影免费视频| www.www免费av| 欧美老熟妇乱子伦牲交| 亚洲 欧美 日韩 在线 免费| 午夜成年电影在线免费观看| 人成视频在线观看免费观看| 一a级毛片在线观看| 九色亚洲精品在线播放| 亚洲精品国产一区二区精华液| 精品国产乱码久久久久久男人| 国产精品日韩av在线免费观看 | 亚洲欧美一区二区三区黑人| 一夜夜www| 国产一区二区三区在线臀色熟女| 国产成人欧美在线观看| 婷婷丁香在线五月| 国产精品永久免费网站| 午夜久久久久精精品| 亚洲天堂国产精品一区在线| 欧美久久黑人一区二区| 欧美一级a爱片免费观看看 | 欧美黄色片欧美黄色片| 久久久久久久午夜电影| 精品久久久久久久毛片微露脸| а√天堂www在线а√下载| 国产成人精品久久二区二区91| 满18在线观看网站| av网站免费在线观看视频| 1024视频免费在线观看| a级毛片在线看网站| 最近最新中文字幕大全免费视频| 91av网站免费观看| 久久中文字幕人妻熟女| 啪啪无遮挡十八禁网站| 18美女黄网站色大片免费观看| 亚洲五月婷婷丁香| 日韩有码中文字幕| 国产麻豆69| 97超级碰碰碰精品色视频在线观看| 欧美色欧美亚洲另类二区 | www.自偷自拍.com| 国产亚洲精品第一综合不卡| 亚洲国产毛片av蜜桃av| 国产高清激情床上av| 久久天堂一区二区三区四区| av有码第一页| 香蕉丝袜av| 一夜夜www| 男女下面插进去视频免费观看| 免费搜索国产男女视频| 久久性视频一级片| 亚洲成a人片在线一区二区| √禁漫天堂资源中文www| 欧美国产日韩亚洲一区| 黄色视频不卡| 大香蕉久久成人网| 精品欧美国产一区二区三| 日韩欧美国产在线观看| 一级a爱视频在线免费观看| 亚洲国产毛片av蜜桃av| 一个人免费在线观看的高清视频| 日韩大码丰满熟妇| 成年女人毛片免费观看观看9| 国产精品野战在线观看| 亚洲成人久久性| 日本精品一区二区三区蜜桃| 黄片大片在线免费观看| 久久热在线av| 亚洲成人免费电影在线观看| 欧美午夜高清在线| 国产成人精品久久二区二区91| 欧美色欧美亚洲另类二区 | 亚洲欧美日韩无卡精品| 国产av精品麻豆| bbb黄色大片| 成人欧美大片| 999久久久精品免费观看国产| 91麻豆精品激情在线观看国产| 黄频高清免费视频| 日本一区二区免费在线视频| 欧美国产日韩亚洲一区| 精品久久久久久久久久免费视频| 免费在线观看视频国产中文字幕亚洲| 12—13女人毛片做爰片一| 国产免费av片在线观看野外av| 国产av精品麻豆| 男人操女人黄网站| 精品国产乱子伦一区二区三区| 国产亚洲av高清不卡| 亚洲激情在线av| 久久久久久大精品| 如日韩欧美国产精品一区二区三区| 99在线视频只有这里精品首页| 正在播放国产对白刺激| 又紧又爽又黄一区二区| 国产av一区二区精品久久| 久久亚洲真实| 午夜福利成人在线免费观看| 精品卡一卡二卡四卡免费| 亚洲中文字幕日韩| 男人舔女人下体高潮全视频| 丰满人妻熟妇乱又伦精品不卡| 黄色a级毛片大全视频| 欧美乱色亚洲激情| 色哟哟哟哟哟哟| 亚洲美女黄片视频| 午夜福利,免费看| or卡值多少钱| 中国美女看黄片| 国产成人一区二区三区免费视频网站| 成熟少妇高潮喷水视频| 亚洲欧美日韩高清在线视频| 好看av亚洲va欧美ⅴa在| 国产精品1区2区在线观看.| 神马国产精品三级电影在线观看 | 国产欧美日韩综合在线一区二区| 亚洲国产中文字幕在线视频| 我的亚洲天堂| 免费无遮挡裸体视频| 色哟哟哟哟哟哟| av天堂在线播放| 欧美在线一区亚洲| 后天国语完整版免费观看| 女人精品久久久久毛片| 伦理电影免费视频| 精品国产国语对白av| 国产亚洲av高清不卡| 无遮挡黄片免费观看| 欧美午夜高清在线| 国产一区二区三区在线臀色熟女| 久久久久国内视频| 国产成人av教育| 黄色丝袜av网址大全| 亚洲av成人一区二区三| 777久久人妻少妇嫩草av网站| 亚洲专区国产一区二区| 好看av亚洲va欧美ⅴa在| 国产99久久九九免费精品| 91麻豆av在线| 国产成人一区二区三区免费视频网站| 十八禁人妻一区二区| 最近最新中文字幕大全免费视频| 国产三级黄色录像| 午夜福利18| 黄色 视频免费看| 欧美精品亚洲一区二区| 国产精品亚洲美女久久久| 国产精品野战在线观看| 成人三级做爰电影| 国产极品粉嫩免费观看在线| 国产精华一区二区三区| 一边摸一边抽搐一进一小说| 男女之事视频高清在线观看| or卡值多少钱| 国产精品 国内视频| 国产精品亚洲av一区麻豆| 欧美一级a爱片免费观看看 | 又大又爽又粗| 成年女人毛片免费观看观看9| 黄色a级毛片大全视频| 色婷婷久久久亚洲欧美| 纯流量卡能插随身wifi吗| 国产蜜桃级精品一区二区三区| 90打野战视频偷拍视频| 久久精品91无色码中文字幕| 精品欧美一区二区三区在线| 免费观看精品视频网站| 国语自产精品视频在线第100页| 嫩草影视91久久| 久久中文看片网| 黄色视频,在线免费观看| 国产亚洲av嫩草精品影院| 中文字幕色久视频| 亚洲 欧美一区二区三区| 97人妻天天添夜夜摸| 嫩草影视91久久| 长腿黑丝高跟| 亚洲精品久久国产高清桃花| 亚洲免费av在线视频| 日日爽夜夜爽网站| 成人特级黄色片久久久久久久| 久久国产乱子伦精品免费另类| 久久久久久国产a免费观看| 别揉我奶头~嗯~啊~动态视频| 啦啦啦韩国在线观看视频| 亚洲欧美激情在线| 男女午夜视频在线观看| 久久久久久大精品| 国产麻豆成人av免费视频| 免费观看精品视频网站| 国产精品99久久99久久久不卡| 国产亚洲精品第一综合不卡| 亚洲精品国产精品久久久不卡| 一边摸一边抽搐一进一小说| 精品久久久久久成人av| 91九色精品人成在线观看| 纯流量卡能插随身wifi吗| 亚洲男人天堂网一区| 亚洲欧美一区二区三区黑人| 香蕉丝袜av| 高清黄色对白视频在线免费看| av网站免费在线观看视频| 免费人成视频x8x8入口观看| 国产成人精品久久二区二区91| 男女之事视频高清在线观看| 电影成人av| 在线观看免费日韩欧美大片| 国产亚洲av嫩草精品影院| 成人手机av| 欧美人与性动交α欧美精品济南到| 一区在线观看完整版| 国产极品粉嫩免费观看在线| 可以在线观看的亚洲视频| 国内精品久久久久久久电影| av片东京热男人的天堂| av视频在线观看入口| 日韩av在线大香蕉| 亚洲av熟女| 制服丝袜大香蕉在线| 亚洲精品中文字幕一二三四区| 叶爱在线成人免费视频播放| 亚洲性夜色夜夜综合| 久久人妻熟女aⅴ| 久久亚洲真实| 麻豆av在线久日| 91大片在线观看| 久久久久国产精品人妻aⅴ院| 女人高潮潮喷娇喘18禁视频| 国产免费男女视频| 亚洲欧美精品综合一区二区三区| 美女免费视频网站| 久久人妻福利社区极品人妻图片| 国产精品亚洲av一区麻豆| 欧美乱码精品一区二区三区| 国产av在哪里看| 国产成人精品久久二区二区91| 国产精品永久免费网站| 一区二区三区激情视频| 亚洲精品一区av在线观看| 久久精品国产99精品国产亚洲性色 | 18禁国产床啪视频网站| 国产熟女午夜一区二区三区| av电影中文网址| 巨乳人妻的诱惑在线观看| 满18在线观看网站| 国产av一区在线观看免费| 国产亚洲精品久久久久久毛片| 亚洲一区二区三区不卡视频| 又紧又爽又黄一区二区| 国产成年人精品一区二区| 99香蕉大伊视频| 国产激情久久老熟女| av福利片在线| 亚洲国产精品成人综合色| 日本免费a在线| 精品欧美国产一区二区三| 黄色a级毛片大全视频| 亚洲人成网站在线播放欧美日韩| 久久精品国产亚洲av香蕉五月| 国产成人影院久久av| 欧美中文综合在线视频| 国产视频一区二区在线看| 亚洲激情在线av| 在线观看免费日韩欧美大片| 中文字幕久久专区| 一级黄色大片毛片| 人人妻,人人澡人人爽秒播| 欧美国产精品va在线观看不卡| 啦啦啦韩国在线观看视频| 久久香蕉激情| 国产精品久久久久久人妻精品电影| 十分钟在线观看高清视频www| 欧美日韩瑟瑟在线播放| 99国产极品粉嫩在线观看| 亚洲欧美日韩无卡精品| 美女免费视频网站| 国产亚洲欧美在线一区二区| 视频在线观看一区二区三区| 在线播放国产精品三级| 国产精品1区2区在线观看.| 亚洲av成人av| 久99久视频精品免费| 精品久久久久久久人妻蜜臀av | 免费少妇av软件| 亚洲国产精品成人综合色| 日韩欧美国产在线观看| 亚洲精品在线美女| 亚洲久久久国产精品| 日韩有码中文字幕| 看黄色毛片网站| 好男人电影高清在线观看| 日韩成人在线观看一区二区三区| 欧美老熟妇乱子伦牲交| 性色av乱码一区二区三区2| 好男人在线观看高清免费视频 | 免费女性裸体啪啪无遮挡网站| 十八禁人妻一区二区| 国产区一区二久久| xxx96com| 一本大道久久a久久精品| 不卡一级毛片| 久久国产乱子伦精品免费另类| 搡老岳熟女国产| 一进一出好大好爽视频| 国产精品av久久久久免费| 18禁裸乳无遮挡免费网站照片 | 免费看十八禁软件| 亚洲欧美日韩高清在线视频| 91成人精品电影| 国产成人影院久久av| 亚洲国产欧美网| 美女免费视频网站| 久久香蕉激情| 欧美日韩精品网址| 国产精品九九99| 性欧美人与动物交配| 曰老女人黄片| 在线永久观看黄色视频| 欧美色视频一区免费| av电影中文网址| 精品国产美女av久久久久小说| 一区在线观看完整版| 女人爽到高潮嗷嗷叫在线视频| 国产不卡一卡二| 91国产中文字幕| netflix在线观看网站| 久久亚洲精品不卡| 如日韩欧美国产精品一区二区三区| 国产亚洲精品综合一区在线观看 | 欧美国产日韩亚洲一区| 每晚都被弄得嗷嗷叫到高潮| 91av网站免费观看| 天堂影院成人在线观看| 久久久久亚洲av毛片大全| 中亚洲国语对白在线视频| 精品一区二区三区av网在线观看| av天堂在线播放| 国产成人精品久久二区二区91| 国产激情欧美一区二区| 999久久久国产精品视频| 久久精品国产亚洲av高清一级| 黑人欧美特级aaaaaa片| 国产成年人精品一区二区| 亚洲欧美激情综合另类| 亚洲欧美精品综合一区二区三区| 99精品欧美一区二区三区四区| 免费不卡黄色视频| 久久国产精品影院| 国产一区二区在线av高清观看| 成年女人毛片免费观看观看9| 黑人巨大精品欧美一区二区mp4| 国产欧美日韩精品亚洲av| 黄色片一级片一级黄色片| 美女国产高潮福利片在线看| 午夜福利,免费看| 欧美成人免费av一区二区三区| 12—13女人毛片做爰片一| av有码第一页| 久久亚洲精品不卡| 在线观看午夜福利视频| 国产亚洲精品综合一区在线观看 | 满18在线观看网站| 午夜成年电影在线免费观看| 日韩中文字幕欧美一区二区| 欧美日韩亚洲综合一区二区三区_| www.精华液| 又紧又爽又黄一区二区| 国产精品久久久久久人妻精品电影| 免费在线观看视频国产中文字幕亚洲| 俄罗斯特黄特色一大片| 精品久久久久久久人妻蜜臀av | 嫁个100分男人电影在线观看| 日韩精品中文字幕看吧| 性色av乱码一区二区三区2| 亚洲午夜理论影院| 免费av毛片视频| 中出人妻视频一区二区| 亚洲伊人色综图| 真人一进一出gif抽搐免费| 国产免费男女视频| 久久久久久大精品| 国产成人av激情在线播放| 国产精品久久久久久精品电影 | 久久人人爽av亚洲精品天堂| 午夜视频精品福利| 免费看十八禁软件| 亚洲色图av天堂| 亚洲七黄色美女视频| 国产亚洲精品av在线| 日韩欧美一区视频在线观看| 非洲黑人性xxxx精品又粗又长| 精品国产超薄肉色丝袜足j| 18美女黄网站色大片免费观看| 两性午夜刺激爽爽歪歪视频在线观看 | 国产国语露脸激情在线看| 国产午夜福利久久久久久| 久久精品成人免费网站| 美女国产高潮福利片在线看| 久久中文字幕一级| 久久久久久久久中文| 国产一区二区三区综合在线观看| 黄色丝袜av网址大全| 97超级碰碰碰精品色视频在线观看| 美女免费视频网站| 麻豆久久精品国产亚洲av| 51午夜福利影视在线观看| 亚洲在线自拍视频| 久久久久久人人人人人| 男女午夜视频在线观看| 久久久久久久精品吃奶| 色播在线永久视频| 丰满的人妻完整版| 国产成人欧美在线观看| 欧美一区二区精品小视频在线| 日韩av在线大香蕉| 一区二区三区国产精品乱码| 在线免费观看的www视频| 久久久久久亚洲精品国产蜜桃av| 欧美日韩精品网址| 岛国视频午夜一区免费看| 日本撒尿小便嘘嘘汇集6| 亚洲色图av天堂| 久久中文字幕一级| 久久国产亚洲av麻豆专区| 午夜福利,免费看| 欧美中文综合在线视频| 日本欧美视频一区| 操美女的视频在线观看| 国产成人啪精品午夜网站| 免费在线观看视频国产中文字幕亚洲| 久久精品影院6| 国产激情久久老熟女| 天天躁夜夜躁狠狠躁躁| 在线观看午夜福利视频| 无限看片的www在线观看| 国产精品 欧美亚洲| 人人妻,人人澡人人爽秒播| 午夜免费激情av| 激情在线观看视频在线高清| 极品教师在线免费播放| 亚洲 欧美一区二区三区| 亚洲精品久久成人aⅴ小说| 精品久久蜜臀av无| 好男人电影高清在线观看| 欧美色视频一区免费| 亚洲熟女毛片儿| 啪啪无遮挡十八禁网站| 熟妇人妻久久中文字幕3abv| 淫秽高清视频在线观看| 国内精品久久久久精免费| 免费av毛片视频| 日本在线视频免费播放| 亚洲美女黄片视频| 国产成人av教育| 亚洲专区中文字幕在线| 午夜福利视频1000在线观看 | 国产精品,欧美在线| 午夜福利成人在线免费观看| 91成人精品电影| 免费在线观看亚洲国产| 成人av一区二区三区在线看| 给我免费播放毛片高清在线观看| 9热在线视频观看99| 亚洲无线在线观看| 亚洲中文日韩欧美视频| 成人免费观看视频高清| 怎么达到女性高潮| 久久精品国产清高在天天线| 久久草成人影院| 视频区欧美日本亚洲| 91老司机精品| 亚洲成av片中文字幕在线观看| 天堂影院成人在线观看| 国产蜜桃级精品一区二区三区| 免费久久久久久久精品成人欧美视频| 国产男靠女视频免费网站| 久久久精品国产亚洲av高清涩受| 午夜精品国产一区二区电影| 男人的好看免费观看在线视频 | 满18在线观看网站| 亚洲一区二区三区不卡视频| 亚洲av电影在线进入| 9191精品国产免费久久| 天天添夜夜摸| 国产伦一二天堂av在线观看| 亚洲国产毛片av蜜桃av| 日本免费一区二区三区高清不卡 | 国产97色在线日韩免费| 亚洲情色 制服丝袜| 色哟哟哟哟哟哟| 真人一进一出gif抽搐免费| 久久久久久免费高清国产稀缺| 亚洲人成电影观看| 精品福利观看| 亚洲av熟女| 99国产精品一区二区三区| 久久人妻熟女aⅴ| 亚洲国产精品合色在线| 国产成人精品无人区| 精品国产国语对白av| 久久精品91蜜桃| 1024视频免费在线观看| 亚洲成人免费电影在线观看| 午夜精品久久久久久毛片777| 91字幕亚洲| 日本vs欧美在线观看视频| 亚洲电影在线观看av| 欧美日韩一级在线毛片| 亚洲自拍偷在线| 人成视频在线观看免费观看| 久久久久国产精品人妻aⅴ院| 搡老妇女老女人老熟妇| 正在播放国产对白刺激| 午夜a级毛片| 欧美成人免费av一区二区三区| 97碰自拍视频| 午夜视频精品福利| 91国产中文字幕| 国产99白浆流出| 两性夫妻黄色片| 亚洲一区二区三区色噜噜| 如日韩欧美国产精品一区二区三区| 黑人巨大精品欧美一区二区mp4| a级毛片在线看网站| 精品福利观看| 一级片免费观看大全| 又黄又粗又硬又大视频| 精品免费久久久久久久清纯| 曰老女人黄片| 免费人成视频x8x8入口观看| 少妇 在线观看| 一本久久中文字幕| 久久婷婷成人综合色麻豆| 18禁黄网站禁片午夜丰满| 精品人妻1区二区| 老司机午夜福利在线观看视频| 美女午夜性视频免费| 久久久国产成人精品二区| 久久狼人影院| 久久伊人香网站| 国产私拍福利视频在线观看| 国产成人av激情在线播放| 老汉色av国产亚洲站长工具| 亚洲av片天天在线观看| 久久中文字幕人妻熟女| 女性被躁到高潮视频| 免费搜索国产男女视频| 国产亚洲精品久久久久久毛片| 桃红色精品国产亚洲av| 国产欧美日韩一区二区三区在线| 亚洲人成伊人成综合网2020| 国产成人系列免费观看| 欧美中文综合在线视频| 在线免费观看的www视频| 一级毛片女人18水好多| 露出奶头的视频| 91九色精品人成在线观看| 国产成人精品无人区| 在线观看免费视频日本深夜| 后天国语完整版免费观看| 日本免费一区二区三区高清不卡 | 中文字幕高清在线视频| 国产精品av久久久久免费| 在线十欧美十亚洲十日本专区| 色精品久久人妻99蜜桃| 黄色 视频免费看| 美女 人体艺术 gogo| 在线视频色国产色| 多毛熟女@视频| 88av欧美| 一级毛片精品| 91av网站免费观看| 97人妻天天添夜夜摸| 1024视频免费在线观看| 欧美日韩黄片免| 亚洲欧美激情综合另类| 啦啦啦免费观看视频1| 最新美女视频免费是黄的| 国产精品日韩av在线免费观看 | 嫩草影院精品99| 久久久久国产精品人妻aⅴ院|