張賢賢,王浩宇+,郭 耀,徐國愛
1.北京郵電大學 計算機學院 智能通信軟件與多媒體北京市重點實驗室,北京 100876
2.北京大學 信息科學技術學院 軟件所 高可信軟件技術教育部重點實驗室,北京 100871
3.北京郵電大學 網絡空間安全學院,北京 100876
在移動智能終端和多樣的移動應用給用戶帶來便利的同時,移動平臺上各種新的安全和隱私問題也日益凸顯。安卓系統使用權限模型來控制對隱私信息的訪問。然而,移動平臺廣泛存在權限濫用問題,很多應用經常申請不必要的敏感權限,使用戶隱私信息面臨被泄露的風險。很多應用會在用戶不知情的情況下獲取并泄露隱私信息。
近年來很多研究工作關注于應用分析和移動系統的隱私保護[1-6],雖然大部分工作都可以檢測隱私泄露或者進行隱私保護,但它們沒有針對隱私信息使用的原因深入探究,導致用戶的期望與應用行為的差距遲遲未能解決。應用的敏感行為是否惡意以及是否應該被允許都跟其使用權限的意圖有關。例如,大部分用戶會認為地圖應用使用位置信息進行導航是正常行為,但并不愿意位置信息被用于提供定制化廣告服務及第三方分析。因此相關工作[7]僅分析應用的敏感權限來對應用進行隱私評級的工作是不可靠的,功能豐富的應用使用的敏感權限很多,導致隱私評分很低,但這些應用絕大多數都不是惡意的。
很多研究嘗試解決用戶期望與應用行為的差異。WHYPER[8]和AutoCog[9]基于用戶所期望的應用行為,提出基于自然語言處理技術在應用描述與其申請權限之間建立映射關系,并用這種映射關系量化應用功能和行為之間的差異性。CHABADA(checking App behavior against descriptions of Apps)[10]基于描述對應用聚類,并以此分析同類應用中API調用異常的應用,進而尋找潛在的惡意應用。但研究結果表明,超過90%的應用都沒有完整地在描述中說明其使用權限的原因[9]。
Lin等人[11-12]提出使用眾包技術研究用戶對不同的<應用,權限,意圖>組合的接受程度。通過檢測應用中隱私信息的使用位置(第三方庫或應用核心代碼),即可分析隱私信息使用的意圖,即是用于第三方庫(例如廣告推薦、社交網絡、第三方分析等)還是應用核心功能需要。研究結果表明用戶的期望和隱私使用的意圖都會影響用戶對應用隱私行為的接受程度。本文受此工作啟發,在用戶眾包數據的基礎上,建立應用隱私評級模型,能夠自動化對應用的隱私威脅分析和評級。
為實現準確的應用隱私評級模型,本文通過靜態分析研究敏感權限的使用及其使用意圖,基于眾包數據中用戶對不同的<應用,權限,意圖>組合的評分,為應用提取多維度特征構建特征向量,并對數據集進行預處理,使用機器學習技術建立準確的隱私評級預測模型。
本文實現了一個應用隱私評級工具,能夠準確地分析應用中實際使用的敏感權限及其使用意圖并提取應用相關特征為應用構造特征向量,輸入預測模型進行隱私評級。實驗表明,模型預測準確率能夠達到80.7%,通過將該預測模型應用于谷歌商店的11 931個應用,結果表明約8%的應用存在嚴重的隱私風險。
本文主要有以下貢獻:
(1)建立了一個基于權限使用意圖的移動應用隱私風險評級預測模型。該模型可以預測用戶所關心的隱私信息使用的問題,并以評分等級的方式展現,直觀且高效。
(2)實現了移動應用的權限使用意圖的分析。首先獲取應用中使用的所有敏感權限,然后為每一個敏感權限分析其使用意圖,將敏感權限和使用意圖作為預測模型的核心特征。
(3)實現一個自動化的隱私評級工具并將其應用于大量應用中驗證,該工具可準確為每個應用預測隱私風險評級。
本文的研究基于安卓權限模型,安卓權限框架從兩方面保護用戶隱私:(1)限制應用訪問用戶敏感資源;(2)在用戶安裝應用之前幫助用戶做選擇。安卓權限分為系統權限和特殊權限授權,系統權限包括普通類型和敏感類型,其中普通類型并不直接威脅到用戶的隱私,直接在AndroidManifest.xml文件權限申請里注冊,系統會默認授權。而敏感類型的權限可以讓應用訪問用戶敏感數據,不僅需要在AndroidManifest.xml中注冊,同時在使用的時候需要向系統請求授權。安卓在6.0版本以前采用默認的授權模式,即所需權限一次性申請,用戶在安裝應用的時候系統采用默認授權,且一旦授權便不可撤銷。這種授權模式沒有考慮用戶,用戶要么選擇接受所有的權限,要么為了拒絕授權不得已放棄安裝應用。對用戶來說,一方面用戶體驗很差,另一方面不能控制授予應用的權限是否會被合理使用,存在隱私泄露風險。安卓在6.0版本之后授權模式升級,新的授權模式只有需要授權的時候才請求用戶是否授權,并且是在程序運行時授權而非安裝時授權,這種模式賦予用戶自主選擇的權利,例如用戶可以拒絕某些應用訪問記錄設備位置的權限。
授權模式升級之后用戶擁有自主選擇權,但這并不能解決用戶隱私信息泄露的風險,安卓應用安全和隱私的設計依賴于用戶能夠理解所有權限,然而用戶在沒有長時間使用應用之前并不能了解應用的敏感行為,研究[13-14]表明,用戶很少注意到權限相關的問題,Felt等人[13]進行的兩次研究發現用戶對權限的關注度和理解率都較低,這表明普通用戶一方面缺乏對應用權限的關注,另一方面缺乏專業領域知識,對于應用所請求的權限并不了解其潛在風險,以及這些權限在應用中如何被使用。因此安卓使用的權限許可申請并不能幫助大多數用戶做出良好的安全策略選擇。
針對隱私信息是否泄漏的問題,Enck等人[2]通過修改Dalvik虛擬機實現動態污點分析工具Taint-Droid。該工具可以將敏感數據標記為污點源,然后跟蹤污點數據,根據污點數據是否被泄露來判斷應用是否存在隱私泄露。RiskMon[6]提供一種連續而自動化的風險評估框架,通過收集用戶對應用權限使用的反饋,從應用程序的元數據中構建模型,然后使用機器學習方法來評估應用風險。但RiskMon會在運行時跟蹤應用API調用,耗時較多且大量占用手機資源,例如CPU和內存。
文獻[1,15-18]研究用戶對權限的理解,用戶通常會忽略安裝應用時的安全警告[14-15],同時由于對權限理解不足[1,15],以及并不了解應用所收集的隱私信息[15],導致用戶不能有效地對應用權限進行管理。
Liccardi等人[17]提出修改Google Play的權限界面,為應用增加隱私泄露度量(即隱私評分),其目的是讓無經驗的用戶能夠理解應用權限。Sarma等人[18]提出對應用中異常權限的使用產生安全警告并提醒用戶的方法。如果應用請求的權限也被同類別其他應用所請求,則說明該權限為應用所需,否則說明該應用的權限請求異常。Amini等人[11]提出結合眾包以及動態分析技術,幫助用戶理解隱私信息的使用以及標記應用異常行為。Ismail等人[19]使用眾包的方法研究應用在不同權限設置下的可用性,及用戶對應用可用性的接受程度,并以此為不同用戶推薦權限設置。
基于用戶能直觀看到的應用描述、應用界面(UI)等信息,近期的研究工作嘗試從用戶角度出發,分析并解決用戶期望與應用行為的差異。這些研究工作可以分為3類:應用描述與應用行為的一致性分析[8,20],應用界面與應用行為的一致性分析[10],以及應用功能與界面的一致性分析[21-24]。
基于應用描述的分析:WHYPER[8]基于用戶心中所期望的應用行為,提出一種基于自然語言處理的方法在應用描述和應用申請權限之間建立一種映射關系,并用這種映射關系量化應用功能和應用真實行為之間的差異性。在此基礎上,AutoCog[9]提出一種結合機器學習和自然語言處理的方法,利用大量數據生成應用描述和應用申請權限的關系模型,從而使分析結果更精準和全面。CHABADA[10]通過分析應用描述與應用實際功能的差別,尋找潛在惡意應用?;趹妹枋鲞M行聚類,然后找出同類別應用中API使用異常的應用。但當前應用描述更多的是關于應用的功能,而沒有涉及到應用中隱私泄露的行為。在此基礎上,Zhang等人[20]提出自動化工具DESCRIBEME,通過程序分析和自然語言處理技術為應用自動生成有關隱私信息泄露的描述。
基于應用UI界面的分析:PERUIM[21](permission-UI mapping)和AsDroid[22]使用程序分析技術識別與應用界面元素相應的權限,分析UI權限與UI組件中文本信息的差異,從而檢測潛在的惡意應用?;趹妹舾行袨橄嚓P的GUI操作序列,AppIntent[23]分析隱私信息的泄露是否為用戶觸發,從而檢測潛在的惡意行為。盡管這些研究工作嘗試從用戶角度出發,分析并解決用戶期望與應用行為的差異,但大部分應用并沒有完整的應用描述或者UI描述信息。例如,超過90%的應用都沒有完整地在描述中說明使用權限的原因[25]。
本文基于Lin等人[11]針對用戶對移動應用隱私期望的眾包數據集,為每一個應用提取多維度的特征,并結合<應用,權限,意圖>三元組以及用戶評分構造特征向量,以該數據集作為訓練集構建并訓練預測模型,并通過預測分數和真實分數的均方誤差值來選擇預測效果最好的模型,最后設計良好的隱私評分等級映射算法,將預測分數映射為評分等級,實現隱私評級預測工具,整體流程圖如圖1所示。

