顧兆軍,郭靖軒+
(1.中國民航大學(xué) 信息安全測評中心,天津 300300;2.中國民航大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,天津 300300)
互聯(lián)網(wǎng)的發(fā)展使網(wǎng)上辦公成為員工辦公的首要方式,給工作帶來了高效和便捷,但是伴隨網(wǎng)絡(luò)攻擊手段的不斷進(jìn)步,單一的防火墻防御已經(jīng)顯現(xiàn)出不足。目前信息系統(tǒng)安全防護(hù)主要關(guān)注來自系統(tǒng)外部的威脅,但是來自員工的內(nèi)部威脅已經(jīng)成為首要問題,內(nèi)部威脅帶來的損失比普通的外部威脅更加嚴(yán)重。
國內(nèi)外學(xué)者對此進(jìn)行了深入研究,文雨等[1]對數(shù)據(jù)庫的非法使用行為進(jìn)行研究,以數(shù)據(jù)庫數(shù)據(jù)日志為核心提取SQL語句的數(shù)據(jù)訪問特征來確定當(dāng)前用戶執(zhí)行SQL語句的可疑程度;張銳[2]建立了系統(tǒng)業(yè)務(wù)與用戶之間的關(guān)系網(wǎng)絡(luò),將用戶映射到具體業(yè)務(wù)系統(tǒng)上,通過判斷用戶對業(yè)務(wù)系統(tǒng)之間的關(guān)系網(wǎng)絡(luò)間的差異來確定是否存在內(nèi)部威脅;文獻(xiàn)[3]提出了用戶行為的多元模式,提出了一種用戶跨域行為模式挖掘方法。
本文著重對角色行為進(jìn)行分析研究,在文獻(xiàn)[4]中對Web用戶行為挖掘的基礎(chǔ)上提出了一種基于角色行為模式挖掘的角色行為異常檢測算法,該算法對傳統(tǒng)PrefixSpan算法進(jìn)行改進(jìn),提高了對角色異常行為的檢測時間,同時縮短了挖掘時間,提高了挖掘效率。
角色行為模式是指角色對業(yè)務(wù)系統(tǒng)操作過程中對程序的執(zhí)行所體現(xiàn)出的一般規(guī)律性,服務(wù)器會在日志文件中存儲角色操作記錄以及與數(shù)據(jù)庫交互信息,包括操作屬性、操作內(nèi)容、調(diào)用資源等信息。角色行為具有以下3個特點(diǎn)[5]:
(1)規(guī)律性。每個角色在使用業(yè)務(wù)系統(tǒng)時會有自身獨(dú)有的特點(diǎn),在程序執(zhí)行上和操作行為上具有相關(guān)關(guān)系,現(xiàn)稱之為角色行為習(xí)慣。在一定時間間隔內(nèi),根據(jù)角色行為習(xí)慣可以挖掘出頻繁行為,從而建立角色正常行為模式;
(2)偶然性。角色受到隨機(jī)事件和自身其它因素影響會改變原有的行為習(xí)慣,增加了局部偶然性,所以在挖掘過程中需要大量的歷史審計日志來判斷其偶然性,避免出現(xiàn)異常漏報和檢測效率低下的問題;
(3)重復(fù)性。在一段時間內(nèi)角色的某一行為會多次重復(fù)出現(xiàn),這些行為跟時間間隔的大小具有高度的相關(guān)性,如何確定恰當(dāng)?shù)臅r間間隔是順利進(jìn)行挖掘過程的關(guān)鍵步驟。
在充分了解角色行為特點(diǎn)后,利用日志提取需要的角色行為及屬性,以便于之后挖掘角色行為模式。Windows操作系統(tǒng)在其運(yùn)行的生命周期中會記錄其大量的日志信息,常見的日志文件包括Serer logs、Error logs、Cookie logs等其它類型,角色日常工作使用到的信息系統(tǒng)都是基于Telnet協(xié)議的,處理異常事件時可以通過截取聯(lián)網(wǎng)傳輸?shù)臄?shù)據(jù)包進(jìn)行相應(yīng)的協(xié)議解析,這樣就可以復(fù)原角色與信息系統(tǒng)交互的操作命令和返回結(jié)果。這些日志信息在溯源和取證調(diào)查過程中十分重要,日志文件在系統(tǒng)中是以特定的數(shù)據(jù)結(jié)構(gòu)方式進(jìn)行內(nèi)容存儲,其中包括相關(guān)系統(tǒng)應(yīng)用程序和安全的記錄。審計記錄中包含了9個元素:日期/時間、事件類型、用戶、計算機(jī)、事件ID、來源、類別、描述、數(shù)據(jù)等信息。通過處理無用項(xiàng)和多余項(xiàng)之后,每條有效審計記錄見表1,其中包含7個字段。
表1 審計記錄
本文的目的就是要從有效審計記錄中運(yùn)用序列模式挖掘的方法,根據(jù)角色歷史正常行為提取出角色正常行為模式,從而進(jìn)行異常檢測。針對信息系統(tǒng)角色行為模式的特點(diǎn)給出異常檢測系統(tǒng)框架如圖1所示,主要包括日志預(yù)處理、角色正常行為模式挖掘、序列匹配、模式比較,異常檢測輸出等步驟。
圖1 內(nèi)部威脅異常檢測框架
本章的工作是圍繞角色正常行為模式挖掘展開的。根據(jù)第一節(jié)中提出的有效審計記錄中得到角色行為數(shù)據(jù)及屬性,選取合適的序列模式挖掘算法,介紹算法的概念和原理,重點(diǎn)給出對算法的改進(jìn)過程及核心思想,最后通過舉例說明。
序列模式挖掘是數(shù)據(jù)挖掘中一個重要分支,它的原理是從大量序列數(shù)據(jù)中挖掘出一段時間間隔內(nèi)出現(xiàn)頻率最高的序列數(shù)據(jù)。目前序列模式挖掘的主要算法有廣義序列模式(GSP)算法、apriori算法、FP Tree算法、FreeSpan算法和PrefixSpan算法。FreeSpan算法和apriori算法是基于挖掘項(xiàng)集數(shù)據(jù)挖掘的[6],而PrefixSpan算法和廣義序列模式(GSP)算法是面向序列數(shù)據(jù)的[7]。
如表2所示,表左的數(shù)據(jù)記錄就是在Apriori算法和FreeSpan算法中使用的項(xiàng)集數(shù)據(jù),每個項(xiàng)集數(shù)據(jù)由若干項(xiàng)數(shù)據(jù)記錄組成,這些數(shù)據(jù)項(xiàng)沒有時間上的先后關(guān)系,對于多于一個項(xiàng)的項(xiàng)集要加上括號,以便和其它的項(xiàng)集分開。而右邊的序列數(shù)據(jù)則不一樣,它是由若干數(shù)據(jù)項(xiàng)集組成的序列,比如第一個序列,它由a,bc,ac,d,cf共5個項(xiàng)集數(shù)據(jù)組成,并且這些項(xiàng)有時間上的先后關(guān)系,不同的序列順序代表了不同的含義。
表2 項(xiàng)集數(shù)據(jù)與序列數(shù)據(jù)對比
在本文中提出的角色行為模式中,角色行為具有持續(xù)性且每個行為具有時間上的先后關(guān)系,例如管理員角色的行為首先是登錄管理系統(tǒng),然后對設(shè)備進(jìn)行檢查,最后注銷退出系統(tǒng)。這一系列行為是以集合的形式存在,這種數(shù)據(jù)顯然符合序列數(shù)據(jù)的特點(diǎn),故舍棄了Apriori算法和FreeSpan算法。另一方面在對序列數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘時,由于PrefixSpan算法在挖掘過程中不產(chǎn)生大量候選的序列模式,而且生成的投影數(shù)據(jù)庫相比于原始序列數(shù)據(jù)庫大大減少,因此減少了構(gòu)造投影數(shù)據(jù)庫的時間,并且縮減了算法運(yùn)行需要的存儲空間,所以其性能更優(yōu)。而廣義序列模式(GSP)算法會產(chǎn)生大量候選的序列模式,增加了算法運(yùn)行所需要的時間,而且候選的大量序列模式會消耗存儲空間,故選擇PrefixSpan算法進(jìn)行角色行為模式挖掘。本文將PrefixSpan算法運(yùn)用到角色正常行為模式的挖掘中,并且針對此算法進(jìn)行了改進(jìn)。
PrefixSpan(prefix-projected pattern crowth)[8],意思是前綴投影的模式挖掘,PrefixSpan算法采用分而治之的思想,首先從數(shù)據(jù)集中挖掘出頻繁一項(xiàng)集,找到頻繁一項(xiàng)集之后使用頻繁項(xiàng)前綴劃分搜索空間,從而生成投影數(shù)據(jù)庫,再分別對這些投影數(shù)據(jù)庫里的項(xiàng)集數(shù)據(jù)執(zhí)行同樣的步驟來挖掘頻繁項(xiàng),直到循環(huán)執(zhí)行數(shù)據(jù)庫中所有的數(shù)據(jù)項(xiàng)。
本文將PrefixSpan算法應(yīng)用到信息系統(tǒng)中角色正常行為模式挖掘中,并針對此應(yīng)用場景下進(jìn)行改進(jìn),在時間和空間方面改進(jìn)的算法提高了算法適用性,并且提高了數(shù)據(jù)挖掘的效率。下面首先介紹PrefixSpan算法對角色正常行為模式挖掘的相關(guān)概念及定義。
概念1:S是一個項(xiàng)集序列數(shù)據(jù)庫,表示為S=(t1,t2,…,ti),其中i表示為角色行為序列的長度,tk(1≤k≤i)表示為同一角色的行為數(shù)據(jù)項(xiàng)。
概念2:子序列和超序列的概念和數(shù)學(xué)上的子集的概念很類似,如果某個序列A所有的項(xiàng)集在序列B中的項(xiàng)集都可以找到,則A就是B的子序列?,F(xiàn)在給定兩個序列A=(a1,a2,…,an)和序列B=(b1,b2,…,bm), n≤m,如果對于序列B來說序列A中的每一項(xiàng)數(shù)據(jù)均滿足a1?b1,a2?b2…an?bn,則稱A是B的子序列,反過來說B就是A的超序列。
概念3:對于某一個前綴,序列里前綴后面剩下的子序列即為得到的后綴,前綴投影其實(shí)就是后綴的意思,前綴加上前綴投影就可以構(gòu)成一個完整的序列。如果前綴最后的項(xiàng)是項(xiàng)集的一部分,則用一個“_”來占位表示,這里需要注意的是_b和b是兩個不同的序列項(xiàng)。表3給出前綴和后綴的例子。
表3 頻繁項(xiàng)集序列
概念4:給定S為一個序列數(shù)據(jù)庫,A=(a1,a2,…,an)是序列數(shù)據(jù)庫S其中的一個序列,數(shù)據(jù)庫S中包含序列A的個數(shù)占S中總序列數(shù)的比值記為Support(A),其意義是序列A的支持度。由專家意見以及實(shí)際情況給出一個支持度閾值min_sup,如果序列A在序列數(shù)據(jù)庫中的支持度Support(A)不低于min_sup,則稱序列A為一項(xiàng)頻繁序列。
在使用PrefixSpan算法對數(shù)據(jù)項(xiàng)進(jìn)行掃描挖掘時有三方面不足:
(1)挖掘過程中會采用遞歸的方法構(gòu)建投影數(shù)據(jù)庫,消耗大量時間。審計日志中包含的非頻繁數(shù)據(jù)較多,隨著挖掘過程的深入會產(chǎn)生大量的非頻繁項(xiàng),從而消耗大量時間來挖掘不可能出現(xiàn)的頻繁項(xiàng);
(2)挖掘過程中構(gòu)造的投影數(shù)據(jù)庫數(shù)量呈幾何倍數(shù)增長,空間開銷巨大,而且存在多個重復(fù)的投影數(shù)據(jù)庫,占用大量空間;
(3)算法處理海量審計日志所生成的頻繁序列項(xiàng)以及其投影數(shù)據(jù)庫數(shù)量紛繁復(fù)雜,在挖掘過程中對投影數(shù)據(jù)庫反復(fù)進(jìn)行掃描,導(dǎo)致數(shù)據(jù)項(xiàng)查找挖掘效率低下,算法執(zhí)行效率低下。
針對PrefixSpan算法的不足之處以及審計日志數(shù)據(jù)的特點(diǎn),本文提出一種改進(jìn)的PrefixSpan算法,對此算法的不足之處進(jìn)行如下改進(jìn)和擴(kuò)展以提高挖掘效率:
(1)改進(jìn)后的算法在挖掘數(shù)據(jù)項(xiàng)的過程中通過比較數(shù)據(jù)項(xiàng)與最小支持度得到頻繁項(xiàng),直接刪除非頻繁項(xiàng),避免繼續(xù)挖掘出非頻繁項(xiàng);在構(gòu)建投影數(shù)據(jù)庫時放棄對支持度小于閾值的投影數(shù)據(jù)庫的掃描,能夠有效減少投影數(shù)據(jù)庫構(gòu)建的次數(shù),提高算法的時間效率;
(2)改進(jìn)后的算法在構(gòu)建投影數(shù)據(jù)庫的過程中,預(yù)先檢查序列數(shù)據(jù)庫S中所有數(shù)據(jù)項(xiàng)的前綴,對相同的數(shù)據(jù)項(xiàng)進(jìn)行合并,避免對投影數(shù)據(jù)庫中同一數(shù)據(jù)項(xiàng)前綴重復(fù)投影,從而減少投影的數(shù)量,這樣能夠有效地減少投影數(shù)據(jù)庫構(gòu)建的次數(shù),減少投影數(shù)據(jù)庫不必要的存儲空間;
(3)對投影數(shù)據(jù)庫引入標(biāo)簽索引,先給定一個初始的頻繁序列投影數(shù)據(jù)庫用于記錄掃描過程中全部下標(biāo)的位置,接下來的挖掘過程只需要利用下標(biāo)去數(shù)據(jù)庫中查找該字符序列即可。此方法從數(shù)據(jù)預(yù)處理的角度出發(fā),通過增加一個步驟從而提高了查找效率。
現(xiàn)在根據(jù)算法改進(jìn)思想給出改進(jìn)后的PrefixSpan算法流程描述:
輸入:序列數(shù)據(jù)庫S、支持度閾值min_sup、數(shù)據(jù)庫S中數(shù)據(jù)序列長度i。
步驟1 對數(shù)據(jù)庫S中的所有數(shù)據(jù)進(jìn)行挖掘,得到所有長度為1的頻繁一項(xiàng)集和其所對應(yīng)的投影數(shù)據(jù)庫;
步驟2 計算每一個長度為1的前綴在數(shù)據(jù)庫中的支持度Support(),并對其進(jìn)行計數(shù),根據(jù)結(jié)果將支持度低于閾值min_sup的前綴所對應(yīng)的項(xiàng)從數(shù)據(jù)庫S中刪除,同時記錄所有支持度滿足Support()≥min_sup的頻繁一項(xiàng)集,記i=1;
步驟3 對步驟2得到的頻繁一項(xiàng)集前綴進(jìn)行遞歸挖掘:
(1)找出頻繁一項(xiàng)集所對應(yīng)的投影數(shù)據(jù)庫,如果該前綴的投影數(shù)據(jù)庫不存在,則遞歸返回步驟2;
(2)統(tǒng)計頻繁一項(xiàng)集所對應(yīng)的投影數(shù)據(jù)庫中各項(xiàng)的支持度,如果所有頻繁一項(xiàng)集的支持度都低于閾值min_sup,則刪除此項(xiàng)并遞歸返回步驟2;
(3)將支持度滿足Support()≥min_sup的各個頻繁一項(xiàng)集和當(dāng)前的前綴進(jìn)行合并得到頻繁二項(xiàng)集,并且生成新的前綴;
(4)i=i+1,使用得到的新前綴繼續(xù)挖掘第i項(xiàng)頻繁項(xiàng),分別遞歸執(zhí)行步驟3。
輸出:滿足支持度Support()≥min_sup的所有頻繁項(xiàng)。
針對上文給出對算法改進(jìn)的流程描述,現(xiàn)在以表4中所給的數(shù)據(jù)項(xiàng)為例描述序列模式挖掘過程,并且給定閾值min_sup=2。
表4 角色行為序列數(shù)據(jù)庫S
表5 序列模式挖掘過程
在上一節(jié)中我們通過數(shù)據(jù)挖掘得到了頻繁項(xiàng)數(shù)據(jù)集,這代表了角色歷史正常行為模式集,現(xiàn)在通過對比角色當(dāng)前行為與歷史正常行為,就可以檢測角色行為的準(zhǔn)確性,從而判斷該角色是否發(fā)生內(nèi)部威脅。模式匹配的關(guān)鍵就是字符串匹配,字符串匹配通常是指在主模式串中一次或多次重復(fù)出現(xiàn)某一字符串,并把子串在主串中的定位操作稱為串的模式匹配。從匹配方式上來說串匹配可以分類為精確匹配、模糊匹配、并行匹配等。針對角色頻繁行為模式的特點(diǎn),解決字符串匹配這個問題首先很容易想到BF算法,是指從子串首部與主串首部匹配,當(dāng)子串的首部和主串的某個部位匹配成功后,兩個串剩下的字符繼續(xù)匹配;當(dāng)兩者匹配失敗時,比較子串首部和主串的下一部位,重復(fù)上面的過程直到循環(huán)結(jié)束,BF算法的復(fù)雜度是O(n2),該算法簡單低效,處理大量數(shù)據(jù)時間會爆炸式增長[9]。
針對BF算法時間復(fù)雜度還有更好的辦法可以提高效率,這就是KMP算法,本節(jié)提出一種基于KMP算法的精確匹配算法。為了方便下文對模式匹配算法的描述,做以下符號定義:主模式串記為S,長度記為n,待匹配的子串記為P,長度記為m,串中的字符記為Si和Pj(1≤i≤n,1≤j≤m)。KMP算法的主要思想是利用已經(jīng)得到的兩個字符串的部分匹配結(jié)果將模式串右滑盡可能遠(yuǎn)的距離再繼續(xù)進(jìn)行比較[10],具體來說就是判斷主模式串中的Si和子串Pj是否匹配,當(dāng)兩者匹配時主串中的指針i和字串中的指針j分別向后移動一位,繼續(xù)判斷是否匹配,當(dāng)Si和Pj匹配失敗時,指針i保持不動,指針j回到一個合適的位置而不是像暴力算法中回到字符串首位,這樣大大提高了匹配效率,縮短了匹配時間,所以為了計算得到這個合適的位置,引入一個臨時數(shù)組next[]。next[]數(shù)組的定義和計算過程請參見文獻(xiàn)[11]。下面給出算法流程描述[12]:
輸入:主模式串S=S1S2…Sn,待匹配的子串P=P1P2…Pm,其中串中的字符記為Si和Pj(1≤i≤n,1≤j≤m);
(1)初始化數(shù)組next[];
(2)循環(huán)查找子串P是否在主模式串S中:
1)首先比較P[i]==S[j],如果相等,繼續(xù)比較字符串下一個字符;
配電網(wǎng)直接與用戶連接,電力系統(tǒng)對用戶供電的能力和質(zhì)量必須通過配電網(wǎng)得到實(shí)現(xiàn)和保障,因此提高配電網(wǎng)的供電可靠性一直是電力發(fā)展中的一個重要問題。配電自動化(Distribution Automation,DA)是提高配電網(wǎng)可靠性的一種重要技術(shù)手段,在正常運(yùn)行情況下,通過監(jiān)視配電網(wǎng)的運(yùn)行工況,優(yōu)化配電網(wǎng)的運(yùn)行方式;當(dāng)配電網(wǎng)發(fā)生故障或運(yùn)行異常時,可以迅速查找和處理故障區(qū)段及異常情況,快速隔離故障區(qū)段,及時恢復(fù)非故障區(qū)域用戶的供電,縮短停電時間,減少停電面積,提高配電網(wǎng)的可靠性[1-2]。
2)令j=next[j],如果j==-1; 說明匹配失敗,i++,j++,繼續(xù)下一趟比較;
(3)直到找到子串P在主串S中的位置或者主模式串S已經(jīng)比較結(jié)束;
輸出:當(dāng)子串與主串正確配對成功時,將主模式串S中第一個配對字符的位置輸出,否則輸出-1。
針對本文提出的兩個算法,為了驗(yàn)證此算法的可行性,在PC機(jī)上的Anaconda實(shí)驗(yàn)環(huán)境中實(shí)現(xiàn)代碼,實(shí)驗(yàn)數(shù)據(jù)來自于某民航直屬單位辦公系統(tǒng)中3個月的系統(tǒng)操作日志。
在挖掘角色正常行為模式之前,獲取的操作命令按照審計記錄的格式(表1)進(jìn)行保存,需要對角色操作日志進(jìn)行預(yù)處理,數(shù)據(jù)預(yù)處理方法包括將操作時間轉(zhuǎn)換為時間戳片斷,其中分為上午(am)、下午(pm)、晚上(nt);刪除編輯狀態(tài)下用戶輸入的指令,刪去無意義指令;指令參數(shù)僅保留文件的后綴名,對于操作指令中涉及到的敏感信息和文件進(jìn)行隱藏處理。在本文研究內(nèi)部威脅的問題中,由于涉及到系統(tǒng)業(yè)務(wù)和行業(yè)安全,且當(dāng)前不存在角色異常行為引發(fā)的內(nèi)部威脅,所以在測試數(shù)據(jù)集中采取手工注入異常的方法,然后利用上文提出的方法對注入的行為異常情況進(jìn)行檢測,并分析評估該方法的異常檢測效果。
對于數(shù)據(jù)量龐大冗雜的用戶操作日志,從中選取了幾種不同的角色類型進(jìn)行分類,運(yùn)用本文提出的改進(jìn)后的PrefixSpan算法進(jìn)行角色正常行為模式挖掘,并采取不同的最小支持度,最終得到角色的正常行為模式。為了評估改進(jìn)后算法的優(yōu)缺點(diǎn),使用改進(jìn)后的PrefixSpan算法和傳統(tǒng)PrefixSpan算法對數(shù)據(jù)集進(jìn)行模式挖掘,分別從算法運(yùn)行時間和算法挖掘效率兩個方面進(jìn)行算法對比分析。
如圖2所示,在前提條件中給定最小支持度為2%的相同情況下,隨著數(shù)據(jù)量的增加,兩算法的處理時間都會增加,但是改進(jìn)后的PrefixSpan算法在挖掘過程中所用時間明顯少于PrefixSpan算法,效率更高。其主要原因在于改進(jìn)后的PrefixSpan算法綜合考慮到了非頻繁項(xiàng)和多余的投影數(shù)據(jù)庫,在挖掘過程中直接刪除非頻繁項(xiàng)以避免后續(xù)對其繼續(xù)挖掘,同時放棄對支持度小于閾值的投影數(shù)據(jù)庫的掃描, 結(jié)果節(jié)省了挖掘時間和存儲投影數(shù)據(jù)庫的空間。此外,通過檢查頻繁項(xiàng)前綴的前綴把同一數(shù)據(jù)項(xiàng)的后綴合并,避免對投影數(shù)據(jù)庫中同一數(shù)據(jù)項(xiàng)后綴重復(fù)投影,這樣能夠有效地減少投影數(shù)據(jù)庫構(gòu)建的次數(shù),節(jié)省不必要的挖掘時間。
圖2 兩種算法運(yùn)行時間比較分析
如圖3所示,在前提條件中給定挖掘數(shù)據(jù)量相同的情況下,隨著最小支持度的增加,兩算法的處理時間都會降低。一方面兩算法處理時間均降低是因?yàn)樽钚≈С侄仍酱?,挖掘到的頻繁行為模式包含數(shù)據(jù)項(xiàng)越少,需要構(gòu)建的投影數(shù)據(jù)庫規(guī)模越小,算法處理時間就越短,所以導(dǎo)致兩算法處理時間隨著最小支持度的不斷提高都會降低。另一方面,當(dāng)支持度逐漸增加時,改進(jìn)后的算法處理時間優(yōu)于傳統(tǒng)算法,主要原因是傳統(tǒng)算法構(gòu)建了大量重復(fù)的投影數(shù)據(jù)庫,在挖掘非頻繁項(xiàng)和重復(fù)掃描的過程中浪費(fèi)大量時間。而圖3中當(dāng)支持度為3%時傳統(tǒng)算法處理時間優(yōu)于改進(jìn)后的算法,分析其原因是因?yàn)楦倪M(jìn)后的算法為了避免對投影數(shù)據(jù)庫中同一數(shù)據(jù)項(xiàng)進(jìn)行重復(fù)投影而對相同數(shù)據(jù)項(xiàng)進(jìn)行合并,這樣減少了構(gòu)建投影數(shù)據(jù)庫所占內(nèi)存空間,同時在檢查序列數(shù)據(jù)庫S中所有數(shù)據(jù)項(xiàng)的前綴所耗費(fèi)的時間多于傳統(tǒng)算法對數(shù)據(jù)項(xiàng)的挖掘時間。
圖3 兩種算法運(yùn)行時間比較分析
由以上數(shù)據(jù)以及原因分析可以得出本文提出的算法無論是在數(shù)據(jù)量或是最小支持度變化的情況下處理時間要優(yōu)于傳統(tǒng)算法,從而提高數(shù)據(jù)挖掘效率。而當(dāng)處理時間沒有優(yōu)勢時節(jié)省了算法處理所需的內(nèi)存空間,用投影數(shù)據(jù)庫空間開銷換取算法處理時間,也提高了算法挖掘效率,達(dá)到了改進(jìn)的目的。
結(jié)合審計日志數(shù)據(jù)和業(yè)務(wù)系統(tǒng)的特點(diǎn),在此將角色異常行為分成兩類。第一類是非授權(quán)異常,在系統(tǒng)中每個角色都有屬于自己的行為權(quán)限,非授權(quán)異常指的是角色試圖超出個人行為權(quán)限去執(zhí)行其它操作,這會對系統(tǒng)造成嚴(yán)重的破壞,例如系統(tǒng)管理員對系統(tǒng)數(shù)據(jù)庫非法操作,拷貝數(shù)據(jù)庫信息或是訪問敏感文件。第二類是授權(quán)異常,指的是角色在執(zhí)行行為時沒有遵循既定行為習(xí)慣和行為頻率,此情況出現(xiàn)時極有可能是有人盜取角色登錄信息非法登錄,例如系統(tǒng)管理員在休息日凌晨頻繁登錄業(yè)務(wù)系統(tǒng)。
針對以上可能存在的角色行為異常信息,現(xiàn)在對歷史正常數(shù)據(jù)注入異常數(shù)據(jù),其中AOB(abnormal operation behavior)表示操作行為異常,AOF(abnormal operating frequency)表示操作頻率異常,AOT(abnormal operation time)表示操作時間異常,原始數(shù)據(jù)和注入的異常數(shù)據(jù)的具體情況見表6。
表6 異常行為注入數(shù)據(jù)集
將人工注入的異常數(shù)據(jù)分別添加到4組歷史正常數(shù)據(jù)中,分別對4組案例中不同的角色使用本文提出改進(jìn)PrefixSpan算法進(jìn)行角色正常行為模式挖掘,在挖掘到頻繁項(xiàng)后引入標(biāo)簽索引,使用KMP算法進(jìn)行異常檢測,利用標(biāo)簽索引的不同檢測出非頻繁項(xiàng),得到角色行為異常情況,實(shí)驗(yàn)結(jié)果見表7。
表7 實(shí)驗(yàn)結(jié)果檢測情況
為了進(jìn)一步分析異常檢測結(jié)果,采用F1評價指標(biāo)進(jìn)行評價(也稱為F-measure)。其中P表示為準(zhǔn)確率,R表示為召回率,F(xiàn)1表示為準(zhǔn)確率和召回率的調(diào)和平均數(shù),并根據(jù)挖掘結(jié)果和異常檢測數(shù)據(jù)分別進(jìn)行計算R、P、F1的數(shù)值。由圖4可以看出在案例1中漏檢測了一項(xiàng)AOT,導(dǎo)致計算得到召回率為85.7%,案例3多檢測出兩項(xiàng)AOF,導(dǎo)致計算得到準(zhǔn)確率為90.9%,案例2、4檢測效果良好。最后4個案例中召回率和準(zhǔn)確率的計算得到F1分?jǐn)?shù)維持在90%,說明在實(shí)際情況數(shù)據(jù)量更多的情況下本文提出的算法仍可以保持高水平的挖掘效率,達(dá)到本文改進(jìn)傳統(tǒng)算法的目的。
圖4 挖掘結(jié)果比較分析
針對信息系統(tǒng)可能存在的內(nèi)部威脅,本文研究了一種基于序列模式挖掘的內(nèi)部威脅檢測方法,此方法包括兩部分,一方面改進(jìn)PrefixSpan算法,通過角色歷史正常審計日志為數(shù)據(jù)源,挖掘角色正常行為,并且通過與傳統(tǒng)的PrefixSpan算法進(jìn)行比較,表明該算法在挖掘時間和挖掘效率上有很大改進(jìn)。另一方面利用KMP算法對挖掘到的角色正常行為與當(dāng)前角色行為進(jìn)行模式匹配,從而達(dá)到檢測異常行為的目的。實(shí)驗(yàn)結(jié)果表明,本文提出的方法可以高效挖掘角色正常行為模式,并且在檢測角色異常行為方面保持較高的準(zhǔn)確率。