数据保护方法、装置及设备转让专利

申请号 : CN202311427612.4

文献号 : CN117235686B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王滨张峰杨天罡万里何承润李超豪周少鹏

申请人 : 杭州海康威视数字技术股份有限公司

摘要 :

本申请提供一种数据保护方法、装置及设备,该方法包括:在目标业务代码运行过程中,对内核应用程序编程接口API的调用进行监测,获取第一时间段内的第一内核API调用序列;对所述第一内核API调用序列进行数据片划分,得到多个数据片;将所述多个数据片输入到训练好的目标算法模型,确定所述多个数据片中目标数据片的比例;在所述多个数据片中目标数据片的比例小于符合度阈值的情况下,确定所述目标业务代码当前的运行环境与指定运行环境不一致,终止所述目标业务代码的运行。该方法可以减少目标业务代码的滥用。(56)对比文件吴绍梅.Android应用程序源代码分析与运行时安全防御技术研究《.中国优秀硕士学位论文全文数据库 信息科技辑》.2014,(第4期),第I138-64页.Huozhu Wang 等.An Effective Approachfor Malware Detection and Explanation viaDeep Learning Analysis《.2021International Joint Conference on NeuralNetworks (IJCNN)》.2021,第1-10页.

权利要求 :

1.一种数据保护方法,其特征在于,包括:

在目标业务代码运行过程中,对内核应用程序编程接口API的调用进行监测,获取第一时间段内的第一内核API调用序列;所述第一内核API调用序列包括多个内核API调用节点,一个内核API调用节点对应一次内核API调用;

对所述第一内核API调用序列进行数据片划分,得到多个数据片;

将所述多个数据片输入到训练好的目标算法模型,确定所述多个数据片中目标数据片的比例;其中,对于任一目标数据片,该目标数据片输入到所述目标算法模型后得到的输出数据与该目标数据片之间的相似度超过第一相似度阈值;所述目标算法模型通过对第二内核API调用序列进行数据片划分,并利用划分得到的数据片进行训练;所述第二内核API调用序列为所述目标业务代码在指定运行环境中运行的过程中获取到的第二时间段内的内核API调用序列;对所述第二内核API调用序列进行数据片划分的方式与对所述第一内核API调用序列进行数据片划分的方式相同;所述指定运行环境为软件提供方确定的业务代码的运行环境;

在所述多个数据片中目标数据片的比例小于符合度阈值的情况下,确定所述目标业务代码当前的运行环境与指定运行环境不一致,终止所述目标业务代码的运行;其中,所述目标业务代码当前的运行环境为不受控的运行环境;

在所述多个数据片中目标数据片的比例大于符合度阈值的情况下,所述方法还包括:通过修改系统配置,以新的shell控制程序替换操作系统原始的shell控制界面;其中,在登录所述新的shell控制程序的情况下,无法对操作系统文件进行访问;

在用户使用安全外壳SSH协议成功登录所述新的shell控制程序,且检测到调试指令的情况下,依据所述目标业务代码当前的运行环境的硬件信息以及时间戳,生成设备特征码;

依据所述设备特征码从云服务平台获取远程登录口令,并依据所述远程登录口令进入所述操作系统原始的shell控制界面。

2.根据权利要求1所述的方法,其特征在于,所述目标算法模型通过以下方式训练:在所述目标业务代码在指定运行环境中运行的过程中,获取所述第二时间段内的第二内核API调用序列;

对所述第二内核API调用序列进行数据片划分,并按比例将得到的数据片划分为训练集和测试集;

利用所述训练集对目标算法模型进行迭代训练,直至所述测试集中各数据片与对应的输出数据之间的相似度满足预设条件,和/或,训练轮次达到预设最大轮次。

3.根据权利要求2所述的方法,其特征在于,所述第一相似度阈值为训练完成情况下所述测试集中各数据片与对应的输出数据之间的相似度的均值。

4.根据权利要求1所述的方法,其特征在于,内核API调用节点包括内核API调用时间以及被调用的内核API的标识信息;

对内核API调用序列进行数据片划分的方式,包括:

按照内核API调用节点的数量、内核API调用时间,以及,内核API调用时间之间的时间间隔中的至少一个,对内核API调用序列进行数据片划分。

5.根据权利要求1所述的方法,其特征在于,所述在目标业务代码运行过程中,所述对内核应用程序编程接口API的调用进行监测,获取第一时间段内的第一内核API调用序列之前,还包括:对所述目标业务代码当前的运行环境进行静态运行环境指纹提取,得到待验证静态运行环境指纹;其中,静态运行环境指纹包括指定硬件信息和/或指定软件信息;

在所述待验证静态运行环境指纹与目标静态运行环境指纹匹配不成功的情况下,终止所述目标业务代码的运行;其中,所述目标静态运行环境指纹通过所述目标业务代码在指定运行环境中运行的过程中提取得到。

6.一种数据保护装置,其特征在于,包括:

获取单元,用于在目标业务代码运行过程中,对内核应用程序编程接口API的调用进行监测,获取第一时间段内的第一内核API调用序列;所述第一内核API调用序列包括多个内核API调用节点,一个内核API调用节点对应一次内核API调用;

划分单元,用于对所述第一内核API调用序列进行数据片划分,得到多个数据片;

确定单元,用于将所述多个数据片输入到训练好的目标算法模型,确定所述多个数据片中目标数据片的比例;其中,对于任一目标数据片,该目标数据片输入到所述目标算法模型后得到的输出数据与该目标数据片之间的相似度超过第一相似度阈值;所述目标算法模型通过对第二内核API调用序列进行数据片划分,并利用划分得到的数据片进行训练;所述第二内核API调用序列为所述目标业务代码在指定运行环境中运行的过程中获取到的第二时间段内的内核API调用序列;对所述第二内核API调用序列进行数据片划分的方式与对所述第一内核API调用序列进行数据片划分的方式相同;所述指定运行环境为软件提供方确定的业务代码的运行环境;

