敏感数据检测方法、装置、存储介质及设备与流程

文档序号:20838499发布日期:2020-05-22 17:11阅读:235来源:国知局
敏感数据检测方法、装置、存储介质及设备与流程

本申请涉及信息安全技术领域,特别是涉及一种敏感数据检测方法及装置、计算机可读存储介质和计算机设备。



背景技术:

随着信息技术的发展,各类数据平台和信息系统(如医疗、人社、保险、税务、银行和社交网络等)所汇集的数据量越来越庞大,其中包含有例如用户姓名、联系方式、家庭住址等各类敏感数据。当敏感数据被泄露时,可能对用户的生活造成一定的影响。

在实际应用中,当获取到某一份新的文件时,首先需要对其进行敏感数据检测以避免该文件中的敏感数据被泄露。现有技术在进行敏感数据检测时,通常首先将该文件转换为明文,然后根据转换得到的明文内容进行检测。然而,随着文件格式种类越来越多,采用现有的方法进行检测时,由于需要进行文件格式转换,不仅会降低检测效率,而且可能出现由于文件格式少见而无法正常进行格式转换、导致检测失败的情况。



技术实现要素:

基于此,有必要针对现有技术存在的问题,提供一种可以提高检测效率、增大适用范围的敏感数据检测方法及装置、计算机可读存储介质和计算机设备。

一种敏感数据检测方法,包括:

当监测到应用程序通过内存调用函数进行内存调用事件时,执行预先加载在所述内存调用函数中的钩子函数;

通过所述内存调用函数中的钩子函数,识别所述应用程序在进行所述内存调用事件的过程中调用的内存块;

将所述应用程序调用的内存块更新至内存块列表;

对更新的内存块列表中数据进行敏感数据识别,得到敏感数据检测结果。一种敏感数据检测装置,包括:

钩子函数执行模块,用于当监测到应用程序通过内存调用函数进行内存调用事件时,执行预先加载在所述内存调用函数中的钩子函数;

内存块识别模块,用于通过所述内存调用函数中的钩子函数,识别所述应用程序在进行所述内存调用事件的过程中调用的内存块;

内存块管理模块,用于将所述应用程序调用的内存块更新至内存块列表;

敏感数据检测模块,用于对更新的内存块列表中数据进行敏感数据识别,得到敏感数据检测结果。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。

上述敏感数据检测方法及装置、计算机可读存储介质和计算机设备,当监测到应用程序通过内存调用函数进行内存调用事件时,执行预先加载在内存调用函数中的钩子函数;通过内存调用函数中的钩子函数,识别应用程序在进行内存调用事件的过程中调用的内存块;将应用程序调用的内存块更新至内存块列表;对更新的内存块列表中数据进行敏感数据识别,得到敏感数据检测结果。本申请是通过在内存调用函数中预先加载钩子函数,当应用程序打开文件并进行内容解析时,需要通过内存调用函数进行内存调用,此时,通过钩子函数确定该应用程序所调用的内存块,将被调用的内存块更新至内存块列表,对更新的内存块列表中数据进行敏感数据识别。一方面,本申请无需对文件进行格式转换,另一方面,本申请通过内存块追踪可以快速确定需要进行识别的数据,从而可以提高敏感数据检测效率,且由于不受文件格式的限制,适用范围更广。

附图说明

图1为一个实施例中用于实现敏感数据检测方法的电子设备的内部结构图;

图2为一个实施例中敏感数据检测方法的流程示意图;

图3为一个实施例中分块式内存管理的原理示意图;

图4为一个实施例中对内存块列表中内存块的内容进行敏感数据识别,得到敏感数据检测结果的流程示意图;

图5为一个实施例中建立预设敏感词库的流程示意图;

图6为另一个实施例中对内存块列表中内存块的内容进行敏感数据识别,得到敏感数据检测结果的流程示意图;

图7为一个实施例中进行模型训练得到数据属性分类模型的流程示意图;

图8为另一个实施例中敏感数据检测方法的流程示意图;

图9为又一个实施例中敏感数据检测方法的流程示意图;

图10为一个实施例中敏感数据检测装置的结构示意图;

