基于權限標簽的Android隱私數(shù)據(jù)保護方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于權限標簽的Android隱私數(shù)據(jù)保護方法及系統(tǒng)。本方法為:1)設置應用訪問文件的訪問策略規(guī)則,并將其加載至移動終端操作系統(tǒng)的內(nèi)核模塊中;2)該移動終端操作系統(tǒng)上安裝每一應用時,應用框架層的包管理服務模塊調(diào)用內(nèi)核層接口為該應用的應用進程及其文件打上權限標簽;3)當該移動終端中的一應用訪問某一文件時,內(nèi)核模塊根據(jù)所述訪問策略規(guī)則和該應用的應用進程權限標簽、該文件的權限標簽,判定執(zhí)行訪問操作或者拒絕訪問;4)如果允許執(zhí)行該訪問操作,則在該應用成功訪問該文件后,內(nèi)核模塊根據(jù)訪問操作類型更新該文件權限標簽。本發(fā)明有效避免了隱私數(shù)據(jù)在內(nèi)核層遭受泄露,進一步提高了對內(nèi)核層的訪問實施控制。
【專利說明】基于權限標簽的Android隱私數(shù)據(jù)保護方法及系統(tǒng)
【技術領域】
[0001] 本發(fā)明屬于移動終端安全領域,主要涉及Android平臺的隱私數(shù)據(jù)保護,更確切 地是涉及一種基于權限標簽來保護Android隱私數(shù)據(jù)的方法,以及一種基于權限標簽的 Android隱私數(shù)據(jù)保護系統(tǒng)。
【背景技術】
[0002] Android作為移動終端的主流操作系統(tǒng)之一占據(jù)著市場的巨大份額,并且還在逐 年增長。據(jù)美國市場研究公司Gartner發(fā)布的最新報告顯示,2014年基于Android操作系 統(tǒng)的平板、手機等設備的出貨量將近12億,較2013年增長26%。面對如此龐大的Android 用戶群,其安全形勢也愈發(fā)嚴峻。根據(jù)百度安全實驗室發(fā)布的《2014年第二季度移動安全 報告》,截至2014年第二季度末,Android平臺上的惡意軟件和高危軟件累計已達182萬款, 其中惡意軟件有64萬款,是去年同期數(shù)量的三倍。在這些惡意軟件中,雖然惡意扣費類軟 件仍然占據(jù)很大比重,但隱私竊取類惡意軟件已經(jīng)呈現(xiàn)出迅猛上漲的趨勢,其上漲幅度達 到了 57%。竊取的隱私信息除了用戶地理位置、通訊錄、短信、相冊照片、錄音視頻等之外, 還包括很多與用戶金錢利益相關的信息,如移動支付涉及的用戶賬號信息、支付密碼等,嚴 重威脅了用戶隱私安全,同時也束縛了移動支付等應用的發(fā)展。
[0003] Android系統(tǒng)自身提供了一套權限機制來控制對系統(tǒng)保護資源如網(wǎng)絡、GPS、短消 息、聯(lián)系人等的訪問,所有應用在安裝前都必須向用戶顯示請求其需要的權限,且只有在 獲得用戶授權后方可訪問相應資源。很顯然,從Android平臺日益呈現(xiàn)的安全威脅來看, Android權限機制并沒有達到其預想的目標。究其原因,除了應用開發(fā)者請求過多權限、用 戶不理解權限含義等外在原因外,一個主要的實質(zhì)原因就是該權限機制可以被旁路,其典 型代表就是權限提升攻擊,即惡意軟件在沒有用戶授權的情況下同樣可以獲取系統(tǒng)敏感資 源。權限提升攻擊在具體實施過程中,既可以是惡意軟件通過調(diào)用具有權限的正常應用軟 件或系統(tǒng)服務的公開接口來實現(xiàn),也可以是兩個惡意軟件通過合謀通信合并兩者權限的方 式來實現(xiàn),其結果都將威脅終端系統(tǒng)和用戶隱私安全。
[0004] Android權限機制的實施控制是在Android的應用框架層完成的,為此,目前針對 權限提升攻擊的方案都是在應用框架層實現(xiàn)的,主要表現(xiàn)在通過在權限判定策略中引入如 時間、位置等動態(tài)因素來約束應用組件對資源的訪問,或者綜合通信組件的權限進行權限 規(guī)約以控制組件權限的擴大等。然而,組件之間的通信手段除了在應用框架層相互調(diào)用組 件接口之外,內(nèi)核層的傳統(tǒng)Iinux進程通信機制同樣適用。其結果就是,即使在應用框架層 阻止了未授權應用通過調(diào)用授權應用的接口來訪問系統(tǒng)資源,未授權應用也可能通過文件 系統(tǒng)等與授權應用通信從而獲取不應訪問的資源。究其根本,主要還在于Android權限機 制的控制局限在應用框架層,應用組件在內(nèi)核層可以直接旁路上層的權限判定,從而達到 提升權限獲取資源隱私數(shù)據(jù)的目的。因此,為有效避免隱私數(shù)據(jù)在內(nèi)核層遭受泄露,需要將 應用框架層的權限延伸至內(nèi)核層,進一步基于權限對內(nèi)核層的訪問實施控制。
【發(fā)明內(nèi)容】
[0005] 針對上述問題,本發(fā)明的目的在于提供一種基于權限標簽的隱私數(shù)據(jù)保護方法。 該方法將Android權限機制延伸至內(nèi)核層,并結合內(nèi)核層強制訪問控制機制,將應用作為 主體,文件系統(tǒng)作為客體,分別為主客體打上權限標簽,并基于權限標簽設置訪問策略,以 控制主體對客體的訪問,從而防止未授權應用通過文件系統(tǒng)獲取隱私數(shù)據(jù)。
[0006] 本發(fā)明的另一個目的在于提供一種基于權限標簽的隱私數(shù)據(jù)保護系統(tǒng)。該系統(tǒng)主 要是提供內(nèi)核層的隱私數(shù)據(jù)訪問保護,根據(jù)應用權限自動為應用和文件打上相應的權限標 簽,保證隱私數(shù)據(jù)不會經(jīng)由文件系統(tǒng)流轉至未授權應用。
[0007] 本發(fā)明的技術方案基于權限標簽的隱私數(shù)據(jù)保護方法,其步驟為:
[0008] 1)設置應用訪問文件的訪問策略規(guī)則,形成訪問策略文件,重啟系統(tǒng)將訪問策略 加載至Android內(nèi)核模塊;
[0009] 2)安裝Android應用時,應用框架層的包管理服務模塊調(diào)用內(nèi)核層接口自動為其 應用進程和文件打上權限標簽;
[0010] 3)應用訪問文件時,Android內(nèi)核模塊根據(jù)應用進程和文件的權限標簽匹配訪問 策略,并基于策略判定結果執(zhí)行訪問操作或者拒絕訪問;
[0011] 4)在應用成功訪問文件后,Android內(nèi)核模塊根據(jù)訪問操作類型更新文件權限標 簽。
[0012] 進一步的,本發(fā)明方法中提及的標簽是一個集合值,其集合元素為權限,對于應用 進程而言其標簽表明該應用具有的隱私權限,對于文件而言其標簽表明要求訪問該文件的 應用應具有的隱私權限。
[0013] 進一步的,上述步驟中涉及的Android內(nèi)核模塊,是指SELinuxLSM(Linux SecurityModule)模塊。
[0014] 進一步的,訪問策略規(guī)則定義如下:
[0015] s表示應用即訪問主體,其標簽值記為集合Ps;〇表示文件即客體,其標簽值記為 集合P。;a表示訪問操作讀或寫,記為aG{r,w} ;〈s,a, 〇>G{T,F}表示s對〇進行a操作 成功或失敗:
[0016] 規(guī)則1 :若PgP11=L則<s, r, 〇> =T,即若應用s的權限標簽值包含文件〇的權限 標簽值則應用S可以對文件0實施讀操作;
[0017] 規(guī)則2 :〈s,w, 〇> =T,即應用s可以直接對文件〇實施寫操作。
[0018] 進一步的,對于不符合上述所述規(guī)則的訪問請求,默認拒絕。
[0019] 進一步的,所述將策略加載至內(nèi)核模塊的工作是由Android的init進程在初始化 系統(tǒng)時一并實施的。
[0020] 進一步的,包管理服務模塊設置權限標簽值的方法如下:
[0021] 所述應用進程的權限標簽為應用獲得用戶授權權限集合的子集,即從中提取的應 用隱私權限集合;
[0022] 所述文件的權限標簽值為空。
[0023] 進一步的,所述應用獲得用戶授權的權限記錄在應用自帶的配置文件中,包管理 服務模塊直接讀取該文件即可獲取。
[0024] 可選的,所述應用隱私權限提取方法如下:
[0025]Pl表示應用獲得用戶授權的權限集合,P2表示用戶自定義的隱私權限集合,則從 Pl中提取的應用隱私權限為PlnP2。
[0026] 進一步的,P2取決于用戶的隱私需求,由用戶自主定義,如包含訪問通訊錄、短信、 位置等隱私數(shù)據(jù)的權限。
[0027] 進一步的,所述包管理服務模塊設置文件的權限標簽僅針對應用自身所包含的數(shù) 據(jù)文件,對于應用進程在通信時創(chuàng)建的新文件,由內(nèi)核模塊在文件創(chuàng)建成功后設置其權限 標簽為空。初始時設置為空,是保證初始文件能被其他應用訪問。一旦有應用對文件進行 了寫操作,則文件標簽會修改,記為應用標簽與文件當前標簽的合集。
[0028] 進一步的,應用進程的權限標簽如上述方法設置后不再變化,而文件的權限標簽 如上述方法設置的僅為一初始值,在應用成功訪問該文件后其權限標簽值也會發(fā)生變化, 其更新操作由內(nèi)核模塊完成。
[0029] 進一步的,文件的權限標簽更新規(guī)則如下:
[0030] 集合P。表示文件〇被應用s訪問前的標簽值,集合P。'表示文件〇被應用s訪問 后的標簽值:
[0031]若 <s,a, 〇> = =T&&a= =w,則P。' =P。UPs,否則P。' =P。,即若應用s對文件 〇成功實施了寫操作,則文件〇的權限標簽值更新為原有值與應用s權限標簽值的合集;否 則文件〇的權限標簽值維持不變。
[0032] 本發(fā)明還提出了基于權限標簽的Android隱私數(shù)據(jù)保護系統(tǒng),包括:
[0033] 標簽設置模塊,用于在應用安裝時設置應用進程及其文件的權限標簽,在新文件 創(chuàng)建時設置文件標簽,并在應用訪問文件后更新文件標簽;
[0034] 策略制定模塊,用于制定應用訪問文件的策略規(guī)則,其規(guī)則主要基于應用進程和 文件的權限標簽設定;
[0035] 策略判定模塊,在應用請求訪問文件時,根據(jù)應用進程和文件的權限標簽以及具 體的訪問操作請求,匹配相應的策略規(guī)則,給出是否允許訪問的判定結果;
[0036] 策略實施模塊,根據(jù)策略判定模塊的判定結果進行實施,若允許訪問則應用直接 可對文件進行相應操作,否則拒絕應用訪問。
[0037] 進一步的,基于權限標簽的Android隱私數(shù)據(jù)保護系統(tǒng)還有以下特性:
[0038] 所述標簽設置模塊包含兩個部分,一部分位于Android應用框架層的包管理服務 模塊,負責應用安裝時的應用進程及其自帶文件的標簽設置工作;另一部分位于Android 內(nèi)核層的內(nèi)核模塊,負責新文件創(chuàng)建時以及應用訪問文件后的標簽設置工作。
[0039] 所述策略制定模塊位于Android應用層,其生成的策略由Androidinit進程加載 至內(nèi)核;
[0040] 所述策略判定模塊和策略實施模塊位于Android內(nèi)核層的內(nèi)核模塊,在應用請求 訪問文件時觸發(fā)。
[0041] 進一步的,所述標簽設置模塊中的包管理服務模塊是基于SElinux提供的內(nèi)核文 件系統(tǒng)訪問接口來設置應用進程及其自帶文件的標簽。
[0042] 進一步的,所述標簽設置模塊、策略判定模塊和策略實施模塊中的內(nèi)核模塊是在 SElinux提供的鉤子函數(shù)中實現(xiàn)的,在創(chuàng)建文件和寫文件的鉤子函數(shù)中設置文件標簽,在讀 文件和寫文件的鉤子函數(shù)中進行策略判定并控制實施文件訪問操作。
[0043] 本發(fā)明的有益效果:
[0044] 本發(fā)明針對Android系統(tǒng)的隱私安全問題提出了基于權限標簽的隱私數(shù)據(jù)保護 方法,并以此構建了隱私數(shù)據(jù)保護系統(tǒng),可以有效防止內(nèi)核層權限提升攻擊的發(fā)生,保證未 授權應用無法通過文件系統(tǒng)與授權應用通信從而獲取隱私數(shù)據(jù)。本發(fā)明將Android應用框 架層的權限機制延伸至內(nèi)核層,為應用進程與通信文件設置相應的權限標簽,并依托這些 標簽制定策略訪問規(guī)則,在應用訪問文件時基于其策略實施強制訪問控制。本發(fā)明設置應 用進程標簽與文件標簽的方法不同,應用進程標簽主要取決于從應用獲得用戶授權權限中 提取的隱私權限,而文件標簽主要是基于成功訪問過該文件的應用權限標簽以及具體的訪 問操作,以此防止具有隱私權限的應用通過文件通信的方式將隱私數(shù)據(jù)傳給不具有相應權 限的應用,保證系統(tǒng)隱私數(shù)據(jù)的安全。
【專利附圖】
【附圖說明】
[0045] 圖1為本發(fā)明實施例隱私數(shù)據(jù)保護系統(tǒng)模塊結構示意圖。
[0046] 圖2為本發(fā)明實施例隱私數(shù)據(jù)保護方法流程示意圖。
【具體實施方式】
[0047] 下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完 整地描述,可以理解的是,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施 例。基于本發(fā)明中的實施例,本領域技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有 其他實施例,都屬于本發(fā)明保護的范圍。
[0048] 如圖2所示,是本發(fā)明實施例中隱私數(shù)據(jù)保護方法流程示意圖。應用安裝時會自 動為應用進程及其自帶的文件打上相應的標簽,對于新創(chuàng)建的文件則在創(chuàng)建時打上標簽。 應用請求訪問文件時,根據(jù)訪問操作類型的不同執(zhí)行不同,若應用是請求讀文件,則先根據(jù) 應用進程與文件的標簽來匹配相應的策略規(guī)則,若滿足策略規(guī)則則可以成功實施讀操作, 否則拒絕讀訪問;若應用是請求寫文件,則可以直接完成寫操作,并在寫操作完成之后根據(jù) 應用進程標簽更新文件標簽。
[0049]在上述流程執(zhí)行過程中,主要涉及幾個模塊,如圖1所示。權限設置模塊負責為應 用進程及其自帶文件設置權限標簽,策略制定模塊負責制定基于權限標簽的策略規(guī)則,策 略判定模塊和策略實施模塊負責根據(jù)策略規(guī)則控制應用對文件的訪問,以此保證未授權應 用不會經(jīng)由文件系統(tǒng)獲取隱私數(shù)據(jù)。
[0050]在本實施例中,權限設置模塊的功能由Android應用包管理服務PackageManagerService和SElinux鉤子函數(shù)共同完成。PackageManagerService負責管 理系統(tǒng)的所有apk應用,在應用安裝時可以從其AndroidManifest.xml配置文件中讀取應 用獲取的用戶授權權限,根據(jù)用戶自定義的隱私權限,從中提取應用隱私權限,以此作為該 應用成功安裝之后其應用進程的權限標簽,對于該應用自帶的文件則直接將其標簽標記為 空。SElinux鉤子函數(shù)可以截獲應用對文件的任何操作,若識別文件操作是新建文件,則在 文件創(chuàng)建成功之后,直接將新文件的標簽也標記為空;若識別文件操作是寫操作,則在應用 成功實施對文件的寫操作之后,將實施寫操作的應用進程標簽與文件的當前標簽合并一并 作為文件的新標簽;若識別文件操作是讀操作,則文件標簽維持原有的不變。
[0051] 策略制定模塊的功能由一個單獨的apk應用來實現(xiàn)完成,主要是設定應用訪問文 件的策略規(guī)則,并生成相應的策略文件。其中,允許應用對文件進行讀操作的前提是必須滿 足文件標簽是應用進程標簽的子集,即應用進程標簽包含文件標簽,以保證只有具有相應 權限的應用才能獲取文件的內(nèi)容。而對于應用對文件的寫操作,則對應用進程和文件的標 簽無任何要求,應用可以直接實施對文件的寫操作。在策略文件生成之后,需要重新啟動 Android系統(tǒng),由系統(tǒng)初始化進程init將策略加載至內(nèi)核。
[0052] 策略判定模塊和策略實施模塊的功能都是由SElinux鉤子函數(shù)來完成的。鉤子函 數(shù)截獲文件操作是讀操作時,先分別讀取應用進程和文件的權限標簽,然后根據(jù)該標簽去 匹配策略規(guī)則,如果規(guī)則是允許該標簽的應用訪問相應的文件,則允許執(zhí)行讀操作,應用可 以順利完成對文件的讀操作,否則將直接拒絕文件訪問;鉤子函數(shù)截獲文件操作是寫操作 時,應用可以直接順利的完成對文件的寫操作。
[0053] 以上通過簡單的說明描述了本發(fā)明提供的基于權限標簽的Android隱私數(shù)據(jù)保 護方案,本領域的技術人員應該理解,在不超出本發(fā)明實質(zhì)和范圍的情況下,可以進行修 改。
【權利要求】
1. 一種基于權限標簽的Android隱私數(shù)據(jù)保護方法,其步驟為: 1) 設置應用訪問文件的訪問策略規(guī)則,并將其加載至移動終端操作系統(tǒng)Android的內(nèi) 核模塊中; 2) 該移動終端操作系統(tǒng)上安裝每一 Android應用時,應用框架層的包管理服務模塊調(diào) 用內(nèi)核層接口為該Android應用的應用進程及其文件打上權限標簽;其中,應用進程的標 簽為該應用具有的隱私權限集合,文件的標簽為要求訪問該文件的應用應具有的隱私權限 集合; 3) 當該移動終端中的一應用訪問某一文件時,Android內(nèi)核模塊根據(jù)所述訪問策略規(guī) 則和該應用的應用進程權限標簽、該文件的權限標簽,判定執(zhí)行訪問操作或者拒絕訪問; 4) 如果允許執(zhí)行該訪問操作,貝U在該Android應用成功訪問該文件后,Android內(nèi)核模 塊根據(jù)訪問操作類型更新該文件權限標簽; 其中,所述訪問策略規(guī)則包括: 規(guī)則1 :若Android應用s的權限標簽值包含文件〇的權限標簽值則Android應用s可 以對文件〇實施讀操作; 規(guī)則2 :Android應用s可以直接對文件〇實施寫操作。
2. 如權利要求1所述的方法,其特征在于所述包管理服務模塊調(diào)用內(nèi)核層接口為 該Android應用的應用進程及其文件打上權限標簽的方法為:所述包管理服務模塊提取 Android應用安裝時獲得的用戶授權的權限集合P1,然后取Pl與用戶自定義的隱私權限集 合P2的交集作為該Android應用進程的權限標簽值,文件的權限標簽初始值為空。
3. 如權利要求2所述的方法,其特征在于所述Android應用獲得的用戶授權的權限記 錄在其配置文件中,所述包管理服務模塊讀取該配置文件獲取對應的權限。
4. 如權利要求1或2所述的方法,其特征在于所述Android內(nèi)核模塊根據(jù)訪問操作類 型更新該文件權限標簽的方法為:若Android應用s對文件〇成功實施了寫操作,則文件〇 的權限標簽值更新為原有值與Android應用s權限標簽值的合集;否則文件〇的權限標簽 值維持不變。
5. 如權利要求1所述的方法,其特征在于所述Android內(nèi)核模塊對于應用進程在通信 時創(chuàng)建的新文件,設置其權限標簽為空。
6. -種基于權限標簽的Android隱私數(shù)據(jù)保護系統(tǒng),其特征在于包括標簽設置模塊、 策略制定模塊、策略判定模塊和策略實施模塊;其中, 所述標簽設置模塊,包括位于Android應用框架層的包管理服務模塊,負責Android應 用安裝時的應用進程及其自帶文件的標簽設置工作;以及Android內(nèi)核模塊,負責新文件 創(chuàng)建時以及Android應用訪問文件后的標簽設置工作; 所述策略制定模塊,位于Android內(nèi)核層,用于基于應用進程和文件的權限標簽制定 應用訪問文件的訪問策略規(guī)則; 所述策略判定模塊,位于Android內(nèi)核層,用于在Android應用請求訪問文件時,根據(jù) 該Android應用的應用進程和文件的權限標簽以及具體的訪問操作請求,匹配相應的訪問 策略規(guī)則,給出是否允許訪問的判定結果; 所述策略實施模塊,根據(jù)策略判定模塊的判定結果進行實施,若允許訪問則該Android 應用直接可對文件進行相應操作,否則拒絕該Android應用訪問; 其中,所述訪問策略規(guī)則包括: 規(guī)則1 :若Android應用S的權限標簽值包含文件O的權限標簽值則Android應用S可 以對文件〇實施讀操作; 規(guī)則2 :Android應用s可以直接對文件〇實施寫操作。
7. 如權利要求6所述的系統(tǒng),其特征在于所述包管理服務模塊提取Android應用安裝 時獲得的用戶授權的權限集合P1,然后取Pl與用戶自定義的隱私權限集合P2的交集作為 該Android應用進程的權限標簽值,文件的權限標簽初始值為空。
8. 如權利要求6所述的系統(tǒng),其特征在于所述Android內(nèi)核模塊根據(jù)訪問操作類型對 應用進程訪問后的文件權限標簽進行更新:若Android應用s對文件〇成功實施了寫操作, 貝IJ文件〇的權限標簽值更新為原有值與Android應用s權限標簽值的合集;否則文件〇的 權限標簽值維持不變。
9. 如權利要求6或8所述的系統(tǒng),其特征在于所述Android內(nèi)核模塊對于應用進程在 通信時創(chuàng)建的新文件,設置其權限標簽為空。
【文檔編號】G06F21/62GK104318171SQ201410527988
【公開日】2015年1月28日 申請日期:2014年10月9日 優(yōu)先權日:2014年10月9日
【發(fā)明者】汪丹, 于愛民, 周曉湄 申請人:中國科學院信息工程研究所