Fig.1 Framework of privacy rate prediction model圖1 隱私評級模型框架
本文的研究基于Lin等人[11]針對用戶對移動應用隱私期望的調研結果數據集。他們采用眾包的方式調查用戶對移動應用隱私信息使用期望的真實數據,因隱私策略的復雜性或是用戶付出的時間與收益不平衡等原因,很少有用戶去閱讀終端用戶許可協議或者隱私策略,但是眾包技術可以很好地解決這些問題。通過提供清晰的解釋來降低權限理解的復雜度,關注應用的哪些行為打破了用戶的期望。首先要求參與者閱讀由谷歌商店提供的關于應用的基本信息、截圖和描述,然后一組參與者會被詢問關于應用權限使用期望相關問題,另一組則被告知權限的具體使用意圖等信息,最后要求參與者為應用程序權限相關行為指定舒適度評分,評分范圍從-2(非常不舒適)到+2(非常舒適)。
Lin等人[11]在2014年2月研究了谷歌商店中根據星級評分排名前100的免費應用程序,采用眾包的方式調查用戶對移動應用隱私信息使用期望的真實數據。為獲取更多數據,在2014年的8月進行第二輪研究,擴充眾包數據集,使得數據集中任意一個敏感權限或者使用意圖至少有20個<應用,權限,意圖>三元組。Lin等人[11]的兩次研究共收集來自真實用戶的44 676份有效數據,并對原始數據進行整理和清洗,使得最終的數據集中共包含來自421個真實用戶關于414個應用的16 651份問卷結果,這也是本文所用的數據集。
隱私評級模型的實現分為3個主要步驟:第一步為應用構造特征向量。訓練集中的數據只需要通過靜態分析等技術從元信息中提取與應用相關的特征和用戶對應用的反饋信息,這些特征數據結合眾包數據集中的<應用,權限,意圖>以及評分可以為應用構造出特征向量。但對于需要進行預測的應用應首先獲取應用中實際使用的所有敏感權限,并為敏感權限分析使用意圖,然后再提取應用相關的其他特征數據構造特征向量。第二步構建預測模型,利用不同的機器學習算法建立回歸模型,通過參數調整和優化使模型穩定且實現最好的預測效果,通過對比分析每個回歸模型的預測結果,選擇性能最好的回歸模型作為隱私評級工具的預測模型。第三步評分等級映射,建立合理的隱私評分計算以及等級映射算法,為應用最終確定一個隱私評級。
首先為每一個應用提取特征并構造特征向量。通過API分析和靜態分析等技術獲取應用相關的特征數據,包括權限分析、權限使用意圖分析以及元數據的分析等,提取不同的特征為應用構建特征向量。特征數據來源于兩部分,分別是使用爬蟲從谷歌應用商店爬取應用的apk文件和相關的元數據。通過反編譯apk文件可以獲取應用實際使用的敏感權限,元數據包含應用相關的一些特征數據,例如應用的描述、下載量、用戶的評論量等特征。
靜態分析是移動應用分析中最常用的技術,通過靜態分析可以實現敏感權限分析和使用意圖分析。本文中使用反編譯工具ApkTool將原始的apk文件反編譯為中間代碼。一方面可以獲取到應用權限申請AndroidManifest.xml,該文件中申請的權限在應用代碼中或第三方庫代碼中使用,因此通過解析該文件可以獲取到該應用相關的一些特征,例如各個組件的數量、申請權限的數量、安裝包大小等特征。此外還可以通過分析smali格式的中間代碼中API的調用關系獲取應用實際使用的敏感權限。隱私信息的使用是否合理與其使用意圖相關,因此本文針對應用中頻繁使用的11個敏感權限分析其在不同應用中的使用意圖,獲取到<應用,權限,意圖>三元組,表1列出本文中分析的11個應用常用的敏感權限。

