APP下载

基于ElasticSearch的个人敏感信息检测系统

2022-09-19盛颖怡张晓晴孟升祥

常熟理工学院学报 2022年5期
关键词:字段分词文档

张 雯,盛颖怡,张晓晴,孟升祥,周 蓓,沈 健

(常熟理工学院 计算机科学与工程学院,江苏 常熟 215500)

近年来,电信网络诈骗案件呈多发态势,且屡有大案发生,给国家和人民造成了重大财产损失.国家采取专项行动打击电信网络诈骗,根据公安部的报道,2020年共破获电信网络诈骗案件32.2万起,抓获犯罪嫌疑人36.1万名,打掉涉“两卡”违法犯罪团伙1.1万个,封堵涉诈域名网址160万个,劝阻870万名群众免于被骗,累计挽回损失1 876亿元[1].调查表明,个人敏感信息的泄露是电信诈骗的主要源头.个人敏感信息泄露的途径有多种,其中之一就是某些网站在内容发布时在页面或附件中包含了个人敏感信息,从而造成无意识的信息泄露.

国内学者对网站个人隐私信息泄露检测做了一定的研究:文献[2]提出了以自然语言处理为基础实现了主动式敏感信息检测的方法.文献[3]描述了以传统Web安全扫描器为基础实现面向敏感信息检测的Web综合漏洞扫描器,用于扫描易于暴露的敏感信息及网站中可能存在的安全漏洞.有关敏感信息泄露的检测研究颇多,但很少有人对网页附件中的信息泄露检测进行研究.有研究表明,个人隐私信息泄露中的若干要素如身份证号码、手机号码等敏感信息经常同时出现.本文提出了利用爬虫及ElasticSearch技术实现的一种可对网页及其附件进行个人敏感信息泄露检测的系统,并重点对比了不同分词器在检测敏感信息时的效率.

1 系统框架

系统采用分布式架构,由爬虫模块、文件下载模块、文档处理模块、信息泄露检测模块、ElasticSearch服务器、数据库服务器、Redis服务器等组成.各模块可独立部署实现数据的爬取、下载和解析,如图1所示.

图1 基于ElasticSearch的个人敏感信息系统框架

网页爬虫模块可设置为自动周期性抓取指定站点所有页面的文本数据,按照指定的分词器存入ElasticSearch,同时提取附件的下载地址存入Redis服务器.本文使用基于Python的Scrapy爬虫框架实现网络爬虫,具有简单、灵活、可扩展的特点.

文档下载模块负责从Redis服务器中读取附件的URL,通过异步方式下载文件,并暂存于本地磁盘中以供处理模块解析.

文档处理模块负责对下载完成的附件进行解析,可实现对文本、Office、PDF等文件格式的数据文本进行提取,也可对压缩文件中的文件进行自动解压处理,提取其中的文本写入ElasticSearch.

ElasticSearch提供了一个具有分布式多用户能力的全文搜索引擎和分布式的实时文件存储,通过RESTful接口写入数据,结合自定义分词器和IK分词器把数据按一定规则进行切分.将每个文档转换为由单词序列构成的数据流,并生成一个倒排索引,可根据单词快速获取包含这个单词的文档列表.

信息泄露检测模块通过定时执行DSL语句查询含有敏感信息的数据,并存入数据库,由系统管理员进行后续处置.

2 关键技术

2.1 全文索引

ElasticSearch是一个基于Apache Lucene的开源搜索引擎.全文检索的流程如图2所示,分为两个关键步骤[4]:索引化过程和检索过程.索引化过程是从结构化和非结构化数据中提取信息,创建索引的过程,在此过程中需要对待索引文档进行分词并生成倒排索引.检索过程则是对用户查询请求文本进行分词得到关键词,并根据关键词对倒排索引进行搜索,然后返回匹配文档的过程.

图2 全文检索的基本流程

2.2 ElasticSearch分词器

ElasticSearch的默认分词器是Standard分词器,它对英文基于空白符号及标点符号进行切分,对中文则采用单字切分,对数字不进行切分,同时会将词汇单元转换成小写形式,并去除停用词和标点符号.因此,Standard分词器对中文单字切分的方式不符合汉语的使用场景,一般需安装额外的中文分词插件.应用最广泛的中文分词插件IKAnalyzer[5]是一个基于Java语言开发的开源轻量级的中文分词工具包,采用了特有的正向迭代最细粒度切分算法,支持两种切分模式,其中ik_max_word会将文本做最细粒度的拆分,ik_smart会将文本做最粗粒度的拆分.两者的区别还在于是否根据千位分隔符(逗号)对数字进行切分.

除上述分词器之外,ElasticSearch还自带了edge_ngram和ngram分词器.根据其工作原理,本文采用ngram分词器设计自定义分词器从文本中切分出11位的数字作为手机号码的候选对象,自定义分词器定义如下:

