欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種支持Android運(yùn)行時(shí)權(quán)限機(jī)制的第三方應(yīng)用間通信訪問(wèn)控制方法與流程

文檔序號(hào):11387071閱讀:668來(lái)源:國(guó)知局
一種支持Android運(yùn)行時(shí)權(quán)限機(jī)制的第三方應(yīng)用間通信訪問(wèn)控制方法與流程

本發(fā)明屬于android系統(tǒng)訪問(wèn)控制領(lǐng)域,特別涉及一種支持android運(yùn)行時(shí)權(quán)限機(jī)制的第三方應(yīng)用間通信訪問(wèn)控制方法。



背景技術(shù):

android是目前市場(chǎng)占有率最高的開(kāi)源移動(dòng)平臺(tái)操作系統(tǒng),系統(tǒng)采用了軟件疊層架構(gòu),由定制的linux內(nèi)核層、中間件層及應(yīng)用層組成。其中,中間件層提供了大量的系統(tǒng)服務(wù),例如該層中的activitymanager組件包含了對(duì)應(yīng)用間通信進(jìn)行強(qiáng)制訪問(wèn)控制的功能。

android系統(tǒng)通過(guò)沙箱機(jī)制隔離各應(yīng)用的運(yùn)行環(huán)境(簽名相同的應(yīng)用將運(yùn)行于同一沙箱內(nèi),共享其中的資源與權(quán)限);同時(shí),android權(quán)限機(jī)制利用由其定義的權(quán)限標(biāo)簽以及強(qiáng)制訪問(wèn)控制機(jī)制,控制應(yīng)用對(duì)沙箱外資源的訪問(wèn)過(guò)程。當(dāng)應(yīng)用請(qǐng)求訪問(wèn)沙箱外的資源(包括系統(tǒng)api、其他應(yīng)用等)時(shí),android權(quán)限機(jī)制將根據(jù)被訪問(wèn)者所設(shè)定的訪問(wèn)權(quán)限限制要求,對(duì)該應(yīng)用所擁有的權(quán)限進(jìn)行檢查,從而對(duì)該訪問(wèn)進(jìn)行控制。

android系統(tǒng)將其定義的權(quán)限分為普通級(jí)(normal),危險(xiǎn)級(jí)(dangerous),簽名級(jí)(signature)和系統(tǒng)/簽名級(jí)(signatureorsystem)。其中,普通權(quán)限與危險(xiǎn)權(quán)限是第三方應(yīng)用普遍使用的權(quán)限類別,而危險(xiǎn)權(quán)限則進(jìn)一步根據(jù)其功能相關(guān)性被分為若干組。由于危險(xiǎn)權(quán)限涉及通話、短信等敏感服務(wù),更易造成用戶損失,成為了各類基于權(quán)限的保護(hù)技術(shù)的關(guān)注重點(diǎn)。此外,從android6.0marshmallow(apilevel23)開(kāi)始,android系統(tǒng)引入了運(yùn)行時(shí)權(quán)限機(jī)制。應(yīng)用在安裝時(shí),其在manifest.xml文件中所聲明的危險(xiǎn)權(quán)限不會(huì)被立即授予,而是在應(yīng)用運(yùn)行時(shí)發(fā)出權(quán)限請(qǐng)求,由用戶以權(quán)限組為單位自行決定是否授予。即當(dāng)用戶根據(jù)應(yīng)用請(qǐng)求授予其某一危險(xiǎn)權(quán)限時(shí),系統(tǒng)將自動(dòng)賦予該應(yīng)用在manifest.xml文件中聲明的其它同組權(quán)限。另外,在系統(tǒng)運(yùn)行時(shí),用戶可以隨時(shí)以組為單位對(duì)應(yīng)用的危險(xiǎn)權(quán)限進(jìn)行授予或撤銷操作。

android系統(tǒng)為應(yīng)用提供了組件間通訊機(jī)制(inter-componentcommunitation,icc),為不同應(yīng)用間的通信與功能重用提供了極大的便利,然而android權(quán)限機(jī)制由于依賴開(kāi)發(fā)者自主制定的應(yīng)用訪問(wèn)限制策略來(lái)實(shí)現(xiàn)對(duì)應(yīng)用間通信的控制,因此留下了巨大的安全隱患:一個(gè)未被授予相關(guān)權(quán)限的惡意程序可以通過(guò)icc通信調(diào)用其它具有相關(guān)權(quán)限的應(yīng)用的未受保護(hù)的接口,利用后者非法使用相關(guān)服務(wù)及數(shù)據(jù),從而實(shí)現(xiàn)一類特定的權(quán)限提升攻擊:混淆代理人攻擊。在android市場(chǎng)中,由于第三方應(yīng)用的開(kāi)發(fā)者往往缺乏相應(yīng)的安全意識(shí),未對(duì)其應(yīng)用設(shè)置適當(dāng)?shù)脑L問(wèn)策略,因而十分容易成為混淆代理人攻擊的對(duì)象。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提出了一種支持android運(yùn)行時(shí)權(quán)限機(jī)制的第三方應(yīng)用間通信訪問(wèn)控制方法,其目的在于,通過(guò)增加對(duì)通信請(qǐng)求雙方間的訪問(wèn)控制關(guān)系進(jìn)行合法性計(jì)算,依據(jù)合法性計(jì)算結(jié)果對(duì)通信請(qǐng)求進(jìn)行管理控制,從而避免android系統(tǒng)中發(fā)生的混淆代理人攻擊的問(wèn)題。

