总第14期
Focus    焦点
Focus    焦点
文件指纹匹配:数据防泄漏的关键技术
文/刘亚龙
分享

随着信息化的不断发展,网络不断延伸、应用不断升级,各级政府、各型企业的各项工作逐步依赖计算机和信息系统,办公信息化导致对网络的依赖越来越明显。与此同时,政府、企业的客户隐私、公司敏感数据、财务等机密信息的增加,以及国家和各行业的信息安全监管制度的健全,正驱使着各个组织对敏感数据的安全有着更高的要求。数据泄漏防护(Data Loss Prevention,以下简称DLP)系统,采用数据加解密、身份认证、访问控制等先进技术,实现了网络环境下敏感信息的安全保护和传播,确保敏感信息在网络或单机环境下的存储、传播和处理等系列过程中的全程安全。DLP 技术不仅可以保护在网络中传输的数据,而且还保护存储的静止数据以及使用中的数据。

一、 文件指纹匹配

指纹是源于生物识别技术中的概念,具有存储容量小、能够快速识别生物的不同个体、指纹特征与个体的其他特征相互独立、不随个体其他特征的变化而变化等优点。广义上的指纹指具有唯一标识性的任何信息,如信息、人的虹膜、身份证号码、手机号码等。文件指纹,与人的指纹类似,是指能够唯一标识一个数字文件的信息。

作为DLP系统中的一个重要组成部分,文件指纹匹配有着比较广泛的应用。高科技公司使用该技术使用样本训练核心源代码,以便及时发现涉事人员非法拷贝源代码(即使只复制了部分模块)。客户使用该技术,在其数字档案馆或电子文档库里,发现大量的中间文档或重复文档,并对其进行标记或清除。还可以从专利、配方数据、试验数据等敏感数据样本中提取指纹,对目标文件进行指纹相似度匹配或精确数据匹配。

二、 文件指纹匹配流程

文件指纹匹配技术是从样本文档中生成指纹特征库,然后以同样的方法从待检测文档或内容中提取指纹;将得到的指纹与指纹库进行匹配,获得其相似度。一般来说,文件指纹匹配包括文本预处理、指纹生成、指纹选取、相似度计算四个部分。

图1. 文件指纹匹配流程

文本预处理部分一般是去除掉文本中无关的内容,以减少生成的指纹对相似性判定的影响。针对不同的用途、不同的语言特点,不同指纹方案的预处理部分也会表现出很大的不同。指纹生成部分主要是对预处理过的文本按照选定的文本细粒度,使用文件指纹算法进行指纹生成。指纹选取部分是按照一定的指纹选取策略选取己生成的指纹,作为文档最终的文件指纹。通过以上步骤可以将需要保护的文件生成对应的文件指纹库。最后在线文件同样经过预处理、指纹生成和选取等步骤生成该文件的文件指纹,与指纹库中的文件指纹进行相似度计算,将文件相似度作为结果输出出去。

1. 文件预处理

文本预处理是文本类文件指纹系统进行处理的第一步,其目的是减少文本中无关信息对文本相似性判定的影响。文本预处理中,应尽可能将文本中对原文信息不产生任何影响的无关信息全部删除,以保证生成的文件指纹信息更加真实有效。对于中文文本,逗号、句号、分号、引号等标点符号,空格、制表符、回车符、换行符以及文本中出现的虚词等都不是文本相似性检测中所必需的,因此需要去掉这些影响相似性判定的无关信息。

2. 文件指纹生成

指纹生成部分首先是对预处理过的文本按照选定的文本细粒度,然后使用相应的文件指纹算法计算文件指纹。

文本细粒度选取:文本粒度一般指从文档中选取的,用于生成文件指纹的文本长度。文本粒度的选取对于文件指纹系统文本相似度检测的精度有很大的影响。若文本粒度选的越小,一方面文本生成的指纹数量就会变得非常大,相似度检测的时候,指纹系统的效率就会变慢;另一方面,文本粒度选的越小,指纹也可能会产生很多错误的匹配,导致检测结果出现很大的偏差。若文本粒度选的越大,由于文件指纹十分的敏感,每一个粒度中很小字节的变化都会使得整个粒度的指纹值发生变化,这会使得对文本的微小修改就会影响到文本相似度结果的计算。因此,文本粒度的合理选取,可以大大提高文件指纹匹配检测的准确度。

文件指纹计算:文件指纹算法作为指纹系统中至关重要的一个环节,其性能的优劣直接影响指纹系统的好坏。目前文件指纹算法有很多,常用的有MD5、SHA-1、Rabinhash、Simhash、Minhash等算法,不同的算法有不同的用处,可以根据实际需要选择不同的算法。后面部分有各个算法的描述。

