一种动态度量方法、装置、设备及存储介质与流程

文档序号:26006073发布日期:2021-07-23 21:24阅读:103来源:国知局
一种动态度量方法、装置、设备及存储介质与流程

本发明涉及信息安全技术领域,尤其涉及一种动态度量方法、装置、设备及存储介质。



背景技术:

动态度量是保证程序运行完整性的重要方法。动态度量通过对运行时的程序进行相应的完整性度量,实现程序的可信和安全执行,确保程序的执行结果符合预期。

在操作系统中,当程序可执行文件被加载入内存中正在或等待执行时,其可执行代码段应该和预设的可执行文件相同。若发生了变化,则表明可执行代码被异常修改,这将导致程序执行过程的不完整,程序执行结果的不可信。通过度量程序的可执行代码,可以保证可执行代码没有被攻击者篡改,保证程序的完整性。

操作系统的内存以内存页为单位进行分配和管理,程序的可执行代码也以内存页为单位加载到内存中。当操作系统调度器进行调度并选定待执行进程时,调度器会将控制指针(pc指针)指向待执行进程的可执行代码的内存地址。

现有技术提出了一种动态度量方法。但是,在这种方法中,在某些情况下,攻击者可对可执行代码进行修改并且不触发缺页异常。这种情况会导致现有方案的动态度量触发不及时,导致动态度量机制失效,容易造成安全隐患。



技术实现要素:

本发明实施例提供一种动态度量方法、装置、设备及存储介质,以提高进程的安全性。

第一方面,本发明实施例提供了一种动态度量方法,包括:

当目标进程被调度器选中并且未被执行前,对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果;

根据所述动态度量结果,确定是否执行所述目标进程。

其中,所述对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果,包括:

确定所述目标可执行代码段所处的内存页标识;

确定所述内存页标识对应的内存页的目标度量值;

获取所述内存页的基准度量值;

将所述目标度量值和所述基准度量值进行比较,得到所述动态度量结果。

其中,所述确定所述内存页标识对应的内存页的目标度量值,包括:

对所述内存页内的可执行代码段进行哈希运算,得到所述目标度量值。

其中,所述获取所述内存页的基准度量值,包括:

根据所述目标进程的信息,查找进程度量列表,得到所述目标进程的信息对应的目标进程节点;

根据所述目标进程节点的信息和所述内存页标识,查找页面度量列表,得到所述内存页的基准度量值。

其中,所述根据所述动态度量结果,确定是否执行所述目标进程,包括:

在所述目标度量值和所述基准度量值一致的情况下,继续执行所述目标进程;否则,结束执行所述目标进程。

其中,在所述对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果之前,所述方法还包括:

创建数据结构界面度量节点,其中,所述界面度量节点中的第一变量用于表示可执行代码所处的内存页的标识,第二变量用于表示所述可执行代码所处的内存页的基准度量值;

利用所述界面度量节点形成页面度量列表;

利用所述页面度量列表形成进程度量列表。

其中,在所述对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果之前,所述方法还包括:

设置所述调度器,以使所述调度器在执行完关键语句之后,对所述目标进程的目标可执行代码进行动态度量。

第二方面,本发明实施例提供了一种动态度量装置,包括:

第一处理模块,用于当目标进程被调度器选中并且未被执行前,对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果;

第二处理模块,用于根据所述动态度量结果,确定是否执行所述目标进程。

其中,所述第一处理模块包括:

第一确定子模块,用于确定所述目标可执行代码段所处的内存页标识;

第二确定子模块,用于确定所述内存页标识对应的内存页的目标度量值;

获取子模块,用于获取所述内存页的基准度量值;

比较子模块,用于将所述目标度量值和所述基准度量值进行比较,得到所述动态度量结果。

其中,所述第二确定子模块用于,对所述内存页内的可执行代码段进行哈希运算,得到所述目标度量值。

其中,所述获取子模块包括:

第一查找单元,用于根据所述目标进程的信息,查找进程度量列表,得到所述目标进程的信息对应的目标进程节点;

第二查找单元,用于根据所述目标进程节点的信息和所述内存页标识,查找页面度量列表,得到所述内存页的基准度量值。

