晏 堯,王 丹,朱 璽,陳 濤,周婧婧,景小榮+
(1.國網重慶市電力公司 電力科學研究院,重慶 401123;2.重慶郵電大學 通信與信息工程學院, 重慶 400065;3.國網重慶市電力公司,重慶 400010)
移動互聯網的飛速發展和互聯網業務的日益繁榮,智能終端應用軟件數量急劇上升,而安卓作為主流平臺供應商,為移動終端用戶提供了品類齊全且功能豐富的應用軟件;然而由于軟件開發和運行環境的開放性,導致移動終端正面臨著嚴峻的信息安全挑戰。因此,非常有必要對安卓智能終端應用軟件的可信性展開深入研究。
軟件可信性(software trustworthiness,ST)作為度量軟件質量的依據,國際權威組織可信計算組織(trusted computing group,TCG)[1]將軟件可信性定義為軟件行為和結果滿足用戶預期的能力[2]。為了確保安卓應用軟件的可信性,國內外許多學者對軟件可信性評估技術展開了積極的研究。
為了評估軟件可信性,文獻[3]利用分布式軟件的交互關聯規則,采用伴隨式分布式監控機制,并織入3類檢查點來實現對軟件的可行性評估。作者在文獻[4]中給出一種基于檢查點場景信息的軟件可信性預測模型,該模型通過記錄軟件行為軌跡的場景信息,利用徑向基函數(radial basic function,RBF)神經網絡分類器根據當前檢查點的狀態來判斷軟件的可信度。利用不同系統調用所屬安全域之間的無干擾關系,文獻[5]則提出一種軟件實時可信度量方法。針對開源軟件,Okamura H等結合基于經典非齊次泊松過程的軟件可靠性增長模型(software reliability growth model,SRGM)和廣義線性模型,提出了統一的軟件可信性評估框架[6]。文獻[7]提出一種基于用戶反饋信息的軟件組件可信性度量方法。楊曦等提出一種基于社會學信任理論的軟件可信性概念模型,通過實驗論證了該模型的有效性[8];而Tao Hongwei等則采用數學規劃,將軟件可信性程度依據一定的度量準則分配給軟件的各個子屬性。文獻[10]利用軟件外在特征參數建立了一種基于隱馬爾可夫模型的軟件狀態評估方法;文獻[11]提出一種基于軟件行為軌跡矩陣的可信性評估方法。盡管上述方法或者軟件可信性評估模型對軟件可信性策略進行了一定深入的研究,但其通常使用單一屬性對軟件可信性進行評估,而實際上,每一軟件均包含多個屬性;此外,有些評估策略過多地摻雜了主管人為因素。更為重要的,上述軟件可信性評估研究大多針對嵌入式軟件或PC端軟件,無法直接遷移到安卓平臺。
在對軟件可信性評估研究現狀分析的基礎上,基于文獻[12],該文利用支持向量機(support vector machine,SVM),并結合證據理論,提出一種面向安卓應用軟件的可信性評估方法,其創新性包括:
(1)利用SVM分類算法和可信性理論中多屬性思想,使所提方法不再依賴于專家人為主觀因素;
(2)可信性評估階段,基于改進證據理論,可對應用軟件多屬性證據的預測概率賦值進行合成,從而提高可信性評估的正確率;
(3)引入熵權法確定各屬性的權重,使得對軟件的評估更為全面,同時,在一定程度上減小了證據合成過程中高沖突問題對軟件可信性評估的影響。
為了對安卓軟件可信性進行分析和研究,設計如圖1所示評估模型。該模型將對安卓軟件可信性評估,分為訓練和可信性評估兩個階段。訓練階段主要完成軟件度量,以確定軟件的4種本質屬性證據,并將其用于SVM的訓練數據集;可信性評估階段首先根據訓練好的分類模型確定與各屬性證據對應的分類概率賦值函數,進而基于熵權法確定自適應權重,接著利用改進D-S證據理論實現各屬性證據合成,最后基于此合成結果,完成對軟件的可信性評估。

