本發(fā)明涉及了軟件訪問控制、移動終端安全和Android系統(tǒng)架構(gòu)優(yōu)化等多方面領(lǐng)域特別是涉及一種基于多策略的訪問控制系統(tǒng)及方法。
背景技術(shù):
隨著移動終端的蓬勃發(fā)展,基于Android操作系統(tǒng)的移動設(shè)備正朝著多元化、智能化、高性能的趨勢發(fā)展。近幾年,Android系統(tǒng)憑借良好的用戶體驗(yàn)和較高的開放性,被越來越多的手機(jī)廠商采用。同時智能終端的迅速發(fā)展使得人們的生活日益便捷。
然而,移動端在方便大眾的同時,也逐漸引發(fā)人們對手機(jī)端安全和隱私的關(guān)注。網(wǎng)絡(luò)安全公司F-Secure最新發(fā)布的數(shù)據(jù)顯示:2013年,所有的移動類惡意軟件中,有97%是攻擊Android設(shè)備的,2012年該數(shù)據(jù)只有79%,未來還有可能繼續(xù)增長。這些惡意軟件往往會欺騙用戶安裝,竊取用戶個人信息或騙取用戶金錢,致使用戶的個人隱私和財產(chǎn)受到極大的威脅。
Android是基于權(quán)限訪問控制的系統(tǒng),應(yīng)用程序在安裝之前會詢問用戶是否授予AndroidManifest中申請的權(quán)限。Android平臺中存在的攻擊分為:
1、利用權(quán)限進(jìn)行非法行為
在Android系統(tǒng)中,用戶一旦對應(yīng)用程序權(quán)限授權(quán),就不能將權(quán)限回收。不僅如此,用戶也不知道應(yīng)用程序什么時候使用權(quán)限,利用權(quán)限進(jìn)行了什么行為。這些弊端造成惡意軟件泄露用戶的隱私數(shù)據(jù),一些消費(fèi)軟件更使得用戶的財產(chǎn)受到損失。
2、權(quán)限提升攻擊
如圖1所示,為Android中典型的權(quán)限提升攻擊實(shí)例。其中,App1包括不具有任何權(quán)限的組件1,App2包括不具有不具有任何權(quán)限的組件1的組件2和具有權(quán)限P1的組件3,系統(tǒng)資源(System Resources)包括具有權(quán)限P1的組件4。當(dāng)App1的組件1和App2的組件2通信時,不會進(jìn)行權(quán)限檢查,因?yàn)榻M件1和組件2都不需要權(quán)限即可啟動。由于組件2和組件3同屬于APP2,因而組件2可以對組件3進(jìn)行正常調(diào)用。組件3擁有權(quán)限P1,所以組件3可以訪問擁有權(quán)限P1的系統(tǒng)組件4或者系統(tǒng)資源。在這一調(diào)用過程中,App1就間接的調(diào)用組件4,從而構(gòu)成了權(quán)限提升攻擊。
傳統(tǒng)的Android框架不足以保證用戶通過權(quán)限對應(yīng)用軟件進(jìn)行有效地訪問控制。隨著這些安全問題的產(chǎn)生,越來越多的研究者試圖從監(jiān)控應(yīng)用程序的行為入手,管理應(yīng)用程序,從而達(dá)到提升應(yīng)用軟件安全的目的。相關(guān)研究工作也取得很多有益的進(jìn)展,例如,Kirin是一個基于規(guī)則集的靜態(tài)權(quán)限匹配系統(tǒng),它嘗試將應(yīng)用程序所申請的權(quán)限集聯(lián)合起來去判斷該應(yīng)用程序的安全性,然而有些惡意程序看似安全,卻通過權(quán)限提升對用戶進(jìn)行攻擊;Saint策略從應(yīng)用程序需求出發(fā),通過定義多粒度策略,對應(yīng)用程序?qū)ο笮畔⑦M(jìn)行約束,限制通信對象,來避免可能存在的攻擊,但是Saint策略由開發(fā)者定義,惡意開發(fā)者會定義滿足攻擊條件的惡意策略達(dá)到其攻擊目的;AppGuard通過內(nèi)置監(jiān)控器在第三方應(yīng)用程序內(nèi)放置策略實(shí)施代碼,從而無需對Android源碼進(jìn)行更改便可實(shí)現(xiàn)監(jiān)控功能,但是在手機(jī)端處理APK需要消耗大量時間。
針對上述問題,提出新穎、有效的Android訪問控制方法是很有現(xiàn)實(shí)意義的。從訪問控制角度提升軟件安全性,對Android訪問控制方法的研究尤為重要。
Android訪問控制主要包括兩種:a)修改APK端,從而達(dá)到訪問控制目的;b)修改Android源碼層從而進(jìn)行訪問控制。
從某種程度上,上述技術(shù)解決了Android系統(tǒng)某一領(lǐng)域范圍內(nèi)的問題。對于從修改APK端著手的系統(tǒng),能夠?qū)崿F(xiàn)對APK端接口多粒度的訪問控制,卻并不能解決存在的權(quán)限提升攻擊危險;而對于從修改Android源碼達(dá)到的訪問控制的系統(tǒng),也僅解決了對某些資源進(jìn)行訪問控制或解決應(yīng)用程序之間存在的權(quán)限提升攻擊,所使用的策略是單一的。綜述所述,現(xiàn)有技術(shù)不足以保證人們對移動應(yīng)用安全的要求。
技術(shù)實(shí)現(xiàn)要素:
針對上述現(xiàn)有技術(shù)中未能解決的問題,本發(fā)明提出了一種基于多策略的Android訪問控制系統(tǒng)及方法,引入RSBAC(基于多策略規(guī)則集)框架,改進(jìn)Android安全機(jī)制,拓展了Andriod框架層,利用多種策略,從安全性、靈活性、實(shí)用性角度出發(fā),實(shí)現(xiàn)一種可抵御多種攻擊的方法。
本發(fā)明的一種基于多策略的Android訪問控制系統(tǒng),該系統(tǒng)整體包括設(shè)置在Android中間件層的應(yīng)用程序安裝模塊、運(yùn)行時控制器和策略安裝模塊,三者之間相互作用完成Android系統(tǒng)的訪問控制,通過多策略機(jī)制實(shí)現(xiàn)對Android框架層API級的訪問。其中:
所述應(yīng)用程序安裝模塊,用于安裝和卸載應(yīng)用程序,該模塊包括應(yīng)用程序管理器組件和應(yīng)用程序信息庫:所述應(yīng)用程序管理器組件在程序安裝時對應(yīng)用程序的初始化狀態(tài)信息進(jìn)行收集、抽取應(yīng)用程序中組件、權(quán)限、Intent過濾器信息并保存初始狀態(tài)信息的工作;所述應(yīng)用程序信息庫存儲初始化應(yīng)用程序狀態(tài)信息的數(shù)據(jù)庫;
所述運(yùn)行時監(jiān)控模塊,包括訪問執(zhí)行組件和訪問決策組件:所述訪問執(zhí)行組件在運(yùn)行時對主體的訪問請求進(jìn)行攔截,并根據(jù)訪問請求判斷訪問請求的客體類型;所述訪問決策組件對訪問進(jìn)行決策,根據(jù)訪問者信息和被訪問者信息,加載相應(yīng)多策略的訪問控制算法,實(shí)現(xiàn)對訪問者和被訪問者的控制;
所述策略安裝模塊,提供策略的安裝、更新功能,該模塊包括多策略安裝器組件和多策略庫組件:多策略安裝器組件用于多策略的安裝;多策略庫是標(biāo)準(zhǔn)的數(shù)據(jù)庫,用來存儲定義的規(guī)則;
組件間通信包含應(yīng)用程序安裝模塊的組件通信、運(yùn)行時監(jiān)控模塊的組件通信以及策略安裝模塊的組件通信。
本發(fā)明的一種基于多策略的Android訪問控制系統(tǒng),該方法包括以下步驟:
首先,對所選取的Android應(yīng)用軟件進(jìn)行靜態(tài)分析,從中抽取所使用的API,完成API特征提??;進(jìn)一步對這些API特征進(jìn)行分析,抽取使用最多最常用的作為敏感API;
其次,通過應(yīng)用程序安裝器模塊進(jìn)行應(yīng)用程序的安裝和卸載,在程序安裝時收集應(yīng)用程序初始化狀態(tài),提取到應(yīng)用程序特征,依據(jù)應(yīng)用程序特征,對應(yīng)用程序進(jìn)行分類,包括可信應(yīng)用程序和不可信應(yīng)用程序;
進(jìn)行多策略設(shè)計(jì);
利用策略安裝模塊實(shí)現(xiàn)多策略的安裝和定義的規(guī)則存儲;
然后,利用運(yùn)行時監(jiān)控模塊,根據(jù)訪問請求判斷請求客體類型進(jìn)行決策;根據(jù)訪問者信息和被訪問者信息,加載相應(yīng)多策略的訪問控制算法,實(shí)現(xiàn)對訪問者和被訪問者的控制。
所述多策略設(shè)計(jì)具體為:對所提取的敏感API進(jìn)行建模,即建立分別使用依據(jù)用戶策略和上下文策略對這些敏感API進(jìn)行訪問控制的規(guī)則;以及,建立使用系統(tǒng)策略訪問控制的規(guī)則。
所述多策略的訪問控制算法具體包括以下步驟:
首先,進(jìn)行給出一系列變量的定義,包括應(yīng)用程序狀態(tài)、調(diào)用關(guān)系、策略、策略沖突;
然后,執(zhí)行策略加載算法:
當(dāng)被調(diào)用者是資源或者服務(wù)時,訪問決策組件加載多策略庫中的用戶策略和上下文策略,并判斷是否有用戶或第三方軟件被禁止調(diào)用或訪問某API接口。如果該能力被禁止,對于此次訪問請求,訪問決策組件返回false,否則將賦予該應(yīng)用程序訪問接口的能力;
當(dāng)被調(diào)用者是應(yīng)用程序或組件時,算法將檢查被調(diào)用者的類型。若被調(diào)用者類型為不可信應(yīng)用程序,訪問決策組件將加載調(diào)用方和被調(diào)用方的應(yīng)用程序狀態(tài),以及系統(tǒng)策略。
與現(xiàn)有技術(shù)相比,本發(fā)明通過多策略機(jī)制,完成了對應(yīng)用程序訪問接口能力的限制,并阻止ICC通信,從訪問控制層面提升了Android應(yīng)用程序的安全;通過配置用戶策略和上下文策略,用戶可以靈活的控制應(yīng)用程序行為。
附圖說明
圖1為Android系統(tǒng)的權(quán)限提升攻擊過程示意圖;
圖2為本發(fā)明的基于多策略的Android訪問控制系統(tǒng)結(jié)構(gòu)圖;
圖3為本發(fā)明的基于多策略的Android訪問控制方法流程圖;
圖4為API提取顯示界面圖;
圖5為Android訪問控制方法策略加載圖。
具體實(shí)施方式
如圖2所示,為本發(fā)明提出的基于多策略的Android訪問控制系統(tǒng)框架,包括應(yīng)用程序安裝模塊、運(yùn)行時控制器和策略安裝模塊。三者之間相互作用完成了Android系統(tǒng)的訪問控制,通過多策略機(jī)制實(shí)現(xiàn)對Android框架層API級的訪問。其中:
應(yīng)用程序安裝模塊,主要負(fù)責(zé)安裝和卸載應(yīng)用程序,包括應(yīng)用程序管理器組件以及應(yīng)用程序信息庫:在安裝時APK包的解析工作,實(shí)現(xiàn)應(yīng)用程序管理器組件的拓展,增加對應(yīng)用程序的信息進(jìn)行收集并保存初始狀態(tài)信息的工作;應(yīng)用程序信息庫是用來存儲初始化應(yīng)用程序狀態(tài)信息的數(shù)據(jù)庫。實(shí)現(xiàn)了標(biāo)準(zhǔn)Android安裝模塊的拓展。
運(yùn)行時監(jiān)控模塊,包括訪問執(zhí)行組件和訪問決策組件:訪問執(zhí)行組件在運(yùn)行時對主體的訪問請求進(jìn)行攔截,并根據(jù)訪問請求判斷請求客體。訪問決策組件對訪問進(jìn)行決策,根據(jù)訪問者信息和被訪問者信息,加載相應(yīng)策略,實(shí)現(xiàn)對訪問者和被訪問者的控制。
策略安裝模塊,設(shè)置于在Android中間件層,提供策略的安裝、更新功能。該模塊包括多策略安裝器組件和多策略庫組件。多策略庫是標(biāo)準(zhǔn)的數(shù)據(jù)庫,用來存儲定義的規(guī)則。
組件間通信主要包含三個部分:(一)運(yùn)行時監(jiān)控模塊的組件通信,(二)應(yīng)用程序安裝模塊的組件通信及(三)策略安裝模塊的組件通信。
(一)、運(yùn)行時監(jiān)控模塊的組件通信
訪問執(zhí)行組件攔截應(yīng)用程序發(fā)出的訪問請求,并根據(jù)訪問請求確定客體類型。若客體類型是資源或服務(wù),訪問決策組件將加載多策略庫中的用戶策略和上下文策略,并根據(jù)策略規(guī)則判斷是否允許此次訪問;若客體類型是應(yīng)用程序或組件,訪問決策組件將會得到主體發(fā)送的Intent,并根據(jù)Intent推斷出訪問客體,然后訪問決策組件判斷該Intent是否為新,若為新訪問,決策組件將該Intent保存在應(yīng)用程序信息庫中,同時ADM根據(jù)訪問的主體和客體,加載應(yīng)用程序信息庫中的應(yīng)用程序狀態(tài)和多策略庫中的用戶策略、上下文策略、系統(tǒng)策略,進(jìn)而驗(yàn)證此次通信連接是否與系統(tǒng)策略中定義的規(guī)則相違背,若違背,則阻止此次訪問請求。
(二)、應(yīng)用程序安裝模塊的組件通信
安裝應(yīng)用程序時,應(yīng)用程序管理模塊抽取應(yīng)用程序AndroidManifest.xml文件中組件、權(quán)限、Intent過濾器信息,并將這些信息以XML形式存儲在應(yīng)用程序信息庫中。當(dāng)卸載應(yīng)用程序時,應(yīng)用程序管理模塊將執(zhí)行以下操作:刪除安裝時創(chuàng)建的資源,并且調(diào)用應(yīng)用程序信息庫中方法刪除為該應(yīng)用程序創(chuàng)建的策略。
(三)、策略安裝模塊的組件通信
策略安裝過程中,UI負(fù)責(zé)顯示策略安裝選項(xiàng),并將用戶操作發(fā)送給多策略安裝器。多策略安裝器負(fù)責(zé)將多策略安裝到多策略庫。多策略庫負(fù)責(zé)安裝三種類型的策略。
如圖3所示,本發(fā)明的基于多策略的Android訪問控制方法流程包括API特征提取、應(yīng)用程序特征提取和多策略設(shè)計(jì)、策略加載算法三部分。API特征提取是確定對哪些API進(jìn)行訪問控制,將基于權(quán)限的訪問控制系統(tǒng)細(xì)粒度化,并能夠?qū)@些API進(jìn)行建模;應(yīng)用程序特征提取是在程序安裝時提取特征,并定義為應(yīng)用程序狀態(tài),它是本發(fā)明中實(shí)現(xiàn)訪問控制的必須變量;多策略設(shè)計(jì)提供多策略機(jī)制。
(一)、API特征提取
如圖4所示,在Android系統(tǒng)中,權(quán)限和API映射是一對多關(guān)系,其權(quán)限管理機(jī)制是粗粒度的。為了更好的實(shí)現(xiàn)訪問控制管理,本發(fā)明利用靜態(tài)檢測工具androguard(Android guard)對市場上流行的50個Android應(yīng)用軟件進(jìn)行靜態(tài)分析,從中抽取所使用的API。進(jìn)一步對這些API進(jìn)行分析,抽取使用最多最常用的25個敏感API。本發(fā)明將這些API與應(yīng)用程序能力相對應(yīng),設(shè)計(jì)的多策略將限制應(yīng)用程序的運(yùn)行時的這些能力。
(二)、應(yīng)用程序特征提取
Android通過應(yīng)用程序安裝器模塊進(jìn)行應(yīng)用程序的安裝和卸載。本發(fā)明所使用的是拓展的Android應(yīng)用程序安裝模塊,其中增加在程序安裝時收集應(yīng)用程序初始化狀態(tài)的功能。本發(fā)明定義這些信息為應(yīng)用程序狀態(tài)。
首先對應(yīng)用程序進(jìn)行分類,可分為以下兩類:
a.可信應(yīng)用程序,是系統(tǒng)應(yīng)用程序,Android原生自帶的應(yīng)用程序。
b.不可信應(yīng)用程序,是用戶從Android應(yīng)用市場上下載的,將其標(biāo)記為不可信應(yīng)用程序。
其次,本發(fā)明更改scanPackageLi組件。使其在解析APK文件時,將應(yīng)用程序訪問能力、組件信息以及啟動這些組件的Intent信息以XML的格式存儲到應(yīng)用程序信息庫中。
(三)、多策略設(shè)計(jì)、策略加載算法
1、多策略設(shè)計(jì)
本發(fā)明中,多策略包括用戶策略、上下文策略和系統(tǒng)策略。是對所提取的敏感API進(jìn)行建模,使用用戶策略和上下文策略對這些敏感API進(jìn)行訪問控制,以及使用系統(tǒng)策略訪問控制的規(guī)則。
(1)、用戶策略
用戶策略是根據(jù)用戶的意愿,對敏感API進(jìn)行實(shí)時訪問控制。本發(fā)明將這些API定義為應(yīng)用程序能力,用戶策略用來約束應(yīng)用程序訪問API。在該用戶策略中,用戶對“read_SMS”、“read_Contact”、“Internet”等接口權(quán)限收回。當(dāng)應(yīng)用程序訪問這些接口時,加載用戶策略,確認(rèn)應(yīng)用程序是否擁有訪問該接口的權(quán)限。
對接口的限制在一定程度上細(xì)化了Andriod權(quán)限機(jī)制。本發(fā)明定義了25個用戶規(guī)則,例如定義了以下規(guī)則:
規(guī)則1:<permission name=“read_SMS”revokePerm=”true”>對讀短信API進(jìn)行訪問限制。
規(guī)則2:<permission name=“read_Contact”revokePerm=”true”>對讀通訊錄API進(jìn)行訪問限制。
(2)、上下文策略
上下文策略由Mauto Conti等人提出。上下文可被定義為一些變量的狀態(tài),例如地理位置信息、時間、問題、噪聲、光線等。上下文策略將這些變量因素考慮到Android系統(tǒng),允許用戶或者可信的第三方定制相應(yīng)的策略,限制應(yīng)用程序的行為。本發(fā)明定義了90個上下文規(guī)則。
例如:定義了的規(guī)則:包c(diǎn)om.example.testcontactContext在上班時間不準(zhǔn)和包c(diǎn)om.example.sendmessage進(jìn)行通信。
(3)、系統(tǒng)策略
對于系統(tǒng)策略,本發(fā)明基于Xmandroid啟發(fā)性對應(yīng)用軟件建模,并對約束主體和客體訪問條件。
系統(tǒng)策略是本發(fā)明為阻止非法ICC通信定義的。非法的ICC通信一般是指應(yīng)用程序在通信時,通過與其他應(yīng)用程序協(xié)作,完成一些訪問敏感資源的能力,而這些能力一般是應(yīng)用程序不具有的。XmanDroid定義了系統(tǒng)策略,本發(fā)明擴(kuò)展該策略,并以XML文檔格式存儲起來,每個規(guī)則都對主體和客體進(jìn)行了限制。兩條規(guī)則描述如下:
規(guī)則1:第三方應(yīng)用程序不含有CALL_PHONE權(quán)限或是CALL_PHONE權(quán)限被收回,則其不能向系統(tǒng)應(yīng)用程序com.android.phone發(fā)送含有android.intent.action.DAIL的intent。
規(guī)則2:含有READ_CONTACT權(quán)限的第三方應(yīng)用程序不能和含有SEND_SMS權(quán)限的應(yīng)用程序通信。
2、Android訪問控制方法的策略加載算法
(1)、變量定義
為了更好地理解Android訪問控制方法,并對其進(jìn)行建模,本發(fā)明用形式化方法描述程序運(yùn)行時的一些變量狀態(tài)。下面給出變量狀態(tài)的定義。
定義1(應(yīng)用程序狀態(tài)):本發(fā)明將應(yīng)用程序狀態(tài)定義為三元組(type,Scap,Scompo),type為應(yīng)用程序類型,Scap為應(yīng)用程序能力集合,Scompo為應(yīng)用程序組件及組件發(fā)送的intent集合。
在調(diào)用過程中,用應(yīng)用程序狀態(tài)描述應(yīng)用程序所屬的沙箱。應(yīng)用程序狀態(tài)包含靜態(tài)狀態(tài)和動態(tài)狀態(tài)。靜態(tài)狀態(tài)是應(yīng)用程序安裝時的一些信息,例如應(yīng)用程序組件、應(yīng)用程序權(quán)限等;動態(tài)狀態(tài)是應(yīng)用程序在運(yùn)行過程中發(fā)出的intent信息。
定義2(調(diào)用關(guān)系):訪問主體客體為三元組(Sc,Sct,Policies)。Sc為調(diào)用方的狀態(tài),一般為第三方應(yīng)用程序;Sct為被調(diào)用方狀態(tài),一般為資源、系統(tǒng)應(yīng)用程序或者第三方應(yīng)用程序;Policys為調(diào)用過程中所要加載的策略。Sc.type表示調(diào)用方的應(yīng)用程序類型,Sc.Scap表示應(yīng)用程序訪問能力集合。Sct.Scap表示應(yīng)用程序的組件集合。
本發(fā)明根據(jù)客體屬性加載不同策略。當(dāng)訪問客體為資源時,訪問執(zhí)行組件加載用戶策略和上下文策略;當(dāng)客體為ICC通信時,訪問執(zhí)行組件加載用戶策略、上下文策略、系統(tǒng)策略來控制訪問。
定義3(策略):本發(fā)明包含三種策略:用戶策略、上下文策略及系統(tǒng)策略。定義Srule為用戶策略集,S′rule為上下文策略集。每個在策略集中的規(guī)則是用來限制API的。定義這些規(guī)則對應(yīng)的API分別為I、I’,它們滿足:S{Sc,Sct}
I∈Srule,I′∈S′rule
I′∈Srule,I∈S′rule
定義系統(tǒng)策略滿足:S{Sc,Sct},Sc為調(diào)用方狀態(tài),Sct為被調(diào)用方狀態(tài)。
在本發(fā)明中,用戶策略和上下文策略是對敏感API接口的一種訪問控制策略。而系統(tǒng)策略則是根據(jù)通信雙方的應(yīng)用程序狀態(tài)設(shè)計(jì)的。當(dāng)通信中的調(diào)用者和被調(diào)用者滿足系統(tǒng)策略中的規(guī)定時,則說明此次訪問請求是ICC通信。例如:系統(tǒng)策略規(guī)則2,在應(yīng)用程序狀態(tài)中,通信雙方都是untrust類型的應(yīng)用程序,并且調(diào)用方的通信能力集合含有“Send_Sms”,而被調(diào)用方的通信能力集合含有“Read_contact”。如果調(diào)用者和被調(diào)用者的應(yīng)用程序狀態(tài)都成功匹配,說明訪問請求時非法的。
定義4(策略沖突):用戶策略和上下文策略中的規(guī)則定義應(yīng)用程序是否允許訪問API。對于qi∈Srule,S′rule滿足:
L(s,a):q1∧q2∧...∧qn
其中,L表示多策略的決策函數(shù),s是Sc;a∈Srule,qi∈Srule,Srule,S′rule分別對應(yīng)用戶策略規(guī)則集和上下文策略規(guī)則集。特別的,用戶策略和上下文策略以及DefaultAPI接口滿足如下關(guān)系:
表1、多策略規(guī)則集關(guān)系
如表1所示,對于同一個API,當(dāng)且僅當(dāng)上下文策略、用戶策略以及default策略都是granted,則應(yīng)用程序可訪問,否則拒絕訪問。
這些應(yīng)用程序運(yùn)行時的狀態(tài)定義在運(yùn)行時由系統(tǒng)維護(hù),在調(diào)用時訪問決策組件檢查,并驗(yàn)證這些變量在加載多策略后,是否發(fā)生變化,并且能夠根據(jù)變化,做出對應(yīng)決策。
(2)策略加載算法
多策略訪問控制算法是由訪問決策組件在運(yùn)行時加載的,用來決定什么時候、什么策略會被加載到系統(tǒng)中。同時分析策略,判斷此次請求是否違背策略以及處理策略沖突,最后對訪問請求做出決策。算法包括兩部分:
算法1~7行描述的是被調(diào)用者是資源或服務(wù)的情況。當(dāng)被調(diào)用者是資源或者服務(wù)時,訪問決策組件加載多策略庫中的用戶策略和上下文策略,并判斷是否有用戶或第三方軟件被禁止調(diào)用或訪問某API接口。如果該能力被禁止,對于此次訪問請求,訪問決策組件返回false,否則將賦予該應(yīng)用程序訪問接口的能力。本發(fā)明從實(shí)用性角度出發(fā),修改返回請求,對訪問地理位置信息、手機(jī)設(shè)備ID等返回偽造數(shù)據(jù),對訪問短信數(shù)據(jù)庫或通信數(shù)據(jù)庫等返回空值。
算法8~12行描述的是被調(diào)用者是應(yīng)用程序或組件的情況。當(dāng)被調(diào)用者是應(yīng)用程序或組件時,算法將檢查被調(diào)用者的類型。若被調(diào)用者類型為不可信應(yīng)用程序,訪問決策組件將加載調(diào)用方和被調(diào)用方的應(yīng)用程序狀態(tài),以及系統(tǒng)策略。訪問決策組件解析系統(tǒng)策略中的每一條規(guī)則,將這些信息與Sc和Sct匹配。
例如,應(yīng)用程序?qū)?yīng)的應(yīng)用程序狀態(tài)滿足:
①
Sc.type=“untrust”&&“send_Sms”∈SC.Scap&&“read_Contact”∈Sct.Scap
調(diào)用者和被調(diào)用者違背了系統(tǒng)策略規(guī)則2,此次訪問是非法的ICC調(diào)用。如果不能成功匹配,則返回checkComponentPermission。
當(dāng)被調(diào)用者是系統(tǒng)應(yīng)用程序時,訪問決策組件將加載調(diào)用者和被調(diào)用者的應(yīng)用程序狀態(tài)。將系統(tǒng)策略中每條規(guī)則與調(diào)用方和被調(diào)用方的應(yīng)用程序狀態(tài)進(jìn)行匹配。例如滿足如下條件的第三方應(yīng)用程序和系統(tǒng)程序之間是不允許通信的:
②
③Sc.type=“untrust”&&packageName={“com.android.phone”}∈Sct.Scap
此次通信和系統(tǒng)策略1中定義的規(guī)則匹配,說明此次通信是不允許的;否則,將返回checkComponentPermission。
在大量樣本統(tǒng)計(jì)下,本發(fā)明實(shí)現(xiàn)了接口級訪問控制時間為0.399ms,組件通信時間消耗為6.334ms??傮w來說本發(fā)明方法達(dá)到了以下有益效果:
實(shí)現(xiàn)API特征提取,設(shè)計(jì)出多策略機(jī)制:
對50個Android應(yīng)用市場上常用應(yīng)用軟件進(jìn)行靜態(tài)分析,提取出15個常用的API,并映射到Android源碼層,分析其功能和調(diào)用方法,并對這些API進(jìn)行建模,完成用戶策略和上下文策略的設(shè)計(jì)。
實(shí)現(xiàn)應(yīng)用程序特征提?。?/p>
對應(yīng)用程序安裝時的特性進(jìn)行分析,并抽取應(yīng)用程序的特征,如組件信息、申請權(quán)限等。對這些信息進(jìn)行建模,完成基于應(yīng)用程序狀態(tài)的系統(tǒng)策略設(shè)計(jì)。
改進(jìn)Android安全機(jī)制,引入RSBAC框架:
將RSBAC框架引入Android,實(shí)現(xiàn)了基于多策略的Android訪問控制系統(tǒng),并對50個Android應(yīng)用軟件和118個惡意樣本進(jìn)行測試,通過設(shè)計(jì)的兩種實(shí)現(xiàn)案例證明系統(tǒng)的有效性和正確性。
本發(fā)明通過多策略機(jī)制,完成了對應(yīng)用程序訪問接口能力的限制,并阻止了ICC通信。在實(shí)驗(yàn)中,通過配置用戶策略和上下文策略,用戶可以靈活的控制應(yīng)用程序行為。