Table 1 Sensitive permissions表1 敏感權限
針對上述11種敏感權限,本文分析總結9種常用的使用意圖,這個意圖分類是經過相關工作[11-12]驗證的常見權限使用意圖,如表2所示,其中第三方庫代碼中權限的使用意圖可以通過第三方分析工具Lib-Radar[26]分析提取。LibRadar是一種基于聚類的第三方庫檢測工具,使用該工具可以分析出應用中引用的第三方庫的數量以及不同的第三方庫中使用的權限以及使用該權限的意圖。但是一個權限僅在應用本身代碼中被使用而沒有在第三方庫中被使用,則將其使用意圖默認標記為INTERNAL,表示該權限只在應用程序本身的代碼中被使用。

Table 2 Purposes of permissions表2 權限使用意圖
特征向量可以唯一地表示一個應用的特定權限的使用意圖,在創建預測模型之前首先創建特征向量集。本文提取多種特征數據為應用構造特征向量,其來源于兩部分,一部分特征數據來自于“元數據(Metadata)”,即可以直接從應用商店獲取與應用本身相關的特征數據,例如應用的下載量、評論數量、星級排名等數據;另一部分特征數據則需要通過靜態分析從應用安裝包文件中提取。本文將應用的特征分為3種類別,表3列出了特征數據的分類、名稱及來源。