其中,所述第二处理模块具体用于,在所述目标度量值和所述基准度量值一致的情况下,继续执行所述目标进程;否则,结束执行所述目标进程。

其中,所述装置还包括:

创建模块,用于创建数据结构界面度量节点,其中,所述界面度量节点中的第一变量用于表示可执行代码所处的内存页的标识,第二变量用于表示所述可执行代码所处的内存页的基准度量值;

第三处理模块,用于利用所述界面度量节点形成页面度量列表;

第四处理模块,用于利用所述页面度量列表形成进程度量列表。

其中,所述装置还包括:

设置模块,用于设置所述调度器,以使所述调度器在执行完关键语句之后,对所述目标进程的目标可执行代码进行动态度量。

第三方面,本发明实施例提供了一种动态度量装置,包括:处理器和收发器;

其中,所述处理器用于,当目标进程被调度器选中并且未被执行前,对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果;根据所述动态度量结果,确定是否执行所述目标进程。

其中,所述处理器还用于:

确定所述目标可执行代码段所处的内存页标识;

确定所述内存页标识对应的内存页的目标度量值;

获取所述内存页的基准度量值;

将所述目标度量值和所述基准度量值进行比较,得到所述动态度量结果。

其中,所述处理器还用于:

对所述内存页内的可执行代码段进行哈希运算,得到所述目标度量值。

其中,所述处理器还用于:

根据所述目标进程的信息,查找进程度量列表,得到所述目标进程的信息对应的目标进程节点;

根据所述目标进程节点的信息和所述内存页标识,查找页面度量列表,得到所述内存页的基准度量值。

其中,所述处理器还用于:

在所述目标度量值和所述基准度量值一致的情况下,继续执行所述目标进程;否则,结束执行所述目标进程。

其中,所述处理器还用于:

创建数据结构界面度量节点,其中,所述界面度量节点中的第一变量用于表示可执行代码所处的内存页的标识,第二变量用于表示所述可执行代码所处的内存页的基准度量值;

利用所述界面度量节点形成页面度量列表;

利用所述页面度量列表形成进程度量列表。

其中,所述处理器还用于:

设置所述调度器,以使所述调度器在执行完关键语句之后,对所述目标进程的目标可执行代码进行动态度量。

第四方面,本发明实施例提供了一种电子设备,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;所述处理器,用于读取存储器中的程序实现如第一方面所述的动态度量方法中的步骤。

第五方面,本发明实施例提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的动态度量方法中的步骤。

在本发明实施例中,当目标进程被调度器选中并且未被执行前,对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果,并根据所述动态度量结果,确定是否执行所述目标进程。通过这样的方式,可使得动态度量机制的触发更及时,避免了内存内容已被篡改却没有触发动态度量的情况发生。因此,利用本发明实施例的方案,可提高进程的安全性。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的动态度量方法的流程图之一;

图2是本发明实施例提供的动态度量方法的流程图之二;

图3是本发明实施例提供的动态度量架构图;

图4是本发明实施例提供的动态度量装置的结构图之一;

图5是本发明实施例提供的动态度量装置的结构图之二;

图6是本发明实施例提供的电子设备的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,图1是本发明实施例提供的动态度量方法的流程图,可应用于操作系统的调度器,如图1所示,包括以下步骤:

步骤101、当目标进程被调度器选中并且未被执行前,对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果。

其中,所述目标进程可以指的是任一被调度器选中并且未被执行的进程。在本发明实施例中,当操作系统时间片用尽,调度器选定了新的待执行进程、更新了pc指针、但还未执行进程的时间点,对该进程进行动态度量。

具体的,在此步骤中,可包括如下过程:

(1)确定所述目标可执行代码段所处的内存页标识。

所述目标可执行代码段指的是处于内存中的目标进程的任一可执行代码段内。操作系统的内存以内存页为单位进行分配和管理,程序的可执行代码也以内存页为单位加载到内存中。因此,对于处于内存中的目标可执行代码,可获取其所处的内存页标识。其中,所述内存页标识可以包括内存页的页编号。

