知識圖譜及其在安全領(lǐng)域的應(yīng)用
人工智能技術(shù)與咨詢?
本文作者作者:Toky,由 Seebug Paper 發(fā)布
1. 知識圖譜是什么?
1.1 知識(Knowledge)是什么?
知識圖譜(Knowledge Graph)正如其名,其本質(zhì)是為了表示知識[1]。那么知識是該如何定義呢?我們來看一下維基百科中的定義:
知識是對某個主題確信的認識,并且這些認識擁有潛在的能力為特定目的而使用。意指透過經(jīng)驗或聯(lián)想,而能夠熟悉進而了解某件事情;這種事實或狀態(tài)就稱為知識,其包括認識或了解某種科學(xué)、藝術(shù)或技巧。此外,亦指透過研究、調(diào)查、觀察或經(jīng)驗而獲得的一整套知識或一系列資訊。
可以從這塊相對抽象的定義里得到一個主觀的感受,那就是知識是一種認知,其既是一種事實,也是一種狀態(tài)。比如,“我會加減乘除”是一種事實也是在表述我通過學(xué)習(xí)和實踐,使得現(xiàn)在已經(jīng)掌握這項技能的一種狀態(tài)。并且這種認知是相對復(fù)雜的,有從時間變化的縱向維度,也有涉及到關(guān)系、概念、實踐等等橫向維度的變化。但不變的是,知識是有一個主題的,以及由主題衍生出來的各個“屬性”組成,類似于樹狀結(jié)構(gòu),這一棵樹,就是一條知識。
如果用官方一點的定義呢,每條知識是表示為一個SPO三元組,即Subject(主體)——Predicate(謂語)——>Object(客體)[1]。
那個回到“表示知識”這個關(guān)鍵點,我們創(chuàng)造出知識圖譜這個概念,就是為了幫助我們更快、更好地用來表示出多條獨立的“知識”。更進一步說,知識圖譜就是用來組織和描述SPO三元組的。
那么如何描述呢?請看下一部分
1.2 如何描述三元組?
前面我們介紹了知識的概念和SPO三元組,我們已經(jīng)知道了,知識圖譜是一條條知識組成的,一條條知識又是三元關(guān)系(Subject——Predicate——>Object)組成的,那么問題就來了,如何描述這個三元關(guān)系呢?
使用RDF來表示
在知識圖譜中,我們用RDF形式化地表示這種三元關(guān)系。[1] 從定義上來看,RDF(Resource Description Framework),即資源描述框架,是W3C制定的,用于描述實體/資源的標準數(shù)據(jù)模型。[1] 為什么我們描述知識要用“Web”的形式去描述呢?因為網(wǎng)絡(luò)、Web中的各項關(guān)系,其實和知識的抽象概念很像,這是一種即像樹,又像網(wǎng)的東西。
有唯一確定主體、有連接屬性的謂語、有明確屬性值。
那么RDF框架下,對三元組是如何具體定義的呢?我們先來了解一下RDF圖中定義的三種類型:International Resource Identifiers(IRIs),blank nodes 和 literals[1]。RDF通過定義出來的這三種屬性對SPO三元組進行約束:
Subject可以是IRI或blank node。
Predicate是IRI。
Object三種類型都可以。
可以看到,主體必須是能唯一表示的,或者干脆就是匿名資源(Blank Node,這個概念可以向外引申,在這里可以先忽略)。唯一表示就會用到IRI,相當(dāng)于是URL和URI的推廣[1],用于唯一定義一個實體或是資源。(說白了,就是我們要通過一個確定的方式來找到唯一的它)
謂語也是要唯一表示的,就像你都不知道要和另一個人建立什么關(guān)系,你又怎么能跑過去說我們在一起吧。這個“在一起的兩個人“這個關(guān)系描述得就太模糊,不能唯一確定。舉個例子,兩個男的可以是朋友、可以是仇人也可以是情侶。
那我們整理一下RDF定義三種類型的用處:
IRI —— 在整個網(wǎng)絡(luò)或者圖中唯一定義了一個實體/資源
blank node —— 沒有IRI和literal的資源,或者說匿名資源[1],暫不詳細分析
literal —— 字面量,可以看作是帶有數(shù)據(jù)類型的純文本
回到剛剛那個例子,架設(shè)有兩個男人一個為A,一個為B,我們的主體Subject是男人A,我們給他一個IRI:www.man-a/relation
;我們的謂語是表示與主體是朋友的關(guān)系,我們給他一個帶有prefix的IRI:kg:firiends
;然后我們的客體就是男人B的名字,我們給他一個字面量:man-b
。
那么這個描述兩個男人間朋友關(guān)系的這個知識就可以表述為:www.man-a/relation
?——kg:firiends
——man-b
。
是不是一下子就很清楚了。這就是RDF的作用,使用標準數(shù)據(jù)模型的方式來進行資源描述。
使用屬性圖來表示
介紹完RDF來表示關(guān)系,是不是感覺略有一點復(fù)雜,確實,這種方式比較嚴謹,更貼近知識圖譜原始的定義。但實際在工業(yè)界應(yīng)用過程中,還是會有相當(dāng)多的場景會選擇用屬性圖(Property Graph)的形式來描述“關(guān)系”。那么下面我們來介紹一下屬性圖的方式。
屬性圖(Property Graph)的邏輯其實特別好理解,就是主體會和很多客體有關(guān)系,比如主體是一個普通人A的話,他會有手機號、會有性別、會有家人,這些就是他的客體。而他和他的手機號之間,就是“擁有”的關(guān)系、他和他的父親,就是父子關(guān)系,這種關(guān)系就是主體和客體的關(guān)系。以上三種,主體、關(guān)系、客體,都可以有相應(yīng)的屬性。例如普通人A,屬性可以是他的名字(也可以成為一種主客體關(guān)系);他和他的手機號之間是擁有的關(guān)系,“擁有”關(guān)系可以有屬性“何時擁有”、”如何擁有“等;手機號也可以有屬性,比如歸屬的運營商名字等等。
這種同樣描述主客體關(guān)系,但支持實體或關(guān)系擁有屬性的方式,就稱為屬性圖表示。
1.3 從知識到知識圖譜
我們從知識的定義講到了如何表示使用RDF定義單條知識,那么知識圖譜的具體形象就呼之欲出了,知識圖譜就是有多條知識組成的樹狀或網(wǎng)狀結(jié)構(gòu),總體來說是圖的結(jié)構(gòu)。
主體必須唯一確定,謂語需要清楚描述,客體可以是另一條“子知識“也可以是字面量(也就是帶數(shù)據(jù)類型的純文本)。
以下是一個使用RDF描述的知識圖譜,可以看到其通過RDF標準來表示出了單條的知識以及總體的關(guān)系:
圖:羅納爾多知識圖譜[1]
以下是一個由屬性圖來表示的知識圖譜,注意其支持實體或關(guān)系擁有屬性,而RDF形式的就不支持:
圖:一個簡單的屬性圖[2]
其實更嚴謹?shù)卣f,這兩種不同的描述關(guān)系的方式,其實也是代表了兩種知識圖譜的存儲方式:
基于RDF存儲的形式
基于圖數(shù)據(jù)庫的存儲
以下是兩者之間的比較:
圖:RDF和圖數(shù)據(jù)庫方式的比較[2]
1.4 知識圖譜的作用
知識圖譜提供了從“關(guān)系”的角度去分析問題的能力。知識圖譜這個概念最早由Google提出,主要是用來優(yōu)化現(xiàn)有的搜索引擎。不同于基于關(guān)鍵詞搜索的傳統(tǒng)搜索引擎,知識圖譜可用來更好地查詢復(fù)雜的關(guān)聯(lián)信息,從語義層面理解用戶意圖,改進搜索質(zhì)量。[2]
從這個概念上來說,知識圖譜主要解決的問題是一個復(fù)雜關(guān)聯(lián)信息的查詢和表示。那么我們來看看它的應(yīng)用需求應(yīng)該是如何的,換句話說,就是什么樣的情況下,我們可以考慮采用知識圖譜:
圖:對采用知識圖譜的需求分析
2. 在安全領(lǐng)域的應(yīng)用
2.1 安全知識圖譜
安全知識圖譜(Cyber Security Knowledge Graph)是知識圖譜在網(wǎng)絡(luò)安全領(lǐng)域的實際應(yīng)用,包括基于本體論構(gòu)建的安全知識本體架構(gòu),以及通過威脅建模等方式對多源異構(gòu)的網(wǎng)絡(luò)安全領(lǐng)域信息( Heterogeneous Cyber Security Information)進行加工、處理、整合,轉(zhuǎn)化成為的結(jié)構(gòu)化的智慧安全領(lǐng)域知識庫。[3]
上面說到了知識圖譜的作用,我們再回顧一下,知識圖譜可以解決復(fù)雜關(guān)系信息的查詢和表示。因此,在安全領(lǐng)域,我們在進行應(yīng)用的時候,同樣要考慮以下幾點:
是否有強烈可視化需求?
是否有較高的語義分析需求?
是否本事?lián)碛泻A康亩嘣串悩?gòu)數(shù)據(jù),且存在一定的信息孤島問題?
是否有對關(guān)系進行深入搜索、挖掘、分析的需求?
是否有資源和能力去搭建系統(tǒng),并且能進行運營?
其實思考這幾個問題的時候,我們的需求和對應(yīng)的應(yīng)用場景,有經(jīng)驗的同學(xué)應(yīng)該就比較清晰了。知識圖譜需要解決的問題,它的應(yīng)用,主要是:
從海量數(shù)據(jù)中挖掘、表示威脅的實體相關(guān)信息
提高威脅分析的效率,從關(guān)系出發(fā)去挖掘事件(Incident)、表示事件
對于基于語義分析的威脅發(fā)現(xiàn)具有相對的優(yōu)勢
因此,我們也可以用一句話來說明安全知識圖譜的作用:從威脅實體和實體關(guān)系的視角出發(fā),主要針對多源異構(gòu)數(shù)據(jù),利用語義分析的特點,識別威脅以及對威脅進行評估。
以下是一個用安全知識圖譜表示的永恒之藍攻擊防御場景:
圖:利用知識圖譜構(gòu)建攻擊場景[4]
2.2 從需求到應(yīng)用
2.2.1 分析需求
偏向于事件分析
知識圖譜的關(guān)鍵點在于對“關(guān)系”的描述。對于事件來說,我們需要一個更高緯度的知識表達,主要來說,可以主要從這幾個方面出發(fā):威脅主體、攻擊方法、資產(chǎn)、隱患和防御手段[4]。
使用基于屬性圖的知識圖譜構(gòu)建,我們需要定義好主客體的關(guān)系以及三者各自的屬性;使用基于RDF的知識圖譜構(gòu)建,我們需要更加關(guān)注于嚴格的推理關(guān)系、將屬性的表達用確定的關(guān)系謂語代替。
偏向于情報分析
對于情報分析來說,我們很多時候不是要關(guān)注自己怎么樣,而是要關(guān)注對手怎么樣,所以知識圖譜在安全情報分析中的應(yīng)用,主要的關(guān)注于:
對手是誰(Who):包括威脅行為體,贊助商和雇主
對手使用什么(What):包括他們的能力和基礎(chǔ)設(shè)施
對手的行動時(When):確定行動的時間表和規(guī)律
對手的目的(Why):包括他們的動機和意圖
對手的目標行業(yè)和地理區(qū)域(Where):詳細說明行業(yè),垂直行業(yè)和地理區(qū)域
對手如何運作(How):關(guān)注于他們的行為和規(guī)律
以上的5W1H[5]可以作為安全情報知識圖譜構(gòu)建時的參考,例如使用基于屬性圖的知識圖譜構(gòu)建,我們可以這樣去構(gòu)建:
威脅行為體作為Subject,贊助商和雇主可以作為其屬性(Property)
基礎(chǔ)設(shè)施作為威脅行為體的Object,用“自身擁有”或是”非法占用“來描述他們的關(guān)系(Predicate)
...
偏向于特定威脅分析
在這邊我對它的定義主要用于分析某種特定惡意行為。這種特定的惡意行為需要有較明確,且相對唯一的攻擊鏈。例如,我們可以把對惡意釣魚郵件的攻擊視為一種特定威脅,我們對惡意釣魚郵件的分析,從規(guī)則、模型到專家經(jīng)驗轉(zhuǎn)換等等,都是在對其進行特定威脅的分析。
從另一方面來說,一種特定的技戰(zhàn)術(shù)組合也可以稱為一種特定威脅,因為它的殺傷鏈也相對固定,對于這部分的知識圖譜構(gòu)建,可以幫助我們從整體角度觀察威脅。
2.2.2 展示需求
也許部分同學(xué)一看到展示需求,心里就會冒出來“大屏”、“給領(lǐng)導(dǎo)看的”、“沒啥用”這些想法,雖然這確實也是一種現(xiàn)象,但我們也應(yīng)該好好考慮一下這部分。
因為做安全的最終目的,還是說為了提高總體的安全能力,這個安全能力小到個人水平,大到國家安全。我們實際點講,怎么才能提高企業(yè)的安全呢?企業(yè)安全由于其復(fù)雜性,不是某一方向上的技術(shù)很酷就能起到提高整日安全能力的。
企業(yè)安全的關(guān)鍵還是在于從檢測——分析——響應(yīng)——優(yōu)化的閉環(huán)。這個閉環(huán)是關(guān)鍵,而這個閉環(huán)中,所要參與到的各個部門、乃至同部門的各個方向、同個方向上的各個人員,他們的先驗知識都是不一樣的。我們使用知識圖譜進行展示的本意,是為了結(jié)構(gòu)化地表達知識。從而降低閉環(huán)中各個環(huán)節(jié)的成本。這個成本包含很多方面,有時連溝通成本也是。
3. 總結(jié)
本文主要是學(xué)習(xí)和整理了知識圖譜的相關(guān)概念,以及對其在安全領(lǐng)域的應(yīng)用做了一個簡單的分析。這塊仍是處于一個探索階段,還是有許多新的思路和落地方案需要補充。歡迎各位師傅批評指正。
?
關(guān)注微信公眾號:人工智能技術(shù)與咨詢。了解更多咨詢!
審核編輯:符乾江
評論