吳志祥,曲譜,李耕(中國聯(lián)通黑龍江省分公司,黑龍江哈爾濱 150001)
云環(huán)境可按照用戶的需求,以低成本向使用者提供軟硬件設(shè)備,使用者可以方便地使用服務(wù),并且無需了解云環(huán)境的細(xì)節(jié),也不需進(jìn)行設(shè)備維護(hù)。虛擬化技術(shù)可以按照需求共享資源,提高了資源的使用率,圖1給出了云環(huán)境虛擬化示意圖。由于云環(huán)境的虛擬化特性,多個(gè)虛擬機(jī)會(huì)在同一主機(jī)上同時(shí)運(yùn)行,如果虛擬機(jī)之間沒有適當(dāng)?shù)母綦x,攻擊者可以從同一主機(jī)上取得其他虛擬機(jī)的相關(guān)信息。
2017年,Abazari等人提出了云環(huán)境共存攻擊多目標(biāo)檢測系統(tǒng),整理了虛擬機(jī)共存攻擊和檢測對策的類型,并提出一套模型來計(jì)算云環(huán)境整體的最佳響應(yīng)對策。他們提出的模型考慮到虛擬機(jī)之間的共存時(shí)間長短,并在威脅和成本這2 個(gè)沖突的目標(biāo)中取得帕雷托最優(yōu)解得到最佳響應(yīng)對策。圖2為帕雷托最優(yōu)解示意圖,其中F1代表總威脅,F(xiàn)2代表總成本。若有一個(gè)解x,當(dāng)無法在不提升總成本的情況下再降低總威脅,且無法在不提升總威脅的情況下再降低總成本,那解x就為帕雷托最優(yōu)解。在2 個(gè)互相沖突的目標(biāo)的情況下,會(huì)有多個(gè)帕雷托最優(yōu)解。
圖2 帕雷托最優(yōu)解示意圖
實(shí)驗(yàn)發(fā)現(xiàn),Abazari 等人的模型在具有大量虛擬機(jī)的云環(huán)境中計(jì)算檢測對策需要耗費(fèi)相當(dāng)長的時(shí)間。因此,本文提出一個(gè)自動(dòng)入侵檢測系統(tǒng)的新模型,其使用機(jī)器學(xué)習(xí)來產(chǎn)生檢測對策,并進(jìn)行一系列實(shí)驗(yàn)來證明模型的效果。從實(shí)驗(yàn)結(jié)果可以看出機(jī)器學(xué)習(xí)可以以良好的準(zhǔn)確度近似帕雷托最優(yōu)解,并且相較于Abazari 等人的模型在檢測速度方面有2 000 倍的提升。
云環(huán)境計(jì)算根據(jù)服務(wù)類型可以分為3類SPI:軟件即服務(wù)(SaaS)、平臺(tái)即服務(wù)(PaaS)和基礎(chǔ)架構(gòu)即服務(wù)(IaaS)。其中IaaS 是云環(huán)境供應(yīng)商通過虛擬化技術(shù)在一部大型的實(shí)體主機(jī)上建立多個(gè)虛擬機(jī),根據(jù)使用者需求動(dòng)態(tài)分配資源,使用者可以根據(jù)自己的需求租借適量的服務(wù)。本文討論的云環(huán)境共存攻擊就是在IaaS架構(gòu)下隱藏的威脅。
共存攻擊可分為3 種類型,第1 種類型包含信息竊取和側(cè)通道攻擊,使受害者隱私泄露,造成不可逆的傷害;第2 種類型是攻擊者利用虛擬機(jī)之間的通信來傳播惡意程序;第3種類型,攻擊者的目標(biāo)是得到不公平的共享資源,導(dǎo)致同一實(shí)體機(jī)上的其他虛擬機(jī)受到阻斷服務(wù)攻擊。
根據(jù)研究文獻(xiàn),虛擬機(jī)受到共存攻擊的機(jī)率與共存時(shí)間呈正相關(guān),通過虛擬機(jī)共存時(shí)間關(guān)系圖可以獲得虛擬機(jī)之間的共存時(shí)間,并用來計(jì)算云環(huán)境中所有虛擬機(jī)的威脅等級。虛擬機(jī)共存時(shí)間關(guān)系圖如圖3所示,圖3 中的節(jié)點(diǎn)代表虛擬機(jī)(VM),其中虛擬機(jī)可分為2種類型:集合M表示惡意VM,由虛線方框表示;集合S表示一般VM,由實(shí)線方框表示。節(jié)點(diǎn)之間的連線代表虛擬機(jī)曾經(jīng)或正在同一實(shí)體機(jī)中共存,連線上的數(shù)值代表共存時(shí)間長短,時(shí)間會(huì)經(jīng)過正規(guī)化變成0~1的數(shù)值,由wi,j表示VMi和VMj的共存時(shí)間,舉例來說,圖3 中VM2和VM3的共存時(shí)間w2,3=0.8,VM8和VM9的共存時(shí)間w8,9=0.2。
圖3 虛擬機(jī)共存時(shí)間關(guān)系圖
每種攻擊都可以通過特定的對策來防御。響應(yīng)對策表如表1 所示,其中SC 表示側(cè)通道攻擊,MP 表示惡意軟體傳播,DoS 表示阻斷服務(wù)攻擊,Y 表示該對策可防御此種攻擊,N 表示該對策無法防御此種攻擊。表1 中列出了每個(gè)共存攻擊的對策,總共可分為5 個(gè)對策,對策6表示不進(jìn)行任何動(dòng)作,以下對每個(gè)對策進(jìn)行詳細(xì)說明。
表1 響應(yīng)對策表
a)第1 種對策是虛擬機(jī)遷移,其能夠防御所有共存攻擊。
b)第2 種對策能防御側(cè)通道攻擊,針對攻擊者的虛擬機(jī),增加其惡意行動(dòng)的延遲。如果是受害虛擬機(jī),則可以將硬盤、CPU 和內(nèi)存等共享資源的存取方式改為一致的模式,防止攻擊者從受害者的行為中獲取信息。
c)第3 種對策可以防止惡意軟體傳播,利用虛擬交換機(jī)的功能重新配置虛擬網(wǎng)絡(luò)。
d)第4 種對策可以防御阻斷服務(wù)攻擊,主要是通過更改管理程序的配置降低最大計(jì)算負(fù)載或內(nèi)存容量,限制攻擊者的資源使用。
e)第5種對策是通過限制相關(guān)虛擬機(jī)允許的最大流量速率,防御惡意軟體傳播和阻斷服務(wù)攻擊。
f)第6種對策是不進(jìn)行任何動(dòng)作。
機(jī)器學(xué)習(xí)屬于人工智能的范疇,是一種讓機(jī)器從學(xué)習(xí)到推理的過程,機(jī)器學(xué)習(xí)的演算法結(jié)合了各種學(xué)科,如概率學(xué)、統(tǒng)計(jì)學(xué)和逼近論等,通過組合這些數(shù)學(xué)模型設(shè)計(jì)出讓計(jì)算機(jī)可以自我學(xué)習(xí)的演算法。從訓(xùn)練資料中截取重要特征,訓(xùn)練時(shí)通過演算法將特征進(jìn)行分析獲得規(guī)律得到模型,最后就可以利用模型對新資料進(jìn)行預(yù)測。
機(jī)器學(xué)習(xí)的概念如圖4 所示,Abazari 等人的模型是使用Matlab 的fgoalattain 函數(shù)來計(jì)算多目標(biāo)優(yōu)化問題,目標(biāo)是指總響應(yīng)成本和總威脅,本文的研究在降低威脅的同時(shí)也降低成本。而在機(jī)器學(xué)習(xí)演算法方面,本文對Lasso、Elastic Net、Ridge Regression 這3 種機(jī)器學(xué)習(xí)演算法進(jìn)行了測試,先制造200筆資料,并隨機(jī)選取80%作為訓(xùn)練資料,20%作為測試資料,接著分別使用3 種機(jī)器學(xué)習(xí)演算法,平均準(zhǔn)確度如表2 所示。由表2可知,Ridge Regression 的準(zhǔn)確度較高,所以本文選擇Ridge Regression作為機(jī)器學(xué)習(xí)的演算法。
圖4 機(jī)器學(xué)習(xí)概念圖
表2 機(jī)器學(xué)習(xí)演算法準(zhǔn)確度比較
Scikit-learn 簡稱SKlearn,是Python 機(jī)器學(xué)習(xí)和資料分析的開源套件,其中包含許多知名的機(jī)器學(xué)習(xí)演算法,也內(nèi)建許多知名的資料集。在演算法方面,依照演算法功能分為6 個(gè)類別,如圖5所示,簡易流程圖可以讓使用者根據(jù)資料集的形態(tài)來挑選適合的演算法。
圖5 Scikit-learn演算法挑選流程圖
虛擬機(jī)受到共存攻擊的機(jī)率與共存時(shí)間呈正相關(guān),因此,為了計(jì)算云環(huán)境中所有虛擬機(jī)的威脅等級,首先必須擁有虛擬機(jī)共存時(shí)間關(guān)系圖,還有檢測到的攻擊者所操控的惡意虛擬機(jī)集合M。攻擊者進(jìn)行攻擊時(shí),其虛擬機(jī)通常會(huì)存在資源大量使用、cache miss 等異常現(xiàn)象,一般可通過持續(xù)的云環(huán)境監(jiān)控來發(fā)現(xiàn)惡意虛擬機(jī)。如第1 章所述,云環(huán)境共存攻擊可分為3 個(gè)類型:側(cè)通道攻擊、惡意軟體傳播和阻斷服務(wù)攻擊,因此設(shè)定虛擬機(jī)威脅等級為三元組(triplet)ti,分別表示3種攻擊的機(jī)率,如式(1)所示。
ti是代表VMi被攻擊的機(jī)率(威脅等級),一個(gè)受害VM會(huì)因?yàn)楹投鄠€(gè)不同惡意VM共存,造成被攻擊的機(jī)率提升,威脅等級必須包括任一威脅發(fā)生的機(jī)率與多個(gè)威脅同時(shí)發(fā)生的機(jī)率,因此對Abazari等人的威脅等級計(jì)算方法進(jìn)行修改,實(shí)際的計(jì)算方式如式(2)所示。
首先,VMj要屬于惡意虛擬機(jī)集合M,才需要計(jì)算其可能對VMi造成的威脅,n為總虛擬機(jī)個(gè)數(shù),wi,j表示VMi和VMj的共存時(shí)間。ti×wi,j表示VMi被VMj攻擊的機(jī)率,[1 1 1]-tj×wi,j就是不被VMj攻擊的機(jī)率。多個(gè)不被攻擊的機(jī)率求積就等于完全不被攻擊的機(jī)率,最后由[1 1 1]減去完全不被攻擊的機(jī)率就是包括任一威脅發(fā)生的機(jī)率與多個(gè)威脅同時(shí)發(fā)生的機(jī)率。
以圖3為例,給予惡意虛擬機(jī)隨機(jī)的威脅等級,并根據(jù)式(2)計(jì)算一般虛擬機(jī)的威脅等級,如圖6 所示。假設(shè)要計(jì)算VM4的威脅等級,VM4和VM2、VM5、VM6曾經(jīng)共存或正在共存,當(dāng)中只有VM2是惡意虛擬機(jī),所以t4=[1 1 1]-([1 1 1]-t2×0.9)=t2×0.9。另外,假設(shè)要計(jì)算VM10的威脅等級,VM10和VM7、VM8、VM12曾經(jīng)共存或正在共存,當(dāng)中VM8和VM12是惡意虛擬機(jī),所以t10=[1 1 1]-([1 1 1]-t8×0.3)×([1 1 1]-t12×0.5)。
圖6 虛擬機(jī)威脅等級示意圖
云環(huán)境的總威脅等級T,就是將所有虛擬機(jī)的威脅等級做加總,計(jì)算方式如下。
每種對策能響應(yīng)的攻擊類型不同,所耗費(fèi)的成本也不同。根據(jù)式(4),由表1的SC、MP 和DOS 3個(gè)欄位產(chǎn)生響應(yīng)對策矩陣C,如式(6)。舉例來說,C(3,2)=1代表對策3可以應(yīng)對惡軟件傳播攻擊,C(4,3)=1代表對策4 可以應(yīng)對拒絕服務(wù)服務(wù)攻擊。由表1 的成本欄位產(chǎn)生成本向量RC,如式(7)。RC()3=0.2 代表對策3擁有低的耗費(fèi)成本。
Abazari 等人提出的云環(huán)境共存攻擊多目標(biāo)響應(yīng)系統(tǒng),已經(jīng)能針對云環(huán)境整體選擇出最適合的響應(yīng)對策,但是存在響應(yīng)時(shí)間過久的問題。因此,本文的訓(xùn)練數(shù)據(jù)就由Abazari 等人提出的模型來產(chǎn)生,步驟如下。
a)產(chǎn)生一個(gè)隨機(jī)的VM共存時(shí)間關(guān)系圖。
b)隨機(jī)挑選約30%的VM作為惡意VM。
c)隨機(jī)產(chǎn)生惡意VM威脅等級。
d)計(jì)算每個(gè)VM的威脅等級。
e)使用Matlab的fgoalattain函數(shù)產(chǎn)生解答。
數(shù)據(jù)生成的部分使用Matlab完成。資料集產(chǎn)生之后,隨機(jī)選取80%作為機(jī)器學(xué)習(xí)的訓(xùn)練數(shù)據(jù),再隨機(jī)選取20%數(shù)據(jù)作為測試數(shù)據(jù)。機(jī)器學(xué)習(xí)使用Scikitlearn 的Ridge regression。Matlab 的fgoalattain 函數(shù)用來計(jì)算多目標(biāo)優(yōu)化的問題,包括線性和非線性,完整程序定義如式(8)所示。其中,weight、goal、b和beq是向量;A和Aeq是矩陣;F(x)、c(x)和ceq(x)是回傳向量的函數(shù),可以為非線性函數(shù);x、lb和ub可以是向量或矩陣。
F(x)是要進(jìn)行多目標(biāo)優(yōu)化的函數(shù),優(yōu)化的目標(biāo)是云環(huán)境總威脅和總成本,如式(9)。
權(quán)重W1和W2分別代表威脅和成本的重要性,用來衡量較低的威脅或較低的成本,其中W=(W1,)W2,W1+W2=1,舉例來說,當(dāng)設(shè)定W1接近0 的時(shí)候,意味著得到的對策會(huì)有高的成本搭配極低威脅的成效。當(dāng)設(shè)定的權(quán)重不同,就會(huì)得到不同的解X,X的定義如式(11)所示,x={ 0,1},其中q為對策數(shù)量,n為虛擬機(jī)數(shù)量,解X會(huì)顯示每個(gè)虛擬機(jī)該使用哪一個(gè)對策。
最后,將權(quán)重W、所有虛擬機(jī)的威脅等級t、解X都轉(zhuǎn)為一維陣列,整合成一列數(shù)據(jù),數(shù)據(jù)表內(nèi)容如表3所示。生成多筆數(shù)據(jù)后輸出成.csv 文檔,方便后續(xù)使用python讀取進(jìn)行機(jī)器學(xué)習(xí)。
表3 數(shù)據(jù)表內(nèi)容
本文提出一個(gè)以機(jī)器學(xué)習(xí)響應(yīng)云環(huán)境共存攻擊的系統(tǒng),為了驗(yàn)證提出的模型具有實(shí)用性,設(shè)計(jì)了以下實(shí)驗(yàn)并和Abazari 等人的模型進(jìn)行比較。在存在50個(gè)虛擬機(jī)的云環(huán)境模擬環(huán)境中,機(jī)器學(xué)習(xí)在響應(yīng)時(shí)間方面比Matlab 快2 296 倍,準(zhǔn)確度為85%,可見訓(xùn)練資料和虛擬機(jī)個(gè)數(shù)的增加可以提升機(jī)器學(xué)習(xí)的準(zhǔn)確度。使用一組固定的威脅等級,并使用不同的權(quán)重,權(quán)重從W=(0.1,0.9)到W=(0.9,0.1),每次增減0.1。分別使用Matlab 和機(jī)器學(xué)習(xí)產(chǎn)生響應(yīng)對策,然后計(jì)算使用對策后云環(huán)境總威脅和總成本,結(jié)果如圖7所示。
圖7 不同權(quán)重下的威脅與成本比較圖
圖7 中Matlab 的點(diǎn)可視為帕雷托最優(yōu)解,而機(jī)器學(xué)習(xí)的曲線也近似于帕雷托最優(yōu)解,并不會(huì)偏離太多。在相同權(quán)重的設(shè)定下,機(jī)器學(xué)習(xí)的解有較高的威脅,但有較低的成本。
從實(shí)驗(yàn)結(jié)果可以看出,傳統(tǒng)方法和本研究的機(jī)器學(xué)習(xí)模型都可以得到針對當(dāng)前環(huán)境適當(dāng)?shù)捻憫?yīng)對策,傳統(tǒng)方法在總威脅和總成本的取舍下得到帕雷托最優(yōu)解,而本研究的機(jī)器學(xué)習(xí)模型可以以高準(zhǔn)確度得到近似的解。在響應(yīng)時(shí)間方面,從實(shí)驗(yàn)的云環(huán)境來看傳統(tǒng)方法需要的響應(yīng)時(shí)間增長了約12倍,而機(jī)器學(xué)習(xí)模型僅增加1.23 倍,資料筆數(shù)的增加和虛擬機(jī)量的增加也讓機(jī)器學(xué)習(xí)的準(zhǔn)確度有所提升,可見在更大量虛擬機(jī)的云環(huán)境中,本文的機(jī)器學(xué)習(xí)模型有更好的效果。