Table 3 Type of features表3 特征類型
(1)受用戶影響特征
受用戶影響的特征這部分的數據主要來源于用戶的反饋。用戶可以在應用商店對應用進行星級投票,星級分為5個等級,五星級別最高,五星的數量越多表明該應用受歡迎程度越高,因此不同星級的數量可以在一定程度上反映用戶對該應用的喜好程度。“下載量”特征更直接體現該應用的實際用戶量。同類應用中,一個應用的下載量越大表明該應用在同類應用中越受歡迎,其使用用戶隱私信息的可靠性更高,用戶對該應用的評分可能會較高。特征與隱私評分的相關性分析表明下載量與隱私評分呈正相關且相關性較強。
(2)客觀特征
客觀特征與應用自身相關,應用是否提供介紹開發者的網站、姓名、開發者的郵箱等信息。同一個開發者可能參與開發過不止一個應用。例如,一個開發者開發過惡意應用,那么其他有該開發者參與開發的應用也應該引起用戶對該應用中隱私信息使用情況的關注,與該開發者相關的應用評分傾向可能會比較相似?!懊枋觥边@個特征用最簡潔的語言表明該應用的主要功能,該特征基本是在敘述應用的核心功能,很少體現出應用中權限的使用情況,因此本文在建模過程中不考慮“描述”特征。“應用分類”則表示應用的類型,例如游戲類或地圖類,同類應用實現的功能會比較相似,因此可以認為同類型的應用可能會使用相似的敏感權限集合。
(3)隱私相關特征
隱私相關特征與用戶隱私信息相關,應用中使用的敏感權限及其使用意圖,一定程度決定用戶對應用的接受程度以及評價,申請的權限可以在應用本身代碼中使用也可在第三方庫中使用,或是申請之后并不使用。因此,需通過分析應用中敏感API的使用,提取應用實際使用的敏感權限,及該應用第三方庫中用到的敏感權限,并且分析每一個敏感權限分析在應用中的使用意圖。
通過計算每個特征與評分的皮爾森系數分析每個特征與應用隱私評分之間的相關性,皮爾森系數值范圍為[-1,1],絕對值越大表示相關性越強,正值表示特征和評分之間是正相關,負值表示特征和評分之間是負相關。特征與隱私評分相關性分析結果如圖2和圖3所示,圖2表明有74%的特征和隱私評分之間呈正相關性,只有26%的特征和隱私評分之間呈負相關性。