一種支持android運(yùn)行時(shí)權(quán)限機(jī)制的第三方應(yīng)用間通信訪問(wèn)控制方法,其特征在于,首先,通過(guò)在android系統(tǒng)中間件層擴(kuò)展pms服務(wù)和擴(kuò)展activitymanager中的icc監(jiān)控器;其次,構(gòu)建應(yīng)用危險(xiǎn)權(quán)限編碼映射表、訪問(wèn)控制決策管理器及由其動(dòng)態(tài)維護(hù)的訪問(wèn)控制信息庫(kù);接著,訪問(wèn)控制決策管理器實(shí)時(shí)查詢?cè)L問(wèn)控制信息庫(kù)中通信請(qǐng)求中雙方應(yīng)用的運(yùn)行權(quán)限,同時(shí)更新訪問(wèn)控制信息庫(kù),拒絕不具有客體應(yīng)用危險(xiǎn)權(quán)限的第三方應(yīng)用所發(fā)起的通信請(qǐng)求,實(shí)現(xiàn)對(duì)android第三方應(yīng)用間通信的訪問(wèn)控制;

所述擴(kuò)展pms服務(wù)是指增加將應(yīng)用程序最新的危險(xiǎn)權(quán)限信息與應(yīng)用uid打包發(fā)送至控制決策管理器的過(guò)程語(yǔ)句;所述擴(kuò)展icc監(jiān)控器是指對(duì)checkcomponentpermission()方法增加將通信雙方的應(yīng)用uid打包發(fā)送至控制決策管理器,并依據(jù)控制決策管理器的決策結(jié)果,返回是否允許本次通信;

所述訪問(wèn)控制信息庫(kù)包括訪問(wèn)控制關(guān)系圖和應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字集,其中,所述訪問(wèn)控制關(guān)系圖用于記錄應(yīng)用間的合法通信關(guān)系的有向圖,由鄰接矩陣與十字鏈表構(gòu)成,所述鄰接矩陣記錄應(yīng)用間訪問(wèn)控制關(guān)系的合法性計(jì)算結(jié)果,所述十字鏈表記錄應(yīng)用間的訪問(wèn)控制關(guān)系;

所述應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字集為short數(shù)組,其中第i個(gè)數(shù)是uid為10000+i的應(yīng)用的危險(xiǎn)權(quán)限狀態(tài)字;

pms為packagemanagerservices,icc為應(yīng)用間組件間通信,uid為標(biāo)識(shí)符;

所述危險(xiǎn)權(quán)限編碼映射表是指對(duì)具有危險(xiǎn)權(quán)限的應(yīng)用進(jìn)行映射編碼;

所述訪問(wèn)控制決策管理器包括應(yīng)用權(quán)限信息管理模塊和icc通信處理模塊,

應(yīng)用權(quán)限信息管理模塊通過(guò)接收來(lái)自擴(kuò)展的pms服務(wù)的消息,對(duì)訪問(wèn)控制信息庫(kù)進(jìn)行實(shí)時(shí)維護(hù);icc通信處理模塊同時(shí)通過(guò)擴(kuò)展的icc通信監(jiān)控器實(shí)時(shí)監(jiān)控android系統(tǒng)中發(fā)起的icc通信。

所述危險(xiǎn)權(quán)限編碼映射表為hash表結(jié)構(gòu)。提供了將危險(xiǎn)權(quán)限字符串映射為一個(gè)特定整數(shù)編號(hào)的查詢功能。其中,屬于同一個(gè)group的權(quán)限將被分配至同一個(gè)狀態(tài)字位號(hào)。

進(jìn)一步地,在系統(tǒng)初次啟動(dòng)時(shí),對(duì)訪問(wèn)控制信息庫(kù)進(jìn)行初始化,過(guò)程如下:

首先,應(yīng)用權(quán)限信息管理模塊在系統(tǒng)啟動(dòng)時(shí)檢查訪問(wèn)控制信息庫(kù)是否已經(jīng)初始化,并返回結(jié)果;

若訪問(wèn)控制信息庫(kù)尚未初始化,應(yīng)用權(quán)限信息管理模塊將掃描系統(tǒng)中所有應(yīng)用的信息,并根據(jù)信息更新訪問(wèn)控制信息庫(kù)中的應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字集,同時(shí)將訪問(wèn)控制關(guān)系圖進(jìn)行初始化,十字鏈表初始化為空,并將鄰接矩陣初始化為合法性未計(jì)算狀態(tài)。

進(jìn)一步地,所述訪問(wèn)控制決策管理器實(shí)時(shí)查詢?cè)L問(wèn)控制信息庫(kù)中通信請(qǐng)求中雙方應(yīng)用的運(yùn)行權(quán)限,同時(shí)更新訪問(wèn)控制信息庫(kù)的過(guò)程如下:

首先,依據(jù)發(fā)起通信請(qǐng)求的應(yīng)用方查詢鄰接矩陣中通信請(qǐng)求雙方的訪問(wèn)控制關(guān)系是否合法,返回查詢結(jié)果;