以句①:“张月在常熟理工学院工作,电话号码是 52250000,13712345678”,句②:“公司联系电话:+8615270846231”为例,通过ElasticSearch的Analyze API得到了上述分词器的分词结果如表1、表2所示.

表1 句①分词结果

表2 句②分词结果

从上述分词结果结合相关文献可以得出结论:在对文档的索引阶段可采用ik_max_word分词器;在搜索阶段可采用ik_smart分词器,即索引时最大化地将文章内容分词,搜索时更精确地搜索到想要的结果.在多数没有数字千位分隔符的场景下,standard、ik_max_word、ik_smart分词器均不对数字进行切分.而本文描述的自定义分词器会过滤掉小于11位的数字,将大于11位的数字切分为多个11位的词.

2.3 ElasticSearch的查询方式

根据百度百科“手机号”词条[6],国内运营商主要使用 13X、14X、15X、16X、17X、18X、19X号段,其中14X号段用于物联网卡,16X和17X号段分配给虚拟运营商,也有少数号段如142、143、154、161、164、194 尚未分配.为了简化问题,本文约定不考虑这些未分配号段.文档中手机号码匹配采用模糊匹配方式,因此采用3种查询方式对创建的索引进行搜索:ElasticSearch的前缀查询、通配符查询和正则表达式查询.

前缀查询(Prefix Query)匹配包含具有指定前缀项的文档.通配符查询(Wildcard Query)匹配与通配符表达式具有匹配字段的文档,支持的通配符是“*”和“?”,分别用于匹配任何字符序列和任何单个字符.正则表达式查询(Regexp Query)即是使用正则表达式进行项查询.对应的查询表达式如表3所示.

表3 查询表达式

3 实验数据测试

系统测试环境为单台虚拟化服务器,配置了32 GB内存,CPU 2.4 GHz *8核,1 TB存储,安装Ubuntu Server LTS 20.04操作系统,ElasticSearch版本为7.14.2.为了测试搜索效率与正确率,在ElasticSearch中创建了5个测试数据集(索引),如表4所示.每个数据集包含两个字段IK和ngram,分别采用ik_max_word分词器和自定义分词器为分析器,在被索引的文档中随机插入了长度为11位的手机号码和长度不等于11位的数字.

表4 测试用例

3.1 查询速度测试

首先使用前缀查询、通配符查询、正则查询分别对测试数据集中的IK、ngram字段进行搜索,结果如表5所示.

表5 不同分词器查询速度 单位:ms

由于采用自定义分词器的ngram字段仅包含长度为11的数字项,丢弃了中英文项及长度小于11位的数字项,因此在不同测试数据集中的各种查询方式的命中数量相同,且查询速度均优于采用IK分词器的字段.测试也表明,正则表达式查询的速度略优于前缀搜索和通配符搜索.

ElasticSearch查询时默认只返回10条文档,在需要得到所有匹配文档的情况下,对ngram字段进行查询的速度优势将更加明显.我们依次对测试数据集中的字段采用前缀查询、通配符查询和正则查询并取得所有匹配结果,统计出查询总耗时如图3所示.

图3 取得所有匹配文档的查询总耗时对比

3.2 准确率与召回率分析

在索引创建时若使用IK分词器,当使用前缀查询方式时,ElasticSearch将匹配符合前缀的所有长度的数字项,因此准确率略低,命中的文档数最多.而采用“?”的通配符查询与正则查询只会匹配长度为11的数字项,准确率较高.因为IK分词器不对数字切分,3种查询方式均无法匹配带国际区号的手机号码如“8615270846231”,因此会降低召回率.

在索引创建时若使用自定义分词器,数字会被切分成长度为11的项,带有国际区号的手机号码也能被切分,因此查询的召回率可达100%.但类似“320101198602045754”这样的身份证号码也会被切分出数字项“19860204575”,从而被匹配为手机号码,降低了准确率.

4 总结与展望

本文提出了通过爬虫技术获取网页内容及附件,并通过ElasticSearch实现全文索引和查询,实现了个人敏感信息的检测方案并进行了验证.文章重点对比了不同分词器在检测敏感信息时的效率.实验结果表明:通过自定义分词器进行全文索引并使用正则表达式查询进行个人敏感信息检测具有最高的效率.但是对于一些网站采取的反爬取技术以及附件下载保护等机制还有待进一步的研究,同时可考虑引入数据包检测技术,通过主动和被动相结合的方式完善个人敏感信息泄露检测技术,在个人信息保护领域发挥积极作用.

猜你喜欢

字段分词文档
图书馆中文图书编目外包数据质量控制分析
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
分词在英语教学中的妙用
结巴分词在词云中的应用
结巴分词在词云中的应用
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述