Fig.2 Features correlation圖2 特征相關性

Fig.3 Correlation between features and privacy score圖3 特征與隱私評分相關性
圖3所示為負相關性最強的5個特征(a)圖和正相關性最強的5個特征(b)圖,其中負相關性最強的3個特征分別是應用類型(appType)、權限使用意圖(purpose)和第三方庫的引用數量(libNums)。權限使用意圖與隱私評分呈負相關性,且相關性較強排第二,第三方庫引用數量與隱私評分的相關性為-0.33,表明第三方庫和隱私評分之間呈負相關且相關性較強,引用第三方庫數量越多,對應用隱私評分所起的消極的作用越強。而正相關性最強的兩個特征分別是權限數量(permission)和應用下載量(downLoads),應用下載量與隱私評分的相關性為0.34,表明下載量對應用隱私評分有著較為積極的作用,下載量越大,則應用受歡迎程度越高,其他3個特征(provider,receiver,service)都表示安卓組件的數量,安卓組件數量與應用隱私評分呈正相關性,且3種組件對隱私評分的影響程度無明顯差異。
本文采用長度為24的特征向量表示應用。由于特征數據類型既有數值類型特征也有非數值類型特征,需對原始的特征數據進行預處理,不同類型的特征采用不同處理方式。
(1)歸一化
歸一化是一種簡化計算的方式,即將有量綱的表達式經過變換化為無量綱的表達式。歸一化后的數據會根據需要被限制在某一個范圍之內。本文中用到的數據類型的特征數據級別差距較大,例如“下載量”這一特征值往往是上萬甚至百萬級別,而“組件數量”則是個位數級別。歸一化處理一方面能減小某一維數據對結果影響太大,另一方面可以加快程序的運行速度。數據歸一化的實現方式有多種,本文采用線性轉換函數進行數值類型數據的歸一化處理。
轉換公式如式(1)所示,其中x、y分別表示轉換前和轉換后的值,Mean表示均值,Std表示標準差,歸一化處理之后的數據范圍限定在[-1,1]之間,且均值為0。