若所查詢的訪問(wèn)控制關(guān)系合法性尚未計(jì)算,則依據(jù)危險(xiǎn)權(quán)限比較方法計(jì)算通信請(qǐng)求雙方的訪問(wèn)控制關(guān)系的合法性,將合法性計(jì)算結(jié)果返回,并更新鄰接矩陣,且在十字鏈表中增加通信請(qǐng)求雙方間的訪問(wèn)控制關(guān)系節(jié)點(diǎn)。

進(jìn)一步地,應(yīng)用權(quán)限信息管理模塊對(duì)訪問(wèn)控制信息庫(kù)的維護(hù)過(guò)程如下:

1.1)在系統(tǒng)開(kāi)機(jī)時(shí)對(duì)訪問(wèn)控制信息庫(kù)進(jìn)行檢查,若訪問(wèn)控制信息庫(kù)尚未初始化,則調(diào)用擴(kuò)展的pms服務(wù)掃描應(yīng)用信息,通過(guò)查詢危險(xiǎn)權(quán)限編碼映射表將已安裝應(yīng)用的危險(xiǎn)權(quán)限狀態(tài)寫入訪問(wèn)控制信息庫(kù)中的應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字集中,并將訪問(wèn)控制關(guān)系圖初始化;

1.2)當(dāng)接收到擴(kuò)展的pms服務(wù)傳來(lái)的應(yīng)用安裝的消息時(shí),獲取待安裝應(yīng)用的所有權(quán)限更新引用危險(xiǎn)權(quán)限狀態(tài)字集。

進(jìn)一步地,icc通信處理模塊對(duì)通信請(qǐng)求進(jìn)行監(jiān)測(cè)過(guò)程如下:

2.1)當(dāng)接收到來(lái)自擴(kuò)展的icc通信管理機(jī)制的消息時(shí),調(diào)用擴(kuò)展后的pms服務(wù),對(duì)存放通信雙方應(yīng)用的mpackage進(jìn)行掃描,實(shí)時(shí)獲取雙方應(yīng)用的flag及uid,依據(jù)flag和uid判斷當(dāng)前應(yīng)用中存在非第三方應(yīng)用,則不對(duì)此次通信實(shí)施訪問(wèn)限制,否則,進(jìn)入步驟2.2);.

2.2)查詢?cè)L問(wèn)控制信息庫(kù),對(duì)鄰接矩陣對(duì)應(yīng)的兩應(yīng)用間的訪問(wèn)控制關(guān)系進(jìn)行查找,若其值為1,則認(rèn)為訪問(wèn)合法,不對(duì)本次訪問(wèn)進(jìn)行限制,若值為0,則認(rèn)為本次訪問(wèn)不合法,通知icc通信監(jiān)控器拒絕本次訪問(wèn),若值為-1或發(fā)生arrayindexoutofboundexception異常,則轉(zhuǎn)入步驟2.3);

2.3)利用危險(xiǎn)權(quán)限比較方法判斷訪問(wèn)主體應(yīng)用所擁有的危險(xiǎn)權(quán)限集合是否完全包含訪問(wèn)客體的危險(xiǎn)權(quán)限集合,若結(jié)果為true則允許本次訪問(wèn),若結(jié)果為false則拒絕本次訪問(wèn),并根據(jù)計(jì)算結(jié)果更新訪問(wèn)控制關(guān)系圖。

進(jìn)一步地,所述危險(xiǎn)權(quán)限比較方法的具體過(guò)程如下:

3.1)對(duì)icc通信發(fā)起者應(yīng)用a的危險(xiǎn)權(quán)限狀態(tài)字與icc通信接受者應(yīng)用b的危險(xiǎn)權(quán)限狀態(tài)字進(jìn)行位或運(yùn)算,將所得的結(jié)果與a的危險(xiǎn)權(quán)限狀態(tài)字進(jìn)行比較;

3.2)若步驟3.1)所得的結(jié)果為兩者相等,則認(rèn)為通信合法,返回true;否則,通信不合法,返回false。

所述危險(xiǎn)權(quán)限以group的形式進(jìn)行操作。在android系統(tǒng)中被劃分為同組的危險(xiǎn)權(quán)限在本方法中被視為同一權(quán)限進(jìn)行操作。

采用危險(xiǎn)權(quán)限狀態(tài)字能夠加快訪問(wèn)合法性的計(jì)算速度;

用十字鏈表+鄰接矩陣來(lái)記錄訪問(wèn)控制關(guān)系而不是直接采用十字鏈表,提高了鄰接矩陣更新時(shí)的速度(通過(guò)查詢十字鏈表避免了更新鄰接矩陣的整行、整列);

當(dāng)android系統(tǒng)中的應(yīng)用進(jìn)行以下操作時(shí),訪問(wèn)控制決策管理器進(jìn)行如下控制:

當(dāng)應(yīng)用安裝時(shí):

首先,對(duì)鄰接矩陣中的應(yīng)用對(duì)應(yīng)所在的行列進(jìn)行初始化,將行列上的所有項(xiàng)重新置為未計(jì)算的狀態(tài);接著,掃描該應(yīng)用所擁有的所有權(quán)限,更新應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字;

