周翰遜,陳晨,馮潤澤,熊俊坤,潘宏,郭薇
(1.遼寧大學信息學院,遼寧 沈陽 110036;2.遼寧大學數(shù)字經(jīng)濟研究院,遼寧 沈陽 110036;3.沈陽航空航天大學計算機學院,遼寧 沈陽 110135)
移動網(wǎng)絡的快速發(fā)展,使接入移動網(wǎng)絡的移動設備的數(shù)量猛增。與此同時,移動用戶越來越多地面臨來自惡意軟件等的嚴重威脅[1]?,F(xiàn)代移動設備與電子商務、個人支付和社交通信等相關應用的關系日益密切,因此關注移動設備的安全問題變得尤為重要[2]。
移動惡意軟件檢測是構建移動網(wǎng)絡防御體系的重要一環(huán)[3-4]。近年來,針對移動惡意軟件檢測的研究方法不斷涌現(xiàn)。Khatri 等[5]開發(fā)出一種基于移動網(wǎng)絡的惡意軟件檢測系統(tǒng),用于檢測網(wǎng)絡中的惡意活動,保護最終用戶免受移動惡意軟件的攻擊。Adeel 等[6]提出了基于感染節(jié)點行為的移動惡意軟件分類方法。Moghaddam[7]將基于分類的Android惡意軟件檢測技術的靜態(tài)特征劃分為相關的類別,并研究這些靜態(tài)特征對Android 惡意軟件檢測效率的影響。Tripp 等[8]為Android 創(chuàng)建了一個惡意軟件檢測系統(tǒng)——MASSDROID,通過可擴展的數(shù)據(jù)流分析形式從調用圖中收集安全相關操作的痕跡,然后傳送到監(jiān)督學習引擎以獲得惡意/良性分類。Nguyen 等[9]提出了一種基于網(wǎng)絡行為的SDN 移動設備惡意軟件檢測系統(tǒng),該系統(tǒng)由IP 黑名單、連接成功率、連接速率3 種算法組成,以更有效和靈活的方式開發(fā)惡意軟件檢測方法。但是,這些工作的根本問題在于無法擺脫對于特征工程的依賴。也就是說,這些工作所提出的移動惡意軟件檢測方法的優(yōu)劣很大程度上取決于特征提取技術的好壞。
為了解決特征工程的依賴問題,基于深度學習的移動惡意軟件檢測方法逐漸引起學術界的關注。Li 等[10]使用基于深度學習的方法來檢測Android 惡意軟件,并開發(fā)了自動檢測引擎來檢測惡意應用程序。Yuan 等[11]提出了一個基于深度學習的在線Android 惡意軟件檢測引擎(DroidDetector),它可以自動檢測應用程序是否是惡意軟件,并使用數(shù)千款Android 應用測試了DroidDetector。Kim 等[12]提出了一種多模態(tài)深度學習方法來檢測移動惡意軟件,它使用基于相似性的特征提取方法來細化特征,以便在惡意軟件檢測上進行有效的特征表示。Su等[13]提出一種基于深度學習模型的Android平臺的惡意軟件檢測方法——DroidDeep,它可以從Android 應用程序的靜態(tài)分析中構建深度學習模型。然而,這些工作僅僅照搬已經(jīng)成功應用在其他領域(例如計算機視覺、自然語言處理)的深度學習理論,沒有考慮移動惡意軟件攻擊的特點,例如惡意軟件在移動流量方面通常會在感染后的5 min突然激增[14],導致這些工作所提出的移動惡意軟件檢測方法的檢測效果無法取得顯著提高。
為了結合深度學習模型和移動惡意軟件流量方面的特點,本文提出基于值導數(shù) GRU(value-derivative gated recurrent unit)的移動惡意軟件流量檢測方法來捕獲移動惡意流量的動態(tài)變化信息和關鍵信息。通過引入“累計狀態(tài)變化”,值導數(shù)GRU 算法能夠同時定量地描述移動網(wǎng)絡惡意流量的低階和高階變化信息。此外,通過增設池化層使值導數(shù)GRU 算法獲取流量的重要信息。實驗結果表明,基于值導數(shù)GRU 的移動惡意軟件流量檢測方法比GRU 算法擁有更高的準確率。
循環(huán)神經(jīng)網(wǎng)絡(RNN,recurrent neural network)[15]是一種處理序列數(shù)據(jù)的深度神經(jīng)網(wǎng)絡。通過在相鄰時間步的隱層單元之間引入循環(huán)連接,RNN 能夠有效地利用歷史信息來執(zhí)行當前決策。但是,經(jīng)過多階段傳播的RNN 梯度傾向于消失或爆炸,導致RNN 喪失學習長期依賴的能力,這種現(xiàn)象被稱作梯度消失與爆炸[16]。
與 RNN 不同,長短期記憶(LSTM,long short-term memory)[17]不僅具有外部的隱層單元循環(huán),而且具有內部的記憶細胞循環(huán)。此外,LSTM是一種擁有3 個特殊門控系統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡,3個門控系統(tǒng)分別被稱作遺忘門、輸入門、輸出門。然而,復雜的門控系統(tǒng)要求LSTM 擁有大量的網(wǎng)絡參數(shù),導致LSTM 的訓練代價居高不下。
為了解決RNN 的梯度消失與爆炸問題、降低LSTM 居高不下的訓練代價,Cho 等[18]提出了一種新型循環(huán)神經(jīng)網(wǎng)絡——門控循環(huán)單元(GRU,gated recurrent unit)。相比于RNN 和LSTM,GRU 擁有相似而不同的設計模式。
1)每個時間步的隱層單元擁有2 個輸入:前一個時間步隱層單元的輸出和當前時間步的輸入。
2)相鄰時間步的隱層單元之間存在循環(huán)連接,隱層狀態(tài)從前一個時間步的隱層單元流入后一個時間步的隱層單元。
3)每個時間步的隱層單元擁有2 個門控系統(tǒng),分別被稱作更新門和重置門。
GRU 隱層單元結構如圖1 所示。其中,xt表示時間步t的輸入,st-1表示時間步t-1 的隱層狀態(tài),st表示時間步t的隱層狀態(tài),ut表示時間步t的更新門,rt表示時間步t的重置門。對于與時間步t關聯(lián)的隱層單元而言,它的輸入不僅包括當前時間步t的輸入xt,還包括上一個時間步t-1 的隱層單元的輸出st-1。
圖1 門控循環(huán)單元的隱層單元
在GRU 隱層單元中,更新門ut和重置門rt共同決定隱層狀態(tài)st的更新和重置,其計算式為
其中,ct表示時間步t的候選隱層狀態(tài),其計算式為
更新門ut和重置門rt能夠獨立地忽略候選隱層狀態(tài)ct和上一隱層狀態(tài)st-1。隱層狀態(tài)st-1和輸入xt共同控制更新門ut和重置門rt,經(jīng)過激活函數(shù)sigmoid 壓縮之后輸出一個[0,1]內的值,用于表示更新門ut和重置門rt的激活程度。特別地,當激活函數(shù)sigmoid 輸出0 時,更新門ut選擇完全保留候選隱層狀態(tài)ct,重置門rt選擇完全忽略上一隱層狀態(tài)st-1;當激活函數(shù)sigmoid 輸出1 時,更新門ut選擇完全忽略候選隱層狀態(tài)ct,重置門rt選擇完全保留上一隱層狀態(tài)st-1。更新門ut和重置門rt的計算式分別為
式(1)~式(4)中,Wxu、Wxr、Wxc分別表示輸入單元到更新門、重置門以及隱層單元的權重矩陣,Wsu、Wsr、Wsc分別表示隱層單元到更新門、重置門以及隱層單元的權重矩陣,bu、br、bc分別表示更新門、重置門以及隱層單元的偏置,⊙表示2 個變量按照對應元素相乘。
在數(shù)學中,導函數(shù)(或稱導數(shù))用于描述某一函數(shù)在定義域上每一點的變化趨勢。也就是說,導函數(shù)可以定量地反映函數(shù)在定義域上每一點的局部變化程度。因此,函數(shù)與導函數(shù)的乘積(本文稱之為值導數(shù))可以反映函數(shù)在定義域上每一點的絕對變化程度。正是基于值導數(shù)這個數(shù)學概念,本文提出值導數(shù)GRU 算法。
基于GRU 的移動惡意軟件流量檢測算法通過利用循環(huán)連接的GRU 隱層單元可以記憶移動網(wǎng)絡流量的完整靜態(tài)信息。正如前文所述,隱層單元結構決定了GRU 算法只能控制移動網(wǎng)絡流量的流動,無法捕獲移動網(wǎng)絡流量的動態(tài)變化信息。由于惡意軟件的移動流量通常會在感染后的5 min 內突然激增,因此,本文引入的值導數(shù)GRU 算法既要考慮移動網(wǎng)絡流量的靜態(tài)信息,又要考慮移動網(wǎng)絡流量的動態(tài)變化信息。通過捕獲移動網(wǎng)絡流量的靜態(tài)和動態(tài)信息,提高值導數(shù)GRU 算法對于移動網(wǎng)絡惡意流量的檢測準確率。
值導數(shù)GRU 隱層單元結構如圖2 所示。其中,xt表示時間步t的輸入,st-1表示時間步t-1 的隱層狀態(tài),st表示時間步t的隱層狀態(tài),ut表示時間步t的更新門,rt表示時間步t的重置門。通過在隱層單元內部增設更新門ut和重置門rt這2 個門控系統(tǒng),值導數(shù)GRU 算法可以選擇性地記憶或遺忘移動網(wǎng)絡流量。也就是說,當移動網(wǎng)絡流量流入隱層單元時,更新門ut和重置門rt可以獨立地控制是否可以通過以及可以通過多少移動網(wǎng)絡流量。為了保證更新門ut和重置門rt能夠定量地控制可以通過的移動網(wǎng)絡流量,隱層單元引入一階狀態(tài)變化,用于描述時間步t時移動網(wǎng)絡流量的一階動態(tài)變化。當網(wǎng)絡空間遭受攻擊時,伴隨著移動網(wǎng)絡異常流量的持續(xù)增加,一階狀態(tài)變化的值將顯著增長,更新門ut和重置門rt的激活程度隨之增大,進而能夠定量地保留大部分移動網(wǎng)絡流量;當網(wǎng)絡空間正常運行時,由于內部幾乎不存在移動網(wǎng)絡異常流量,一階狀態(tài)變化的值將趨于平穩(wěn)且接近于0,更新門ut和重置門rt的激活程度隨之減小,此時僅僅定量地保留小部分移動網(wǎng)絡流量。
圖2 值導數(shù)GRU 的隱層單元
在值導數(shù)GRU 隱層單元中,時間步t時更新門ut和重置門rt的計算式分別為
更新門ut和重置門rt均選取函數(shù)sigmoid 作為激活函數(shù),輸出一個[0,1]內的值,用于表示更新門ut和重置門rt的激活程度。也就是說,當函數(shù)sigmoid輸出0 時,更新門ut和重置門rt不允許任何移動網(wǎng)絡流量信息通過;當函數(shù)sigmoid 輸出1 時,更新門ut和重置門rt允許所有移動網(wǎng)絡流量信息通過;當函數(shù)sigmoid 輸出一個(0,1)內的值時,更新門ut和重置門rt選擇記憶一部分移動網(wǎng)絡流量信息,遺忘另一部分移動網(wǎng)絡流量信息。
在時間步t時,隱層狀態(tài)st的計算式為
其中,ct表示時間步t的候選隱層狀態(tài),其計算式為
重置門rt側重于保留上一隱層狀態(tài)st-1,更新門ut側重于忽略上一隱層狀態(tài)st-1以及保留候選隱層狀態(tài)ct,更新門ut和重置門rt共同決定隱層狀態(tài)st。
在式(5)~式(8)中,Wxu、Wxr、Wxc分別表示輸入單元到更新門、重置門以及隱層單元的權重矩陣,Wsu、Wsr、Wsc分別表示隱藏單元到更新門、重置門以及隱層單元的權重矩陣,bu、br、bc分別表示更新門、重置門以及隱層單元的偏置。
此外,在式(5)和式(6)中,本文分別設置n個矩陣W(1)xu,W(2)xu,…,W(n)xu和W(1)xr,W(2)xr,…,W(n)xr用于控制一階狀態(tài)變化,二階狀態(tài)變化,…,n階狀態(tài)變化的權重。在值導數(shù)GRU 算法的訓練過程中,權重矩陣W(1)x*,W(2)x*,…,W(n)x*隨之動態(tài)更新,進而動態(tài)控制更新門ut和重置門rt的激活程度,保證值導數(shù)GRU算法能夠動態(tài)捕獲移動網(wǎng)絡異常流量的低階或高階動態(tài)變化信息。通過捕獲這些不同的累計狀態(tài)變化,值導數(shù)GRU 算法能夠準確地判定相應的移動網(wǎng)絡異常流量。綜上所述,值導數(shù)GRU 算法正是基于動態(tài)更新的權重矩陣W(1)x*,W(2)x*,…,W(n)x*和不盡相同的累計狀態(tài)變化完成移動惡意軟件流量檢測。
由于網(wǎng)絡入侵攻擊的行為與正常網(wǎng)絡行為不同,而且最大的不同之處在于網(wǎng)絡攻擊的某些關鍵步驟。例如,掃描蠕蟲首先通過掃描網(wǎng)絡發(fā)現(xiàn)漏洞主機,然后進行漏洞攻擊。因此,這些關鍵信息能夠作為一個核心因素來區(qū)分正常的移動網(wǎng)絡流量以及不同類型的攻擊。為了捕獲移動網(wǎng)絡異常流量的關鍵信息,本文添加池化層來調節(jié)值導數(shù)GRU 算法。
池化層結構如圖3 所示。其中,左側區(qū)域表示值導數(shù)GRU 隱層單元結構,中間區(qū)域表示隱層單元的輸出,右側區(qū)域表示池化層。對于時間步t而言,與之關聯(lián)的值導數(shù)GRU 隱層單元的輸出向量完全輸入池化層?;谥祵?shù)GRU 算法的池化層使用每個時間步t的輸出向量的總體特征代替最后一個時間步的輸出向量的局部特征。
通過保留所有時間步的輸出向量對應位置的最大元素,池化層可以獲得最佳匹配結果,本文選取max 函數(shù)作為池化層函數(shù)。池化層向量計算式為
其中,vs表示所有時間步的輸出向量的第s個位置的最大元素,sts表示時間步t的輸出向量的第s個位置的元素。
圖3 池化層結構
對于連續(xù)問題而言,微分能夠準確地描述單變量函數(shù)(本文僅僅考慮隱層狀態(tài)這一個因素)的函數(shù)值y隨變量x的變化而變化的關系,導函數(shù)是。然而,計算機硬件的物理特性決定了計算機無法解決連續(xù)問題,只能夠處理離散數(shù)據(jù)。因此,本文借助微分的離散形式,即差分來計算一階狀態(tài)變化和二階狀態(tài)變化,具體計算式為
通過把時間與時間步聯(lián)系起來,GRU 算法已經(jīng)成功應用在計算機視覺、自然語言處理等領域。例如,對于視頻分類任務而言,GRU 算法通常將視頻的一幀與一個時間步關聯(lián)。此時,相鄰時間步之間存在等長時間間隔,即相鄰幀之間的時間差值。對于基于值導數(shù)GRU 的移動惡意軟件流量檢測算法而言,本文將移動網(wǎng)絡流量數(shù)據(jù)分組的間隔時間與時間步關聯(lián)起來,此時相鄰時間步之間存在變長時間間隔,即相鄰移動網(wǎng)絡流量數(shù)據(jù)分組之間的時間差值。因此,一階狀態(tài)變化和二階狀態(tài)變化的具體計算式為
其中,Δt1表示s1、s2代表的移動網(wǎng)絡流量數(shù)據(jù)分組的時間差值,Δt2表示s2、s3代表的移動網(wǎng)絡流量的時間差值。
在值導數(shù)GRU 訓練過程中,本文采用信息論中的交叉熵來刻畫預測向量y? 和真實向量y之間的距離。交叉熵代價函數(shù)可以量化預測向量y? 和真實向量y之間偏差,它是一個非負實值函數(shù),代價函數(shù)值越小,值導數(shù)GRU 算法的穩(wěn)健性就越好。交叉熵代價函數(shù)表示為
其中,N表示樣本數(shù)目。本文選擇截斷BPTT 算法對于GRU 算法進行訓練:如果值導數(shù)GRU 算法樣本預測值與樣本實際值之間的誤差越大,那么在隨時間反向傳播的過程中,各種參數(shù)調整的幅度就要更大,從而使訓練更快收斂。訓練過程如算法1所示。
算法1值導數(shù)GRU 算法的訓練過程
輸入data,label
fromt=1 tot=T:
1)執(zhí)行式(10)、式(13)和式(14),計算累計狀態(tài)變化;
2)執(zhí)行式(5),計算更新門ut;
3)執(zhí)行式(6),計算重置門rt;
4)執(zhí)行式(7)和式(8),計算隱層狀態(tài)st;
5)output=max_pooling(s1,…,sT)
6)predict=softmax(output)
7)loss=cross entropy(predict,label),交叉熵計算式為式(15)
8)gradient descent(loss)
抽象而言,GRU 和值導數(shù)GRU 均用于模擬人腦記憶細胞。人腦擁有數(shù)以億計的神經(jīng)元細胞,一部分神經(jīng)元細胞擁有記憶靜態(tài)實體的功能,另一部分神經(jīng)元細胞擁有記憶動態(tài)實體的功能。相比于GRU 模擬記憶靜態(tài)實體的神經(jīng)元細胞而言,值導數(shù)GRU 主要用于模擬記憶動態(tài)實體的神經(jīng)元細胞。因此,值導數(shù)GRU 能夠有效地捕獲移動網(wǎng)絡異常流量的動態(tài)變化信息。
為了準確評估值導數(shù)GRU 算法捕獲移動惡意軟件流量的動態(tài)變化信息和關鍵信息的能力,本文基于深度學習框架TensorFlow 實現(xiàn)值導數(shù)GRU 算法,并且選取CICAndMal2017 數(shù)據(jù)集進行仿真實驗。此外,本文將CICAndMal2017 數(shù)據(jù)集劃分為訓練集、驗證集和測試集3 個獨立數(shù)據(jù)集,并且進行十折交叉驗證。
CICAndMal2017 數(shù)據(jù)集分為移動惡意軟件流量和移動良性軟件流量2 類,其中移動惡意軟件流量包括42 種不同的惡意軟件流量。為了準確地評估值導數(shù)GRU 算法檢測移動惡意軟件流量的能力,本文進行二分類的實驗。在實驗中,移動惡意軟件流量(包括Dowgin,Ewind,…,Zsone 共42 種)的具體行為是“abnormal”,移動良性軟件流量(Benign)的具體行為是“normal”。此外,為了準確評估值導數(shù)GRU 算法檢測未知移動惡意軟件流量的能力,本文進行的算法仿真實驗包括已知移動惡意軟件流量檢測和未知移動惡意軟件流量檢測。對于已知移動惡意軟件流量檢測實驗而言,訓練集、驗證集和測試集均擁有移動惡意軟件流量(42 種移動惡意軟件流量)和移動良性軟件流量;對于未知移動惡意軟件流量檢測實驗而言,訓練集、驗證集擁有隨機的32 種移動惡意軟件流量和移動良性軟件流量,測試集擁有42 種移動惡意軟件流量和移動良性軟件流量。此外,本文分別獨立地進行累計狀態(tài)變化、隱藏層以及池化層的實驗,以此驗證這3 個因素對于值導數(shù)GRU 算法性能的影響。
通過引入準確率Accuracy 這個衡量指標,本文可以定量地評估值導數(shù)GRU 算法檢測移動惡意軟件流量的能力。準確率的計算式為
其中,TP 表示正確檢測的移動惡意軟件流量的數(shù)目,TN 表示正確檢測的移動良性軟件流量的數(shù)目,F(xiàn)N 表示錯誤檢測的移動惡意軟件流量的數(shù)目,F(xiàn)P表示錯誤檢測的移動良性軟件流量的數(shù)目。
本節(jié)主要研究累計狀態(tài)變化對于值導數(shù)GRU算法性能的影響。在單層隱藏層和忽略池化層的條件下,分別對一階、二階和三階累計狀態(tài)變化的值導數(shù)GRU 算法進行相關實驗。
4.1.1 已知移動惡意軟件流量檢測
本節(jié)主要通過二分類實驗評估值導數(shù)GRU算法檢測已知移動惡意軟件流量的能力,實驗結果如表1 所示。對于二分類實驗而言,RNN 的測試集準確率大約是86%,LSTM、GRU 的測試集準確率大約是91%,值導數(shù)GRU 算法的測試集準確率超過95%。此外,對于值導數(shù)GRU 算法本身而言,一階累計狀態(tài)變化的值導數(shù)GRU算法的測試集準確率分別是95.46%,二階累計狀態(tài)變化的值導數(shù)GRU 算法的測試集準確率分別是95.91%,三階累計狀態(tài)變化的值導數(shù)GRU算法的測試集準確率分別是96.89%。因此,對于已知移動惡意軟件流量檢測而言,值導數(shù)GRU算法相比于RNN、LSTM、GRU 擁有較高的驗證集和測試集準確率,同時三階累計狀態(tài)變化的值導數(shù)GRU 算法擁有最高的驗證集和測試集準確率。
表1 已知移動惡意軟件流量檢測準確率
已知移動惡意軟件流量檢測實驗的訓練結果如圖4 所示。其中,圖4 中的橫坐標表示模型訓練的迭代次數(shù),圖4(a)、圖4(b)、圖4(c)分別是二分類實驗的一階、二階、三階累計狀態(tài)變化的值導數(shù)GRU算法的驗證集和訓練集準確率曲線;圖4(d)、圖4(e)、圖4(f)分別是相應的訓練集代價曲線。對于二分類實驗而言,一階、二階、三階累計狀態(tài)變化的值導數(shù)GRU 算法的初始驗證集和訓練集的準確率均是80%,初始訓練集代價均是1 000。經(jīng)過大約100次迭代之后,算法的驗證集和訓練集的準確率上升到97.5%以上,訓練集代價下降至150。經(jīng)過大約500 次迭代之后,算法趨于穩(wěn)定。
4.1.2 未知移動惡意軟件流量檢測
圖4 已知移動惡意軟件流量檢測的訓練結果
本節(jié)主要通過二分類實驗評估值導數(shù)GRU 算法檢測未知移動惡意軟件流量的能力,實驗結果如表2 所示。RNN 的測試集準確率是79.51%,LSTM的測試集準確率是90.70%,GRU 的測試集準確率是90.07%,值導數(shù)GRU 算法的測試集準確率超過94%。此外,對于值導數(shù)GRU 算法本身而言,一階累計狀態(tài)變化的值導數(shù)GRU 算法的測試集準確率是94.26%,二階累計狀態(tài)變化的值導數(shù)GRU 算法的測試集準確率是95.73%,三階累計狀態(tài)變化的值導數(shù)GRU 算法的測試集準確率是96.03%。因此,對于未知移動惡意軟件流量檢測而言,值導數(shù)GRU 算法相比于RNN、LSTM、GRU 擁有較高的驗證集和測試集準確率,同時三階累計狀態(tài)變化的值導數(shù)GRU 算法擁有最高的驗證集和測試集準確率。
表2 未知移動惡意軟件流量檢測準確率
未知移動惡意軟件流量檢測實驗的訓練結果如圖5 所示。其中,圖5 中的橫坐標表示模型訓練的迭代次數(shù)。一階、二階、三階累計狀態(tài)變化的值導數(shù)GRU 算法的初始驗證集和訓練集的準確率均是83%,初始訓練集代價均是700。經(jīng)過大約150個迭代之后,算法的驗證集準確率上升到96%,訓練集代價均下降至350。經(jīng)過大約400 個迭代之后,算法趨于穩(wěn)定。
圖5 未知移動惡意軟件流量檢測的訓練結果
由于下文實驗的驗證集、測試集準確率曲線與訓練集代價曲線和上述實驗曲線相似,鑒于篇幅所限不再贅述。
本節(jié)主要研究隱藏層對于值導數(shù)GRU 算法性能的影響。在一階累計狀態(tài)變化和忽略池化層的條件下,分別對一層、三層和五層隱藏層的值導數(shù)GRU 算法進行相關實驗。
4.2.1 已知移動惡意軟件流量檢測
本節(jié)主要通過二分類實驗評估值導數(shù)GRU 算法檢測已知移動惡意軟件的能力,實驗結果如表3所示。對于值導數(shù)GRU 算法本身而言,一層隱藏層的值導數(shù)GRU 算法的測試集準確率是95.46%,三層隱藏層的值導數(shù)GRU 算法的測試集準確率是96.53%,五層隱藏層的值導數(shù)GRU 算法的測試集準確率是96.62%。因此,對于已知移動惡意軟件流量檢測而言,值導數(shù)GRU 算法相比于RNN、LSTM、GRU 擁有較高的驗證集和測試集準確率,同時五層隱藏層的值導數(shù)GRU 算法擁有最高的驗證集和測試集準確率。
4.2.2 未知移動惡意軟件流量檢測
本節(jié)主要通過二分類實驗評估值導數(shù)GRU算法檢測未知移動惡意軟件流量的能力,實驗結果如表4 所示。對于值導數(shù)GRU 算法本身而言,一層隱藏層的值導數(shù)GRU 算法的測試集準確率是94.26%,三層隱藏層的值導數(shù)GRU 算法的測試集準確率是95.76%,五層隱藏層的值導數(shù)GRU算法的測試集準確率是96.13%。因此,對于未知移動惡意軟件流量檢測而言,值導數(shù)GRU 算法相比于RNN、LSTM、GRU 擁有較高的驗證集和測試集準確率,同時五層隱藏層的值導數(shù)GRU 算法擁有最高的驗證集和測試集準確率。
表4 未知移動惡意軟件流量檢測準確率
本節(jié)主要研究池化層對于值導數(shù)GRU 算法性能的影響。在一階累計狀態(tài)變化和單層隱藏層的條件下,分別對于增設、忽略池化層的值導數(shù)GRU算法進行相關實驗。
4.3.1 已知移動惡意軟件流量檢測
本節(jié)主要通過二分類實驗評估值導數(shù)GRU 算法檢測已知移動惡意軟件流量的能力,實驗結果如表5 所示。對于值導數(shù)GRU 算法本身而言,增設池化層的值導數(shù) GRU 算法的測試集準確率是94.28%,忽略池化層的值導數(shù)GRU 算法測試集準確率是95.46%。因此,對于已知移動惡意軟件流量檢測而言,值導數(shù)GRU 算法相比于RNN、LSTM、GRU 擁有較高的驗證集和測試集準確率,但是,池化層不能提高值導數(shù)GRU 算法檢測已知移動惡意軟件流量的準確率。
表5 已知移動惡意軟件流量檢測準確率
4.3.2 未知移動惡意軟件流量檢測
本節(jié)主要通過二分類實驗評估值導數(shù)GRU 算法檢測未知移動惡意軟件流量的能力,實驗結果如表6 所示。對于值導數(shù)GRU 算法本身而言,增設池化層的值導數(shù) GRU 算法的測試集準確率是95.34%,忽略池化層的值導數(shù)GRU 算法的測試集準確率是94.26%。因此,對于未知移動惡意軟件流量檢測而言,值導數(shù)GRU 算法相比于RNN、LSTM、GRU 擁有較高的驗證集和測試集準確率,同時增設池化層的值導數(shù)GRU 算法擁有最高的驗證集和測試集準確率。
表6 未知移動惡意軟件流量檢測準確率
本節(jié)主要研究綜合累計狀態(tài)變化、隱藏層和池化層3 個因素對于值導數(shù)GRU 算法性能的影響。在三階累計狀態(tài)變化、五層隱藏層和增設池化層的條件下,本文對值導數(shù)GRU 算法進行已知和未知移動惡意軟件流量檢測的相關實驗。
4.4.1 已知移動惡意軟件流量檢測
本節(jié)主要通過二分類實驗評估值導數(shù)GRU算法對于已知移動惡意軟件流量的檢測能力,實驗結果如表7 所示。對于值導數(shù)GRU 算法本身而言,三階值導數(shù) GRU 算法的測試集準確率是96.89%,五層隱藏層的值導數(shù)GRU 算法測試集準確率是96.62%,增設池化層的值導數(shù)GRU 算法測試集準確率是94.28%,忽略池化層的值導數(shù)GRU 算法測試集準確率是95.46%,三階、五層隱藏層和增設池化層條件下的值導數(shù)GRU 算法測試集準確率是96.93%,三階、五層隱藏層和忽略池化層條件下的值導數(shù)GRU 算法測試集準確率是97.28%。因此,對于已知移動惡意軟件流量檢測而言,三階、五層隱藏層和忽略池化層條件下的值導數(shù)GRU 算法擁有最高的驗證集和測試集準確率。
4.4.2 未知移動惡意軟件流量檢測
本節(jié)主要通過二分類實驗評估值導數(shù)GRU 算法檢測未知移動惡意軟件流量的能力,實驗結果如表8 所示。對于值導數(shù)GRU 算法本身而言,三階值導數(shù)GRU 算法的測試集準確率是96.03%,五層隱藏層的值導數(shù) GRU 算法的測試集準確率是96.13%,增設池化層的值導數(shù)GRU 算法的測試集準確率是95.34%,忽略池化層的值導數(shù)GRU 算法的測試集準確率是94.26%,三階、五層隱藏層和增設池化層條件下的值導數(shù)GRU 算法測試集準確率是96.38%,三階、五層隱藏層和忽略池化層條件下的值導數(shù)GRU 算法測試集準確率是96.14%。因此,對于未知移動惡意軟件流量檢測而言,三階、五層隱藏層和增設池化層條件下的值導數(shù)GRU 算法擁有最高的測試集準確率。
表7 已知移動惡意軟件流量檢測準確率
表8 未知移動惡意軟件流量檢測準確率
綜合上述實驗結果,本文討論關于累計狀態(tài)變化、隱藏層以及池化層對于值導數(shù)GRU 算法性能的影響如下。
1)對于累計狀態(tài)變化而言,三階累計狀態(tài)變化的值導數(shù)GRU 算法相比于一階、二階而言擁有較高的驗證集和測試集準確率。此外,實驗結果顯示更高階累計狀態(tài)變化的值導數(shù)GRU 算法擁有類似結論,由于篇幅限制,本文不再贅述。因此,高階累計狀態(tài)變化的值導數(shù)GRU 算法能夠更為有效地檢測移動惡意軟件流量。
2)對于隱藏層而言,五層隱藏層的值導數(shù)GRU 算法相比于一層、三層而言擁有較高的驗證集和測試集準確率。同樣,實驗結果顯示更多層隱藏層的值導數(shù)GRU 算法擁有相似結論,由于篇幅限制本文不再贅述。因此,多層隱藏層的值導數(shù)GRU 算法可以更為有效地檢測移動惡意軟件流量。
3)對于池化層而言,增設池化層的值導數(shù)GRU 算法擁有較高的未知移動惡意軟件流量檢測的準確率,但是擁有較低的已知移動惡意軟件流量檢測的準確率。因此,增設池化層的值導數(shù)GRU 算法僅能夠更有效地檢測未知移動惡意軟件流量。
4)綜合累計狀態(tài)變化、隱藏層以及池化層來看,在檢測已知移動惡意軟件流量的時候,三階、五層隱藏層和忽略池化層條件下的值導數(shù)GRU 算法擁有最高的驗證集和測試集準確率;在檢測未知移動惡意軟件流量的時候,三階、五層隱藏層和增設池化層條件下的值導數(shù)GRU 算法擁有最高的驗證集和測試集準確率。因此,綜合三階、五層隱藏層能夠更為有效地檢測已知移動惡意軟件流量,綜合三階、五層隱藏層和增設池化層能夠更為有效的檢測未知移動惡意軟件流量,
綜上所述,基于值導數(shù)GRU 的移動惡意軟件流量檢測算法相比于基于RNN、LSTM、GRU 的移動惡意軟件流量檢測算法擁有較高的驗證集和測試集準確率。也就是說,值導數(shù)GRU 算法相比于RNN、LSTM、GRU 算法能夠更有效地檢測移動惡意軟件流量。
本文提出一種基于值導數(shù)GRU 的移動惡意軟件流量檢測方法,旨在解決基于RNN 的移動惡意軟件流量檢測算法難以捕獲移動網(wǎng)絡異常流量的動態(tài)變化和關鍵信息的問題。值導數(shù)GRU 算法通過引入“累計狀態(tài)變化”概念可以定量地描述移動網(wǎng)絡異常流量的低階和高階動態(tài)變化信息。此外,通過增設池化層使值導數(shù)GRU 算法獲取流量的重要信息。最后,本文選取CICAndMal2017 數(shù)據(jù)集進行了一系列仿真實驗,并且研究累計狀態(tài)變化、隱藏層以及池化層3 個因素對于值導數(shù)GRU 算法性能的影響。實驗結果表明,基于值導數(shù)GRU 的移動惡意軟件流量檢測算法能夠更為有效地檢測移動網(wǎng)絡異常流量。