第14卷第5期 智能系统学报 Vol.14 No.5 2019年9月 CAAI Transactions on Intelligent Systems Sep.2019 D0:10.11992/tis.201809024 网络出版地址:http:/kns.cnki.net/kcms/detail/23.1538.TP.20181225.1603.004.html 基于Hadoop的大规模网络安全实体识别方法 秦娅2,申国伟2,余红星2 (1.贵州大学计算机科学与技术学院,贵州贵阳550025,2.贵州大学贵州省公共大数据重点实验室,贵州贵 阳550025) 摘要:随着大数据时代的到来,如何从多源异构数据中准确地识别网络安全实体是构建网络安全知识图谱的 基础问题。因此本文针对网络安全相关文本数据,研究支持海量网络数据的安全实体识别算法,为构建网络安 全知识图谱奠定基础。针对海量的文本类网络数据中安全实体的高效精准抽取问题,本文基于Hadoop分布式 计算框架提出改进的条件随机场(conditional random fields,CRF)算法,对数据集进行有效分割,实现安全实体 的高效准确识别。在大规模真实网络数据集上的实验证明,本文提出的算法达到了较高的网络安全实体识别 准确率,同时提高了识别的效率。 关键词:大数据;异构数据;网络安全;知识图谱:安全实体;实体识别;网络数据;Hadoop:CRF算法 中图分类号:TP391.0文献标志码:A文章编号:1673-4785(2019)05-1017-09 中文引用格式:秦娅,申国伟,余红星.基于Had00p的大规模网络安全实体识别方法J.智能系统学报,2019,14(5): 1017-1025. 英文引用格式:QIN Ya,.SHEN Guowei,,YU Hongxing.Large-scale network security entity recognition method based on HadoopJ].CAAI transactions on intelligent systems,2019,14(5):1017-1025. Large-scale network security entity recognition method based on Hadoop QIN Ya'2,SHEN Guowei2,YU Hongxing'2 (1.Department of Computer Science and Technology,Guizhou University,Guiyang 550025,China;2.Guizhou Provincial Key Laboratory of Public Big Data,Guizhou University,Guiyang 550025,China) Abstract:In this era of big data,a fundamental problem for constructing network security knowledge graphs is how to efficiently and accurately identify the network security entities present in multi-source heterogeneous data.This study focuses on text data related to network safety and investigate the use of a security entity recognition algorithm that sup- ports massive-network text data,thereby laying a foundation for building the network security knowledge graph.To effi- ciently and accurately extract the security entities in massive-network text data,we propose an improved conditional random fields(CRF)algorithm based on the Hadoop distributed computing framework to segment data sets effectively. which realize efficient and accurate recognition of security entities.The experimental results reveal that the proposed se- curity entity recognition algorithm achieved a high precision rate on a large-scale real network data set and improved the efficiency of network security entity recognition.. Keywords:big data;heterogeneous data;network security;knowledge graph;security entity;entity recognition;net- work data;Hadoop;CRF algorithm 近年来,随着信息技术的快速发展,逐步进入了大数据四时代,网络空间安全面临全新的挑战, 因此网络威胁情报这一新的安全技术应运而生。 收稿日期:2018-09-13.网络出版日期:2018-12-28. 基金项目:国家自然科学基金项目(61802081):贵州省公共大 威胁情报(threat intelligence),主要是通过大数 数据重点实验室开放课题(2017BDKF刀024):贵州省 据、分布式系统或其他特定收集方式收集的用于 自然科学基金项目(20161052). 通信作者:申国伟.E-mail:gwshen@g平u.edu.cn 评估和应用的数据集,针对一个现存的或新兴的
DOI: 10.11992/tis.201809024 网络出版地址: http://kns.cnki.net/kcms/detail/23.1538.TP.20181225.1603.004.html 基于 Hadoop 的大规模网络安全实体识别方法 秦娅1,2,申国伟1,2,余红星1,2 (1. 贵州大学 计算机科学与技术学院,贵州 贵阳 550025; 2. 贵州大学 贵州省公共大数据重点实验室,贵州 贵 阳 550025) 摘 要:随着大数据时代的到来,如何从多源异构数据中准确地识别网络安全实体是构建网络安全知识图谱的 基础问题。因此本文针对网络安全相关文本数据,研究支持海量网络数据的安全实体识别算法,为构建网络安 全知识图谱奠定基础。针对海量的文本类网络数据中安全实体的高效精准抽取问题,本文基于 Hadoop 分布式 计算框架提出改进的条件随机场 (conditional random fields,CRF) 算法,对数据集进行有效分割,实现安全实体 的高效准确识别。在大规模真实网络数据集上的实验证明,本文提出的算法达到了较高的网络安全实体识别 准确率,同时提高了识别的效率。 关键词:大数据;异构数据;网络安全;知识图谱;安全实体;实体识别;网络数据;Hadoop;CRF 算法 中图分类号:TP391.0 文献标志码:A 文章编号:1673−4785(2019)05−1017−09 中文引用格式:秦娅, 申国伟, 余红星. 基于 Hadoop 的大规模网络安全实体识别方法 [J]. 智能系统学报, 2019, 14(5): 1017–1025. 英文引用格式:QIN Ya, SHEN Guowei, YU Hongxing. Large-scale network security entity recognition method based on Hadoop[J]. CAAI transactions on intelligent systems, 2019, 14(5): 1017–1025. Large-scale network security entity recognition method based on Hadoop QIN Ya1,2 ,SHEN Guowei1,2 ,YU Hongxing1,2 (1. Department of Computer Science and Technology, Guizhou University, Guiyang 550025, China; 2. Guizhou Provincial Key Laboratory of Public Big Data, Guizhou University, Guiyang 550025, China) Abstract: In this era of big data, a fundamental problem for constructing network security knowledge graphs is how to efficiently and accurately identify the network security entities present in multi-source heterogeneous data. This study focuses on text data related to network safety and investigate the use of a security entity recognition algorithm that supports massive-network text data, thereby laying a foundation for building the network security knowledge graph. To efficiently and accurately extract the security entities in massive-network text data, we propose an improved conditional random fields (CRF) algorithm based on the Hadoop distributed computing framework to segment data sets effectively, which realize efficient and accurate recognition of security entities. The experimental results reveal that the proposed security entity recognition algorithm achieved a high precision rate on a large-scale real network data set and improved the efficiency of network security entity recognition.. Keywords: big data; heterogeneous data; network security; knowledge graph; security entity; entity recognition; network data; Hadoop; CRF algorithm 近年来,随着信息技术的快速发展,逐步进入 了大数据[1] 时代,网络空间安全面临全新的挑战, 因此网络威胁情报这一新的安全技术应运而生。 威胁情报[2] (threat intelligence),主要是通过大数 据、分布式系统或其他特定收集方式收集的用于 评估和应用的数据集,针对一个现存的或新兴的 收稿日期:2018−09−13. 网络出版日期:2018−12−28. 基金项目:国家自然科学基金项目 (61802081);贵州省公共大 数据重点实验室开放课题 (2017BDKFJJ024);贵州省 自然科学基金项目 (20161052). 通信作者:申国伟. E-mail:gwshen@gzu.edu.cn. 第 14 卷第 5 期 智 能 系 统 学 报 Vol.14 No.5 2019 年 9 月 CAAI Transactions on Intelligent Systems Sep. 2019
·1018· 智能系统学报 第14卷 威胁,可用于做出相应决定的知识。从2014年开 的算法运行效率较低,单机上的安全实体识别算 始,威胁情报逐渐成为网络安全领域的热点,成 法难以满足安全实体识别需求。 为一种新的网络安全技术。 针对上述问题,本文提出了基于Hadoop的 当今社会正处于大数据时代,同时具有信息 Map/Reduce分布式计算框架,提出了与规则相结 碎片化的特征,从而赋予了网络安全信息海量化 合的改进CRF算法实现对安全实体的高效、准确 与碎片化特点,导致网络威胁情报分析人员很难 识别。本文的主要工作包括: 对信息进行获取和整合。因此,针对网络安全信 1)针对网络安全实体识别,对安全实体识别 息的碎片化和海量化的特点,将其进行过滤、分 进行问题抽象及形式化描述,给出了基于Ha- 类以及关联,从而形成一个网络安全知识体系, doop的网络安全实体识别框架。 衍生成为网络安全知识图谱。网络安全知识图谱 2)分析网络安全数据中的实体结构特征,给 构建的前提就是对信息进行抽取,信息抽取是网 出了网络安全实体识别规则,并进一步提出了改 络安全知识图谱构建的最为关键的一步,其中最 进的CRF算法,对算法进行分析。 为关键就是网络安全实体识别。 3)在真实的数据集上,针对提出的网络安全 网络安全实体识别是命名实体识别中一种 实体识别方法,结合评测标准进行对比实验,结 特定领域的实体识别,其目的是对网络安全领域 果表明本文提出的方法在准确率和效率上都有所 专业的词汇进行分类;而通用领域的命名实体识 提高。 别,主要识别文本中具有特定意义的实体,主要 综上所述,针对网络安全实体识别问题,本文 包括人名、组织名和地名等。目前,常见的是英 基于Hadoop分布式计算框架提出改进的CRF算 文网络安全实体识别,针对中文的网络安全实体 法,对数据集进行有效分割,解决网络安全实体 的识别研究工作很少。Jones等o在Bootstrap- 识别的问题,实现准确识别网络安全实体的意义。 ping算法指导下,实现了网络文本中的安全实体 和关系自动识别:Joshi等m实现了一种网络文本 1问题定义 数据的信息识别方法,利用CRF算法来识别网络 安全相关实体及关系;Lal1提出了一种基于 网络安全威胁情报分析可为复杂网络环境下 SVM算法的信息识别方法,实现了从网络文本数 的网络攻防提供情报支撑。在网络威胁情报分析 据中识别网络安全相关概念和术语;Mulwad等 中,网络数据主要识别黑客组织、单位、漏洞、恶 设计了基于SVM算法的信息识别系统,检测和 意程序等类型网络安全实体,如图1所示。 识别网络文本中的漏洞与攻击信息。 总的来说,网络安全实体的识别方法主要分 近日,国家信息安全漏洞共享平台收录了 为基于规则和基于统计的实体识别方法以。基 Joomla!com_fields?组件存在的QL注人漏洞] (CNVD-2017-06861、对应CVE-2017-8917)。 于规则的实体识别方法对于较小规模的数据具有 远程攻击者无需任何身份认证,可获取数据库敏 效果好和速度快的特点,但是规则的编写十分困 感信息,包括管理员登录信息并控制网站后台。 难,且移植性较差。基于统计的识别方法利用人 工标注语料进行训练,对具体语言特性依赖相对 图1Web文本数据中的安全实体识别 较少,移植性强,主要识别方法有隐马尔科夫模 Fig.1 Security entity recognition in web text data 型u](hidden Markov mode.,HMM)、最大熵模 本文重点分析17类网络安全实体,图2给出 型W(maximum entropy markov model,MEMM)和 了网络安全实体的本体模型1,通过人工编写 条件随机场模型s-(conditional random fields, 的方式构建了网络安全领域的本体模型,通过 CRF)等。 JSON语言实现。该模型是一个基于多维标签的 目前,网络安全实体的识别主要存在以下难点: 网络安全本体模型,其中多维标签包括来源信 1)网络安全实体数量众多且类型多种多样, 息、属性信息、元信息等标签信息。 难以满足自然语言处理领域中的命名实体定义, 针对海量的文本数据D={D1,D2,…,Dw,经 且不断地会有未登录词作为新的安全实体出现。 过预处理和分词后,任意一个文本数据D:形成 2)网络文本数据中的实体具有不同的结构, M,个词,构成词序列D,={,,…,xw。本文的 比如网络安全实体出现大量的嵌套、别名、缩略 目标是经过算法处理后,从D中抽取K类网络安 词等问题,没有严格的构词规律可以遵循。 全实体E={E,E2,…,Ex山,且每一类安全实体标记 3)在大规模数据条件下,基于机器学习模型 为E,={e,e,…,elo
威胁,可用于做出相应决定的知识。从 2014 年开 始,威胁情报逐渐成为网络安全领域的热点,成 为一种新的网络安全技术[3-4]。 当今社会正处于大数据时代,同时具有信息 碎片化的特征,从而赋予了网络安全信息海量化 与碎片化特点,导致网络威胁情报分析人员很难 对信息进行获取和整合。因此,针对网络安全信 息的碎片化和海量化的特点,将其进行过滤、分 类以及关联,从而形成一个网络安全知识体系, 衍生成为网络安全知识图谱。网络安全知识图谱 构建的前提就是对信息进行抽取,信息抽取是网 络安全知识图谱构建的最为关键的一步,其中最 为关键就是网络安全实体识别。 网络安全实体识别是命名实体识别[5] 中一种 特定领域的实体识别,其目的是对网络安全领域 专业的词汇进行分类;而通用领域的命名实体识 别,主要识别文本中具有特定意义的实体,主要 包括人名、组织名和地名等。目前,常见的是英 文网络安全实体识别,针对中文的网络安全实体 的识别研究工作很少。Jones 等 [6] 在 Bootstrapping 算法指导下,实现了网络文本中的安全实体 和关系自动识别;Joshi 等 [7] 实现了一种网络文本 数据的信息识别方法,利用 CRF 算法来识别网络 安全相关实体及关系; Lal [ 8 ] 提出了一种基于 SVM 算法的信息识别方法,实现了从网络文本数 据中识别网络安全相关概念和术语;Mulwad 等 [9] 设计了基于 SVM 算法的信息识别系统,检测和 识别网络文本中的漏洞与攻击信息。 总的来说,网络安全实体的识别方法主要分 为基于规则和基于统计的实体识别方法[10-12]。基 于规则的实体识别方法对于较小规模的数据具有 效果好和速度快的特点,但是规则的编写十分困 难,且移植性较差。基于统计的识别方法利用人 工标注语料进行训练,对具体语言特性依赖相对 较少,移植性强,主要识别方法有隐马尔科夫模 型 [13] (hidden Markov mode,HMM)、最大熵模 型 [14] (maximum entropy markov model,MEMM)和 条件随机场模型[15-16] (conditional random fields, CRF)等。 目前,网络安全实体的识别主要存在以下难点: 1) 网络安全实体数量众多且类型多种多样, 难以满足自然语言处理领域中的命名实体定义, 且不断地会有未登录词作为新的安全实体出现。 2) 网络文本数据中的实体具有不同的结构, 比如网络安全实体出现大量的嵌套、别名、缩略 词等问题,没有严格的构词规律可以遵循。 3) 在大规模数据条件下,基于机器学习模型 的算法运行效率较低,单机上的安全实体识别算 法难以满足安全实体识别需求。 针对上述问题,本文提出了基于 Hadoop 的 Map/Reduce 分布式计算框架,提出了与规则相结 合的改进 CRF 算法实现对安全实体的高效、准确 识别。本文的主要工作包括: 1) 针对网络安全实体识别,对安全实体识别 进行问题抽象及形式化描述,给出了基于 Hadoop 的网络安全实体识别框架。 2) 分析网络安全数据中的实体结构特征,给 出了网络安全实体识别规则,并进一步提出了改 进的 CRF 算法,对算法进行分析。 3) 在真实的数据集上,针对提出的网络安全 实体识别方法,结合评测标准进行对比实验,结 果表明本文提出的方法在准确率和效率上都有所 提高。 综上所述,针对网络安全实体识别问题,本文 基于 Hadoop 分布式计算框架提出改进的 CRF 算 法,对数据集进行有效分割,解决网络安全实体 识别的问题,实现准确识别网络安全实体的意义。 1 问题定义 网络安全威胁情报分析可为复杂网络环境下 的网络攻防提供情报支撑。在网络威胁情报分析 中,网络数据主要识别黑客组织、单位、漏洞、恶 意程序等类型网络安全实体,如图 1 所示。 近日,国家信息安全漏洞共享平台收录了 Joomla! com_fields组件存在的SQL注入漏洞 (CNVD-2017-06861、对应CVE-2017-8917)。 远程攻击者无需任何身份认证,可获取数据库敏 感信息,包括管理员登录信息并控制网站后台。 图 1 Web 文本数据中的安全实体识别 Fig. 1 Security entity recognition in web text data 本文重点分析 17 类网络安全实体,图 2 给出 了网络安全实体的本体模型[17-18] ,通过人工编写 的方式构建了网络安全领域的本体模型,通过 JSON 语言实现。该模型是一个基于多维标签的 网络安全本体模型,其中多维标签包括来源信 息、属性信息、元信息等标签信息。 D = {D1,D2,··· ,DN} Di Mi Di = {x1, x2,··· , xMi } E = {E1,E2,··· ,EK} Ei = {e 1 i , e 2 i ,··· , e Mi i } 针对海量的文本数据 ,经 过预处理和分词后,任意一个文本数据 形成 个词,构成词序列 。本文的 目标是经过算法处理后,从 D 中抽取 K 类网络安 全实体 ,且每一类安全实体标记 为 。 ·1018· 智 能 系 统 学 报 第 14 卷
第5期 秦姬,等:基于Hadoop的大规模网络安全实体识别方法 ·1019· 拥有 利用 利用 软件 脆弱性 恶意 程序 运 产生 包含 攻击 行 网络流 事件 @ 衣 用 通信 用户 拥有 账号 登陆 访问 主机 资源 地址 利用 攻击者 隶属于 隶属于 对应 拥有口 对应 隶属于 单位 IP 端口 域名 组织 隶属于 对应 运营商 组件 服务 图2网络安全实体的本体模型 Fig.2 Ontological model of network security entity 2基于Hadoop的安全实体识别框架 体标注,由人工判断手动标注为E,En表示安全 实体。 针对海量的网络安全数据,本文提出基于 ④最后,训练网络安全实体模型。在训练过 Hadoop平台的网络安全实体识别框架,利用Mapl 程中,根据训练工具的格式要求将前面的所有标 Reducel)分布式计算模型实现高效的数据处理。 注后的数据转化成特定的数据格式,然后利用 本文针对大规模数据的网络安全实体识别的工 CRF算法进行模型训练。 作,主要运用了Hadoop中的HDFS和MapRe- duce这两个组件,对数据进行并行化处理。具体 基于Hadoop的安全抽取框架 的抽取过程为:首先,将预处理的数据存储在HD FS中,HDFS会将这些数据切分成许多独立的小 Hadoop分布式平台 数据块,存储到若干个节点上,这些小数据块就 体抽 HDFS MapReduce 「知识库 会被多个Map任务并行处理;其次,在Hadoop上 提交任务进行网络安全实体识别,MapReduce会 为每个任务输入一个数据子集,同时调用CRF算 数据预处理 数据库 法进行网络安全实体识别,Map任务生成的结果 除 本 分词结果 o4i 会继续作为Reduce任务的输人;最后,由Re- 词 标注 训练模型 duce任务输出最后结果,并写入HDFS。本文除 了将识别出的网络安全实体存入HDFS,也将网 数据源 漏洞数据库网络安全公告开源威胁情报库 络安全实体存入图数据库Neo4j,为将来构建网 络安全知识图谱奠定基础。图3为网络安全实体 图3网络安全实体识别框架 识别的框架图。 Fig.3 Network security entity recognition framework 1)数据预处理 2)中文网络安全实体识别 本文主要对网页文本数据进行实体识别,因 本文主要是针对中文网络文本数据的安全实 此在抽取之前要对数据预处理,处理过程如下: 体识别,数据的输入为中文分词文本数据,在此 ①使用正则表达式对网页文本进行预处理, 之前,需要利用CRF算法进行模型训练,训练数 去除网页中的关于HTML的标签。 据主要来自于部分网络安全文本数据。对于中文 ②通过使用Stanford CoreNLP提供的分词工 网络安全实体数据,进行人工手动标注,标注完 具,将去除标签后的文本数据进行分词。 成后,将其放入训练工具中进行训练,实现中文 ③构建语料库,由于网络安全领域没有统一 网络安全实体模型的建立,最后通过CRF算法实 的语料库,因此在对安全实体识别前,需要对其 现网络安全实体的识别。 构建语料库。对已经分词的文本数据进行实体标 在对网络文本数据进行分词的过程中,对于 注,特征实体时,可以通过程序先将所有实体标 网络攻击事件,一般都是由“动词+名字”组合,才 注为O,O表示未识别实体;然后进行网络安全实 能完整而清楚描述一次攻击,如:X$S跨站脚本
用户 账号 主机 软件 资源 地址 IP 端口 域名 组件 服务 运营商 攻击者 网络流 脆弱性 恶意 程序 攻击 事件 单位 组织 拥有 隶属于 登陆 访问 隶属于 运 行 产生 拥有 利用 利用 发 起 通信 对应 隶属于 利用 利 用 包含 包 含 对应 隶属于 对 应 对应 拥有 图 2 网络安全实体的本体模型 Fig. 2 Ontological model of network security entity 2 基于 Hadoop 的安全实体识别框架 针对海量的网络安全数据,本文提出基于 Hadoop 平台的网络安全实体识别框架,利用 Map/ Reduce[19] 分布式计算模型实现高效的数据处理。 本文针对大规模数据的网络安全实体识别的工 作,主要运用了 Hadoop 中的 HDFS 和 MapReduce 这两个组件,对数据进行并行化处理。具体 的抽取过程为:首先,将预处理的数据存储在 HDFS 中,HDFS 会将这些数据切分成许多独立的小 数据块,存储到若干个节点上,这些小数据块就 会被多个 Map 任务并行处理;其次,在 Hadoop 上 提交任务进行网络安全实体识别,MapReduce 会 为每个任务输入一个数据子集,同时调用 CRF 算 法进行网络安全实体识别,Map 任务生成的结果 会继续作为 Reduce 任务的输入;最后,由 Reduce 任务输出最后结果,并写入 HDFS。本文除 了将识别出的网络安全实体存入 HDFS,也将网 络安全实体存入图数据库 Neo4j,为将来构建网 络安全知识图谱奠定基础。图 3 为网络安全实体 识别的框架图。 1) 数据预处理 本文主要对网页文本数据进行实体识别,因 此在抽取之前要对数据预处理,处理过程如下: ①使用正则表达式对网页文本进行预处理, 去除网页中的关于 HTML 的标签。 ②通过使用 Stanford CoreNLP 提供的分词工 具,将去除标签后的文本数据进行分词。 ③构建语料库,由于网络安全领域没有统一 的语料库,因此在对安全实体识别前,需要对其 构建语料库。对已经分词的文本数据进行实体标 注,特征实体时,可以通过程序先将所有实体标 注为 O,O 表示未识别实体;然后进行网络安全实 体标注,由人工判断手动标注为 En,En 表示安全 实体。 ④最后,训练网络安全实体模型。在训练过 程中,根据训练工具的格式要求将前面的所有标 注后的数据转化成特定的数据格式,然后利用 CRF 算法进行模型训练。 数据源 漏洞数据库 网络安全公告 开源威胁情报库 数 据 预 处 理 去 除 标 签 文 本 分 词 实 体 标 注 训 练 模 型 实 体 抽 取 Hadoop 分布式平台 HDFS MapReduce 图 数 据 库 Neo4j 基于 Hadoop 的安全抽取框架 分词数据 加载模型 文本数据 分词结果 调用CRF 知识库 算法 图 3 网络安全实体识别框架 Fig. 3 Network security entity recognition framework 2) 中文网络安全实体识别 本文主要是针对中文网络文本数据的安全实 体识别,数据的输入为中文分词文本数据,在此 之前,需要利用 CRF 算法进行模型训练,训练数 据主要来自于部分网络安全文本数据。对于中文 网络安全实体数据,进行人工手动标注,标注完 成后,将其放入训练工具中进行训练,实现中文 网络安全实体模型的建立,最后通过 CRF 算法实 现网络安全实体的识别。 在对网络文本数据进行分词的过程中,对于 网络攻击事件,一般都是由“动词+名字”组合,才 能完整而清楚描述一次攻击,如:XSS 跨站脚本 第 5 期 秦娅,等:基于 Hadoop 的大规模网络安全实体识别方法 ·1019·
·1020· 智能系统学报 第14卷 攻击、木马攻击、蠕虫蔓延等。所以在攻击事件 实际上,在对网络安全实体识别进行评测时, 名的分词上,本文采用基于规则进行识别,不进 不需要一个合并的输出,因为合并输出后会影响 行分词,因为分词会导致对攻击事件的整体叙述 最后的评测结果,因此可以在对网络安全实体进 在语义上描述不清楚,无法理解到底发生了什么 行评测时省去Reduce阶段,那么Map函数的输出 样的攻击事件。 将不会有中间输出,数据将直接存储至HDFS。 3.2CRF算法描述 3基于Hadoop的CRF改进算法 在算法1中,CRF是网络安全实体识别的核 3.1 Hadoop算法描述 心,分别对应算法1中的3)~6)步。CRF又称为 本文采用基于Map/Reduce的CRF算法并行 马尔可夫随机域,最早由Lafferty等20于2001年 化处理以缩短识别时间,实现大量数据的网络安 提出,是一种对有序数据进行标注和切分的条件 全实体识别。MapReduce模型两个核心函数为 概率模型,拥有HMM和MEMM的特点。从形式 Map函数和Reduce函数,它们的输入都为<key, 上来讲,可以将CRF看作一种概率无向图模型, value>键值对,按一定的映射规则转换为另一个 定义一个无向图G=(V,E),节点和边用v和e表 或一批<key,value>。Map和Reduce任务函数有下 示,在图G中,v∈V表示G中的节点,V表示节点 列通用格式: 集合,e∈E表示G中的任意一条E为边集合;X Map:<K1,V><list(K2,V2)> (1) Y是两个随机变量,P(Y)是定义在X的条件下 Reduce :K2,list(V2)><K3,V3> (2) 的条件概率分布。如果在图G上,每个基于X的 式中:Map函数将输入的数据元素转换成<K1, 随机变量Y都服从马尔可夫特性,即 V>形式的键值对,K,和V的类型是任意的。每 pYlK,Y,w≠v)=p(YX,Y,w~v)(3) 一个输入的<K,V>都会输出一批<K2,V>,<K2, 式中对任意节点ⅴ成立,则称条件概率分布 V2>是Map计算的中间结果,然后输人到Re- P(YX)为条件随机场,式(3)中w~v表示两个节 点w和v之间存在连接边,表示两个节点G=(V, duce函数进行处理,输人形式为<Kz,list(V)>,输 出为<K,>。 E)在中位置相邻。Y,Y为节点v和p所对应的 随机变量。 在网络安全实体识别的过程中,对于每一个 最常用和最简单的CRF图结构是线性链结 要进行安全实体识别的文本数据,首先将训练好 构,可用于序列标注等问题,图4为线性链CRF。 的模型加载进来,然后在Map阶段调用CFR算法 由图4可知,线性链CRF在各个输出序列节点之 识别网络安全实体,最后在Reduce阶段将数据存 间做了一阶马尔可夫独立性假设,在给定一个输 储到HDFS和图数据库Neo4j。具体的基于Hadoop 入序列X的标注序列的情况下,令X={:,2,…,x】 的网络安全实体识别算法如算法1所示。 表示被观察的输入序列,Y=y,2,…,y}表示有 算法1基于Hadoop的网络安全实体识别核 限状态的集合。根据线性链CRF,线性链的Y的 心算法: 条件概率分布的形式为 输入网络文本数据D={x,x2,…,x: 输出网络安全实体E={E,E2,…,Ex}。 p0k)coexp(∑Ay40,%,x,0+∑4s0,xi0》(④ 1)调用Map函数; 式中:t为转移特征函数;s是状态特征函数;入和 2)对数据D中的文档进行分词并标注,形成 ,是对应的权重。可以将两个特征函数统一 观察序列D,={,,…,x书 为f。 3)CRFClassifier((Di)∥调用CRF算法识别网络 安全实体: 4)经过模型预测形成标注序列Y=yy2,… yM: 5)调用Reduce函数; 6)根据标注序列进行分类,得到K类实体的 E={Ei,E2,…,Ex X=X X2X-X 7根据平均值获得最终的E,={e,e,…,e“; 图4链式条件随机场 8)EntityStore.CreateNeo4jkey)/存储到Neo4j Fig.4 Chain conditional random field
攻击、木马攻击、蠕虫蔓延等。所以在攻击事件 名的分词上,本文采用基于规则进行识别,不进 行分词,因为分词会导致对攻击事件的整体叙述 在语义上描述不清楚,无法理解到底发生了什么 样的攻击事件。 3 基于 Hadoop 的 CRF 改进算法 3.1 Hadoop 算法描述 本文采用基于 Map/Reduce 的 CRF 算法并行 化处理以缩短识别时间,实现大量数据的网络安 全实体识别。MapReduce 模型两个核心函数为 Map 函数和 Reduce 函数,它们的输入都为<key, value>键值对,按一定的映射规则转换为另一个 或一批<key,value>。Map 和 Reduce 任务函数有下 列通用格式: Map :< K1,V1 >→< list(K2,V2) > (1) Re duce :< K2,list(V2) >→< K3,V3 > (2) 式中:Map 函数将输入的数据元素转换成<K1, V1>形式的键值对,K1 和 V1 的类型是任意的。每 一个输入的<K1,V1>都会输出一批<K2,V2>,<K2, V2>是 Map 计算的中间结果,然后输入到 Reduce 函数进行处理,输入形式为<K2,list(V1 )>,输 出为<K3,V3>。 在网络安全实体识别的过程中,对于每一个 要进行安全实体识别的文本数据,首先将训练好 的模型加载进来,然后在 Map 阶段调用 CFR 算法 识别网络安全实体,最后在 Reduce 阶段将数据存 储到 HDFS 和图数据库 Neo4j。具体的基于 Hadoop 的网络安全实体识别算法如算法 1 所示。 算法 1 基于 Hadoop 的网络安全实体识别核 心算法: Di = {x1, x2,··· , xMi 输入 网络文本数据 } ; 输出 网络安全实体 E = {E1,E2,··· ,EK}。 1) 调用 Map 函数; Di = {x1, x2,··· , xMi } 2) 对数据 D 中的文档进行分词并标注,形成 观察序列 ; 3)CRFClassifier(Di) //调用 CRF 算法识别网络 安全实体; Y = {y1, y2,··· yi , yMi } 4) 经过模型预测形成标注序列 ; 5) 调用 Reduce 函数; E = {E1,E2,··· ,EK} 6) 根据标注序列进行分类,得到 K 类实体的 ; Ei = {e 1 i , e 2 i ,··· , e Mi i 7) 根据平均值获得最终的 } ; 8)EntityStore.CreateNeo4j(key)//存储到 Neo4j 实际上,在对网络安全实体识别进行评测时, 不需要一个合并的输出,因为合并输出后会影响 最后的评测结果,因此可以在对网络安全实体进 行评测时省去 Reduce 阶段,那么 Map 函数的输出 将不会有中间输出,数据将直接存储至 HDFS。 3.2 CRF 算法描述 在算法 1 中,CRF 是网络安全实体识别的核 心,分别对应算法 1 中的 3)~6)步。CRF 又称为 马尔可夫随机域,最早由 Lafferty 等 [20] 于 2001 年 提出,是一种对有序数据进行标注和切分的条件 概率模型,拥有 HMM 和 MEMM 的特点。从形式 上来讲,可以将 CRF 看作一种概率无向图模型, 定义一个无向图 G=(V,E),节点和边用 v 和 e 表 示,在图 G 中,v∈V 表示 G 中的节点,V 表示节点 集合,e∈E 表示 G 中的任意一条 E 为边集合;X、 Y 是两个随机变量,P(Y|X) 是定义在 X 的条件下 的条件概率分布。如果在图 G 上,每个基于 X 的 随机变量 Y 都服从马尔可夫特性,即 p(Yv |X,Yw,w , v) = p(Yv |X,Yw,w ∼ v) (3) 式中对任意节 点 v 成立,则称条件概率分 布 P(Y|X) 为条件随机场,式 (3) 中 w~v 表示两个节 点 w 和 v 之间存在连接边,表示两个节点 G=(V, E) 在中位置相邻。Yv,Yw 为节点 v 和 w 所对应的 随机变量。 X = {x1, x2,··· , xn} Y = {y1, y2,··· , yn} 最常用和最简单的 CRF 图结构是线性链结 构,可用于序列标注等问题,图 4 为线性链 CRF。 由图 4 可知,线性链 CRF 在各个输出序列节点之 间做了一阶马尔可夫独立性假设,在给定一个输 入序列 X 的标注序列的情况下,令 表示被观察的输入序列, 表示有 限状态的集合。根据线性链 CRF,线性链的 Y 的 条件概率分布的形式为 p(y|x, λ)∞exp(∑ i, j λj tj(yi−1, yi , x,i)+ ∑ i,k uk sk(yi , x,i)) (4) tj sk λj uk fj 式中: 为转移特征函数; 是状态特征函数; 和 是对应的权重。可以将两个特征函数统一 为 。 Y1 Y2 Y3 Yn−1 Yn X=X1 , X2 ,..., Xn−1, Xn ... 图 4 链式条件随机场 Fig. 4 Chain conditional random field ·1020· 智 能 系 统 学 报 第 14 卷
第5期 秦姬,等:基于Hadoop的大规模网络安全实体识别方法 ·1021· 因此,线性链CRF可表示为 要是从已经标注好的训练数据集学习条件随机场 模型的参数,即各特征函数的权重向量λ,通常可 p0x,)= f0y-1y,x,0) (5) 以通过最大似然估计来实现。目前对于CRF模 11 型参数进行估计的方法有3种,其中基于Ⅱ$和 Aifj(y-.yi.x.i)) (6) GS两种算法是属于迭代的方法。目前广泛使用 11 的条件随机场参数估计算法是L-BFGS算法,它 式中:1,是特征函数对应的权值,是待训练的参数。 是一种近似的二阶方法。与传统的迭代梯度方法 在CRF算法中主要有3个关键的问题,分别 相比,此方法的收敛速度更快。下面是L 为特征函数的选择、参数估计和模型推断。 BFGS算法的计算公式: CRF模型中特征函数的形式定义为f0-1,y,x,, a-Ea0-∑Eraf,n-9 (8) 它是状态特征函数和转移特征函数的统一形式 表示。 模型推断是在给定条件随机场模型参数入 b(x,i),y1=<titile >,y:=<author> 下,预测出最可能的状态序列。 f0y-1,xi)= 0,其他 (7 4实验及分析 特征函数通常是二值函数,取值为1或0。 4.1实验环境及数据集 在定义特征函数f0y-1y,x,)的时候,首先构建 本实验是在Windows环境下的Eclipse下进 i时刻的观察值x的真实特征b(x,)={0,1}的集 行开发的,使用Java编程语言。由于本实验是基 合,结合其对应的标注结果,就可以获得模型的 于Hadoop的网络安全实体识别,Hadoop集群环 特征函数集。本文根据网络安全实体的特点,选 境部署在实验室所提供的5台服务器上,Ha- 取部分特征,主要包括词、词性、词边界和网络安 doop平台的拓扑图如图5所示,其中服务器使用 全实体列表,每一个特征都对应一个特征函数。 的是Linux操作系统一CentOS6.8,表1为5台服 参数估计是条件随机场最为关键的问题,主 务器的硬件配置。 eml外网:XX.X.X em2内网:192.168.17.11 Maste 接人交换机 外网交换机机房内网 eml外网:XX.X.X 交换机 Slavel em2内网: 192.168.17.12 eml外网:X.XX.X Slave2em2内网:192.168.17.13 Win开发客户机 eml外网:X.X.X.XSlave4 eml外网:XX.X.X Slave3 em2内网:192.168.17.14 em2内网:192.168.17.15 图5 Hadoop平台的拓扑结构 Fig.5 Topological diagram of the Hadoop platform 表1服务器的硬件配置 据,共有40292条漏洞数据。这些数据主要包括 Table 1 Server hardware configuration 漏洞标题、漏洞缺陷编号、漏洞类型、漏洞作者、 服务器 CPU 内存/GB硬盘T 攻击事件名以及漏洞公开时间。本实验先对乌云 Master 24核Intel(R)Xeon(R) 192 4 漏洞数据集进行去标签,再进行分词,然后进行 Slavel 24核Intel(R)Xeon(R) 96 实体标注,形成了语料库。 Slave2 24核Intel(R)Xeon(R) 96 6 为了对算法进行有效的测试,本文对网络安 Slave3 24核Intel(R)Xeon(R) 64 10 全实体进行人工标注。在实验中用语料库中的 Slave4 24核Intel(R)Xeon(R) 32 2 70%进行训练,30%进行测试,采用CRF算法,以 本实验采用的数据集主要来自于乌云漏洞数 词为单位进行网络安全实体识别。通过Hadoop 据库,数据主要包括2010~2016年公开的漏洞数 平台,本实验对30%的语料库数据进行测试,对漏
因此,线性链 CRF 可表示为 p(y|x, λ) = 1 Z(x) exp(∑ j j=1 ∑n i=1 λj fj(yi−1 , yi , x,i)) (5) Z(x) = ∑ y exp(∑ j j=1 ∑n i=1 λj fj(yi−1 , yi , x,i)) (6) 式中: λj 是特征函数对应的权值,是待训练的参数。 fj(yi−1, yi , x,i) 在 CRF 算法中主要有 3 个关键的问题,分别 为特征函数的选择、参数估计和模型推断。 CRF 模型中特征函数的形式定义为 , 它是状态特征函数和转移特征函数的统一形式 表示。 fj(yi−1, yi , x,i) = b(x,i), yi−1 =< titile >, yi =< author > 0, 其他 (7) fj(yi−1, yi , x,i) b(x,i) = {0,1} 特征函数通常是二值函数,取值为 1 或 0。 在定义特征函数 的时候,首先构建 i 时刻的观察值 x 的真实特征 的集 合,结合其对应的标注结果,就可以获得模型的 特征函数集。本文根据网络安全实体的特点,选 取部分特征,主要包括词、词性、词边界和网络安 全实体列表,每一个特征都对应一个特征函数。 参数估计是条件随机场最为关键的问题,主 要是从已经标注好的训练数据集学习条件随机场 模型的参数,即各特征函数的权重向量 λ,通常可 以通过最大似然估计来实现。目前对于 CRF 模 型参数进行估计的方法有 3 种,其中基于 IIS 和 GIS 两种算法是属于迭代的方法。目前广泛使用 的条件随机场参数估计算法是 L-BFGS 算法,它 是一种近似的二阶方法。与传统的迭代梯度方法 相比,此方法的收敛速度更快。下面 是 L - BFGS 算法的计算公式: ∂L(λ) ∂λj = Eβ(x,y) fj(x, y)− ∑ Ep(y|x k ,λ) fj(x (k) , y)− λk σ2 (8) 模型推断是在给定条件随机场模型参数 λ 下,预测出最可能的状态序列。 4 实验及分析 4.1 实验环境及数据集 本实验是在 Windows 环境下的 Eclipse 下进 行开发的,使用 Java 编程语言。由于本实验是基 于 Hadoop 的网络安全实体识别,Hadoop 集群环 境部署在实验室所提供的 5 台服务器上, Hadoop 平台的拓扑图如图 5 所示,其中服务器使用 的是 Linux 操作系统——CentOS 6.8,表 1 为 5 台服 务器的硬件配置。 接入交换机 Win 开发客户机 Master Slave1 Slave2 Slave3 em1 外网:X.X.X.X em2 内网:192.168.17.11 em1 外网:X.X.X.X em2 内网: 192.168.17.12 em1 外网:X.X.X.X em2 内网:192.168.17.13 em1 外网:X.X.X.X em2 内网:192.168.17.14 机房内网 交换机 em1 外网:X.X.X.XSlave4 em2 内网:192.168.17.15 外网交换机 图 5 Hadoop 平台的拓扑结构 Fig. 5 Topological diagram of the Hadoop platform 表 1 服务器的硬件配置 Table 1 Server hardware configuration 服务器 CPU 内存/GB 硬盘/T Master 24核Intel(R) Xeon(R) 192 4 Slave1 24核Intel(R) Xeon(R) 96 7 Slave2 24核Intel(R) Xeon(R) 96 6 Slave3 24核Intel(R) Xeon(R) 64 10 Slave4 24核Intel(R) Xeon(R) 32 2 本实验采用的数据集主要来自于乌云漏洞数 据库,数据主要包括 2010~2016 年公开的漏洞数 据,共有 40 292 条漏洞数据。这些数据主要包括 漏洞标题、漏洞缺陷编号、漏洞类型、漏洞作者、 攻击事件名以及漏洞公开时间。本实验先对乌云 漏洞数据集进行去标签,再进行分词,然后进行 实体标注,形成了语料库。 为了对算法进行有效的测试,本文对网络安 全实体进行人工标注。在实验中用语料库中的 70% 进行训练,30% 进行测试,采用 CRF 算法,以 词为单位进行网络安全实体识别。通过 Hadoop 平台,本实验对 30% 的语料库数据进行测试,对漏 第 5 期 秦娅,等:基于 Hadoop 的大规模网络安全实体识别方法 ·1021·