本申請涉及電數(shù)字?jǐn)?shù)據(jù)處理領(lǐng)域,尤其涉及提高啟動安全的方法和系統(tǒng)。
背景技術(shù):
ARM技術(shù)是系統(tǒng)范圍的安全方法,針對高性能計(jì)算平臺上的大量應(yīng)用,包括安全支付、數(shù)字版權(quán)管理(DRM)、企業(yè)服務(wù)和基于Web的服務(wù)。TrustZone技術(shù)與CortexTM-A處理器緊密集成,并通過AXI總線和特定的TrustZone系統(tǒng)IP塊在系統(tǒng)中進(jìn)行擴(kuò)展。此方法意味著可以保護(hù)安全內(nèi)存、加密塊、鍵盤和屏幕等外設(shè),從而可確保它們免遭軟件攻擊。
安全啟動(boot)的基本思想是從Romcode到Images的多層鏈?zhǔn)叫r?yàn)機(jī)制。Romcode利用哈希(Hash)函數(shù)來驗(yàn)證BSC的完整性,用RSA算法來驗(yàn)證SPL的完整性,然后SPL將會驗(yàn)證U-boot,最后U-boot來驗(yàn)證bootimage、recoveryimage、modem、dsp等。
傳統(tǒng)的Linux系統(tǒng)啟動過程主要由著名的init進(jìn)程(也被稱為SysV init啟動系統(tǒng))處理,而基于init的啟動系統(tǒng)被認(rèn)為有效率不足的問題。Systemd是Linux系統(tǒng)機(jī)器的另一種啟動方式,宣稱彌補(bǔ)了以傳統(tǒng)Linux SysV init為基礎(chǔ)的系統(tǒng)的缺點(diǎn)。Systemd可以提高系統(tǒng)的啟動速度。
SELinux(Security-Enhanced Linux)是一種美國國家安全局(NSA)的對于強(qiáng)制訪問控制的實(shí)現(xiàn)。當(dāng)移動設(shè)備加載SELinux后移動操作系統(tǒng)的安全等級將極大的提高。然而SELinux自身安全同樣需要保護(hù)。
SELinux的功能主要體現(xiàn)在策略中。SELinux把所有的防護(hù)策略語句編譯成一個基礎(chǔ)策略二進(jìn)制文件或者一個基礎(chǔ)策略二進(jìn)制文件加多個模塊策略二進(jìn)制文件中。所以,對于SELinux策略二進(jìn)制文件的保護(hù)將是至關(guān)重要的。
技術(shù)實(shí)現(xiàn)要素:
本申請的目標(biāo)在于提供一種能克服SELinux強(qiáng)制訪問控制自身的安全缺陷從而提高啟動安全的方法和系統(tǒng)。
本申請的目標(biāo)由一種提高啟動安全的方法實(shí)現(xiàn),該方法包括,在將SELinux策略文件導(dǎo)入到內(nèi)核時(shí),
使用可信芯片自帶的算法計(jì)算得到當(dāng)前導(dǎo)入的SELinux策略文件的第一哈希值;
從可信芯片的安全存儲空間獲取SELinux策略文件的第一基準(zhǔn)哈希值;
比較所述第一哈希值和所述第一基準(zhǔn)哈希值;
響應(yīng)于所述第一哈希值和所述第一基準(zhǔn)哈希值相同,啟動系統(tǒng)。
根據(jù)本申請方法的一方面,所述方法還包括:
響應(yīng)于比較結(jié)果為不同,向系統(tǒng)用戶提供包括是否啟動的選擇。
根據(jù)本申請方法的一方面,所述方法還包括:
使用可信芯片自帶的算法計(jì)算得到可信芯片的安全啟動相關(guān)代碼的第二哈希值;
將所述第一哈希值和所述第二哈希值耦合為第三哈希值;
從可信芯片的安全存儲空間獲取第二基準(zhǔn)哈希值;
比較所述第三哈希值和所述第二基準(zhǔn)哈希值;
響應(yīng)于所述第三哈希值和所述第二基準(zhǔn)哈希值相同,啟動系統(tǒng)。
根據(jù)本申請方法的一方面,所述方法還包括:
通過可信芯片的CA在可信芯片的安全執(zhí)行環(huán)境建立SELinux策略文件的訪問向量緩存AVC和策略服務(wù)器。
根據(jù)本申請方法的一方面,所述選擇還包括:從遠(yuǎn)程安全服務(wù)器下載和/或升級SELinux策略文件。
在本說明書中,術(shù)語“SELinux策略文件”與術(shù)語“SELinux二進(jìn)制策略文件”、“SELinux策略二進(jìn)制文件”和“SELinux策略配置文件”可互換地使用。
本申請的目標(biāo)還由一種提高啟動安全的裝置實(shí)現(xiàn),該裝置包括,
第一哈希值計(jì)算模塊,用于在將SELinux策略文件導(dǎo)入到內(nèi)核時(shí),使用可信芯片自帶的算法計(jì)算得到當(dāng)前導(dǎo)入的SELinux策略文件的第一哈希值;
第一獲取模塊,用于從可信芯片的安全存儲空間獲取SELinux策略文件的第一基準(zhǔn)哈希值;
第一比較模塊,用于比較所述第一哈希值和所述第一基準(zhǔn)哈希值;
第一啟動模塊,用于響應(yīng)所述第一哈希值和所述第一基準(zhǔn)哈希值相同,啟動系統(tǒng)。
根據(jù)本申請裝置的一方面,所述裝置還包括:
選擇提供模塊,用于響應(yīng)于比較結(jié)果為不同,向系統(tǒng)用戶提供包括是否啟動的選擇。
根據(jù)本申請裝置的一方面,所述裝置還包括:
第二哈希值計(jì)算模塊,用于使用可信芯片自帶的算法計(jì)算得到可信芯片的安全啟動相關(guān)代碼的第二哈希值;
耦合模塊,用于將所述第一哈希值和所述第二哈希值耦合為第三哈希值;
第二獲取模塊,用于從可信芯片的安全存儲空間獲取第二基準(zhǔn)哈希值;
第二比較模塊,用于比較所述第三哈希值和所述第二基準(zhǔn)哈希值;
第二啟動模塊,用于響應(yīng)于所述第三哈希值和所述第二基準(zhǔn)哈希值相同,啟動系統(tǒng)。
根據(jù)本申請裝置的一方面,所述裝置還包括:
建立模塊,用于通過可信芯片的CA在可信芯片的安全執(zhí)行環(huán)境建立SELinux策略文件的訪問向量緩存AVC和策略服務(wù)器。
根據(jù)本申請裝置的一方面,所述選擇還包括:從遠(yuǎn)程安全服務(wù)器下載和/或升級SELinux策略文件。
通過本發(fā)明,可實(shí)現(xiàn)對SELinux策略(配置/二進(jìn)制)文件的保護(hù),主要體現(xiàn)在下述三方面之一或多個:1)保護(hù)SELinux策略二進(jìn)制文件的完整性,防止SELinux策略文件被替換而不知。防止SELinux策略二進(jìn)制文件可能被攻擊者替換成另外一個有漏洞的攻擊者自定義的SELinux策略二進(jìn)制文件,導(dǎo)致SELinux 策略失效;2)在開機(jī)啟動但SELinux還沒有生效起作用這段時(shí)間,SELinux需要確認(rèn)機(jī)器加電這段時(shí)間是否安全,否則SELinux策略文件可以被替換掉;3)在一般情況下,SELinux導(dǎo)入系統(tǒng)后執(zhí)行環(huán)境是普通執(zhí)行環(huán)境,會被攻擊者強(qiáng)行攻破導(dǎo)致SELinux失效,通過可信芯片如TrustZone保護(hù)SELinux啟動時(shí)候處于安全執(zhí)行環(huán)境下??傊景l(fā)明可提高啟動的安全性。
附圖說明
本發(fā)明將在下面參考附圖并結(jié)合優(yōu)選實(shí)施例進(jìn)行更完全地說明。
圖1為根據(jù)本發(fā)明方法的一實(shí)施例的流程圖。
圖2為根據(jù)本發(fā)明方法的另一實(shí)施例的流程圖。
圖3為根據(jù)本發(fā)明裝置的一實(shí)施例的結(jié)構(gòu)示意圖。
為清晰起見,這些附圖均為示意性及簡化的圖,它們只給出了對于理解本發(fā)明所必要的細(xì)節(jié),而省略其他細(xì)節(jié)。
具體實(shí)施方式
通過下面給出的詳細(xì)描述,本發(fā)明的適用范圍將顯而易見。然而,應(yīng)當(dāng)理解,在詳細(xì)描述和具體例子表明本發(fā)明優(yōu)選實(shí)施例的同時(shí),它們僅為說明目的給出。
圖1示出了根據(jù)本發(fā)明方法的一實(shí)施例的流程圖。在移動設(shè)備出廠時(shí),SELinux二進(jìn)制策略文件已經(jīng)預(yù)編好并安裝到移動設(shè)備中??尚判酒鏣rustZone必須要對SELinux二進(jìn)制策略文件進(jìn)行處理,通過TrustZone自帶的雜湊算法對SELinux二進(jìn)制策略文件進(jìn)行計(jì)算hash值當(dāng)作以后進(jìn)行判斷的基準(zhǔn)值,在此稱為第一基準(zhǔn)哈希值。然后直接把第一基準(zhǔn)哈希值保存到TrustZone芯片的安全存儲空間中。同時(shí),也可把SELinux策略文件和第一基準(zhǔn)哈希值存儲到遠(yuǎn)程服務(wù)器如移動設(shè)備廠家提供的安全服務(wù)器或者M(jìn)DM遠(yuǎn)程設(shè)備管理服務(wù)器,以供用戶下載和/或升級,在移動設(shè)備出現(xiàn)SELinux策略文件被破壞的情形時(shí)可以進(jìn)行升級SELinux策略。該實(shí)施例的方法包括,在步驟S10,在將SELinux策略文件導(dǎo)入到內(nèi)核時(shí),使用TrustZone芯片自帶的雜湊算法計(jì)算得到當(dāng)前導(dǎo)入的SELinux策略文件的第一哈希值。在步驟S20,從TrustZone芯片的安全存儲空間獲取SELinux策略文件的第一基準(zhǔn)哈希值。在步驟S30,對第一哈希值和第一基準(zhǔn)哈希值進(jìn)行比較。如果比較結(jié)果表明第一哈希值和第一基準(zhǔn)哈希值相同,則表明SELinux策略文件是完整的,處理進(jìn)行到步驟S40,啟動系統(tǒng)。否則,處理進(jìn)行到步驟S50,向系統(tǒng)用戶提供包括強(qiáng)制啟動、不啟動的選擇。如果用戶選擇強(qiáng)制啟動,則處理進(jìn)行到步驟S40,啟動系統(tǒng),同時(shí)可以提供強(qiáng)烈警告標(biāo)志。如果用戶選擇不啟動,則處理進(jìn)行到步驟S60,使移動設(shè)備關(guān)機(jī)。在其它實(shí)施例中,在步驟S50還可向用戶提供從遠(yuǎn)程安全服務(wù)器下載和/或升級SELinux策略文件的選擇。如果用戶選擇該選項(xiàng),則從相應(yīng)的安全服務(wù)器下載SELinux策略文件并用于替代移動設(shè)備當(dāng)前的SELinux策略文件。由于下載發(fā)生在當(dāng)前寫入到trustzone芯片中后,需要重啟機(jī)器重新判斷所加載SELinux二進(jìn)制策略文件的完整性。
圖2示出了根據(jù)本發(fā)明方法的另一實(shí)施例的流程圖。該實(shí)施例的方法包括圖1所示除步驟S40之外的所有步驟。在移動設(shè)備加電啟動到systemd導(dǎo)入SELinux二進(jìn)制策略文件使強(qiáng)制訪問控制生效這段時(shí)間對SELinux來說是未知的時(shí)間段,即不知道這段時(shí)間是否安全,如果在這段時(shí)間出現(xiàn)被破壞不得而知。因此,在第一哈希值和第一基準(zhǔn)哈希值相同即表明SELinux策略文件完整時(shí)或者用戶選擇強(qiáng)制啟動時(shí)并不執(zhí)行步驟S40啟動系統(tǒng),而是執(zhí)行步驟S70,調(diào)用TrustZone提供的雜湊算法的api(應(yīng)用程序接口)再次計(jì)算當(dāng)前導(dǎo)入的SELinux二進(jìn)制策略文件的hash值A(chǔ)。在步驟S80,獲得TrustZone中secboot的、到當(dāng)前時(shí)候的hash值B。在步驟S85,將哈希值A(chǔ)和B耦合為第三哈希值。在步驟S90,從Trustzone芯片的安全存儲空間獲取第二基準(zhǔn)哈希值。通過Trustzone對SELinux策略二進(jìn)制文件計(jì)算得出hash值,并把這個hash值和Trustzone的Secboot(安全啟動相關(guān)代碼)的hash值耦合,形成一個新hash值并寫入到Trustzone的安全存儲中作為第二基準(zhǔn)哈希值。在步驟S95,對第三哈希值和第二基準(zhǔn)哈希值進(jìn)行比較。如果比較結(jié)果表明第三哈希值和第二基準(zhǔn)哈希值相同,則表明從開機(jī)加電到導(dǎo)入SELinux策略文件這段時(shí)間是安全的,處理進(jìn)行到步驟S100,啟動系統(tǒng)。如果比較結(jié)果表明第三哈希值和第二基準(zhǔn)哈希值不同,則說明從開機(jī)加電到導(dǎo)入SELinux策略文件這段時(shí)間是被污染的、不安全的,處理進(jìn)行到步驟S50,向系統(tǒng)用戶提供包括強(qiáng)制啟動、不啟動的選擇。如果用戶選擇強(qiáng)制啟動,則處理進(jìn)行到步驟S100。如果用戶選擇不啟動,則處理進(jìn)行到步驟S60,使移動設(shè)備關(guān)機(jī)。在步驟S100之后,處理進(jìn)行到步驟S105,通過Trustzone芯片的CA在Trustzone的安全執(zhí)行環(huán)境建立SELinux策略文件的訪問向量緩存AVC和策略服務(wù)器,從而利用TrustZone保護(hù)系統(tǒng)使用SELinux訪問控制的安全,使系統(tǒng)處于TrustZone安全執(zhí)行環(huán)境模式下的SELinux訪問控制保護(hù)。系統(tǒng)在SELinux導(dǎo)入內(nèi)核時(shí)在內(nèi)存中會通過導(dǎo)入的SELinux策略文件維護(hù)一個AVC(訪問向量緩存,Access Vector Cache)。當(dāng)需一個主體(進(jìn)程)訪問一個客體(資源)的時(shí)候,會先訪問AVC緩存,如果訪問不通過,才再次訪問策略服務(wù)器??赡軙霈F(xiàn)被黑客掃描AVC或者策略服務(wù)器的情況,從而出現(xiàn)SELinux的安全隱患,畢竟SELinux主要是為了安全而增加的功能。為了避免AVC和策略服務(wù)器被掃描,調(diào)用TrustZone的API編寫SELinux供主體訪問客體時(shí)候判斷的SELinux訪問控制(包含了AVC和策略服務(wù)器)的TA(可信安全應(yīng)用),因?yàn)镾ELinux訪問控制處于TrustZone的可信安全執(zhí)行環(huán)境下,將很難被掃描。編寫對應(yīng)TrustZone里的SELinux訪問控制的TA的SELinux訪問控制的CA(在普通系統(tǒng)下需要通過CA才能陷入可信執(zhí)行環(huán)境下,所以需要通過trustzone提供的接口編寫CA,CA相當(dāng)于進(jìn)入trustzone安全的通道但又不執(zhí)行具體的操作,具體操作在可信安全執(zhí)行環(huán)境下的TA中),能連接普通系統(tǒng)執(zhí)行環(huán)境和TrustZone安全執(zhí)行環(huán)境的SELinux訪問控制,當(dāng)一個主體(進(jìn)程)訪問一個客體資源的時(shí)候,先通過SELinux訪問控制的CA陷入trustzone的可信執(zhí)行環(huán)境中,再通過SELinux訪問控制的TA中執(zhí)行訪問AVC緩存判斷當(dāng)前主體對客體的訪問,如果成功則返回普通環(huán)境下訪問成功的返回值,如果失敗則訪問SELinux策略服務(wù)器判斷是否有訪問權(quán)限,如果再失敗則說明主體對客體沒有權(quán)限,如果成功則返回成功,同時(shí)加入AVC緩存中。這樣就把SELinux訪問控制都放入到了安全執(zhí)行環(huán)境中,可以防止黑客的滲透。
圖3示出了根據(jù)本發(fā)明的提高啟動安全的裝置的一實(shí)施例,該實(shí)施例的裝置包括:第一哈希值計(jì)算模塊10,用于在將SELinux策略文件導(dǎo)入到內(nèi)核時(shí),使用可信芯片自帶的算法計(jì)算得到當(dāng)前導(dǎo)入的SELinux策略文件的第一哈希值;第一獲取模塊20,用于從可信芯片的安全存儲空間獲取SELinux策略文件的第一基準(zhǔn)哈希值;第一比較模塊30,用于比較所述第一哈希值和所述第一基準(zhǔn)哈希值;第一啟動模塊40,用于響應(yīng)所述第一哈希值和所述第一基準(zhǔn)哈希值相同,啟動系統(tǒng);選擇提供模塊50,用于響應(yīng)于比較結(jié)果為不同,向系統(tǒng)用戶提供包括強(qiáng)制啟動、不啟動和從遠(yuǎn)程安全服務(wù)器下載和/或升級SELinux策略文件的選擇。
根據(jù)本發(fā)明的提高啟動安全的裝置的另一實(shí)施例,該實(shí)施例包括圖3所示除第一啟動模塊40之外的所有模塊,且另外包括:第二哈希值計(jì)算模塊,用于使用可信芯片自帶的算法計(jì)算得到可信芯片的安全啟動相關(guān)代碼的第二哈希值;耦合模塊,用于將所述第一哈希值和所述第二哈希值耦合為第三哈希值;第二獲取模塊,用于從可信芯片的安全存儲空間獲取第二基準(zhǔn)哈希值;第二比較模塊,用于比較所述第三哈希值和所述第二基準(zhǔn)哈希值;第二啟動模塊,用于響應(yīng)于所述第三哈希值和所述第二基準(zhǔn)哈希值相同,啟動系統(tǒng);建立模塊,用于通過可信芯片的CA在可信芯片的安全執(zhí)行環(huán)境建立SELinux策略文件的訪問向量緩存AVC和策略服務(wù)器。
除非明確指出,在此所用的單數(shù)形式“一”、“該”均包括復(fù)數(shù)含義(即具有“至少一”的意思)。應(yīng)當(dāng)進(jìn)一步理解,說明書中使用的術(shù)語“具有”、“包括”和/或“包含”表明存在所述的特征、步驟、操作、元件和/或部件,但不排除存在或增加一個或多個其他特征、步驟、操作、元件、部件和/或其組合。如在此所用的術(shù)語“和/或”包括一個或多個列舉的相關(guān)項(xiàng)目的任何及所有組合。除非明確指出,在此公開的任何方法的步驟不必精確按照所公開的順序執(zhí)行。
一些優(yōu)選實(shí)施例已經(jīng)在前面進(jìn)行了說明,但是應(yīng)當(dāng)強(qiáng)調(diào)的是,本發(fā)明不局限于這些實(shí)施例,而是可以本發(fā)明主題范圍內(nèi)的其它方式實(shí)現(xiàn)。