机密信息的检测的制作方法

xiaoxiao2020-7-22  26

专利名称:机密信息的检测的制作方法
技术领域
本申请涉及机密信息的检测。
背景技术
在一些数据处理环境中,机密信息有可能出现在没有被充分保护的数据存储设备中存储的电子文件中。在不安全文件中存在这种机密信息可能危及其所关联的个体的安全性和私密性,并使操作该不安全数据存储系统的实体负有责任。机密信息可以包括敏感的财务数据或者可用于识别具体个体并且将他们与文件的内容相关的任何信息。机密信息的一些例子包括姓名、地址、电话号码、社保号码以及信用卡号码。

发明内容
在一个一般方面,一种用于读取存储的数据的方法包括识别所述存储的数据内的字串,其中每个字串包括连续字节序列,所述字节全部具有在可能值的预定子集中的值; 对于至少一些字串中的每一个,确定所述字串是否包括表示一个或多个格式匹配的字节, 其中格式匹配包括匹配与机密信息关联的预定格式的值的集合;对于每个格式匹配,利用与所述机密信息关联的规则集合测试匹配预定格式的值,以确定所述格式匹配是否是包括一个或多个无效值的无效格式匹配;以及至少部分地基于无效格式匹配的计数对其它格式匹配的计数的比值,计算所述存储的数据的得分。在另一个一般方面,一种用于检测机密信息的系统包括数据存储设备;以及连接到所述数据存储设备的运行时环境。该运行时环境被配置为从所述数据存储设备读取存储的数据;识别所述存储的数据内的字串,其中每个字串包括连续字节序列,所述字节全部具有在可能值的预定子集中的值;对于至少一些字串中的每一个,确定所述字串是否包括表示一个或多个格式匹配的字节,其中格式匹配包括匹配与机密信息关联的预定格式的值的集合;对于每个格式匹配,利用与所述机密信息关联的规则集合测试和匹配预定格式的值,以确定所述格式匹配是否是包括一个或多个无效值的无效格式匹配;以及至少部分地基于无效格式匹配的计数对其它格式匹配的计数的比值,计算所述存储的数据的得分。在又一个一般方面,一种计算机可读介质存储用于检测机密信息的计算机程序。 该计算机程序包括导致计算机执行以下步骤的指令读取存储的数据;识别所述存储的数据内的字串,其中每个字串包括连续字节序列,所述字节全部具有在可能值的预定子集中的值;对于至少一些字串中的每一个,确定所述字串是否包括表示一个或多个格式匹配的字节,其中格式匹配包括匹配与机密信息关联的预定格式的值的集合;对于每个格式匹配, 利用与所述机密信息关联的规则集合测试匹配预定格式的值,以确定所述格式匹配是否是包括一个或多个无效值的无效格式匹配;以及至少部分地基于无效格式匹配的计数对其它格式匹配的计数的比值,计算所述存储的数据的得分。这些方面可以包括一个或多个下列特征所述机密信息可以是信用卡号码。当在所述字串中检测到的具有表示数字的值的字节数目等于在信用卡号码的标准格式中的数字数目时,确定出现格式匹配。与信用卡号码关联的规则可以包括有效发行商识别号码的列表的规范。与信用卡号码关联的规则可以包括校验和算法的规范。所述机密信息可以是社保号码。当在所述字串中检测到的具有表示数字的值的字节数目等于9时,确定出现格式匹配。与社保号码关联的规则可以包括对于由社保号码的前五个数字表示的号码的值的有效子集的规范。所述机密信息可以是电话号码。当在所述字串中检测到的具有表示数字的值的字节数目等于10、或者在所述字串中检测到的数字数目等于第一个数字为“ 1”的11个数字时,确定出现格式匹配。与电话号码关联的规则可以包括有效区号的列表的规范。与电话号码关联的规则可以包括在区号之后的第一个数字必须不是1或0的规范。所述机密信息可以是邮政编码。当检测到如下字节序列时确定出现格式匹配由具有表示数字的值的五个字节组成、或者由具有表示九个数字且在第五个数字与第六个数字之间有连字号的值的十个字节组成。与电话号码关联的规则可以包括有效的五个数字邮政编码的列表的规范。对于每个字串,确定该字串是否包括一个或多个匹配姓名的词,其中,词是字串内的连续字节序列,所述字节全部具有表示字母数字字符的值,以及姓名是来自通常用于指代个别个人的序列的列表的字符序列;以及至少部分地基于存储的数据中检测到的姓名的计数,计算存储的数据的得分。所述姓名列表可以被分成两个子集姓和名。对于每个字串,确定该字串是否包括一个或多个全名,其中全名是字符序列,该字符列表如下组成来自姓列表姓后面跟着空格符、并且后面跟着来自名列表的名;以及至少部分地基于检测到的全名的计数,计算存储的数据的得分。列表中的姓名可以各自具有与它们关联的频率计数,并且对于出现在存储的数据中的姓名计算平均频率计数,以及可以至少部分地基于所述平均频率计数计算存储的数据的得分。如果存储的数据中检测到的姓名数目小于阈值,则可以忽略平均频率计数。对于每个字串,对由两个字母组成的词的数目计数,其中,词是字串内的连续字节序列,所述字节全部具有表示字母数字字符的值。对于每个两个字母的词,确定该两个字母的词是否是有效的州缩写;以及至少部分地基于有效的州缩写的计数以及两个字母的词的计数,计算存储的数据的得分。对于每个字串,确定该字串是否包括一个或多个州/邮编对,其中,州/邮编对是如下组成的字符列表州缩写后面跟着空格符,所述空格符后面依次跟着邮政编码;以及至少部分地基于检测到的州/邮编对的计数,计算存储的数据的得分。检测在电存储的文件系统中哪些文件最近被更新过;以及在最近被更新过的文件中的每一个中搜索机密信息。定义字串的字节值的子集可以表示字母数字字符、括号、连字号以及空格符。将所述得分与阈值相比较;以及如果该得分超过所述阈值,则将该存储的数据标记为可能包含机密信息。这些方面可以包括一个或多个下列好处使得对机密信息的搜索自动化。有效检测机密信息以实现并增强安全性和私密性保护手段。
本申请的其它特征和好处将从以下说明以及从权利要求中变得清楚。


