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