(2)确定所述内存页标识对应的内存页的目标度量值。

在本发明实施例中,对所述内存页内的可执行代码段进行哈希运算,得到所述目标度量值。其中,哈希运算所采用的具体算法在本发明实施例中并不做限定。

(3)获取所述内存页的基准度量值。

在本发明实施例中,每个内存页的基准度量值可以是预先存储到某个存储模块中的。例如,可预先存储到内存中。

具体的,在存储的时候,首先创建数据结构page_measure_node(界面度量节点)。该数据结构包括两个变量:第一变量intvadd_in_page、第二变量charmeasure_whitelist[20]。其中,第一变量vadd_in_page代表可执行代码的第几个内存页,也即表示可执行代码所处的内存页的标识(如页编号)。第二变量measure_whitelist表示所述可执行代码所处的内存页的基准度量值,共160位,由20个char表示。

之后,利用所述界面度量节点形成页面度量列表(page_measure_array)。具体的,创建数组page_measure_array,该数组由page_measure_node组成。

最后,利用所述页面度量列表形成进程度量列表(process_measure_array)。具体的,创建数组process_measure_array,该数组由page_measure_array组成。

在创建完上述数据结构之后,对可执行文件(elf文件)的可执行代码段(.text段)以页表长度为单位进行划分,分别计算每个内存页的度量值。该度量值作为程序的可执行代码的基准值使用。然后,将可执行代码段所在内存页的页编号、基准值写入page_measure_node中,并利用page_measure_node生成page_measure_array,利用page_measure_array生成process_measure_array。

因此,在此步骤中,可根据所述目标进程的信息(如进程名称等),查找进程度量列表,得到所述目标进程的信息对应的目标进程节点。然后,根据所述目标进程节点的信息(进程编号等)和所述内存页标识,查找页面度量列表,得到所述内存页的基准度量值。

(4)将所述目标度量值和所述基准度量值进行比较,得到所述动态度量结果。

步骤102、根据所述动态度量结果,确定是否执行所述目标进程。

具体的,在此步骤中,在所述目标度量值和所述基准度量值一致的情况下,继续执行所述目标进程;否则,结束执行所述目标进程。

在本发明实施例中,当目标进程被调度器选中并且未被执行前,对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果,并根据所述动态度量结果,确定是否执行所述目标进程。通过这样的方式,可使得动态度量机制的触发更及时,避免了内存内容已被篡改却没有触发动态度量的情况发生。因此,利用本发明实施例的方案,可提高进程的安全性。同时,在执行本发明实施例的方案的过程中,由于动态度量发生于操作系统的调度器中,动态度量的执行不会使进程被挂起,因此,动态度量的执行不会对进程的正常执行过程产生任何影响。

可选的,在本发明实施例中,在步骤101之前,还可设置所述调度器,以使所述调度器在执行完关键语句之后,对所述目标进程的目标可执行代码进行动态度量。也即,在调度器中设置度量点。通过在调度器中加入度量点,能够对待执行进程实施及时的完整性度量,保护可执行代码的完整性。

参见图2,图2是本发明实施例的动态度量方法的流程图。在本发明实施例中,可设置四个程序模块:内存页检测模块、度量值计算模块、完整性对比模块以及基准值存储模块。其中,内存页检测模块、度量值计算模块、完整性对比模块工作于操作系统内核schedule()调度器中。基准值存储模块可工作于内存中。

步骤201、基准值存储模块创建数据结构page_measure_node。该数据结构包括两个变量:intvadd_in_page、charmeasure_whitelist[20]。

其中,vadd_in_page代表可执行代码所处的内存页的页编号,measure_whitelist代表了该内存页的标准值,共160位,由20个char表示。

步骤202、基准值存储模块创建数组page_measure_array,由page_measure_node组成。

步骤203、基准值存储模块创建数组process_measure_array,由page_measure_array组成。

步骤204、对可执行文件(elf文件)的可执行代码段(.text段)以页表长度为单位进行划分,分别计算每个内存页的度量值,该度量值作为程序可执行代码的基准值使用,将相应的页编号、基准值写入page_measure_node中,并生成page_measure_array和process_measure_array。

