通過后,內(nèi)核正常啟動(dòng)。內(nèi)核態(tài)的安全檢測模塊檢測操作系統(tǒng)初始化代碼,初始安全性驗(yàn)證模塊驗(yàn)證輸入的初始化代碼檢測值,并輸出驗(yàn)證結(jié)果,將驗(yàn)證結(jié)果返回至安全檢測模塊,該模塊根據(jù)驗(yàn)證結(jié)果確定系統(tǒng)初始化決策,即繼續(xù)執(zhí)行檢測還是禁止系統(tǒng)啟動(dòng)。重復(fù)執(zhí)行這個(gè)檢測和驗(yàn)證的過程,直到守護(hù)進(jìn)程、虛擬機(jī)初始化進(jìn)程和狀態(tài)反饋的檢測值全部通過驗(yàn)證,系統(tǒng)啟動(dòng)完畢。
[0022]啟動(dòng)之后對操作系統(tǒng)內(nèi)核模塊、初始化配置文件、守護(hù)進(jìn)程、虛擬機(jī)初始化進(jìn)程的檢測就已經(jīng)確定并不能改變了。而應(yīng)用程序在未啟動(dòng)之前是不能被檢測的,需要在應(yīng)用程序運(yùn)行之前,映射到虛擬機(jī)時(shí)進(jìn)行檢測。當(dāng)狀態(tài)反饋服務(wù)檢測到客戶端進(jìn)入安全區(qū)域時(shí),安全檢測值上傳模塊將檢測值生成XML文件,并加密上傳到監(jiān)控中心子系統(tǒng)。監(jiān)控中心收集模塊收集并解析收到的信息,查詢安全信息數(shù)據(jù)庫進(jìn)行驗(yàn)證,將驗(yàn)證結(jié)果返回給移動(dòng)終端。若驗(yàn)證成功,客戶端操作繼續(xù);若驗(yàn)證失敗,返回不可信程序名,客戶端提醒用戶并強(qiáng)制關(guān)閉該程序。同時(shí),反饋服務(wù)始終監(jiān)測新應(yīng)用程序的啟動(dòng),一旦新的應(yīng)用程序啟動(dòng),重新上傳,驗(yàn)證新的檢測值,這個(gè)過程會(huì)持續(xù)到客戶端離開安全區(qū)域后。
[0023]為滿足上述要求,本發(fā)明將安全控制系統(tǒng)劃分為兩個(gè)子系統(tǒng):部署在服務(wù)器端的監(jiān)控中心子系統(tǒng)和運(yùn)行在移動(dòng)終端的客戶端運(yùn)行狀態(tài)檢測與反饋?zhàn)酉到y(tǒng)。
[0024]I)狀態(tài)檢測實(shí)現(xiàn)了操作系統(tǒng)的安全引導(dǎo)、安全檢測和初始安全性驗(yàn)證功能。這里的安全引導(dǎo)能保證移動(dòng)終端啟動(dòng)時(shí)裝載的內(nèi)核文件可信。安全檢測負(fù)責(zé)檢測移動(dòng)終端中裝載的內(nèi)核模塊、可執(zhí)行代碼、守護(hù)進(jìn)程、虛擬機(jī)初始化進(jìn)程、應(yīng)用層狀態(tài)反饋和系統(tǒng)安全啟動(dòng)后運(yùn)行的應(yīng)用程序。初始安全性驗(yàn)證模塊,負(fù)責(zé)保證移動(dòng)終端在啟動(dòng)過程中所有的檢測結(jié)果都是可信的。
[0025]2)狀態(tài)反饋位于應(yīng)用層,其中的客戶端位置監(jiān)控模塊會(huì)始終監(jiān)測客戶端位置信息,每當(dāng)需要上傳應(yīng)用程序檢測值時(shí)都會(huì)調(diào)用檢測值上傳模塊。
[0026]監(jiān)控中心子系統(tǒng)提供了對移動(dòng)終端應(yīng)用程序安全檢測值進(jìn)行收集和驗(yàn)證的功能,可以及時(shí)的防止安全敏感信息的竊取或修改。監(jiān)控中心子系統(tǒng)包括3個(gè)部分:①安全信息收集模塊,用于收集移動(dòng)終端發(fā)送來的安全檢測值。②安全性驗(yàn)證模塊,將收集到的應(yīng)用程序安全檢測值同數(shù)據(jù)庫中安全信息列表進(jìn)行比對,并向客戶端返回比對結(jié)果。③安全策略管理模塊,維護(hù)一個(gè)安全檢測值信息列表,列出操作系統(tǒng)安全的應(yīng)用程序的檢測值。白名單要及時(shí)更新相同可信應(yīng)用程序的不同版本的安全檢測值。對于某些應(yīng)用程序,可以根據(jù)具體情況,判斷是否是可信應(yīng)用程序,而選擇添加到列表中,或是從列表中刪除。
[0027]應(yīng)用程序安全控制系統(tǒng)在構(gòu)建了系統(tǒng)安全啟動(dòng)TPM的基礎(chǔ)上,還包括了以下子系統(tǒng)模塊:1)客戶端位置信息監(jiān)控;2)應(yīng)用程序的檢測和反饋;3)客戶端運(yùn)行狀態(tài)的遠(yuǎn)程驗(yàn)證和管理;4)安全檢測數(shù)據(jù)的管理;5)應(yīng)用程序賦權(quán)。下面是對這些系統(tǒng)模塊的具體實(shí)現(xiàn)的介紹。
[0028]客戶端檢測與反饋?zhàn)酉到y(tǒng):使用散列算法得到每個(gè)執(zhí)行文件、庫文件和內(nèi)核模塊的散列值,并用它代替可執(zhí)行文件內(nèi)容,存入到位于內(nèi)核中的檢測值列表中。檢測的實(shí)施分成3部分:①在系統(tǒng)中插入檢測點(diǎn);②實(shí)際檢測;③驗(yàn)證檢測值。這個(gè)方法從B1S下一步開始檢測,之后繼續(xù)檢測下一部分代碼直到狀態(tài)反饋檢測結(jié)束,并驗(yàn)證通過OS啟動(dòng)成功。對于新開啟的應(yīng)用程序,將每個(gè)應(yīng)用程序安裝包中的配置文件映射至新分配的虛擬機(jī)內(nèi)存空間,所以安全檢測模塊通過hook函數(shù)調(diào)用內(nèi)核態(tài)的安全檢測模塊,對內(nèi)存中的配置文件進(jìn)行檢測,生成檢測值。
[0029]狀態(tài)反饋在客戶端位置監(jiān)控模塊中設(shè)置好敏感區(qū)域范圍的位置信息,服務(wù)啟動(dòng)后自動(dòng)開啟位置位置監(jiān)聽器,實(shí)時(shí)獲取位置位置判斷是否進(jìn)入敏感區(qū)域,判斷成功后,調(diào)用狀態(tài)反饋的檢測值上傳模塊。檢測值上傳模塊向監(jiān)控中心發(fā)送用戶名,同時(shí)移動(dòng)終端存儲(chǔ)用戶輸入的服務(wù)器預(yù)分配口令于內(nèi)存中,監(jiān)控中心將隨機(jī)數(shù)返回到客戶端。接下來,檢測值上傳模塊對隨機(jī)數(shù)及用戶預(yù)分配口令進(jìn)行哈希運(yùn)算,生成虛擬機(jī)應(yīng)用安全信息的加密密鑰,客戶端通過檢測值上傳模塊,主動(dòng)上傳加密后的包含虛擬機(jī)應(yīng)用安全信息的XML至監(jiān)控中心,進(jìn)行驗(yàn)證。
[0030]監(jiān)控中心子系統(tǒng)的安全信息收集模塊、安全信息驗(yàn)證模塊和安全策略模塊使用同一數(shù)據(jù)庫。對于安全信息數(shù)據(jù)的收集和驗(yàn)證模塊,本發(fā)明通過實(shí)現(xiàn)動(dòng)態(tài)監(jiān)聽可執(zhí)行程序完成,動(dòng)態(tài)監(jiān)聽可執(zhí)行程序運(yùn)行后,可以開啟Socket連接監(jiān)聽,解析接收到的XML文件,并進(jìn)行格式轉(zhuǎn)換,最后將數(shù)據(jù)庫中安全性元數(shù)據(jù)與之對比的結(jié)果返回。監(jiān)控中心子系統(tǒng)的安全策略管理模塊采用了白名單策略。
[0031]應(yīng)用程序賦權(quán)子系統(tǒng)為用戶提供了對存在安全隱患的權(quán)限控制進(jìn)行即時(shí)賦權(quán)的能力,在應(yīng)用程序使用可疑權(quán)限前請求用戶確認(rèn)。此外,用戶在安裝時(shí)可將部分權(quán)限直接賦予應(yīng)用,也可在使用過程中通過設(shè)置界面動(dòng)態(tài)調(diào)整各個(gè)應(yīng)用的權(quán)限。該系統(tǒng)對系統(tǒng)和現(xiàn)有惡意應(yīng)用程序樣本進(jìn)行詳細(xì)分析,推導(dǎo)出惡意應(yīng)用所必備的權(quán)限控制特征集合?;谶@樣一個(gè)特征集合可有效減少所需的用戶交互賦權(quán)。只有當(dāng)某次對權(quán)限的使用請求至少符合特征集合中的一項(xiàng)特征時(shí),該次權(quán)限控制請求才需要用戶交互賦權(quán)。
[0032]應(yīng)用程序賦權(quán)子系統(tǒng)進(jìn)一步由三個(gè)模塊組成:(I)應(yīng)用程序安裝模塊,用于提供安裝時(shí)部分賦權(quán)的入口 ;(2)權(quán)限控制攔截模塊,用于攔截應(yīng)用程序?qū)λ袡?quán)限的使用;
(3)決策模塊,用于決定系統(tǒng)如何處理這些權(quán)限控制請求:允許、拒絕和要求用戶交互賦權(quán)。
[0033]應(yīng)用程序安裝模塊為用戶提供在安裝應(yīng)用時(shí)將部分權(quán)限直接賦予應(yīng)用的入口。除非用戶非常確定應(yīng)用程序需要該權(quán)限,否則沒有權(quán)限會(huì)默認(rèn)賦予應(yīng)用程序。通過修改安裝程序向用戶提供安裝時(shí)部分賦權(quán)的入口。用戶所做的賦權(quán)響應(yīng)將會(huì)被安裝程序發(fā)送至系統(tǒng)框架層中的安裝包管理器,并由安裝包管理器負(fù)責(zé)完成剩余的安裝工作。
[0034]權(quán)限控制攔截模塊攔截應(yīng)用程序?qū)λ袡?quán)限的使用請求。本發(fā)明在權(quán)限控制前會(huì)將權(quán)限控制請求重定向到一個(gè)權(quán)限控制監(jiān)控器。為了能夠完全覆蓋所有可能的權(quán)限控制方式,本發(fā)明在不同種類的權(quán)限被使用時(shí)采取不同的攔截方式。只需在權(quán)限檢查點(diǎn)處將權(quán)限請求重定向到權(quán)限控制監(jiān)控器,即能完全覆蓋所有對權(quán)限的使用請求。對內(nèi)核權(quán)限控制請求的攔截和重定向必須在內(nèi)核層實(shí)現(xiàn)。本發(fā)明的方法使用系統(tǒng)調(diào)用攔截器負(fù)責(zé)對所有與內(nèi)核權(quán)限相關(guān)的系統(tǒng)調(diào)用進(jìn)行攔截并重定向到權(quán)限控制監(jiān)控器,從而攔截所有對內(nèi)核權(quán)限的使用請求。
[0035]決策模塊決定了方法將如何處理每一個(gè)被攔截的權(quán)限控制請求。在本發(fā)明的方法中,每個(gè)應(yīng)用程序所申請的任一權(quán)限都有三個(gè)可能的狀態(tài):(I)已賦權(quán)(對該權(quán)限的使用將被直接允許),(2)已阻止(對該權(quán)限的使用將被直接拒絕),(3)待定(對該權(quán)限的使用將請求用戶的確認(rèn))。權(quán)限管理器負(fù)責(zé)處理所有的狀態(tài)轉(zhuǎn)換并持久化存儲(chǔ)權(quán)限狀態(tài)信息以保證設(shè)備重啟后信息不會(huì)丟失。為了減少不必要的用戶參與,當(dāng)應(yīng)用程序?qū)?quán)限的使用不會(huì)帶來安全隱患時(shí),決策模塊將該權(quán)限直接設(shè)置為已賦權(quán)狀態(tài)。而一次權(quán)限的使用是否會(huì)帶來安全隱患則由一個(gè)決策器進(jìn)行判斷,該決策器將權(quán)限控制請求與惡意程序權(quán)限控制特征進(jìn)行比對,符合特征的