當(dāng)應(yīng)用卸載時(shí):

首先,查找訪問(wèn)控制信息庫(kù)中的十字鏈表里該應(yīng)用的對(duì)應(yīng)行鏈表與列鏈表中的所有節(jié)點(diǎn),對(duì)鄰接矩陣中與十字鏈表中節(jié)點(diǎn)對(duì)應(yīng)的項(xiàng)進(jìn)行初始化,并刪除十字鏈表中的與該應(yīng)用有關(guān)的節(jié)點(diǎn);接著,對(duì)該應(yīng)用的危險(xiǎn)權(quán)限狀態(tài)字進(jìn)行清零處理;

當(dāng)應(yīng)用權(quán)限增加時(shí):

首先,在十字鏈表結(jié)構(gòu)查找所有已記錄的與該應(yīng)用發(fā)生過(guò)icc通信請(qǐng)求的應(yīng)用;

接著,根據(jù)在十字鏈表中查詢到的所有結(jié)果,查找鄰接矩陣中的對(duì)應(yīng)位置的儲(chǔ)存數(shù)據(jù);

最后,對(duì)于查找到的存儲(chǔ)數(shù)據(jù)中所有先前由該應(yīng)用發(fā)起的不合法的訪問(wèn)所對(duì)應(yīng)的訪問(wèn)控制關(guān)系,及所有先前以該應(yīng)用為訪問(wèn)客體的合法的對(duì)應(yīng)訪問(wèn)控制關(guān)系,采用危險(xiǎn)權(quán)限比較方法,對(duì)查找到的訪問(wèn)控制關(guān)系的合法性進(jìn)行重新計(jì)算并更新鄰接矩陣,同時(shí)更新應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字;

當(dāng)應(yīng)用權(quán)限撤銷時(shí):

首先,在十字鏈表結(jié)構(gòu)查找所有已記錄的與該應(yīng)用發(fā)生過(guò)icc通信請(qǐng)求的應(yīng)用;

接著,根據(jù)在十字鏈表中查詢到的所有結(jié)果,查找鄰接矩陣中的對(duì)應(yīng)位置的儲(chǔ)存數(shù)據(jù);

最后,對(duì)于所有查找到的先前合法的、由該應(yīng)用發(fā)起的訪問(wèn)所對(duì)應(yīng)的訪問(wèn)控制關(guān)系,及所有先前不合法的、以該應(yīng)用為訪問(wèn)客體的對(duì)應(yīng)訪問(wèn)控制關(guān)系,通過(guò)危險(xiǎn)權(quán)限比較方法對(duì)查找到的訪問(wèn)控制關(guān)系的合法性進(jìn)行重新計(jì)算并更新鄰接矩陣,同時(shí)更新應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字。

有益效果

本發(fā)明提供了一種支持android運(yùn)行時(shí)權(quán)限機(jī)制的第三方應(yīng)用間通信訪問(wèn)控制方法,該方法根據(jù)通信雙方的所具有的危險(xiǎn)權(quán)限組對(duì)android第三方應(yīng)用間的通信進(jìn)行訪問(wèn)控制,從而防范企圖利用第三方應(yīng)用危險(xiǎn)權(quán)限的混淆代理人攻擊,為第三方應(yīng)用及其相應(yīng)危險(xiǎn)權(quán)限提供保護(hù),其優(yōu)點(diǎn)主要體現(xiàn)在以下幾個(gè)方面:

1)通過(guò)基于訪問(wèn)者與被訪問(wèn)者的實(shí)時(shí)權(quán)限進(jìn)行訪問(wèn)控制的規(guī)則,實(shí)現(xiàn)了在權(quán)限動(dòng)態(tài)變更條件下的訪問(wèn)控制,避免了因權(quán)限變化而導(dǎo)致的權(quán)限漏洞與權(quán)限傳遞;

2)以組的形式對(duì)危險(xiǎn)權(quán)限進(jìn)行比較的方法符合用戶的意圖與android權(quán)限系統(tǒng)的規(guī)則設(shè)計(jì),可以有效降低訪問(wèn)控制的誤報(bào)率;

3)通過(guò)嚴(yán)格限制應(yīng)用間通信的權(quán)限要求,阻止惡意應(yīng)用通過(guò)將存在漏洞的第三方應(yīng)用作為混淆代理人從而獲取其所沒(méi)有的權(quán)限,降低應(yīng)用間訪問(wèn)導(dǎo)致混淆代理人攻擊的可能性,從而提高系統(tǒng)的安全性;

4)實(shí)現(xiàn)了android6.0以上版本系統(tǒng)動(dòng)態(tài)權(quán)限技術(shù)下對(duì)權(quán)限的實(shí)時(shí)監(jiān)控及訪問(wèn)控制關(guān)系的動(dòng)態(tài)更新;

5)通過(guò)運(yùn)用鄰接矩陣與十字鏈表對(duì)圖結(jié)構(gòu)進(jìn)行存儲(chǔ),并利用已知的權(quán)限信息減少權(quán)限更新時(shí)的重復(fù)計(jì)算量,使得訪問(wèn)控制關(guān)系圖的讀取、更新的時(shí)間復(fù)雜度分別降至o(1)與o(m),運(yùn)行效率大幅提高。

