阿淑芳 劉寧寧 余桂蓮 余桂希 余生晨
1(邢臺學院 河北 邢臺 054001) 2(固原市原州區第五中學 寧夏 固原 756000) 3(寧夏海原縣職業中學 寧夏 中衛 756100) 4(華北科技學院計算機學院 北京 065201)
云計算以服務的方式提供計算資源(包括計算能力、存儲能力和交互能力),形成了一種動態、可擴展、虛擬化的新型計算資源組織、分配和使用模式。這種模式使得計算資源成為向大眾提供服務的社會基礎設施,將對信息技術本身及其應用產生深刻影響。但是,多個用戶在云計算平臺上同時使用一個軟件與在單個本地計算機上使用同一個軟件給用戶帶來的體驗差距還是很大的。這主要是云計算平臺上的軟件運行得太慢造成的,例如,傳統的入侵檢測技術在云環境下應用存在著響應速度慢、不能很好適應大數據集等諸多限制,無法滿足實時性、有效性的需求[1-2]。解決這一問題的方法有多種,其中之一是提高在云計算環境中運行的IDS的檢測速度和準確度,但是,提高IDS的檢測速度和準確度又造成了用于IDS的BPNN經常出現“泛化問題”,即BPNN無解或總誤差函數不能收斂于全局最小值。另外,隨著云計算的飛速發展,對其入侵的技術也日新月異,入侵方法也越來越多樣化與綜合化,這使得現有的入侵檢測系統(IDS)漏報率和誤檢率都大幅上升[3-4]。BPNN可以解決云計算環境中的復雜的具有非線性特征的入侵攻擊活動。人們通常通過增加BPNN的網絡層數,即增加BPNN的內部神經元數量(等效于增加人腦中的神經元數量),達到提高BPNN識別各類復雜的云計算環境中的入侵攻擊活動能力的目的。另外,人們也通過增加BPNN的輸入特征的數量,達到提高BPNN識別各類復雜的云計算環境中的入侵能力的目的,因為一般情況下,特征越多,攜帶的分類識別云計算環境中的入侵攻擊活動的信息也越多,有利于提高BPNN識別各類復雜的云計算環境中的入侵者的正確率。但是,BPNN是通過數學方法模仿人腦工作的,采用最速下降法(梯度法)求BPNN總誤差函數的全局最優解。BPNN總誤差函數是神經元和輸入特征的非線性的多維復雜函數,一般具有多個極值點。最速下降法(梯度法)能夠精確地搜索到局部最優解,但是一般不能搜索到全局最優解,這與選擇的初始值有關,這樣就導致了BPNN的“泛化問題”[5]。“泛化問題”是指BPNN無解或總誤差函數不能收斂于全局最小值。為了解決這些問題,本文提出基于重要特征的用遺傳算法改進的反向傳播神經元網絡(BPNN)構造的入侵檢測系統。在該系統中利用遺傳算法(GA)能夠搜索“全局”最優解的能力[6-7]改進傳統BPNN利用梯度法搜索“局部”最優解的方法。由于遺傳算法的變異引入了隨機值,導致GA搜索到的是全局最優解的近似值。梯度法是用求方向導數法求最優解,求得的是問題的精確的局部最優解,當初值選擇不當時,一般搜索不到全局最優解。本文把遺傳算法與梯度法結合起來,取長補短,就會搜索到BPNN的全局最優解的精確解。
先用遺傳算法求出BPNN全局最優解的近似值,然后,把該近似值作為最速下降法(梯度法)的初始值,進行迭代,最終求得BPNN全局最優解的精確值,達到解決BPNN“泛化問題”的目的。另外,本文提出通過分析BPNN的輸入特征的相關性,剔除相關性大的那些特征(兩個特征相關是指這兩個特征描述了問題的同一個方面,例如,一個人的身高和腿長都描述了人的高度,用數學語言表述為身高和腿長是正相關的,可用y=kx表示),保留相關性較小或互相獨立的重要特征,以便減少特征數量,從而降低BPNN的泛化性。減少特征數量,也可以減少BPNN的計算工作量,從而提高BPNN處理云計算環境中的數據包的速度[8],這樣,當云計算環境中的流量較大時,可以少丟棄一些來不及處理的數據包,從而提高BPNN對入侵者的正確識別率。仿真實驗證明本文給出的方法是有效的且能夠提高BPNN識別入侵者的正確率。
普通的BPNN利用梯度法修正其反向傳播的權值和閾值,以便使BPNN的輸出總誤差平方和最小。
期望輸出與實際輸出之差的平方和被定義為總誤差函數φ:
(1)
式中:yj是實際的輸出,它是輸入模式p和權值bj的函數,yj=f(p,b1,b2,…,bn);vj是輸出單元的期望輸出。
現在要尋找一組BPNN的權值b1,b2,…,bn,代入式(1),總誤差函數φ為極小,是全局最小,不是局部極小。