具体的,对某个内存页的可执行代码段进行哈希预算,即可得到该内存页的度量值。

步骤205、在操作系统调度器中设置度量点。

具体的,在操作系统调度器schedule()的关键语句switch_to()(进程上下文切换)函数后插入内存页检测模块、度量值计算模块、完整性对比模块。

步骤206、内存页检测模块对可执行代码段所处的页面进行检测,获得内存页编号。

在此步骤中,仅将处于内存中的可执行代码段内存页编号发送给度量值计算模块,而对于尚未调入内存处于存储设备中的可执行代码段不进行度量。

步骤207、度量值计算模块接收内存页编号,并对这些内存页编号对应的内存页进行度量值计算。

同样,在此步骤中,对内存页编号对应的内存页的可执行代码进行哈希运算,得到内存页的度量值。

其中,此步骤中所采用的哈希运算可以和步骤204中所采用的哈希算法一致。

步骤208、完整性对比模块将每个内存页度量值和基准值存储模块中对应的基准值进行比对,判断是否发生篡改。

若某个内存页的度量值和基准值一致,则确定没有篡改,则继续执行程序指令,直到当前调度周期的时间片用完或者进程执行结束。若某个内存页的度量值和基准值一致,则确定发生篡改,结束该进程的执行,并进行下一次进程调度。

具体的,参见图3所示,为本发明实施例中的动态度量架构图。在图3中,以进程p1为例。经内存页检测模块、度量值计算模块获得内存页编号后,由完整性对比模块由基准值存储获取获取每个内存页所对应的基准值。

具体的,完整性对比模块根据进程p1的名称等信息,从process_measure_array中查找到对应的进程节点(如node1)。然后,node1的page_measure_array根据内存页编号找到内存页对应的基准值。完整性对比模块将步骤207中计算得到的度量值和查找到的基准值进行比较,从而确定是否继续执行进程。

通过以上描述可以看出,在本发明实施例中,动态度量的触发更准确,从而提高了进程的安全性。同时,由于在调度器中加入度量点,能够对待执行进程实施及时的完整性度量,保护可执行代码的完整性。此外,本发明实施例方案中,动态度量的执行不会对进程的正常执行过程产生影响。

本发明实施例还提供了一种动态度量装置。参见图4,图4是本发明实施例提供的动态度量装置的结构图。由于动态度量装置解决问题的原理与本发明实施例中动态度量方法相似,因此该动态度量装置的实施可以参见方法的实施,重复之处不再赘述。

如图4所示,动态度量装置400包括:

第一处理模块401,用于当目标进程被调度器选中并且未被执行前,对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果;第二处理模块402,用于根据所述动态度量结果,确定是否执行所述目标进程。

可选的,所述第一处理模块401可包括:

第一确定子模块,用于确定所述目标可执行代码段所处的内存页标识;第二确定子模块,用于确定所述内存页标识对应的内存页的目标度量值;获取子模块,用于获取所述内存页的基准度量值;比较子模块,用于将所述目标度量值和所述基准度量值进行比较,得到所述动态度量结果。

其中,所述第二确定子模块用于,对所述内存页内的可执行代码段进行哈希运算,得到所述目标度量值。

其中,所述获取子模块包括:第一查找单元,用于根据所述目标进程的信息,查找进程度量列表,得到所述目标进程的信息对应的目标进程节点;第二查找单元,用于根据所述目标进程节点的信息和所述内存页标识,查找页面度量列表,得到所述内存页的基准度量值。

其中,所述第二处理模块402可具体用于,在所述目标度量值和所述基准度量值一致的情况下,继续执行所述目标进程;否则,结束执行所述目标进程。

其中,所述装置还包括:

创建模块,用于创建数据结构界面度量节点,其中,所述界面度量节点中的第一变量用于表示可执行代码所处的内存页的标识,第二变量用于表示所述可执行代码所处的内存页的基准度量值;

第三处理模块,用于利用所述界面度量节点形成页面度量列表;

第四处理模块,用于利用所述页面度量列表形成进程度量列表。

其中,所述装置还包括:

