具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
发明人在实现本发明的过程中,对现有技术进行深入分析,发现现有技术存在检测率不佳的原因是:
参照附图2,在生成机密文本指纹时,分别对机密文本块A、B、C、D、E、F、G、H进行哈希值求模运算,并在所得结果符合一定条件时选中机密文本块,由于以上操作是针对整个机密文本块序列中的每一个机密文本块进行的,而机密文本块序列中的每个机密文本块的哈希值的大小是没有规律的,因此存在入选的机密文本块的位置不固定的问题,如图2所示,所选中的机密文本块A与F相隔较远,而机密文本块F与G相隔较近,因此入选的机密文本块位置随意性较大,从而无法均匀地覆盖整个机密文本块序列。如果待测文本和机密文本绝大部分内容相同,只是缺少其中的部分内容,而缺少的内容恰好是本应入选待测文本指纹的待测文本块所在的位置,则采用这种方案会造成即使待测文本和机密文本实际上相似性很高,由于待测文本指纹与机密文本指纹相差很大而造成漏检。对于入选机密文本指纹的机密文本块能够较为均匀覆盖整个机密文本块序列的这类机密文本而言,检测准确性较高;而对于入选机密文本指纹的机密文本块非常集中,不能均匀覆盖整个机密文本块序列的这类机密文本而言,检测准确性较低,从而出现检测效果不稳定的现象。
首先请参见图3,图3是本发明的指纹库生成方法第一实施例的流程图,如图3所示,本发明的指纹库生成方法包括以下步骤:
步骤101:获取多个机密文本。
步骤102:分别根据每一机密文本产生对应的机密文本指纹,以生成包括多个机密文本指纹的指纹库。
以下请一并参见图4及图5,图4是本发明的指纹库生成方法第一实施例中“分别根据每一机密文本产生对应的机密文本指纹,以生成包括多个机密文本指纹的指纹库”的具体流程图。如图4所示,该步骤具体为:
步骤1021:分别根据每一机密文本获取包括多个机密文本块的第一序列。其中,分别根据每一机密文本获取包括多个机密文本块的第一序列的步骤具体可通过现有技术中的文本预处理技术实现,文本预处理技术通常包括分词、去掉没有明显语义的字词或者直接将机密文本块当作字节流等方法,文本预处理技术对最终产生的机密文本指纹的质量有重要的影响。但在本发明实施例中,具体的文本预处理技术不在本发明讨论范围之内,因此不作赘述。
步骤1022:使用具有预设数据长度的滑动窗口,以第一序列中的第一个机密文本块为起点向第一序列中的最后一个机密文本块滑动,直至滑动窗口滑过整个第一序列;在每次滑动前,从滑动窗口所覆盖的各机密文本块分别对应的哈希值中,选取最小值或最大值作为机密指纹单元。在经过多次滑动之后,可产生包括多个机密指纹单元的机密文本指纹。
其中,预设数据长度举例而言可为512个字节,而其实际值可根据实际需要进行选取。可选地,每次滑动窗口滑动前,滑动窗口的左边沿向最后一个机密文本块的方向滑动预定数量个机密文本块,其中左边沿每次滑动偏移的机密文本块的数量可以根据实际情况灵活设置。
值得注意的是,在步骤1022可根据收集到的机密文本块分别对应的哈希值,从中选取最小的哈希值作为机密指纹单元,或根据收集到的机密文本块分别对应的哈希值,从中选取最大的哈希值作为机密指纹单元。两种方案均可生成机密指纹单元。而随着信息量的急剧增加,需要保护的机密数据规模也越来越大。指纹技术也必须能够使用大规模机密文档保护的需要。而从滑动窗口所覆盖的各机密文本块分别对应的哈希值中,选取最小值或最大值作为机密指纹单元的实现方式,相比较图1及图2所示的现有技术中所介绍的:将入选的机密文本块作为机密文本指纹中的机密指纹单元的方式,更可有效减小数据大小,从而控制指纹库的规模。
以下请参见图5,图5是本发明的指纹库生成方法第一实施例的数据转换示意图,如图5所示,该第一序列包括机密文本块1、2、3、4、5(为描述清楚,本实施例中的第一序列仅包括5个机密文本块,但在实际应用中机密文本块的数量根据实际情况而定,本发明对其数量不作具体限定)。
使用具有预设数据长度(这里以预设数据长度是3为例进行描述)的滑动窗口10以第一个机密文本块1为起点向最后一个机密文本块5滑动,从滑动窗口10所覆盖的各机密文本块分别对应的哈希值中,选取最小值作为机密指纹单元。
在第一次滑动前,滑动窗口10覆盖机密文本块1、2、3,将机密文本块1、2、3所对应的哈希值中选取最小值作为机密指纹单元,以H(1)、H(2)、H(3)、H(4)、H(5)分别表示机密文本块1、2、3、4、5的哈希值,若H(1)、H(2)、H(3)中H(2)为最小值,此时选取H(2)作为机密指纹单元。
在第二次滑动前,滑动窗口10覆盖机密文本块2、3、4,将机密文本块2、3、4所对应的哈希值中选取最小值作为机密指纹单元,若H(2)、H(3)、H(4)中H(4)为最小值,此时选取H(4)作为机密指纹单元。
在第三次滑动前,滑动窗口10覆盖机密文本块3、4、5,将机密文本块3、4、5所对应的哈希值中选取最小值作为机密指纹单元,若H(3)、H(4)、H(5)中H(5)为最小值,此时选取H(5)作为机密指纹单元。
由于在进行第三次滑动之后,滑动窗口10滑过了整个第一序列,因此无需再进行第四次滑动。此时,产生一包括多个机密指纹单元H(2)、H(4)、H(5)的机密文本指纹。
值得注意的是,由于每一机密文本都会对应生成一个第一序列,因此可生成多个第一序列,依次对该多个第一序列进行上述处理之后,就可生成多个对应于不同机密文本的机密文本指纹20、30、40、50,从而生成包括多个机密文本指纹20、30、40、50的指纹库10。
由于文本内容的深度识别是DLP的关键技术,文本指纹是实现文本内容深度识别的重要手段。文本指纹的选择方法必须能够在给定的序列上获取较优的特征信息集合,以较少的信息量涵盖序列信息,并提供足够的相似文本识别能力。
通过上述技术方案,本发明实施例通过采用具有预设数据长度滑动窗口来覆盖机密文本块,每次滑动前,从滑动窗口所覆盖的各机密文本块分别对应的哈希值中,选取最小值或最大值作为机密指纹单元,因此可根据包括多个机密文本块的第一序列产生唯一的机密文本指纹,从而保证了所选择的机密文本指纹的确定性;其次,由于采用具有预设数据长度的滑动窗口以第一序列中的第一个机密文本块为起点向第一序列中的最后一个机密文本块滑动,直至滑动窗口滑过整个第一序列,因此可确保入选的机密文本块的位置均匀地覆盖整个第一序列,从而保证根据上述方法生成的机密文本指纹对待测文本进行检测时的检测准确性稳定在高水平上。
另外,经过上述处理之后,可最大限度的消除冗余信息,控制指纹库的规模,降低了后续进行待测文本指纹匹配时的存储及运算开销。
并且,本发明利用用于覆盖预设数据长度的机密文本块的滑动窗口,可确保在预设数据长度的机密文本块范围内至少选入一个机密指纹单元,因此在本发明中,更对泄漏的机密文本数量具备了量化检测能力,可根据需要量化控制泄露文本的检测能力,即能够检测出不低于给定大小的机密文本泄漏。
以下请参见图6,图6是本发明的指纹库生成方法第二实施例中“分别根据每一机密文本产生对应的机密文本指纹,以生成包括多个机密文本指纹的指纹库”的具体流程图,其中本发明的指纹库生成方法第二实施例更加结合实际的应用场景对本发明思想作出详细揭示,如图6所示,该步骤具体为:
步骤300:初始化,计算第一序列中各机密文本块的哈希值。
步骤301:用滑动窗口遍历第一序列,其中,滑动窗口的大小可预先设置为第一个机密文本块的数据长度,即:将滑动窗口左沿固定在首个机密文本块的初始位置,将滑动窗口右沿固定在首个机密文本块的末端位置。
步骤302:判断滑动窗口的右沿是否到达最后一个机密文本块,若是,执行步骤303,若否,执行步骤305。
步骤303:选择滑动窗口中哈希值最小的机密文本块的哈希值作为机密指纹单元。
步骤304:流程结束。
步骤305:判断滑动窗口覆盖的机密文本块的数据长度是否大于预设数据长度,若是,执行步骤307,若否,执行步骤306。
步骤306:将滑动窗口右沿右移一个机密文本块的单位。
步骤307:将滑动窗口右沿左移一个机密文本块的单位。
步骤308:选择滑动窗口中哈希值最小的机密文本块的哈希值作为机密指纹单元。
步骤309:将滑动窗口左沿和右沿均右移一个机密文本块的单位。
可选地,也可以在步骤308中择滑动窗口中哈希值最大的机密文本块的哈希值作为机密指纹单元。
因此,在本实施例中,根据需要选取机密文本块所对应的哈希值中的最小值作为机密指纹单元的实现方式更可有效减小数据大小,从而控制了指纹库的规模。
另外,在给定代表文本主要信息的第一序列的基础上,采用变长的滑动窗口选择机密文本块,滑动窗口左沿以一个序列元素(即一个机密文本块)为步距向前滑动,窗口右沿的位置取决于滑动窗口的可覆盖机密文本块的预设数据长度,预设数据长度是可根据需要设置的,将每次落入滑动窗口的机密文本块看作一个集合,将其中哈希值最小的机密文本块的哈希值作为机密指纹单元选入机密文本指纹,直至遍历完整个第一序列。利用这种方法,可根据需要设置的预设数据长度控制了最小可检测的泄露文本长度,从而获得了量化的泄露文本检测能力,还能够使选入的机密指纹单元的数据量最少,从而实现了指纹库规模的最小化,降低了后续存储指纹库以及进行相关匹配运算时的存储及运算开销。
可选地,在本发明的备选实施方式中,更可以第一个机密文本块作为滑动窗口的左沿的起点,取沿左往右方向且与左沿相距预设数据长度的一端作为滑动窗口的右沿的起点,以第一序列中的第一个机密文本块为起点向第一序列中的最后一个机密文本块滑动,每次左沿向右移动一个机密文本块直至滑动窗口滑过整个第一序列。并且,在左沿与右沿之间所覆盖的机密文本块的哈希值中,选取最小值或最大值作为机密指纹单元。
值得注意的是,在上述的备选实施方式中,假设预设数据长度为512字节,如果在某次滑动前,512字节所覆盖的机密文本块个数不是整数个,则可在512字节的基础上加上一个增量⊿,以使得512字节+⊿可以覆盖整数个机密文本块。以下请参见图7,图7是本发明的指纹库生成方法第三实施例中将所有机密指纹单元作为总训练集输入布隆算法以产生一级布隆过滤器的流程图,在本发明的指纹库生成方法第三实施例中,对上述第一、第二实施例中生成的指纹库进行处理,以生成一级布隆过滤器。
如图7所示,本发明实施例的指纹库生成方法通过以下步骤生成一级布隆过滤器:
步骤400:遍历指纹库,依次获取指纹库中每一个机密指纹单元。
步骤401:将所有机密指纹单元作为总训练集输入布隆算法进行训练。
步骤402:输出一级布隆过滤器。
步骤404:流程结束。
在本实施例中,将指纹库中的所有机密指纹单元作为总训练集输入布隆算法进行训练,以产生一级布隆过滤器,该一级布隆过滤器用于判断待测指纹单元(于下文会详细介绍)是否属于指纹库。
为了更清楚地揭示本实施例,以下进一步结合图8进行说明,图8是本发明的指纹库生成方法第三实施例中将所有机密指纹单元作为总训练集输入布隆算法以产生一级布隆过滤器的数据转换示意图。如图8所示,指纹库10中包括多个机密文本指纹20、30、40、50,每一机密文本指纹均包括多个机密指纹单元,如机密文本指纹20包括机密指纹单元H(2)、H(4)、H(5)。在将指纹库10中的所有机密指纹单元作为总训练集输入布隆算法进行训练之后,产生一级布隆过滤器450,该一级布隆过滤器450可用于判断待测指纹单元(于下文会详细介绍)是否属于指纹库。
值得注意的是,由于布隆算法为本领域常用技术,而本发明着重于将指纹库10中的所有机密指纹单元作为总训练集输入布隆算法以生成一级布隆过滤器,即发明重点在于布隆算法的输入对象,而不是布隆算法本身,因此对于布隆算法不作过多描述。
以下请参见图9,图9是本发明的指纹库生成方法第三实施例中将指纹库中每个机密文本指纹所对应的多个机密指纹单元作为子训练集输入布隆算法进行训练以产生分别与指纹库中每个机密文本指纹所对应的多个二级布隆过滤器流程图,在本发明的指纹库生成方法第三实施例中,进一步对上述第一、第二实施例中生成的指纹库进行处理,以生成二级布隆过滤器。
如图9所示,本发明的指纹库生成方法通过以下步骤生成二级布隆过滤器:
步骤410:获取指纹库中的第一个机密文本指纹。
步骤411:获取该机密文本指纹中的所有机密指纹单元。
步骤412:将所有机密指纹单元作为子训练集输入布隆算法进行训练。
步骤413:输出对应该机密文本指纹的二级布隆过滤器。
步骤414:判断该机密文本指纹是指纹库中最后一个机密文本指纹,若是,执行步骤415,若否,执行步骤416。
步骤415:流程结束。
步骤416:获取该机密文本指纹的下一个机密文本指纹。并跳转至步骤411,获取该机密文本指纹中的所有机密指纹单元,重新执行上述流程,从而遍历多个机密文本指纹,在对多个机密文本指纹进行了处理之后,获得与机密文本指纹对应的多个二级布隆过滤器。
在本实施例中,分别将指纹库中每个机密文本指纹所对应的多个机密指纹单元作为子训练集输入布隆算法进行训练,以产生分别与指纹库中每个机密文本指纹所对应的多个二级布隆过滤器,二级布隆过滤器用于判断待测指纹单元是否属于与二级布隆过滤器对应的机密文本指纹。
为了更清楚地揭示本实施例,以下进一步结合图10进行说明,图10是本发明的指纹库生成方法第三实施例中将每一机密文本指纹所对应的机密指纹单元作为子训练集输入至布隆算法以产生多个二级布隆过滤器的数据转换示意图。如图8所示,指纹库10中包括多个机密文本指纹20、30、40、50,每一机密文本指纹均包括多个机密指纹单元,如机密文本指纹20包括机密指纹单元H(2)、H(4)、H(5)。
将指纹库10中的每一机密文本指纹对应的机密指纹单元作为子训练集输入布隆算法进行训练,如将密文本指纹20的机密指纹单元H(2)、H(4)、H(5)作为子训练集输入布隆算法进行训练,以产生二级布隆过滤器801;将机密文本指纹30的机密指纹单元作为子训练集输入布隆算法进行训练,以产生二级布隆过滤器802;将机密文本指纹40的机密指纹单元作为子训练集输入布隆算法进行训练,以产生二级布隆过滤器803;将机密文本指纹50的机密指纹单元作为子训练集输入布隆算法进行训练,以产生二级布隆过滤器804。
其中,二级布隆过滤器801用于判断待测指纹单元是否属于与二级布隆过滤器801对应的机密文本指纹。二级布隆过滤器802用于判断待测指纹单元是否属于与二级布隆过滤器802对应的机密文本指纹。二级布隆过滤器803用于判断待测指纹单元是否属于与二级布隆过滤器803对应的机密文本指纹。二级布隆过滤器804用于判断待测指纹单元是否属于与二级布隆过滤器804对应的机密文本指纹。
同样地,由于布隆算法为本领域常用技术,而本发明着重于将每一机密文本指纹对应的机密指纹单元作为子训练集输入布隆算法一产生多个对应于机密文本指纹的二级布隆过滤器,即发明重点在于布隆算法的输入对象,而不是布隆算法本身,因此对于布隆算法不作过多描述。
通过生成一级布隆过滤器和多个二级布隆过滤器进行后续的待测文本指纹匹配,可灵活控制内存开销以及匹配速度之间的平衡。
以下请参见图11,图11是本发明的指纹库生成方法第四实施例中根据指纹库生成倒排索引表的流程图,在本发明的指纹库生成方法第四实施例中,在生成指纹库之后,进一步对上述第一、第二实施例中生成的指纹库进行处理,以生成倒排索引表。
如图11所示,本发明的指纹库生成方法通过以下步骤生成倒排索引表:
步骤420:建立倒排索引表,该表初始为空。
步骤421:获取指纹库中的第一个机密指纹单元。
步骤422:检查该机密指纹单元是否在倒排索引表中建立有键值,若是,执行步骤423,若否,执行步骤427。
步骤423:将该机密指纹单元对应的机密文本的文本编号加入该索键值对应的文本编号列表,并将文本编号列表作为与键值对应的索引项。
步骤424:判断该机密指纹单元是指纹库中最后一个机密文本指纹的最后一个机密指纹单元,若是,执行步骤425,若否,执行步骤428。
步骤425:输出倒排索引表。
步骤426:流程结束。
步骤427:将该指纹单元作为键值加入到倒排索引表。
步骤428:获取指纹库中该机密指纹单元的下一个机密指纹单元,并在完成该步骤之后,跳转至步骤422,以检测该下一机密指纹单元是否在倒排索引表中建立有键值,并重新执行上述流程,直至遍历指纹库中所有的机密指纹单元。
为了更清楚地揭示本实施例,以下进一步结合图12进行说明,图12是本发明的指纹库生成方法第四实施例中生成倒排索引表的数据转换示意图。如图12所示,指纹库10中包括多个机密文本指纹20、30、40、50,每一机密文本指纹均包括多个机密指纹单元,如机密文本指纹20包括机密指纹单元H(2)、H(4)、H(5)。
在本发明实施例中,分别将指纹库中的每一机密指纹单元作为键值,将每一机密指纹单元所对应的所有机密文本的文本编号加入文本编号列表,并将文本编号列表作为与键值对应的索引项,以生成包括键值以及索引项的倒排索引表。
结合图12,倒排索引表60包括键值以及索引项。其中该键值为H(1)、H(2)、H(3)……等机密指纹单元,索引项为文本编号列表,其包括各个文本对应的文本编号,并且每一机密指纹单元均与文本编号建立有索引关系,举例而言,如图12所示,若机密指纹单元H(1)来自机密文本1、机密文本4或机密文本5,则在索引项中记录有机密文本1的文本编号(即文本编号1)、机密文本4的文本编号(即文本编号4)以及机密文本5的文本编号(即文本编号5)。
通过生成倒排索引表,在后续的待测文本指纹匹配中,倒排索引表相对于采用一级布隆过滤器以及二级布隆过滤器的方法而言,可实现最快的匹配速度。
值得注意的是,在本发明的指纹库生成方法的备选实施例中,可进一步包括一发送步骤,通过发送上述实施例中生成的指纹库、一级布隆过滤器和多个二级布隆过滤器或倒排索引表至用于待测文本指纹匹配的第三方服务器,该第三方服务器在获取指纹库、一级布隆过滤器和多个二级布隆过滤器或倒排索引表后,可根据上述数据进行待测文本的匹配,举例而言该第三方服务器可为下文所揭示的待测文本指纹匹配装置。
以下请参见图13,图13是本发明的指纹库生成装置第一实施例的装置结构示意图。如图13所示,本发明的指纹库生成装置包括:
文本获取模块201,用于获取多个机密文本。指纹库生成模块210,用于分别根据文本获取模块201所获取的每一机密文本产生对应的机密文本指纹,以生成包括多个机密文本指纹的指纹库。
其中,指纹库生成模块210包括第一序列获取单元211以及第一序列处理单元212。第一序列获取单元211用于分别根据每一机密文本获取包括多个机密文本块的第一序列。第一序列处理单元212用于使用滑动窗口以第一序列中的第一个机密文本块为起点向第一序列中的最后一个机密文本块滑动,使用滑动窗口对滑过的机密文本块进行收集;在使用滑动窗口收集到的机密文本块达到预设数据长度时:将滑动窗口收集到的机密文本块所对应的哈希值中的值最小者或值最大值作为机密指纹单元;重新设置起点,直至滑动窗口滑过整个第一序列,从而产生一包括多个机密指纹单元的机密文本指纹。
可选地,在本发明的指纹库生成装置第一实施例中,指纹库生成装置可进一步包括一级布隆过滤器生成模块222以及二级布隆过滤器生成模块221。
其中,一级布隆过滤器生成模块222用于将指纹库中的所有机密指纹单元作为总训练集输入布隆算法进行训练,以产生一级布隆过滤器,一级布隆过滤器222用于判断待测指纹单元是否属于指纹库;二级布隆过滤器生成模块221用于分别将指纹库中每个机密文本指纹所对应的多个机密指纹单元作为子训练集输入布隆算法进行训练,以产生分别与指纹库中每个机密文本指纹所对应的多个二级布隆过滤器,二级布隆过滤器221用于判断待测指纹单元是否属于与二级布隆过滤器对应的机密文本指纹。一级布隆过滤器222产生一级布隆过滤器的具体过程,或二级布隆过滤器生成模块221产生多个二级布隆过滤器的具体过程请参照前面方法实施例的描述,在这里不再重复。
可选地,本发明实施例的指纹库生成装置进一步包括发送模块231,发送模块231用于发送指纹库、一级布隆过滤器和多个二级布隆过滤器至待测文本指纹匹配装置。
以下请参见图14,图14是本发明的指纹库生成装置第二实施例的装置结构示意图。如图14所示,本发明的指纹库生成装置包括:
文本获取模块201,用于获取多个机密文本。指纹库生成模块210,用于分别根据每一机密文本产生对应的机密文本指纹,以生成包括多个机密文本指纹的指纹库。
其中,指纹库生成模块210包括第一序列获取单元211以及第一序列处理单元212。第一序列获取单元211用于分别根据每一机密文本获取包括多个机密文本块的第一序列。第一序列处理单元212用于使用具有预设数据长度的滑动窗口,以第一序列中的第一个机密文本块为起点向所述第一序列中的最后一个机密文本块滑动,直至所述滑动窗口滑过整个所述第一序列;在每次滑动前,从滑动窗口所覆盖的各机密文本块分别对应的哈希值中,选取最小值或最大值作为机密指纹单元,从而产生包括多个机密指纹单元的所述机密文本指纹。
可选地,在本发明的指纹库生成装置第二实施例中,指纹库生成装置可进一步包括倒排索引表生成模块230。
其中,倒排索引表生成模块230用于分别将指纹库中的每一机密指纹单元作为键值,将每一机密指纹单元所对应的所有机密文本的文本编号加入文本编号列表,并将文本编号列表作为与键值对应的索引项,以生成包括键值以及索引项的倒排索引表。
可选地,本发明的指纹库生成装置进一步包括发送模块231,发送模块231用于发送指纹库以及倒排索引表至待测文本指纹匹配装置。
以下请参见图15,图15是本发明的待测文本指纹匹配方法第一实施例的流程图。值得注意的是。如图15所示,本发明的待测文本指纹匹配方法包括以下步骤:
步骤600:获取指纹库,该指纹库包括多个机密文本指纹,可选地该指纹库为上述实施例中所揭示的指纹库,即由上述实施例所揭示的方法生成的指纹库或与上述实施例所揭示的方法生成的指纹库数据格式一致的其他指纹库。
步骤601:获取待测文本。
步骤602:根据待测文本获取包括多个待测文本块的第二序列。其中,根据待测文本获取包括多个待测文本块的第二序列的步骤具体可通过现有技术中的文本预处理技术实现,文本预处理技术通常包括分词、去掉没有明显语义的字词或者直接将机密文本块当作字节流等方法,文本预处理技术对最终产生的待测文本指纹的质量有重要的影响。但,在本发明实施例中,具体的文本预处理技术不在本发明讨论之内,因此不作赘述。
步骤603:使用具有预设数据长度的滑动窗口,以第二序列中的第一个待测文本块为起点向第二序列中的最后一个待测文本块滑动,直至滑动窗口滑过整个第二序列;在每次滑动前,从滑动窗口所覆盖的各待测文本块分别对应的哈希值中,选取最小值或最大值作为待测指纹单元,从而产生包括多个机密指纹单元的待测文本指纹
步骤604:将待测文本指纹与机密文本指纹进行比较以获取匹配结果。
本发明实施例通过采用具有预设数据长度滑动窗口来覆盖待测文本块,每次滑动前,从滑动窗口所覆盖的各待测文本块分别对应的哈希值中,选取最小值或最大值作为待测指纹单元,因此可根据包括多个待测文本块的第一序列产生唯一的待测文本指纹,从而保证了所选择的待测文本指纹的确定性;其次,由于采用具有预设数据长度的滑动窗口以第二序列中的第一个待测文本块为起点向第二序列中的最后一个待测文本块滑动,直至滑动窗口滑过整个第二序列,因此可确保入选的待测文本块的位置均匀地覆盖整个第二序列,从而保证机密文本块的检测率稳定在高水平上。
并且,本发明利用用于覆盖预设数据长度的待测文本块的滑动窗口,可确保在预设数据长度的机密文本块范围内至少选入一个机密指纹单元,因此在本发明中,更对泄漏的机密文本数量具备了量化检测能力,可根据需要量化控制泄露文本的检测能力,即能够检测出不低于给定大小的机密文本泄漏。
值得注意的是,步骤603中所述的预设数据长度应与以上所介绍的指纹库生成方法中的预设数据长度一致。
并且,若以上所介绍的指纹库生成方法中将使用滑动窗口收集到的机密文本块所对应的哈希值中的最小值作为机密指纹单元,则在步骤603中,将使用滑动窗口收集到的待测文本块所对应的哈希值中的最小值作为待测指纹单元。
同理,以上所介绍的指纹库生成方法中将使用滑动窗口收集到的机密文本块所对应的哈希值中的最大值作为机密指纹单元,则在步骤603中,将使用滑动窗口收集到的待测文本块所对应的哈希值中的最大值作为待测指纹单元。
其中,将使用滑动窗口收集到的机密文本块所对应的哈希值中的最小值作为机密指纹单元更可以将机密指纹单元的大小控制在最小值,从而降低指纹库的数据量。
以下请参见图16,图16是本发明的待测文本指纹匹配方法第一实施例的数据转换示意图,如图16所示,第二序列包括待测文本块1’、2’、3’、4’、5’。
使用具有预设数据长度(这里以预设数据长度是3为例进行描述)滑动窗口10以第一个待测文本块1’为起点向最后一个待测文本块5’滑动,从滑动窗口10所覆盖的各待测文本块分别对应的哈希值中,选取最小值作为待测指纹单元。
其中,在第一次滑动前,使用滑动窗口10覆盖待测文本块1’、2’、3’,将待测文本块1’、2’、3’所对应的哈希值中选取最小值作为待测指纹单元,以H(1’)、H(2’)、H(3’)、H(4’)、H(5’)分别表示待测文本块1’、2’、3’、4’、5’的哈希值,若H(1’)、H(2’)、H(3’)中H(2’)为最小值,此时取H(2’)作为待测指纹单元。
在第二次滑动前,滑动窗口10覆盖待测文本块2’、3’、4’,将待测文本块2’、3’、4’所对应的哈希值中选取最小值作为待测指纹单元,若H(2’)、H(3’)、H(4’)中H(4’)为最小值,此时选取H(4’)作为待测指纹单元。
在第三次滑动前,滑动窗口10覆盖待测文本块3’、4’、5’,将待测文本块3’、4’、5’所对应的哈希值中选取最小值作为待测指纹单元,若H(3’)、H(4’)、H(5’)中H(5’)为最小值,此时选取H(5’)作为待测指纹单元。
由于在进行第三次滑动之后,滑动窗口10滑过了整个第二序列,因此无需再进行第四次滑动。此时,产生一包括多个机密指纹单元H(2’)、H(4’)、H(5’)的待测文本指纹。
因此,本发明采用设置为用于覆盖预设数据长度的待测文本块的变长滑动窗口来选择机密文本块,每次将窗口内哈希值最小或最大的元素选入待测文本指纹,这种方法带来以下有益的效果:首先确保每次对相同的待测文本产生相同的待测文本指纹,保证了待测文本指纹选择的确定性;其次最大限度的消除了冗余信息,控制了待测文本指纹规模,降低了待测文本指纹匹配时的存储及运算开销;再次,选入待测文本指纹的待测文本元素均匀地覆盖了整个第二序列,确保机密信息检测率稳定在高水平上。
并且,本发明利用用于覆盖预设数据长度的待测文本块的变长滑动窗口,动态地改变滑动窗口的长度,可确保在具有预设数据长度的机密文本块范围内至少选入一个待测指纹单元,因此在本发明中,更对待测文本具备了量化检测能力,可根据需要量化控制待测文本的检测能力,即能够检测出不低于给定大小的机密文本泄漏。
以下请参见图17,图17是本发明的待测文本指纹匹配方法第二实施例的流程图,其中本发明的指纹库生成方法第二实施例更加结合实际的应用场景对本发明思想作出详细揭示,如图6所示,本发明的待测文本指纹匹配方法包括以下步骤:
步骤700:初始化,计算第二序列中各待测文本块的哈希值,将滑动窗口左沿和右沿均设在首个待测文本块。
步骤701:用滑动窗口遍历第二序列。其中,滑动窗口的大小可预先设置为第一个待测文本块的数据长度,即:滑动窗口的左沿和右沿均在第一个待测文本块上。
步骤702:判断滑动窗口的右沿是否到达最后一个待测文本块,若是,执行步骤703,若否,执行步骤705。
步骤703:选择滑动窗口中哈希值最小的待测文本块的哈希值作为待测指纹单元。
步骤704:流程结束。
步骤705:判断滑动窗口覆盖的待测文本块的数据长度是否大于预设数据长度,若是,执行步骤707,若否,执行步骤706。
步骤706:将滑动窗口右沿右移一个待测文本块的单位。
步骤707:将滑动窗口右沿左移一个待测文本块的单位。
步骤708:选择滑动窗口中哈希值最小的待测文本块的哈希值作为待测指纹单元。
步骤709:将滑动窗口左沿和右沿均右移一个待测文本块的单位。
可选地,也可以在步骤708中择滑动窗口中哈希值最大的待测文本块的哈希值作为待测指纹单元。
因此,在本实施例中,根据需要选取待测文本块所对应的哈希值中的最小值作为待测指纹单元的实现方式更可有效减小数据大小。
另外,在给定代表文本主要信息的第二序列的基础上,采用滑动窗口选择待测文本块,滑动窗口左沿以一个序列元素(即一个待测文本块)为步距向前滑动,窗口右沿的位置取决于滑动窗口的可覆盖待测文本块的预设数据长度,预设数据长度与生成指纹库时所采用的预设数据长度一致,将每次落入滑动窗口的待测文本块看作一个集合,将其中哈希值最小的待测文本块的哈希值作为机密指纹单元选入待测文本指纹,直至遍历完整个第二序列。利用这种方法,可根据需要设置的预设数据长度控制了最小可检测的待测文本长度,从而获得了量化的待测文本检测能力,还能够使选入的待测指纹单元的数据量最小。
可选地,在本发明的备选实施方式中,更可以第一个待测文本块作为滑动窗口的左沿的起点,取沿左往右方向且与左沿相距预设数据长度的一端作为滑动窗口的右沿的起点,以第二序列中的第一个待测文本块为起点向第二序列中的最后一个待测文本块滑动,直至滑动窗口滑过整个第二序列。并且,在左沿与右沿之间所覆盖的待测文本块的哈希值中,选取最小值或最大值作为待测指纹单元。
值得注意的是,在上述的备选实施方式中,假设预设数据长度为512字节,如果在某次滑动前,512字节所覆盖的待测文本块个数不是整数个,则可在512字节的基础上加上一个增量⊿,以使得512字节+⊿可以覆盖整数个待测文本块。
以下请参见图18,图18是本发明的待测文本指纹匹配方法第三实施例的流程图,如图18所示,本发明的待测文本指纹匹配方法包括以下步骤:
步骤501:从待测文本指纹获取第一个待测指纹单元。
步骤502:采用一级布隆过滤器对该待测指纹单元进行过滤以判断该待测指纹单元是否属于指纹库,若是,执行步骤503,若否,执行步骤510。
步骤503:依次用每一二级布隆过滤器组该待测指纹单元进行过滤。
步骤504:判断该待测指纹单元是否属于某一二级过滤器对应的机密文本指纹,若是,执行步骤505,若否,执行步骤510。
步骤505:遍历该机密文本指纹中的每一机密指纹单元,并将每一机密指纹单元与该待测指纹单元进行比对。
步骤506:判断是否有机密指纹单元与该待测指纹单元匹配,若是,执行步骤507,若否,执行步骤510。
步骤507:记录匹配信息。
步骤508:判断该待测指纹单元是否是待测文本指纹中的最后一个待测指纹单元,若是,执行步骤509,若否,执行步骤510。
步骤509:流程结束。
步骤510:获取该待测指纹单元的下一个待测指纹单元。
值得注意的是,在步骤500之前,进一步包括获取一级布隆过滤器和多个二级布隆过滤器的步骤。
在本实施例中,获取一级布隆过滤器和多个二级布隆过滤器,利用一级布隆过滤器分别对一个待测文本指纹中的多个待测指纹单元进行过滤,以判断待测指纹单元是否属于指纹库,如果是,进一步利用多个二级布隆过滤器分别对待测指纹单元进行过滤,以判断待测指纹单元是否属于与二级布隆过滤器对应的机密文本指纹,如果是,则记录待测指纹单元与机密指纹单元匹配。
当在一个待测文本指纹中,若满足以下条件时:
匹配数量/待测指纹单元的总数量≥预定阈值,
可判断该待测文本指纹与机密文本指纹相匹配。其中,匹配数量为纪录到的与指纹库中的机密指纹单元匹配的待测指纹单元数量,预定阈值举例而言可为90%。
在待测文本指纹与一个机密文本的机密文本指纹相匹配时,待测文本与该机密文本相一致,即该待测文本为指纹库中记录的机密信息。换句话说,使用二级布隆过滤器对待测文本指纹进行匹配的目的在于确认待测文本与哪一个二级布隆过滤器对应的机密文本相似。
在本实施例中,通过生成一级布隆过滤器和多个二级布隆过滤器待测文本指纹匹配,可灵活控制内存开销以及匹配速度之间的平衡。
以下请参见图19,图19是本发明的待测文本指纹匹配方法第四实施例的流程图,如图19所示,本发明的待测文本指纹匹配方法包括以下步骤:
步骤510:获取待测文本指纹中的第一个机密指纹单元。
步骤511:检索倒排索引表中与该机密指纹单元匹配的键值。
步骤512:判断在倒排索引表中是否发现匹配的键值,若是,执行步骤513,若否,执行步骤516。
步骤513:根据该键值获取对应文档编号,以记录匹配信息。具体而言,可记录待测指纹单元与键值对应的机密指纹单元匹配,并根据键值获取对应的索引项中的文档编号。
步骤514:判断该待测指纹单元是否是待测文本指纹中的最后一个待测指纹单元,若是,执行步骤515,若否,执行步骤516。
步骤515:流程结束。
步骤516:获取该待测指纹单元的下一个待测指纹单元,并跳转至步骤511,检索倒排索引表中与待测指纹单元的下一个待测指纹单元匹配的键值,并继续执行上述流程,从而完成待测文本指纹中每一待测指纹单元的遍历。
值得注意的是,在步骤510之前,进一步包括获取倒排索引表的步骤。
在本实施例中,在获取倒排索引表之后,在倒排索引表中分别检索与待测文本指纹中的每一待测指纹单元匹配的键值,在检索到匹配的键值时,记录待测指纹单元与键值对应的机密指纹单元匹配,并根据键值获取对应的索引项中的文档编号。
在本实施例中,通过生成一级布隆过滤器和多个二级布隆过滤器待测文本指纹匹配,可灵活控制内存开销以及匹配速度之间的平衡。
并且,若满足以下条件,判定待测文本指纹与机密文本指纹相匹配:匹配数量/待测指纹单元的总数量≥预定阈值,其中,匹配数量为与指纹库中的机密指纹单元匹配的待测指纹单元数量
以下请参见图20,图20是本发明的待测文本指纹匹配装置第一实施例的装置结构示意图。如图21所示,本发明的指纹库生成装置包括待测文本获取模块701、第二序列获取模块702、第二序列处理模块703、匹配结果获取模块704以及接收模块705。
接收模块705获取指纹库,该指纹库包括多个机密文本指纹,优选地该指纹库为上述指纹库生成方法及装置实施例中所揭示的指纹库,或与上述实施例所揭示的方法生成的指纹库数据格式一致的其他指纹库;待测文本获取模块701用于获取待测文本;第二序列获取模块702用于根据待测文本获取模块701所获取的待测文本获取包括多个待测文本块的第二序列;第二序列处理模块703用于使用具有预设数据长度的滑动窗口,以所述第二序列中的第一个待测文本块为起点向所述第二序列中的最后一个待测文本块滑动,直至所述滑动窗口滑过整个所述第二序列;在每次滑动前,从所述滑动窗口所覆盖的各待测文本块分别对应的哈希值中,选取最小值或最大值作为待测指纹单元,从而产生包括多个待测指纹单元的所述待测文本指纹;匹配结果获取模块704用于将第二序列处理模块703获取的待测文本指纹与接收模块705获取的机密文本指纹进行比较以获取匹配结果。
并请参见图21,图21是本发明的待测文本指纹匹配装置第一实施例中的匹配结果获取模块的结构示意图。在本发明的待测文本指纹匹配装置第一实施例中,接收模块705获取一级布隆过滤器7041以及多个二级布隆过滤器,匹配结果获取模块704具体为一级布隆过滤器7041以及包括该多个二级布隆过滤器的布隆过滤器组7042。
一级布隆过滤器7041分别对多个待测指纹单元进行过滤,以判断待测指纹单元是否属于指纹库;包括多个二级布隆过滤器的布隆过滤器组7042在一级布隆过滤器7041判断到待测指纹单元属于指纹库时,利用多个二级布隆过滤器分别对待测指纹单元进行过滤,以判断待测指纹单元是否属于与二级布隆过滤器对应的机密文本指纹,如果是,则记录待测指纹单元与机密指纹单元匹配,并且,若满足以下条件,判定待测文本指纹与机密文本指纹相匹配:匹配数量/待测指纹单元的总数量≥预定阈值,其中,匹配数量为与指纹库中的机密指纹单元匹配的待测指纹单元数量。
并请参见图22,图22是本发明的待测文本指纹匹配装置第二实施例中的匹配结果获取模块的结构示意图。在待测文本指纹匹配装置第二实施例中,接收模块705获取倒排索引表7044,匹配结果获取模块704具体为查找模块7043以及倒排索引表7044。查找模块用于在倒排索引表中分别检索与待测文本指纹中的每一待测指纹单元匹配的键值,在检索到匹配的键值时,记录待测指纹单元与键值对应的机密指纹单元匹配,并根据键值获取对应的索引项中的文档编号。
以下请参见图23,图23是本发明的待测文本指纹匹配系统第一实施例的结构示意图。如图23所示,本发明的待测文本指纹匹配系统包括指纹库生成装置以及待测文本指纹匹配装置。
指纹库生成装置包括文本获取模块201、指纹库生成模块210、倒排索引表生成模块230以及发送模块231。
文本获取模块201用于获取多个机密文本;指纹库生成模块210用于分别根据每一机密文本产生对应的机密文本指纹,以生成包括多个机密文本指纹的指纹库。
其中,指纹库生成模块210包括第一序列获取单元211以及第一序列处理单元212。第一序列获取单元211用于分别根据每一机密文本获取包括多个机密文本块的第一序列。第一序列处理单元212用于使用具有预设数据长度的滑动窗口,以第一序列中的第一个机密文本块为起点向第一序列中的最后一个机密文本块滑动,直至滑动窗口滑过整个第一序列;在每次滑动前,从滑动窗口所覆盖的各机密文本块分别对应的哈希值中,选取最小值或最大值作为机密指纹单元,从而产生包括多个机密指纹单元的机密文本指纹。
倒排索引表生成模块230用于分别将指纹库中的每一机密指纹单元作为键值,将每一机密指纹单元所对应的所有机密文本的文本编号加入文本编号列表,并将文本编号列表作为与键值对应的索引项,以生成包括键值以及索引项的倒排索引表。
发送模块231用于发送指纹库以及倒排索引表至待测文本指纹匹配装置至待测文本指纹匹配装置。
指纹库生成装置包括待测文本获取模块701、第二序列获取模块702、第二序列处理模块703、匹配结果获取模块704以及接收模块705。
接收模块705用于从发送模块231获取指纹库;待测文本获取模块701用于获取待测文本;第二序列获取模块702用于根据待测文本获取包括多个待测文本块的第二序列;第二序列处理模块703用于使用具有预设数据长度的滑动窗口,以第二序列中的第一个待测文本块为起点向第二序列中的最后一个待测文本块滑动,直至滑动窗口滑过整个第二序列;在每次滑动前,从滑动窗口所覆盖的各待测文本块分别对应的哈希值中,选取最小值或最大值作为待测指纹单元,从而产生包括多个待测指纹单元的待测文本指纹;匹配结果获取模块704用于将待测文本指纹与机密文本指纹进行比较以获取匹配结果。
在本实施例中,接收模块705从发送模块231获取倒排索引表7044,匹配结果获取模块704具体为查找模块7043以及倒排索引表7044。查找模块用于在倒排索引表7044中分别检索与待测文本指纹中的每一待测指纹单元匹配的键值,在检索到匹配的键值时,记录待测指纹单元与键值对应的机密指纹单元匹配,并且,若满足以下条件,判定待测文本指纹与机密文本指纹相匹配:匹配数量/待测指纹单元的总数量≥预定阈值,其中,匹配数量为与指纹库中的机密指纹单元匹配的待测指纹单元数量。
因此,本发明实施例采用设置为用于覆盖预设数据长度的机密文本块的变长滑动窗口来选择机密文本块,每次将窗口内哈希值最小或最大的元素选入指纹,这种方法带来以下有益的效果:首先确保每次对相同的文本产生相同的子集,保证了指纹选择的确定性;其次最大限度的消除了冗余信息,控制了指纹规模,降低了指纹匹配时的存储及运算开销;再次,选入指纹的元素均匀地覆盖了整个文本序列,确保机密信息检测率稳定在高水平上。
并且,本发明实施例利用用于覆盖预设数据长度的机密文本块的变长滑动窗口,动态地改变指纹选择滑动窗口的长度,可确保在预设数据长度的机密文本块范围内至少选入一个机密指纹单元,因此在本发明中,更对泄漏的机密文本数量具备了量化检测能力,可根据需要量化控制泄露文本的检测能力,即能够检测出不低于给定大小的机密文本泄漏。
因此,本发明实施例的指纹库生成方法及装置、待测文本指纹匹配方法及装置提供了对机密文本或待测文本的深度内容感知能力,而该文本的深度内容感知能力同样也可以用于文本查重、模糊搜索等领域:例如,在论文防剽窃应用中,可以将已有的论文集合作为多个机密文本,根据该多个机密文本利用本发明所揭示的指纹库生成方法及装置建立指纹库,并将待测的新论文作为待测文本,对待测文本进行待测文本指纹提取,通过本发明所揭示的进行待测文本指纹匹配方法及装置进行匹配,能够非常精确地查找出可能的剽窃信息。另外,对于模糊搜索,可以将感兴趣的文本作为机密文本,根据机密文本利用本发明所揭示的指纹库生成方法及装置建立指纹库,通过本发明所揭示的待测文本指纹匹配方法及装置将大量文本作为待测文本进行匹配,能够精确搜索出相关度非常高的信息。
以下请参见图24,图24是本发明的待测文本指纹匹配系统第二实施例的结构示意图。如图24所示,本发明的待测文本指纹匹配系统包括指纹库生成装置以及待测文本指纹匹配装置。
指纹库生成装置包括文本获取模块201、指纹库生成模块210、一级布隆过滤器生成模块222、二级布隆过滤器生成模块221以及发送模块231。
文本获取模块201用于获取多个机密文本;指纹库生成模块210用于分别根据每一机密文本产生对应的机密文本指纹,以生成包括多个机密文本指纹的指纹库。
其中,指纹库生成模块210包括第一序列获取单元211以及第一序列处理单元212。第一序列获取单元211用于分别根据每一机密文本获取包括多个机密文本块的第一序列。第一序列处理单元212用于使用具有预设数据长度的滑动窗口,以第一序列中的第一个机密文本块为起点向第一序列中的最后一个机密文本块滑动,直至滑动窗口滑过整个第一序列;在每次滑动前,从滑动窗口所覆盖的各机密文本块分别对应的哈希值中,选取最小值或最大值作为机密指纹单元,从而产生包括多个机密指纹单元的机密文本指纹。
一级布隆过滤器生成模块222用于将指纹库中的所有机密指纹单元作为总训练集输入布隆算法进行训练,以产生一级布隆过滤器,一级布隆过滤器222用于判断待测指纹单元是否属于指纹库;二级布隆过滤器生成模块221用于分别将指纹库中每个机密文本指纹所对应的多个机密指纹单元作为子训练集输入布隆算法进行训练,以产生分别与指纹库中每个机密文本指纹所对应的多个二级布隆过滤器,二级布隆过滤器221用于判断待测指纹单元是否属于与二级布隆过滤器对应的机密文本指纹。
发送模块231用于发送指纹库、一级布隆过滤器以及多个二级布隆过滤器至待测文本指纹匹配装置。
指纹库生成装置包括待测文本获取模块701、第二序列获取模块702、第二序列处理模块703、匹配结果获取模块704以及接收模块705。
接收模块705用于从发送模块231获取指纹库;待测文本获取模块701用于获取待测文本;第二序列获取模块702用于根据待测文本获取包括多个待测文本块的第二序列;第二序列处理模块703用于使用具有预设数据长度的滑动窗口,以第二序列中的第一个待测文本块为起点向第二序列中的最后一个待测文本块滑动,直至滑动窗口滑过整个第二序列;在每次滑动前,从滑动窗口所覆盖的各待测文本块分别对应的哈希值中,选取最小值或最大值作为待测指纹单元,从而产生包括多个待测指纹单元的待测文本指纹;匹配结果获取模块704用于将待测文本指纹与机密文本指纹进行比较以获取匹配结果。
接收模块705从发送模块231获取一级布隆过滤器以及多个二级布隆过滤器,匹配结果获取模块704具体为一级布隆过滤器以及多个二级布隆过滤器。一级布隆过滤器7041分别对多个待测指纹单元进行过滤,以判断待测指纹单元是否属于指纹库;包括多个二级布隆过滤器的布隆过滤器组7042在一级布隆过滤器7041判断到待测指纹单元属于指纹库时,利用多个二级布隆过滤器分别对待测指纹单元进行过滤,以判断待测指纹单元是否属于与二级布隆过滤器对应的机密文本指纹,如果是,则记录待测指纹单元与机密指纹单元匹配。
以下请参见图25,图25是本发明的待测文本指纹匹配系统第三实施例的结构示意图。如图25所示,本发明的待测文本指纹匹配系统包括内网用户端901、邮件服务器902、网络代理服务器908、电子邮件DLP网关903、网络DLP网关909、网络DLP监视服务器906、交换机904、DLP管理服务器907,内网中的流量经由交换机904发送至外网905。
内网用户端901通过邮件服务器902发送电子邮件,或通过网络代理服务器908上网时,会产生发送到外网的数据流。电子邮件DLP网关903作为邮件链路上的节点,通过解析SMTP/ESMTP协议还原邮件正文及附件等信息,进行涉密信息过滤;网络DLP网关909通过ICAP等协议与网络代理服务器908通信,网络代理服务器908将POST/PUT等HTTP数据报文引流到网络DLP网关909,网络DLP网关909从报文中还原出上传文件及表单数据,进行涉密信息过滤;网络DLP监视服务器906通过端口镜像等方式从交换机904获取到流出内网的数据报文,进行协议分析,还原出承载于各类应用层协议的数据,进行涉密信息过滤。DLP管理服务器907负责创建涉密信息过滤策略,并分发到电子邮件DLP网关903、网络DLP网关909、网络DLP监视服务器906等DLP设备。
本发明所揭示的指纹库生成装置或方法可在DLP管理服务器907上实现,待测文本指纹匹配装置或方法可在电子邮件DLP网关903、网络DLP网关909、网络DLP监视服务器906中的一者或任意组合中分别实现。
以下请参见图26,图26是本发明的指纹库生成装置第三实施例的装置结构示意图。如图26所示,本发明的指纹库生成装置包括处理器801、存储器802、接口803以及总线804,处理器801、存储器802以及接口803通过总线804耦合连接,以进行数据交互通信。
接口803用于获取多个机密文本;
存储器802存储有程序,该程序用于:分别根据每一机密文本产生对应的机密文本指纹,以生成包括多个机密文本指纹的指纹库;其中,分别根据每一机密文本产生对应的机密文本指纹的程序包括:分别根据每一机密文本获取包括多个机密文本块的第一序列;使用具有预设数据长度的滑动窗口,以所述第一序列中的第一个机密文本块为起点向所述第一序列中的最后一个机密文本块滑动,直至所述滑动窗口滑过整个所述第一序列;在每次滑动前,从滑动窗口所覆盖的各机密文本块分别对应的哈希值中,选取最小值或最大值作为机密指纹单元,从而产生包括多个机密指纹单元的所述机密文本指纹。
可选地,该程序进一步包括:在生成指纹库之后,将指纹库中的所有机密指纹单元作为总训练集输入布隆算法进行训练,以产生一级布隆过滤器,一级布隆过滤器用于判断待测指纹单元是否属于指纹库;分别将指纹库中每个机密文本指纹所对应的多个机密指纹单元作为子训练集输入布隆算法进行训练,以产生分别与指纹库中每个机密文本指纹所对应的多个二级布隆过滤器,二级布隆过滤器用于判断待测指纹单元是否属于与二级布隆过滤器对应的机密文本指纹。
可选地,该程序进一步包括:在生成指纹库之后,分别将指纹库中的每一机密指纹单元作为键值,将每一机密指纹单元所对应的所有机密文本的文本编号加入文本编号列表,并将文本编号列表作为与键值对应的索引项,以生成包括键值以及索引项的倒排索引表。
该接口803进一步用于:在生成指纹库之后,发送指纹库发送至待测文本指纹匹配装置;在生成一级布隆过滤器和多个二级布隆过滤器之后,发送一级布隆过滤器和多个二级布隆过滤器发送至待测文本指纹匹配装置;在生成倒排索引表之后,发送倒排索引表发送至待测文本指纹匹配装置。
处理器801运行上述程序。
以下请参见图27,图27是本发明的待测文本指纹匹配装置第三实施例的装置结构示意图。如图27所示,本发明的待测文本指纹匹配装置包括处理器811、存储器812、接口813以及总线814,处理器811、存储器812以及接口813通过总线814耦合连接,以进行数据交互通信。
接口813用于获取指纹库,指纹库包括多个机密文本指纹;
接口813进一步用于获取待测文本;
存储器812存储有程序,该程序包括:根据待测文本获取包括多个待测文本块的第二序列;使用具有预设数据长度的滑动窗口,以所述第二序列中的第一个待测文本块为起点向所述第二序列中的最后一个待测文本块滑动,直至所述滑动窗口滑过整个所述第二序列;在每次滑动前,从所述滑动窗口所覆盖的各待测文本块分别对应的哈希值中,选取最小值或最大值作为待测指纹单元,从而产生包括多个待测指纹单元的所述待测文本指纹。
可选地,接口813进一步用于获取一级布隆过滤器以及多个二级布隆过滤器,一级布隆过滤器用于判断待测指纹单元是否属于指纹库;二级布隆过滤器用于判断待测指纹单元是否属于与二级布隆过滤器对应的机密文本指纹;该将待测文本指纹与机密文本指纹进行比较以获取匹配结果的程序具体包括:利用一级布隆过滤器分别对多个待测指纹单元进行过滤,以判断待测指纹单元是否属于指纹库,如果是,进一步利用多个二级布隆过滤器分别对待测指纹单元进行过滤,以判断待测指纹单元是否属于与二级布隆过滤器对应的机密文本指纹,如果是,则记录待测指纹单元与机密指纹单元匹配并且,且在满足以下条件时,判定待测文本指纹与机密文本指纹相匹配:匹配数量/待测指纹单元的总数量≥预定阈值,其中,匹配数量为与指纹库中的机密指纹单元匹配的待测指纹单元的数量。
可选地,接口813进一步用于获取倒排索引表,倒排索引表分别将指纹库中的每一机密指纹单元作为键值,将每一机密指纹单元所对应的所有机密文本的文本编号加入文本编号列表,并将文本编号列表作为与键值对应的索引项;将待测文本指纹与机密文本指纹进行比较以获取匹配结果的程序具体包括:在倒排索引表中分别检索与待测文本指纹中的每一待测指纹单元匹配的键值,在检索到匹配的键值时,记录待测指纹单元与键值对应的机密指纹单元匹配并且,若满足以下条件,判定待测文本指纹与机密文本指纹相匹配:匹配数量/待测指纹单元的总数量≥预定阈值,其中,匹配数量为与指纹库中的机密指纹单元匹配的待测指纹单元的数量。
通过以上公开内容,本发明实施例通过采用具有预设数据长度滑动窗口来覆盖机密文本块,每次滑动前,从滑动窗口所覆盖的各机密文本块分别对应的哈希值中,选取最小值或最大值作为机密指纹单元,因此可根据包括多个机密文本块的第一序列产生唯一的机密文本指纹,从而保证了所选择的机密文本指纹的确定性;其次,由于采用具有预设数据长度的滑动窗口以第一序列中的第一个机密文本块为起点向第一序列中的最后一个机密文本块滑动,直至滑动窗口滑过整个第一序列,因此可确保入选的机密文本块的位置均匀地覆盖整个第一序列,从而保证机密文本块的检测率稳定在高水平上。
并且,本发明实施例通过采用具有预设数据长度滑动窗口来覆盖待测文本块,每次滑动前,从滑动窗口所覆盖的各待测文本块分别对应的哈希值中,选取最小值或最大值作为待测指纹单元,因此可根据包括多个待测文本块的第一序列产生唯一的待测文本指纹,从而保证了所选择的待测文本指纹的确定性;其次,由于采用具有预设数据长度的滑动窗口以第二序列中的第一个待测文本块为起点向第二序列中的最后一个待测文本块滑动,直至滑动窗口滑过整个第二序列,因此可确保入选的待测文本块的位置均匀地覆盖整个第二序列,从而保证机密文本块的检测率稳定在高水平上。
在本申请所提供的几个实施方式中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例实施方式方案的目的。
另外,在本申请各个实施例实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。