董 偉,楊 晨,邵俊杰
(中國(guó)電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所工業(yè)控制系統(tǒng)信息安全技術(shù)國(guó)家工程實(shí)驗(yàn)室,北京 102209)
隨著互聯(lián)網(wǎng)的爆炸式發(fā)展,網(wǎng)絡(luò)安全已上升到國(guó)家戰(zhàn)略層面,面對(duì)日益復(fù)雜的網(wǎng)絡(luò)環(huán)境,傳統(tǒng)的協(xié)議識(shí)別技術(shù)已不再適用。2015年微軟在Kaggle上發(fā)起了一個(gè)惡意代碼分類的比賽,而取得第一名的隊(duì)伍的三名隊(duì)員都不是安全出身,所采用的方法與常見的方法存在很大的不同,展現(xiàn)了機(jī)器學(xué)習(xí)在安全領(lǐng)域的巨大潛力[1]。特征工程作為機(jī)器學(xué)習(xí)領(lǐng)域極具分量的步驟,在工程中占用的時(shí)間遠(yuǎn)超我們的想象,特征工程的好壞直接關(guān)系到學(xué)習(xí)結(jié)果,可以說(shuō)特征工程決定了模型的上限。
本文以數(shù)據(jù)挖掘及機(jī)器學(xué)習(xí)的視角去看待安全問(wèn)題,在網(wǎng)絡(luò)安全領(lǐng)域進(jìn)行了初步實(shí)踐。
KDD99數(shù)據(jù)集來(lái)源于美國(guó)國(guó)防部高級(jí)研究計(jì)劃局(DARPA)的入侵檢測(cè)評(píng)估項(xiàng)目,由 MIT Lincoln實(shí)驗(yàn)室進(jìn)行數(shù)據(jù)集搜集,該項(xiàng)目始于1998 年,后經(jīng)哥倫比亞大學(xué)的STOLFOS教授等人進(jìn)行粗粒度數(shù)據(jù)處理后形成了一個(gè)新的數(shù)據(jù)集,該數(shù)據(jù)集用于1999年的KDD競(jìng)賽上,成為了著名的KDD99數(shù)據(jù)集。雖然年代有些久遠(yuǎn),但KDD99數(shù)據(jù)集仍然是網(wǎng)絡(luò)入侵檢測(cè)領(lǐng)域的權(quán)威測(cè)試集[1],為基于計(jì)算智能的網(wǎng)絡(luò)入侵檢測(cè)研究奠定基礎(chǔ)。
KDD99數(shù)據(jù)集由41個(gè)特征以及1個(gè)類別標(biāo)記組成,其中41個(gè)特征共分為4大類:TCP連接基本特征、TCP連接的內(nèi)容的特征、基于時(shí)間的網(wǎng)絡(luò)流量統(tǒng)計(jì)特征、基于主機(jī)的網(wǎng)絡(luò)流量統(tǒng)計(jì)特征。類別標(biāo)記分為兩類:正常(normal)和異常(abnormal),異常類型被分為4大類共39種攻擊類型,其中22種攻擊類型出現(xiàn)在訓(xùn)練集中,另有17種未知攻擊類型出現(xiàn)在測(cè)試集中。
KDD99數(shù)據(jù)集雖已經(jīng)過(guò)粗粒度的處理,但仍然不能直接用于算法中。KDD99數(shù)據(jù)集數(shù)據(jù)屬性按數(shù)據(jù)類型可分為兩大類:離散屬性(第2、3、4個(gè)特征)和連續(xù)屬性。
由于KDD99中的離散屬性都是標(biāo)稱屬性,若直接將其映射為序數(shù)屬性,則會(huì)大大增加調(diào)參工作量。為此,本文采用了獨(dú)熱編碼(One-Hot Encoding)對(duì)數(shù)據(jù)進(jìn)行處理,其方法是使用N位布爾變量來(lái)對(duì)N個(gè)狀態(tài)進(jìn)行編碼,每個(gè)狀態(tài)都由它獨(dú)立的位表示,并有且僅有一位有效,其余N-1位全為0。獨(dú)熱編碼的方式相比映射為序數(shù)屬性的方式,不用增加調(diào)參的工作。對(duì)于線性模型來(lái)說(shuō),使用獨(dú)熱編碼后可達(dá)到非線性的效果。而對(duì)于第三個(gè)屬性,考慮其離散值較多,為避免引起“維數(shù)災(zāi)難”,將其舍棄。
圖1 決策樹模型
對(duì)于連續(xù)屬性,一般而言,用較小的單位表示將導(dǎo)致該屬性具有較大值域,因此趨向于使該屬性擁有較大的“權(quán)重”,在基于距離的算法中,影響更甚。為了消去不同量綱對(duì)算法的影響,應(yīng)對(duì)連續(xù)屬性進(jìn)行規(guī)范化處理。
常用的規(guī)范化方法有三種:最小—最大規(guī)范化、z分?jǐn)?shù)規(guī)范化和按小數(shù)定標(biāo)規(guī)范化。本文采用最小—最大規(guī)范化,其計(jì)算方法如公式所示:
(1)
KDD99樣本經(jīng)數(shù)據(jù)預(yù)處理后由52維表示,這52個(gè)屬性不僅會(huì)影響算法運(yùn)行時(shí)間,而且可能會(huì)存在冗余屬性,對(duì)實(shí)驗(yàn)結(jié)果造成干擾。為此一種方法是進(jìn)行屬性子集選擇。常用的方法包括:逐步向前選擇、逐步向后選擇、逐步向前選擇和逐步向后刪除的組合以及決策樹歸納[2]。本文采用決策樹歸納的方法進(jìn)行屬性子集選擇。
決策樹算法最初是用來(lái)分類的,當(dāng)決策樹歸納用于屬性子集選擇時(shí)由給定的數(shù)據(jù)構(gòu)造決策樹,出現(xiàn)在樹中的屬性形成規(guī)約后的屬性子集。
1.3.1評(píng)判指標(biāo)
將數(shù)據(jù)標(biāo)記為兩類:正常(normal)和異常(abnormal),用準(zhǔn)確率(Precision)、召回率(Recall)、和F度量評(píng)估算法。準(zhǔn)確率可以看作準(zhǔn)確性的度量(即預(yù)測(cè)為正類的元組實(shí)際為正類所占的百分比),召回率是完全性的度量(即正元組預(yù)測(cè)為正的百分比),而F度量是準(zhǔn)確率和回率的調(diào)和均值。這些度量計(jì)算公式如下:
(2)
(3)
(4)
其中,TP(True Positive)是指被分類器正確分類的正元組,F(xiàn)P(False Positive)是指被錯(cuò)誤地標(biāo)記為正元組的負(fù)元組,F(xiàn)N(False Negative)是指被錯(cuò)誤地標(biāo)記為負(fù)元組的正元組。
1.3.2實(shí)驗(yàn)結(jié)果分析
實(shí)驗(yàn)構(gòu)建了基于信息熵的決策樹模型,顯示其前四層的樹型表示如圖1所示。
用圖1中的特征子集表征數(shù)據(jù),將“正?!痹M標(biāo)記為正類,采用10折交叉驗(yàn)證的方式,在決策樹模型上進(jìn)行分析,參照公式(2)、(3)、(4)的模型評(píng)判標(biāo)準(zhǔn),其結(jié)果與用所有特征表征的數(shù)據(jù)運(yùn)行結(jié)果對(duì)比如表1所示。
表1 數(shù)據(jù)對(duì)比表
如表1所示,采用所選特征子集對(duì)數(shù)據(jù)進(jìn)行特征選擇后,各度量值雖都略有所下降,但相差無(wú)幾,故在后續(xù)研究中,選用上述特征子集進(jìn)行運(yùn)算分析,節(jié)約了時(shí)間成本。
回歸是研究自變量和因變量之間關(guān)系的一種預(yù)測(cè)模型技術(shù)。回歸分析的目的是預(yù)測(cè)數(shù)值型的目標(biāo)值,最直觀的表現(xiàn)形式是依據(jù)輸入構(gòu)造目標(biāo)值的計(jì)算公式,該公式就是回歸方程(Regression Equation),求解回歸方程的回歸系數(shù)的過(guò)程就是回歸?;貧w分析包含多種預(yù)測(cè)模型,常見的有線性回歸(Linear Regression)、邏輯回歸(Logistic Regression)、多項(xiàng)式回歸(Polynomial Regression)、逐步回歸(Stepwise Regression)、嶺回歸(Ridge Regression)、套索回歸(Lasso Regression)、回歸(ElasticNet)等。
邏輯回歸是比較常用的機(jī)器學(xué)習(xí)算法,原因在于它不但能指出自變量和因變量之間的顯著關(guān)系,允許比較不同尺度的度量,還能快速地用較低的代價(jià)吸收新數(shù)據(jù)更新模型。因此,針對(duì)KDD99數(shù)據(jù)集數(shù)據(jù)類型復(fù)雜、特征維數(shù)較多的特點(diǎn),選用邏輯回歸算法來(lái)進(jìn)行異常檢測(cè)。
邏輯回歸是一種廣義線性回歸,處理的是分類問(wèn)題。線性回歸的公式如下:
z=ω1x1+ω2x2+ω3x3+…+ωnxn+b=WTX+b
(5)
其中,XT=[x1x2x3…xn]是輸入的樣本特征,WT=[ω1ω2ω3…ωn]是方程的回歸系數(shù),b是常量。對(duì)于邏輯回歸來(lái)說(shuō),其思想也是基于線性回歸,但是回歸公式并不是直接輸出結(jié)果Z,而是增加激活函數(shù),將方程的值域映射到某特定的取值空間(應(yīng)根據(jù)目標(biāo)值的要求選取適合的激活函數(shù)),構(gòu)造損失函數(shù),求使損失函數(shù)最小的回歸參數(shù)。
邏輯回歸中單個(gè)樣本的n維特征正向傳播過(guò)程如圖2所示。
圖2 邏輯回歸正向傳播
單個(gè)樣本的n維特征表現(xiàn)為正向傳播的輸入向量XT=[x1x2x3…xn],回歸系數(shù)是輸入向量WT=[ω1ω2ω3…ωn]。由回歸方程可知,此時(shí)無(wú)論迭代多少次,輸出的z都是輸入的線性映射,這是回歸分析的一般結(jié)果,此時(shí)的回歸模型只具有線性映射能力,而訓(xùn)練目標(biāo)是識(shí)別數(shù)據(jù)集中的異常數(shù)據(jù),屬于二分類問(wèn)題,因此必須加入激活函數(shù)將輸出z映射到特定的值域,表示該數(shù)據(jù)標(biāo)記為異?;蛘?shù)據(jù)的可能性。簡(jiǎn)而言之,激活函數(shù)(Activation Function)就是為算法提供非線性建模學(xué)習(xí)能力的,幾種常見的激活函數(shù)如下,如圖3所示。
圖3 幾種常見的激活函數(shù)
Sigmoid函數(shù):
(6)
Tanh函數(shù):
(7)
RuLU函數(shù):
g(x)=max(0,x)
(8)
Sigmoid函數(shù)是使用范圍最廣的一類激活函數(shù),具有指數(shù)函數(shù)的形狀,由于它將輸入映射到(0,1)之間,可以用來(lái)表示概率,因此將其用于異常檢測(cè)輸出結(jié)果用來(lái)表示數(shù)據(jù)異?;蛘5母怕?。
損失函數(shù)是用來(lái)估量模型的預(yù)測(cè)值和真實(shí)值的不一致程度,這里用Loss(a,y)來(lái)表示,a表示預(yù)測(cè)類別,y表示真實(shí)類別。常用的損失函數(shù)有平方損失函數(shù)、log損失函數(shù)、指數(shù)損失函數(shù)等。
在Sigmoid激活函數(shù)的作用下:
標(biāo)簽取值的概率可表為:
P(y/x;ω)=(Gω(x))y(1-Gω(x))1-y
(9)
取似然函數(shù)為:
(10)
對(duì)數(shù)似然函數(shù)為:
(11)
取損失函數(shù)為:
(12)
(13)
其中,γ是學(xué)習(xí)率。
訓(xùn)練數(shù)據(jù)集的平均損失稱為經(jīng)驗(yàn)風(fēng)險(xiǎn),為了防止過(guò)擬合,需要在經(jīng)驗(yàn)風(fēng)險(xiǎn)的基礎(chǔ)上加上表示模型復(fù)雜度的正則化項(xiàng)(regularization)或者罰項(xiàng)(penalty term),在本算法中取正則項(xiàng)為平方損失,即參數(shù)的L2范數(shù),此時(shí)模型的損失函數(shù)為:
(14)
其中,β為常量。
正則化后的梯度下降算法ω的更新過(guò)程變?yōu)椋?/p>
(15)
綜上所述,該方法的常規(guī)流程為,根據(jù)數(shù)據(jù)集及目標(biāo)結(jié)果選擇合適的訓(xùn)練模型,尋找預(yù)測(cè)函數(shù)(G(z)),構(gòu)造損失函數(shù),求使損失函數(shù)最小的模型參數(shù),構(gòu)造訓(xùn)練模型。
本文的異常檢測(cè)算法是基于KDD99數(shù)據(jù)集實(shí)現(xiàn)的,原始的訓(xùn)練數(shù)據(jù)集包含494 021條連接記錄,測(cè)試數(shù)據(jù)集包含311 029條連接記錄,每條連接記錄的最后有一個(gè)標(biāo)簽來(lái)標(biāo)明其類別信息,試驗(yàn)中將正常連接標(biāo)記為1,異常連接標(biāo)記為0。在對(duì)數(shù)據(jù)集進(jìn)行非線性處理后,用訓(xùn)練數(shù)據(jù)集訓(xùn)練邏輯回歸模型,效果如圖4所示。
圖4 邏輯回歸模型評(píng)估
將算法迭代100次,并用每次迭代求出的回歸系數(shù)測(cè)試待測(cè)數(shù)據(jù)集的回歸程度,結(jié)果顯示,在取學(xué)習(xí)率α=0.8時(shí),模型在迭代45次左右后收斂。
將測(cè)試集帶入模型,結(jié)果如圖5所示。
圖5 測(cè)試集預(yù)測(cè)結(jié)果
從圖5中可以看出,隨著迭代次數(shù)的增加,模型的準(zhǔn)確率快速收斂,漏報(bào)率隨有所增加,但未超過(guò)0.1%。
試驗(yàn)中選用KDD99數(shù)據(jù)集,由于該數(shù)據(jù)集的每條記錄都是以一次網(wǎng)絡(luò)連接為單位,每條記錄包含字符型、離散型和連續(xù)型數(shù)據(jù),且各特征度量尺度不同,難以處理,因此選用非線性預(yù)處理的方式處理數(shù)據(jù),將原始數(shù)據(jù)轉(zhuǎn)化為可以直接輸入邏輯回歸模型學(xué)習(xí)的矩陣形式。實(shí)驗(yàn)結(jié)果表明,邏輯回歸對(duì)測(cè)試集中的異常連接有較好的識(shí)別能力,但是隨著迭代次數(shù)的增加,回歸系數(shù)逐漸收斂,測(cè)試集的漏報(bào)率也有所增加,關(guān)于這一問(wèn)題,未來(lái)還會(huì)進(jìn)行針對(duì)性的研究來(lái)改進(jìn)工作。
[1] 劉焱.Web全之機(jī)器學(xué)習(xí)入門[M].北京:機(jī)械工業(yè)出版社,2017.
[2] Han Jiawei, KAMBER M. Pei Jian.數(shù)據(jù)挖掘:概念與技術(shù)(第3版)[M]. 北京:機(jī)械工業(yè)出版社,2012.