控制单元,用于在所述多个数据片中目标数据片的比例小于符合度阈值的情况下,确定所述目标业务代码当前的运行环境与指定运行环境不一致,终止所述目标业务代码的运行;其中,所述目标业务代码当前的运行环境为不受控的运行环境;

所述控制单元,还用于在所述多个数据片中目标数据片的比例大于符合度阈值的情况下,通过修改系统配置,以新的shell控制程序替换操作系统原始的shell控制界面;其中,在登录所述新的shell控制程序的情况下,无法对操作系统文件进行访问;

在用户使用安全外壳SSH协议成功登录所述新的shell控制程序,且检测到调试指令的情况下,依据所述目标业务代码当前的运行环境的硬件信息以及时间戳,生成设备特征码;

依据所述设备特征码从云服务平台获取远程登录口令,并依据所述远程登录口令进入所述操作系统原始的shell控制界面。

7.根据权利要求6所述的装置,其特征在于,所述目标算法模型通过以下方式训练:在所述目标业务代码在指定运行环境中运行的过程中,获取所述第二时间段内的第二内核API调用序列;

对所述第二内核API调用序列进行数据片划分,并按比例将得到的数据片划分为训练集和测试集;

利用所述训练集对目标算法模型进行迭代训练,直至所述测试集中各数据片与对应的输出数据之间的相似度满足预设条件,和/或,训练轮次达到预设最大轮次;

其中,所述第一相似度阈值为训练完成情况下所述测试集中各数据片与对应的输出数据之间的相似度的均值。

8.根据权利要求6所述的装置,其特征在于,内核API调用节点包括内核API调用时间以及被调用的内核API的标识信息;

对内核API调用序列进行数据片划分的方式,包括:

按照内核API调用节点的数量、内核API调用时间,以及,内核API调用时间之间的时间间隔中的至少一个,对内核API调用序列进行数据片划分;

和/或,

所述获取单元在目标业务代码运行过程中,所述对内核应用程序编程接口API的调用进行监测,获取第一时间段内的第一内核API调用序列之前,还包括:对所述目标业务代码当前的运行环境进行静态运行环境指纹提取,得到待验证静态运行环境指纹;其中,静态运行环境指纹包括指定硬件信息和/或指定软件信息;

所述控制单元,还用于在所述待验证静态运行环境指纹与目标静态运行环境指纹匹配不成功的情况下,终止所述目标业务代码的运行;其中,所述目标静态运行环境指纹通过所述目标业务代码在指定运行环境中运行的过程中提取得到。

9.一种电子设备,其特征在于,包括处理器和存储器,其中,

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现权利要求1 5任一项所述的方法。

~

说明书 :

数据保护方法、装置及设备

技术领域

[0001] 本申请涉及网络安全技术领域,尤其涉及一种数据保护方法、装置及设备。

背景技术

[0002] 在系统开发过程中,通常会面临三方合作场景,即与第三方进行合作开发,将功能代码迁移到其他指定产品中进行运行,这个过程第三方可能会滥用软件代码,即不仅在指定产品中运行软件,还在其他产品中搭载并运行功能代码。
[0003] 如何减少软件代码被滥用的情况发生成为亟待解决的技术问题。

发明内容

[0004] 有鉴于此,本申请提供一种数据保护方法、装置及设备。
[0005] 具体地,本申请是通过如下技术方案实现的:
[0006] 根据本申请实施例的第一方面,提供一种数据保护方法,包括:
[0007] 在目标业务代码运行过程中,对内核应用程序编程接口API的调用进行监测,获取第一时间段内的第一内核API调用序列;所述第一内核API调用序列包括多个内核API调用节点,一个内核API调用节点对应一次内核API调用;
[0008] 对所述第一内核API调用序列进行数据片划分,得到多个数据片;
[0009] 将所述多个数据片输入到训练好的目标算法模型,确定所述多个数据片中目标数据片的比例;其中,对于任一目标数据片,该目标数据片输入到所述目标算法模型后得到的输出数据与该目标数据片之间的相似度超过第一相似度阈值;所述目标算法模型通过对第二内核API调用序列进行数据片划分,并利用划分得到的数据片进行训练;所述第二内核API调用序列为所述目标业务代码在指定运行环境中运行的过程中获取到的第二时间段内的内核API调用序列;对所述第二内核API调用序列进行数据片划分的方式与对所述第一内核API调用序列进行数据片划分的方式相同;
[0010] 在所述多个数据片中目标数据片的比例小于符合度阈值的情况下,确定所述目标业务代码当前的运行环境与指定运行环境不一致,终止所述目标业务代码的运行。
[0011] 根据本申请实施例的第二方面,提供一种数据保护装置,包括:
[0012] 获取单元,用于在目标业务代码运行过程中,对内核应用程序编程接口API的调用进行监测,获取第一时间段内的第一内核API调用序列;所述第一内核API调用序列包括多个内核API调用节点,一个内核API调用节点对应一次内核API调用;
[0013] 划分单元,用于对所述第一内核API调用序列进行数据片划分,得到多个数据片;
[0014] 确定单元,用于将所述多个数据片输入到训练好的目标算法模型,确定所述多个数据片中目标数据片的比例;其中,对于任一目标数据片,该目标数据片输入到所述目标算法模型后得到的输出数据与该目标数据片之间的相似度超过第一相似度阈值;所述目标算法模型通过对第二内核API调用序列进行数据片划分,并利用划分得到的数据片进行训练;所述第二内核API调用序列为所述目标业务代码在指定运行环境中运行的过程中获取到的第二时间段内的内核API调用序列;对所述第二内核API调用序列进行数据片划分的方式与对所述第一内核API调用序列进行数据片划分的方式相同;
[0015] 控制单元,用于在所述多个数据片中目标数据片的比例小于符合度阈值的情况下,确定所述目标业务代码当前的运行环境与指定运行环境不一致,终止所述目标业务代码的运行。
[0016] 根据本申请实施例的第三方面,提供一种电子设备,包括处理器和存储器,其中,[0017] 存储器,用于存放计算机程序;
[0018] 处理器,用于执行存储器上所存放的程序时,实现第一方面提供的方法。
[0019] 本申请实施例的数据保护方法,通过对目标业务代码在指定运行环境中运行的过程中的内核API调用情况进行监测,获取第二时间段内的第二内核API调用序列,并对第二内核API调用序列进行数据片划分,利用划分得到的数据片进行目标算法模型的训练,得到训练好的目标算法模型,通过目标算法模型学习目标业务代码在指定运行环境下运行过程中的内核API调用序列特征;进而,在目标业务代码运行过程中,对内核API的调用进行监测,获取第一时间段内的第一内核API调用序列,对第一内核API调用序列进行数据片划分,得到多个数据片,并将该多个数据片输入到训练好的算法模型,确定多个数据片中目标数据片的比例,在多个数据片中目标数据片的比例小于符合度阈值的情况下,确定目标业务代码当前的运行环境与指定运行环境不一致,终止目标业务代码的运行,通过依据目标业务代码运行过程中内核API调用序列特征对目标业务代码的运行环境进行识别,准确识别出目标业务代码在非指定运行环境下运行的情况,有效减少了目标业务代码的滥用。