图1是用于检测存储的数据中的机密信息的系统的框图。图2是用于检测存储的数据中的机密信息的软件的框图。图3是用于计算表示文件包含机密信息的可能性的得分的过程的流程图。
具体实施例方式期望能够在较大数据集中检测的机密数据的出现,并且具体来说,期望在搜索机密数据的过程中检测机密信息而无需人工代理审阅大部分的数据。用于检测机密信息的系统能够自动检测可能的机密数据,这些可能的机密数据之后能够被人工代理整体或者部分地审阅。在一些实施例中,机密数据的人工审阅可能局限于明确的工作人员在极少时间进行或者被完全避免,由此降低或者消除由机密信息的误处理所引起的私密性侵害。图1描绘了用于检测电子存储的数据中的机密信息的示范性系统。感兴趣的数据可以存储在一个或多个数据存储设备中,诸如实现在平行文件系统的多个设备上的平行 “多文件” 110 (例如,如通过引用并入此处的美国申请5,897,638中所述)或者数据库服务器120中。机密信息检测(CID)系统100使用运行在运行时环境150中的软件来分析数据存储设备中存储的数据。分析的结果,包括存储的数据的每个单元——诸如文件——的得分、以及可能指示存储的数据的哪些单元可能包含机密信息的标记,可以被写入同一个 110、120或者其它数据存储设备160、170。在一些情况下,可以由操作者使用用户接口 180 配置和控制CID系统的运行以及审阅结果。可以在合适的操作系统——诸如UNIX操作系统——的控制下在一个或多个通用计算机上提供运行时环境150。例如,运行时环境150能够包括多节点平行计算环境,该环境包括使用多个中央处理单元(CPU)的计算机系统的配置,多个中央处理单元要么是本地的(例如,诸如SMP计算机的多处理器系统)或者本地分布的(例如,耦接为群或者MPP的多个处理器),要么是远程或者远程分布的(例如,经由LAN或者WAN网络耦接的多个处理器),或者其任意组合。由运行时环境150存取的输入、输出或者中间数据集可以是存储在平行文件系统(例如,数据存储器160,或者本地或者通过通信链接远程地耦接到系统100 的外部数据存储器170)中的平行“多文件”。图2描绘了可以在运行时环境中运行以实现用于检测电子存储文件中的机密信息的系统的软件的结构。CID系统100将所有文件格式都视为未知并且搜索包含机密数据的字符串。文件是从数据存储设备201读取的。字串提取模块210将文件视为数据字节序列。用于识别字串的方法将去除除了表示下述字符的字节之外的所有字节这些字符用于表示机密信息的数据或者表示机密信息的数据的通常格式化。典型地,字节是8比特长,但是可以定义为适合于试图检测的字符集的任意大小。例如,一字节的长度可以定义为16或 32比特。所示的示例系统使用8比特的字节大小。使用与感兴趣的字符关联的可能字节值的子集来识别字串。其值在子集范围之外的字节被视为字串分隔符。在本例中,子集中的字节值是表示字母数字字符、括号、连字号和空格符的ASCII。包括括号、连字号和空格符是因为这些字符通常用于对像电话号码、SSN、信用卡以及地址之间的词之类进行格式化。通过字串提取模块210识别的字串被传递到各种机密信息检测模块220、230、M0、250、260和270。信用卡号码检测模块220在每个字串中搜索号码并且针对与信用卡号码关联的规则集合检查该号码。这些规则包括以数字数目测量的一个或多个允许的信用卡号码长度的规范。模块通过在字串中搜索表示数字的字节开始。如果该字串中检测到的数字数目等于信用卡号码的标准格式的数字的长度,那么就声明基本格式匹配。甚至当表示其它字符——诸如数字组之间的空格符——的字节散布在表示号码的数字之间时也可以发生基本格式匹配。对于每个基本格式匹配来说,使用与信用卡号码关联的规则全集测试由字串中的数字表示的号码。全集中的其它规则可以包括例如有效发行商识别号或者有效校验和的规范。如果该号码不满足任一规则,那么它将被识别为无效的或者看似(look-a-like) 信用卡号码。随着文件被处理,信用卡号码检测模块220对基本格式匹配的数目和被确定为无效的号码数目进行计数。无效号码的计数对其它基本格式匹配的计数的比值可以与所述其它基本格式匹配事实上是有效信用卡号码的可能性相关。在示例系统中,该比值用来在计算得分时对完全格式匹配的计数进行加权。在替换实施例中,可以仅当字串包括不间断字节序列——每个字节具有表示数字的值——时声明信用卡号码的基本格式匹配,该不间断字节序列的长度等于信用卡号码的标准格式的数字中的长度。类似地,社保号码检测模块230在每个字串中搜索号码并且针对与社保号码关联的规则集合检查该号码。这些规则包括社保号码长度必须是9位数字的规范。模块通过搜索字串中表示数字的字节开始。如果在字串中的检测到的数字数目等于9,那么就声明基本格式匹配。甚至当表示其它字符——诸如数字组之间的连字号——的字节散布在表示号码的数字之间时也可以发生基本格式匹配。对于每个基本格式匹配来说,使用与社保号码关联的规则全集测试由字串中的数字表示的号码。全集中的其它规则可以包括,例如,用于由社保号码的前五个数字表示的号码的值的有效子集的规范。如果该号码不满足任一规则, 那么它将被识别为无效的或者看似社保号码。随着文件被处理,社保号码检测模块230对基本格式匹配的数目和被确定为无效的号码数目进行计数。无效号码的计数对其它基本格式匹配的计数的比值可以与所述其它基本格式匹配事实上是有效社保号码的可能性相关。 在示例系统中,该比值用来在计算得分时对完全格式匹配的计数进行加权。类似地,电话号码检测模块240在每个字串中搜索号码并且针对与电话号码关联的规则集合检查该号码。这些规则包括电话号码应当是要么10个数字长度要么是第一个数字等于一的11个数字长度的规范。模块通过搜索字串中表示数字的字节开始。如果在该字串中检测到的数字的数目等于10、或者是检测到的数字的数目等于11且第一个数字是一,那么就声明基本格式匹配。甚至当表示其它字符一诸如区号数字两边的括号或者数字组之间的连字号一的字节散布在表示号码的数字之间时也可以发生基本格式匹配。 对于每个基本格式匹配来说,使用与电话号码关联的规则全集测试由字串中的数字表示的号码。全集中的其它规则可以包括,例如,有效区号或者区号之后的第一个数字必须不为1 或0的规范。如果该号码不满足任一规则,那么它将被识别为无效的或者看似电话号码。随着文件被处理,电话号码检测模块240对基本格式匹配的数目和被确定为无效的号码数目进行计数。无效号码的计数对其它基本格式匹配的计数的比值可以与所述其它基本格式匹配事实上是有效电话号码的可能性相关。在示例系统中,该比值用来在计算得分时对完全格式匹配的计数进行加权。在替换实施例中,可以仅当字串包括不间断字节序列时声明电话号码的基本格式匹配,该不间断字节序列具有表示以下序列其中之一的值氺氺氺氺氺氺氺氺氺氺1氺氺氺氺氺氺氺氺氺氺氺氺氺一氺氺氺一氺氺氺氺1_氺氺氺一氺氺氺一氺氺氺氺(氺氺氺)ΦΦΦ-ΦΦΦΦ1(氺氺氺)ΦΦΦ-ΦΦΦΦ其中*是代表数字0,1,2,3,4,5,6,7,8或者9中任何一个的通配符。姓名检测模块250在每个字串中搜索匹配常用姓名列表中的姓名的词。这里,词是全部表示字母的连续字节序列。这样的常用姓名列表可以来源于政府普查。姓名列表可以分为姓和名。可以将已知为常用词的别名的特定名称排除在外,以降低假肯定(false positive)的概率。例如,可以将姓名列表定制为将月份和星期几的名称排除在外。补偿假肯定的另一种方法是监控出现在文件中的姓名的平均频率。例如,美国政府普查提供针对每个姓名的频率计数。因为存在比常用姓名多得多的不常用姓名,所以大多数的名字具有大大低于平均频率的频率。姓名列表可以预期为具有近似平均频率。恰巧命中少数姓名的随机字符列表应当具有低得多的频率。如果文件中检测到的姓名的数目超过最小取样大小,诸如10个姓名,那么可以计算文件中那些姓名的平均频率来测试姓名。可以将平均频率与阈值相比较以确定这些姓名更加可能是假肯定还是真姓名。在本例中,姓名检测模块250在每个字串中搜索来自具有关联频率的常用姓名列表中的姓和名。它还检测何时在同一字串中在名之前紧挨着出现姓并且将这样的出现事件算作全名。模块250输出对于姓的计数、名的计数、全名的计数以及出现在文件中的所有姓名的平均频率。街道地址检测模块260在每个字串中搜索词的序列,所述词的序列包括后面跟着由字母组成的一个或两个词的号码,词后面接着跟着已识别的街道缩写。在街道地址开头的号码必须以连续数字序列开始,且第一个数字不等于零。该号码在街道名称的一个或者两个词之前的空格符之前的末尾处可以具有可选字母。街道地址检测模块将文件中检测到的街道地址序列的号码的计数传递给计分模块。州和邮政编码检测模块270在每个字串中搜索邮政编码和已识别的两个字符的州缩写。它还对组成州缩写的两个词的序列的出现事件进行计数,该州缩写后面跟着有效邮政编码。该模块对所有两个字母的词进行计数并且检查每个两个字母的词是否都是有效州名称缩写,如美国邮政局所规定的那样。模块270还搜索每个字串中的号码并且针对与邮政编码关联的规则集合检查该号码。这些规则包括这样的规范邮政编码必须要么是五个数字长度的连续数字序列要么是在第五个和第六个数字之间有连字号的九个数字长度的序列。如果检测到匹配这些模式中任意一个的字节序列,那么就声明基本格式匹配。对于每个基本格式匹配来说,使用与邮政编码关联的规则全集测试由字串中的数字表示的号码。全集中的其它规则可以包括,例如,有效的五个数字邮政编码作为全部可能的五个数字号码的子集的规范。如果该号码不满足任一规则,那么它将被识别为无效的或者看似邮政编码。随着文件被处理,模块270对基本格式匹配的数目和被确定为无效的号码数目进行计数。无效号码的计数对其它基本格式匹配的计数的比值可以与所述其它基本格式匹配事实上是有效邮政编码的可能性相关。在示例系统中,该比值用来在计算得分时对完全格式匹配的计数进行加权。最后,模块270对州和邮编序列的数目进行计数,该州和邮政编码序列这样组成有效州缩写后面跟着空格符,空格符后面跟着有效邮政编码。然后,模块270 将两个字母的词的计数、有效州缩写的计数、邮政编码格式匹配的计数、有效邮政编码的计数以及州和邮政编码序列的计数传递给计分模块。经CID系统处理的每个文件都分配一个得分,并且根据得分可以将文件标记为可能包含机密信息。计分模块280基于机密信息检测模块220、230、M0、250、260和270的输出计算文件的得分。得分可以被保存或者从CID系统100输出。得分还被传递给阈值模块 290,阈值模块290将得分与阈值相比较并且如果文件得分超过阈值则标记该文件。尽管在图2中将机密信息检测模块描绘为独立地对字串进行操作,但是应当理解,在一些情况下通过在一些检测模块之间共享针对字串的中间处理结果可以实现更高的效率。例如,对字串中表示数字的字节进行计数的程序的结果可以为信用卡号码检测模块 220、社保号码检测模块230以及电话号码检测模块240共享。而且,可以通过对具有小于匹配其正在搜索的机密信息的格式所需的最小字节数目的字串进行忽略来优化许多检测模块。示出的模块边界意图是传达对正在实现的逻辑的理解而非对以软件实现所公开的方法的代码结构施加严格的约束。在图3中描绘了可以在用于计算得分的计分模块观0中实现的示范性计分方法 300。在计分模块开始运行(301)之后,它检索(310)与已经由机密信息检测模块220、230、 240、250、260或者270中的一个输出的机密信息类型(Cl类型)中的一个有关的数据。然后,计分模块提取(320)该CI类型的命中计数和假肯定指示符。命中计数是文件中尚未被确定为无效的、对某一 CI类型格式的匹配的数目。例如,由信用卡号码检测模块生成的命中计数是未确定为无效的基本格式匹配的数目。这些命中是对与该CI类型关联的规则全集的完全匹配。命中仍然有可能是一个假肯定,这是因为即使随机数据未对CI类型的信息进行编码,它也可能包括完全匹配所以。假肯定指示符是由计分模块用来评定关联的命中计数的可靠性的度量。例如,由信用卡号码检测模块生成的假肯定指示符是被确定为无效的基本格式匹配的计数。这些无效基本格式匹配在某种意义上来说是“接近未命中”或者“看似”信用卡号码并且它们的存在可以指示较高的假肯定的概率。对于尚未针对其定义基本格式匹配——区别于完全匹配一的CI类型来说,可以使用其它度量作为假肯定指示符。例如,由姓名检测模块生成的平均频率计数可以用作针对姓名计数的假肯定指示符。计分模块部分地基于假肯定指示符计算(330)假肯定加权因子。在本例中,加权因子与假肯定指示符成反比。更加精确地说,加权因子取以下形式W= (H/(H+F))n其中H是命中计数,F是假肯定指示符,η是一个整数指数,通常在1和5之间。一些假肯定指示符可能需要其它函数形式以计算假肯定加权因子。例如,假肯定加权因子直接与姓名的平均频率计数成正比。采取附加步骤限制(bound)加权因子可以取的值也可能是有益的。例如,姓名的加权因子可以不连续地被限制为取0. 5和1之间的值。可存在在计分中考虑的、而对于其没有假肯定指示符可用的CI类型。在示例系统中,街道地址检测模块不产生假肯定指示符。可以通过跳过假肯定加权因子计算步骤330, 或者等效地通过将加权因子设置为统一值或者一些其它默认值,将没有假肯定指示符的CI 类型考虑在计分中。然后,计分模块针对在计分中考虑的每个CI类型计算(340)子得分。在本例中, 子得分被计算为命中计数、假肯定加权因子和文件大小指示符的函数。更加精确地说,子得分取以下形式S = W*k* (H * c/N)1/2其中,N是文件大小指示符,k和η是针对每个CI类型进行调节以将子得分中的因子规范化的常数。在特定情况下,可以简化子得分计算的形式。例如,全名的检测可以触发针对姓名的子得分的替换计算。实现类似于前述算法的计分算法的示例代码包括在下面的样本代码列表部分中。在计算子得分(340)之后,计分模块检查(350)是否还有CI类型数据仍然待考虑。如果尚未针对待考虑的所有CI类型计算子得分,那么计分模块循环回到从机密信息检测模块检索数据以寻找下一 CI类型。如果已经计算了所有子得分,那么它前进到基于子得分计算(360)文件的综合得分(composite score)。在所描绘的示例中,综合得分是所有子得分的总和。子得分可以在它们被加到综合得分中之前被限定。然后,可以通过例如将结果综合得分写入诸如数据库服务器170或者平行“多文件”系统160这样的数据存储设备上的非易失性存储器中来保存(370)结果综合得分。综合得分也可以在计分模块运行的终止(3%)之前被传递给阈值模块四0。在一些实施方式中,CID系统100可以被配置为处理由系统的用户提供的一个或多个文件的列表。在其它实施方式中,CID系统可以被配置为处理文件系统中的所有文件。 CID系统可以被配置为周期性地运行,并且在一些实施方式中可以被配置为检查与文件系统中的文件关联的时间戳并且仅处理新近被更新的那些文件(例如,在给定时间之后最近编辑的,给定时间诸如CID系统上一次被运行的时间)。可以使用在计算机系统上运行的软件实现上述的机密信息检测方法。例如,所述软件形成在运行在经编程或可编程计算机系统(可以具有各种架构,诸如分布式、客户机/ 服务器或者网格式)上的一个或多个计算机程序中的过程,所述计算机系统每个包括至少一个处理器、至少一个数据存储系统(包括易失和非易失性存储器和/或存储元件)、至少一个输入设备或端口以及至少一个输出设备或端口。软件可以形成更大程序的一个或多个模块,例如,提供与计算图的设计和配置有关的其它业务。图的节点和元素可以实现为存储在计算机可读介质中的数据结构或者符合存储在数据库中的数据模型的其它结构化数据。所述软件可以提供在可由通用可编程计算机或者专用可编程计算机读取的存储介质上,存储介质诸如CD-ROM,或者通过网络的通信媒体传递(在传送信号中被编码)到运行其的计算机。可以以分布式实现所述软件,其中由软件规定的不同部分的计算由不同的计算机执行。每个这样的计算机程序都优选地存储在存储介质或者设备上或者下载到存储介质或者设备中(例如,固态存储器或介质,或者磁介质或光介质),这些存储介质或者设备可由通用可编程计算机或者专用可编程计算机读取,以便当由计算机系统读取存储介质或者设备以执行在此描述的过程时配置和运行计算机。也可以考虑将本发明的系统实现为计算机可读存储介质,被配置为具有计算机程序,其中存储介质被配置为使得计算机系统以特定并且预定义的方式运行以执行这里所描述的功能。已经描述了本发明的许多实施例。然而,应当理解,在不脱离本发明的精神和范围的条件下可以进行各种修改。例如,上面描述的一些步骤可以是与次序无关的,由此可以以不同于所描述的次序执行。样本代码列表
out::reformat(in)= begin
letreal(8) first一name一ratio = if(in.first_name_pct == 0 orin.first一name一count <= 9) 0.5 elseif(in.first_name_pct > 0.04) 1.0 elsein.first_name_pct / 0.04; Ietreal(8) last_name_ratio = if(in.last_name_pct == 0 orin.last_name_count <= 9) 0.5 elseif(in.last_name_pct > 0.006) 1.0 elsein.last_name_pct / 0.006;
letreal(8) credit_card_ratio = if(i η. cred it_ca rd_co u nt > 0) (double) i η. cred it_ca rd_co u nt / (iη.credit_card_count + in.non_credit_card_count) else 1;
letreal(8) ssn_ratio = if(in.ssn_count > 0) (double) in.ssn_count / (in.ssn_count + in.non_ssn_count) else 1 ;
Ietreal(8) phone_ratio = if(in.phone_count > 0) (double) in.phone_count / (in.phone_count +
in.non_phone_count) else 1;letreal(8) zip一ratio = if(in.zip一count > 0) (double) in.zip一count / (in.zip一count + in.non一zip一count) else 1 ; letreal(8) state_ratio = if(in.state_count > 0) (double) in.state_count / (in.state_count + in.total_two_char_string_length / 2) else 1 ;
first_name_ratio = first_name_ratio * first_name_ratio;
ssn_ratio = ssn_ratio * ssn_「atio * ssn_ratio * ssn_ratio * ssn_ratio;
phone_ratio = phone_ratio * phone_ratio * phone_ratio * phone_ratio * phone_ratio;
zip_ratio = zip_ratio * zip_ratio * zip_ratio * zip_ratio * zip_ratio;
state_ratio = state_ratio * state_ratio * state_ratio * state_ratio * state_ratio;
out * :: in.*;
out.name_score :: if(in.first_and_last_count > 0) math_sqrt(in.first_and_last_count) * 1000 else
75000.0 * (math_sqrt((double) in.first一name一count * 6 / in.total一string一length) + math_sqrt(in.first_name_count * 6 / in.total_string_length)) * first_name_ratio * last_name_ratio; out.credit_card_score :: if(iη.credit_card_count == 0) 0 else if(in.non一credit一card一count == 0) math一sqrt(in.c「edit一card一count) * 1000 else
(75000.0 * math_sqrt((double) iη.credit_card_count * 16 / in.total_stringJength)) * credit_card_ratio;
out.ssn_score :: if(in.ssn_count == 0) 0
else if(in.non_ssn_count == 0) math_sqrt(in.ssn_count) * 1000
else
((75000.0 * math_sqrt((double) in.ssn一count * 9 / in.total_stringJength)) * ssn_ratio);
out.phone_score :: if(in.phone_count == 0) 0
else if(in.non一phone一count == 0) math一sqrt(in.phone一count) * 1000
else
((750000.0 * math_sqrt((double) in.phone一count * 10 / in.total_string_length)) * phone 一 ratio);
out.zip_score :: if(in.zip_count == 0) 0
else if(in non一zip一count == 0) math一sqrt(in.zip一count) * 1000
else
((75000.0 * math_sqrt((double) in.zip一count * 5 / in .total一string一length)) * zip_ratio);
out.state_score :: if(i η .state 一 count == 0) 0
else if(in.total_two_char_st「ing_length /2 <= in.state_count) math_sqrt(iη.state_count) * 1000 else
((5000000.0 * math_sqrt((double) in.state_count * 2 / in.total_string_length)) *
state_ratio);
end;
out::reformat(in)= begin
out.overall_score :: (if(in.first_and_last_count > 0) 1000 else min(in.name_score, 2000) / 3) +
(if(iη.credit_card_score >= 1000) 1000 else min(in.credit_card_score, 2000) / 3) +
(if(in.ssn_score >= 1000) 1000 else min(in.ssn_score, 2000) / 3) +
(if(in.phone一score >= 1000) 1000 else min(in.phone_score, 2000) / 3) +
(if(in.address一count > 0) 1000 elseO) +
(if(in.state_and_zip_count > 0) 1000 elseO) +
(if(in.zip_score >= 1000 andin.name_score >= 1000) 1000 else min(in.zip_score, 2000) / 3) + (if(in.state_score >= 1000 andin.name_score >= 1000) 1000 else min(in.state_score, 2000) /3); out.username :: file_information(in.filename).username; out * :: in.*;
end;
/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺^5 ^ ^ 氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺/其它实施例在后附权利要求的范围内。
权利要求
1.一种用于检测机密信息的方法,该方法包括读取存储的数据;识别所述存储的数据内的字串,其中每个字串包括连续字节的序列,所述字节全部具有在可能值的预定子集中的值;对于至少一些字串中的每一个,确定所述字串是否包括表示一个或多个格式匹配的字节,其中格式匹配包括匹配与机密信息关联的预定格式的值的集合;对于每个格式匹配,利用与所述机密信息关联的规则集合测试匹配预定格式的值,以确定所述格式匹配是否是包括一个或多个无效值的无效格式匹配;以及至少部分地基于无效格式匹配的计数对其它格式匹配的计数的比值,计算所述存储的数据的得分。
2.如权利要求1所述的方法,其中,所述机密信息是信用卡号码。
3.如权利要求2所述的方法,其中,当在所述字串中检测到的具有表示数字的值的字节数目等于在信用卡号码的标准格式中的数字数目时,确定出现格式匹配。
4.如权利要求3所述的方法,其中,所述与信用卡号码关联的规则包括有效发行商识别号码的列表的规范。
5.如权利要求3所述的方法,其中,所述与信用卡号码关联的规则包括校验和算法的规范。
6.如权利要求1所述的方法,其中,所述机密信息是社保号码。
7.如权利要求6所述的方法,其中,当在所述字串中检测到的具有表示数字的值的字节数目等于9时,确定出现格式匹配。
8.如权利要求7所述的方法,其中,与所述社保号码关联的规则包括对于由社保号码的前五个数字表示的号码的值的有效子集的规范。
9.如权利要求1所述的方法,其中,所述机密信息是电话号码。
10.如权利要求9所述的方法,其中,当在所述字串中检测到的具有表示数字的值的字节数目等于10、或者在所述字串中检测到的数字数目等于第一个数字为“ 1”的11个数字时,确定出现格式匹配。
11.如权利要求10所述的方法,其中,所述与电话号码关联的规则包括有效区号的列表的规范。
12.如权利要求10所述的方法,其中,所述与电话号码关联的规则包括在区号之后的第一个数字必须不是1或0的规范。
13.如权利要求1所述的方法,其中,所述机密信息是邮政编码。
14.如权利要求13所述的方法,其中,当检测到如下字节序列时确定出现格式匹配由具有表示数字的值的五个字节组成、或者由具有表示九个数字且在第五个数字与第六个数字之间有连字号的值的十个字节组成。
15.如权利要求14所述的方法,其中,所述与电话号码关联的规则包括有效的五个数字邮政编码的列表的规范。
16.如权利要求1所述的方法,还包括对于每个字串,确定该字串是否包括一个或多个匹配姓名的词,其中,词是字串内的连续字节的序列,所述字节全部具有表示字母数字字符的值,并且姓名是来自通常用于指代单个人(individual people)的这样的序列的列表的字符序列;以及至少部分地基于在存储的数据中检测到的姓名的计数,计算存储的数据的得分。
17.如权利要求16所述的方法,其中,所述姓名列表被分成两个子集姓和名。
18.如权利要求17所述的方法,还包括对于每个字串,确定该字串是否包括一个或多个全名,其中全名是字符序列,该字符序列如下组成来自姓列表的姓后面跟着空格符、并且后面跟着来自名列表的名;以及至少部分地基于检测到的全名的计数,计算存储的数据的得分。
19.如权利要求16所述的方法,其中,所述列表中的姓名各自具有与它们关联的频率计数,并且对于出现在存储的数据中的姓名计算平均频率计数,以及至少部分地基于所述平均频率计数计算存储的数据的得分。
20.如权利要求19所述的方法,其中,如果存储的数据中检测到的姓名数目小于阈值, 则忽略平均频率计数。
21.如权利要求1所述的方法,还包括对于每个字串,对由两个字母组成的词的数目进行计数,其中,词是字串内的连续字节的序列,所述字节全部具有表示字母数字字符的值。
22.如权利要求21所述的方法,还包括对于每个两个字母的词,确定该两个字母的词是否是有效的州缩写;以及至少部分地基于有效的州缩写的计数以及两个字母的词的计数,计算存储的数据的得分。
23.如权利要求1所述的方法,还包括对于每个字串,确定该字串是否包括一个或多个州/邮编对,其中,州/邮编对是如下组成的字符序列州缩写后面跟着空格符,所述空格符后面接着跟着邮政编码;以及至少部分地基于检测到的州/邮编对的计数,计算存储的数据的得分。
24.如权利要求1所述的方法,还包括检测在电存储的文件系统中哪些文件最近被更新过;以及将权利要求1的方法应用到最近被更新过的文件中的每一个。
25.如权利要求1所述的方法,其中,所述定义字串的字节值的子集表示字母数字字符、括号、连字号以及空格符。
26.如权利要求1所述的方法,还包括 将所述得分与阈值相比较;以及如果该得分超过所述阈值,则将该存储的数据标记为可能包含机密信息。
27.一种用于检测机密信息的系统,该系统包括 数据存储设备;以及运行时环境,被连接到所述数据存储设备并且被配置为 从所述数据存储设备读取存储的数据;识别所述存储的数据内的字串,其中每个字串包括连续字节的序列,所述字节全部具有在可能值的预定子集中的值;对于至少一些字串中的每一个,确定所述字串是否包括表示一个或多个格式匹配的字节,其中格式匹配包括匹配与机密信息关联的预定格式的值的集合;对于每个格式匹配,利用与所述机密信息关联的规则集合测试匹配预定格式的值,以确定所述格式匹配是否是包括一个或多个无效值的无效格式匹配;以及至少部分地基于无效格式匹配的计数对其它格式匹配的计数的比值,计算所述存储的数据的得分。
28.如权利要求27所述的系统,其中,所述机密信息是信用卡号码,当在所述字串中检测到的具有表示数字的值的字节数目等于在信用卡号码的标准格式中的数字数目时确定出现格式匹配,以及与信用卡号码关联的规则包括有效发行商识别号码的列表的规范和校验和算法的规范。
29.如权利要求27所述的系统,其中,所述机密信息是社保号码,当在所述字串中检测到的具有表示数字的值的字节数目等于9时确定出现格式匹配,以及与社保号码关联的规则包括用于由所述社保号码的前五个数字表示的号码值的有效子集的规范。
30.如权利要求27所述的系统,其中,所述机密信息是电话号码,当在所述字串中检测到的具有表示数字的值的字节数目等于10、或者在所述字串中检测到的数字数目等于第一个数字为“1”的11个数字时确定出现格式匹配,以及与电话号码关联的规则包括有效区号的列表的规范以及在区号之后的第一个数字必须不是1或0的规范。
31.如权利要求27所述的系统,其中,所述机密信息是邮政编码,当检测到如下字节序列时确定出现格式匹配由具有表示数字的值的五个字节组成、或者由具有表示九个数字并且在第五个与第六个数字之间有连字号的值的十个字节组成,以及与电话号码关联的规则包括有效的五个数字邮政编码的列表的规范。
32.如权利要求27所述的系统,其中,所述运行时环境还被配置为对于每个字串,确定该字串是否包括一个或多个匹配姓名的词,其中词是字串内的连续字节的序列,所述字节全部具有表示字母数字字符的值,以及姓名是来自通常用于指代单个人的这样的序列的列表的字符序列,并且该列表被分成两个子集姓和名;以及对于每个字串,确定该字串是否包括一个或多个全名,其中全名是字符序列,该字符序列如下组成来自姓列表的姓后面跟着空格符、并且后面跟着来自名列表的名;以及至少部分地基于在所述存储的数据中检测到的姓名的计数以及至少部分地基于检测到全名的计数,计算所述存储的数据的得分。
33.如权利要求27所述的系统,其中,所述运行时环境还被配置为对于每个字串,确定该字串是否包括一个或多个匹配姓名的词,其中词是字串内的连续字节的序列,所述字节全部具有表示字母数字字符的值,所述姓名是来自通常用于指代单个人的这样的序列的列表的字符序列,并且所述列表中的姓名各自具有与它们关联的频率计数;对于出现在存储的数据中的姓名计算平均频率计数;以及至少部分地基于在所述存储的数据中检测到的姓名的计数以及至少部分地基于所述平均频率计数,计算所述存储的数据的得分。
34.如权利要求27所述的系统,其中,所述运行时环境还被配置为对于每个字串,确定该字串是否包括一个或多个州/邮编对,其中,州/邮编对是如下组成的字符序列州缩写后面跟着空格符,所述空格符后面接着跟着邮政编码;以及至少部分地基于检测到的州/邮编对的计数,计算存储的数据的得分。
35.如权利要求27所述的系统,其中,所述定义字串的字节值的子集表示字母数字字符、括号、连字号以及空格符。
36.一种计算机可读介质,存储用于检测机密信息的计算机程序,该计算机程序包括导致计算机执行以下步骤的指令读取存储的数据;识别所述存储的数据内的字串,其中每个字串包括连续字节的序列,所述字节全部具有在可能值的预定子集中的值;对于至少一些字串中的每一个,确定所述字串是否包括表示一个或多个格式匹配的字节,其中格式匹配包括匹配与机密信息关联的预定格式的值的集合;对于每个格式匹配,利用与所述机密信息关联的规则集合测试匹配预定格式的值,以确定所述格式匹配是否是包括一个或多个无效值的无效格式匹配;以及至少部分地基于无效格式匹配的计数对其它格式匹配的计数的比值,计算所述存储的数据的得分。
37.如权利要求36所述的计算机可读介质,其中,所述机密信息是信用卡号码。
38.如权利要求37所述的计算机可读介质,其中,当在所述字串中检测到的具有表示数字的值的字节数目等于在信用卡号码的标准格式中的数字数目时,确定出现格式匹配。
39.如权利要求38所述的计算机可读介质,其中,所述与信用卡号码关联的规则包括有效发行商识别号码的列表的规范。
40.如权利要求38所述的计算机可读介质,其中,所述与信用卡号码关联的规则包括校验和算法的规范。
41.如权利要求36所述的计算机可读介质,其中,所述机密信息是社保号码。
42.如权利要求41所述的计算机可读介质,其中,当在所述字串中检测到的具有表示数字的值的字节数目等于9时,确定出现格式匹配。
43.如权利要求42所述的计算机可读介质,其中,所述与社保号码关联的规则包括对于由社保号码的前五个数字表示的号码的值的有效子集的规范。
44.如权利要求36所述的计算机可读介质,其中,所述机密信息是电话号码。
45.如权利要求44所述的计算机可读介质,其中,当在所述字串中检测到的具有表示数字的值的字节数目等于10、或者在所述字串中检测到的数字数目等于第一个数字为“1” 的11个数字时,确定出现格式匹配。
46.如权利要求45所述的计算机可读介质,其中,所述与电话号码关联的规则包括有效区号的列表的规范。
47.如权利要求45所述的计算机可读介质,其中,所述与电话号码关联的规则包括在区号之后的第一个数字必须不是1或0的规范。
48.如权利要求36所述的计算机可读介质,其中,所述机密信息是邮政编码。
49.如权利要求48所述的计算机可读介质,其中,当检测到如下字节序列时确定出现格式匹配由具有表示数字的值的五个字节组成、或者由具有表示九个数字且在第五个数字与第六个数字之间有连字号的值的十个字节组成。
50.如权利要求49所述的计算机可读介质,其中,所述与电话号码关联的规则包括有效的五个数字邮政编码的列表的规范。
51.如权利要求36所述的计算机可读介质,还包括导致计算机执行以下步骤的指令 对于每个字串,确定该字串是否包括一个或多个匹配姓名的词,其中,词是字串内的连续字节的序列,所述字节全部具有表示字母数字字符的值,并且姓名是来自通常用于指代单个人的序列的列表的字符序列;以及至少部分地基于存储的数据中检测到的姓名的计数,计算存储的数据的得分。
52.如权利要求51所述的计算机可读介质,其中,所述姓名列表被分成两个子集姓和名。
53.如权利要求52所述的计算机可读介质,还包括导致计算机执行以下步骤的指令 对于每个字串,确定该字串是否包括一个或多个全名,其中全名是字符序列,该字符序列如下组成来自姓列表姓后面跟着空格符、并且后面跟着来自名列表的名;以及至少部分地基于检测到的全名的计数,计算存储的数据的得分。
54.如权利要求51所述的计算机可读介质,其中,所述列表中的姓名各自具有与它们关联的频率计数,并且对于出现在存储的数据中的姓名计算平均频率计数,以及至少部分地基于所述平均频率计数计算存储的数据的得分。
55.如权利要求M所述的计算机可读介质,其中,如果存储的数据中检测到的姓名数目小于阈值,则忽略平均频率计数。
56.如权利要求36所述的计算机可读介质,还包括导致计算机执行以下步骤的指令 对于每个字串,对由两个字母组成的词的数目进行计数,其中,词是字串内的连续字节的序列,所述字节全部具有表示字母数字字符的值。
57.如权利要求56所述的计算机可读介质,还包括导致计算机执行以下步骤的指令 对于每个两个字母的词,确定该两个字母的词是否是有效的州缩写;以及至少部分地基于有效的州缩写的计数以及两个字母的词的计数,计算存储的数据的得分。
58.如权利要求36所述的计算机可读介质,还包括导致计算机执行以下步骤的指令 对于每个字串,确定该字串是否包括一个或多个州/邮编对,其中,州/邮编对是如下组成的字符序列州缩写后面跟着空格符,所述空格符后面接着跟着邮政编码;以及至少部分地基于检测到的州/邮编对的计数,计算存储的数据的得分。
59.如权利要求36所述的计算机可读介质,还包括导致计算机执行以下步骤的指令 检测在电存储的文件系统中哪些文件最近被更新过;以及将权利要求1的方法应用到最近被更新过的文件中的每一个。
60.如权利要求36所述的计算机可读介质,其中,所述定义字串的字节值的子集表示字母数字字符、括号、连字号以及空格符。
61.如权利要求36所述的计算机可读介质,还包括导致计算机执行以下步骤的指令 将所述得分与阈值相比较;以及如果该得分超过所述阈值,则将该存储的数据标记为可能包含机密信息。
全文摘要
检测机密信息包括读取存储的数据和识别所述存储的数据内的字串(210),其中每个字串包括连续字节的序列,所述字节全部具有在可能值的预定子集中的值。对于至少一些字串中的每一个,确定所述字串是否包括表示一个或多个格式匹配(220-270)的字节,其中格式匹配包括匹配与机密信息关联的预定格式的值的集合。对于每个格式匹配,利用与所述机密信息关联的规则集合测试匹配预定格式的值,以确定所述格式匹配是否是包括一个或多个无效值的无效格式匹配,以及至少部分地基于无效格式匹配的计数对其它格式匹配的计数的比值,计算所述存储的数据的得分(280,300)。
文档编号G06F21/00GK102171702SQ200980139094
公开日2011年8月31日 申请日期2009年10月1日 优先权日2008年10月3日
发明者戴维.福尼尔 申请人:起元技术有限责任公司

最新回复(0)