附圖說(shuō)明

圖1是本發(fā)明所述方法的流程示意圖;

圖2是本發(fā)明中擴(kuò)展pms服務(wù)的主要工作流程示意圖;

圖3是本發(fā)明中訪問(wèn)控制決策管理器的主要工作流程示意圖。

具體實(shí)施方式

以下將結(jié)合附圖和實(shí)例對(duì)本發(fā)明做進(jìn)一步的說(shuō)明。

如圖1所示,一種支持android運(yùn)行時(shí)權(quán)限機(jī)制的第三方應(yīng)用間通信訪問(wèn)控制方法,首先,在android系統(tǒng)中間件層擴(kuò)展packagemanagerservices(pms)服務(wù)并擴(kuò)展activitymanager中的應(yīng)用間組件間通信(icc)監(jiān)控器,其次,構(gòu)建應(yīng)用危險(xiǎn)權(quán)限編碼映射表、訪問(wèn)控制決策管理器及由其動(dòng)態(tài)維護(hù)的訪問(wèn)控制信息庫(kù),此后,訪問(wèn)控制決策管理器將實(shí)時(shí)查詢?cè)L問(wèn)控制信息庫(kù)中已保存的計(jì)算結(jié)果或進(jìn)一步比較通信雙方運(yùn)行時(shí)權(quán)限的方式,拒絕不具有客體應(yīng)用危險(xiǎn)權(quán)限的第三方應(yīng)用所發(fā)起的通信請(qǐng)求,實(shí)現(xiàn)對(duì)android第三方應(yīng)用間通信的訪問(wèn)控制。

所述擴(kuò)展pms服務(wù)是指在若干個(gè)系統(tǒng)用于處理應(yīng)用安裝、刪除及權(quán)限變化的函數(shù)中分別增加將應(yīng)用程序最新的危險(xiǎn)權(quán)限信息與應(yīng)用uid打包發(fā)送至控制決策管理器的過(guò)程語(yǔ)句,在本例中修改的系統(tǒng)函數(shù)為installnewpackageli()、removepackagelpw()、grantruntimepermission()、revokeruntimepermission()。所述擴(kuò)展icc監(jiān)控器是指對(duì)checkcomponentpermission()方法增加將通信雙方的應(yīng)用uid打包發(fā)送至控制決策管理器、并依據(jù)控制決策管理器的決策結(jié)果,返回是否允許本次通信的過(guò)程語(yǔ)句。

如圖2所示,所述訪問(wèn)控制信息庫(kù)中包括訪問(wèn)控制關(guān)系圖、應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字集。其中,所述訪問(wèn)控制關(guān)系圖用于記錄應(yīng)用間的合法通信關(guān)系的有向圖,由二維數(shù)組與十字鏈表構(gòu)成,所述鄰接矩陣用于記錄應(yīng)用間訪問(wèn)控制關(guān)系的合法性計(jì)算結(jié)果,十字鏈表用于標(biāo)記應(yīng)用與應(yīng)用間的訪問(wèn)關(guān)系是否被計(jì)算過(guò)。所述應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字集為short數(shù)組,其中第i個(gè)數(shù)是uid為10000+i的應(yīng)用的危險(xiǎn)權(quán)限狀態(tài)字,反映了應(yīng)用所擁有的危險(xiǎn)權(quán)限。

為了節(jié)約存儲(chǔ)資源,在本例具體實(shí)現(xiàn)時(shí)限定二維數(shù)組的大小為1000乘1000,即僅對(duì)uid在10000以上、11000以內(nèi)的應(yīng)用的訪問(wèn)關(guān)系的計(jì)算結(jié)果進(jìn)行存儲(chǔ),而對(duì)超過(guò)此范圍的應(yīng)用的訪問(wèn)關(guān)系每次進(jìn)行重新計(jì)算;而應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字集為short數(shù)組,其中第i個(gè)數(shù)是uid為10000+i的應(yīng)用的危險(xiǎn)權(quán)限狀態(tài)字,反映了應(yīng)用所擁有的危險(xiǎn)權(quán)限。在本例中,我們以其每一個(gè)二進(jìn)制位對(duì)應(yīng)一個(gè)dangerous權(quán)限組的擁有情況,其值為1表示其擁有對(duì)應(yīng)的權(quán)限組權(quán)限,為0表示其不具有對(duì)應(yīng)的權(quán)限組權(quán)限或該位不存在對(duì)應(yīng)的危險(xiǎn)權(quán)限組。

在本例中訪問(wèn)控制信息庫(kù)按照以下要求實(shí)現(xiàn):

1.1)為了持久化存儲(chǔ)信息庫(kù),信息庫(kù)繼承java提供的serializable接口,將其數(shù)據(jù)通過(guò)java輸入輸出流中的fileoutputstream方法以序列化的形式持久存儲(chǔ)于文件中。

1.2)以應(yīng)用的uid-android.os.process.first_application_uid作為應(yīng)用在訪問(wèn)控制關(guān)系圖中的節(jié)點(diǎn)編號(hào),用于之后的查詢與修改操作。

