吳正江,姚 琪,馮四風(fēng),顧 青
(1.河南理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,河南 焦作 454000;2.普華誠(chéng)信信息技術(shù)有限公司,上海 201499)
通過(guò)分析近幾年發(fā)生的網(wǎng)絡(luò)安全事件可以發(fā)現(xiàn),攻擊者利用軟件系統(tǒng)存在的漏洞或后門進(jìn)行網(wǎng)絡(luò)攻擊是常見(jiàn)的攻擊方式,而傳統(tǒng)防御機(jī)制注重系統(tǒng)邊界防御[1-2]。攻擊者一旦通過(guò)邊界防御,則被系統(tǒng)認(rèn)為是內(nèi)部用戶,認(rèn)定其不會(huì)對(duì)系統(tǒng)造成威脅??梢?jiàn),傳統(tǒng)防御機(jī)制過(guò)于信任內(nèi)部用戶、事和物,忽略了系統(tǒng)內(nèi)部安全性,從而加大內(nèi)部被攻擊和注入的概率[3-4]。為應(yīng)對(duì)傳統(tǒng)防御機(jī)制中的安全缺陷,鄔江興[5]提出網(wǎng)絡(luò)空間擬態(tài)防御,結(jié)合動(dòng)態(tài)異構(gòu)冗余架構(gòu)[6]、調(diào)度策略[7-9]和裁決策略[10-11],通過(guò)動(dòng)態(tài)調(diào)整內(nèi)部環(huán)境,達(dá)到主動(dòng)防御外部攻擊并發(fā)現(xiàn)內(nèi)部威脅的目標(biāo)[12-13]。在面對(duì)內(nèi)部攻擊/注入時(shí),裁決策略判斷執(zhí)行體是否可信,若不可信則通過(guò)負(fù)反饋機(jī)制下線異常執(zhí)行體進(jìn)行清洗恢復(fù)。裁決策略作為復(fù)制控制方法及屏蔽故障的復(fù)本技術(shù),在系統(tǒng)容忍入侵時(shí)發(fā)揮關(guān)鍵作用[14-16]。
現(xiàn)有的裁決策略主要有自適應(yīng)的一致性表決算法[17]、自檢測(cè)多數(shù)一致表決算法[18]、基于執(zhí)行體異構(gòu)度的一致表決擬態(tài)裁決優(yōu)化方法等[19],系統(tǒng)運(yùn)行時(shí)間為異構(gòu)冗余執(zhí)行體中最長(zhǎng),且仲裁效率也較低。競(jìng)賽式多數(shù)一致表決模型[20]對(duì)領(lǐng)先的輸出結(jié)果執(zhí)行仲裁,通過(guò)增加執(zhí)行體數(shù)量提高仲裁效率,但仲裁結(jié)果的正確性無(wú)法保證,仲裁可能會(huì)出現(xiàn)差模逃逸現(xiàn)象。數(shù)據(jù)庫(kù)日志記錄了數(shù)據(jù)庫(kù)內(nèi)部執(zhí)行的所有操作信息。數(shù)據(jù)庫(kù)管理人員可以通過(guò)日志對(duì)數(shù)據(jù)庫(kù)進(jìn)行安全審計(jì)和異常檢測(cè),并從大量日志文件中分析并挖掘出所需信息[21-23]。本文結(jié)合數(shù)據(jù)庫(kù)日志挖掘和模式匹配算法[24-25],提出一種基于數(shù)據(jù)庫(kù)二進(jìn)制日志的競(jìng)賽式仲裁優(yōu)化方案。當(dāng)競(jìng)賽式仲裁模型輸出結(jié)果不一致時(shí),通過(guò)對(duì)異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體二進(jìn)制日志文件中的操作記錄進(jìn)行查找匹配,將日志匹配結(jié)果與仲裁結(jié)果進(jìn)行校驗(yàn),判斷仲裁結(jié)果的正確性。
本文提出的競(jìng)賽式仲裁優(yōu)化方案將數(shù)據(jù)庫(kù)二進(jìn)制日志未受到篡改作為可信根,研究仲裁結(jié)果的正確率。當(dāng)異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體輸出結(jié)果不一致時(shí),根據(jù)不同的輸出結(jié)果出現(xiàn)頻次對(duì)異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體進(jìn)行分類,從與仲裁結(jié)果一致且輸出結(jié)果頻次最高的分類中任取一個(gè)異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體,從與仲裁結(jié)果不一致且輸出結(jié)果頻次最低的分類中任取一個(gè)異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體,分別對(duì)這兩個(gè)異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體的二進(jìn)制日志文件進(jìn)行查找匹配,以匹配頻次少的二進(jìn)制日志文件作為匹配結(jié)果,將匹配結(jié)果與仲裁結(jié)果進(jìn)行校驗(yàn),依據(jù)校驗(yàn)結(jié)果判斷仲裁結(jié)果是否正確。與競(jìng)賽式仲裁方案相比,本文方案提高了仲裁結(jié)果的正確率,能有效避免針對(duì)SQL注入攻擊的差模逃逸現(xiàn)象。
競(jìng)賽式多數(shù)一致表決模型對(duì)輸出速率最快的前m個(gè)異構(gòu)執(zhí)行體輸出結(jié)果進(jìn)行表決,當(dāng)m-1 個(gè)異構(gòu)執(zhí)行體處于同一失效空間時(shí),競(jìng)賽式多數(shù)一致表決模型會(huì)將錯(cuò)誤仲裁結(jié)果認(rèn)為是正確結(jié)果輸出。該仲裁方式難以應(yīng)對(duì)差模逃逸,會(huì)增加錯(cuò)誤結(jié)果仲裁通過(guò)概率,降低仲裁正確率。競(jìng)賽式多數(shù)一致表決模型如圖1 所示。
圖1 競(jìng)賽式多數(shù)一致表決模型Fig.1 Competitive majority unanimous voting model
基于數(shù)據(jù)庫(kù)二進(jìn)制日志的競(jìng)賽式仲裁優(yōu)化模型如圖2 所示,其主要構(gòu)成如下:
1)調(diào)度器。在初始狀態(tài)下,調(diào)度器將輸入信息轉(zhuǎn)發(fā)給所有異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體。根據(jù)收到的異常反饋信息對(duì)異常的在線執(zhí)行體進(jìn)行調(diào)度及下線清洗。
2)結(jié)果棧。在初始狀態(tài)下,開(kāi)辟一個(gè)大小為m(m∈[3,n])的??臻g,按照異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體結(jié)果輸出的先后次序,依次將輸出結(jié)果保存在棧中。
3)多模裁決表決器。多模裁決表決器對(duì)保存在結(jié)果棧中的輸出結(jié)果集采用多數(shù)一致表決算法進(jìn)行仲裁。
4)二進(jìn)制日志校驗(yàn)。從選取的異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體中查找二進(jìn)制日志文件進(jìn)行字符串匹配,統(tǒng)計(jì)匹配次數(shù),判定匹配次數(shù)少的執(zhí)行體輸出結(jié)果為匹配結(jié)果,將其與仲裁結(jié)果進(jìn)行比較,校驗(yàn)仲裁結(jié)果的正確性。
圖2 基于數(shù)據(jù)庫(kù)二進(jìn)制日志的競(jìng)賽式仲裁優(yōu)化模型Fig.2 Optimization model of competitive arbitration based on binary database log
基于數(shù)據(jù)庫(kù)二進(jìn)制日志的競(jìng)賽式仲裁優(yōu)化方案的表決流程如圖3 所示,具體流程如下:
1)采用多數(shù)一致性表決算法對(duì)結(jié)果棧中保存的m個(gè)異構(gòu)執(zhí)行體輸出結(jié)果進(jìn)行仲裁,若仲裁失敗則輸出異常,若仲裁成功則執(zhí)行步驟2。
2)比較m個(gè)輸出結(jié)果,若輸出結(jié)果相同的最大頻次為,則執(zhí)行步驟4,否則執(zhí)行步驟3。
5)查找匹配相同時(shí)間段內(nèi)(上一次日志更新時(shí)間到本次輸出執(zhí)行體結(jié)果的時(shí)間)A和B的二進(jìn)制日志中增刪改操作記錄,統(tǒng)計(jì)匹配次數(shù),判定匹配次數(shù)少的執(zhí)行體輸出結(jié)果為匹配結(jié)果,執(zhí)行步驟6。
6)校驗(yàn)匹配結(jié)果與仲裁結(jié)果是否一致:若結(jié)果一致,則執(zhí)行步驟7;若結(jié)果不一致,則仲裁失敗,存在差模逃逸,輸出匹配結(jié)果,同時(shí)輸出異常警告。
7)輸出仲裁結(jié)果。
圖3 基于數(shù)據(jù)庫(kù)二進(jìn)制日志的競(jìng)賽式仲裁優(yōu)化方案的表決流程Fig.3 Voting process of optimization scheme of competitive arbitration based on binary database log
X:n個(gè)異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體集。
Y:n個(gè)異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體輸出結(jié)果集。
R:輸出結(jié)果最快的前m個(gè)異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體集,R={r1,r2,…,rk}。
F:R對(duì)應(yīng)的二進(jìn)制日志集,F(xiàn)={f1,f2,…,fk},1≤k≤m。
S:結(jié)果棧中的輸出結(jié)果集,S={s1,s2,…,sk}。
sj:異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體的輸出結(jié)果,sj∈S?Y。
Hj:輸出結(jié)果相同的執(zhí)行體集,Hj={r1,r2,…,rj}。
rj:異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體,rj∈R?X,1≤j≤k。
H:按照輸出結(jié)果的不同對(duì)R進(jìn)行分類,H={H1,H2,…,Hk},H1∪H2∪…∪Hk=R,Hi∩Hj=?,i≠j,1<i≤k。
P:每種分類中的執(zhí)行體個(gè)數(shù),P={P1,P2,…,Pk},Pj=|Hj|。
差模逃逸:在N個(gè)異構(gòu)執(zhí)行體中,若N-1 個(gè)執(zhí)行體處于同一個(gè)失效空間,則可能出現(xiàn)N-1 個(gè)執(zhí)行體輸出結(jié)果相同且都不正確的情況,此時(shí)仲裁機(jī)制會(huì)將不正確的結(jié)果認(rèn)為是正確的輸出,該現(xiàn)象在擬態(tài)防御中被稱為N-1 模逃逸現(xiàn)象或者差模逃逸現(xiàn)象。
多數(shù)一致表決算法的具體步驟如下:
1)對(duì)比S中的sj,將輸出相同sj的rj放入同一個(gè)集合Hj中,此時(shí)Hj中有Pj個(gè)元素。
2)當(dāng)Pj=max(P1,P2,…,Pk)時(shí):
在情況1 中可能出現(xiàn)差模逃逸,造成錯(cuò)誤結(jié)果仲裁通過(guò)概率增加。在情況2 中可能會(huì)在仲裁結(jié)果為正確結(jié)果時(shí),輸出異常警告,降低了輸出結(jié)果正確且裁決通過(guò)的概率。例如,當(dāng)時(shí),若個(gè)執(zhí)行體輸出結(jié)果相同且不正確,另外個(gè)執(zhí)行體輸出結(jié)果相同且正確,則仲裁結(jié)果有50%的概率為正確結(jié)果。
基于數(shù)據(jù)庫(kù)二進(jìn)制日志的競(jìng)賽式仲裁校驗(yàn)算法的具體步驟如下:
1)多數(shù)一致表決算法對(duì)S仲裁,結(jié)果記為T。
2)當(dāng)存在Pj和Pl且Pj=max(P1,P2,…,Pk)、Pl=mi n(P1,P2,…,Pk)時(shí),可分為以下情況:
3)分別從rA和rB中查找二進(jìn)制日志文件fA、fB∈F,在fA和fB中依據(jù)特征關(guān)鍵字對(duì)增刪改操作日志進(jìn)行匹配,匹配頻次分別記為qA和qB,將q對(duì)應(yīng)的執(zhí)行體輸出結(jié)果記為匹配結(jié)果Q,q=min(qA,qB)。
4)對(duì)Q和T進(jìn)行校驗(yàn):若Q=T,則仲裁成功,輸出T;若Q≠T,則仲裁失敗,存在差模逃逸,輸出Q。
假定各異構(gòu)執(zhí)行體之間相互獨(dú)立且互不干擾,在輸出結(jié)果已保存在結(jié)果棧的前提下,將CAA(輸出結(jié)果正確且裁決通過(guò))、CAF(輸出結(jié)果正確但裁決未通過(guò))、IAA(輸出結(jié)果錯(cuò)誤但裁決通過(guò))、IAF(輸出結(jié)果錯(cuò)誤且裁決未通過(guò))作為衡量本文方案安全性的主要指標(biāo)。為簡(jiǎn)化實(shí)驗(yàn)?zāi)P?,在?shí)驗(yàn)1 和實(shí)驗(yàn)3 中取m=3,以MariaDB、MySQL 和Oracle 作為3 個(gè)異構(gòu)數(shù)據(jù)庫(kù)執(zhí)行體。實(shí)驗(yàn)1 和實(shí)驗(yàn)3 中3 個(gè)異構(gòu)數(shù)據(jù)庫(kù)信息如表1 所示。
表1 異構(gòu)數(shù)據(jù)庫(kù)信息Table 1 Heterogeneous database information
本文根據(jù)S的不同進(jìn)行分類H={H1,H2,…,Hm},假定輸出結(jié)果正確的空間為H1,結(jié)果棧中模擬產(chǎn)生的結(jié)果多數(shù)落在空間H1中。采用競(jìng)賽式多數(shù)一致表決方案和本文方案進(jìn)行1 萬(wàn)次仲裁,每次實(shí)驗(yàn)時(shí)注入一些異常數(shù)據(jù),用來(lái)調(diào)整輸出結(jié)果正確和輸出結(jié)果不正確之間的比例,在注入異常時(shí)確保出現(xiàn)差模逃逸。實(shí)驗(yàn)中執(zhí)行體輸出正確結(jié)果的概率為84.418 8%,輸出錯(cuò)誤結(jié)果的概率為15.581 2%,即H1=84.418 8%。
實(shí)驗(yàn)1采用競(jìng)賽式多數(shù)一致表決方案和本文方案分別對(duì)S進(jìn)行仲裁。通過(guò)CAA、CAF、IAA 和IAF 這4 項(xiàng)安全指標(biāo)可以發(fā)現(xiàn),相比競(jìng)賽式多數(shù)一致表決方案,本文方案的CAA 和IAF 的仲裁結(jié)果正確率分別提高了3.085 9和7.716 6個(gè)百分點(diǎn),CAF和IAA的仲裁結(jié)果正確率分別降低了3.085 9 和7.716 6 個(gè)百分點(diǎn),由此可見(jiàn)本文方案可以有效降低CAF、IAA 中差模逃逸的概率,實(shí)驗(yàn)結(jié)果如圖4 所示。
圖4 競(jìng)賽式多數(shù)一致表決方案與本文方案的安全性對(duì)比Fig.4 Security comparison between the competitive majority unanimous voting scheme and the proposed scheme
實(shí)驗(yàn)2在保證每個(gè)異構(gòu)執(zhí)行體輸出結(jié)果正確率相同的情況下,通過(guò)調(diào)整m值比較CAA 和IAA 的仲裁結(jié)果正確率變化情況。如圖5、圖6 所示,隨著m值的增加,競(jìng)賽式多數(shù)一致表決方案和本文方案的CAA 和IAA 仲裁結(jié)果正確率整體呈現(xiàn)上升趨勢(shì)。在仲裁執(zhí)行體數(shù)目一致的情況下,本文方案相比競(jìng)賽式多數(shù)一致表決方案仲裁結(jié)果正確率更高,并且安全性和可靠性更好。
圖5 競(jìng)賽式多數(shù)一致表決方案和本文方案的CAA 仲裁結(jié)果正確率比較Fig.5 Comparison of the correct rate of CAA arbitration results between the competitive majority unanimous voting scheme and the proposed scheme
圖6 競(jìng)賽式多數(shù)一致表決方案與本文方案的IAA 仲裁結(jié)果正確率比較Fig.6 Comparison of the correct rate of IAA arbitration results between the competitive majority unanimous voting scheme and the proposed scheme
將本文方案和KMP 算法[26]查找匹配二進(jìn)制日志文件fA和fB的擬態(tài)系統(tǒng)記為方案1,系統(tǒng)總執(zhí)行時(shí)間記為GT1;將本文方案和Sunday 算法[25]查找匹配fA和fB的擬態(tài)系統(tǒng)記為方案2,系統(tǒng)總執(zhí)行時(shí)間記為GT2;將競(jìng)賽式多數(shù)一致表決方案的擬態(tài)系統(tǒng)記為方案3,系統(tǒng)總執(zhí)行時(shí)間記為GT3。在相同條件下,方案1 相比方案3 降低的執(zhí)行效率記為KMP-E,方案2相比方案3 降低的執(zhí)行效率記為Sunday-E。
實(shí)驗(yàn)3在3 種方案中注入異常使得執(zhí)行體異常個(gè)數(shù)為0、1、2 和3,且每種情況重復(fù)執(zhí)行1 000 次。如表2 所示,“—”表示在執(zhí)行體異常個(gè)數(shù)為0 和3 時(shí)上述3 種方案均不涉及日志文件,因此GT1、GT2和GT3均與fA和fB大小無(wú)關(guān)。在執(zhí)行體皆正常和皆異常的情況下,3 種方案耗時(shí)相同。在執(zhí)行體出現(xiàn)異常的情況下,方案1 和方案2 隨fA和fB呈線性增加,GT1和GT2也呈現(xiàn)線性增加。
表2 系統(tǒng)總執(zhí)行時(shí)間與fA 和fB 的關(guān)系Table 2 The relationship between the total execution time of the system and fA,fB
在執(zhí)行體出現(xiàn)異常時(shí),KMP-E 和Sunday-E 隨二進(jìn)制日志文件fA和fB呈線性增加(yKMP=0.219 7x-0.078 7 和ySunday=0.124 9x+0.017 1),采用Sunday 算法的方案2 執(zhí)行效率優(yōu)于采用KMP 算法的方案1,因此本文方案的執(zhí)行效率高低取決于選用模式匹配算法的執(zhí)行效率,若模式匹配算法查找匹配fA和fB耗時(shí)越短,則本文方案耗時(shí)越短。執(zhí)行效率KMP-E 和Sunday-E 隨fA和fB的變化情況如圖7 所示。
圖7 異常情況下執(zhí)行效率隨fA 和fB 的變化情況Fig.7 Changes of execution efficiency with fA and fB under abnormal situations
由實(shí)驗(yàn)結(jié)果可知,本文方案和競(jìng)賽式多數(shù)一致表決方案的仲裁結(jié)果正確率和執(zhí)行效率在正常情況下均相同,而在異常情況下本文方案的仲裁結(jié)果正確率更高,通過(guò)選用更高效的模式匹配算法,減少系統(tǒng)總體執(zhí)行時(shí)間,在保證提高系統(tǒng)安全性的同時(shí)使耗時(shí)在可承受范圍內(nèi)。
本文建立一種基于數(shù)據(jù)庫(kù)二進(jìn)制日志的競(jìng)賽式仲裁優(yōu)化方案,通過(guò)將執(zhí)行體的二進(jìn)制日志匹配結(jié)果與多數(shù)一致表決的仲裁結(jié)果進(jìn)行對(duì)比,校驗(yàn)仲裁結(jié)果的正確性。實(shí)驗(yàn)結(jié)果表明,優(yōu)化方案可提高仲裁結(jié)果正確率,減少差模逃逸概率,適用于含有數(shù)據(jù)庫(kù)異構(gòu)執(zhí)行體或者數(shù)據(jù)庫(kù)異構(gòu)部件的動(dòng)態(tài)冗余架構(gòu),也可作為一種容錯(cuò)設(shè)計(jì)方案應(yīng)用于冗余容錯(cuò)架構(gòu)中,加強(qiáng)擬態(tài)系統(tǒng)安全性和可靠性。但由于優(yōu)化方案無(wú)法處理N個(gè)異構(gòu)執(zhí)行體處于同一失效空間的情況,因此下一步將對(duì)仲裁結(jié)果中出現(xiàn)的共同失效問(wèn)題展開(kāi)深入研究。