3. 文件指纹选取

合适的或优秀的指纹选取策略可以在获得的指纹数量相对较少的情况下,取得更准确的检测结果。指纹选取是文件指纹系统中另一个至关重要的环节,如果指纹选取的不当,会导致选取的指纹不能充分代表文件本身,最终直接导致文档相似度检测时出现很大偏差,影响文件相似度的计算结果。常用的指纹选取策略主要包括全指纹选取、半指纹选取、哈希断点法和最小哈希值法等。

4. 相似度计算

相似度计算是文件指纹匹配系统的最后一步。相似度计算主要对待检验文件指纹和文件指纹库中的文件指纹进行比对,并计算文件指纹值之间的匹配程度(文件相似度)。计算相似度的时候,不但要返回文件指纹与文件指纹库对比的相似度值,还要返回最相似的文件和最相似文件的相似度,以方便用户对文件匹配结果进行检查。

三、 文件指纹的主要算法及其优缺点

生成指纹的算法目前主要有:MD5、SHA-1、Rabinhash、Minhash、Simhash、Winnowing算法等。

1. MD5、SHA-1算法

MD5算法对于任意长度的信息输入,都将产生一个长度为比特的输出,这一输出可以被看作是原输入报文的“报文摘要值”,也可称为指纹值。SHA-1算法在运算上与MD5有很大的相似性,这也使得SHA-1同样易于实现,并且也具有很好的抗碰撞性和单向性。MD5-1、SHA-1是比较常规的算法,可靠性高,执行效率快,但是这两种算法会产生雪崩效应,文本的微小差异导致生成的哈希值完全不相等。

2. Rabinhash算法

Rabin指纹算法主要用于指纹的生成,其计算快速、易于实现,并且对于不同的字符串A和字符串B,其指纹值f(A)和f(B)也是不同的。同时Rabin算法还满足分配率,即f(A+B)=f(A)+f(B)。Karp-Rabin算法是Richard M.Karp和Michael Rabin基于Rabinhash算法提出的一个字符串查找算法,是第一个基于内容分块的指纹算法。Karp-Rabin算法根据字符串中各个字符来计算指纹,而且相同的字符生成的指纹值完全相同,该算法能在线性时间内完成所有字符串到数值的转化,计算速度很快。

3. Simhash算法

Simhash是google用来处理海量文本去重的算法,同时也是一种基于LSH(localitysensitive hashing)的算法。和md5和sha哈希算法所不同,局部敏感哈希可以将相似的字符串hash得到相似的hash值,使得相似项会比不相似项更可能的hash到一个桶中,hash到同一个桶中的文档间成为候选对。

4. Minhash算法

Minhash也是LSH的一种,可以用来快速估算两个集合的相似程度。Minhash由Andrei Broder提出,最初用于搜索引擎中检测重复网页,它也可以应用于大规模聚类的问题。Minhash使用Jaccard index来计算相似性,它也是距离的一种度量标准。

5. Winnowing算法

Winnowing算法所实现的就是选取哈希值的策略。Winnowing算法所采用的策略是:将生成的全部文件指纹序列选取固定大小的滑窗,选取每个窗口中最小的哈希值(显然两个窗口可能共享同一个最小值),如果存在多个最小值,则选取最右边的。该策略既保证选取足够的指纹信息,又保证了不会产生太庞大的指纹。在实际应用中,还可以记录哈希值出现的位置,用于跟踪相似内容出现的位置。

综上所述,MD5、SHA-1算法比较成熟,运行速度快,就是相对容错性差,相似文本的哈希值差别较大。Simhash、Minhash算法计算准确度会高,但是计算量大,占用时间较长,对大量文档的处理需要考虑性能问题。Karp-rabin和Winnowing通常采用滑动窗口的方式计算相对较快,准确率较高。

四、 结束语

在DLP系统中,文件指纹匹配在文件防护和关键信息保护中起着重要的作用。文件指纹匹配通过采用计算文件指纹相似度的方式来防护系统中的关键文件不被泄露。本文介绍了文件指纹匹配处理流程,对几种常用的指纹算法进行了对比分析。目前对文件指纹研究主要集中在集合其它技术调整数据预处理和指纹提取策略,针对相似文本特性改进指纹算法。在实际应用中,还需要根据具体的应用场景,综合考虑系统准确性、处理速度、资源占用等方面限制进行优化调整。

分享到
关闭