上述問題是一個多參量的非線性最優估計問題。傳統的做法是采用“最速下降法”(或稱為“梯度法”),直接尋找總誤差函數φ的下降方向來求取修正量。如圖1所示,其步驟如下:
(1) 在初值點b(0)的一個鄰域內,將總誤差函數φ在b(0)處泰勒級數展開,取至線性項,有:


φ(b(0))-φ(b(0)+δ)=
-g·δ=-|g|×|δ|cos
(2)
式中:g表示總誤差函數φ對權值b的各分量的導數所組成的向量,即梯度向量。
要使式(2)取得極大,有:
cos
(3)
式(3)說明了總誤差函數φ值下降最快的方向δ應該與梯度方向g相反,即負梯度方向,那么修正量就應在負梯度方向上來求取。


圖1 最速下降法(梯度法)使總誤差函數φ極小的迭代過程示意圖
為了簡化問題,用一維的情況說明BPNN總誤差φ(x)是權值參數x的多極值函數。如圖2所示,一般情況下,BPNN的總誤差φ(x)是參數x(這里,參數x是BPNN的權值和閾值這兩個參數)的多極值函數。如果BPNN的初值選在N點,按BPNN使用的梯度法,只能收斂于最近的極小點T2min,而不會收斂于全局最小點T1min(精確解),BPNN應當收斂于全局最小點T1min(精確解)。因此,初始閾值和權值x的選取,極大影響BPNN求得精確解的結果。本文將針對這個缺點進行改進。

圖2 BPNN總誤差φ(x)是權值參數x的多極值函數
首先用遺傳算法求出BPNN的近似值(M點),即全局最優解(T1min點)的近似值,梯度法的初始值不是隨機選取的,而是選取該近似值,進一步就可以求出BPNN的全局最優解(T1min點,精確解)。
遺傳算法是最近幾年受生物免疫系統的啟示而設計出來的新型算法。它是一種對多峰值函數進行搜索及全局尋優的新型算法。選擇運算保留了想要的最優解,交叉和變異運算為取得全局最優解提供了基礎,選擇運算淘汰了那些不想要的解,只保留想要的最優解。這保證了在整體上(平均值)下一代比上一代更優秀。
一般情況下,遺傳算法求不到全局最優解的精確解(T1min點),只能是近似解(相當于M點),這是由遺傳算法的交叉和變異的隨機運算所導致的必然結果。梯度法是穩健的,當初值選為M點時,會逐步接近精確解(T1min點)。
利用遺傳算法和BPNN使用的梯度法的組合可較快地求得全局最優解的精確解(T1min點),例如,在圖2中,從N點出發,用遺傳算法求得M點,然后,再從M點出發,用梯度法求得全局最優解的精確解(T1min點)。
上述算法(利用遺傳算法和最速下降法求得BPNN全局最優精確解)的具體算法流程如圖3所示。

圖3 利用GA和最速下降法求得BPNN全局最優精確解的具體算法流程
BPNN的網絡層數和特征較多時,計算量將急劇增大,使得BPNN的收斂速度變慢。過多的輸入特征會使BPNN出現“泛化問題”。因此,使用BPNN識別云計算環境中的入侵者時,使用相互獨立的數量適中的重要特征是提高入侵檢測系統的速度、減少漏報率和誤檢率的重要措施之一[6-7]。
如圖4所示,有兩類樣本μ1和μ2,在x1和x2坐標系中,可以分類識別出μ1和μ2,但是,在y1和y2坐標系中,也可以分類識別出μ1和μ2。去掉y2,只用y1也可以分類識別出μ1和μ2,這時的分類誤差并不大。