圖1 軟件可信性評估模型
軟件度量涉及眾多因素,為此,文中利用智能終端軟件的基本特征來對軟件的可信性屬性進行度量。在眾多基本特征中,運行行為和性能測試又是其中最重要的。于是,文中采用不同的方法對各應用軟件進行軟件度量,以得到軟件的運行行為和性能測試的4種本質屬性證據,將其作為各SVM的訓練數據集。
1.2.1 軟件行為屬性
軟件的不同運行行為特征屬性代表軟件的不同意圖,而某些運行行為有可能導致惡意結果。這里采用DroidBox沙盒[13]來模擬安卓軟件運行環境,以Json格式記錄應用軟件運行過程中的行為觸發日志,然而通過解析其行為觸發日志記錄其行為屬性,存入行為特征數據庫,具體流程如圖2上半部所示。下面給出軟件的部分運行行為。
文件操作:終端軟件如果頻繁掃描和搜索本地用戶文件,并新建非法外部文件,極易導致敏感信息被盜用等不良后果。
隱私泄露:某些應用軟件會竊取用戶隱私信息,造成用戶隱私泄露,不法分子利用泄露的個人信息進行欺詐與騷擾等。
發送/接收短信:不可信軟件運行時,很可能確認未經用戶同意而訂閱某些付費服務,或被動接收非法短信的行為,直接給用戶帶來經濟損失。
動態加載:不可信安卓軟件可通過動態加載包含有惡意行為的dex文件并解密,對用戶安全造成威脅。

圖2 軟件4種屬性度量流程
1.2.2 性能測試屬性

既然軟件的運行行為、CPU變化、內存變化、網絡流量變化等特征屬性可用于對安卓軟件的可信性進行評估。按照圖1的評估模型,必須用不可信和可信軟件樣本集對各SVM進行訓練,來確定有效的分類模型。為了適應有監督機器學習算法SVM的訓練,必須對上述4種屬性證據進行適當處理。
運行行為屬性數據,其處理流程按照如圖3(a)進行。具體來說,先利用DroidBox將樣本集中所有軟件行為保存到行為特征數據庫,并將其與特征數據庫匹配。對于各軟件,如其軟件行為具備對應特征,則標記為1,否則標記為0,即實現軟件行為特征映射。對于內存變化、CPU變化和網絡流量變化等性能測試屬性,則通過標準化處理,使與之對應的信息矩陣滿足正態分布,從而用于對各SVM實現訓練,具體如圖3(b)所示。利用訓練好的分類模型,就可實現對待評估軟件進行可信性評估,即將其分為不可信(即軟件存在異常高風險)和可信(即軟件隱含的風險非常小)兩種狀態。

圖3 數據處理流程
然而,由于文中涉及4種具體屬性用于軟件可信性評估,如果評估時利用經典的D-S證據合成理論對4種屬性證據進行處理,則非常有可能導致沖突證據組合問題。
本節將對D-S證據理論進行改進,進而以此為基礎,提出具體的軟件可信性評估流程。
2.1.1 D-S證據理論
D-S證據理論[14]由Dempster提出,后經Shafer改進。令Θ={θ1,θ2,…,θn} 表示識別框架,則對于Θ的子集A, 函數m為集合2Θ到[0,1]的一個映射。如果m滿足下列條件