图11为另一个实施例中敏感数据检测装置的结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

如图1所示,在一个实施例中,提供了一种电子设备,该电子设备包括通过系统总线连接的处理器、内存、存储介质和网络接口。其中,该电子设备的存储介质存储有操作系统、数据库,还存储有敏感数据检测装置。该敏感数据检测装置用于实现一种敏感数据检测方法。该电子设备的处理器被配置为执行一种敏感数据检测方法。该电子设备可以通过网络接口获取未进行敏感数据检测的文件。该操作系统中安装有可以打开不同格式的文件并进行文件内容解析的应用程序。当操作系统中的应用程序进行文件内容解析时,电子设备为该应用程序分配相应的内存块,当处理器检测到应用程序通过内存调用函数进行内存调用事件时,处理器执行本申请的敏感数据检测方法。该电子设备可以是一个独立的设备,或者可以是多个可互联通信的电子设备组成的电子设备群,敏感数据检测装置的各个功能模块可以分别部署在电子设备群中的各个电子设备上。该电子设备可以是台式计算机。

如图2所示,在一个实施例中,提供一种敏感数据检测方法,本实施例以该方法应用于上述图1中的电子设备来举例说明,该方法具体包括以下步骤:

步骤s100,当监测到应用程序通过内存调用函数进行内存调用事件时,执行预先加载在内存调用函数中的钩子函数。

其中,内存调用函数是指在动态内存管理过程中所使用的函数。钩子函数也称hook函数,是windows消息处理机制的一部分,通过设置钩子函数,可在操作系统的层次上对所有消息、事件进行过滤,并访问在正常情况下无法访问的消息。在本步骤中,在内存调用函数中预先加载有钩子函数,可以理解为将原内存调用函数“包装”为一个新的函数。在原内存调用函数被hook后,会设置一个回调函数,应用程序在通过内存调用程序进行内存调用事件时,该回调函数被触发,从而可以认为是监测到应用程序通过内存调用函数进行内存调用事件,从而可以执行该钩子函数。

可以理解,本申请可以是在应用层对内存调用函数进行hook,也可以是在内核层对内存调用函数进行hook,在此不作限定,具体可以根据实际情况进行选择。

另外,本步骤中的内存调用事件为应用程序基于待检测文件的文件格式打开待检测文件后、对待检测文件的内容进行解析时发生的。具体地,对于待检测的非纯文本文件(如word、excel、ppt、xml、json、pdf、chm、各类压缩文件格式、各类数据库的存储文件格式等),本申请并不是通过自身对待检测的文件进行格式转换,而是通过相应的应用程序来打开待检测文件,当该应用程序进行文件内容解析时,该应用程序必然会调用内存来存放解析内容,从而,只需通过钩子函数对应用程序所调用的内存块的内容进行敏感数据检测即可,本申请的方法无需进行待检测文件的格式转换。

步骤s200,通过内存调用函数中的钩子函数,识别应用程序在进行内存调用事件的过程中调用的内存块。

应用程序调用内存的目的是为了存放解析内容,为了对应用程序所解析的内容进行敏感数据监测,首先需要确定该应用程序具体调用了哪些内存块。因此,在执行钩子函数后,钩子函数根据应用程序通过内存调用函数所调用的内存块即可确定待检测文件的解析内容,从而便于进行敏感数据检测。

步骤s300,将应用程序调用的内存块更新至内存块列表。

内存块列表为包含有待检测内存块和已检测内存块的列表,新更新至内存块列表的内存块的状态为待检测状态,当对该内存块进行敏感数据检测之后,该内存块的状态更改为已检测状态。通过设置内存块列表,可以更好地对内存块的敏感数据检测进行管理。

步骤s400,对更新的内存块列表中数据进行敏感数据识别,得到敏感数据检测结果。

在将应用程序调用的内存块更新至内存块列表之后,可以对更新的内存块列表中数据进行敏感数据识别,从而得到对应的检测结果。另外,可以是定期对更新的内存块列表中数据进行敏感数据检测,检测间隔可以根据应用程序调用内存块的时间来确定等。