1.3)訪問(wèn)控制關(guān)系圖中鄰接矩陣主要用于提供對(duì)第三方應(yīng)用的訪問(wèn)控制關(guān)系的查詢。其中中的每一項(xiàng)的取值為合法、不合法或尚未計(jì)算過(guò)。為方便表述,我們?cè)谙挛闹幸?、1和-1分別表示對(duì)應(yīng)uid為10000+x和10000+y的id之間的訪問(wèn)不合法、訪問(wèn)合法或訪問(wèn)合法性未知。

1.4)訪問(wèn)控制關(guān)系圖中的十字鏈表結(jié)構(gòu)用于提高查找、修改鄰接矩陣中項(xiàng)目的執(zhí)行效率。結(jié)構(gòu)中存儲(chǔ)的形如(x,y)的節(jié)點(diǎn)表示uid為10000+y的應(yīng)用對(duì)uid為10000+y的應(yīng)用的訪問(wèn)合法性已經(jīng)計(jì)算過(guò)并記錄于步驟2)中所述的鄰接矩陣結(jié)構(gòu)中。

所述危險(xiǎn)權(quán)限編碼映射表是指對(duì)具有危險(xiǎn)權(quán)限的應(yīng)用進(jìn)行映射編碼。在本例中,使用hash表結(jié)構(gòu)實(shí)現(xiàn)編碼映射。

如圖3所示,所述訪問(wèn)控制決策管理器包括應(yīng)用權(quán)限信息管理模塊與icc通信處理模塊,其中應(yīng)用權(quán)限信息管理模塊通過(guò)接收來(lái)自擴(kuò)展的pms服務(wù)的消息,對(duì)訪問(wèn)控制信息庫(kù)進(jìn)行實(shí)時(shí)維護(hù);icc通信處理模塊同時(shí)通過(guò)擴(kuò)展的icc通信監(jiān)控器實(shí)時(shí)監(jiān)控android系統(tǒng)中發(fā)起的icc通信。

應(yīng)用權(quán)限信息管理模塊通過(guò)以下步驟維護(hù)訪問(wèn)控制信息庫(kù):

2.1)在系統(tǒng)開(kāi)機(jī)時(shí)對(duì)訪問(wèn)控制數(shù)據(jù)數(shù)據(jù)庫(kù)進(jìn)行檢查,若訪問(wèn)控制信息庫(kù)尚未初始化,則調(diào)用擴(kuò)展的pms服務(wù)對(duì)存放應(yīng)用相關(guān)信息的mpackage進(jìn)行掃描,通過(guò)查詢危險(xiǎn)權(quán)限編碼映射表將已安裝應(yīng)用的危險(xiǎn)權(quán)限狀態(tài)字寫入訪問(wèn)控制信息庫(kù)中的應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字集中,將十字鏈表結(jié)構(gòu)清空,并將鄰接矩陣全部置-1。

2.2)當(dāng)接收到擴(kuò)展的pms服務(wù)傳來(lái)的應(yīng)用安裝的消息時(shí),對(duì)訪問(wèn)控制信息庫(kù)中的鄰接矩陣中的對(duì)應(yīng)行列進(jìn)行寫入-1的操作,該過(guò)程中若發(fā)生越界操作無(wú)需額外處理。并從mpackage中讀取該應(yīng)用所擁有的危險(xiǎn)權(quán)限列表,針對(duì)其擁有的每一危險(xiǎn)權(quán)限(組),通過(guò)查找危險(xiǎn)權(quán)限編碼映射表得到該權(quán)限組所對(duì)應(yīng)的編號(hào),將該應(yīng)用的危險(xiǎn)權(quán)限狀態(tài)字的對(duì)應(yīng)位修改為1。

2.3)當(dāng)接收到擴(kuò)展的pms服務(wù)傳來(lái)的應(yīng)用卸載的消息時(shí),查找訪問(wèn)控制信息庫(kù)中的十字鏈表里的對(duì)應(yīng)行鏈表與列鏈表中的所有節(jié)點(diǎn),對(duì)鄰接矩陣中與十字鏈表中節(jié)點(diǎn)對(duì)應(yīng)的項(xiàng)進(jìn)行置-1操作,并刪除十字鏈表中的這些節(jié)點(diǎn),該過(guò)程中若發(fā)生越界操作無(wú)需額外處理。此后對(duì)該應(yīng)用的危險(xiǎn)權(quán)限狀態(tài)字進(jìn)行清零處理。

2.4)當(dāng)接收到擴(kuò)展的pms服務(wù)傳來(lái)的應(yīng)用權(quán)限增加的消息時(shí),通過(guò)十字鏈表結(jié)構(gòu)查找所有已記錄的與該應(yīng)用間發(fā)生過(guò)icc通信請(qǐng)求的應(yīng)用,查找鄰接矩陣中的對(duì)應(yīng)位置的儲(chǔ)存數(shù)據(jù),對(duì)于所有取值為0的(即當(dāng)前認(rèn)定為不合法的)、由該應(yīng)用發(fā)起的訪問(wèn)所對(duì)應(yīng)的訪問(wèn)控制關(guān)系,及所有取值為1的(即當(dāng)前認(rèn)定為合法的)、以該應(yīng)用為訪問(wèn)客體的對(duì)應(yīng)訪問(wèn)控制關(guān)系,通過(guò)危險(xiǎn)權(quán)限比較方法與危險(xiǎn)權(quán)限狀態(tài)字集對(duì)其進(jìn)行重新計(jì)算并更新鄰接矩陣,并將應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字的對(duì)應(yīng)編號(hào)位置相應(yīng)修改為1或0。

