鐘 越 付迪陽
(四川大學(xué)計(jì)算機(jī)學(xué)院 成都 610065)
(2018223049249@stu.scu.edu.cn)
在過去的10年中,智能手機(jī)的普及極大地促進(jìn)了移動(dòng)應(yīng)用程序.根據(jù)AppBrain的數(shù)據(jù)顯示,截至2018年9月,全球最大的Android應(yīng)用商店Google Play上的可用應(yīng)用程序數(shù)量已經(jīng)超過280萬.應(yīng)用程序在我們的日常生活中扮演著極其重要的角色.許多用戶在他們的移動(dòng)設(shè)備上存儲(chǔ)了大量敏感和私有的數(shù)據(jù).這類數(shù)據(jù)面臨遭受惡意收集的風(fēng)險(xiǎn),這已成為整個(gè)Android生態(tài)系統(tǒng)的主要威脅.
Android系統(tǒng)由于其開源性,長(zhǎng)期以來一直是惡意應(yīng)用程序攻擊的主要目標(biāo).其主要漏洞之一是權(quán)限機(jī)制,Android的權(quán)限機(jī)制要求應(yīng)用程序申請(qǐng)需要訪問的用戶隱私權(quán)限(如聯(lián)系人、SMS、相機(jī)和互聯(lián)網(wǎng)訪問等).因此,Android的安全性在很大程度上取決于這種權(quán)限機(jī)制的有效性.現(xiàn)有的主要威脅是,惡意應(yīng)用程序可能會(huì)請(qǐng)求額外的權(quán)限來訪問用戶的敏感和私有數(shù)據(jù).為了盡量減少這種威脅,一些研究人員設(shè)計(jì)了面向用戶的權(quán)限提示,以確保智能手機(jī)用戶被正確地通知應(yīng)用程序請(qǐng)求的權(quán)限.然而,由于Android許可機(jī)制的復(fù)雜性,這些努力已被證明幾乎是無效的.主要原因是大多數(shù)用戶并不能完全理解Android的權(quán)限機(jī)制.他們通常只是忽略提示并接受應(yīng)用程序的權(quán)限請(qǐng)求.因此,應(yīng)用程序可以很容易獲得額外的權(quán)限,這增加了用戶隱私泄露的風(fēng)險(xiǎn).
Android是Google公司以Linux為內(nèi)核開發(fā)的移動(dòng)設(shè)備開源系統(tǒng),所以在Android中保留了Linux中的一些安全機(jī)制,如Linux中的自主訪問控制機(jī)制,Android的權(quán)限機(jī)制其基石就是訪問控制機(jī)制[1].
為了讓用戶知道應(yīng)用程序的隱私權(quán)限使用情況,Android要求開發(fā)者預(yù)先申明需要使用的隱私權(quán)限,用戶在安裝應(yīng)用程序時(shí)需要對(duì)這些權(quán)限請(qǐng)求進(jìn)行授權(quán).具體來說,Android系統(tǒng)中每個(gè)開發(fā)者開發(fā)的應(yīng)用程序被分配1個(gè)唯一的用戶ID,而每個(gè)用戶ID訪問的權(quán)限集合是受限的,沒有任何一個(gè)Android移動(dòng)應(yīng)用程序可以在默認(rèn)情況下直接訪問其他應(yīng)用程序.開發(fā)者在應(yīng)用程序的開發(fā)過程中,必須把要使用的權(quán)限通過〈uses-permission〉標(biāo)簽在AndroidManifest.xm1文件中進(jìn)行申明.而用戶在安裝移動(dòng)應(yīng)用程序前會(huì)被告知這個(gè)應(yīng)用程序需要使用的用戶隱私權(quán)限.只有在這些權(quán)限被用戶授權(quán)的情況下,Android應(yīng)用程序才能允許在運(yùn)行過程中使用相關(guān)功能.
通過上文對(duì)Android系統(tǒng)權(quán)限機(jī)制的介紹可知,為了保護(hù)用戶的隱私,Google公司在Android隱私權(quán)限方面已經(jīng)做了很多工作,然而Android的權(quán)限機(jī)制仍然存在一些不容忽略的缺點(diǎn)和不足.
首先,Android應(yīng)用程序的隱私權(quán)限機(jī)制太過依賴用戶的判斷,用戶通過應(yīng)用程序的功能和介紹來決定是否同意授權(quán)并安裝應(yīng)用程序.然而,期望用戶對(duì)如此多的應(yīng)用程序所使用的不同權(quán)限保持警覺是不夠明智的.Felt等人[2]評(píng)估Android用戶在安裝過程中是否注意、理解和操作權(quán)限信息.他們對(duì)203個(gè)Android用戶的調(diào)查表明,用戶對(duì)應(yīng)用程序的隱私權(quán)限表現(xiàn)出較低的關(guān)注和理解率.17%的調(diào)查受訪者在安裝過程中會(huì)關(guān)注應(yīng)用申請(qǐng)了什么權(quán)限,只有3%的調(diào)查受訪者能夠正確理解調(diào)查者提出的3個(gè)權(quán)限問題.Felt等人[2]的研究結(jié)果表明,Android權(quán)限訪問控制機(jī)制并不能讓大多數(shù)用戶在安裝和使用應(yīng)用程序時(shí)作出安全的決策.
其次,不同于iOS系統(tǒng)在運(yùn)行時(shí)的用戶權(quán)限訪問控制機(jī)制,Android權(quán)限機(jī)制大多是在安裝時(shí)期確定的[3],盡管Google公司在Android 6.0之后進(jìn)行了改進(jìn),可以在應(yīng)用程序首次使用權(quán)限時(shí)詢問用戶是否授權(quán).但是Android系統(tǒng)并不能根據(jù)運(yùn)行時(shí)環(huán)境的不同動(dòng)態(tài)修改應(yīng)用程序的訪問隱私資源的能力,而且權(quán)限一旦被授權(quán)給應(yīng)用程序后,應(yīng)用程序就始終擁有該權(quán)限.這就使得Android的權(quán)限控制具有局限性,用戶無法細(xì)粒度地對(duì)應(yīng)用程序的隱私權(quán)限進(jìn)行管理,也增加了用戶隱私泄露的風(fēng)險(xiǎn).
對(duì)于Android權(quán)限機(jī)制存在的問題改進(jìn)方案大致分為2個(gè)方面:
一方面是面向用戶的,針對(duì)用戶對(duì)Android隱私權(quán)限理解的不足,有研究人員試圖通過給出更加合理的提示來使用戶了解權(quán)限.例如,Kelley等人[4]設(shè)計(jì)了更詳細(xì)的權(quán)限提示框的內(nèi)容,提醒用戶使用特定權(quán)限時(shí)的后果和隱含的風(fēng)險(xiǎn).也有學(xué)者試圖通過學(xué)習(xí)用戶的隱私偏好,自動(dòng)地為用戶配置應(yīng)用程序的隱私權(quán)限.Liu等人[5]和Lin等人[6]通過詢問用戶隱私權(quán)限偏好的問題和研究分析用戶隱私配置文件,預(yù)測(cè)用戶重視的隱私權(quán)限,從而實(shí)現(xiàn)自動(dòng)化權(quán)限配置.針對(duì)Android的權(quán)限只能在安裝或首次使用時(shí)確定的問題,有學(xué)者開發(fā)出細(xì)粒度管理應(yīng)用程序權(quán)限的工具,如Nauman等人[7]和Bugiel等人[8]開發(fā)了一個(gè)細(xì)粒度的Android權(quán)限使用控制工具,設(shè)備中的哪些權(quán)限允許被訪問,哪些權(quán)限不允許被訪問都可由用戶指定.而且這些決策還能夠在運(yùn)行時(shí)期進(jìn)行,比如在某些特定的地點(diǎn)、特定的時(shí)間才能訪問某些資源,或者限制某個(gè)應(yīng)用程序每天短信發(fā)送的最大數(shù)量等.而對(duì)于隱私權(quán)限的監(jiān)控方面,雷磊等人[9]通過重打包注入代碼的方法,實(shí)現(xiàn)對(duì)目標(biāo)應(yīng)用敏感權(quán)限的實(shí)時(shí)監(jiān)控.
另一方面主要是面向開發(fā)人員,由于Android權(quán)限的復(fù)雜性,開發(fā)人員往往不能夠完全了解自己程序調(diào)用的API需要申請(qǐng)的權(quán)限.Felt等人[10]提出了一組指導(dǎo)原則,以幫助開發(fā)者確定最合適的權(quán)限申請(qǐng)配置文件,它提醒開發(fā)人員加強(qiáng)對(duì)權(quán)限的理解,在開發(fā)過程中不要聲明不必要或錯(cuò)誤的權(quán)限,但由于Android開發(fā)文檔沒有成熟的API描述,該方法可能會(huì)出現(xiàn)一些錯(cuò)誤.而PScout[11]使用靜態(tài)分析從Android OS源代碼中提取權(quán)限規(guī)范,并推薦開發(fā)人員遵循權(quán)限規(guī)范配置隱私權(quán)限.
上文對(duì)Android應(yīng)用程序隱私權(quán)限研究是基于Android系統(tǒng)本身的權(quán)限機(jī)制,主要的研究思路是通過各種方法提高用戶和開發(fā)者對(duì)應(yīng)用程序隱私權(quán)限的認(rèn)知和管理.但是這些方法最終對(duì)用戶和開發(fā)者的影響仍然很小.而且對(duì)于應(yīng)用程序開發(fā)者而言,開發(fā)者本身并沒有規(guī)范其隱私權(quán)限管理的意愿.相反,一些應(yīng)用程序開發(fā)商為了某些商業(yè)利益,會(huì)故意申請(qǐng)一些與其應(yīng)用程序業(yè)務(wù)和功能無關(guān)的權(quán)限.Felt等人[12]研究分析了940個(gè)應(yīng)用程序,發(fā)現(xiàn)大約1/3的應(yīng)用程序出現(xiàn)了濫用用戶隱私權(quán)限的情況.中國(guó)互聯(lián)網(wǎng)應(yīng)急中心的監(jiān)測(cè)也發(fā)現(xiàn)同樣的現(xiàn)象,在用戶下載量較大的千余移動(dòng)應(yīng)用程序中,應(yīng)用程序平均申請(qǐng)25項(xiàng)權(quán)限,其中有超過30%的移動(dòng)應(yīng)用程序申請(qǐng)與自身業(yè)務(wù)無關(guān)的權(quán)限.所以只是提高用戶和開發(fā)人員的隱私保護(hù)意識(shí)顯然是不夠的.為了解決這個(gè)問題,我們需要一種自動(dòng)化的檢測(cè)方法,這種方法可以自動(dòng)地分析和檢測(cè)應(yīng)用程序是否申請(qǐng)使用與其功能無關(guān)的隱私權(quán)限,從而對(duì)應(yīng)用程序是否有隱私泄露風(fēng)險(xiǎn)進(jìn)行合理的評(píng)估.近年來,有學(xué)者分別在3個(gè)不同的方向進(jìn)行了探索:1)從描述(App商店的功能簡(jiǎn)介)中提取應(yīng)用程序所需的隱私權(quán)限;2)基于靜態(tài)代碼分析的方法檢測(cè)隱私權(quán)限風(fēng)險(xiǎn);3)從隱私政策(privacy policy)中提取應(yīng)用程序所需的隱私權(quán)限.
應(yīng)用程序的描述(description)指的是應(yīng)用程序在App商店的簡(jiǎn)介,開發(fā)者把自己開發(fā)的應(yīng)用程序功能和特點(diǎn)介紹給用戶.用戶根據(jù)應(yīng)用程序的描述,決定是否下載這些應(yīng)用程序.
使用應(yīng)用程序的描述信息對(duì)隱私權(quán)限進(jìn)行分析始于2013年,Whyper[13]使用自然語言處理技術(shù)對(duì)應(yīng)用程序的描述進(jìn)行語義建模,從而提取各種特征詞組合作為應(yīng)用程序的聲明功能,并將它們映射到應(yīng)用程序聲明的權(quán)限,判斷其描述信息中是否與用戶隱私相關(guān)的3種權(quán)限(通訊簿、日歷和錄音音頻)有關(guān),Whyper的實(shí)驗(yàn)結(jié)果表明,使用應(yīng)用程序的描述信息可以成功地判斷應(yīng)用程序是否需要某些用戶隱私權(quán)限.Autocog[14]對(duì)Whyper的語義模型進(jìn)行了改進(jìn),并根據(jù)API的文檔中提取自然語言關(guān)鍵字來關(guān)聯(lián)描述和權(quán)限語義.Autocog語義提取的關(guān)鍵組成部分是顯式語義分析,它利用如維基百科這樣的大語料庫來創(chuàng)建一個(gè)大規(guī)模的語義數(shù)據(jù)庫,這種的分析方法大大緩解了描述語義信息有限的問題.Whyper和Autocog使用的都是自然語言處理特征詞提取的方法,通過提取特征詞映射到各個(gè)隱私權(quán)限,最后評(píng)估應(yīng)用程序申請(qǐng)的隱私權(quán)限是否與描述相一致.這種方法的缺點(diǎn)在于應(yīng)用程序的描述信息是有限的,一些應(yīng)用程序的描述非常簡(jiǎn)短,通過語義建模的方式提取特征詞可能無法提取出太多有效的信息,而且,應(yīng)用程序開發(fā)者未必會(huì)把其開發(fā)的程序所有功能都在App商店中描述清楚.
針對(duì)上述問題,一些學(xué)者提出使用LDA主題模型提取應(yīng)用程序描述文本的特征,用這些主題特征進(jìn)行聚類,為每類應(yīng)用程序推斷出其合理的權(quán)限集合.隱狄利克雷分布(latent Dirichlet allocation, LDA)[15]是一種主題模型,它可以將文檔的主題提取出來,并按照概率分布的形式給出,LDA主題模型在自然語言處理領(lǐng)域有廣泛的應(yīng)用.Gorla等人[16]使用LDA主題模型對(duì)應(yīng)用程序描述進(jìn)行分析,把應(yīng)用程序調(diào)用的隱私接口函數(shù)名作為一個(gè)自然語言的單詞與應(yīng)用程序描述的語料庫一起進(jìn)行LDA主題建模,通過訓(xùn)練好的模型得到隱私接口出現(xiàn)在每個(gè)主題的概率,從而判斷應(yīng)用程序是否需要某個(gè)隱私權(quán)限.Han等人[17]和Xiao等人[18]則在使用LDA主題模型提取出應(yīng)用程序的主題特征后,通過協(xié)同過濾推薦算法對(duì)應(yīng)用程序應(yīng)當(dāng)具有的隱私權(quán)限進(jìn)行分析,其基本思路是描述主題特征相似的應(yīng)用程序應(yīng)該給與推薦相似的隱私權(quán)限,他們使用良性的應(yīng)用程序訓(xùn)練這個(gè)推薦系統(tǒng),并使用惡意程序推薦的權(quán)限集進(jìn)行對(duì)比,從而得到基于描述的最小用戶隱私權(quán)限集合,并把最小權(quán)限集合與程序?qū)嶋H使用的權(quán)限進(jìn)行對(duì)比,分析應(yīng)用程序隱私權(quán)限是否過度使用.TFDroid[19]使用機(jī)器學(xué)習(xí)的方法分析應(yīng)用程序描述,通過LDA主題模型對(duì)描述文本進(jìn)行特征提取,使用K-Mean算法對(duì)應(yīng)用程序進(jìn)行分類,然后對(duì)每一類的應(yīng)用程序訓(xùn)練一個(gè)One-Class SVM分類器判斷其是否有隱私安全風(fēng)險(xiǎn).
靜態(tài)代碼分析(program static analysis)[20]是指并不需要運(yùn)行程序代碼,僅僅通過分析和掃描程序的語法、數(shù)據(jù)流、控制流等,檢查代碼是否滿足安全、規(guī)范、可靠等指標(biāo).靜態(tài)代碼分析在PC端已有相應(yīng)的研究,而移動(dòng)端在這個(gè)方向的研究是近些年才開始的.
有學(xué)者[21-24]通過靜態(tài)代碼分析的方法構(gòu)建應(yīng)用程序的數(shù)據(jù)流和控制流,通過判斷隱私敏感數(shù)據(jù)在良性應(yīng)用程序和惡意應(yīng)用程序中不同的行為方式,判斷應(yīng)用程序是否有隱私泄露的風(fēng)險(xiǎn).由于僅通過分析應(yīng)用程序的隱私數(shù)據(jù)流得到的信息是有限的,有一些研究人員[25-30]通過提取UI(用戶界面)元素上下文,結(jié)合隱私數(shù)據(jù)流對(duì)應(yīng)用程序的隱私權(quán)限安全進(jìn)行檢測(cè).其具體思路是對(duì)涉及用戶隱私信息的數(shù)據(jù)流進(jìn)行跟蹤,挖掘與這個(gè)數(shù)據(jù)流有關(guān)的UI元素所包含的文本信息,通過機(jī)器學(xué)習(xí)方法比對(duì)UI上下文信息和調(diào)用的隱私API文檔的一致性,從而判斷程序的使用隱私權(quán)限行為是否符合其UI上下文.還有一種研究方法[31-35]是通過靜態(tài)代碼分析應(yīng)用程序所使用的API,從API推斷合理的隱私權(quán)限.Bartel等人[31]和Karim等人[32]使用靜態(tài)代碼分析提取程序使用的API,然后通過關(guān)聯(lián)規(guī)則識(shí)別每個(gè)API所需要的隱私權(quán)限.從API到權(quán)限的映射關(guān)系中得到應(yīng)用程序應(yīng)該配置的隱私權(quán)限.而Bao等人[33]和Liu等人[34]通過挖掘應(yīng)用程序使用的API和API描述特征,基于具有相似特性API通常具有相似的權(quán)限這樣一種思路,使用協(xié)同過濾算法為給定的應(yīng)用程序推薦權(quán)限.
基于靜態(tài)代碼分析方法的問題在于,應(yīng)用程序靜態(tài)分析比較耗費(fèi)實(shí)驗(yàn)設(shè)備的運(yùn)算能力,如果對(duì)復(fù)雜的應(yīng)用程序進(jìn)行靜態(tài)代碼分析可能需要較長(zhǎng)的時(shí)間.結(jié)合UI元素上下文進(jìn)行靜態(tài)分析方法的問題在于UI元素的文本碎片化,從這些碎片化的文本信息很難映射到相應(yīng)的權(quán)限.而對(duì)于通過分析程序API進(jìn)行權(quán)限推薦的方法,由于Android的版本頻繁更新和豐富的第三方庫,API的數(shù)量、功能和描述也隨之變化,API分析方法可能不適用于新版本的Android系統(tǒng).
所謂隱私政策,是App商店出于對(duì)用戶個(gè)人隱私信息的保護(hù),要求開發(fā)者在上傳其開發(fā)的應(yīng)用程序時(shí),需要提供1份用戶隱私信息使用情況的說明文檔,在這個(gè)文檔里,開發(fā)者要明確告知用戶其應(yīng)用程序收集、使用、處理個(gè)人信息的目的、方式和范圍.
PVDetector[35]分析應(yīng)用程序隱私使用情況與隱私策略描述的不一致來檢測(cè)Android應(yīng)用程序違反隱私政策的行為.PPChecker[36]使用自然語言處理技術(shù)分析Android應(yīng)用程序隱私政策,然后通過比對(duì)應(yīng)用程序?qū)嶋H使用用戶隱私權(quán)限的情況,判斷出應(yīng)用程序的隱私政策可能會(huì)出現(xiàn)的5個(gè)問題(incomplete,incorrect,imprecise,inconsistent,unfriendly).Wilson等人[37]將基于機(jī)器學(xué)習(xí)的隱私策略分析與應(yīng)用程序靜態(tài)代碼分析相結(jié)合,判斷隱私政策與程序行為不一致情況.而Yu等人[38]則開發(fā)出TAPVerifier對(duì)隱私政策、描述和程序?qū)嶋H使用的隱私權(quán)限進(jìn)行分析,并在其中進(jìn)行交叉驗(yàn)證,判斷應(yīng)用程序的隱私安全問題.
基于隱私政策的分析方法優(yōu)點(diǎn)在于隱私政策就是介紹應(yīng)用權(quán)限的使用情況,其與權(quán)限的高相關(guān)性使得自然語言處理提取的權(quán)限信息更加簡(jiǎn)單和準(zhǔn)確.這種方法的缺點(diǎn)在于隱私政策是開發(fā)者自己撰寫的,其聲明的隱私權(quán)限未必是應(yīng)用程序所必須的.
本文介紹了Android系統(tǒng)隱私權(quán)限安全機(jī)制、存在的問題及改良方法,總結(jié)了現(xiàn)有的Android應(yīng)用程序隱私權(quán)限安全風(fēng)險(xiǎn)檢測(cè)方案,并詳細(xì)介紹了基于描述、靜態(tài)代碼分析和隱私政策3個(gè)方向的主要研究思路和技術(shù)手段.雖然目前已經(jīng)有許多關(guān)于Android應(yīng)用程序隱私權(quán)限的研究工作,其中一些取得了很好的研究成果.但是現(xiàn)有研究方法都存在著一些問題,需要進(jìn)一步的優(yōu)化.無論應(yīng)用程序的描述、隱私政策和程序代碼,其實(shí)都在一定程度上體現(xiàn)了程序所需要的隱私權(quán)限信息,而單方面的分析方法都沒有使用到我們可以獲得的全部信息.如何統(tǒng)一這些應(yīng)用程序信息,從中提取出有效的隱私權(quán)限特征,從而更加準(zhǔn)確地評(píng)估Android應(yīng)用程序的隱私安全風(fēng)險(xiǎn)將是未來重要的研究方向.