设置模块,用于设置所述调度器,以使所述调度器在执行完关键语句之后,对所述目标进程的目标可执行代码进行动态度量。

本发明实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

本发明实施例还提供了一种动态度量装置。参见图5,图5是本发明实施例提供的动态度量装置的结构图。由于动态度量装置解决问题的原理与本发明实施例中动态度量方法相似,因此该动态度量装置的实施可以参见方法的实施,重复之处不再赘述。

如图5所示,动态度量装置包括:处理器501和收发器502。

其中,所述处理器501用于,当目标进程被调度器选中并且未被执行前,对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果;根据所述动态度量结果,确定是否执行所述目标进程。

其中,所述处理器501还用于:

确定所述目标可执行代码段所处的内存页标识;确定所述内存页标识对应的内存页的目标度量值;获取所述内存页的基准度量值;将所述目标度量值和所述基准度量值进行比较,得到所述动态度量结果。

其中,所述处理器501还用于:

对所述内存页内的可执行代码段进行哈希运算,得到所述目标度量值。

其中,所述处理器501还用于:

根据所述目标进程的信息,查找进程度量列表,得到所述目标进程的信息对应的目标进程节点;根据所述目标进程节点的信息和所述内存页标识,查找页面度量列表,得到所述内存页的基准度量值。

其中,所述处理器501还用于:

在所述目标度量值和所述基准度量值一致的情况下,继续执行所述目标进程;否则,结束执行所述目标进程。

其中,所述处理器501还用于:

创建数据结构界面度量节点,其中,所述界面度量节点中的第一变量用于表示可执行代码所处的内存页的标识,第二变量用于表示所述可执行代码所处的内存页的基准度量值;利用所述界面度量节点形成页面度量列表;利用所述页面度量列表形成进程度量列表。

其中,所述处理器501还用于:

设置所述调度器,以使所述调度器在执行完关键语句之后,对所述目标进程的目标可执行代码进行动态度量。

本发明实施例提供的装置,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

如图6所示,本发明实施例的电子设备,包括:处理器600,用于读取存储器620中的程序,执行下列过程:

当目标进程被调度器选中并且未被执行前,对所述目标进程的目标可执行代码进行动态度量,得到动态度量结果;

根据所述动态度量结果,确定是否执行所述目标进程。

收发机610,用于在处理器600的控制下接收和发送数据。

其中,在图6中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器600代表的一个或多个处理器和存储器620代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机610可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器600负责管理总线架构和通常的处理,存储器620可以存储处理器600在执行操作时所使用的数据。

处理器600负责管理总线架构和通常的处理,存储器620可以存储处理器600在执行操作时所使用的数据。

处理器600还用于读取所述程序,执行如下步骤:

确定所述目标可执行代码段所处的内存页标识;

确定所述内存页标识对应的内存页的目标度量值;

获取所述内存页的基准度量值;

将所述目标度量值和所述基准度量值进行比较,得到所述动态度量结果。

处理器600还用于读取所述程序,执行如下步骤:

对所述内存页内的可执行代码段进行哈希运算,得到所述目标度量值。

处理器600还用于读取所述程序,执行如下步骤:

根据所述目标进程的信息,查找进程度量列表,得到所述目标进程的信息对应的目标进程节点;

根据所述目标进程节点的信息和所述内存页标识,查找页面度量列表,得到所述内存页的基准度量值。

处理器600还用于读取所述程序,执行如下步骤:

在所述目标度量值和所述基准度量值一致的情况下,继续执行所述目标进程;否则,结束执行所述目标进程。

处理器600还用于读取所述程序,执行如下步骤:

创建数据结构界面度量节点,其中,所述界面度量节点中的第一变量用于表示可执行代码所处的内存页的标识,第二变量用于表示所述可执行代码所处的内存页的基准度量值;

利用所述界面度量节点形成页面度量列表;

利用所述页面度量列表形成进程度量列表。

处理器600还用于读取所述程序,执行如下步骤:

设置所述调度器,以使所述调度器在执行完关键语句之后,对所述目标进程的目标可执行代码进行动态度量。

本发明实施例提供的设备,可以执行上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述动态度量方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。根据这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

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