圖4 相關特征與獨立特征的關系示意圖
對分類兩類樣本μ1和μ2而言,特征x1和x2具有較高的相關性,特征y1和y2具有較低的相關性,在一定程度上,也可以說,特征y1和y2是相互獨立的兩個特征。y2帶有較少的分類信息,y1帶有較多的分類信息。去掉帶有較少分類信息的y2,只用帶有較多分類信息的y1分類,并不會帶來很大的分類誤差,這樣就可以達到降低特征空間維數的目的,減少BPNN的計算量,提高BPNN的分類識別入侵者的速度。在本文中,特征y1稱為獨立的重要特征。
在n維的原始特征向量x=(x1,x2,…,xn)中,有些特征具有較高程度的相關性。下面給出如何消除原始特征向量x中的相關性并求出相互獨立的重要特征的方法。
可以用n個基向量的加權和表示BPNN選取的n個原始特征x:
(4)
式中:αi是加權系數;φi是基向量。
變換矩陣A是從n個向量中取出m個形成的,即:
A=(φ1,φ1,…,φm)m 經過y=ATx變換,得到特征個數較少的m(m 在式(4)中,只取m(m 產生的誤差為: 均方誤差為: (5) 式中:E[]為求數學期望。 ε2取得最小值的條件是對bj的選擇應滿足下面的偏導數為零的條件: E-2(αj-bj) =0 故: bj=Eαj (6) 換句話說,應該用α中省略的那些分量的期望值來代替這些省略的分量。 新坐標系的原點選取為模式總體的均值向量等于0,即在新坐標系中,E[x]=0,式(6)可以轉化為: 這樣,由式(5)可得均方誤差為: 式中:與λj對應的本征向量是φj;x的自相關矩陣R的第j個本征值是λj。 m(m BPNN使用這m(m m(m 一般情況下,轉發云計算環境中的數據包的緩沖存儲器的容量是有限的且也是很小的。當流量較大時,BPNN(IDS)會丟棄云計算環境中的一些來不及處理的數據包[6]。入侵者就可能隱藏在這些丟棄的數據包中。減少BPNN(IDS)所用的特征數量相當于減少了其計算量,從而提高了其處理數據包的速度。減少丟棄的未處理的數據包的數量,可以提高其識別云計算環境中的入侵者的正確率。為了提高BPNN識別入侵者的正確率,BPNN可選取λj值較大的新特征作為其使用的特征。 上述算法(剔除相關性大的那些特征,保留相關性較小或互相獨立的重要特征,以便減少特征數量)的具體算法流程實現如圖5所示。 圖5 求取數量較少且相關性也較小或互相獨立的重要特征具體算法流程 為了檢測評價本文給出的方法的有效性,實驗采用KDDCUP99數據集[9]。該數據集是目前比較公認的檢測評價入侵檢測系統性能的重要數據集[10]。 遺傳算法的參數取值為:交叉概率范圍為0.4~0.9,變異概率為0.004~0.010,最大遺傳迭代次數大于或等于400次[11],當遺傳算法停止當前迭代時,提高交叉概率值和變異概率值,直到交叉概率值和變異概率值都取最大值。 一般情況下,最速下降法(梯度法)迭代的初始值是隨機選取的,但本文把遺傳算法求出的BPNN全局最優解的近似值作為梯度法迭代的初始值。 在模擬實驗中,第一階段,選取了24個特征,它們[12-14]是:x1=發起攻擊的主機(源)的IP地址,x2=來自發起攻擊的主機的流量,x3=被攻擊者(目標)主機的IP地址,x4=進入被攻擊者(目標)主機的流量,x5=操作系統類型與版本探測次數,x6=服務器Tomcat的探測次數,x7=服務器IIS的探測次數,x8=傳輸協議類型的探測次數,x9=重要端口是否開放的掃描次數,x10=掃描允許連接的服務類型,x11=在近期一段時間內口令錯誤的次數,x12=口令文件嘗試訪問的次數,x13=嘗試下載敏感信息的次數,x14=嘗試修改或刪除重要數據的次數,x15=嘗試清除或篡改日志文件的次數,x16=修改系統時間的次數,x17=修改系統啟動文件的次數,x18=修改服務器配置文件的次數,x19=替換系統本身的共享庫文件的次數,x20=修改系統的源代碼的次數,x21=修改注冊表的次數,x22=出現同步洪流(SYN Flooding)的連接次數,x23=出現死亡之Ping的次數,x24=出現Smurf攻擊的次數。 第二階段,用本文第2節給出的提取相互獨立的重要特征的求法,提取了8個相互獨立的重要特征,它們是z1、z2、z3、z4、z5、z6、z7、z8。這8個相互獨立的重要特征的意義是:z1=發起攻擊的主機(源,被侵入的主機,俗稱“肉雞”)的IP地址,z2=被攻擊者(目標)的IP地址,z3=采點掃描行為或稱為云計算環境監聽行為,z4=掌握系統控制權的行為,z5=實施攻擊行為類型1,z6=實施攻擊行為類型2,z7=隱藏攻擊痕跡行為,z8=安裝后門行為。按照本文方法,計算出的這8個重要特征的“重要性”值分別如圖6所示。這8個重要特征所攜帶的分類識別入侵者的信息占原來24個原始特征組的總信息量的99%。這時,從24個原始特征組中剔除的16個相關性大的特征共同攜帶的分類識別入侵者的信息只占原來24個原始特征組的總信息量的1%。由此可見,從24個原始特征組中,剔除16個相關性大的特征后,丟棄的分類識別入侵者的信息并不多(只占1%),但是,特征數量大幅下降了。這也進一步說明可以用這8個重要特征代替原來的24個原始特征進行云計算環境中的入侵者分類識別工作。 圖6 8個重要特征的“重要性”值 以這8個重要特征為輸入特征,構建反向傳播神經元網絡(BPNN)。BPNN由三層構成,第一層有8個輸入節點,第二層有7個輸入節點,第三層有1個輸入節點,輸出量值為0代表正常用戶程序的行為,輸出量值為1代表入侵者或異常用戶程序的行為。 初期,用350個不同類型的入侵者程序和250個一般正常用戶程序,作為訓練BPNN的樣本集。BPNN訓練成功后,就可用KDDCUP99數據集對其性能進行評價。 本次實驗首先在模擬云計算環境下進行實驗,然后再在Amazon(亞馬遜)、Google、Salesforce、Microsoft Azure云計算環境下分別進行實驗,幾種不同的入侵檢測系統(IDS)對入侵者的正確識別率測試結果如表1所示[11-14]。 表1 云計算環境下不同IDS識別入侵者的正確率 % 當云計算環境中的網絡流量由1 000 MB/s增加到2 000 MB/s時,國外著名的Cisc公司和ITA公司研制的入侵檢測系統(IDS)識別入侵者的正確率分別降低了14.29%和14.63%,用最初24個特征的反向傳播神經元網絡(BPNN)構造的入侵檢測系統(IDS)識別入侵者的正確率也降低了13.10%。但是,用本文選出的8個特征的反向傳播神經元網絡(BPNN)構造的入侵檢測系統(IDS)識別入侵者的正確率僅僅降低了1.04%。 其中的原因是用本文選出的8個重要的互相獨立的重要特征比用最初24個特征的BPNN構造的IDS的“泛化問題”要小得多。訓練BPNN就是一個多參量的非線性最優估計問題。特征數量越少,相當于BPNN的總誤差函數的維數(度)也越低,總誤差函數相對也越簡單,這時,求出的總誤差函數的全局最優解也越準確。用比較準確的全局最優解構造IDS后,其識別入侵者的正確率也較高。 另外一個原因是特征越少,IDS(BPNN)計算量也越少且計算速度也越快,這樣,IDS丟棄的未檢測的數據包也就越少,丟棄的未檢測的數據包中可能含有入侵者。由此可見,用本文選出的8個重要的互相獨立的重要特征比用最初24個特征的BPNN構造的IDS識別入侵者的正確率要高得多。 表1實驗結果證明了本文研制并改進的IDS的正確性。 云計算的理念很好,但是其技術和一些軟件的運行速度還有待提高[15],尤其入侵檢測系統的檢測速度要大幅提高。云計算環境中巨大的通信量對數據分析提出的新要求是入侵檢測速度要更快,否則,前面的數據還沒有分析完畢,后面的數據就跟著到來,以致于來不及分析就被丟棄,造成新的漏判。反向傳播神經元網絡(BPNN)的網絡層數和特征較多時,計算量將急劇增大,使得BPNN的收斂速度變慢,過多的輸入特征會使BPNN出現“泛化問題”。因此,使用BPNN識別云計算環境中的入侵者時,使用相互獨立的數量適中(較少)的重要特征是提高入侵檢測系統的速度、減少漏報率和誤檢率的重要措施之一。通過理論論證和仿真實驗證明:在保持原始特征組所攜帶的分類識別入侵者的總信息基本不變的前提下,分析BPNN的輸入特征的相關性,剔除相關性大的那些特征(兩個特征相關是指這兩個特征描述了問題的同一個方面,即y=kx),保留相關性較小或互相獨立的重要特征,以便減少特征數量,可以降低BPNN的泛化性。綜合利用遺傳算法和最速下降法(梯度法)的優點,也可以解決BPNN的泛化性問題。首先用遺傳算法求出BPNN全局最優解的近似值,然后把該近似值作為最速下降法(梯度法)的初始值,進行迭代,最終求得BPNN全局最優解的精確值,達到解決BPNN“泛化問題”的目的。另外,減少特征數量,也可以減少BPNN的計算工作量,從而提高BPNN的處理云計算環境中的數據包的速度。這樣,當云計算環境中的流量較大時,可以少丟棄一些來不及處理的數據包,從而提高BPNN對入侵者的正確識別率。仿真實驗證明本文給出的方法是有效的且能夠提高BPNN識別入侵者的正確率。2.3 計算相互獨立的重要特征的“重要性”值



3 應用實驗


4 結 語