第三章、 方法介紹
3.2 實作方法
3.2.1 permission 分類
Android 內定的 permission 主要是保護系統提供的資源,主要可以分成三 大部分:
3.2.2 permission 使用頻率以及危險指數計算
前一節中的分類只是將所有的 permission 影響的部份整理出來,我們希 望利用一些統計的數據幫助使用者判斷 permission 是否合適。由於 permission 代表的是手機的功能和使用到的個人資訊,我們希望能蒐集資料,比較出來 功能較為特殊或是利用較多個人資訊的 app,在使用者安裝這些 app 的時候提 出建議,提醒使用者再次檢查 app 的來源以及使用的資源。
我們蒐集 app,建立各個 permission 出現的頻率,使用者輸入 app 所需的
14
permission 時,我們可以由蒐集的 app 中統計出現率較低的 permission 警告使 用者注意。
此外,我們想計算出一個危險指數(risk index)代表這個 app 危險的程度,
危險指數越高代表 app 和其他 app 比較起來,使用較多的手機資源或是取得 較多的個人資訊。常出現的 permission 就給他比較低的權重(weight),代表這 個 permission 是 normal 的,比較少出現的 permission 則有比較高的權重,代 表其功能較為特殊,不是一般程式會利用到的。
因為以上理由,所以我們給每個 permission 一個權重,和他的出現頻率 相反,出現率越高權重越低,然後我們利用距離公式計算 app 的危險指數, 望藉由使用者提供我們程式功能的類別(type),更詳細的分析 permission 是否合 理。
3.2.3 permission 與類別
利用 data mining 的方法,建立 type 間的判斷準則,協助使用者判斷。我 們將各類程式兩兩一組,利用 data mining 中分類(Classification)演算法,由機 器去找出判斷這兩類數據的準則,利用這個結果以及使用者提供的類型,我 們可以協助建議是否有不合適的 permission。下面介紹使用的分類演算法概念 以及如何利用結果。
15
Support Vector Machines(SVM)是一種分類演算法,由 Boser et al. (1992) [11]根據統計學習理論提出的一種機器學習方法。簡單來說,SVM 想要解決以 下的問題:找出一個超平面(hyperplane),使之將兩個不同的集合分開。為什 麼使用超平面這個名詞,因為實際資料可能是屬於高維度的資料,而超平面 意指在高維中的平面。
以二維的例子來說,如上圖,我們希望能找出一條線能夠將圓點和方點 分開,而且我們還希望這條線距離這兩個集合的邊界(margin)越大越好(即圖中 兩條黑色實線距離),這樣我們才能夠很明確的分辨這個點是屬於那個集合。
接下來我們將用更數學一點的方式來描述上面的問題,假設我們有一堆 點集合{xi,yi},i=1,…,n,xi=Rd,yi=+1、-1。點集合是我們所選出來的兩類 app’s record,Xi代表的是所宣告的 permission 情況(例如 X1=(1,0,0,1)代表 app1 使用 了第 1 跟的 4 個 permission,而現實情況這個向量會是多維的),yi則代表著我 們所選出來的兩類(一類的 app 全部設為 1,另一類全設為-1)。我們希望能找 到一條直線f(x) = 𝑤𝑇x − b,使得所有 yi=1 的點落在 f(x)>0 這一邊,yi=-1 則落 在另一邊,這個直線中的 w 向量就可以幫助我們判斷 permission 應該是屬於 哪一類。其中 wk>0,則代表 permission k 較具有 yi=1 這一類的特性,wk<0,
則代表 permission k 較具有 yi=-1 這一類的特性。
因此利用此方法,我們將資料庫中每兩類一組做一次這個方法,當使用 者輸入一個 app 以及類別 t 時,我們將類別 t 和其他各類所產生的f(x)來做分 析,是否此 app 有用到具有其他類別 t’特性的 permission,可以警告使用者此 app 應該具有 t’的功能,否則可能是用了不適當的 permission。
圖 10 SVM 數學示意圖
16