今日头条
人工智能技术与咨询
本文作者作者:Toky,由 Seebug Paper 发布
知识图谱(Knowledge Graph)正如其名,其本质是为了表示知识[1]。那么知识是该如何定义呢?我们来看一下维基百科中的定义:
知识是对某个主题确信的认识,并且这些认识拥有潜在的能力为特定目的而使用。意指透过经验或联想,而能够熟悉进而了解某件事情;这种事实或状态就称为知识,其包括认识或了解某种科学、艺术或技巧。此外,亦指透过研究、调查、观察或经验而获得的一整套知识或一系列资讯。
可以从这块相对抽象的定义里得到一个主观的感受,那就是知识是一种认知,其既是一种事实,也是一种状态。比如,“我会加减乘除”是一种事实也是在表述我通过学习和实践,使得现在已经掌握这项技能的一种状态。并且这种认知是相对复杂的,有从时间变化的纵向维度,也有涉及到关系、概念、实践等等横向维度的变化。但不变的是,知识是有一个主题的,以及由主题衍生出来的各个“属性”组成,类似于树状结构,这一棵树,就是一条知识。
如果用官方一点的定义呢,每条知识是表示为一个SPO三元组,即Subject(主体)——Predicate(谓语)——>Object(客体)[1]。
那个回到“表示知识”这个关键点,我们创造出知识图谱这个概念,就是为了帮助我们更快、更好地用来表示出多条独立的“知识”。更进一步说,知识图谱就是用来组织和描述SPO三元组的。
那么如何描述呢?请看下一部分
前面我们介绍了知识的概念和SPO三元组,我们已经知道了,知识图谱是一条条知识组成的,一条条知识又是三元关系(Subject——Predicate——>Object)组成的,那么问题就来了,如何描述这个三元关系呢?
在知识图谱中,我们用RDF形式化地表示这种三元关系。[1] 从定义上来看,RDF(Resource Description Framework),即资源描述框架,是W3C制定的,用于描述实体/资源的标准数据模型。[1] 为什么我们描述知识要用“Web”的形式去描述呢?因为网络、Web中的各项关系,其实和知识的抽象概念很像,这是一种即像树,又像网的东西。
有唯一确定主体、有连接属性的谓语、有明确属性值。
那么RDF框架下,对三元组是如何具体定义的呢?我们先来了解一下RDF图中定义的三种类型:International Resource Identifiers(IRIs),blank nodes 和 literals[1]。RDF通过定义出来的这三种属性对SPO三元组进行约束:
Subject可以是IRI或blank node。
Predicate是IRI。
Object三种类型都可以。
可以看到,主体必须是能唯一表示的,或者干脆就是匿名资源(Blank Node,这个概念可以向外引申,在这里可以先忽略)。唯一表示就会用到IRI,相当于是URL和URI的推广[1],用于唯一定义一个实体或是资源。(说白了,就是我们要通过一个确定的方式来找到唯一的它)
谓语也是要唯一表示的,就像你都不知道要和另一个人建立什么关系,你又怎么能跑过去说我们在一起吧。这个“在一起的两个人“这个关系描述得就太模糊,不能唯一确定。举个例子,两个男的可以是朋友、可以是仇人也可以是情侣。
那我们整理一下RDF定义三种类型的用处:
IRI —— 在整个网络或者图中唯一定义了一个实体/资源
blank node —— 没有IRI和literal的资源,或者说匿名资源[1],暂不详细分析
literal —— 字面量,可以看作是带有数据类型的纯文本
回到刚刚那个例子,架设有两个男人一个为A,一个为B,我们的主体Subject是男人A,我们给他一个IRI:www.man-a/relation
;我们的谓语是表示与主体是朋友的关系,我们给他一个带有prefix的IRI:kg:firiends
;然后我们的客体就是男人B的名字,我们给他一个字面量:man-b
。
那么这个描述两个男人间朋友关系的这个知识就可以表述为:www.man-a/relation
——kg:firiends
——man-b
。
是不是一下子就很清楚了。这就是RDF的作用,使用标准数据模型的方式来进行资源描述。
介绍完RDF来表示关系,是不是感觉略有一点复杂,确实,这种方式比较严谨,更贴近知识图谱原始的定义。但实际在工业界应用过程中,还是会有相当多的场景会选择用属性图(Property Graph)的形式来描述“关系”。那么下面我们来介绍一下属性图的方式。
属性图(Property Graph)的逻辑其实特别好理解,就是主体会和很多客体有关系,比如主体是一个普通人A的话,他会有手机号、会有性别、会有家人,这些就是他的客体。而他和他的手机号之间,就是“拥有”的关系、他和他的父亲,就是父子关系,这种关系就是主体和客体的关系。以上三种,主体、关系、客体,都可以有相应的属性。例如普通人A,属性可以是他的名字(也可以成为一种主客体关系);他和他的手机号之间是拥有的关系,“拥有”关系可以有属性“何时拥有”、”如何拥有“等;手机号也可以有属性,比如归属的运营商名字等等。
这种同样描述主客体关系,但支持实体或关系拥有属性的方式,就称为属性图表示。
我们从知识的定义讲到了如何表示使用RDF定义单条知识,那么知识图谱的具体形象就呼之欲出了,知识图谱就是有多条知识组成的树状或网状结构,总体来说是图的结构。
主体必须唯一确定,谓语需要清楚描述,客体可以是另一条“子知识“也可以是字面量(也就是带数据类型的纯文本)。
以下是一个使用RDF描述的知识图谱,可以看到其通过RDF标准来表示出了单条的知识以及总体的关系:
图:罗纳尔多知识图谱[1]
以下是一个由属性图来表示的知识图谱,注意其支持实体或关系拥有属性,而RDF形式的就不支持:
图:一个简单的属性图[2]
其实更严谨地说,这两种不同的描述关系的方式,其实也是代表了两种知识图谱的存储方式:
基于RDF存储的形式
基于图数据库的存储
以下是两者之间的比较:
图:RDF和图数据库方式的比较[2]
知识图谱提供了从“关系”的角度去分析问题的能力。知识图谱这个概念最早由Google提出,主要是用来优化现有的搜索引擎。不同于基于关键词搜索的传统搜索引擎,知识图谱可用来更好地查询复杂的关联信息,从语义层面理解用户意图,改进搜索质量。[2]
从这个概念上来说,知识图谱主要解决的问题是一个复杂关联信息的查询和表示。那么我们来看看它的应用需求应该是如何的,换句话说,就是什么样的情况下,我们可以考虑采用知识图谱:
图:对采用知识图谱的需求分析
安全知识图谱(Cyber Security Knowledge Graph)是知识图谱在网络安全领域的实际应用,包括基于本体论构建的安全知识本体架构,以及通过威胁建模等方式对多源异构的网络安全领域信息( Heterogeneous Cyber Security Information)进行加工、处理、整合,转化成为的结构化的智慧安全领域知识库。[3]
上面说到了知识图谱的作用,我们再回顾一下,知识图谱可以解决复杂关系信息的查询和表示。因此,在安全领域,我们在进行应用的时候,同样要考虑以下几点:
是否有强烈可视化需求?
是否有较高的语义分析需求?
是否本事拥有海量的多源异构数据,且存在一定的信息孤岛问题?
是否有对关系进行深入搜索、挖掘、分析的需求?
是否有资源和能力去搭建系统,并且能进行运营?
其实思考这几个问题的时候,我们的需求和对应的应用场景,有经验的同学应该就比较清晰了。知识图谱需要解决的问题,它的应用,主要是:
从海量数据中挖掘、表示威胁的实体相关信息
提高威胁分析的效率,从关系出发去挖掘事件(Incident)、表示事件
对于基于语义分析的威胁发现具有相对的优势
因此,我们也可以用一句话来说明安全知识图谱的作用:从威胁实体和实体关系的视角出发,主要针对多源异构数据,利用语义分析的特点,识别威胁以及对威胁进行评估。
以下是一个用安全知识图谱表示的永恒之蓝攻击防御场景:
图:利用知识图谱构建攻击场景[4]
偏向于事件分析
知识图谱的关键点在于对“关系”的描述。对于事件来说,我们需要一个更高纬度的知识表达,主要来说,可以主要从这几个方面出发:威胁主体、攻击方法、资产、隐患和防御手段[4]。
使用基于属性图的知识图谱构建,我们需要定义好主客体的关系以及三者各自的属性;使用基于RDF的知识图谱构建,我们需要更加关注于严格的推理关系、将属性的表达用确定的关系谓语代替。
偏向于情报分析
对于情报分析来说,我们很多时候不是要关注自己怎么样,而是要关注对手怎么样,所以知识图谱在安全情报分析中的应用,主要的关注于:
对手是谁(Who):包括威胁行为体,赞助商和雇主
对手使用什么(What):包括他们的能力和基础设施
对手的行动时(When):确定行动的时间表和规律
对手的目的(Why):包括他们的动机和意图
对手的目标行业和地理区域(Where):详细说明行业,垂直行业和地理区域
对手如何运作(How):关注于他们的行为和规律
以上的5W1H[5]可以作为安全情报知识图谱构建时的参考,例如使用基于属性图的知识图谱构建,我们可以这样去构建:
威胁行为体作为Subject,赞助商和雇主可以作为其属性(Property)
基础设施作为威胁行为体的Object,用“自身拥有”或是”非法占用“来描述他们的关系(Predicate)
...
偏向于特定威胁分析
在这边我对它的定义主要用于分析某种特定恶意行为。这种特定的恶意行为需要有较明确,且相对唯一的攻击链。例如,我们可以把对恶意钓鱼邮件的攻击视为一种特定威胁,我们对恶意钓鱼邮件的分析,从规则、模型到专家经验转换等等,都是在对其进行特定威胁的分析。
从另一方面来说,一种特定的技战术组合也可以称为一种特定威胁,因为它的杀伤链也相对固定,对于这部分的知识图谱构建,可以帮助我们从整体角度观察威胁。
也许部分同学一看到展示需求,心里就会冒出来“大屏”、“给领导看的”、“没啥用”这些想法,虽然这确实也是一种现象,但我们也应该好好考虑一下这部分。
因为做安全的最终目的,还是说为了提高总体的安全能力,这个安全能力小到个人水平,大到国家安全。我们实际点讲,怎么才能提高企业的安全呢?企业安全由于其复杂性,不是某一方向上的技术很酷就能起到提高整日安全能力的。
企业安全的关键还是在于从检测——分析——响应——优化的闭环。这个闭环是关键,而这个闭环中,所要参与到的各个部门、乃至同部门的各个方向、同个方向上的各个人员,他们的先验知识都是不一样的。我们使用知识图谱进行展示的本意,是为了结构化地表达知识。从而降低闭环中各个环节的成本。这个成本包含很多方面,有时连沟通成本也是。
本文主要是学习和整理了知识图谱的相关概念,以及对其在安全领域的应用做了一个简单的分析。这块仍是处于一个探索阶段,还是有许多新的思路和落地方案需要补充。欢迎各位师傅批评指正。
关注微信公众号:人工智能技术与咨询。了解更多咨询!
审核编辑:符乾江
全部0条评论
快来发表一下你的评论吧 !