一 定是由用戶的特定操作觸發(fā)的。因此只有滿足下述信息流分析條件的元素才有可能屬于隱 私相關(guān)界面元素。
[0030] 判定條件;界面元素存在WfindViewBWdO為起始,getTextO為終點(diǎn)的完整調(diào) 用鏈。同時(shí)調(diào)用鏈中含有化ClickO等事件觸發(fā)函數(shù),表明該元素與用戶存在直接交互關(guān) 系。即可認(rèn)為此元素接受了用戶輸入。
[0031] 圖4是圖1中在獲取用戶信用卡信息時(shí)所對(duì)應(yīng)的后臺(tái)代碼邏輯。該段代碼的關(guān)鍵 點(diǎn)為: (1) 輸入框?qū)ο驣B是通過調(diào)用findViewBWdO獲得的; (2) 當(dāng)用戶點(diǎn)擊了"Addyourcard"按鈕后,觸發(fā)了事先通過 submi1:Btn.setOnClickListenerQ注冊(cè)的系統(tǒng)回調(diào),從而觸發(fā)OnClickQ函數(shù); (3) 最終應(yīng)用通過調(diào)用IB.getTextO獲取用戶輸入的內(nèi)容; 對(duì)于每一個(gè)通過分類器獲得的敏感界面元素,本發(fā)明都對(duì)其進(jìn)行靜態(tài)信息流分析,檢 測(cè)是否存在上述代碼特征。通過靜態(tài)信息流分析,對(duì)于符合過濾條件的界面元素,其ID集 合即對(duì)應(yīng)了界面上接收非權(quán)限相關(guān)的隱私數(shù)據(jù)的界面元素集合。
[003引本發(fā)明的有益效果是:本發(fā)明將機(jī)器學(xué)習(xí)技術(shù)與傳統(tǒng)靜態(tài)信息流分析技術(shù)相結(jié)合,能有 效識(shí)別出界面中的非權(quán)限相關(guān)隱私數(shù)據(jù)源,并將其標(biāo)記為敏感數(shù)據(jù)源,從而使得傳統(tǒng)靜態(tài)信息流 分析、動(dòng)態(tài)污點(diǎn)檢測(cè)跟蹤都能夠?qū)Υ祟愲[私數(shù)據(jù)進(jìn)行追蹤和保護(hù),提高了用戶隱私數(shù)據(jù)的安全性。
【附圖說明】
[0033] 圖1 ;檢測(cè)系統(tǒng)整體架構(gòu)圖。
[0034] 圖2 ;資源文件內(nèi)容示例。
[003引 圖3 ;經(jīng)過文本預(yù)處理前后的文本內(nèi)容。
[0036] 圖4 ;從交互界面獲取用戶輸入的代碼樣例。
【具體實(shí)施方式】
[0037] 本發(fā)明設(shè)計(jì)并實(shí)現(xiàn)了上述的基于機(jī)器學(xué)習(xí)技術(shù)和靜態(tài)信息流分析技術(shù)的非權(quán)隱 私檢測(cè)系統(tǒng),本節(jié)對(duì)該框架的具體實(shí)施作一個(gè)詳細(xì)的介紹。
[0038] (1)數(shù)據(jù)預(yù)處理 本發(fā)明采用Apktool對(duì)An化oid應(yīng)用程序進(jìn)行逆向工程,Apktool是Google公司提供 的Amlroid應(yīng)用程序編譯軟件,能夠?qū)?yīng)用程序進(jìn)行反編譯,且在反編譯時(shí)能夠獲取應(yīng)用 程序內(nèi)部的各種資源文件,對(duì)于資源文件的完整性有所保證。因此本發(fā)明選取其W實(shí)現(xiàn)資 源文件提取模塊。
[0039] 對(duì)于提取后的資源文件,本發(fā)明使用Python的化TK工具包對(duì)其進(jìn)行文本預(yù)處理。 化TK工具包是自然語言處理中最為常用的工具包之一,其中所提供的停用詞過濾、詞干提 取算法,均很好的契合了本發(fā)明的需求。故選取其實(shí)現(xiàn)文本預(yù)處理模塊。
[0040] (2)隱私相關(guān)文本的分析 本發(fā)明自行編寫了Python腳本,實(shí)現(xiàn)了上述設(shè)計(jì)中的XML文件解析、模式檢測(cè)、卡方檢 驗(yàn)W及噪聲過濾功能。
[0041] 針對(duì)每一個(gè)種子詞,我們都進(jìn)行一輪的卡方檢測(cè),之后收集結(jié)果中排名前80的單 詞;在對(duì)7個(gè)種子詞完成總共7輪的卡方檢測(cè)后,共收集不重復(fù)的單詞273個(gè)。之后我們?nèi)?工去除了 45個(gè)噪聲詞。最終從13392個(gè)不同單詞中挑選出了 228個(gè)隱私相關(guān)的單詞。該 些單詞將在下一步的識(shí)別中作為特征。實(shí)現(xiàn)所選取的種子詞和最終獲取到的敏感詞列表如 表3所示。
[004引表3
(3)非權(quán)隱私相關(guān)界面元素的識(shí)別 對(duì)于Financial相關(guān)的正樣本,我們?nèi)斯?biāo)注了含有6459個(gè)界面元素的訓(xùn)練集作為補(bǔ) 充。最終,我們的訓(xùn)練集中含有24291個(gè)正樣本(其中24021個(gè)通過i噸utType屬性獲得, 270個(gè)通過人工標(biāo)注獲得)W及數(shù)量相等的負(fù)樣本。
[0043] 對(duì)于分類器的參數(shù)設(shè)置,我們選用支撐向量機(jī)SVM作為我們的分類器,通過實(shí)驗(yàn), 核函數(shù)選用次數(shù)為3的線性函數(shù),gamma值設(shè)為50。
[0044] 本發(fā)明選取python的scikit-learn工具包實(shí)現(xiàn)機(jī)器學(xué)習(xí)相關(guān)的功能。 scikit-learn中包含了對(duì)于主流數(shù)據(jù)預(yù)處理算法和主流機(jī)器學(xué)習(xí)算法的開源實(shí)現(xiàn),具有 API結(jié)構(gòu)清晰、實(shí)現(xiàn)高效等特點(diǎn)。故選取其實(shí)現(xiàn)本發(fā)明中的機(jī)器學(xué)習(xí)模塊。
[0045] (4)基于代碼靜態(tài)信息流分析的結(jié)果過濾 本發(fā)明選取FlowDroid工具對(duì)Amlroid應(yīng)用程序進(jìn)行靜態(tài)信息流分析。FlowDroid是基 于Soot框架實(shí)現(xiàn)的靜態(tài)信息流分析工具,其中包含了信息流圖構(gòu)建功能。由于FlowDroid能夠處理基于系統(tǒng)事件的回調(diào)W及界面元素,故其分析結(jié)果是準(zhǔn)確且完備的。我們將 FlowDroid的layout模式設(shè)置為"ALL"W獲得WfindViewBWdO為起始,getTextO為終 點(diǎn)的完整調(diào)用鏈。對(duì)每個(gè)界面元素而言,若其調(diào)用鏈中含有化ClickO函數(shù),即可認(rèn)為此元 素接受了用戶輸入。
【主權(quán)項(xiàng)】
1. 一種安卓應(yīng)用程序中非權(quán)限相關(guān)隱私數(shù)據(jù)的識(shí)別方法,將用戶隱私數(shù)據(jù)分為三類: 賬戶相關(guān)的認(rèn)證信息以及用戶數(shù)據(jù)、地理位置數(shù)據(jù)、金融支付類隱私數(shù)據(jù);其特征在于識(shí)別 的具體步驟分為四個(gè)階段: 一、 數(shù)據(jù)預(yù)處理,包括:提取資源文件、文本預(yù)處理;其中: 提取資源文件:首先采用Apktool對(duì)Android應(yīng)用程序進(jìn)行逆向工程,提取得到描述界 面的資源文件; 對(duì)于逆向工程后的Android應(yīng)用程序,其描述界面的XML文件散布于不同的文件夾中; 其中,用以描述用戶交互界面(UI)的布局文件位于(文件夾下;界面元素和其16 進(jìn)制ID的對(duì)應(yīng)關(guān)系存儲(chǔ)于res/Wwe/OTWic. Zffl/文件中;界面中所展示的文本即界面文 本位于/Zffl/文件中; 文本預(yù)處理:使用Python的NLTK工具包進(jìn)行文本預(yù)處理,包括文本分詞、文本過濾、詞 干提??;其中: 文本分詞:對(duì)于上述獲得的資源文件中,以變量名形式存在的文本,根據(jù)其分隔符或大 小寫對(duì)其進(jìn)行分詞;對(duì)于一些文本常量是由幾個(gè)單詞簡(jiǎn)單拼接而成的,從WordNet上獲取 詞表,并不斷從文本中切分出詞表中所能匹配到的最長(zhǎng)詞; 文本過濾:對(duì)于處理后的資源文件,去除其中的數(shù)字和符號(hào),僅保留單詞;同時(shí)去除其 中的停用詞; 詞干提?。和ㄟ^Porter詞干提取算法,剔除時(shí)態(tài)、詞性的影響,減小單詞形態(tài)變化; 二、 隱私相關(guān)文本的分析 通過設(shè)定少量"種子詞",借助卡方檢驗(yàn),提取訓(xùn)練集文本中與其相關(guān)度較高的詞,從而 擴(kuò)展敏感詞列表,獲取更加完整的隱私相關(guān)文本: 種子詞是指定一系列能夠準(zhǔn)確描述用戶隱私的詞匯;由于每個(gè)界面布局樣本文件中都 包含了界面文本,在界面文本當(dāng)中,通過判斷是否包含種子詞,以及下面的約束條件來判定 一個(gè)界面布局樣本文件是為隱私相關(guān)的界面: (1) 存在"動(dòng)詞+種子詞"的模式; (2) 存在"物主代詞+種子詞"的模式; 滿足上述兩個(gè)條件之一的界面布局樣本文件,將其標(biāo)記為隱私相關(guān)界面即正樣本,同 時(shí)由于Android系統(tǒng)允許界面布局文件相互嵌套,將其中所嵌套的其他界面布局文件也標(biāo) 記為正樣本;反之,若界面布局樣本文件未滿足這兩個(gè)條件,則標(biāo)記其為非隱私相關(guān)界面即 負(fù)樣本; 對(duì)于正樣本中出現(xiàn)的所有單詞進(jìn)行卡方檢驗(yàn),并將結(jié)果按數(shù)值從高到低進(jìn)行排序;單 詞具有高數(shù)值意味著其能夠更好的表征其所在的界面或元素是隱私相關(guān)的; 噪聲過濾:卡方檢驗(yàn)?zāi)軌蛲卣闺[私相關(guān)的詞表,卻不可避免的引入噪聲,為此,在噪聲 過濾階段引入少許人工干預(yù),通過遍歷卡方檢驗(yàn)結(jié)果剔除與隱私無關(guān)的詞匯; 三、 非權(quán)隱私相關(guān)界面元素的識(shí)別 使用機(jī)器學(xué)習(xí)的方法,基于對(duì)界面元素的文本語義分析,實(shí)現(xiàn)非權(quán)隱私相關(guān)界面元素 的自動(dòng)識(shí)別;通過訓(xùn)練集訓(xùn)練獲得分類器,對(duì)于給定的未分類界面元素,判定其文本語義是 否是與隱私相關(guān);其中包括: 特征選?。哼x取隱私相關(guān)文本分析中所挑選出的隱私相關(guān)單詞作為特征;并通過多個(gè) 單詞的組合,有效地評(píng)判一個(gè)界面是否為與隱私相關(guān);對(duì)于每個(gè)界面元素,其特征向量的長(zhǎng) 度為詞表的長(zhǎng)度,特征向量的每一維度為對(duì)應(yīng)單詞的詞頻,此處的詞頻為元素自身和其前 后兄弟節(jié)點(diǎn)的詞頻之和; 訓(xùn)練集:對(duì)于Android應(yīng)用而言,Android系統(tǒng)提供了 android: inputType屬性;在 android: inputType的取值范圍中,有一些屬性值表征了對(duì)應(yīng)輸入框?qū)⒔邮账P(guān)注的隱私 數(shù)據(jù); 對(duì)于那些具有 inputType 屬性,且屬性值包含"password","email ","postaladdress" ,"phonenumber "的元素,將其標(biāo)記為訓(xùn)練集中的正樣本;同時(shí),人工選取部分Financial相 關(guān)隱私輸入元素作為正樣本的補(bǔ)充;負(fù)樣本選取與正樣本等量,包含任意敏感詞但是不屬 于隱私相關(guān)的界面元素;; 分類器選擇:選用支持向量機(jī)SVM作為本發(fā)明的分類器; 四、基于代碼靜態(tài)信息流分析的結(jié)果過濾 對(duì)于上一步中獲得的所有界面元素,通過靜態(tài)信息流分析確定其是否真正接受用戶輸 入,進(jìn)一步剔除只具有隱私相關(guān)語義,但不具備隱私獲取能力的靜態(tài)界面元素; 過濾條件: 對(duì)于步驟三中分析得出的任意界面元素,以其唯一元素ID作為信息流分析源點(diǎn),查看 其在Android生命周期中的相應(yīng)代碼特征;如果該元素存在以getText O函數(shù)為終點(diǎn)之 一,且處在包含Onclick O函數(shù)的下游,即可判斷為該元素確實(shí)接受了用戶的數(shù)據(jù)輸入; 經(jīng)過過濾后,所獲取到符合上述代碼特征的界面元素ID集合即對(duì)應(yīng)于界面上接收非 權(quán)限相關(guān)的隱私數(shù)據(jù)的界面元素集合。2. 根據(jù)權(quán)利要求1所述的安卓應(yīng)用程序中非權(quán)限相關(guān)隱私數(shù)據(jù)的識(shí)別方法,其特征 在于采用Python的Scikit-Iearn工具包實(shí)現(xiàn)機(jī)器學(xué)習(xí)相關(guān)的功能。3. 根據(jù)權(quán)利要求1所述的安卓應(yīng)用程序中非權(quán)限相關(guān)隱私數(shù)據(jù)的識(shí)別方法,其特征 在于基于FlowDroid信息流分析工具,構(gòu)建界面元素所處的安卓生命周期上下文信息,對(duì) Android應(yīng)用程序進(jìn)行靜態(tài)信息流分析; 其中,將FlowDroid的layout模式設(shè)置為"ALL",以獲得以findViewByldO為起始, getText ()為終點(diǎn)的完整調(diào)用鏈。
【專利摘要】本發(fā)明屬于程序信息安全檢測(cè)技術(shù)領(lǐng)域,具體為安卓應(yīng)用程序中非權(quán)限相關(guān)隱私數(shù)據(jù)的識(shí)別方法。本發(fā)明方法分為數(shù)據(jù)預(yù)處理、隱私相關(guān)文本的分析、非權(quán)隱私相關(guān)界面元素的識(shí)別、基于代碼靜態(tài)信息流分析的果過濾四個(gè)階段,主要針對(duì)處于Android系統(tǒng)的權(quán)限模型的保護(hù)范圍之外的Android應(yīng)用程序中非權(quán)限相關(guān)的隱私數(shù)據(jù),將機(jī)器學(xué)習(xí)技術(shù)與傳統(tǒng)靜態(tài)信息流分析技術(shù)相結(jié)合進(jìn)行識(shí)別。通過對(duì)此類隱私數(shù)據(jù)識(shí)別,能夠?qū)⑵錁?biāo)記為敏感數(shù)據(jù)源,進(jìn)一步結(jié)合傳統(tǒng)靜態(tài)信息流分析檢測(cè)技術(shù)或者動(dòng)態(tài)污點(diǎn)信息跟蹤檢測(cè)技術(shù),為此類隱私數(shù)據(jù)的監(jiān)控和保護(hù)提供基礎(chǔ),從而降低用戶隱私數(shù)據(jù)的泄露風(fēng)險(xiǎn)。
【IPC分類】G06F21/62, G06F17/30, G06F17/27
【公開號(hào)】CN104966031
【申請(qǐng)?zhí)枴緾N201510374683
【發(fā)明人】楊珉, 楊哲慜, 南雨宏, 周順帆, 張?jiān)?
【申請(qǐng)人】復(fù)旦大學(xué)
【公開日】2015年10月7日
【申請(qǐng)日】2015年7月1日