附图说明

[0020] 图1为本申请一示例性实施例示出的一种数据保护方法的流程示意图;
[0021] 图2为本申请一示例性实施例示出的一种数据保护方法的流程示意图;
[0022] 图3为本申请一示例性实施例示出的一种基于自编码器的深度学习模型的示意图;
[0023] 图4为本申请一示例性实施例示出的一种数据保护装置的结构示意图;
[0024] 图5为本申请一示例性实施例示出的一种电子设备的硬件结构示意图。

具体实施方式

[0025] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0026] 在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
[0027] 为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面先对本申请实施例涉及的部分术语进行简单说明。
[0028] 1、数据保护:业务代码在不受控的硬件设备或其他环境中运行时,为了避免程序不会被滥用或盗取采取的一系列措施。
[0029] 2、内核API(Application Programming Interface,应用程序编程接口)调用(可以简称API调用):操作系统上所有的命令执行、任务执行最终都会转化为内核API的调用,在操作系统用户层执行具体的命令或服务(如查看系统时间、设置系统时间)在内核层面都会有固定的API序列按顺序执行。
[0030] 3、自编码器:一种无监督学习模型,其目标是将输入数据经过编码和解码的过程后尽可能地还原为原始输入。自编码器包括编码器和解码器,其中编码器将输入数据映射到一个较低维度的表示,解码器则将这个低维度表示映射回原始输入空间。
[0031] 为了使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
[0032] 请参见图1,为本申请实施例提供的一种数据保护方法的流程示意图,如图1所示,该数据保护方法可以包括以下步骤:
[0033] 步骤S100、在目标业务代码运行过程中,对内核API的调用进行监测,获取第一时间段内的第一内核API调用序列;所述第一内核API调用序列包括多个内核API调用节点,一个内核API调用节点对应一次内核API调用。
[0034] 本申请实施例中,目标业务代码并不特指某一固定的业务代码,而是可以指代任一需要进行数据保护的业务代码。
[0035] 目标业务代码运行强调的是目标业务代码在交付之后的运行,即在不受控(对于软件提供方而言不受控)的运行环境中运行。
[0036] 在目标业务代码运行过程中,可以对内核API的调用进行监测,依据预设时间段(可以称为第一时间段,具体时长可以根据实际需求设定,如1小时、1天等)内的内核API调用情况,确定第一时间段内的内核API调用序列(可以称为第一内核API调用序列)。
[0037] 示例性的,一个内核API调用序列可以包括多个内核API调用节点,一个内核API调用节点可以对应一次内核API调用。
[0038] 例如,可以在监测到内核API调用的情况下,依据内核API被调用的时间,以及,被调用的内核API的标识信息,生成对应的内核API调用节点。
[0039] 步骤S110、对第一内核API调用序列进行数据片划分,得到多个数据片。
[0040] 步骤S120、将多个数据片输入到训练好的目标算法模型,确定多个数据片中目标数据片的比例;其中,对于任一目标数据片,该目标数据片输入到目标算法模型后得到的输出数据与该目标数据片之间的相似度超过第一相似度阈值;目标算法模型通过对第二内核API调用序列进行数据片划分,并利用划分得到的数据片进行训练;第二内核API调用序列为目标业务代码在指定运行环境中运行的过程中获取到的第二时间段内的内核API调用序列;对第二内核API调用序列进行数据片划分的方式与对第一内核API调用序列进行数据片划分的方式相同。
[0041] 本申请实施例中,考虑到业务代码在受控运行环境(即软件提供方确定的业务代码的运行环境,可以称为指定运行环境)下运行的情况下,内核API调用序列通常具有较高的相似性。
[0042] 为了防止目标业务代码被滥用,可以基于内核API调用序列作为运行环境的动态指纹,对目标业务代码的运行环境进行检测,确定目标业务代码的运行环境是否属于指定运行环境。
[0043] 示例性的,可以在目标业务代码在指定运行环境中运行的过程中,进行内核API调用监测,获取预设时间段(可以称为第二时间段,具体时长可以根据实际需求设定,如1周、10天等)内的内核API调用序列(可以称为第二内核API调用序列),并对第二内核API调用序列进行数据片划分,利用划分得到的数据片进行目标算法模型的训练。
[0044] 示例性的,可以将多个数据片依次输入到训练好的目标算法模型,目标算法模型可以包括但不限于特征压缩与提取算法模型,其可以包括但不限于多重自编码器(Mutil‑Auto‑Encoder)模型或主成成分分析(Principal Component Analysis,简称PCA)算法模型等。
[0045] 示例性的,第二时间段的时长大于第一时间段的时长,即在训练的情况下,获取较长时间段内的内核API调用序列,以优化训练好的目标算法模型的性能,而将利用训练好的目标算法模型应用于数据保护的情况下,可以获取较短时间段内的内核API调用序列,以提高运行环境是否可靠的检测效率。
[0046] 通过按照上述方式对目标算法模型进行训练,可以使目标算法模型很好地学习目标业务代码在指定运行环境下运行的过程中内核API调用序列的特征。对于训练好的目标算法模型,在以目标业务代码在指定运行环境下运行的过程中内核API调用序列对应的数据片作为输入的情况下,目标算法模型的输入与输出的相似度会超过预设相似度阈值。
[0047] 相应地,对于第一内核API调用序列,可以对该第一内核API调用序列进行数据片划分,得到多个数据片。
[0048] 其中,对第一内核API调用序列进行数据片划分的方式与对第二内核API调用序列进行数据片划分的方式相同。
[0049] 示例性的,可以将对第一内核API调用序列进行数据片划分得到的多个数据片输入到训练好的目标算法模型,并确定该多个数据片中目标数据片的比例。
[0050] 示例性的,对于任一数据片,可以将该数据片输入到训练好的目标算法模型,并确定该目标算法模型的输出与该数据片之间的相似度。
[0051] 可以比较该相似度与预设相似度阈值(可以称为第一相似度阈值),在该相似度超过第一相似度阈值的情况下,将该数据片确定为目标数据片。
[0052] 进而,可以确定出对第一内核API调用序列进行数据片划分得到的多个数据片中的目标数据片的数量,并确定该数量与对第一内核API调用序列进行数据片划分得到数据片的总数的比值。
[0053] 步骤S130、在多个数据片中目标数据片的比例小于符合度阈值的情况下,确定目标业务代码当前的运行环境与指定运行环境不一致,终止目标业务代码的运行。
[0054] 本申请实施例中,在多个数据片中目标数据片的比例小于符合度阈值的情况下,可以确定目标业务代码当前的运行环境与指定运行环境不一致,如出现了目标业务代码在非指定产品中搭载并运行的情况,在该情况下,可以终止目标业务代码的运行,从而,可以有效防止目标业务代码被滥用。
[0055] 可见,在图1所示方法流程中,通过对目标业务代码在指定运行环境中运行的过程中的内核API调用情况进行监测,获取第二时间段内的第二内核API调用序列,并对第二内核API调用序列进行数据片划分,利用划分得到的数据片进行目标算法模型的训练,得到训练好的目标算法模型,通过目标算法模型学习目标业务代码在指定运行环境下运行过程中的内核API调用序列特征;进而,在目标业务代码运行过程中,对内核API的调用进行监测,获取第一时间段内的第一内核API调用序列,对第一内核API调用序列进行数据片划分,得到多个数据片,并将该多个数据片输入到训练好的目标算法模型,确定多个数据片中目标数据片的比例,在多个数据片中目标数据片的比例小于符合度阈值的情况下,确定目标业务代码当前的运行环境与指定运行环境不一致,终止目标业务代码的运行,通过依据目标业务代码运行过程中内核API调用序列特征对目标业务代码的运行环境进行识别,准确识别出目标业务代码在非指定运行环境下运行的情况,有效减少了目标业务代码的滥用。
[0056] 在一些实施例中,目标算法模型通过以下方式训练:
[0057] 在目标业务代码在指定运行环境中运行的过程中,获取第二时间段内的第二内核API调用序列;
[0058] 对第二内核API调用序列进行数据片划分,并按比例将得到的数据片划分为训练集和测试集;
[0059] 利用训练集对目标算法模型进行迭代训练,直至测试集中各数据片与对应的输出数据之间的相似度满足预设条件,和/或,训练轮次达到预设最大轮次。
[0060] 示例性的,为了实现目标算法模型的训练,可以在目标业务代码在指定运行环境中运行的过程中,获取第二时间段内的第二内核API调用序列,并对第二内核API调用序列进行数据片划分。
[0061] 对于划分得到的多个数据片,可以按比例将其划分为训练集和测试集。
[0062] 示例性的,训练集中数据片的数量大于测试集中数据片的数量。
[0063] 例如,可以将划分得到的多个数据片,按照8:2的比例划分为训练集和测试集,即划分得到的多个数据片中,80%的数据片作为训练集,20%的数据片作为测试集。
[0064] 可以利用训练集对目标算法模型进行迭代训练,并在至少满足以下条件之一的情况下,确定训练完成:
[0065] 条件1、测试集中各数据片与对应的输出数据(将数据片输入目标算法模型的情况下的输出数据)之间的相似度满足预设条件。
[0066] 在一个示例中,上述满足预设条件可以包括测试集中各数据片对应的输出数据之间的相似度均超过预设相似度阈值(可以称为第二相似度阈值)。
[0067] 在另一个示例中,上述满足预设条件可以包括测试集中各数据片与对应的输出数据之间的相似度的均值超过预设相似度阈值(可以称为第三相似度阈值)。
[0068] 示例性的,第一相似度阈值、第二相似度阈值,以及,第三相似度阈值可以均相同、部分相同,或,完全不同。
[0069] 条件2、训练轮次达到预设最大轮次。
[0070] 在一个示例中,第一相似度阈值为训练完成情况下测试集中各数据片与对应的输出数据之间的相似度的均值。
[0071] 示例性的,为了更准确地识别出目标业务代码的运行环境是否为指定运行环境,在按照上述方式完成了目标算法模型的训练的情况下,可以将测试集中各数据片与对应的输出数据之间的相似度的均值作为第一相似度阈值。
[0072] 在一些实施例中,内核API调用节点包括内核API调用时间以及被调用的内核API的标识信息;
[0073] 对内核API调用序列进行数据片划分的方式,包括:
[0074] 按照内核API调用节点的数量、内核API调用时间,以及,内核API调用时间之间的时间间隔中的至少一个,对内核API调用序列进行数据片划分。
[0075] 示例性的,以内核API调用节点包括内核API调用时间以及被调用的内核API的标识信息为例。
[0076] 对内核API调用序列进行数据片划分的方式,可以包括:按照内核API调用节点的数量、内核API调用时间,以及,内核API调用时间之间的时间间隔中的至少一个,对内核API调用序列进行数据片划分。
[0077] 以按照内核API调用节点的数量进行数据片划分为例,可以每threshold(具体取值可以根据实际需求设定)个内核API调用节点划为一个数据片。
[0078] 例如,假设threshold取值为5,则对于内核API调用序列,可以每5个内核API调用节点划分为1个数据片。
[0079] 以按照内核API调用时间进行数据片划分为例,可以预设时间区间对内核API调用序列进行数据片划分。
[0080] 例如,可以将包括的内核API调用时间处于1:00 1:20的内核API调用节点划分为1~个数据片,将内核API调用时间处于1:20 1:40的内核API调用节点划分为另1个数据片。
~
[0081] 以按照内核API调用时间之间的时间间隔对内核API调用序列进行数据片划分为例,可以将内核API调用时间之间的时间间隔小于等于预设时间阈值的内核API调用节点划分至同一数据片,否则,划分至不同数据片。
[0082] 例如,可以将内核API调用时间之间的时间间隔小于等于5分钟的内核API调用节点划分至同一数据片,将内核API调用时间之间的时间间隔大于5分钟的内核API调用节点划分至不同数据片。
[0083] 具体地,可以按照调用时间从早到晚的顺序,对内核API调用节点进行排序,并对各内核API调用节点进行遍历,对于遍历的第一个内核API调用节点,将其划分至一个数据片,从遍历的第二个内核API调用节点开始,比较当前遍历的内核API调用节点与上一个遍历的内核API调用节点的调用时间之间的时间间隔,在该时间间隔小于等于5分钟的情况下,将当前遍历的内核API调用节点划分至上一个遍历的内核API调用节点所属数据片;在该时间间隔大于5分钟的情况下,将当前遍历的内核API调用节点划分至一个新的数据片。
[0084] 以按照内核API调用节点的数量和内核API调用时间之间的时间间隔对内核API调用序列进行数据片划分为例,可以预先设定单个数据片中的内核API调用节点的最大数量,并按照上述方式依据内核API调用节点之间的时间间隔对内核API调用节点进行数据片划分;其中,在某个数据片中内核API调用节点的数量达到预设最大数量的情况下,下一个内核API调用节点自动划分至新的数据片。
[0085] 举例来说,假设预设最大数量为5,可以按照调用时间从早到晚的顺序,对内核API调用节点进行排序,并对各内核API调用节点进行遍历,对于遍历的第一个内核API调用节点,将其划分至一个数据片,从遍历的第二个内核API调用节点开始,在上一个遍历的内核API调用节点所属数据片中的内核API调用节点的数量未达到5个的情况下:
[0086] 可以比较当前遍历的内核API调用节点与上一个遍历的内核API调用节点的调用时间之间的时间间隔,在该时间间隔小于等于5分钟的情况下,将当前遍历的内核API调用节点划分至上一个遍历的内核API调用节点所属数据片;在该时间间隔大于5分钟的情况下,将当前遍历的内核API调用节点划分至一个新的数据片。
[0087] 在上一个遍历的内核API调用节点所属数据片中的内核API调用节点的数量达到5个的情况下:
[0088] 将当前遍历的内核API调用节点划分至一个新的数据片。
[0089] 在一些实施例中,在所述多个数据片中目标数据片的比例大于符合度阈值的情况下,所述方法还包括:
[0090] 通过修改系统配置,以新的shell控制程序替换操作系统原始的shell控制界面;其中,在登录新的shell控制程序的情况下,无法对操作系统文件进行访问;
[0091] 在用户使用安全外壳SSH协议成功登录所述新的shell控制程序,且检测到调试指令的情况下,依据所述目标业务代码当前的运行环境的硬件信息以及时间戳,生成设备特征码;
[0092] 依据所述设备特征码从云服务平台获取远程登录口令,并依据该远程登录口令进入操作系统原始的shell控制界面。
[0093] 示例性的,为了更好地保护目标业务代码源码和运行环境,在步骤S120中确定的多个数据片中目标数据片的比例大于符合度阈值的情况下,不再进入操作系统原始的shell控制界面,而是通过修改系统配置,以新的shell控制程序替换操作系统原始的shell控制界面。
[0094] 示例性的,在登录新的shell控制程序的情况下,无法对操作系统文件进行访问,即无法对操作系统的文件进行读、写、拷贝等操作。
[0095] 示例性的,在进入新的shell控制程序的情况下,允许执行常见的系统命令,如用于确认系统基础配置是否正常的系统命令,其包括但不限于ipconfig命令(用于查看和管理网络连接配置信息的命令)、ping命令(用于测试计算机与目标主机之间的网络连通性的命令)、debug命令(用于调试和分析程序的命令)等。
[0096] 示例性的,用户可以使用SSH(Secure Shell,安全外壳)协议登录新的shell控制程序,并通过指令命令触发进入操作系统原始的shell控制界面。
[0097] 示例性的,在用户登录新的shell控制程序,且检测到调试指令,如debug命令的情况下,可以依据目标业务代码当前的运行环境的硬件信息以及时间戳,生成设备特征码。
[0098] 目标业务代码当前所运行在的设备可以将该设备特征码上传到云服务平台,由云服务平台基于私钥对设备特征码进行签名,生成远程登录口令,并将远程登录口令返回给该设备。
[0099] 该设备可以依据该远程登录口令进行操作系统原始的shell控制界面。
[0100] 例如,用户可以将登录口令输入到新的shell控制程序中的指定输入端口,设备可以基于公钥对远程登录口令进行验签,验签通过再进入操作系统原始的shell控制界面;否则,拒绝进入操作系统原始的shell控制界面。
[0101] 在一些实施例中,上述在目标业务代码运行过程中,对内核应用程序编程接口API的调用进行监测,获取第一时间段内的第一内核API调用序列之前,还可以包括:
[0102] 对目标业务代码当前的运行环境进行静态运行环境指纹提取,得到待验证静态运行环境指纹;其中,静态运行环境指纹包括指定硬件信息和/或指定软件信息;
[0103] 在待验证静态运行环境指纹与目标静态运行环境指纹匹配不成功的情况下,终止目标业务代码的运行;其中,目标静态运行环境指纹通过目标业务代码在指定运行环境中运行的过程中提取得到。
[0104] 示例性的,为了提高目标业务代码的运行环境检测的效率,在目标业务代码在运行的过程中,还可以对目标业务代码当前的运行环境进行静态运行环境指纹提取,得到待验证静态运行环境指纹。
[0105] 示例性的,静态运行环境指纹包括指定硬件信息和/或指定软件信息。
[0106] 示例性的,上述指定硬件信息可以包括但不限于:CPU型号及厂商;内存配置及厂商;网卡配置及厂商;磁盘配置及厂商等硬件信息中的部分或全部。
[0107] 上述指定软件信息可以包括但不限于:系统稳定状态下的进程信息(包括进程名称、进程所属用户、进程对应执行命令等)、服务端口信息(系统服务名称、服务状态、服务对应执行命令)等软件信息中的部分或全部。
[0108] 示例性的,可以将提取得到的待验证静态运行环境指纹,与业务代码在指定运行环境中运行的过程中提取得到静态运行环境指纹(可以称为目标静态运行环境指纹)进行匹配,在二者匹配不成功的情况下,可以确定目标业务代码当前的运行环境不是指定运行环境,终止目标业务代码的运行。
[0109] 示例性的,在待验证静态运行环境指纹与目标静态运行环境指纹匹配成功的情况下,可以进一步按照上述实施例中描述的方式对目标业务代码当前的运行环境进行检测。
[0110] 示例性的,待验证静态运行环境指纹与目标静态运行环境指纹匹配不成功可以包括:待验证静态运行环境指纹中的指定硬件信息与目标静态运行环境指纹中的指定硬件信息不一致;和/或,待验证静态运行环境指纹中的指定软件信息与目标静态运行环境指纹中的指定软件信息不一致。
[0111] 待验证静态运行环境指纹与目标静态运行环境指纹匹配成功可以包括:待验证静态运行环境指纹中的指定硬件信息与目标静态运行环境指纹中的指定硬件信息一致;且待验证静态运行环境指纹中的指定软件信息与目标静态运行环境指纹中的指定软件信息一致。
[0112] 为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面结合具体实例对本申请实施例提供的技术方案进行说明。
[0113] 在该实施例中,从服务保护和源码保护两个层面实现针对业务代码的数据保护。其中:
[0114] 服务保护(防滥用):被保护的业务代码设置运行环境检查逻辑,具体分为三个层面:
[0115] 1)硬件指纹检查:针对运行环境的硬件指纹进行采集和匹配检查,包括CPU型号及厂商;内存配置及厂商;网卡配置及厂商;磁盘配置及厂商等。
[0116] 2)设备进程检查:运行环境中的进程名称、服务端口开启情况等。
[0117] 3)基于内核API序列的服务检查:通过捕捉一段时间内运行环境的内核API调用序列,构建API调用关系,提取内核API调用序列指纹与内置指纹(业务代码在指定运行环境中运行过程中提取的内核API调用序列指纹)进行匹配。
[0118] 源码保护(防盗取):仅使用于无UI交互的运行环境,用户仅能通过SSH(Secure Shell)安全外壳协议访问操作系统,被保护的业务代码运行起来后会接管运行环境的远程登录配置,用户需要通过公私钥验签通过后才能够正常进入操作系统。
[0119] 在该实施例中,可以在不依赖代码加密或代码加壳的情况下,防止业务代码被盗取或被滥用,减少软件交付或三方合作情况下合作对象盗取业务代码或者滥用业务代码的情况,保障了业务代码的安全性,提升了业务代码的数据自我保护能力。
[0120] 如图2所示,该实施例提供的数据保护方案可以包括以下步骤:
[0121] S1、动态运行环境识别与特征提取;
[0122] S2:基于特征压缩与提取算法的序列特征提取与模型预训练;
[0123] S3:静态运行环境指纹提取与匹配;
[0124] S4:动态运行环境指纹提取与匹配;
[0125] S5:运行环境远程登录接管。
[0126] 下面对各步骤的实现进行说明。
[0127] S1、动态运行环境识别与数据提取
[0128] 本步骤是在受控的指定硬件环境(即上述指定运行环境)下进行,目的是确定合法的运行环境信息,用于后续进行非法运行环境判断,主要包括硬件信息提取、软件信息提取和内核API信息提取,并基于提取到的API信息训练特征提取模型用作第三步API序列相似性判断。
[0129] 1.1、运行环境适配:在约定好的硬件和软件环境中执行待保护的软件成果物(如上述目标业务代码),如恶意流量检测应用、恶意文件检测应用等;过程中对软硬件环境进行适配,例如:应用要求特定的CPU型号、应用要求特定的网卡驱动、应用要求足够的计算资源(内存大小、磁盘大小)等;
[0130] 1.2、目标环境硬件信息提取:提取运行环境中的硬件信息,包括但不限于:CPU型号及厂商;内存配置及厂商;网卡配置及厂商;磁盘配置及厂商等信息HardInfo;
[0131] 1.3、目标环境软件信息提取:提取运行环境中的软件信息,包括但不限于:系统稳定状态下的进程信息(包括进程名称、进程所属用户、进程对应执行命令等)、服务端口信息(系统服务名称、服务状态、服务对应执行命令)等SoftInfo;
[0132] 1.4、内核API调用序列提取:开启并持续运行T_All时间(即上述第二时间段)的内核API调用序列监测功能,实时监听并保存内核的API调用情况D:[(t1,a1),(t2,a2),(t3,a3),…,(t_T,a_T)];其中,(t,a)为一个内核API调用节点,t指时间戳(即内核API调用时间),a指对应的API(即被调用的内核API的标识信息)。
[0133] S2、基于特征压缩与提取算法的序列特征提取与模型预训练
[0134] 2.1、内核API调用序列数据预处理与数据划分:对S1中的数据D进行数据片划分,数据片划分方案可以包括按照内核API调用节点的数量、内核API调用时间,或,内核API调用时间之间的时间间隔进行划分。
[0135] 示例性的,以按照内核API调用节点的数量进行划分为例,即:每threshold个内核API调用节点被划分为一个数据片,数据D被划分为N个数据片,每个数据片中包含threshold个内核API调用节点;对N个数据片按照8:2的比例划分为两个子数据集A、B ,A数据集(即训练集)用于训练、B数据集(即测试集)用于测试。
[0136] 2.2、特征压缩与提取算法模型构建:构建特征压缩与提取算法结构Mutil‑Auto‑Encoder,即构建一个基于自编码器的深度学习模型用于进行特征提取。
[0137] 示例性的,请参见图3,模型可以设计为图3所示,模型分为7层,分别是输入层、隐藏层1、隐藏层2、隐藏层3、隐藏层4、隐藏层5、输出层,其中输入层与输出层神经元数相同、隐藏层1与隐藏层5神经元数相同、隐藏层2与隐藏层4神经元数相同。
[0138] 2.3、模型训练与测试:初始化模型参数后利用A数据集基于梯度下降和反向传递方式进行模型参数训练,基于B数据集的测试结果判断训练是否结束。
[0139] 示例性的,训练结束可以设定为两种指标(至少满足其中之一):
[0140] 1)测试集上输入层与输出层数据相似度达到阈值Threshold_Similarity;
[0141] 2)训练轮次达到阈值Threshold_Round(即预设最大轮次)。
[0142] 在训练结束的情况下,测试集上输入层与输出层数据相似度均值(即测试集中各数据片与对应的输出数据之间的相似度的均值)作为相似度阈值Threshold_Similarity(即上述第一相似度阈值)进行后续运行环境检测。
[0143] 2.4、模型保存:将训练完成的模型进行保存,用于后续的动态运行环境指纹提取和匹配。
[0144] S3、静态运行环境指纹提取与匹配
[0145] 本步骤是在不受控的运行环境下进行,目标是判断运行环境是否合法(即是否与指定运行环境一致),在合法(与指定运行环境一致)的情况下,进行后续步骤;否则,终止业务代码的运行。
[0146] 3.1、测试环境硬件信息提取与匹配:采用与S1中相同的信息提取方案提取运行环境下的硬件信息HardInfo_Test,判断HardInfo_Test与HardInfo是否一致,在不一致的情况下,终止业务代码运行;
[0147] 3.2、测试环境软件信息提取与匹配:采用与S1中相同的信息提取方案提取运行环境下的硬件信息SoftInfo_Test,判断SoftInfo_Test与SoftInfo是否一致,在不一致的情况下,终止业务代码运行。
[0148] S4、动态运行环境指纹提取与匹配
[0149] 4.1、测试环境试运行与内核API调用序列提取:采用与S1中相同的内核API调用序列监测方案提取运行环境的内核API调用序列,开启并持续运行T_test时间(即上述第一时间段)的内核API调用序列监测功能,获取D_test长度的内核API调用序列;
[0150] 4.2、内核API调用序列数据预处理:采用与S1中相同的内核API调用序列数据片划分方案,将D_test序列划分为n个数据片,每个数据片中包含threshold个API调用节点;
[0151] 4.3、API特征验证与匹配:计算n个数据片中每个数据片在S2模型上输入层与输出层的相似度是否达到预设的相似度阈值Threshold_Similarity(即第一相似度阈值),在达到的情况下,记为1;否则记为0;累计n个数据片的测试结果s;在s/n大于符合度阈值Threshold_Compliance的情况下,认为当前运行环境与指定运行环境一致,进行下一步;否则,终止业务代码运行。
[0152] S5、运行环境远程登录接管
[0153] 本步骤是在不受控的运行环境下进行,通过修改系统配置接管运行环境的远程登录界面,保证远程登录的用户具有访问待保护软件的权限。
[0154] 5.1、远程登录接管:通过修改系统配置,以新的shell控制程序替换操作系统原始的shell控制界面;
[0155] 5.2、系统远程登录权限控制:用户使用SSH协议登录后,只允许执行部分受控的系统指令,如:ipconfig、ping、debug。其中,debug用于生成当前设备的设备特征码(结合了S3中HardInfo_Test和时间戳生成的唯一特征码),并要求输入远程登录口令,利用设备特征码到受控的云服务平台上基于私钥生成远程登录口令,将远程登录口令输入到远程登录界面进入操作系统。
[0156] 其中,云平台服务由软件提供商构建,重新将软件的访问权限把握到软件提供商处,而不是交由硬件提供商。
[0157] 以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:
[0158] 请参见图4,为本申请实施例提供的一种数据保护装置的结构示意图,如图4所示,该数据保护装置可以包括:
[0159] 获取单元410,用于在目标业务代码运行过程中,对内核应用程序编程接口API的调用进行监测,获取第一时间段内的第一内核API调用序列;所述第一内核API调用序列包括多个内核API调用节点,一个内核API调用节点对应一次内核API调用;
[0160] 划分单元420,用于对所述第一内核API调用序列进行数据片划分,得到多个数据片;
[0161] 确定单元430,用于将所述多个数据片输入到训练好的目标算法模型,确定所述多个数据片中目标数据片的比例;其中,对于任一目标数据片,该目标数据片输入到所述目标算法模型后得到的输出数据与该目标数据片之间的相似度超过第一相似度阈值;所述目标算法模型通过对第二内核API调用序列进行数据片划分,并利用划分得到的数据片进行训练;所述第二内核API调用序列为所述目标业务代码在指定运行环境中运行的过程中获取到的第二时间段内的内核API调用序列;对所述第二内核API调用序列进行数据片划分的方式与对所述第一内核API调用序列进行数据片划分的方式相同;
[0162] 控制单元440,用于在所述多个数据片中目标数据片的比例小于符合度阈值的情况下,确定所述目标业务代码当前的运行环境与指定运行环境不一致,终止所述目标业务代码的运行。
[0163] 在一些实施例中,所述目标算法模型通过以下方式训练:
[0164] 在所述目标业务代码在指定运行环境中运行的过程中,获取所述第二时间段内的第二内核API调用序列;
[0165] 对所述第二内核API调用序列进行数据片划分,并按比例将得到的数据片划分为训练集和测试集;
[0166] 利用所述训练集对目标算法模型进行迭代训练,直至所述测试集中各数据片与对应的输出数据之间的相似度满足预设条件,和/或,训练轮次达到预设最大轮次。
[0167] 在一些实施例中,所述第一相似度阈值为训练完成情况下所述测试集中各数据片与对应的输出数据之间的相似度的均值。
[0168] 在一些实施例中,内核API调用节点包括内核API调用时间以及被调用的内核API的标识信息;
[0169] 对内核API调用序列进行数据片划分的方式,包括:
[0170] 按照内核API调用节点的数量、内核API调用时间,以及,内核API调用时间之间的时间间隔中的至少一个,对内核API调用序列进行数据片划分。
[0171] 在一些实施例中,所述控制单元440,还用于在所述多个数据片中目标数据片的比例大于符合度阈值的情况下,通过修改系统配置,以新的shell控制程序替换操作系统原始的shell控制界面;其中,在登录所述新的shell控制程序的情况下,无法对操作系统文件进行访问;
[0172] 在用户使用安全外壳SSH协议成功登录所述新的shell控制程序,且检测到调试指令的情况下,依据所述目标业务代码当前的运行环境的硬件信息以及时间戳,生成设备特征码;
[0173] 依据所述设备特征码从云服务平台获取远程登录口令,并依据所述远程登录口令进入所述操作系统原始的shell控制界面。
[0174] 在一些实施例中,所述获取单元410在目标业务代码运行过程中,所述对内核应用程序编程接口API的调用进行监测,获取第一时间段内的第一内核API调用序列之前,还包括:
[0175] 对所述目标业务代码当前的运行环境进行静态运行环境指纹提取,得到待验证静态运行环境指纹;其中,静态运行环境指纹包括指定硬件信息和/或指定软件信息;
[0176] 所述控制单元440,还用于在所述待验证静态运行环境指纹与目标静态运行环境指纹匹配不成功的情况下,终止所述目标业务代码的运行;其中,所述目标静态运行环境指纹通过所述目标业务代码在指定运行环境中运行的过程中提取得到。
[0177] 本申请实施例还提供一种电子设备,包括处理器和存储器,其中,存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上文描述的数据保护方法。
[0178] 请参见图5,为本申请实施例提供的一种电子设备的硬件结构示意图。该电子设备可包括处理器501、存储有机器可执行指令的存储器502。处理器501与存储器502可经由系统总线503通信。并且,通过读取并执行存储器502中与数据保护逻辑对应的机器可执行指令,处理器501可执行上文描述的数据保护方法。
[0179] 本文中提到的存储器502可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0180] 在一些实施例中,还提供了一种机器可读存储介质,如图5中的存储器502,该机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上文描述的数据保护方法。例如,所述机器可读存储介质可以是ROM、RAM、CD‑ROM、磁带、软盘和光数据存储设备等。
[0181] 本申请实施例还提供了一种计算机程序产品,存储有计算机程序,并且当处理器执行该计算机程序时,促使处理器执行上文中描述的数据保护方法。
[0182] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0183] 以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。