(2)標簽化
非數值類型的特征數據有應用的分類、權限、使用意圖等特征。本文對訓練集中非數值化的特征進行標簽化的處理之后參與對模型的訓練,每一個需要預測評分應用的此類特征都需要預先進行標簽化處理之后,才能輸入模型進行隱私評分預測。本文采用獨熱編碼的方式標簽化非數值特征,對于每個非數值特征,假設存在N個可能值,經過獨熱編碼后用長度為N且每位為0或1的碼字表示,每個碼字中只有一個位置的值可以為1,表示對應值。
本研究的目的是建立機器學習模型,實現安卓應用隱私評分的預測,該模型的建立以應用中敏感權限的使用意圖及相關的元數據為基礎,是創建一個回歸函數,該函數可以實現應用到評分的映射。構建預測模型是一個迭代的過程,需采用合理的方法選擇模型并進行多次對比研究,并以實驗結果數據為依據選擇最優的回歸模型作為預測模型。
本文構建多個不同的模型進行回歸訓練,從最簡單的線性模型到復雜的組合模型。線性回歸模型實現簡單,但容易出現過擬合等問題,對該問題可以使用正則化的方式優化。正則化是把額外的約束或者懲罰項加到已有模型的損失函數上,以防止過擬合并提高泛化能力,正則化又分L1正則化和L2正則化,相對應的產生了Lasso模型和Ridge模型。
將簡單的基礎模型組合可以實現較為復雜的組合模型,組合的方式有很多種,本文中采用隨機化以及梯度下降的組合模型。隨機化的組合方式結合決策樹可以建立隨機森林,隨機森林由多棵決策樹組成,每一棵決策樹可以獨立工作。梯度下降的方式則是指新模型是在之前建立的模型損失函數的梯度下降方向建立,如果建立的模型能夠讓損失函數持續下降,說明模型在不停地改進,最好的方式就是讓損失函數在其梯度的方向上下降,以此來優化模型。
模型預測能力的好壞需要一個評價指標,本文采用模型對應用的預測評分和應用實際評分之間的均方誤差值(mean squared error,MSE)作為模型預測能力的主要評估指標,均方誤差值越小,表示模型預測能力越強,模型性能越好。此外在構建模型的時候使用k-折交叉驗證對輸入數據自動進行訓練,k值取1至10之間的正整數,將根據實驗結果,取使預測結果最優的k值。實驗中將輸入數據拆分為k組,其中一組保留用于測試,其他k-1組用于訓練,此過程重復k次,使得每一組數據都有機會作為測試組,然后取k次訓練的均方誤差值的平均值作為最終的評估值。MSEk=i表示第k=i組數據作為測試組訓練模型得到的均方誤差值,該值計算過程如式(2)所示,其中predictt表示一個應用相關的第t個向量的預測評分,而realt則表示真實評分。MSE表示模型的均方誤差值,計算過程如式(3)所示。

一個應用中可能會使用多個敏感權限,同一個敏感權限可能會存在多個使用意圖。因此每一個應用相關的<應用,權限,意圖>三元組數量不同,這意味著預測模型對每個輸入的應用輸出一個數目不定的評分向量(appScore),需要確定一種合理的評分策略,根據預測所得應用的評分向量為應用確定一個最終的隱私評分(FinalScore),并根據最終的評分為應用確定一個隱私評分等級(PrivacyRate)。本文采取的方法是,首先對所有的預測值進行排序,然后查看是否存在負值。存在負值說明該應用存在不受用戶歡迎的權限使用方式,則將所有的負值求和作為最終的隱私評分。如果不存在負值,表明該應用中敏感權限的使用較為合理,就將所有正值求平均值作為最終的隱私評分(FinalScore)。算法1描述了從appScore到PrivacyRate的計算過程。
算法1評分等級策略
輸入:評分向量appScore=(s1,s2,…),表示一個應用的所有預測分數。
輸出:應用的隱私評分等級PrivacyRate,[A,B,C,D]4個等級之一。
算法2描述從最終的隱私評分(FinalScore)到隱私評分等級(PrivacyRate)的映射。評分等級分為[A,B,C,D]4個等級,其中A表示應用中權限的使用狀況良好,不存在風險;B表示應用中權限的使用狀況較好,雖然不存在隱私風險,但可能存在用戶并不喜歡的權限使用;C表示應用中權限使用存在隱私風險;D表示應用中存在較為嚴重的隱私風險。一種情況下應用的評分等級會直接被判定為A。這種應用是指在權限分析的時候發現應用中并沒有使用表1中提到的敏感權限,認為該應用不會去訪問用戶隱私數據,屬于安全級別較高的應用,因此直接將其隱私風險等級判定為A。
算法2評分等級映射
輸入:FinalScore,應用最終評分。
輸出:PrivacyRate,[A,B,C,D]4個等級之一。