本实施例提供一种敏感数据检测方法,通过在内存调用函数中预先加载钩子函数,当应用程序打开文件并进行内容解析时,需要通过内存调用函数进行内存调用,此时,通过钩子函数确定该应用程序所调用的内存块,将被调用的内存块更新至内存块列表,对更新的内存块列表中数据进行敏感数据识别。一方面,本申请无需对文件进行格式转换,另一方面,本申请通过内存块追踪可以快速确定需要进行识别的数据,从而可以提高敏感数据检测效率,且由于不受文件格式的限制,适用范围更广。

在一个实施例中,内存调用函数包括内存申请函数以及内存访问函数。其中,内存申请类函数例如malloc、callc、realloc、new等,内存访问类函数例如memcpy、memset、memmove、memcmp、memchr、strcpy、strncpy、strcmp、strncmp、strcat、strncat、strchr、strnchr、strstr等。本实施例中,在监测应用程序通过内存调用函数进行内存调用事件之前,还包括:将钩子函数加载至内存申请函数以及内存访问函数。从而,通过钩子函数即可对应用程序调用的内存块进行准确追踪。

在一个实施例中,通过钩子函数,识别应用程序在进行内存调用事件的过程中调用的内存块包括:通过钩子函数,监测应用程序在进行内存调用事件的过程中申请或者访问的目标内存块,并获取目标内存块对应的内存块标识。

内存管理包括不同应用程序在运行时对设备内存资源的分配和使用,分块式内存管理是众多内存管理方式中的一种。如图3所示,为分块式内存管理的原理示意图,分块式内存管理由内存池和内存管理表两部分组成。内存池被等分为n块,对应的内存管理表,大小也为n,内存管理表的每一个项对应内存池的一个内存快。内存管理表的项值代表的意义为:当该项值为0的时候,代表对应的内存块未被占用,当该项值非零的时候,代表该项对应的内存块已经被占用,其数值则代表被连续占用的内存块数。比如某项值为10,那么说明包括本项对应的内存块在内,总共分配了10个内存块给应用程序。

可以理解,本申请中,内存块可以是指常规意义上的内存块,也可以是指进程的堆、栈、全局变量等可以存放数据的位置,在此不作限定。

在本实施例中,应用程序在调用内存块时,可以是选择申请未被占用的内存块,或者是访问已占用的内存块,从而可以将待检测文件的解析内容放入所调用的内存块中。钩子函数可以通过获取应用程序所调用的内存块的内存块标识来确定存放有解析内容的内存块。例如,当应用程序调用的内存块为内存块n、内存块n-1和内存块n-2时,可以认为内存块n、内存块n-1和内存块n-2内包含有待检测文件的解析内容,此时可以将内存块n、内存块n-1和内存块n-2更新至内存块列表,并进行敏感数据检测。

在一个实施例中,如图4所示,对内存块列表中内存块的内容进行敏感数据识别,得到敏感数据检测结果包括步骤s412至步骤s414:

步骤s412,将内存块列表中内存块的内容与预设敏感词库中的预设敏感数据进行匹配;

步骤s414,根据匹配结果得到敏感数据检测结果。

在进行敏感数据检测时,可以通过数据匹配的方式进行。在提取出内存块中的内容后,通过将内存块中的内容与预设敏感词库中的预设敏感数据进行匹配分析,从而可以将内存块中与预设敏感数据匹配的内容数据确定为敏感数据,从而得到待检测文本的敏感数据检测结果。

可以理解,本实施例中,在对内存块中的内容与预设敏感数据进行匹配分析时,可以采用现有的匹配分析算法实现,在此不作限定。

在一个实施例中,如图5所示,将内存块列表中内存块的内容与预设敏感词库中的预设敏感数据进行匹配之前,还包括步骤s411a至步骤s411d:

步骤s411a,获取已确定为敏感数据的初始数据;

步骤s411b,对初始数据进行特征提取,得到敏感特征;

步骤s411c,基于敏感特征进行数据扩充,得到扩充数据;

步骤s411d,根据初始数据以及扩充数据,建立预设敏感词库。

