摘 要:提高网络空间安全的密码攻防能力,需要形成可表示、可共享、可分析的领域知识模式和知识库。利用自顶向下的构建方法,并通过本体构建方法梳理密码攻防领域的核心概念和关系,可以生成密码攻防领域本体。在领域本体的基础上,通过收集并处理多种来源密码攻防领域的文档资料,利用基于深度学习的训练方法得到可维护、可重用、可共享和可分析的领域知识图谱,并进行存储和应用。
内容目录:
1 领域本体构建
1.1 领域本体构建方法
1.2 密码攻防领域本体实现
2 领域知识图谱构建
2.1 多源数据清洗
2.2 数据预处理
2.3 联合学习法
2.4 结果及分析
2.5 知识入库
3 领域知识图谱应用
3.1 路径查找算法
3.2 应用示例
4 结 语
由于网络攻击的增加及其可能造成的严重损害,网络安全是一个对社会至关重要的关键领域,信息和数据基础设施遭受网络攻击的风险越来越高。作为网络空间安全的核心基础,密码攻防领域的挑战愈演愈烈。
量子计算的发展使得传统公钥密码算法变得不安全,为了应对量子计算对公钥密码算法的威胁,全球掀起了后量子密码算法研究的热潮。然而,后量子密码算法并不代表其实现过程达到了物理安全,后期出现的专门针对后量子密码算法的侧信道攻击技术,成为密码算法物理安全的主要威胁手段。此外,机器学习和人工智能等技术的发展,使得密码攻击呈现系统化、智能化、平台化、武器化和无源性等特点。信息系统平台面临的密码防御困难越来越大。
目前对于密码攻击和防御方面的研究大多数局限于密码技术和理论的研究,且呈现出分支复杂、结构多样、知识分散等特点,在密码攻防领域并不能形成整体的通用的攻防模式和框架,尤其是在文献资料繁多的情况下,利用这些分散、局限的知识很难形成全面有效的防御方案以应对系统基础设施的安全挑战。
对密码攻防领域的知识结构和体系模式进行梳理可以形成领域知识模式和知识库,避免知识凌乱分散和体系不统一,可以提供系统性的表示和分析能力。由于密码攻防领域的特殊性,相关领域知识通常难以获取,不利于研究人员应用,且随着知识大爆炸和大数据时代的到来,面临海量数据资料,传统的知识获取方法不再适用。因此,知识图谱作为近些年新兴的知识库管理技术在很多领域受到了广泛的关注。知识图谱是结构化数据集合的一种,可以呈现知识的发展过程和关系图,通过挖掘、分析、推理可以获得知识潜在内涵,并且可以使用其可视化功能提升知识的可理解性。知识图谱的关系结构适用于具有网络结构和复杂关系的知识体系,适用于密码攻防知识体系的构建和应用,可以促进密码攻防模式的深入探索。
为了生成密码攻防领域知识模式,构建该领域知识图谱,基于人工智能技术和自然语言处理技术,采用自顶向下方法,在密码攻防领域本体的基础上,收集多源领域文档资料,通过知识图谱技术构建可维护、可重用、可共享和可分析的知识库,并在该知识库基础上进行相关知识图谱应用。
1 领域本体构建
获取领域知识前,需要先归纳总结相关领域的本体概念,然后使用本体论的方法构建知识模式。本体论研究方法是将知识[一个领域内的概念(或实体)集合]及其之间的关系进行形式化的、明确的描述。在本体中,可以编码或定义语义信息和组件,如概念、对象、关系、属性、约束和公理,使本体具有机器可读性和推理能力。这种方式不仅引入了形式化的、显式的、可共享的和可重用的知识表示,还可以通过添加关于领域的新知识进行本体更新。
1.1 领域本体构建方法
本文使用 Protégé5.5.0 工具编辑和实现密码攻防领域本体的构建,具体流程可分为以下5 个步骤:
(1)确定领域的目的和范围。领域是密码攻防,领域本体目的是为构建者提供密码攻防领域的核心实体,以及如何实现实体之间的相互关联,生成一个可重用的密码攻防领域的知识模式。领域工作范围包括密码攻击和防御方面的内容。
(2)梳理领域实体和重要术语。对密码攻防领域进行典型密码攻防场景分析和文献调查,形成基础数据库,其中包含 1997—2022 年的300 多项研究和 19 项典型密码攻防场景(如表 1所示),从中得到 200 多种术语。
表 1 密码攻击场景
(3)定义核心概念、分类和描述。这里的分类并不限于创建类似于层次结构的类结构,是为组成或影响密码攻防领域的实体定义的一组概念。为每个核心概念提供定义并引出其同义词术语,便于领域知识的重用和共享。例如攻击者(如密码工程师)是进行密码攻击的一方,它可以是一个人或组织,也可以是一个攻击平台。
(4)定义关系。根据核心概念的定义创建概念之间的关系。有些关系直接在定义中表现出来,而有些关系可能是隐式的,因此需要对其进行显式描述。例如,攻击动机是激励(驱动)攻击者进行密码攻击的因素,因此,从“攻击动机”到“攻击者”可以建立一个关系“激励”。“激励”作为谓词被创建,“攻击动机”是它的主体,“攻击者”是它的客体,符合主语—谓 词 — 宾 语(Subject-Predicate-Object,SPO)三元组的格式和要求。
(5)获得本体。最后构建出密码攻防领域本体。
1.2 密码攻防领域本体实现
实现领域本体需要不断积累领域知识,创造出领域概念和关系,要求对该领域的基本知识概念和应用有全面的了解,此外,还要对学科交叉的知识点有清晰的认识。
基于文献 [3],着重介绍本体实现的关键内容和过程,即定义概念、关系及描述。本文所有数据均来源于 1997—2022 年的典型攻击场景及文献调查,将文献中的标题、摘要和关键字等部分通过 CiteSpace 分析工具进行关联分析,数据形式如表 2 所示。
表 2 文献调查数据示例
1.2.1 定义领域本体中的核心概念
本节详细介绍了组成和影响密码攻防领域的实体相对应的 15 个核心概念。每个概念描述了概念定义、同义词术语、分类方法和一些其他属性。攻击防御模型如图 1 和图 2 所示。攻击模型表示典型密码攻击场景中攻击者的攻击流程:攻击者受一定因素(动机)的激励,根据自身的密码攻防知识,形成攻击目标;分析目标系统实现的核心操作,找到攻击点,利用攻击机制(攻击方法),制定攻击策略;执行攻击并得到攻击结果;结果反馈到满足攻击动机的预定攻击目标。防御模型则表示在典型的防御场景中的防御流程:根据安全目标和自身基础知识,通过软硬件系统形成密码防御系统;分析密码系统核心实现面临的攻击威胁,根据防御机制(防御方法),形成防御策略;根据防御效果,对防御方案进行安全性评价;进行防御策略更新。
图 2 防御模型
由图 1 和图 2 中的模型可以得到攻击者、攻击动机、攻击目标、基础知识等 15 类定义,在 Protégé 工具中的结构如图 3 所示,将典型攻击场景和文献调查中的实体类进行细分。
图 3 本体概念的实现
1.2.2 定义领域本体中的关系
基于上述给出的 15 大类定义,本文根据攻击者和防御者模型的流程分析,提取出核心概念之间的 17 种关系构成 SPO 三元组。这些关系及其主体、方向和客体(结束)如表 3 所示。
表 3 关系列举
1.2.3 在本体中定义其他描述
除表 3 中对概念和关系的公理描述外,还可以添加注释。例如,添加实例注释有利于后期实例编辑和知识分析;还可以增加一条推理规则:如果攻击者制定并执行某种攻击方法,该攻击方法应用于特定的密码系统,则从攻击者到密码系统将创建一个关系“攻击”。
另外,为了统计分析后期构建的知识图谱,还需要为每个类的所有子类添加诸如“上游查询次数”“下游查询次数”“最新查询时间”等属性。
1.2.4 获得密码攻防领域本体
根据核心概念和关系的梳理,使用 Protégé工具构建的密码攻防领域本体如图 4 所示,其中每个方框里的概念表示附近核心概念的分类法,核心概念及其关系为图中虚线连接起来的部分,右边区域为关系的图例。将实体和关系以简洁的方式进行梳理整合,得到密码攻防领域实体关系,如图 5 所示。图 5 中三元组 < 攻击动机 , 激励 , 攻击者 > 表示为两个○概念和一个→关系的形式。
图 4 Protégé构建的密码攻防领域本体
图 5 密码攻防领域实体关系
通过上述的构建过程,在 Protégé 中编码了15 个核心概念和 17 种核心概念之间的关系,并提供了相关的描述、规则和注释。
后 续 可 以 使 用 资 源 描 述 框 架(Resource Description Framework,RDF)、可扩展标记语言(Extensible Markup Language,XML)、 网 络本体语言(Web Ontology Language,OWL)等多种本体描述语言和文件格式导出该领域本体,实现领域知识模式的重用和共享。
2 领域知识图谱构建
基于现阶段的人工智能技术和自然语言处理技术,采用自顶向下方法,在密码攻防领域本体的基础上,收集多源的领域文档资料进行预处理,采用基于深度学习的联合信息抽取方法构建密码攻防领域知识图谱,构建流程架构如图 6 所示。
图 6 领域知识图谱构建流程架构
图 6 中(1)本体开发和(2)典型密码攻防场景已在第 1 章节介绍,(7)~(10)是知识图谱后期更新维护的过程,与(3)~(6)大体相同。下面着重介绍多源数据清洗、数据预处理、联合学习方法、结果及分析和知识入库5个方面的内容。
2.1 多源数据清洗
数据资料的来源有很多方面,如最新的机构研究报告、文献资料、百科知识等。不同来源的文档数据,除了在文档格式上的区别(如HTML、PDF、DOCX、TXT 等),还有语言、语法、习惯、场合等方面的区别,因此需要对不同来源的数据分别进行清洗处理,生成包含单条句子的不同来源数据集。这样将不同来源的格式化和非格式化数据文档进行统一整理,输出统一格式,一般为用于自然语言处理的原始数据集,每行表示一条语句的 UTF-8 编码的文本数据格式。
多源数据清洗的流程如图 7 所示。第 1 步,收集整理到密码攻防领域多源文档资料,文档分为 3 类:研究报告,来源于网络平台,一般可以输出为 TXT 或 DOCX 格式文档;领域文献资料,来源于中文期刊摘要和正文部分,一般是 PDF 或 CAJ 格式,可以转化为 TXT 文档;网络百科,采用网络爬虫的方式,由初始关键词出发,查询到大量相关领域词条信息,经过人工删除整理形成数据文档。第 2 步,针对每一类型的文档进行文字提取,如 HTML 格式文档可以根据标签取值,取得含有表述实际意义的段落或者句子,PDF 和 DOC 文档则可以转化为TXT 文本格式。第 3 步,文字清理,将文档中文字意义表征不明显或不相关的段落或句子删除,如图片、超链接、公式、广告句等,仅保留有意义的段落。第 4 步,文档组合,将上述文档进行拆分合并,保持合并之后的每个文档数据量相当,避免出现数据量过大或者过小的文档。第5步,对每个文档进行分句处理,每一个句子占用一行,是自然语言处理前期数据准备的常规操作,用来规范数据输入源,分句算法如算法 1 所示。其中分句符号一般包括中文句号、英文句号、省略号等。
图 7 多源数据清洗流程
由算法 1 可知,运用文档分句算法时,首先需要将整个文档读入内存,去除换行符,将文档内容组合为一条字符串,然后将该字符串以预定的分句符号集(cutFlags)进行分割,最终得到该文档的语句集合(sentences)。
2.2 数据预处理
2.2.1 分词和词向量生成
通常文字(中文或英文)不能被机器模型所识别,不能直接用于神经网络模型训练,需要将其进行向量化。对于中文自然语言句子,可以将每个文字或者每个词组作为一个唯一标识,对这些唯一标识进行向量化后可以进行模型训练。
中文字或词向量化的主要方法有 word2vec,如连续词袋模型(Continuous Bag of Words,CBOW)、skip-gram 模型和预训练模型(Bidirectional Encoder Representations from Transformers,BERT)。CBOW 模型利用上下文信息来预测中心字,skip-gram 模型是利用中心字来预测周边临近的字,大型预训练模型则根据字在句子中的上下文信息得出其字向量,可以解决word2vec 中一词多义问题。BERT 模型使用双向Transformer 编码器兼顾上下文信息,根据字在句子中的上下文信息得出其字向量,也可以解决一词多义问题。本文选用 BERT 中文预训练模型来产生字向量。
BERT 模 型 的 输 入 表 示 包 含 3 个 部 分:WordPiece 向量、位置向量(Position Embedding)和句子向量(Segment Embedding),如图 8 所示。其中“[CLS]”为句子的开始标记,“[SEP]”为句子的分割标记。
图 8 BERT 的输入向量合成
2.2.2 序列标注
序列标注是自然语言的基础任务之一,目前主流的序列标注方法有 BIO、BIOES、IO、BMOES 等,由于密码攻防领域的特殊性,常会在文献中出现复杂的实体,因此采用“BMOES-4位序列标注法”将清洗的语句集合进行标注。
2.3 联合学习法
信息抽取任务是从预处理好的数据集中抽取出符合本体要求的 SPO 三元组的过程,是知识图谱构建的关键过程。信息抽取任务可以分为命名实体识别(Named Entity Recognition,NER)和关系抽取(Relation Extraction,RE)两个部分。
命名实体识别是信息抽取和信息检索中的一项重要任务,其目的是识别出文本中表示命名实体的成分,并对其进行分类。中文命名实体识别方法有 Lattice-LSTM、Lattice-LSTM-CRF、BiLSTM-CRF 和 BERT-BiLSTM-CRF等。其 中 的 条 件 随 机 场(Conditional Random Field,CRF)的目标函数不仅考虑输入的状态特征函数,而且包含了标签转移特征函数,在位置标注过程中可以充分利用内部及上下文特征信息。
关系抽取的方法主要分为两类:一类是流水线方法,即先抽取实体,再对实体进行关系分类;另一类是联合学习方法,是指同时进行实体识别和关系分类。试验表明,联合学习方法大大提升了实体和关系的抽取效果。例如,潘航宇提出了基于参数共享的联合学习方法,将实体和关系抽取任务利用共享的编码层建立联系,两个任务模型损失组合,再通过反向传播调整参数来提升训练效果。因此,本文采用了联合学习方法(BERT-BiLSTM-CRF-Att,BBCA),如图 9 所示。
图 9 联合学习方法
图 9 中 主 体 包 含 了 3 个 步 骤:第 1 步,BERT 词嵌入,即将中文分词后的语句向量化,使得每个字之间的语义信息相互关联;第 2 步,左 侧 部 分 NER 模 块, 分 为 BiLSTM 编 码 层 和CRF 解码层,BiLSTM 层是长短时记忆网络(Long Short-Term Memory,LSTM)的变体,使用 LSTM 对词嵌入进行编码,再使用条件随机场CRF 确定每个字的标注分类,即概率;第 3 步,右侧部分 RE 模块,将第 1 步的字向量和第 2 步的信息进行拼接,通过多头注意力机制提升分类的准确率,最后利用全连接层计算关系类别的概率。在损失合并方面,利用中间监督调整权衡参数,以提升训练效果。
2.3.1 命名实体识别
联合学习法中命名实体识别包含BiLSTM层、Encode 层 和 CRF 层 3 个 部 分。其 中,BiLSTM层结合上下文信息进行编码,通过合并正向和反向两条链路计算输出;Encode 层将高维向量映射到符合标签维度的输出;CRF 层是一个方形矩阵,表示标签之间的转移信息,提高输出的合法性。
(1)BiLSTM 层:即双向长短时记忆网络,通过合并正向和反向两条链路计算输出,更好地捕获双向的语义依赖。
正向 LSTM 层可以用下式表示:
式中:为 t 时次输入;为 t 时次输出;分别为输入门、遗忘门、输出门和当前信息的候选状态;角标 i,f,o,c,h 为元素序号;W 为转换矩阵;b 为偏置向量;σ 和 tanh为 Sigmoid 和双曲正切函数;⊙为逐元素乘积;t 和 t-1 为时间序列。反向的 LSTM 计算方法同正向 LSTM,输出为则最终的 BiLSTM 输出为正反两个方向的隐藏状态
(2)Encode 层:BiLSTM 层的输出是高维信息,若要得到每个字对应实体标签的预测概率,还需要向低维度进行投影,即需要加入一个全连接层。每个语句输出的特征信息经过全连接层之后得到标签概率其中 M 为语句长度;L 为标签数。
(3)CRF 层:为了保证序列的局部一致性,通常在 Encode 层之后添加 CRF 层。CRF 具有转移特征,考虑了输出标签之间的顺序,经过训练之后的 CRF 层可以感知全局的约束信息,使得实体识别更加精准。CRF 判别过程如下:
式中:y 为标注序列;x 为单词序列;Score(x,y)为单词序列 x 产生标注序列 y 的得分,得分越高则说明其产生的概率越大。
2.3.2 关系抽取
通过多头注意力机制获取关系分类信息,根据输入数据的不同部分赋予不同的权重,得出对每个词语关系类别预测的贡献程度大小。注意力机制计算方法如图 10 所示。该机制将输入数据分为查询向量 Q 和键值对 K-V 两个部分。查询向量 Q 表示需要注意的目标,而键值对 K-V用于表示输入数据的各个部分,Q,K,V 三者都通过输入矩阵 X 作线性变换而来,变换矩阵为通过计算查询向量 Q 和键值对 K -V 之间的相似度,可以获得不同部分的权重值。
图 10 注意力机制计算方法
第 1 步,将 Q 和 K 矩阵经过 MatMul 生成相似度矩阵;第 2 步,对相似度矩阵作缩放(Scale);第 3 步,对向量掩码;第 4 步,对相似度进行归一化(SoftMax)处理,得到归一化之后的权重矩阵;第 5 步,将权重矩阵与 V 相乘,得到加权求和的输出结果。
利用多头注意力机制将上述注意力过程经过多次重复,对结果进行拼接。在多次中每次使用的线性变换矩阵均不同,则对向量空间的表示也不同,能获得更多的文本特征信息。
2.3.3 基于中间监督的损失合并
由于实体识别和关系抽取的阶段性,基于中间监督构建损失函数,将实体识别的损失作为最终总损失函数的一部分,总损失函数如下:
式中:CEL 为损失函数;pe" 和 pr" 分别表示实体识别和关系抽取生成结果;α 和 β 为权衡参数,均设置为 0.5。
2.4 结果及分析
(1)数据集。鉴于密码攻防领域的特殊性,当前并未有公开的中文专业数据集。通过人工收集密码攻防领域的中文源数据集(主要来源有研究报告、百科知识及文献资料等)。从这些数据资料中提取了 3 012 条合法语句,每条语句均经人工标注,包含一条以上的实体或关系。
(2)评价指标。本文使用的是通用评价指标准确率(Precision)、召回率(Recall)和 F1值进行信息抽取效果评估,其值由下式得到:
式中:TP 为真正例;FP 为假正例;FN 为假反例;F1 值为准确率和召回率的加权调和平均值。
(3)结果及分析。为了验证使用的联合抽取模型的有效性,综合对比了传统模型 Lattice-LSTM、BiLSTM-CRF 和 BERT-BiLSTM-CRF,试验结果如表 4 所示。由表 4 可以看出,联合学习方法整体的效果优于传统模型,主要原因有两点:特征向量的生成采用了预训练模型,准确率更高;在关系分类时采用了注意力机制,减少了分类噪声,也提高了准确率。
表 4 试验结果
由表 4 还可以看出,以上训练结果较其他领域开源公共数据集训练低,主要有两方面原因:一方面,多源的领域数据集收集可能不够全面,代表性不足;另一方面,领域知识模型可能不够精确,领域本体可能还有需要改进的地方。
通过模型训练和预测,共产生密码攻防领域实体 620 个,SPO 三元组 1 247 组。三元组示例如表 5 所示,统计结果如图 11 所示。
表 5 试验产生的 SPO 三元组
图 11 知识图谱统计
2.5 知识入库
使用图数据库 Neo4j 作为存储、显示知识图谱和分析密码攻击的工具。Neo4j 能够更容易、更快速地表示、检索和导航连接的数据。Neo4jCQL(查询语言)命令是声明式模式匹配的,采用人类可读的格式,易于学习。
3 领域知识图谱应用
3.1 路径查找算法
基于本文构建的知识图谱有如下设定:
(1)给 15 个类的每个子类实例都增加若干个“成功次数”属性,体现节点关系之间的权重分配,各节点间的查询顺序也可以使用该属性进行排序;
(2)每次攻击成功,即攻击效果满足目标要求,则该路径上所有节点的“成功次数”属性加 1;
(3)每次防御成功,即防御效果满足目标要求,则该路径上所有节点的“成功次数”属性加 1;
(4)路径查询中优先从具有较高“成功次数”属性的节点路径进行选择;
(5)路径查询中在任何一步都可以有优先性(条件),这是基于攻击者或防御者前期经验设定的。
由此引出以下两个路径探索算法:
在算法 2 中,以攻击者(atter)或者攻击动机(att_mot)为起始点,在未到达攻击点(att_point)之前,将路径上符合条件的节点加入攻击路径(att_path)中。下一节点查询顺序以高“成功次数”优先,且路径中需满足预设条件。到达攻击点之后执行攻击,如果攻击成功,则返回攻击路径;如果攻击失败,则清空攻击路径,继续进行查询。
在算法 3 中,以防御者(defer)或者防御目标(def_goal)为起始点,在未到达防御点(def_point)之前,将路径上符合条件的节点加入防御路径(def_path)中。下一节点查询顺序以高“成功次数”优先,且路径中需满足预设条件。到达防御点之后执行防御,如果防御达到目标,则返回防御路径;如果防御达不到目标,则清空防御路径,继续进行查询。
需要指出的是,无论攻击路径还是防御路径均可能存在多条路径,因此上述过程可以执行多次以获取全部的结果。
3.2 应用示例
在特定密码攻防场景中,可以从一个节点(攻击者或者攻击方法)出发,通过节点间的关联信息生成一个子图,通过该场景的子图,可以直观生动地理解密码攻防的流程和机制。“彩虹表攻击”中节点之间的关联关系如图 12 所示。
图 12 彩虹表攻击查询图示例
图 12 右侧内容是根据算法 2 实现的,攻击条件是:[ 黑客 , 彩虹表攻击 , 密码组成 ] 和高“成功次数”优先,攻击路径起始点为攻击动机“报复”,当其下一节点不是攻击者时,则最终路径会到达算法 2 中的第 9 行,不能到达预计攻击点;当其下一节点为攻击者时,关系为“激励”,根据“黑客”条件可以查询到相应的攻击者。以此类推,当下一节点包含“密码组成”条件时,则表示得到一条攻击路径。
同样的,图 12 左侧内容根据算法 3 实现,防御条件是:[ 密码算法实现 , 加盐 , 密码组成 ]和高“成功次数”优先,防御路径起始点为安全目标“密钥安全”,当其下一节点不是“软硬件实现”时,最终路径都会到达算法 3 中的第 9 行,不能到达预计防御点;当其下一节点为“软硬件实现”时,关系为“驱动和要求”,根据“密码算法实现”条件可以查询到相应的“软硬件实现”。以此类推,当下一节点包含“密码组成”条件时,则表示得到一条防御路径。
4 结 语
本文采用自顶向下方法,在构建密码攻防领域本体的基础上,对密码攻防领域多种来源的文档资料实现知识获取,并以基于深度学习的联合学习法为主体,实现了领域知识图谱构建架构,提出了该知识图谱的路径查找算法,并进行了相关应用。限于专业领域的特殊性,本文所用的联合学习法还有提升优化的空间,进而促进领域本体模式和知识图谱的更新。
引用格式:曹增辉 , 郭渊博 , 黄慧敏 . 基于多源数据的密码攻防领域知识图谱构建 [J]. 信息安全与通信保密 ,2023(12):55-70.
作者简介 >>>
曹增辉,男,硕士,工程师,主要研究方向为密码攻防和知识图谱;
郭渊博,男,博士,教授,主要研究方向为网络防御、数据挖掘、机器学习和人工智能安全等;
黄慧敏,女,硕士,高级工程师,主要研究方向为信息技术。
选自《信息安全与通信保密》2023年第12期(为便于排版,已省去原文参考文献)
声明:本文来自信息安全与通信保密杂志社,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。