從簡單的線性回歸模型到較為復雜的組合模型,本文訓練8個不同的回歸模型,每個模型預測能力使用預測值和實際值得均方誤差(MSE)評估,圖4展現了各個模型的MSE值,8個模型預測準確率由低到高排序依次為 BayesianRidge(BR)、Lasso(LS)、Linear(LN)、LassoLars(LL)、Ridge(RD)、Random-Forest(RF)、ensemble of regression tree(ERT)、gradient boost regression tree(GBRT)。由圖4可以看到,使用以<權限,意圖>特征組為核心構建的模型中,前5個基礎模型(BR、LS、LN、LL、RD)的預測結果準確率比較接近,MSE值均在0.4上下浮動,后面3個組合模型(RF、ERT、GBRT)的預測結果準確率比較接近,MSE值均在0.2左右,組合模型的預測能力明顯優于基礎模型的預測能力。其中漸進梯度回歸樹(GBRT)取得最好的預測效果,該模型的MSE值為0.193,表明漸進梯度回歸樹的預測準確率達到80.7%,因此最終選擇漸進梯度回歸樹作為預測模型實現應用隱私評級工具。

Fig.4 Prediction accuracy of models圖4 各個模型預測準確率
6.2.1 特征重要性
各個模型的評估結果表明漸進梯度回歸樹的預測效果最好,為了進一步提高模型性能,分析不同的特征在模型中對預測結果的影響大小,去掉一些對預測結果貢獻不大的特征,力求在降低特征維度的同時保持預測模型的準確率。首先計算每一個特征在模型中的重要性,如圖5所示,permissionName(權限名稱)和purpose(權限使用意圖)為模型中最重要的兩個特征,而dName(是否提供開發者姓名)和dEmail(是否提供開發者郵箱)兩個特征的特征重要性值為0,說明dName和dEmail對模型預測能力幾乎沒有任何貢獻,對應用的預測結果基本沒有影響。分析訓練集數據發現這兩個特征為布爾類型的變量,表示應用是否有開發者的姓名和開發者的郵箱地址,與開發者相關的另一個特征是dWeb,表示是否提供了開發者的個人主頁介紹,這個特征的重要性高于dName和dEmail。通過對訓練集數據的統計分析發現這3個特征取值變化很小,如表4所示,這3個特征中值為1所占比例都高于94%,且dName和dEmail兩個特征與隱私評分的皮爾森系數均小于0.1,表明這兩個特征跟隱私評分的相關性很弱。因此從特征向量中刪除這3個特征,并用剩余特征構建新模型,發現其MSE值為0.209,跟刪除這3個特征之前模型的MSE值0.193相比,去掉這3個特征對預測結果準確率影響很小。

Fig.5 Features importance of GBRT圖5 GBRT模型特征重要性

Table 4 Distribution of boolean type features表4 布爾類型特征分布
6.2.2 特征子集
分析不包括應用開發者信息(dName,dEmail,dWeb)特征子集中特征的重要性,發現前8個最重要的特征中有5個特征來源于apk數據,只有3個特征來源于matadata,由于apk數據的獲取更加靈活和方便,因此嘗試只使用從apk文件中提取的特征子集為應用構造特征向量,并訓練回歸模型,分析每個使用特征子集訓練模型的預測性能,實驗結果如圖6所示,使用所有的特征構建的基礎線性模型(藍色)性能總要優于只使用apk中提取的特征子集構建的預測模型(紅色),但是在組合模型中只使用apk中提取的特征子集構建的模型預測結果與使用所有特征構建的模型預測結果相近,ERT模型甚至達到了同樣的預測準確率,只使用從apk中提取的特征子集構建的預測模型依然是GBRT模型得到最好的預測效果,且和使用所有特征數據訓練的GBRT模型相比,準確率十分相近,因此最終選擇只使用從apk中提取的特征子集構建GBRT預測模型,實現應用隱私評分預測工具。

