非结构化文档敏感数据识别与异常行为分析
2021-11-30喻波王志海孙亚东谢福进安鹏
喻波,王志海,孙亚东,谢福进,安鹏
(北京明朝万达科技股份有限公司,北京 100876)
伴随大数据时代来临,数据同土地、劳动力一样列入生产要素之一,为加快培育数据要素市场,数据安全防护是基础保障[1]。由于业务场景复杂多变、数据量持续增长,基于数据流的信息化架构演进对数据安全防护提出了更高要求。传统的数据安全防护措施难以适应新时代架构复杂、场景多样、数据海量、交互频繁的“大物移云智”环境。在数据安全领域,可以把管控场景划分为强管控、中管控、弱管控3种场景。针对强管控场景,在数据传输、数据存储等环节采取全量数据加密手段,可以解决强管控场景的安全诉求。但是在更为普遍的中管控场景,敏感数据与非敏感数据混合使用,如果采用强管控,必然对操作效率造成影响,但如果弱管控,又会造成敏感数据泄露。因此中管控场景,识别敏感数据与异常行为是目前数据安全领域研究的重要问题。
1 研究背景
近年来企业内部人员窃取数据事件频发,如银行内部人员窃取、贩卖上万条用户信息,根据Gartner的调查结果[2],内部人员窃取敏感数据、盗用账号等行为已经成为企业数据泄露的最主要原因。由于内部人员具备企业数据资产的合法访问权限,且了解企业敏感数据的存放位置,因此内部人员在合法外衣的保护下,自由地游走在企业内网,进行长期而隐蔽的数据窃取行为。
导致上述现象的根本原因是企业经营活动复杂、业务系统多、数据规模大,无法穷举人员、终端、应用、数据之间多对多的使用与访问规则,从而为内部恶意人员留下了巨大的非法活动空间。这种情况下,安全部门只能把管控重点放在已知的、规则明确的安全威胁上,导致内部人员长期、隐蔽数据窃取行为发现难,数据泄露事件依然层出不穷[3-5]。
因此,研究文档分类分级技术,识别需要重点保护的敏感数据;研究用户异常行为分析技术,识别用户异常操作,是解决内网数据泄露的重要课题。
2 基于N元语言模型的文档智能分类分级技术
根据数据安全治理理论,数据安全防护的基础是识别数据资产、分级分类数据资产,只有明确了数据保护对象及安全等级,才能对数据实施按需防护,避免一刀切式的静态防御,促进数据的安全流通与共享。
在数据资产的识别过程中,按载体形态差异其识别方式也存在不同,数据按载体形态主要划分为结构化数据与非结构化数据两类。针对结构化数据,数据集中承载在数据库中,可以通过元数据的精确定义,较为直接地进行数据资产识别并实施分级分类管控,但针对广泛分布在终端、网络、云存储中的非结构化敏感数据(如商务合同、会议纪要、监管报告、技术资料等敏感文档),鉴于文档是由字、词及上下文语义构成的,单纯的依赖关键词、正则表达式等传统规则手段对文档分类进行识别,缺乏词与词之间的上下文语义级分析,导致文档分类分级的高误报率与高漏报率。如商务合同与涉诉文档,虽然都会存在甲方、乙方、联系电话、联系方式等关键词,但在不同类型文档语境下,其文档表达含义与分类截然不同。而且,由于文档分类定级误判,会产生敏感文档的非授权明文外发风险,进而导致数据泄露。由于分类误判对非敏感级文档进行加密、阻断处理,影响正常业务开展[6-8]。
2.1 面临的技术问题
通过自然语言处理技术检测识别文档敏感内容,已经演化为文档智能分类分级的技术趋势,在落地实施过程中,也面临如下突出的技术问题[9]。
在文档语义特征表达层面,各领域文档形式多样、内容丰富、中文语体混杂的情况普遍存在,例如公安电子笔录形式多样,官方语体和方言语体交相混杂,且上下文语义高度相关。而目前的语言模型建立在朴素贝叶斯独立性假设的基础上,现实情况明显无法满足独立性假设要求,从而导致文档分类分级的准确率较低[9-10]。
在文档内容识别层面,敏感文档的分类检测技术分为有监督和无监督两种模式,无监督文档分类技术不需要样本但准确率很低,有监督文档准确率相对较高,但存在样本标注工作量大、人工标注质量无法保证的问题,直接导致产品研发周期长、成本高、效果差的问题[11]。
针对文档分类分级在实际应用中面临的技术问题,本文提出如下的解决思路:构建N元中文语言模型,解决当前语言模型面临的独立性假设不成立问题。构建自动无监督样本库,解决当前样本标注工作量大,质量难保证问题。
2.2 技术方案
2.2.1 语言模型基本原理
语言模型的发展经历了专家语法规则模型、统计语言模型和神经网络语言模型。专家语法规则模型在初始阶段利用模式匹配技术,以自然语言的语法规则为切入点,模式匹配归纳总结,提供自然语言建模能力,但随着语法规则规模急剧扩大,专家语法规则已不可持续[12]。
统计语言模型认为文档由单词序列构成,通过建模,分析文档中单词的概率分布。统计语言模型基于朴素贝叶斯的独立性假设,即将句子S看成一组相互独立的单词序列 (w1w2···wn),那么对于任意一个单词wi(i≤n)在句子S中出现的条件概率为P(wi|w1w2···wi−1),那么整个句子的概率模型P(S)=P(w1w2···wn),根据贝叶斯公式和全概率公式可推导出概率模型:
式(1)必须在基于朴素贝叶斯独立性假设条件的情况下才成立,但是在实际应用中朴素贝叶斯独立性假设往往不成立。
神经网络语言模型为了应对独立性假设不成立的问题,采用因果思路,在语料库庞大到能覆盖所有可能语义表述的情况下,通过训练的方法获得条件概率P(wi|w1w2···wi−1)。但是收集这样一个庞大的语料库本身就是一个问题,在特别的应用领域,例如各地方言与官方语体混杂语料的收集明显不可行[13]。
2.2.2N元中文语言模型构建过程
因此在统计语言模型的基础上提出N元中文语言模型,其核心思想是将语言模型划分为N个相互独立的子模型,分段训练,利用线性插值公式分步整合。其实施过程:
1) 将语料库按领域和语体划分为N个语料库子集;
2) 针对各个语料子集训练特定语言模型;
3) 使用线性插值公式,获得整个语言模型:
式中 0≤λ≤1。 λ 的期望最大值(expectation maximum, EM)的迭代计算方法为
1) 对于N个语言模型,使用随机数初始化 λ;
2)根据整个语言模型公式计算新的语言模型概率;
3)第r次迭代,第j个语言模型在第i(i≤n)类上 λ 的计算公式为
式中h为历史。
4)不断迭代,重复步骤2)、3),直至收敛。
通过上述方法,将中文语言模型的困惑度值从320降低到150以下,为自然语言处理后续任务奠定基础。
2.2.3 无监督算法构建样本库基本原理
常用的无监督聚类包括K均值聚类、均值漂移聚类、基于密度的聚类方法、高斯混合模型的最大期望聚类和层次聚类等。经实验验证效果最好的方法是K均值聚类。K均值聚类首先随机选择K个中心点,其次计算每个样本到K个中心点的欧氏距离,然后将每个样本划分到离它最近的中心点所属类族,最后更新每个类族的中心点,重复迭代直到所有的样本不再被重新分类为止[14]。此过程不需要人工标注样本,无须人工干预就可以自动区分样本及类别,但是K均值聚类面临两个问题:
1)K的取值问题。在业务层面,企业往往也无法提供文档类别数;在技术层面,K均值聚类算法的K取值本身也是一个关键问题。
2) 准确率低问题。K均值聚类算法,虽然是效果最好的无监督算法,但是准确率也只能到70%,与构建样本库的要求还相去甚远。
2.2.4 基于无监督算法的样本库构建过程
针对上述问题,基于无监督算法的样本库构建过程如下:
1) 从生产环境网络出口收集大量文档,作为样本集Q;
2) 采用N元中文语言模型对样本Q中的文档进行特征提取;
3) 采用数据分析工具Pandas对样本集Q中的文档特征进行特征对齐;
4) 采用非线性降维的算法(uniform manifold approximation and projection for dimension reduction,UMAP)降维文档特征,降低文档特征复杂性,提高聚类准确率;
5) 确定K均值聚类算法的K值,具体原理和方法为:假设真实类别数为N,所有样本到其所属类族中心的距离的平方和为D,随着K值增加,样本划分的类族越来越精细,每个类族的内聚程度会越来越高,那么平方和D会越来越小;当K值小于N时,增加K值时会大幅增加每个族的聚合程度,故平方和D下降梯度会很大,当K值大于等于N时,继续增加K值,类族内部的聚合效果不再明显,所以平方和D下降梯度会急剧变小,平方和D下降梯度拐点即为真实聚类数K:
式中:i为类族编号;Ci为第i个类族;P为Ci中的某一个文档数据;Mi为Ci的类族中心点向量;D为所有样本到其所属类族中心的距离的平方和;
6) 按照5)确定的K值,对样本集Q进行聚类,得到聚类结果,由于K均值聚类算法准确率离样本库准确率要求太远,优化K均值聚类算法提升准确率的投入大而回报小,所以不可取。因此采用将无监督转换为有监督,分批迭代,投票筛选样本的办法来解决此问题;
7) 从K均值聚类结果中挑出一部分离类族中心距离小于预设阀值M的文档作为样本集Y,可以调节M的取值,确保挑中样本集Y的准确性;
8) 将样本集Y分为训练集和验证集;
9) 分别采用支持向量机、TextCNN、邻近算法建模,并使用样本集Y训练模型;
10) 从Q中取出一批样本,分别使用已训练的支持向量机、TextCNN、邻近算法模型进行预测;
11) 使用少数服从多数的投票法,对预测结果进行合并,挑出至少有2个模型预测结果均一样的样本,将这些样本合并到样本集Y中;
12) 重复步骤10)~11),直至样本数量达到要求。
3 基于无标记样本的实时用户异常行为分析技术
随着企业IT架构日益复杂,业务系统逐步增多,大量内部隐藏、持久、缓慢的数据泄露行为成为企业数据安全关注的重点。传统的单点式安全防护措施,对于具备一定反侦查能力的数据泄露行为,毫无办法。为了解决隐蔽数据泄露问题,采用基于人工智能的用户异常行为分析技术,从传统的特征规则和人工分析转向大数据和机器学习驱动的新型安全模式[14]。
基于从正常行为中发现规律,从规律中挖掘异常的思路:首先,基于历史数据构建用户个体行为、群体行为、场景行为三大行为基线,从个体、群体、场景3个角度诠释正常用户行为;然后,采用神经网络,建立用户异常行为模型,对用户异常行为进行跟踪、预测与判定。模型具备实时流处理、离线批量处理两项能力,实时流用于实时分析日志,动态发现异常,并进行跟踪。离线批量处理,用于对历史数据进行分析判定,在历史数据中发现已发生的异常行为[15]如图1所示。
图1 模型构建过程Fig.1 Build model process
在用户异常行为分析中,采用大数据和机器学习构建异常检测模型,显著提高异常行为识别能力,缩短策略升级严重滞后问题,异常行为检测时间控制在24 h以内,自动优化模型,实现自适应动态风险识别[15]。
3.1 面临的技术问题
目前采用机器学习技术帮助企业明确用户与实体的行为基线,检测偏离基线的异常行为,防止数据泄露。但在实际生产环境中,由于样本依赖度过高而导致异常行为识别准确率较低。
现有的用户异常行为分析系统需要通过大量已标注样本数据,训练生成用户异常行为分析模型,但是在实际应用中,用户往往不具备足够的已标注样本数据,从而导致系统识别准确率偏低[16-17]。
3.2 解决思路
为解决目前用户异常行为分析过程中样本依赖过高的问题,构建无样本依赖、实时识别异常行为的分析系统。本文采用无监督异常点检测算法,以海量行为日志数据为基础,计算单一操作行为异常,自动构建异常行为样本库,解决样本依赖问题。
3.3 技术方案
3.3.1 离群点检测构建异常行为样本库基本原理
由于异常行为与正常行为日志数据混杂存储,异常数据呈现出以下特点:
1) 异常数据的特征与大多数数据的特征是不一致的,例如同一个员工,大多数情况下都会使用自己的账号登录业务系统,员工每天的工作内容都基本相同,其行为也应基本相同。如果某天在自己办公电脑上使用其他账号登录,就可能是非正常行为。
2) 异常数据在企业数据中的占比较小,例如同一岗位的不同员工,大多数情况下工作内容基本相同,其工作产生的行为日志特征也基本相同,如若某员工与其他同岗位员工行为不太一致,就可能是非正常行为。
针对上述日志数据的特点,可以采用基于统计的、距离的、密度的量化指标,刻画异常数据与全集数据的疏离程度,即离群点检测方法[18]。
3.3.2 离群点检测构建异常行为样本库构建过程
依据企业日志数据的特点,企业用户异常行为样本库构建过程如下:
1) 在用户终端部署终端日志采集器,收集用户操作行为数据,如系统登录、文档操作、软件使用、邮件外发、上网行为等日志数据;
2) 在数据库、应用服务器、交换机等位置部署设备日志采集器,采集防火墙、业务系统、数据库等系统与设备的用户操作日志;
3) 定义用户异常行为场景;
4) 依据异常行为场景,确定场景所需的用户行为数据;
5) 依据场景所需的用户行为数据,从用户及操作类型的角度切分数据;
6) 对切分好的数据按照场景要求进行特征提取;
7) 使用邻近算法、离群点检测算法和Feature Bagging等算法,分析建模特征数据,分离出正常数据和异常数据;
8) 按场景聚合正常数据,形成样本库。
4 实验系统
4.1 系统架构
构建数据分类分级与异常行为分析实验系统,分析验证技术可行性与应用效果。
实验系统采用Spring Cloud微服务架构,使用应用容器Docker进行部署,采用关系型与文件型混合存储模式,通过Nginx Web服务器实现负载均衡。系统架构包括采集层、分析层、存储层、可视化层。
4.2 数据采集层
实验系统采用探针主动采集和接口被动采集两种模型,管理员可以通过图形化界面选择采集模型,定义探针主动采集频率、被动采集服务地址。主动采集探针部署在操作终端、交换机、应用服务器、数据库审计系统,主动采集日志。被动采集服务部署在服务端,通过标准接口,对接操作终端、交换机、应用服务器、数据库审计等系统上报的日志数据。日志数据上报后,数据流转引擎将日志数据推送至分布式消息系统Kafka数据队列组件中准备进行数据清洗处理与持久化。
采集探针利用日志处理引擎Logstash的filebeat组件,采用TCP、UDP协议将日志数据上报到采集层,通过网络和应用监测系统Zabbix Agent将日志数据上报至Zabbix 服务器。
采集层汇集日志数据后,经过数据匹配、解析以及组装操作,将数据推送到采集层中的Kafka队列中,通过数据分流操作以及动态模板匹配操作将数据推送到数据搜索引擎Elasticsearch中完成日志数据的存储流程。
采集层通过Logstash的input、filter、output组件对数据进行匹配、解析、组装,通过 HTTP Client读取Zabbix 服务端的数据,进行处理操作后将数据上报到数据存储层。
4.3 数据存储层
存储层存储训练用户异常行为分析模型需要的日志数据、训练分类分级模型需要的文档样本数据、用户异常行为告警数据、安全事件审计数据。其中日志数据包括终端、网络设备、主机设备、数据库、应用系统日志数据。文档样本数据包括覆盖业务范围内各业务分类与各安全等级的文档。
数据存储层使用Spark Streaming从Kafka中读取主动探针采集、被动接口采集汇总的日志数据,使用Spring Boot同步数据、生成文件,通过Common-pool2创建数据库连接池,通过Abstract-RoutingDataSource访问关系型数据库,使用Elasticsearch和Mysql存储用户异常行为告警数据、安全事件审计数据,使用Redis存储日志数据与文档样本数据,采用Mysql存储规则、用户权限等系统管理数据。
4.4 数据分析层
分析层包括基本规则与高级模型两种分析方式,其中基本规则是采用关键字、正则表达式等简单匹配模型识别文档类别、安全等级与异常行为。高级模型包括文档分类分级模型、用户异常行为分析模型。
数据分析层包括工作流框架、特征提取、算法模型、格式化输出等主要功能。工作流框架负责构建业务流、调度数据处理任务,特征提取负责选择各种数据的业务特征、特征提取和特征对齐,根据业务场景和数据分布选择算法模型,对接业务系统输出分析结果。
业务工作流采用SpiffWorkflow工作流框架,实现动态配置业务流程、动态选择数据特征,动态配置算法模型、灵活调度业务场景。
特征选择和特征提取采用N-Gram语言模型、词向量方法、线性差别分析、主成分分析、奇异值分解等技术对文档数据和行为数据进行特征选择和特征提取。
算法模型采用插件化封装,根据数据分布特点选择算法模型。算法模型包括K均值聚类、密度聚类方法、高斯混合模型,以及支持向量机、决策树、邻近算法、长短时记忆网络、神经网络。
采用JSON、XML协议封装输出数据,满足上层业务系统对接要求。
4.5 数据可视化层
可视化层用于审计分析用户异常行为安全事件、查看文档分类分级结果。
可视化层使用前后端完全分离的机制,采用VUE.JS结合Webpack搭建前端架构,使用 HTTP协议进行前后端的数据通信。
可视化层的接口服务模块,外部接口使用 Netty进行TCP协议数据交互、HttpClient 进行 HTTP协议数据交互。内部接口使用 Aviator、Elasticsearch、Mysql、Common-pool2 以及 Redis 实现。
5 实验分析
实验环境包括硬件和软件配置两部分。
硬件配置:两台测试机器,CPU Intel Core i3-4 130 3.40 GHz 4核,内存 8 GB,硬盘 5 TB,网卡 1 000 MB。
软件配置:操作系统 CentOS7.6,数据库MySQL5.7.29。
5.1 基于N元语言模型的文档智能分类分级技术实验过程
1) 实验准备
①服务器、客户端系统部署完成、网络通信正常;
②准备24 000份样本文件,其中财经、体育、娱乐、时政各6 000份;
③测试发件箱test@wondersoft.cn,收件箱test@shou.com。
2) 实验输入
①登录控制台,创建财经、体育、娱乐、时政分类,创建4个安全等级、定义每个安全等级涉及的敏感数据形式,导入样本文件,构建分类分级模型;
②使用foxmail发件箱test@wondersoft.cn发送各种类型、各种安全等级文档至test@shou.com,检查分类分级结果。
5.2 基于无标记样本的实时用户异常行为分析技术实验过程
1) 实验准备
①服务器系统搭建,GPU驱动安装、tensorflow环境搭建,客户端系统搭建和客户端软件安装;
②准备3 000名用户、30万条日志数据。日志数据包括邮件外发日志数据、U盘拷贝文件日志数据、账号准入登录日志数据3种类型。其中邮件外发日志数据包括操作终端信息、发件人信息、收件人信息、抄送人信息、正文信息、附件信息、时间信息;U盘拷贝文件日志数据包括U盘设备信息、操作终端信息、拷贝操作信息、操作文件信息、操作时间信息;账号准入登录日志数据包括人员账号信息、接入设备信息、接入网络信息、管控策略信息、接入时间信息。
2) 实验输入
①首先将日志数据导入mongodb,3种行为日志数据单独存放。其次登录实验系统控制台,配置数据源和检测模型。最后使用准备数据训练得到用户行为模型;
②使用客户端执行邮件外发、U盘拷贝文件和账号登录系统操作;
③服务端接收客户端日志信息,对用户操作进行异常行为检测,并将结果展示在控制台。
5.3 实验结论
基于N元语言模型的文档智能分类分级技术,数据分类分级准确率达到93%。
4种分类数据、4个安全等级数据组成了16种数据集合,每种数据集合各执行500次数据发送。进入实验系统数据分类分级界面,可查看到8 000次数据发送邮件,按16组统计分析分类分级模型准确率分别为96.2%、93.6%、94.8%、87.4%、90.1%、92.1%、97.2%、86.2%、89.2%、90.1%、96.4%、92.7%、91.6%、87.4%、90.1%、88.3%。
基于无标记样本的实时用户异常行为分析技术,用户异常行为分析准确率达86%以上。
邮件外发、U盘文件拷贝和账号上下线操作各执行500次,进入实验系统用户行为分析界面,可查看到邮件外发记录500次、U盘文件拷贝500次、账号登录系统500次,统计分析异常行为识别准确率分别为86.7%、88.6%、86.2%。
6 结束语
在数字经济时代,数据安全是保障数字经济发展的基础条件,数据安全也正在从传统的边界防护逐步转向以数据为基础的纵深全链条防护,在这个转变过程中,准确地识别数据,找到管控重点,成为关键问题。人工智能赋能数据安全创新地解决了海量数据中敏感数据识别、数据分类分级和用户异常行分析识别问题。本文为数据安全领域使用人工智能技术解决行业普遍性问题进行了前期的尝试与探索。同时,我们也应看到,人工智能技术在数据安全领域的应用才刚刚开始,如何通过人工智能技术低成本、高效率地解决数据安全问题,还需要广大从业者不断努力探索。