2.5)當(dāng)接收到擴(kuò)展的pms服務(wù)傳來(lái)的應(yīng)用權(quán)限撤銷的消息時(shí),通過(guò)十字鏈表結(jié)構(gòu)查找所有已記錄的與該應(yīng)用間發(fā)生過(guò)icc通信請(qǐng)求的應(yīng)用,查找鄰接矩陣中的對(duì)應(yīng)位置的儲(chǔ)存數(shù)據(jù),對(duì)于所有取值為1的(即當(dāng)前認(rèn)定為合法的)由該應(yīng)用發(fā)起的訪問(wèn)所對(duì)應(yīng)的訪問(wèn)控制關(guān)系,及所有取值為0的(即當(dāng)前認(rèn)定為不合法的)以該應(yīng)用為訪問(wèn)客體的對(duì)應(yīng)訪問(wèn)控制關(guān)系,通過(guò)危險(xiǎn)權(quán)限比較方法與危險(xiǎn)權(quán)限狀態(tài)字集對(duì)其進(jìn)行重新計(jì)算并更新鄰接矩陣,并將應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字的對(duì)應(yīng)編號(hào)位置相應(yīng)修改為1或0。

icc通信處理模塊對(duì)通信請(qǐng)求進(jìn)行監(jiān)控并實(shí)施訪問(wèn)控制決策的過(guò)程如下:

3.1)當(dāng)接收到來(lái)自擴(kuò)展的icc通信管理機(jī)制的消息時(shí),調(diào)用擴(kuò)展的pms服務(wù),對(duì)存放應(yīng)用相關(guān)信息的mpackage進(jìn)行掃描,實(shí)時(shí)獲取雙方應(yīng)用的的flag及uid,若根據(jù)flag和uid判斷當(dāng)前應(yīng)用中存在非第三方應(yīng)用,則不對(duì)此次通信實(shí)施訪問(wèn)限制,否則,進(jìn)入步驟3.2)。

3.2)查詢?cè)L問(wèn)控制信息庫(kù),對(duì)其中訪問(wèn)控制關(guān)系矩陣內(nèi)對(duì)應(yīng)的兩應(yīng)用間的訪問(wèn)控制關(guān)系進(jìn)行查找。若其值為1,則認(rèn)為訪問(wèn)合法,不對(duì)本次訪問(wèn)進(jìn)行限制,若值為0,則認(rèn)為本次訪問(wèn)不合法,通知icc通信監(jiān)控器拒絕本次訪問(wèn),若值為-1或發(fā)生arrayindexoutofboundexception異常,則轉(zhuǎn)入步驟4)

3.3)利用危險(xiǎn)權(quán)限比較方法判斷訪問(wèn)主體應(yīng)用所擁有的危險(xiǎn)權(quán)限集合是否完全包含訪問(wèn)客體的危險(xiǎn)權(quán)限集合,若結(jié)果為true則允許本次訪問(wèn),若結(jié)果為false則拒絕本次訪問(wèn),并根據(jù)計(jì)算結(jié)果更新訪問(wèn)控制關(guān)系圖

所述的危險(xiǎn)權(quán)限比較方法按以下步驟進(jìn)行:

4.1)對(duì)icc通信發(fā)起者應(yīng)用a的危險(xiǎn)權(quán)限狀態(tài)字與icc通信接受者應(yīng)用b的危險(xiǎn)權(quán)限狀態(tài)字進(jìn)行位或運(yùn)算,將所得的結(jié)果與a的危險(xiǎn)權(quán)限狀態(tài)字進(jìn)行比較。

4.2)若步驟1)所得的結(jié)果為兩者相等,則意味著a擁有b所擁有的全部危險(xiǎn)權(quán)限,則認(rèn)為通信合法,返回true;否則返回false。

為了提高訪問(wèn)控制決策的效率,對(duì)所述危險(xiǎn)權(quán)限以group的形式進(jìn)行操作。在android系統(tǒng)中被劃分屬于同組的危險(xiǎn)權(quán)限在本方法中被視為同一權(quán)限進(jìn)行操作。

所述擴(kuò)展的icc通信監(jiān)控器實(shí)現(xiàn)了對(duì)android系統(tǒng)中發(fā)起的icc通信的實(shí)時(shí)監(jiān)控,擴(kuò)展后的機(jī)制將把本次通信雙方的uid信息打包發(fā)送至訪問(wèn)控制決策管理器并請(qǐng)求訪問(wèn)控制決策管理器對(duì)第三方應(yīng)用間的icc通信進(jìn)行決策,從而根據(jù)訪問(wèn)控制決策管理器的決策阻止通信發(fā)起方所擁有的危險(xiǎn)權(quán)限(組)少于通信對(duì)象擁有的危險(xiǎn)權(quán)限(組)的icc通信,具體按以下要求實(shí)現(xiàn):

5.1)當(dāng)應(yīng)用發(fā)起icc訪問(wèn)請(qǐng)求時(shí),系統(tǒng)將調(diào)用checkcomponentpermission()方法對(duì)訪問(wèn)合法性進(jìn)行驗(yàn)證;