Fig.6 Predict results of feature sets圖6 特征子集的預測結果
將隱私評分預測工具應用到11931個來自谷歌商店的安卓應用,依次反編譯每個應用,然后分析每一個應用實際使用的敏感權限、使用意圖以及其他的特征數據構造特征向量,通過數據預處理操作之后輸入預測模型確定一個隱私評分等級。預測結果分布如圖7所示,4個等級的應用所占的比例不同,其中級別為A的應用所占的比例最高達到42%,評級為A的應用中,有相當一部分是沒有使用敏感權限的應用,此類應用沒有使用敏感權限即沒有權限訪問用戶的隱私信息數據,因此此類應用安全級別較高,將其評分等級設置為最高級別。評級為B和C的應用所占的比例較為接近,分別為21%和29%,評級最低的D類應用所占比例為8%。

Fig.7 Distribution of privacy rating圖7 隱私評級分布
表5列出了4種不同級別的應用中敏感權限使用特點。針對每個評分級別分別列出了檢測到的應用,并描述每個應用中實際訪問的敏感權限及使用特點,并結合使用意圖做出解釋和說明。通過實際分析應用,發現以敏感權限的使用意圖為應用進行隱私評分是合理的。
6.3.1 敏感權限分析
統計分析每一類評分等級中應用的各個敏感權限出現的次數在每個評級類別中所占比例,各個類別的統計數據如表6所示,表6的最后一列表示每一個權限在所有應用中出現的次數總和,對該列排序可以看出出現次數最高的權限是讀取手機狀態的READ_PHONE_STATE和獲取用戶精準位置信息 ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATIONS和READ_CONTACTS所占比例均低于1%。分析表6中獲取用戶位置的權限ACCESS_FINE_LOCATIONS 和 ACCESS_COARSE_LOCATIONS。ACCESS_FINE_LOCATIONS表示獲取用戶準確位置,通過GPS衛星定位精確度達到10 m以內,該權限在各個評分級別中所占比例均高于20%,而獲取用戶粗略位置信息的權限所得的統計數量均為0,這些應用在想要獲取用戶位置的時候一定是想要更精確的位置,因此會偏向于使用ACCESS_FINE_LOCATION而非ACCESS_COARSE_LOCATION,而每一個評分等級中ACCESS_FINE_LOCATION權限所占的比例也相對較高。因此訪問用戶詳細位置信息的權限ACCESS_FINE_LOCATION出現次數總和最高,達到5 058次。

Table 5 Sensitive behavior of different rating applications表5 不同評級應用的敏感行為

Table 6 Sensitive permissions of different privacy rates表6 不同評分等級敏感權限使用情況
6.3.2 使用意圖分析
表7的統計數據展示了各個使用意圖在每一個評分等級類別的應用中所占比例,在A、B、C 3個評分等級中所占比例最高的使用意圖是INTERNAL,該標記表示某一敏感權限只在應用程序內部使用,而D級別中所占比例最高的使用意圖則是DEVELOPMENT_AID。橫向對比4種評分等級的應用發現在D級別中,TARGETED_ADS(用于廣告),PAYMENT(用于付款),GAME_ENGINE(游戲)和DEVELOPMENT_AID(應用分析)這幾種使用意圖所占比例要高于其他類別中所占比例,這幾種使用意圖中尤其是TARGETED_ADS(用于廣告)可能會降低用戶體驗,讓用戶感覺不舒服。PAYMENT(用于付款)可能會威脅用戶財產安全,因此會降低應用的評分等級。UTILITY(工具)則在A和B中所占比例較高,這表明當敏感權限的使用意圖為幫用戶解決問題的時候,用戶對應用隱私信息使用的接受度較高。

Table 7 Permissions purposes of different privacy rates表7 不同評分等級使用意圖分布 %
本文提出了一種基于權限使用意圖和用于期望的移動應用隱私評級方法,并實現了一個評級工具。通過使用靜態分析技術獲取每個應用實際使用的敏感權限并分析其使用意圖,結合應用其他維度的特征構造特征向量,然后利用機器學習方法構建回歸模型。實驗結果表明,所構建的預測模型準確率可以達到80%以上,將其應用于11 931個來自谷歌商店的應用,結果表明約8%的應用存在嚴重的隱私風險。