本实施例首先获取已确定为敏感数据的初始数据,并进行特征提取,得到敏感数据。例如,以中文姓名为例,其对应的敏感特征可以是包含2到4个字符,且首个字符为常用姓氏等。以中国家庭住址为例,其对应的敏感特征可以是数据格式为xx省、xx市、xx县、xx乡、xx村等。以中国手机号码为例,其对应的敏感特征可以是包含11个字符等。在提取到敏感特征后,可以进行数据扩充得到扩充数据,然后将初始数据以及扩充数据作为预设敏感数据构建预设敏感词库。通过提取敏感特征进行数据扩充,可以提高词库内敏感数据的准确性,另外,通过进行数据扩充也能增大词库内的数据量,便于进行敏感数据的匹配分析。

在一个实施例中,如图6所示,对内存块列表中内存块的内容进行敏感数据识别,得到敏感数据检测结果包括步骤s422至步骤s424:

步骤s422,对内存块列表中内存块的内容进行数据属性分类;

步骤s424,根据分类结果得到敏感数据检测结果。

在进行敏感数据检测时,可以通过对数据进行属性分类的方式进行。在提取出内存块中的内容后,通过将内存块中的内容进行数据属性分类,从而可以得到内存块中的内容数据的属性类别,从而得到待检测文本的敏感数据检测结果。例如,在对内存块中的内容进行属性分类后,得到的属性类别包括姓名、手机号码、银行账户、天气状况、地理名称等,则可以将属性类别为姓名、手机号码及银行账户的数据作为敏感数据,从而得到待检测文本的敏感数据检测结果。

可以理解,本实施例中,在对内存块中的内容进行数据属性分类时,可以采用现有的数据属性分类算法实现,在此不作限定。

在一个实施例中,如图7所示,对内存块列表中内存块的内容进行数据属性分类之前,还包括步骤s421a至步骤s421b:

步骤s421a,获取不同属性类别的样本数据,样本数据携带有对应的属性类别标记;

步骤s421b,基于样本数据,对初始模型进行训练,得到数据属性分类模型。

对内存块列表中内存块的内容进行数据属性分类包括:将内存块列表中内存块的内容输入数据属性分类模型,通过数据属性分类模型对内存块的内容进行数据属性分类,得到内存块的内容的属性类别。

本实施例中,可以通过不同属性类别的样本数据对模型训练,从而得到可以对输入的数据进行属性分类的数据属性分类模型。然后,将内存块的内容作为该数据属性分类模型的输入,即可得到内存块的内容对应的数据属性类别。本实施例通过训练好的网络模型进行数据属性分类,可以提高属性分类结果的准确性,从而可以提高敏感数据检测结果的准确性。

在一个实施例中,如图8所示,得到敏感数据检测结果之后,还包括:步骤s500,对检测到的敏感数据进行敏感分级,确定检测到的敏感数据的敏感级别。

具体地,敏感数据的敏感级别可以是分为低级、中级、高级等,其中,低级例如姓名等,中级例如联系方式、家庭住址等,高级例如银行账户密码、社交账户密码等。本实施例中,敏感数据的敏感级别以及对应的实例仅仅是为了对本申请的方案进行说明而列举的示例,在实际应用中,也可以是采用其他的敏感级别以及相应的级别区分标准。

在一个实施例中,对检测到的敏感数据进行敏感分级之前,还包括:获取不同敏感级别的样本敏感数据,样本数据携带有对应的敏感级别标记;基于样本敏感数据,对初始模型进行训练,得到敏感数据分级模型。

对检测到的敏感数据进行敏感分级,确定检测到的敏感数据的敏感级别包括:将检测到的敏感数据输入敏感数据分级模型,通过敏感数据分级模型对检测到的敏感数据进行敏感分级,得到检测到的敏感数据的敏感级别。

本实施例中,可以通过不同敏感级别的样本敏感数据对模型训练,从而得到可以对输入的敏感数据进行级别分类的敏感数据分级模型。然后,将检测到的敏感数据作为该敏感数据分级模型的输入,即可得到检测到的敏感数据对应的敏感级别。本实施例通过训练好的网络模型进行敏感数据级别分类,可以在得到敏感数据检测结果后,进一步确定敏感数据的敏感级别,从而便于用户针对不同敏感级别的敏感数据进行进一步的安全防护处理。

