一种敏感数据的检测方法及系统
文献发布时间:2024-04-18 19:58:21
技术领域
本发明属于敏感数据检测技术领域,尤其涉及一种敏感数据的检测方法及系统。
背景技术
企业在生产活动和经营管理中会产生大量有巨大价值的敏感数据,如果处理不当会导致数据安全事件的发生,对这些敏感数据进行有效的发现和及时脱敏是实现数据安全共享的前提。
传统的敏感数据识别方法通常更适用于静态数据,这些方法通常依赖于在数据存储或传输过程中应用的静态规则或模式匹配,更适用于静态数据的批处理或定期检查,通常难以应对实时数据的动态性,特别是对于具有生命周期的数据、实时变化的数据或流数据,通常不考虑数据的生命周期,对于那些在一段时间后变得不再敏感的数据,这可能会导致不必要的检测开销。
且传统方法对分散在不同文本或数据源中的敏感数据片段的检测会存在以下困难:可能会错过那些分散在不同文本或数据源中的敏感数据片段,因为这些片段通常不会以完整的形式出现,难以通过简单的匹配进行检测;且传统方法通常没有内置的机制来将分散的敏感数据片段重组成完整的敏感数据,这使得在分析和处理这些数据时变得更加困难;在分散的敏感数据片段中,上下文信息可能会丢失,这意味着难以理解敏感数据的含义和背后的故事,这在某些情况下可能导致误解或无法有效处理敏感数据。
发明内容
本发明提供一种敏感数据的检测方法及系统,旨在解决上述背景技术提到的问题。
本发明是这样实现的,提供一种敏感数据的检测方法,步骤包括:
定义敏感数据模式并构建模式库及模式映射表,其中,敏感数据模式包括完整的敏感数据模式和敏感数据片段模式,均包含相应的数据结构和属性,敏感数据片段模式的属性中存储有敏感数据片段模式的全局唯一标识符,模式映射表的信息包括敏感数据片段模式及其全局唯一标识符、关联的敏感数据片段模式及其全局唯一标识符、敏感数据片段之间的关系类型、及重组逻辑;
对不运行和运行时的目标应用程序分别进行静态分析及动态分析以分别获取静态潜在插桩点和动态潜在插桩点,并结合静态潜在插桩点和动态潜在插桩点确定目标插桩点;
在目标应用程序中,创建一个新的类,在新创建的类中定义一个包含插桩逻辑的方法,在插桩逻辑的方法中:接收来自各数据源的流动数据作为参数,遍历模式库中的各敏感数据模式来匹配检测流动数据中是否包含敏感数据,并根据敏感数据模式类型判断敏感数据属于完整的敏感数据还是敏感数据片段,若为敏感数据片段,则为敏感数据片段分配对应的全局唯一标识符及将标记了全局唯一标识符的敏感数据片段加入缓冲区,并在各敏感数据片段的生命周期内,在缓冲区中为各敏感数据片段进行匹配,再在组合区中调用模式映射表中的重组逻辑对匹配好的敏感数据片段进行关联重组以得到还原后完整的敏感数据;
将编写了插桩逻辑的类和方法的源代码编译为字节码,并插入到目标应用程序的目标插桩点中;
在目标应用程序运行时,通过目标插桩点中的插桩逻辑对数据流进行实时监控,当数据流通过目标插桩点时,通过目标插桩点中的插桩逻辑对数据流进行分析并对数据流中的敏感数据的存在情况进行检测及根据敏感数据的存在情况进行相应的数据处理;
若目标插桩点中的插桩逻辑检测到敏感数据,则触发告警机制,并对敏感数据进行脱敏处理。
更进一步的,所述将标记了全局唯一标识符的敏感数据片段加入缓冲区的步骤前还包括:
每检测到一个敏感数据片段后,在缓冲区为敏感数据片段分配一个初始化后的启动计时器的函数,其中,启动计时器的函数中创建了一个计时器对象及定义了一个计时器回调函数,计时器对象在触发时间后触发倒计时,在倒计时时间后时间归0,计时器回调函数中包含了计时器对象倒计时归0时的处理逻辑;
为检测到的敏感数据片段定义属性,所述属性包括数据属性、ID属性和时间属性,并将敏感数据片段的数据内容存储至数据属性中、敏感数据片段的全局唯一标识符存储至ID属性中、预设的触发时间及预设的倒计时时间存储至时间属性中,预设的触发时间设定为0,预设的倒计时时间为敏感数据片段的生命周期;
所述将标记了全局唯一标识符的敏感数据片段加入缓冲区的步骤包括:
提取敏感数据片段的数据属性、ID属性和时间属性,将敏感数据片段的数据属性及ID属性对应加入缓冲区的列表中,同时,将敏感数据片段的数据属性、ID属性和时间属性作为输入参数输入启动计时器的函数中,以使启动计时器的函数中的计时器对象在预设的触发时间后触发倒计时,并在预设的倒计时时间后归0。
更进一步的,所述在各敏感数据片段的生命周期内,在缓冲区中为各敏感数据片段进行匹配,再在组合区中调用模式映射表中的重组逻辑对匹配好的敏感数据片段进行关联重组以得到还原后完整的敏感数据的步骤包括:
在当前的敏感数据片段对应的计时器对象的时间归0前, 根据当前的敏感数据片段的ID属性从模式映射表中查找与当前的敏感数据片段关联的敏感数据片段的全局唯一标识符;
将关联的敏感数据片段的全局唯一标识符在当前的缓冲区的列表中进行一次遍历匹配,以查找当前的缓冲区的列表中是否存在ID属性与关联的敏感数据片段的全局唯一标识符相同的敏感数据片段;
若存在,则匹配成功,并将当前的敏感数据片段及匹配成功的敏感数据片段的数据属性和ID属性调取至组合区,同时将缓冲区的列表中当前的敏感数据片段及匹配成功的敏感数据片段的数据属性和ID属性进行删除,及对缓冲区中与敏感数据片段及匹配成功的敏感数据片段对应的启动计时器的函数进行初始化;
从模式映射表中获取对应的敏感数据片段之间的关系类型及重组逻辑,并在组合区中根据敏感数据片段之间的关系类型及重组逻辑对其进行关联重组以得到还原后完整的敏感数据。
更进一步的,所述将关联的敏感数据片段的全局唯一标识符在当前的缓冲区的列表中进行一次遍历匹配,以查找当前的缓冲区的列表中是否存在ID属性与关联的敏感数据片段的全局唯一标识符相同的敏感数据片段的步骤后还包括:
若不存在,则进行二次遍历或多次遍历或多次遍历,直至匹配成功或当前的敏感数据片段对应的计时器对象的时间归0,则停止匹配;
若停止匹配时仍匹配不成功,则将缓冲区的列表中当前的敏感数据片段的数据属性和ID属性进行删除,及对缓冲区中与当前的敏感数据片段对应的启动计时器的函数进行初始化。
更进一步的,所述在组合区中根据敏感数据片段之间的关系类型及重组逻辑对其进行关联重组以得到还原后完整的敏感数据的步骤包括:
若关系类型为链式关系,则确定关系属性为主要父节点的敏感数据片段及关系属性为子节点的敏感数据片段,并分别获取主要父节点的数据及子节点的数据;
从子节点的数据及主要父节点的数据中分别提取子关联字段和父关联字段;
将子关联字段与父关联字段进行关联以得到链式关系;
根据链式关系将子节点的数据连接到主要父节点的数据中以得到重组后的敏感数据。
更进一步的,所述对不运行和运行时的目标应用程序分别进行静态分析及动态分析以分别获取静态潜在插桩点和动态潜在插桩点,并结合静态潜在插桩点和动态潜在插桩点确定目标插桩点的步骤包括:
在目标应用程序不运行时,使用静态代码分析工具对目标应用程序的源代码进行静态分析,以识别获取代码中的静态潜在插桩点,并对静态潜在插桩点进行标记,静态潜在插桩点为数据库查询、数据处理、文件读写或网络通信的关键点;
在目标应用程序运行时,通过在目标应用程序上运行动态分析工具,对目标应用程序的执行过程、目标应用程序运行时的数据流动进行跟踪分析,以识别数据流在不同方法之间传递经过的路径并捕获相应的路径上与敏感数据相关的操作点,作为动态潜在插桩点,并对动态潜在插桩点进行标记,与敏感数据相关的操作包括但不限于敏感数据的输入、输出、存储和传输;
识别获取被二次标记过的潜在插桩点,作为目标插桩点,以便在目标插桩点实时监控和处理流动数据中的敏感信息。
本发明还提供一种敏感数据的检测系统,用于执行敏感数据的检测方法,包括:
构建模块:用于定义敏感数据模式并构建模式库及模式映射表,其中,敏感数据模式包括完整的敏感数据模式和敏感数据片段模式,均包含相应的数据结构和属性,敏感数据片段模式的属性中存储有敏感数据片段模式的全局唯一标识符,模式映射表的信息包括敏感数据片段模式及其全局唯一标识符、关联的敏感数据片段模式及其全局唯一标识符、敏感数据片段之间的关系类型、及重组逻辑;
插桩点模块:用于对不运行和运行时的目标应用程序分别进行静态分析及动态分析以分别获取静态潜在插桩点和动态潜在插桩点,并结合静态潜在插桩点和动态潜在插桩点确定目标插桩点;
插桩逻辑模块:用于在目标应用程序中,创建一个新的类,在新创建的类中定义一个包含插桩逻辑的方法,在插桩逻辑的方法中:接收来自各数据源的流动数据作为参数,遍历模式库中的各敏感数据模式来匹配检测流动数据中是否包含敏感数据,并根据敏感数据模式类型判断敏感数据属于完整的敏感数据还是敏感数据片段,若为敏感数据片段,则为敏感数据片段分配对应的全局唯一标识符及将标记了全局唯一标识符的敏感数据片段加入缓冲区,并在各敏感数据片段的生命周期内,在缓冲区中为各敏感数据片段进行匹配,再在组合区中调用模式映射表中的重组逻辑对匹配好的敏感数据片段进行关联重组以得到还原后完整的敏感数据;
插入模块:用于将编写了插桩逻辑的类和方法的源代码编译为字节码,并插入到目标应用程序的目标插桩点中;
检测模块:用于在目标应用程序运行时,通过目标插桩点中的插桩逻辑对数据流进行实时监控,当数据流通过目标插桩点时,通过目标插桩点中的插桩逻辑对数据流进行分析并对数据流中的敏感数据的存在情况进行检测及根据敏感数据的存在情况进行相应的数据处理;
脱敏模块:用于若目标插桩点中的插桩逻辑检测到敏感数据,则触发告警机制,并对敏感数据进行脱敏处理。
本发明的有益效果在于,与现有技术相比,本发明的敏感数据的检测方法及系统,通过在静态和动态综合分析获取的插桩点上插入插桩逻辑进行插桩检测,不仅能够对目标应用程序运行时的数据流进行实时监控,从而及时检测到敏感数据的存在,还能够根据应用程序的实际执行情况而实时执行插桩逻辑,检测灵活,适用于动态变化的应用程序环境,可以更准确地捕获和分析敏感数据。且监测流动的数据能够发现数据的很多上下文信息,如数据源、数据类型、数据流向、有效时间周期内的关联数据,从而能够有助于捕获有效时间周期内关联的敏感数据片段。通过自定义的插桩逻辑与模式库和模式映射表的交互,能够对各类敏感数据进行检测,如完整的敏感数据及分拆的敏感数据片段,并能够将分散在不同数据源中的敏感数据片段在数据的生命周期内进行有效关联和重组,还原成完整的敏感数据,以确保敏感数据的完整性和时效性,这对于有时效的分散数据的分析和处理非常有用。
附图说明
图1是本发明提供的敏感数据的检测方法的流程示意图;
图2是本发明提供的敏感数据的检测系统的系统框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一
参考图1,实施例一提供一种敏感数据的检测方法,包括步骤S101~ S106:
S101,定义敏感数据模式并构建模式库及模式映射表,其中,敏感数据模式包括完整的敏感数据模式和敏感数据片段模式,均包含相应的数据结构和属性,敏感数据片段模式的属性中存储有敏感数据片段模式的全局唯一标识符,模式映射表的信息包括敏感数据片段模式及其全局唯一标识符、关联的敏感数据片段模式及其全局唯一标识符、敏感数据片段之间的关系类型、及重组逻辑。
需要说明的是,模式库及模式映射表的构建为后续的插桩逻辑和检测提供了依据,允许系统在运行时实时监测数据流,并根据模式库和模式映射表中的信息来检测和重组敏感数据。
定义敏感数据模式,是为了明确定义敏感数据的结构和属性,敏感数据模式可以分为两种类型:完整的敏感数据模式和敏感数据片段模式。完整的敏感数据模式描述了完整的敏感数据对象的结构,包括数据字段、数据类型、数据格式等信息。敏感数据片段模式用于描述敏感数据的部分片段,包含了片段的结构以及相应的属性,如全局唯一标识符,这些模式的定义应该详细描述敏感数据的结构和属性,以便后续的检测和重组。
一旦敏感数据模式定义好,再将这些模式保存在一个集合中,模式库是一个存储敏感数据模式的仓库,用于后续的匹配和检测工作,在模式库中,完整的敏感数据模式和敏感数据片段模式都可以被存储,以便后续的匹配和比对。
模式映射表用于存储关联不同敏感数据片段模式之间的信息,包含了:敏感数据片段模式及其全局唯一标识符:用于唯一标识不同的敏感数据片段模式;关联的敏感数据片段模式及其全局唯一标识符:描述了不同敏感数据片段模式之间的关联关系,如父子关系、链式关系等;关系类型:定义了不同敏感数据片段模式之间的关系类型,这有助于后续的重组逻辑;重组逻辑:描述了如何根据关联关系重组这些敏感数据片段以还原完整的敏感数据。
S102,对不运行和运行时的目标应用程序分别进行静态分析及动态分析以分别获取静态潜在插桩点和动态潜在插桩点,并结合静态潜在插桩点和动态潜在插桩点确定目标插桩点。
需要说明的是,这一步骤旨在为插桩逻辑的实施提供目标插桩点,涉及静态分析和动态分析两个方面,以确保有效的敏感数据检测和重组。以下是详细的分析:
静态分析是在不运行目标应用程序的情况下对其进行分析,静态分析的目标是发现潜在的插桩点,这些插桩点在代码中静态地具有敏感数据操作或数据流传输的特征,这些特征可能包括特定函数调用、数据处理操作、条件分支等,静态分析有助于提前确定可能的插桩点。
动态分析是在目标应用程序运行时对其进行分析,这包括在实际运行时监视应用程序的执行,以识别潜在的插桩点。动态分析通常涉及跟踪数据流、函数调用、代码执行路径等,以便找到与敏感数据相关的动态行为,动态分析有助于确定实际运行时的插桩点。
在这里静态分析和动态分析结合使用,能够确保完整地覆盖可能的插桩点,确保了目标插桩点的准确性和有效性,以便系统能够实时准确监测数据流,检测敏感数据,进行记录和重组。静态分析提供了理论上的潜在插桩点,而动态分析验证了这些点是否在实际运行中确实与敏感数据的操作相关,通过结合两者的信息,可以确定最终的目标插桩点列表。整个过程的关键是确保插桩点能够涵盖敏感数据的处理操作,这样系统可以在运行时对数据进行实时监测和重组,从而提高数据的安全性。
结合静态和动态信息后,确定目标插桩点,这些插桩点将用于实施插桩逻辑,实时监测数据流并进行敏感数据的检测和重组,插桩点通常包括在敏感数据处理操作的周围,以确保在敏感数据进出应用程序时进行检测。
其中,所述对不运行和运行时的目标应用程序分别进行静态分析及动态分析以分别获取静态潜在插桩点和动态潜在插桩点,并结合静态潜在插桩点和动态潜在插桩点确定目标插桩点的步骤包括:
在目标应用程序不运行时,使用静态代码分析工具,对目标应用程序的源代码进行静态分析,以识别获取代码中的静态潜在插桩点,并对静态潜在插桩点进行标记,静态潜在插桩点为数据库查询、数据处理、文件读写或网络通信的关键点;
在目标应用程序运行时,通过在目标应用程序上运行动态分析工具,对目标应用程序的执行过程、目标应用程序运行时的数据流动进行跟踪分析,以识别数据流在不同方法之间传递经过的路径并捕获相应的路径上与敏感数据相关的操作点,作为动态潜在插桩点,并对动态潜在插桩点进行标记,与敏感数据相关的操作包括但不限于敏感数据的输入、输出、存储和传输;
识别获取被二次标记过的潜在插桩点,作为目标插桩点,以便在目标插桩点实时监控和处理流动数据中的敏感信息。
需要说明的是,这个步骤详细描述了如何获取目标插桩点,整个过程的关键是确保插桩点能够涵盖与敏感数据处理相关的操作,这样插桩逻辑可以在运行时对数据进行实时监测和重组,提高数据的安全性。静态和动态分析的结合是为了确保插桩点的有效性和准确性。
在目标应用程序不运行时,使用静态代码分析工具,例如静态分析器或反编译器,对目标应用程序的源代码进行分析,目标是在源代码中识别潜在的静态插桩点,这些点是与敏感数据处理相关的代码段,这可能涵盖了数据库查询、数据处理、文件读写或网络通信等关键操作。
在目标应用程序运行时,使用动态分析工具,如调试器或代码执行跟踪器,对应用程序的执行过程进行跟踪分析,动态分析旨在在实际运行时监视应用程序的执行,以便捕获与敏感数据相关的动态行为,这包括数据流在不同方法之间传递经过的路径的跟踪,并捕获在这些路径上与敏感数据相关的操作点。
结合静态和动态分析的结果,以识别被二次标记过的潜在插桩点,这些点既在静态分析中标记过又在动态分析中验证为与敏感数据相关。这个过程确保了插桩点的准确性和有效性,因为它们在代码中静态存在并且在运行时被动态验证。
识别和获取这些被二次标记过的潜在插桩点,这些点将被用作目标插桩点,目标插桩点将用于实施插桩逻辑,以实时监控数据流并进行敏感数据的检测和重组,这些插桩点通常位于敏感数据操作的周围,以确保在敏感数据进出应用程序时进行检测。
S103,在目标应用程序中,创建一个新的类,在新创建的类中定义一个包含插桩逻辑的方法,在插桩逻辑的方法中:接收来自各数据源的流动数据作为参数,遍历模式库中的各敏感数据模式来匹配检测流动数据中是否包含敏感数据,并根据敏感数据模式类型判断敏感数据属于完整的敏感数据还是敏感数据片段,若为敏感数据片段,则为敏感数据片段分配对应的全局唯一标识符及将标记了全局唯一标识符的敏感数据片段加入缓冲区,并在各敏感数据片段的生命周期内,在缓冲区中为各敏感数据片段进行匹配,再在组合区中调用模式映射表中的重组逻辑对匹配好的敏感数据片段进行关联重组以得到还原后完整的敏感数据。
需要说明的是,该步骤的目的是构建一个功能强大的数据检测和处理系统,可以处理各种来源的数据,将敏感数据识别并关联重组,以维护数据的安全性和完整性。插桩逻辑负责从各种数据源接收数据,执行敏感数据的检测和处理操作,以确保数据安全。通过根据模式匹配和数据类型的判断,可以将敏感数据片段标记并加入缓冲区,为后续的关联重组做好准备。模式映射表中的重组逻辑对匹配好的片段进行关联重组,以还原为完整的敏感数据。这一步骤是整个数据检测和处理过程的核心,确保敏感数据的实时监测和处理。
在目标应用程序中创建一个新的类,该类用于实现插桩逻辑,在新类中定义一个包含插桩逻辑的方法,该方法用于接收来自各数据源的流动数据作为参数。方法接收来自不同数据源的流动数据,这可以包括用户输入、网络数据、文件读写等。插桩逻辑将这些数据传递到后续的处理步骤。
在插桩逻辑中,插桩代码会遍历模式库,模式库包含了敏感数据模式的定义,包括完整的敏感数据模式和敏感数据片段模式。对流动数据进行模式匹配,以检测数据中是否包含敏感数据。插桩逻辑会根据敏感数据模式类型来判断流动数据是否属于完整的敏感数据或敏感数据片段。这一步是为了区分数据是否需要进一步的处理,如果是敏感数据片段,将执行下一步操作。
如果流动数据被判断为敏感数据片段,插桩逻辑会分配相应的全局唯一标识符(GUID)来标记这个敏感数据片段,并将它加入缓冲区。缓冲区用于存储这些敏感数据片段,以便稍后可以与关联的片段进行匹配。插桩逻辑会在缓冲区中为各敏感数据片段进行匹配,查找是否存在关联的敏感数据片段。这是为了找到与之相关的片段,以便后续的关联重组。
最后,插桩逻辑将在组合区中调用模式映射表中的重组逻辑。模式映射表包括了敏感数据片段模式及其全局唯一标识符、关联的敏感数据片段模式及其全局唯一标识符、敏感数据片段之间的关系类型、及重组逻辑。根据模式映射表中定义的重组逻辑,匹配好的敏感数据片段将被关联重组以得到还原后的完整的敏感数据。
其中,所述将标记了全局唯一标识符的敏感数据片段加入缓冲区的步骤前还包括:
每检测到一个敏感数据片段后,在缓冲区为敏感数据片段分配一个初始化后的启动计时器的函数,其中,启动计时器的函数中创建了一个计时器对象及定义了一个计时器回调函数,计时器对象在触发时间后触发倒计时,在倒计时时间后时间归0,计时器回调函数中包含了计时器对象倒计时归0时的处理逻辑;
为检测到的敏感数据片段定义属性,所述属性包括数据属性、ID属性和时间属性,并将敏感数据片段的数据内容存储至数据属性中、敏感数据片段的全局唯一标识符存储至ID属性中、预设的触发时间及预设的倒计时时间存储至时间属性中,预设的触发时间设定为0,预设的倒计时时间为敏感数据片段的生命周期;
所述将标记了全局唯一标识符的敏感数据片段加入缓冲区的步骤包括:
提取敏感数据片段的数据属性、ID属性和时间属性,将敏感数据片段的数据属性及ID属性对应加入缓冲区的列表中,同时,将敏感数据片段的数据属性、ID属性和时间属性作为输入参数输入启动计时器的函数中,以使启动计时器的函数中的计时器对象在预设的触发时间后触发倒计时,并在预设的倒计时时间后归0。
需要说明的是,这个步骤的目的是在检测到敏感数据片段后,为每个片段分配一个独立的计时器函数,确保了每个片段的生命周期可以独立地被管理,在敏感数据片段加入缓冲区时触发,在敏感数据片段的生命周期结束时归0,在这段计时器的倒计时时间内便于后续对敏感数据片段进行生命周期内的配对,配对成功,则能够重组为有效且完整的敏感数据,配对不成功,则及时删除缓冲区中的敏感数据片段,以确保在敏感数据片段的生命周期结束后,相应的数据被从缓冲区中删除,以释放资源并确保数据管理的安全高效性。
每当检测到一个敏感数据片段时,为该片段分配一个独立的启动计时器的函数,这个函数的目的是在特定的触发时间后触发,这里设定为0,即敏感数据片段加入缓冲区时便立即出发,预设的倒计时时间(敏感数据片段的生命周期)后计时器便归0。
在启动计时器的函数内部,创建有一个计时器对象。这个计时器对象是用于管理计时的工具,通常由开发环境或编程语言提供。
还定义了一个回调函数,这个回调函数包含了计时器倒计时归0时应该执行的处理逻辑,如删除缓冲区中的相关敏感数据片段。
计时器对象需要设置触发时间,这里是加入缓冲区时,由于在检测到敏感数据片段后便立即加入缓冲区,即在检测到敏感数据片段后,预设的触发时间为0,便立即触发计时器。
为了确保在敏感数据片段的生命周期结束后将缓冲区中失效的敏感数据片段删除,计时器对象的倒计时时间通常被设置为敏感数据片段的生命周期。这样,当倒计时时间达到时,计时器将触发回调函数,将缓冲区中失效的敏感数据片段删除。这种设置可以有效地管理缓冲区,以及释放存储资源,确保不会在数据的生命周期结束后继续保留这些数据,这对于高效地处理敏感数据片段非常重要。
在将标记了全局唯一标识符的敏感数据片段加入缓冲区之前,提取相关的数据属性、ID属性和时间属性,这些属性包括了敏感数据片段的内容、全局唯一标识符、触发时间和倒计时时间。将这些属性作为输入参数传递给启动计时器的函数,确保了计时器对象能够正确设置触发时间和倒计时时间。
进一步,所述在各敏感数据片段的生命周期内,在缓冲区中为各敏感数据片段进行匹配,再在组合区中调用模式映射表中的重组逻辑对匹配好的敏感数据片段进行关联重组以得到还原后完整的敏感数据的步骤包括:
在当前的敏感数据片段对应的计时器对象的时间归0前, 根据当前的敏感数据片段的ID属性从模式映射表中查找与当前的敏感数据片段关联的敏感数据片段的全局唯一标识符;
将关联的敏感数据片段的全局唯一标识符在当前的缓冲区的列表中进行一次遍历匹配,以查找当前的缓冲区的列表中是否存在ID属性与关联的敏感数据片段的全局唯一标识符相同的敏感数据片段;
若存在,则匹配成功,并将当前的敏感数据片段及匹配成功的敏感数据片段的数据属性和ID属性调取至组合区,同时将缓冲区的列表中当前的敏感数据片段及匹配成功的敏感数据片段的数据属性和ID属性进行删除,及对缓冲区中与敏感数据片段及匹配成功的敏感数据片段对应的启动计时器的函数进行初始化;
从模式映射表中获取对应的敏感数据片段之间的关系类型及重组逻辑,并在组合区中根据敏感数据片段之间的关系类型及重组逻辑对其进行关联重组以得到还原后完整的敏感数据。
需要说明的是,这个步骤的目的是为了在当前的敏感数据片段对应的计时器对象的时间归0之前,即在敏感数据片段的生命周期内,根据敏感数据片段之间的关系,以及重组逻辑,将匹配成功的敏感数据片段进行关联重组,从而得到还原后的完整敏感数据,从而确保敏感数据的完整性和及时有效性,这在某些应用场景中非常重要。以医疗系统为例,在医疗系统中,敏感数据可能分布在多个数据片段中,不同的传感设备可能会生成不同类型的数据,例如患者的生命体征、药物记录、实验室测试结果等,为了能够获得全面的患者信息以支持医疗决策,需要将这些分散的敏感数据片段重组为完整的患者记录。同时需要实时监控患者的生命体征,以及对异常情况做出及时响应,如果数据片段未及时重组,可能导致监控不准确,延误了医疗护理。
从模式映射表中,使用当前敏感数据片段的ID属性,查找与当前敏感数据片段关联的其他敏感数据片段的全局唯一标识符,这些标识符用来指示哪些敏感数据片段是相关的。
将关联的敏感数据片段的全局唯一标识符与缓冲区的列表中的敏感数据片段进行一次遍历匹配,目标是查找缓冲区的列表中是否存在ID属性与关联的敏感数据片段的全局唯一标识符相同的敏感数据片段。
若存在,则匹配成功,即在缓冲区中找到了关联的敏感数据片段,执行以下操作:
将当前的敏感数据片段及匹配成功的敏感数据片段的数据属性和ID属性调取至组合区。并删除缓冲区的列表中当前的敏感数据片段及匹配成功的敏感数据片段,以确保它们不会被多次处理。
对缓冲区中与当前的敏感数据片段及匹配成功的敏感数据片段对应的启动计时器的函数进行初始化,这是为了后续为这些计时器重新分配新检测到的敏感数据片段,以进行下一轮的匹配和处理。
从模式映射表中获取当前敏感数据片段与关联敏感数据片段之间的关系类型以及重组逻辑,这些信息包含了如何根据相应的关系类型将相关片段重组为完整的敏感数据的操作逻辑。
根据敏感数据片段之间的关系类型和重组逻辑,在组合区中执行关联重组,这可能涉及连接、合并、拼接或其他操作,具体取决于关系类型和重组逻辑,最终,还原后的完整敏感数据可从组合区中提取使用。
进一步,所述将关联的敏感数据片段的全局唯一标识符在当前的缓冲区的列表中进行一次遍历匹配,以查找当前的缓冲区的列表中是否存在ID属性与关联的敏感数据片段的全局唯一标识符相同的敏感数据片段的步骤后还包括:
若不存在,则进行二次遍历或多次遍历,直至匹配成功或当前的敏感数据片段对应的计时器对象的时间归0,则停止匹配;
若停止匹配时仍匹配不成功,则将缓冲区的列表中当前的敏感数据片段的数据属性和ID属性进行删除,及对缓冲区中与当前的敏感数据片段对应的启动计时器的函数进行初始化。
需要说明的是,在倒计时时间内,如果对缓冲区的列表的一次遍历没有找到匹配的关联的敏感数据片段,则可以进行二次遍历甚至多次遍历,直至匹配成功或当前的敏感数据片段对应的计时器对象的时间归0,则停止匹配,关联的敏感数据片段的出现有时不是完全同步的,可能稍有时间差,但只要它们在各自的生命周期内匹配并进行关联重组,那么重组得到的完整的敏感数据仍然有效。这种处理方式能够应对实际应用中出现的时间差异或不完全同步的情况,确保数据完整性和有效性,在一些应用中,特别是需要实时数据分析和重组的场景,这种机制非常重要,因为数据可能不会同时出现,但最终需要以正确的方式重组以满足分析和处理的需求。
进一步,所述在组合区中根据敏感数据片段之间的关系类型及重组逻辑对其进行关联重组以得到还原后完整的敏感数据的步骤包括:
若关系类型为链式关系,则确定关系属性为主要父节点的敏感数据片段及关系属性为子节点的敏感数据片段,并分别获取主要父节点的数据及子节点的数据;
从子节点的数据及主要父节点的数据中分别提取子关联字段和父关联字段;
将子关联字段与父关联字段进行关联以得到链式关系;
根据链式关系将子节点的数据连接到主要父节点的数据中以得到重组后的敏感数据。
需要说明的是,这种链式关系通常在数据的父子关系中使用,例如订单和订单项之间的关系,订单是主要父节点,而订单项是子节点。
对于其他关系类型,例如树状关系、并行关系等,处理方式会有所不同,具体取决于关系类型和重组逻辑。如果敏感数据片段之间存在树状关系,那么主要父节点可能会有多个子节点,在这种情况下,重组逻辑需要考虑如何将多个子节点连接到主要父节点,以还原完整的数据。如果敏感数据片段之间是并行关系,每个节点都可能是同级的。重组逻辑需要处理如何并行连接这些节点,以还原完整的数据。
不同的关系类型需要不同的逻辑来进行关联重组,以确保敏感数据的完整性,这也取决于应用程序中数据的实际结构和关系。
S104,将编写了插桩逻辑的类和方法的源代码编译为字节码,并插入到目标应用程序的目标插桩点中。
需要说明的是,在编写了插桩逻辑的类和方法后,通过这些类和方法中的插桩逻辑监控数据流、检测敏感数据以及处理发现的敏感数据。
源代码包含插桩逻辑的类和方法必须被编译成字节码,字节码是一种中间表示形式,可以在Java虚拟机(JVM)上执行。
编译后的字节码必须被插入到目标应用程序的目标插桩点中,这通常需要修改目标应用程序的字节码或类文件,以便在运行时注入插桩逻辑。
S105,在目标应用程序运行时,通过目标插桩点中的插桩逻辑对数据流进行实时监控,当数据流通过目标插桩点时,通过目标插桩点中的插桩逻辑对数据流进行分析并对数据流中的敏感数据的存在情况进行检测及根据敏感数据的存在情况进行相应的数据处理。
需要说明的是,目标应用程序开始运行,插桩逻辑随之被激活。当数据流通过目标插桩点时,插桩逻辑开始监控数据流,这可以是用户输入、数据库查询、文件读写、网络通信等。
插桩逻辑对数据流进行分析,并检测数据中是否包含敏感信息,这通常涉及与模式库和模式映射表的交互,以识别敏感数据和其类型,及对识别到的敏感数据片段进行关联重组等操作。
S106,若目标插桩点中的插桩逻辑检测到敏感数据,则触发告警机制,并对敏感数据进行脱敏处理。
需要说明的是,如果插桩逻辑检测到敏感数据,它会触发告警机制。这可以包括生成警报、日志记录、发送通知或其他安全措施。
根据检测到的敏感数据的存在情况,插桩逻辑可能需要采取进一步的行动,可能包括数据脱敏处理,以确保敏感数据不会泄漏,脱敏可以是对数据进行加密、替代、删除等处理。
本发明的敏感数据的检测方法,通过在静态和动态综合分析获取的插桩点上插入插桩逻辑进行插桩检测,不仅能够对目标应用程序运行时的数据流进行实时监控,从而及时检测到敏感数据的存在,还能够根据应用程序的实际执行情况而实时执行插桩逻辑,检测灵活,适用于动态变化的应用程序环境,可以更准确地捕获和分析敏感数据。且监测流动的数据能够发现数据的很多上下文信息,如数据源、数据类型、数据流向、有效时间周期内的关联数据,从而能够有助于捕获有效时间周期内关联的敏感数据片段。通过自定义的插桩逻辑与模式库和模式映射表的交互,能够对各类敏感数据进行检测,如完整的敏感数据及分拆的敏感数据片段,并能够将分散在不同数据源中的敏感数据片段在数据的生命周期内进行有效关联和重组,还原成完整的敏感数据,以确保敏感数据的完整性和时效性,这对于有时效的分散数据的分析和处理非常有用。
实施例二
参考图2,实施例二提供一种敏感数据的检测系统,包括:
构建模块:用于定义敏感数据模式并构建模式库及模式映射表,其中,敏感数据模式包括完整的敏感数据模式和敏感数据片段模式,均包含相应的数据结构和属性,敏感数据片段模式的属性中存储有敏感数据片段模式的全局唯一标识符,模式映射表的信息包括敏感数据片段模式及其全局唯一标识符、关联的敏感数据片段模式及其全局唯一标识符、敏感数据片段之间的关系类型、及重组逻辑;
插桩点模块:用于对不运行和运行时的目标应用程序分别进行静态分析及动态分析以分别获取静态潜在插桩点和动态潜在插桩点,并结合静态潜在插桩点和动态潜在插桩点确定目标插桩点;
插桩逻辑模块:用于在目标应用程序中,创建一个新的类,在新创建的类中定义一个包含插桩逻辑的方法,在插桩逻辑的方法中:接收来自各数据源的流动数据作为参数,遍历模式库中的各敏感数据模式来匹配检测流动数据中是否包含敏感数据,并根据敏感数据模式类型判断敏感数据属于完整的敏感数据还是敏感数据片段,若为敏感数据片段,则为敏感数据片段分配对应的全局唯一标识符及将标记了全局唯一标识符的敏感数据片段加入缓冲区,并在各敏感数据片段的生命周期内,在缓冲区中为各敏感数据片段进行匹配,再在组合区中调用模式映射表中的重组逻辑对匹配好的敏感数据片段进行关联重组以得到还原后完整的敏感数据;
插入模块:用于将编写了插桩逻辑的类和方法的源代码编译为字节码,并插入到目标应用程序的目标插桩点中;
检测模块:用于在目标应用程序运行时,通过目标插桩点中的插桩逻辑对数据流进行实时监控,当数据流通过目标插桩点时,通过目标插桩点中的插桩逻辑对数据流进行分析并对数据流中的敏感数据的存在情况进行检测及根据敏感数据的存在情况进行相应的数据处理;
脱敏模块:用于若目标插桩点中的插桩逻辑检测到敏感数据,则触发告警机制,并对敏感数据进行脱敏处理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
- 一种智能化自适应敏感数据识别系统及方法
- 一种烹饪器具、一种检测方法及一种检测系统
- 一种用于智能叉车臂故障的检测系统、检测方法及其处理方法
- 一种用于检测用户睡眠状态的检测系统及检测方法
- 一种电源车升压转换快速检测系统、检测方法及检测设备
- 一种敏感数据检测系统及其检测方法
- 一种基于大数据的敏感数据还原检测的方法与系统