5.2)被修改的checkcomponentpermission()方法將在通常的合法性判斷規(guī)則之后,將將要通信的雙方應(yīng)用的uid信息打包發(fā)送至訪問(wèn)控制決策管理器,請(qǐng)求訪問(wèn)控制決策管理器進(jìn)行進(jìn)一步的訪問(wèn)關(guān)系合法性計(jì)算;

5.3)根據(jù)根據(jù)訪問(wèn)控制決策管理器返回的決策結(jié)果,若允許本次通信則在checkcomponentpermission()中返回允許通信(即android系統(tǒng)中的permission_granted常數(shù)),否則返回拒絕通信(即permission_denied常數(shù))。

5.4)若checkcomponentpermission()返回訪問(wèn)合法,則系統(tǒng)將允許本次icc通信,否則拒絕本次通信。

當(dāng)android系統(tǒng)中的應(yīng)用進(jìn)行以下操作時(shí),訪問(wèn)控制決策管理器進(jìn)行如下控制:

當(dāng)應(yīng)用安裝時(shí):

首先,對(duì)鄰接矩陣中的應(yīng)用對(duì)應(yīng)所在的行列進(jìn)行初始化,將行列上的所有項(xiàng)重新置為未計(jì)算的狀態(tài);接著,掃描該應(yīng)用所擁有的所有權(quán)限,更新應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字;

當(dāng)應(yīng)用卸載時(shí):

首先,查找訪問(wèn)控制信息庫(kù)中的十字鏈表里該應(yīng)用的對(duì)應(yīng)行鏈表與列鏈表中的所有節(jié)點(diǎn),對(duì)鄰接矩陣中與十字鏈表中節(jié)點(diǎn)對(duì)應(yīng)的項(xiàng)進(jìn)行初始化,并刪除十字鏈表中的與該應(yīng)用有關(guān)的節(jié)點(diǎn);接著,對(duì)該應(yīng)用的危險(xiǎn)權(quán)限狀態(tài)字進(jìn)行清零處理;

當(dāng)應(yīng)用權(quán)限增加時(shí):

首先,在十字鏈表結(jié)構(gòu)查找所有已記錄的與該應(yīng)用發(fā)生過(guò)icc通信請(qǐng)求的應(yīng)用;

接著,根據(jù)在十字鏈表中查詢到的所有結(jié)果,查找鄰接矩陣中的對(duì)應(yīng)位置的儲(chǔ)存數(shù)據(jù);

最后,對(duì)于查找到的存儲(chǔ)數(shù)據(jù)中所有先前由該應(yīng)用發(fā)起的不合法的訪問(wèn)所對(duì)應(yīng)的訪問(wèn)控制關(guān)系,及所有先前以該應(yīng)用為訪問(wèn)客體的合法的對(duì)應(yīng)訪問(wèn)控制關(guān)系,采用危險(xiǎn)權(quán)限比較方法,對(duì)查找到的訪問(wèn)控制關(guān)系的合法性進(jìn)行重新計(jì)算并更新鄰接矩陣,同時(shí)更新應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字;

當(dāng)應(yīng)用權(quán)限撤銷時(shí):

首先,在十字鏈表結(jié)構(gòu)查找所有已記錄的與該應(yīng)用發(fā)生過(guò)icc通信請(qǐng)求的應(yīng)用;

接著,根據(jù)在十字鏈表中查詢到的所有結(jié)果,查找鄰接矩陣中的對(duì)應(yīng)位置的儲(chǔ)存數(shù)據(jù);

最后,對(duì)于所有查找到的先前合法的、由該應(yīng)用發(fā)起的訪問(wèn)所對(duì)應(yīng)的訪問(wèn)控制關(guān)系,及所有先前不合法的、以該應(yīng)用為訪問(wèn)客體的對(duì)應(yīng)訪問(wèn)控制關(guān)系,通過(guò)危險(xiǎn)權(quán)限比較方法對(duì)查找到的訪問(wèn)控制關(guān)系的合法性進(jìn)行重新計(jì)算并更新鄰接矩陣,同時(shí)更新應(yīng)用危險(xiǎn)權(quán)限狀態(tài)字。

以上內(nèi)容是本發(fā)明具體實(shí)施方式的進(jìn)一步詳細(xì)說(shuō)明,不能認(rèn)定本發(fā)明的具體實(shí)施方式僅限于此,對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單的推演或替換,都應(yīng)當(dāng)視為本發(fā)明由所提交的權(quán)利要求書確定的專利保護(hù)范圍。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
西盟| 吐鲁番市| 开原市| 灵山县| 宁津县| 麦盖提县| 姚安县| 宁都县| 固阳县| 四会市| 桐城市| 灵山县| 惠东县| 舒城县| 荣成市| 定襄县| 天气| 海晏县| 萨迦县| 镇宁| 新津县| 山东省| 三亚市| 周宁县| 普兰县| 富源县| 大石桥市| 长丰县| 鲁甸县| 酉阳| 达拉特旗| 文昌市| 遵义市| 宜章县| 芒康县| 米泉市| 扶沟县| 尖扎县| 巧家县| 工布江达县| 永顺县|