序言
随着信息技术的快速发展和互联网的普及,数据在现代社会中变得越来越重要。然而,数据泄漏已经成为一个严重的问题,近几年就发生了几次数据泄露的大事件:
1. 2018年,Facebook数据泄漏事件:Facebook被曝出将用户数据提供给了一家名为Cambridge Analytica的政治咨询公司。据报道,Cambridge Analytica未经用户同意,获取了超过8000万Facebook用户的个人数据,用于进行选民操纵和个性化广告投放。
2. 2013-2014年,Yahoo数据泄漏事件:Yahoo在2016年披露了一系列数据泄漏事件,影响了约30亿用户账户。这些泄漏事件包括用户个人信息、密码和安全问题等敏感数据。
3. 2017年,Equifax数据泄漏事件:美国信用评级机构Equifax遭到黑客攻击,导致约1.43亿美国人的个人信息被泄露,包括姓名、社会安全号码、信用卡号码等敏感信息。
4. 2018年,Marriott数据泄漏事件:万豪国际酒店集团旗下的Marriott酒店遭到黑客攻击,泄露了约5.2亿客人的个人信息,包括姓名、地址、电话号码、护照号码等。
5. 2016年,Uber数据泄漏事件:Uber被曝出在2016年遭到黑客攻击,导致约5700万用户和600万司机的个人信息被泄露,包括姓名、邮箱地址、电话号码等。
因此,数据防泄漏技术的研究和应用变得尤为重要。
为了解决数据泄漏问题,研究人员和技术专家已经提出了各种数据防泄漏技术,目前共有两大派系,一个是数据加密技术,它也是最基本和最常用的技术之一。通过对数据进行加密,可以将其转化为密文,只有拥有正确密钥的人才能解密并访问数据。另一个是,数据识别技术,它可以根据用户的身份和权限来限制对数据的访问,并记录和监控数据的访问和使用情况,以便及时发现和应对潜在的泄漏风险。
DLP内容检测技术
1.正则表达式检测
原理详见:正则表达式之基本原理 – longhuihu – 博客园 (cnblogs.com)
2.hyperscan多模检测
Intel高性能正则表达式匹配库——Hyperscan – 知乎 (zhihu.com)
以上两种为基础检测技术,基础检测方法主要采用常规的检测技术进行内容搜索和匹配,此两种方法可以对明确的敏感信息内容进行检测;文档属性检测主要是针对文档的类型、文档的大小、文档的名称进行检测,其中文档的类型的检测是基于文件格式进行检测,不是简单的基于后缀名检测,对于修改后缀名的场景,文件类型检测可以准确的检测出被检测文件的类型,并且可以通过自定义特征,去识别特殊的文件类型格式的文档。
3.精确数据比对 (EDM)
精确数据比对 (EDM) 可保护客户与员工的数据,以及其他通常存储在数据库中的结构化数据。例如,客户可能会撰写有关使用 EDM 检测的策略,以在消息中查找“名字”、“身份证号”、“银行帐号”或“电话号码”其中任意三项同时出现的情况,并将其映射至客户数据库中的记录。EDM 允许根据特定数据列中的任何数据栏组合进行检测;也就是在特定记录中检测 M 个字段中的 N 个字段。它能够在“值组”或指定的数据类型集上触发;
由于会针对每个数据存储格存储一个单独的打乱号码,因此只有来自单个列的映射数据才能触发正在查找不同数据组合的检测策略。例如,有个 EDM 策略请求“名字 + 身份证号 +手机号”的组合,则“张三”+“13333333333”“110001198107011533” 可触发此策略,但是即使 “李四”也位于同一数据库中,“李四”+“13333333333”“110001198107011533”也不能触发此策略。
EDM 也支持相近逻辑以减少可能的误报情形。对于检测期间所处理的自由格式文本而言,单个特征列中所有数据各自的字数均必须在可配置的范围内,方可视为匹配项。例如,依默认,在检测到的电子邮件正文的文本中,“张三”+“13333333333”“110001198107011533”各自的字数必须在选定的范围内,才会出现匹配项。对于含有表式数据 (例如 Excel 电子表格) 的文本而言,单个特征列中所有数据都必须位于表式文本的同一行上,方可视为匹配项,以减少整体误报情形。
4.指纹文档比对 (IDM)
指纹文档比对”(IDM) 可确保准确检测以文档形式存储的非结构化数据,例如 Microsoft Word 与 PowerPoint 文件、PDF 文档、财务、并购文档,以及其他敏感或专有信息。IDM 会创建文档指纹特征,以检测原始文档的已检索部分、草稿或不同版本的受保护文档。
IDM 首先要进行敏感文件的学习和训练,拿到敏感内容的文档时, IDM采用语义分析的技术进行分词,然后进行语义分析,提出来需要学习和训练的敏感信息文档的指纹模型,然后利用同样的方法对被测的文档或内容进行指纹抓取,将得到的指纹与训练的指纹进行比对,根据预设的相似度去确认被检测文档是否为敏感信息文档。这种方法可让 IDM 具备极高的准确率与较大的扩展性。
5.向量分类比对 (SVM)
支持向量机(Support Vector Machines)是由Vapnik等人于1995年提出来的。之后随着统计理论的发展,支持向量机也逐渐受到了各领域研究者的关注,在很短的时间就得到很广泛的应用。
支持向量机是建立在统计学习理论的VC维理论和结构风险最小化原理基础上的,利用有限的样本所提供的信息对模型的复杂性和学习能力两者进行了寻求最佳的折中,以获得最好的泛化能力。
SVM的基本思想是把训练数据非线性的映射到一个更高维的特征空间(Hilbert空间)中,在这个高维的特征空间中寻找到一个超平面使得正例和反例两者间的隔离边缘被最大化。
SVM的出现有效的解决了传统的神经网络结果选择问题、局部极小值、过拟合等问题。并且在小样本、非线性、数据高维等机器学习问题中表现出很多令人注目的性质,被广泛地应用在模式识别,数据挖掘等领域。
SVM比对算法适合那些具有微妙的特征或很难描述的数据,如财务报告和源代码等。使用过程中,先将文档按照内容细分化分类,每一类文档集合有属于本类的意义,经过SVM比对,确定被检测的文档属于哪一类,并取得此类文档的权限和策略。同时,针对SVM的特点,可以进行终端或服务器上的文档按照分类含义进行分类数据发现。
IDM和SVM的比对区别是,IDM将待检测文件的指纹和训练模型中的每一个文件进行指纹比对;而SVM是将待检测文件向量化,并归属到某一类训练集所建立的向量空间。
产品形态
邮件DLP
邮件DLP在企业广泛应用,基本部署在企业邮件出口,对企业外发邮件进行内容识别、合规监控审计。严格意义上来说,邮件DLP也属于网络DLP,但是跟通常的所说网络DLP实现上的区别在于邮件DLP通常是基于邮件MTA方式部署,DLP扫描器可以直接从应用层拿到邮件流量进行扫描,网络DLP通常是通过三层IP报文进行解析还原应用流量进行扫描。这里面比较有代表性的是安全鳄DLP:
网络DLP
网络DLP(NDLP),主要部署在企业外联出口及企业内部,通过镜像或透传网络流量的方式,进行网络数据的内容识别、合规监控审计,网络DLP依赖网络流量,对于大型企业较难全覆盖。
这里的top厂商有zscaler:
zscaler是SASE领域的头部玩家,其实现方式是云端DLP(Cloud DLP),是其数据安全功能的重要部分。DLP匹配引擎支持EDM,IDM及机器学习等高级检测功能。同时通过ICAP接口支持第三方DLP检测引擎。
内置的字典非常丰富:
Aadhaar Card Number (India)ABA Bank Routing NumbersAdult ContentCitizen Service Numbers (Netherlands)Company Number (Japan)Credit CardsFinancial StatementsGamblingIdentity Card Number (China)Identity Card Number (Malaysia)Identity Card Number (Thailand)Illegal DrugsIndividual Taxpayer Registry ID (Brazil)Medical InformationMedicare Numbers (Australia)MyNumber (Japan)Names (Canada)Names (Spain)Names (US)National Health Service Number (UK)National Identification Card Number (Taiwan)National Identification Number (France)National Identification Number (Poland)National Identification Number (Spain)National Insurance Numbers (UK)NRIC Numbers (Singapore)Resident Registration Number (Korea)Salesforce.com DataSelf-Harm & CyberbullyingSocial Insurance Numbers (Canada)Social Security Number (Spain)Social Security Number (Switzerland)Social Security Numbers (US)Source CodeStandardized Bank Code (Mexico)Tax File Numbers (Australia)Tax Identification Number (Indonesia)Weapons
终端DLP
终端DLP,顾名思义,是管理企业终端上的敏感数据。
通过在终端部署客户端,先收集数据进行机器学习,结合数据管理部门的管理要求,形成适合企业的分级分类策略;再通过客户端,将分级分类策略和文档加密等结合,应用到终端数据的日常流转和存储中。比较有代表性的是Symantec DLP,它将多种技术融合在一套本地解决方案中:
- DLP Endpoint Discover—DLP终端发现
- DLP Endpoint Prevent—DLP终端防止
- DLP Network Discover—DLP网络发现
- DLP Network Protect—DLP网络保护
- DLP Network Monitor—DLP网络监控
- DLP Network Prevent for Email—DLP网络防止电子邮件
- DLP Network Prevent for Web—DLP网络防止网络
- DLP Sensitive Image Recognition—DLP敏感图像识别
- Information Centric Analytics—信息中心分析
自己实现一个DLP算法demo
将流量进行文件还原,通过同样的指纹生成算法,计算出被扫描文件的指纹数据,通过精确匹配和相似度匹配确定是否命中管理员配置的防护规则,比如说发生的邮件与公司机密文件相似度高达40%就进行阻断等等。借用开源GitHub – ssdeep-project/ssdeep: Fuzzy hashing API and fuzzy hashing tool,整体流程如下:
#include #include #include #include "fuzzy.h"#define FILENAME "foo.dat"#define SIZE 0x50000void generate_random(unsigned char *buf, uint32_t sz){uint32_t i;for (i = 0 ; i < sz ; ++i)buf[i] = (unsigned char)(rand() % 255);buf[(sz-1)] = 0;}int write_data(const unsigned char *buf, const uint32_t sz, const char *fn){printf ("Writing to %s\n", fn);FILE * handle = fopen(fn,"wb");if (NULL == handle)return 1;fwrite(buf,sz,1,handle);fclose(handle);return 0;}int main(int argc, char **argv){unsigned char * buf;char * result, * result2;FILE *handle;srand(1);buf = (unsigned char *)malloc(SIZE);result= (char *)malloc(FUZZY_MAX_RESULT); // 模拟第一个文件的hash值result2 = (char *)malloc(FUZZY_MAX_RESULT); // 模拟第二个文件的hash值if (NULL == result || NULL == buf || NULL == result2){fprintf (stderr,"%s: Out of memory\n", argv[0]);return EXIT_FAILURE;}generate_random(buf,SIZE);if (write_data(buf,SIZE,FILENAME)) // 随机生成第一个文件return EXIT_FAILURE;printf ("Hashing buffer\n");int status = fuzzy_hash_buf(buf,SIZE,result);if (status)printf ("Error during buf hash\n");elseprintf ("%s\n", result);handle = fopen(FILENAME,"rb");if (NULL == handle){perror(FILENAME);return EXIT_FAILURE;}printf ("Hashing file\n");status = fuzzy_hash_file(handle,result); //分片hashif (status)printf ("Error during file hash\n");elseprintf ("%s\n", result);fclose(handle);printf ("Modifying buffer and comparing to file\n");int i;for (i = 0x100 ; i < 0x110 ; ++i) buf[i] = 37; // 在第一个文件基础上改10个地方,生成第二个文件status = fuzzy_hash_buf(buf,SIZE,result2); //分片hashif (status)printf ("Error during buffer hash\n");elseprintf ("%s\n", result2);i = fuzzy_compare(result,result2); // 两个文件,相似度比较if (-1 == i)printf ("An error occured during matching\n");else{if (i != 0)printf ("MATCH: score = %d\n", i);elseprintf ("did not match\n");}return EXIT_SUCCESS;}
Reference
https://www.aqniu.com/industry/84089.html
https://www.freebuf.com/articles/database/229358.html
数据泄露防护产品哪家强?DLP? – 知乎
https://baijiahao.baidu.com/s?id=1746641492584625558&wfr=spider&for=pc
https://www.anbingsoft.com/
https://www.freebuf.com/articles/database/275816.html
http://www.esafenet.com/sjfxl
https://www.gartner.com/reviews/market/data-loss-prevention
https://www.eaglecloud.com/product/xdlp
https://www.bilibili.com/video/av201303117/
https://docs.broadcom.com/doc/data-loss-prevention-core-solution
https://www.zscaler.com/technology/data-loss-prevention
https://www.zscaler.com/resources/data-sheets/zscaler-cloud-dlp.pdf
https://www.broadcom.com/products/cybersecurity/information-protection/data-loss-prevention#our-dlp-solutions
GitHub – ssdeep-project/ssdeep: Fuzzy hashing API and fuzzy hashing tool