(1)
則將m定義為Θ的基本概率賦值(basic probability assignment,BPA)函數。這里m(A) 表示對命題A的支持度。假設m1、m2表示兩個證據的BPA且相互獨立,m1(A1),m1(A2),…,m1(Ai) 和m2(B1),m2(B2),…,m2(Bj) 分別為各自基本概率賦值,則根據D-S證據理論,其合成結果為
(2)
其中,系數
(3)
代表證據m1和m2的沖突程度。k越趨近1,兩個證據越接近完全沖突,此時經典的D-S合成規則將不再適用。
為此,文獻[15]和文獻[16]對證據沖突問題分別進行有意義的探索,但其效果不甚明顯。下面我們將結合熵權法,對D-S證據理論進行改進,從而降低證據合成過程中高沖突問題對軟件可信性評估的影響。
2.1.2 基于熵權法的自適應權重調整
在多屬性證據合成中,為防止某一屬性證據占主導和證據間沖突問題,可通過調整各屬性證據的權重來實現。在眾多權重調整策略中,熵權法是一種非常有效的方法。為此,我們提出結合熵權法來調整各屬性證據的權重,以便解決D-S證據理論合成中存在的缺陷。具體步驟如下:
令與n個證據對應的BPA函數為m1,m2,…,mn, 其對應的權重為w1,w2,…,wn:
步驟1 計算mi與mj的沖突系數
(4)
其中,i≠j且i,j=1,2,…,n。

(5)
其中
(6)
代表Pignistic概率函數。
步驟3 確定與第i個證據對應的互沖突矢量ki=(ki1,ki2,…kin), 按式(7)對其作歸一化處理,生成互沖突系數矩陣D, 見式(8)
(7)
(8)
步驟4 按照式(9),計算D中各行矢量的信息熵
(9)
步驟5 計算各證據的不確定度
(10)
其中,Hmax=log2(n)。
步驟6 計算各證據權重
(11)
根據上述步驟確定的權重,對各屬性證據的BPA函數進行修正,即
(12)
其中,m′i(A) 表示對mi證據修正后的BPA函數;m′i(Θ) 為不確定度。
在證據屬性合成中,上述基于熵權法的自適應權重調整過程可根據沖突情況,自適應賦予4種證據屬性權重。而對于D-S證據理論,當證據屬性接近完全相似時,kij接近于0.5。為此,在步驟2中,當kij≥0.4時,D-S證據理論沖突系數計算方法被Pignistic概率距離計算所代替。表1中的算例可說明該問題。

表1 算例

在上述分析的基礎上,表2給出基于SVM和改進證據理論的應用軟件評估方法的具體流程。
Inter(R) Core(TM) i5-7400 CPU@3.00 GHz,內存32 GB臺式機,搭載Windows10操作系統,搭載VMware虛擬機及Ubuntu-16.04.3,作為仿真平臺;利用Python3.6語言來實現編程。

表2 可信性評估方法的具體流程
樣本集包括500個可信軟件數據集,均來源于小米和Google應用平臺;300個不可信軟件數據集則由專業組織收集,且通過在線檢測和VirusTotal[18]評估。采用Python腳本和MonkeyRunner工具來模擬用戶點擊操作。此外,為了避免軟件啟動時對各參數的影響,實驗中僅選擇中間段數據;設置各測試應用軟件在DroidBox中運行時長均為3 min。
需要說明的是,本文提出的方法及測試過程主要針對安卓應用軟件,主要表現為其軟件狀態參數及特性,對于其它系統軟件還需做進一步分析與研究。
圖4給出分別采用單一屬性,經典D-S證據合成和改進D-S證據合成進行應用軟件可信性評估的結果。同時,表3給出了與兩種測量對應的部分評估結果的可信和不可信概率賦值對比,包括各屬性證據對應的概率賦值與D-S證據理論合成。

圖4 采用不同屬性進行可信性評估結果對比

表3 軟件各屬性證據BPA對比
由圖4和表3,可知:
(1)相比于使用單一屬性,本文采用多屬性度量進行軟件可信性評估的效果更加全面和客觀;同時,表3中對各屬性的概率賦值對比進一步說明采用改進D-S證據合成的有效性。
(2)相比傳統D-S證據合成,基于熵權的改進證據合成方法可明顯地改善軟件可信性評估的性能;同時,從側面也說明,在多證據屬性合成中,設置自適應權重,在一定程度上可規避高沖突證據合成帶來的不利影響。
圖5展示了檢測準確率隨證據屬性數量變化的情況。在圖5中,最低準確率和最高準確率分別表示不同數量的屬性證據的對應組合結果。從圖中可知,軟件可信性評估的準確性隨著軟件屬性證據數量的增加而提高;完全利用4個屬性證據時,評估效果最佳。