在一个实施例中,如图9所示,敏感数据检测方法还包括步骤s610至步骤s630:

步骤s610,当监测到应用程序通过内存释放函数进行内存释放事件时,执行预先加载在内存释放函数中的钩子函数;

步骤s620,通过内存释放函数中的钩子函数,识别应用程序在进行内存释放事件的过程中释放的内存块;

步骤s630,将应用程序释放的内存块从内存块列表中删除,得到更新的内存块列表。

具体地,在监测应用程序通过内存释放函数进行内存释放事件之前,还包括:将钩子函数加载至内存释放函数。其中,内存释放函数例如free、delete等,当应用程序调用内存释放函数进行内存释放时,触发预先加载的钩子函数,从而通过钩子函数可以获取应用程序所释放的内存块。在内存块被释放后,该内存块中的内容为空,从而可以将该内存块从内存块列表中删除,得到更新的内存块列表,从而可以减少内存块管理压力。

在合理条件下应当理解,虽然前文各实施例涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图10所示,提供一种敏感数据检测装置,该装置包括以下模块:

钩子函数执行模块100,用于当监测到应用程序通过内存调用函数进行内存调用事件时,执行预先加载在内存调用函数中的钩子函数;

内存块识别模块200,用于通过内存调用函数中的钩子函数,识别应用程序在进行内存调用事件的过程中调用的内存块;

内存块管理模块300,用于将应用程序调用的内存块更新至内存块列表;

敏感数据检测模块400,用于对更新的内存块列表中数据进行敏感数据识别,得到敏感数据检测结果。

在一个实施例中,内存调用函数包括内存申请函数以及内存访问函数。

在一个实施例中,内存块识别模块200还用于:通过钩子函数,监测应用程序在进行内存调用事件的过程中申请或者访问的目标内存块,并获取目标内存块对应的内存块标识。

在一个实施例中,敏感数据检测模块400还用于:将内存块列表中内存块的内容与预设敏感词库中的预设敏感数据进行匹配,得到敏感数据检测结果。

在一个实施例中,敏感数据检测装置还包括预设敏感词库建立模块,用于:获取已确定为敏感数据的初始数据;对初始数据进行特征提取,得到敏感特征;基于敏感特征进行数据扩充,得到扩充数据;根据初始数据以及扩充数据,建立预设敏感词库。

在一个实施例中,如图11所示,敏感数据检测装置还包括敏感数据分级模块500,用于:对检测到的敏感数据进行敏感分级,确定检测到的敏感数据的敏感级别。

在一个实施例中,钩子函数执行模块100还用于:当监测到应用程序通过内存释放函数进行内存释放事件时,执行预先加载在内存释放函数中的钩子函数;

内存块监测模块200还用于:通过内存释放函数中的钩子函数,识别应用程序在进行内存释放事件的过程中释放的内存块;

内存块处理模块300还用于:将应用程序释放的内存块从内存块列表中删除,得到更新的内存块列表。

本实施例提供一种敏感数据检测装置,通过在内存调用函数中预先加载钩子函数,当应用程序打开文件并进行内容解析时,需要通过内存调用函数进行内存调用,此时,通过钩子函数确定该应用程序所调用的内存块,将被调用的内存块更新至内存块列表,对更新的内存块列表中数据进行敏感数据识别。一方面,本申请无需对文件进行格式转换,另一方面,本申请通过内存块追踪可以快速确定需要进行识别的数据,从而可以提高敏感数据检测效率,且由于不受文件格式的限制,适用范围更广。

关于敏感数据检测装置的具体限定可以参见上文中对于敏感数据检测方法的限定,在此不再赘述。上述敏感数据检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述敏感数据检测方法的步骤。此处敏感数据检测方法的步骤可以是上述各个实施例的敏感数据检测方法中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述敏感数据检测方法的步骤。此处敏感数据检测方法的步骤可以是上述各个实施例的敏感数据检测方法中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1