利用SoC內(nèi)部存儲(chǔ)提高系統(tǒng)安全性的方法、終端與系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)系統(tǒng)軟件與移動(dòng)平臺(tái)安全技術(shù)領(lǐng)域,尤其是涉及一種利用SoC內(nèi)部存儲(chǔ)提高系統(tǒng)安全性的方法、終端與系統(tǒng)。
【背景技術(shù)】
[0002]智能設(shè)備已經(jīng)普遍應(yīng)用在我們生活與工作各方面,而對(duì)應(yīng)的安全問(wèn)題也日益突出。
[0003]移動(dòng)智能設(shè)備如手機(jī)、平板等相比于傳統(tǒng)的PC或桌面電腦設(shè)備更容易失竊丟失或者被他人物理接觸,這給個(gè)人和企業(yè)設(shè)備數(shù)據(jù)與資產(chǎn)帶來(lái)巨大的安全威脅。由于現(xiàn)有大多智能設(shè)備都不具備防御物理攻擊的能力,攻擊者在能夠物理接觸智能設(shè)備的情況下可通過(guò)冷啟動(dòng)、pin探測(cè)、總線探測(cè)等手段獲取到設(shè)備內(nèi)部的敏感數(shù)據(jù)。
[0004]針對(duì)智能設(shè)備方面的安全問(wèn)題,安全研究與設(shè)計(jì)者們從多個(gè)方面進(jìn)行了安全增強(qiáng)。第一個(gè)機(jī)制是用戶態(tài)與內(nèi)核態(tài)分離的設(shè)計(jì),將操作系統(tǒng)中的用戶態(tài)應(yīng)用程序與操作系統(tǒng)內(nèi)核隔離開(kāi),有效地保護(hù)內(nèi)核的完整性。第二個(gè)機(jī)制是硬件虛擬化隔離,通過(guò)硬件支持在軟件中運(yùn)行多個(gè)互相隔離的操作系統(tǒng)。然而由于虛擬化隔離只是軟件層次的隔離,它由于具有較大的可信計(jì)算基,其漏洞仍然較多,因此硬件層次的隔離并且具有較小可信計(jì)算基的方案如ARM TrustZone和Intel TXT技術(shù)被設(shè)計(jì)出來(lái)以達(dá)到更高的安全性。然而以上三種類(lèi)型的安全架構(gòu)在移動(dòng)智能設(shè)備上均具有局限性:這些方案架構(gòu)只考慮了來(lái)自軟件內(nèi)部層次的攻擊,并沒(méi)有考慮來(lái)自硬件物理層次的攻擊。實(shí)際中許多硬件攻擊的實(shí)施成本較低,并且智能設(shè)備能夠輕易地被他人接觸,因此防范物理攻擊特別是成本較低的物理攻擊非常重要。
[0005]傳統(tǒng)防御物理攻擊的手段是通過(guò)額外的硬件實(shí)現(xiàn),例如ARM提供SecurCore技術(shù)通過(guò)一個(gè)額外的安全微控制器防御物理攻擊、Intel SGX技術(shù)通過(guò)復(fù)雜的硬件設(shè)計(jì)防御物理攻擊等等。這種方式由于成本、硬件架構(gòu)等因素?zé)o法直接部署在現(xiàn)有的智能設(shè)備中,因此在實(shí)際中并不是性?xún)r(jià)比較高的方式。
[0006]現(xiàn)有的智能設(shè)備內(nèi)部包含SoC(System On Chip)和與之相連的各個(gè)組件。圖2展示了現(xiàn)有的硬件架構(gòu)中SoC包含的部分硬件組件和外部設(shè)備的連接概要圖,其中SoC內(nèi)部包含有一個(gè)或多個(gè)處理器單元、每個(gè)處理器單元的一級(jí)緩存、二級(jí)緩存甚至多級(jí)緩存、內(nèi)部只讀ROM存儲(chǔ)區(qū)、內(nèi)部RAM區(qū)還有與外部設(shè)備相連接的DRAM控制器、NAND控制器和其他外設(shè)。傳統(tǒng)的軟件系統(tǒng)都是將程序運(yùn)行在外部DRAM中,并且DRAM與處理器的總線數(shù)據(jù)容易被竊取;而SoC本身的物理結(jié)構(gòu)設(shè)計(jì)使得其比較難被有效破解竊取內(nèi)部的數(shù)據(jù),特別是當(dāng)SoC處于工作狀態(tài)。因此,有效地利用SoC所具備的抗物理攻擊能力能極大地增強(qiáng)軟件系統(tǒng)的安全性。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種利用SoC內(nèi)部存儲(chǔ)提高系統(tǒng)安全性的方法、終端與系統(tǒng),提高系統(tǒng)與終端的防物理攻擊能力。
[0008]本發(fā)明的目的可以通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn):
[0009]—種利用SoC內(nèi)部存儲(chǔ)提高系統(tǒng)安全性的方法,其特征在于,包括:
[0010]將操作系統(tǒng)內(nèi)核與安全應(yīng)用程序的全部或者部分?jǐn)?shù)據(jù)與代碼明文存放在SoC內(nèi)部存儲(chǔ);
[0011]在SoC內(nèi)部存儲(chǔ)不足時(shí)通過(guò)將部分?jǐn)?shù)據(jù)與代碼加密后保存在外部存儲(chǔ)中,在需要使用時(shí)再將經(jīng)過(guò)加密的數(shù)據(jù)與代碼從外部存儲(chǔ)加載到SoC內(nèi)部存儲(chǔ)中,驗(yàn)證該加密數(shù)據(jù)與代碼完整性后解密運(yùn)行。
[0012]所述SoC內(nèi)部存儲(chǔ)不足時(shí),將所述操作系統(tǒng)內(nèi)核與安全應(yīng)用程序的部分?jǐn)?shù)據(jù)與代碼進(jìn)行加密,加密所用秘鑰存放在SoC內(nèi)部存儲(chǔ)中;然后計(jì)算該部分?jǐn)?shù)據(jù)與代碼的哈希值,將該哈希值存放在SoC內(nèi)部存儲(chǔ)中,并將加密后的部分?jǐn)?shù)據(jù)與代碼存放在外部存儲(chǔ)中;
[0013]當(dāng)存放在外部存儲(chǔ)中的部分?jǐn)?shù)據(jù)與代碼需要被使用時(shí),將所需要的部分?jǐn)?shù)據(jù)與代碼從外部存儲(chǔ)讀取到SoC內(nèi)部存儲(chǔ)中,計(jì)算該數(shù)據(jù)與代碼的哈希值,并將所計(jì)算的哈希值與之前計(jì)算保存在SoC內(nèi)部存儲(chǔ)中的已知哈希值進(jìn)行比對(duì),若兩者不一致則報(bào)錯(cuò),否則就開(kāi)始從SoC內(nèi)部存儲(chǔ)中獲取到解密密鑰對(duì)所述數(shù)據(jù)與代碼進(jìn)行解密。
[0014]所述操作系統(tǒng)內(nèi)核通過(guò)虛擬內(nèi)存缺頁(yè)管理的方式將部分?jǐn)?shù)據(jù)與代碼從SoC內(nèi)部存儲(chǔ)加密交換到外部存儲(chǔ)中,并在頁(yè)表中將所述部分?jǐn)?shù)據(jù)與代碼所在的頁(yè)設(shè)為缺失狀態(tài)。
[0015]當(dāng)處理器訪問(wèn)被標(biāo)記為缺失狀態(tài)的所述代碼與數(shù)據(jù),會(huì)發(fā)生缺頁(yè)下陷,操作系統(tǒng)內(nèi)核確定頁(yè)表中哪些數(shù)據(jù)與代碼被使用頻率小于設(shè)定閾值,將這部分的數(shù)據(jù)與代碼作為不常用的數(shù)據(jù)與代碼,并將所述不常用數(shù)據(jù)與代碼從SoC內(nèi)部存儲(chǔ)換出到外部存儲(chǔ)中,并將所述不常用的數(shù)據(jù)與代碼所對(duì)應(yīng)頁(yè)表項(xiàng)設(shè)為缺失狀態(tài);若需要訪問(wèn)所述不常用代碼與數(shù)據(jù)時(shí),將所述不常用的代碼與數(shù)據(jù)從SoC外部存儲(chǔ)加載到內(nèi)部存儲(chǔ)中,進(jìn)行完整性驗(yàn)證、解密,然后在頁(yè)表中將所述代碼與數(shù)據(jù)所在的頁(yè)設(shè)為非缺失狀態(tài),并恢復(fù)對(duì)所述不常用的代碼與數(shù)據(jù)的訪問(wèn)。
[0016]將安全內(nèi)核與安全應(yīng)用程序的安全敏感部分?jǐn)?shù)據(jù)與代碼運(yùn)行在SoC內(nèi)部存儲(chǔ)中,非安全敏感部分?jǐn)?shù)據(jù)與代碼運(yùn)行在SoC外部存儲(chǔ)中。
[0017]一種支持所述方法的終端,其特征在于,包括:
[0018]SoC單元,用于執(zhí)行代碼與保存安全敏感數(shù)據(jù);
[0019]外部存儲(chǔ)單元,用于在SoC單元內(nèi)部存儲(chǔ)不足時(shí)保存加密后的代碼與數(shù)據(jù)。
[0020]所述SoC單元直接通過(guò)讀取內(nèi)部存儲(chǔ)代碼執(zhí)行,所述外部存儲(chǔ)單元保存的代碼需要經(jīng)過(guò)SoC單元解密并加載至SoC單元內(nèi)部存儲(chǔ)方可執(zhí)行。
[0021]所述外部存儲(chǔ)單元還用于存儲(chǔ)非安全敏感的代碼和數(shù)據(jù),所述非安全敏感的代碼可不經(jīng)過(guò)SoC單元解密,并且不需要加載至SoC單元內(nèi)部存儲(chǔ)即可執(zhí)行。
[0022]該終端為智能卡、服務(wù)器、機(jī)頂盒、無(wú)人機(jī)、車(chē)載裝置或手持設(shè)備,其中手持設(shè)備為手機(jī)、平板電腦、智能手環(huán)或智能手表。
[0023]該終端同時(shí)包括兩個(gè)相互隔離的系統(tǒng),分別為安全系統(tǒng)和普通系統(tǒng),將安全系統(tǒng)運(yùn)行在SoC單元,所述外部存儲(chǔ)單元保存加密的安全系統(tǒng)代碼與數(shù)據(jù),普通系統(tǒng)則可不經(jīng)過(guò)SoC單元解密并且不需要加載至SoC單元內(nèi)部存儲(chǔ)即可執(zhí)行。
[0024]—種系統(tǒng),其特征在于,包括權(quán)利要求6-10中任一所述終端,所述系統(tǒng)包括包括兩個(gè)相互隔離的系統(tǒng),分別為安全系統(tǒng)和普通系統(tǒng),將整個(gè)安全系統(tǒng)運(yùn)行在SoC單元,或者將安全系統(tǒng)中安全敏感數(shù)據(jù)運(yùn)行在SoC單元。
[0025]所述SoC內(nèi)部存儲(chǔ)包括SoC內(nèi)部?jī)?nèi)存和處理器最后一級(jí)緩存,所述SoC外部存儲(chǔ)包括易失性存儲(chǔ)和非易失性存儲(chǔ)。
[0026]與現(xiàn)有技術(shù)相比,本發(fā)明利用了SoC具有的較強(qiáng)的對(duì)抗物理攻擊的特性,將明文數(shù)據(jù)與代碼完全保存與運(yùn)行在SoC內(nèi)部存儲(chǔ)中,而將加密后的數(shù)據(jù)與代碼保存在SoC外部存儲(chǔ)中,即使攻擊者通過(guò)物理攻擊方法導(dǎo)出外部存儲(chǔ)數(shù)據(jù)、監(jiān)聽(tīng)總線數(shù)據(jù)、控制基帶處理器等方法也無(wú)法竊取敏感數(shù)據(jù)與代碼,有效地提高了操作系統(tǒng)內(nèi)核與安全應(yīng)用程序的安全性。
【附圖說(shuō)明】
[0027]圖1為本發(fā)明中不同系統(tǒng)模塊在內(nèi)存中的布局示意圖;
[0028]圖2為本發(fā)明所涉及的SoC硬件內(nèi)部所包含的部分模塊示意圖;
[0029]圖3為本發(fā)明所涉及的TEE與REE系統(tǒng)示意圖;
[0030]圖4為采用本發(fā)明方法時(shí)TEE與REE的內(nèi)存布局示意圖。
【具體實(shí)施方式】
[0031]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明的一部分實(shí)施例,而不是全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都應(yīng)屬于本發(fā)明保護(hù)的范圍。
[0032]本發(fā)明的原理是,將操作系統(tǒng)內(nèi)核與安全應(yīng)用程序的全部或者安全敏感部分?jǐn)?shù)據(jù)與代碼明文存放在SoC內(nèi)部存儲(chǔ)(包括SoC內(nèi)部SRAM、處理器最后一級(jí)緩存)中。當(dāng)SoC內(nèi)部存儲(chǔ)不足于存下所有所需的數(shù)據(jù)與代碼時(shí),將不常用到的數(shù)據(jù)與代碼加密存放在外部存儲(chǔ)(包括DRAM內(nèi)存、NAND存儲(chǔ))中,所述存儲(chǔ)在外部存儲(chǔ)的的數(shù)據(jù)與代碼在需要被使用時(shí)將被加載到SoC內(nèi)部存儲(chǔ)中,經(jīng)過(guò)完整性驗(yàn)證、解密后再運(yùn)行與使用。
[0033]本發(fā)明的具體步驟包括:
[0034]1.系統(tǒng)軟件設(shè)計(jì)者可指定哪部分?jǐn)?shù)據(jù)與代碼(稱(chēng)為系統(tǒng)安全模塊)存放在SoC內(nèi)部存儲(chǔ),哪部分(稱(chēng)為系統(tǒng)非安全模塊)存放在SoC外部非安全存儲(chǔ)中。由于存放在SoC內(nèi)部存儲(chǔ)的數(shù)據(jù)與代碼(即系統(tǒng)安全模塊)可能超過(guò)SoC內(nèi)部存儲(chǔ)容量,存儲(chǔ)在SoC內(nèi)部存儲(chǔ)的系統(tǒng)安全模塊分為兩部分:一部分是可被加密存放在SoC外部非安全存儲(chǔ)的數(shù)據(jù)與代碼,稱(chēng)為系統(tǒng)安全模塊非關(guān)鍵部分;一部分是用于保持系統(tǒng)軟件內(nèi)部運(yùn)作的關(guān)鍵部分代碼與數(shù)據(jù),例如SoC內(nèi)部?jī)?nèi)存不足時(shí)的處理程序、完整性驗(yàn)證,這部分關(guān)鍵代碼與數(shù)據(jù)需要一直被存放在SoC內(nèi)部存儲(chǔ)中,稱(chēng)為系統(tǒng)安全模塊關(guān)鍵部分。圖1展示了不同系統(tǒng)模塊的內(nèi)存布局。
[0035]2.當(dāng)SoC內(nèi)部?jī)?nèi)存不足時(shí),系統(tǒng)安全模塊關(guān)鍵部分負(fù)責(zé)將系統(tǒng)安全模塊非關(guān)鍵部分中不常用到的代碼與數(shù)據(jù)進(jìn)行加密,加密所用密鑰保存在SoC內(nèi)部存儲(chǔ)中;然后處理器將計(jì)算所述代碼與數(shù)據(jù)的哈希值(該哈希值是用于當(dāng)再次將所述代碼與數(shù)據(jù)拷貝到SoC內(nèi)部存儲(chǔ)是進(jìn)行完整性校驗(yàn)的目的),所計(jì)算出的哈希值也存放在SoC內(nèi)部存儲(chǔ)中,并將所述加密后的代碼與數(shù)據(jù)存放在外部存儲(chǔ)中。這樣就可騰出部分運(yùn)行空間用于運(yùn)行接下來(lái)的部分。
[0036]3.當(dāng)系統(tǒng)安全模塊非關(guān)鍵