圖5 準確率隨屬性合成個數的變化
3.3.1 定量對比
基于某一典型可信應用軟件,對改進D-S證據合成理論的有效性進行定量分析,與該應用對應的4個屬性證據的BPA(m1,m2,m3,m4) 見表4。

表4 某典型可信軟件各屬性證據BPA
根據表4,屬性證據3顯然存在高沖突。針對該典型可信應用軟件,在不同屬性證據組合(m1和m2、m1,m2和m3、m1,m2,m3,m4) 下,圖6給出Yager組合規則[16]、Murphy組合規則[17]、經典D-S證據合成及改進D-S證據合成方法的可信識別結果。
由于屬性證據m1和m2之間沖突較小,因此這4種證據合成規則具有相同的評估結果。對屬性證據組合m1,m2和m3, 其中屬性證據m3為高沖突證據,Murphy組合規則對沖突屬性采用平均化處理,Yager組合規則將沖突屬性賦予一不確定項,經典D-S方法直接進行合成,而本文方法則依據互沖突程度,給予屬性證據m1,m2,m3不同的權重因子,使高沖突屬性證據m3的影響得以降低,從而提高了評估的準確度。對于m1,m2,m3,m4組合,隨屬性證據m4的參與,高沖突證據m3的權重將更低,使其對評估結果的影響變得更小,因此,對于m1,m2,m3,m4組合,其可信度識別概率改善明顯,但本文所提方法的可信度識別率最高。

圖6 不同組合規則的對比
3.3.2 定性對比
在現有文獻中,面向安卓應用軟件的研究相對較少,因此,該小節結合PC軟件部分相關文獻,從軟件屬性、評估方法、數據處理形式及適應場合等4個方面,進行定性對比,結果見表5。

表5 軟件可信性定性對比
由表5知,對于軟件屬性,文獻[11]利用場景信息的時間點、CPU、內存和其各自的變化率,文獻[19]則基于移植性、維護性和易操作性等方面的度量,總之,其僅基于軟件的直觀性能;而本文方法除此之外,還考慮了應用軟件潛在行為等細粒度屬性,因而對軟件可信性的檢測則更為細致。
由表5知,對于數據處理,文獻[11]默認各屬性權重相同;文獻[19]則融合信息熵和模糊層次法賦予各屬性權重,再與設定閾值相比較來決定軟件可信性。也就說,文獻[11]和文獻[19]中方法依賴主管因素,而本方法卻很好地規避了此缺點。
由表5知,對于可信性評估,文獻[11]和文獻[19]均采用與固定閾值對比,即由單個結果決定,因而,無法全面地反映應用軟件的可信性。而文中方法則基于多屬性訓練,進而結合多屬性融合與決策,能夠全面且客觀評估軟件的可信性。
還有,對于適應場合,3種方法均需運行環境,然而本文方法融入了細粒度的軟件運行行為分析,評估的范圍則更全面。
本文結合SVM和改進證據理論,針對安卓軟件平臺,提出一種軟件可信性評估方法。該方法首先利用樣本軟件集的4種屬性證據,對SVM分類器進行訓練,進而針對待評估軟件,確定其不同屬性的BPA;最后,結合基于熵權法的自適應權重和改進的證據合成理論,完成對待評估應用軟件的可信性評估。該方法在實現過程中,由于基于機器學習類算法來確定BPA,因此有效地規避了認為因素的影響;同時,由于基于應用軟件的多種屬性證據,又融入了自適應權重調整,使得對軟件的評估更為全面。大量的實驗數據驗證了本文方法的有效性。下一步工作將重點對軟件屬性進行更細粒度上的可信性劃分。