本發(fā)明隸屬于計算機網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,尤其涉及一種基于二元決策圖的防火墻差異性計算方法。
背景技術(shù):
防火墻作為惡意攻擊和非法流量的第一道防線,對于大型企業(yè)網(wǎng)絡(luò)、私人網(wǎng)絡(luò),甚至家庭網(wǎng)絡(luò)都是至關(guān)重要的。防火墻是一種位于內(nèi)部網(wǎng)絡(luò)與外部網(wǎng)絡(luò)之間的網(wǎng)絡(luò)安全系統(tǒng),其主要作用是檢測每個傳入和傳出的數(shù)據(jù)包并決定哪些數(shù)據(jù)包被接受,哪些數(shù)據(jù)包被丟棄,這些往往是根據(jù)一系列的防火墻規(guī)則所決定。然而,隨著網(wǎng)絡(luò)規(guī)模的日益增大和網(wǎng)絡(luò)復(fù)雜性的加劇,防火墻規(guī)則也越來越多,導(dǎo)致一些冗余的防火墻規(guī)則,加之大量安全規(guī)則管理的復(fù)雜性,極大地降低防火墻的安全性能。如何有效地檢測并去除冗余規(guī)則成為了提高防火墻安全的關(guān)鍵技術(shù)之一。
傳統(tǒng)的防火墻冗余去除的核心數(shù)據(jù)結(jié)構(gòu)多是防火墻決策圖,然而此算法只能限于對冗余沖突的識別,并不能實現(xiàn)對沖突源的回溯。另一方面,一個防火墻可能會被同一電腦上的不同管理員所修改,因此,理解并計算防火墻的差異性對于網(wǎng)絡(luò)安全也是至關(guān)重要的。目前很少有基于二元決策圖的計算防火墻的差異性的方法,并能以人類可讀的格式輸出差異性。
技術(shù)實現(xiàn)要素:
發(fā)明目的:本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供了一種有效地防火墻冗余去除和防火墻差異性計算的方法。
技術(shù)方案:本發(fā)明包括了以下步驟:
步驟1:將兩個防火墻轉(zhuǎn)換成兩個二元決策圖;
步驟2:計算兩個二元決策圖的差異性;
步驟3:由兩個二元決策圖生成二進制格式規(guī)則;
步驟4:將二進制格式規(guī)則轉(zhuǎn)換為人類可讀的規(guī)則。
本發(fā)明步驟1中,將防火墻轉(zhuǎn)換成二元決策圖的方法如下:
步驟1-1,將原始防火墻規(guī)則轉(zhuǎn)換成二進制格式:將防火墻規(guī)則轉(zhuǎn)換成一個或兩個以上二進制格式規(guī)則,同時記錄映射關(guān)系,即:一個防火墻規(guī)則映射為一個或者兩個以上二進制格式規(guī)則;
步驟1-2,轉(zhuǎn)換成二元決策圖:將步驟1得到的的每個二進制格式規(guī)則轉(zhuǎn)換成一個二元決策圖;
步驟1-3,對于得到的二元決策圖,向上冗余去除,在向上冗余去除的同時偵測冗余的二進制格式規(guī)則;
步驟1-4,向下冗余去除,在向下冗余去除的同時偵測冗余的二進制格式規(guī)則;
步驟1-5,計算原始的冗余:利用步驟1-4得到的冗余二進制格式規(guī)則和步驟1-1記錄的映射關(guān)系計算原始的防火墻冗余;
步驟1-6,對兩個防火墻分別執(zhí)行步驟1-1~步驟1-5,得到兩個二元決策圖。
本發(fā)明步驟1-1包括以下步驟:
步驟1-1-1,針對每個防火墻規(guī)則,選擇5個字段:源IP地址,目的IP地址,源端口號,目的端口號和協(xié)議類型,對應(yīng)的數(shù)據(jù)包長度分別為32,32,16,16,8,單位為比特,同時加上額外1比特,代表防火墻的決定,則每個二進制規(guī)則的長度是105比特;
步驟1-1-2,記錄映射關(guān)系,即:一個防火墻規(guī)則映射為一個或者兩個以上二進制格式規(guī)則。
本發(fā)明步驟1-3包括以下步驟:
步驟1-3-1,輸入每個二進制格式規(guī)則相對應(yīng)的二元決策圖集b[1…n],b[n]表示第n個二進制格式規(guī)則相對應(yīng)的二元決策圖,令CuddBddOr表示合并兩個二元決策圖,CuddBddLeq用于檢測一個二元決策圖是否被另一個二元決策圖所暗含,CuddBddAnd用于計算兩個二元決策圖的交集,CuddNot用于計算一個二元決策圖的補集;
步驟1-3-2,第i個冗余標(biāo)簽記為redunbant[i],初始設(shè)置redunbant[i]=false,i=1,…,n,建立一個空的二元決策圖ball,并令下標(biāo)i=0;
步驟1-3-3,將i更新為i=i+1,如果二元決策圖b[i]被二元決策圖ball所包含,設(shè)置冗余標(biāo)簽為真,即redunbant[i]=true;否則設(shè)置冗余標(biāo)簽為假,即redunbant[i]=false,冗余標(biāo)簽為二元決策圖b[i]和二元決策圖ball的補集的交集,即:resolving[i]=CuddBddAnd(b[i],CuddNot(ball)),CuddNot(ball)表示二元決策圖ball的補集,CuddBddAnd(b[i],CuddNot(ball))表示二元決策圖b[i]和二元決策圖ball的補集的交集;
令二元決策圖ball為二元決策圖b[i]和ball的并集,即:ball=CuddBddOr(b[i],ball),CuddBddOr(b[i],ball)表示二元決策圖b[i]和二元決策圖ball的并集;
步驟1-3-4,重復(fù)步驟1-3-3,共計n次;
步驟1-3-5,輸出冗余標(biāo)簽序列redunbant[1…n]和規(guī)則解析集resolving[1…n],redunbant[n]表示第n個冗余標(biāo)簽,resolving[n]表示第n個規(guī)則解析。
本發(fā)明步驟1-4包括以下步驟:
步驟1-4-1,輸入每個二進制格式規(guī)則相對應(yīng)的二元決策圖集b[1…n],輸入每個二進制格式規(guī)則的決策集decision[1…n]、規(guī)則解析集resolving[1…n],以及步驟1-3中計算出的冗余標(biāo)簽序列redunbant[1…n],decision[n]表示第n個二進制格式規(guī)則的決策;
步驟1-4-2,建立一個空的二元決策圖ball,下標(biāo)i=n+1;
步驟1-4-3,將i更新為i=i-1,如果冗余標(biāo)簽為假,決策為接受,且規(guī)則解析集被二元決策圖ball包含,即CuddBddLeq(resolving[i],ball)),CuddBddLeq(resolving[i],ball))表示第i個規(guī)則解析集resolving[i]被二元決策圖ball包含,令冗余標(biāo)簽為真,即redunbant[i]=true;否則二元決策圖ball為b[i]和ball的并集,即ball=CuddBddOr(b[i],ball),CuddBddOr(b[i],ball)表示合并二元決策圖b[i]和ball;否則將冗余標(biāo)簽更新為resolving[i]的補集,即resolving[i]=CuddNot(resolving[i]),CuddNot(resolving[i])表示resolving[i]的補集,并令中間變量btmp為二元決策圖b[i]的補集,即btmp=CubbNot(b[i]);如果ball被冗余標(biāo)簽resolving[i]所包含,即CuddBddLeq(ball,resolving[i]),則令冗余標(biāo)簽為真,即redundant[i]=true;否則令二元決策圖ball為中間變量btmp和ball的交集;
步驟1-4-4,重復(fù)步驟1-4-3,共計n次;
步驟1-4-5,輸出最終的冗余標(biāo)簽序列redunbant[1…n]。
本發(fā)明步驟1-5包括以下步驟:
步驟1-5-1,輸入映射關(guān)系mapping[1…m],mapping[m]表示第m個映射關(guān)系,其中m是原始防火墻規(guī)則數(shù)目;對于每個二進制格式規(guī)則,backmapping[1…n]存儲著相應(yīng)的原始防火墻規(guī)則數(shù)目,backmapping[n]表示第n個原始防火墻規(guī)則,其中n是二進制格式規(guī)則數(shù)目;輸入由步驟1-4計算出的冗余標(biāo)簽序列redunbant[1…n];
步驟1-5-2,令最終的冗余標(biāo)簽序列finalredundant[i]為假,即finalredundant[i]=false,i=1,…,m,下標(biāo)i=0;
步驟1-5-3,將i更新為i=i+1,若冗余標(biāo)簽為真,設(shè)置臨時變量t為第i個二進制格式規(guī)則中原始防火墻規(guī)則數(shù)目backmapping[i],即t=backmapping[i];令第t個映射關(guān)系減1,即mapping[t]=mapping[t]-1;如果第t個映射關(guān)系為0,令最終的冗余標(biāo)簽finalredundant[t]為真,即finalredundant[t]=true;
步驟1-5-4,重復(fù)步驟1-5-3,共計n次;
步驟1-5-5,輸出最終的冗余標(biāo)簽序列finalredundant[1…m]。
本發(fā)明步驟2包括以下步驟:
步驟2-1,兩個防火墻分別表示為f1和f2,他們相對的二元決策圖分別為bdd1和bdd2;
步驟2-2,分別計算兩個防火墻的差異性:
bddDiff1=bdd1-bdd2,
bddDiff2=bdd2-bdd1,
其中bddDiff1是被一個防火墻接受的謂詞以及被兩個防火墻都丟棄的謂詞的集合,bddDiff2是同時被兩個防火墻接受的謂詞以及被一個防火墻丟棄的謂詞的集合;
步驟2-3,計算二元決策圖的差異:
bdd1-bdd2=CuddBddAnd(bdd1,CuddNot(bdd2))。
本發(fā)明步驟3包括以下步驟:
步驟3-1,輸入二元決策圖的節(jié)點b,并初始化此節(jié)點為二元決策圖的根節(jié)點;用整數(shù)變量depth表示當(dāng)前節(jié)點的深度;
步驟3-2,如果節(jié)點b是一個終端節(jié)點,獲取此節(jié)點的決定,如果此決定是接受,使用遍歷路徑traversalPath[1…depth]和遍歷節(jié)點traversalNode[1…depth]中的信息得到二進制格式規(guī)則;否則令遍歷節(jié)點traversalPath[depth]為當(dāng)前編號,遍歷路徑為1,即traversalPath[depth]=1,然后輸入節(jié)點b的左子節(jié)點,深度為depth+1;
步驟3-3,輸出相應(yīng)的二進制規(guī)則。
本發(fā)明步驟4包括以下步驟:
步驟4-1,將一個二進制規(guī)則分解成兩個以上的字段;
步驟4-2,將每個字段的二進制轉(zhuǎn)化成一個或者兩個以上詞頭;
步驟4-3,將步驟4-2得到的結(jié)果組成全部的詞頭規(guī)則,其中每個詞頭規(guī)則相對應(yīng)于一個人類可讀的規(guī)則。
有益效果:本發(fā)明通過一個實例和多個大型防火墻案例,且每個大型案例都有多余30000條防火墻規(guī)則,通過實驗結(jié)果可以得出,基于防火墻決策圖的方法會遭遇內(nèi)存爆炸的窘境,然而本發(fā)明中的去冗余方法可以在很短時間內(nèi)計算出冗余數(shù)目,表明基于二元決策圖的防火墻冗余去除方法比基于防火墻決策圖的方法更加穩(wěn)定。同時,本發(fā)明中的防火墻差異性計算方法不僅比傳統(tǒng)的基于防火墻決策圖的方法更加快速,而且更具有可擴展性。
附圖說明
下面結(jié)合附圖和具體實施方式對本發(fā)明做更進一步的具體說明,本發(fā)明的上述或其他方面的優(yōu)點將會變得更加清楚。
圖1本發(fā)明中基于二元決策圖的防火墻冗余去除的基本流程圖。
圖2本發(fā)明中基于二元決策圖的防火墻差異性計算的基本流程圖。
具體實施方式
下面結(jié)合附圖及實施例對本發(fā)明做進一步說明。
本發(fā)明公開了一種基于二元決策圖的防火墻差異性計算方法,如圖2所示,本發(fā)明包括了以下步驟:
步驟1:將兩個防火墻轉(zhuǎn)換成兩個二元決策圖;
步驟2:計算兩個二元決策圖的差異性;
步驟3:由兩個二元決策圖生成二進制格式規(guī)則;
步驟4:將二進制格式規(guī)則轉(zhuǎn)換為人類可讀的規(guī)則。
如圖1所示,本發(fā)明步驟1中,將防火墻轉(zhuǎn)換成二元決策圖的方法如下:
步驟1-1,將原始防火墻規(guī)則轉(zhuǎn)換成二進制格式:將防火墻規(guī)則轉(zhuǎn)換成一個或兩個以上二進制格式規(guī)則,同時記錄映射關(guān)系,即:一個防火墻規(guī)則映射為一個或者兩個以上二進制格式規(guī)則;
步驟1-2,轉(zhuǎn)換成二元決策圖:將步驟1得到的的每個二進制格式規(guī)則轉(zhuǎn)換成一個二元決策圖;
步驟1-3,對于得到的二元決策圖,向上冗余去除,在向上冗余去除的同時偵測冗余的二進制格式規(guī)則;
步驟1-4,向下冗余去除,在向下冗余去除的同時偵測冗余的二進制格式規(guī)則;
步驟1-5,計算原始的冗余:利用步驟1-4得到的冗余二進制格式規(guī)則和步驟1-1記錄的映射關(guān)系計算原始的防火墻冗余;
步驟1-6,對兩個防火墻分別執(zhí)行步驟1-1~步驟1-5,得到兩個二元決策圖。
本發(fā)明步驟1-1包括以下步驟:
步驟1-1-1,針對每個防火墻規(guī)則,選擇5個字段:源IP地址,目的IP地址,源端口號,目的端口號和協(xié)議類型,對應(yīng)的數(shù)據(jù)包長度分別為32,32,16,16,8,單位為比特,同時加上額外1比特,代表防火墻的決定,則每個二進制規(guī)則的長度是105比特;
步驟1-1-2,記錄映射關(guān)系,即:一個防火墻規(guī)則映射為一個或者兩個以上二進制格式規(guī)則。
本發(fā)明步驟1-3包括以下步驟:
步驟1-3-1,輸入每個二進制格式規(guī)則相對應(yīng)的二元決策圖集b[1…n],b[n]表示第n個二進制格式規(guī)則相對應(yīng)的二元決策圖,令CuddBddOr表示合并兩個二元決策圖,CuddBddLeq用于檢測一個二元決策圖是否被另一個二元決策圖所暗含,CuddBddAnd用于計算兩個二元決策圖的交集,CuddNot用于計算一個二元決策圖的補集;
步驟1-3-2,第i個冗余標(biāo)簽記為redunbant[i],初始設(shè)置redunbant[i]=false,i=1,…,n,建立一個空的二元決策圖ball,并令下標(biāo)i=0;
步驟1-3-3,將i更新為i=i+1,如果二元決策圖b[i]被二元決策圖ball所包含,設(shè)置冗余標(biāo)簽為真,即redunbant[i]=true;否則設(shè)置冗余標(biāo)簽為假,即redunbant[i]=false,冗余標(biāo)簽為二元決策圖b[i]和二元決策圖ball的補集的交集,即:resolving[i]=CuddBddAnd(b[i],CuddNot(ball)),CuddNot(ball)表示二元決策圖ball的補集,CuddBddAnd(b[i],CuddNot(ball))表示二元決策圖b[i]和二元決策圖ball的補集的交集;
令二元決策圖ball為二元決策圖b[i]和ball的并集,即:ball=CuddBddOr(b[i],ball),CuddBddOr(b[i],ball)表示二元決策圖b[i]和二元決策圖ball的并集;
步驟1-3-4,重復(fù)步驟1-3-3,共計n次;
步驟1-3-5,輸出冗余標(biāo)簽序列redunbant[1…n]和規(guī)則解析集resolving[1…n],redunbant[n]表示第n個冗余標(biāo)簽,resolving[n]表示第n個規(guī)則解析。
本發(fā)明步驟1-4包括以下步驟:
步驟1-4-1,輸入每個二進制格式規(guī)則相對應(yīng)的二元決策圖集b[1…n],輸入每個二進制格式規(guī)則的決策集decision[1…n]、規(guī)則解析集resolving[1…n],以及步驟1-3中計算出的冗余標(biāo)簽序列redunbant[1…n],decision[n]表示第n個二進制格式規(guī)則的決策;
步驟1-4-2,建立一個空的二元決策圖ball,下標(biāo)i=n+1;
步驟1-4-3,將i更新為i=i-1,如果冗余標(biāo)簽為假,決策為接受,且規(guī)則解析集被二元決策圖ball包含,即CuddBddLeq(resolving[i],ball)),CuddBddLeq(resolving[i],ball))表示第i個規(guī)則解析集resolving[i]被二元決策圖ball包含,令冗余標(biāo)簽為真,即redunbant[i]=true;否則二元決策圖ball為b[i]和ball的并集,即ball=CuddBddOr(b[i],ball),CuddBddOr(b[i],ball)表示合并二元決策圖b[i]和ball;否則將冗余標(biāo)簽更新為resolving[i]的補集,即resolving[i]=CuddNot(resolving[i]),CuddNot(resolving[i])表示resolving[i]的補集,并令中間變量btmp為二元決策圖b[i]的補集,即btmp=CubbNot(b[i]);如果ball被冗余標(biāo)簽resolving[i]所包含,即CuddBddLeq(ball,resolving[i]),則令冗余標(biāo)簽為真,即redundant[i]=true;否則令二元決策圖ball為中間變量btmp和ball的交集;
步驟1-4-4,重復(fù)步驟1-4-3,共計n次;
步驟1-4-5,輸出最終的冗余標(biāo)簽序列redunbant[1…n]。
本發(fā)明步驟1-5包括以下步驟:
步驟1-5-1,輸入映射關(guān)系mapping[1…m],mapping[m]表示第m個映射關(guān)系,其中m是原始防火墻規(guī)則數(shù)目;對于每個二進制格式規(guī)則,backmapping[1…n]存儲著相應(yīng)的原始防火墻規(guī)則數(shù)目,backmapping[n]表示第n個原始防火墻規(guī)則,其中n是二進制格式規(guī)則數(shù)目;輸入由步驟1-4計算出的冗余標(biāo)簽序列redunbant[1…n];
步驟1-5-2,令最終的冗余標(biāo)簽序列finalredundant[i]為假,即finalredundant[i]=false,i=1,…,m,下標(biāo)i=0;
步驟1-5-3,將i更新為i=i+1,若冗余標(biāo)簽為真,設(shè)置臨時變量t為第i個二進制格式規(guī)則中原始防火墻規(guī)則數(shù)目backmapping[i],即t=backmapping[i];令第t個映射關(guān)系減1,即mapping[t]=mapping[t]-1;如果第t個映射關(guān)系為0,令最終的冗余標(biāo)簽finalredundant[t]為真,即finalredundant[t]=true;
步驟1-5-4,重復(fù)步驟1-5-3,共計n次;
步驟1-5-5,輸出最終的冗余標(biāo)簽序列finalredundant[1…m]。
本發(fā)明步驟2包括以下步驟:
步驟2-1,兩個防火墻分別表示為f1和f2,他們相對的二元決策圖分別為bdd1和bdd2;
步驟2-2,分別計算兩個防火墻的差異性:
bddDiff1=bdd1-bdd2,
bddDiff2=bdd2-bdd1,
其中bddDiff1是被一個防火墻接受的謂詞以及被兩個防火墻都丟棄的謂詞的集合,bddDiff2是同時被兩個防火墻接受的謂詞以及被一個防火墻丟棄的謂詞的集合;
步驟2-3,計算二元決策圖的差異:
bdd1-bdd2=CuddBddAnd(bdd1,CuddNot(bdd2))。
本發(fā)明步驟3包括以下步驟:
步驟3-1,輸入二元決策圖的節(jié)點b,并初始化此節(jié)點為二元決策圖的根節(jié)點;用整數(shù)變量depth表示當(dāng)前節(jié)點的深度;
步驟3-2,如果節(jié)點b是一個終端節(jié)點,獲取此節(jié)點的決定,如果此決定是接受,使用遍歷路徑traversalPath[1…depth]和遍歷節(jié)點traversalNode[1…depth]中的信息得到二進制格式規(guī)則;否則令遍歷節(jié)點traversalPath[depth]為當(dāng)前編號,遍歷路徑為1,即traversalPath[depth]=1,然后輸入節(jié)點b的左子節(jié)點,深度為depth+1;
步驟3-3,輸出相應(yīng)的二進制規(guī)則。
本發(fā)明步驟4包括以下步驟:
步驟4-1,將一個二進制規(guī)則分解成兩個以上的字段;
步驟4-2,將每個字段的二進制轉(zhuǎn)化成一個或者兩個以上詞頭;
步驟4-3,將步驟4-2得到的結(jié)果組成全部的詞頭規(guī)則,其中每個詞頭規(guī)則相對應(yīng)于一個人類可讀的規(guī)則。
實施例
本實施的實驗硬件環(huán)境是:Intel-Core4i767003.4GHz,16G內(nèi)存,顯卡NVIDIAGeForce GTX950。
實例一:本實例中選取基于防火墻決策圖的方法作為比較方法,首先通過比較一些真實實例,表1中給出了各方法的性能比較結(jié)果??梢钥闯龌诙獩Q策圖的方法比一般的基于防火墻決策圖的方法計算更加快,尤其是對于原始防火墻規(guī)則數(shù)目87,原始冗余規(guī)則數(shù)目2的實例,本發(fā)明中的方法比基于防火墻決策圖方法快65倍(如表1所示)。
表1
為了進一步說明本發(fā)明中算法對于防火墻冗余去除的有效性,本實例還測試了一些大型防火墻案例,且每個案例都有多余30000條防火墻規(guī)則。通過實驗結(jié)果可以得出,基于防火墻決策圖的方法會遭遇內(nèi)存爆炸的窘境,然而本發(fā)明中的去冗余方法可以在20秒內(nèi)計算出冗余數(shù)目。表2記載了本發(fā)明方法對大型防火墻案例的冗余去除的統(tǒng)計信息。由此實例可以得出,本發(fā)明中的去冗余方法不僅比傳統(tǒng)的基于防火墻決策圖的方法更加快速,而且更具有可擴展性。
表2
實例二:本實例主要注重于一個或者兩個防火墻規(guī)則的變化導(dǎo)致的差異影響分析。本實例選取三個真正的防火墻,分別包含了42,87,661個防火墻規(guī)則。對于每個防火墻,分別實施三類實驗案例,即(1)隨機刪除原始防火墻的一個規(guī)則以檢測防火墻的差異性,如表3所示;(2)隨機修改原始防火墻的一個規(guī)則的決定以檢測防火墻的差異性,如表4所示;(3)隨機交換兩個規(guī)則以檢測防火墻的差異性,如表5所示。為了實驗的真實性,本實例對每個案例重復(fù)50次,并對實驗結(jié)果均值化,如表3-表5中的實驗結(jié)果所示。實驗結(jié)果表明隨著防火墻規(guī)則數(shù)目的增大,本方法重建時間隨之變長。二元決策圖計算可在1毫秒內(nèi)結(jié)束。
表3
表4
表5
本發(fā)明提供了一種基于二元決策圖的防火墻差異性計算方法,具體實現(xiàn)該技術(shù)方案的方法和途徑很多,以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。本實施例中未明確的各組成部分均可用現(xiàn)有技術(shù)加以實現(xiàn)。