一种访问控制中主体运行时可信验证方法及系统与流程

文档序号:20770182发布日期:2020-05-15 19:35阅读:223来源:国知局
一种访问控制中主体运行时可信验证方法及系统与流程

本发明涉及计算机技术领域,尤其涉及一种访问控制中主体运行时可信验证方法。



背景技术:

在保证整个物理或虚拟系统平台可信的基础上,对运行在可信系统之上的应用程序进行访问控制,以期达到应用程序可信运行的目的。访问控制中主体与客体以及主体操作的可信共同构建了应用程序可信运行的整个过程,因此对于运行中的主体进程进行高效可信验证是应用程序可信运行的重要基础。

专利公开号为cn105631310a的现有技术中提出了一种对于进程的高效可信认证方式,其通过在内核驱动中拦截启动的进程,并计算此进程对应可执行文件的md5值,并与服务器管理员所指定的可信进程md5值做比较,对比成功后把该进程的pid存储于可信进程链表中;最后通过查询进程的pid是否位于可信进程链表中来判断该进程是否可信。

该方案忽略了一个重要场景,即是进程运行过程中其数据可能遭到篡改,从而使得进程不可信,而该现有技术中所谓的可信进程链表并不能够保证进程的可信。只考虑了进程启动的可信判定,被判定为可信的进程在运行过程中也默认是可信的,难以满足国家网络安全等级保护标准中对关键环节进行动态可信验证的要求。



技术实现要素:

有鉴于此,本发明实施例提供一种访问控制中主体运行时可信验证方法及其系统,用以解决进程在运行过程中,不能进行可信验证的缺陷,并通过建立系统调用的动态等级,以区别性对主体进程内存数据进行度量,降低了频繁度量主体产生的性能损耗。

第一方面,本发明实施例提供一种访问控制中主体运行时可信验证方法,包括:加载应用程序,并获取应用程序在运行阶段的系统调用;判定系统调用的等级;基于等级,度量系统调用的主体进程内存数据;确定度量结果为合格,则允许应用程序继续运行。

进一步地,在判定所述系统调用的等级,包括:基于系统调用的重要性等级和使用频率,构建对等级进行定义的二元组模型;根据二元组模型确定系统调用的等级。

进一步地,上述等级包括:重要低频等级、重要高频等级、非重要低频等级和非重要高频等级。

进一步地,上述基于等级,度量系统调用的主体进程内存数据,包括:确定所述等级为重要低频等级,则对每次获取的系统调用进行主体进程内存数据的度量。

进一步地,上述基于等级,度量系统调用的主体进程内存数据,还包括:确定等级为重要高频等级,则对预设时间间隔内所获取的系统调用进行主体进程内存数据的度量。

进一步地,上述基于等级,度量系统调用的主体进程内存数据,还包括:确定所述等级为非重要低频等级或非重要高频等级,则不对系统调用进行主体进程内存数据的度量。

进一步地,本发明实施例提供一种访问控制中主体运行时可信验证方法,还包括:确定度量结果为不合格,则禁止应用程序继续运行。

第二方面,本发明实施例提供一种访问控制中主体运行时可信验证系统,包括:系统调用获取模块、等级判定模块、度量模块以及进程控制模块,其中:

系统调用获取模块,用于加载应用程序,并获取所述应用程序在运行阶段的系统调用;等级判定模块,用于判定系统调用的等级;度量模块,用于基于等级,度量系统调用的主体进程内存数据;进程控制模块,用于根据度量结果,控制应用程序的运行状态。

第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上述第一方面任一项所述的访问控制中主体运行时可信验证方法的步骤。

第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面任一项所述的访问控制中主体运行时可信验证方法的步骤。

本发明实施例提供的访问控制中主体运行时可信验证方法及系统,综合重要性和频率两个要素,设计并定义了系统调用的动态等级描述,以区别对待主体进程内存数据的度量步骤,在保证安全的同时,最大限度地降低了由频繁度量主体所产生的性能损耗。

附图说明

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

图1为本发明实施例提供的一种访问控制中主体运行时可信验证方法的流程示意图;

图2为本发明实施例提供的一种访问控制中主体运行时可信验证系统的结构示意图;

图3为本发明实施例提供的另一种访问控制中主体运行时可信验证方法的流程示意图;

图4为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

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

在保证整个物理或虚拟系统平台可信的基础上,对运行在可信系统之上的应用程序进行访问控制,以期达到应用程序可信运行的目的。访问控制中主体与客体以及主体操作的可信共同构建了应用程序可信运行的整个过程,因此,对于运行中的主体进程进行高效可信验证是应用程序可信运行的重要基础。

但是,在应用程序运行时,如果频繁的对进程进行度量,会导致软件运行效率降低。考虑到应用程序每次执行操作会调用一系列系统调用,可以以整个生命周期的系统调用入手控制对主体进程内存数据的度量。

有鉴于此,本发明实施例提供一种访问控制中主体运行时可信验证方法,结合可信控制平台对主体进程进行安全可信保护,从而全面提高应用程序运行过程的可信性,减少可信认证过程中的时间开销。如图1所示,包括但不限于以下步骤:

步骤s1:加载应用程序,并获取所述应用程序在运行阶段的系统调用;

步骤s2:判定所述系统调用的等级;

步骤s3:基于所述等级,度量所述系统调用的主体进程内存数据;

步骤s4:确定度量结果为合格,则允许所述应用程序继续运行。

系统调用是用户态与内核态的交互接口,系统中的所有应用程序在完成需要陷入到内核层的部分特定功能时都要进行一系列的系统调用工作来完成应用程序在整个生命周期内对操作进行的响应。由于在不同的运行阶段,每个应用程序都会持续产生不同的系统调用,因此,通过对系统调用的动态分析来度量进程,能够实时有效验证主体,从而进行安全保护。

具体地,在进行等级获取阶段,开始对应用程序进行试运行,并同时尽可能多地记录应用程序在试运行期间用到的所有系统调用,最终会得到一个系统调用操作序列。并进一步地,根据所获取到的系统调用操作序列,确定在各时间段内,系统调用在该系统调用操作序列的频率。

其中,等级可以用于判断所述系统调用的等级的高低。例如可以在各时间段内设定不同的频率阈值,根据系统调用被使用的频率高低(设系统调用的初始频率值为0),结合已对系统调用定义的重要性,构建为二元组标识,从而建立不同的等级,并作为系统调用判定的依据进行存储记录。

在应用程序运行阶段,拦截应用程序的所有系统调用;然后调取等级,判断该系统调用属于哪个等级。并进一步地,根据等级的不同,对该系统调用的主体进程内存数据进行不同程度的度量。最后根据度量结果,对应用程序的运行状态进行控制。例如,当度量结果合格时,则允许主体进程内存数据继续执行。

其中,加载应用程序,并获取应用程序在运行阶段的系统调用的方法可以是:

(1)获取当前进程的进程号pid;

(2)通过strace-etrace=all-ppid命令直接跟踪pid号进程的所有系统调用或者使用ptrace(ptrace_peekuser,pid,…)直接获取到进程执行的所有系统调用id,具体原理是读取到与当前进程相关的寄存器中的内容,即存储的系统调用号;

(3)由于系统调用与上层应用间存在语义差别,无法直接从系统调用建立与应用行为的映射,因此捕获到系统调用信息后,要将其解析为高层次语义信息,即解析系统调用名。在linux中,每个系统调用都有唯一的系统调用号标识,且内核中维护了一张系统调用分派表,可以根据上一步得到的系统调用号计算系统调用表项的地址,使用libvmi的read_addr_va()和translate_v2ksym()解析地址得到内核符号表system.map中存的系统调用名。

本发明实施例提供的访问控制中主体运行时可信验证方法及系统,设计并定义了系统调用的动态等级描述,以区别对待主体进程内存数据的度量步骤,在保证安全的同时,最大限度地降低了由频繁度量主体所产生的性能损耗。

基于上述实施例的内容,作为一种可选实施例,上述判定系统调用的等级,包括但不限于以下步骤:基于系统调用的重要性等级和使用频率,构建对等级进行定义的二元组模型;根据二元组模型确定系统调用的等级。

鉴于系统调用的多样性,本发明实施例是通过对系统调用的动态分析完成对于系统调用的分类。具体地可以包括以下两个方面:

其一,根据系统调用重要程度的不同进行分级。

当前绝大数的威胁攻击都需要首先定位到可利用的漏洞,然后通过漏洞执行攻击代码这两个过程,而最重要的执行攻击代码这个过程需要系统调用的支持,非法攻击者无法绕过系统调用进行攻击的。因此通过对应用程序生命周期内的所有系统调用进行分级,并根据敏感程度的不同来对进程局部代码进行不同程度的可信度量对于保证进程运行时的可信是极其重要的。

linux系统内核定义了几百个系统调用,从功能上看系统调用主要分为文件系统类、进程类、网络类、其他类。在各类中按照重要性等级进一步分类,在运行过程中完成关键过程、体现程序功能以及会对安全性造成影响的系统调用称为重要系统调用。如表一所示,列举了部分分类情况:

表一:linux系统中部分系统调用的分类列表

其二,根据应用程序运行的整个生命周期内系统调用被执行的频率分级。

不同的应用程序在加载运行过程中会生成不同的系统调用,对于不同整个生命周期中各自使用了哪些系统调用无法统一,本发明实施例中的主体可信验证方法,可以适用于不同的应用程序场景,其中每个应用程序场景中都动态对应一个系统调用动态使用频率表。因此,在保证可信环境中执行一个应用程序,尽可能多地获取用到的所有系统调用,并按照使用频率的高低排序形成当前应用程序的频率表,将其中涉及到的系统调用划分为低频系统调用和高频系统调用两类。相应地,对于任何一个应用程序来说,这里的频率表都不是完全固定不变的,其中系统调用的使用频率变化会受到时间、环境及操作等因素的影响,因此,频率表是在可信运行过程中动态学习变化的,这样能够有效地应对主体运行过程中遭受的未知风险攻击。

综上所述,在本发明实施例提供了一种系统等级的定义以及等级度量方法。具体地,结合系统调用的重要性等级和使用频率的两种分类方式,构造一个对系统的等级进行定义的二元组模型,模型中元素包括重要性等级和频率,可以描述为<重要性i,频率f>。

基于上述实施例的内容,上述等级则可以包括:重要低频等级、重要高频等级、非重要低频等级和非重要高频等级。

进一步地,基于等级,度量系统调用的主体进程内存数据,则可以包括以下几个可能性:

确定等级为重要低频等级,则对每次获取的系统调用进行主体进程内存数据的度量。

确定等级为重要高频等级,则对预设时间间隔内所获取的系统调用进行主体进程内存数据的度量。

确定等级为非重要低频等级或非重要高频等级,则不对系统调用进行主体进程内存数据的度量。

具体地,对系统调用的动态分析的标准可以设置为:

a.当系统调用是重要系统调用(i=1),且在当前应用程序的频率表中属于低频系统调用(f=1),则每次遇到该系统调用就度量对应的进程内存;

b.当系统调用是重要系统调用(i=1),且在当前应用程序的频率表中属于高频系统调用(f=2),则每次遇到该系统调用就相隔预设时间t对相应的进程内存进行度量;

c.当系统调用为非重要系统调用(i=2),且在当前应用程序的频率表中属于低频系统调用(f=1),则每次遇到该系统调用暂不度量;当系统调用非重要系统调用(i=2),在当前应用程序的频率表中属于高频系统调用(f=2),则每次遇到该系统调用也暂不度量。上述描述如表二所示。

表二:度量系统调用的主体进程的选取方式列表

基于上述实施例的内容,确定所述度量结果为不合格,则禁止所述应用程序继续运行。

本发明实施例提供一种访问控制中主体运行时可信验证系统,如图2所示,包括但不限于系统调用模块1、等级判定模块2、度量模块3以及进程控制模块4,其中:

系统调用模块1用于加载应用程序,并获取应用程序在运行阶段的系统调用;等级判定模块2用于判定系统调用的等级;度量模块3用于基于所述等级,度量系统调用的主体进程内存数据;进程控制模块4用于根据度量结果,控制应用程序的运行状态。

具体地,上述访问控制中主体运行时可信验证系统在执行主体可信验证时,可以按照图3所示的方法运行,具体为:

在主体可信验证开始后,应用程序被系统调用模块1预加载执行,并同时进行拦截以获取所述应用程序在运行阶段的系统调用。

进一步地,将获取的系统调用输入至等级判定模块2,调用判定模块2判定所拦截获取到的系统调用的等级。

进一步地,度量模块3根据基于等级判定模块2所判定的等级,度量系统调用的主体进程内存数据。具体地,当等级为重要低频等级,则利用度量模块3对每次获取的系统调用进行主体进程内存数据的度量;当等级为重要高频等级,则利用度量模块3对预设时间间隔内所获取的系统调用进行主体进程内存数据的度量;除此之外,当等级为其它级别时,则不对系统调用进行主体进程内存数据的度量。

进一步地,度量模块3将最终的度量结果反馈至进程控制模块4,进程控制模块4根据度量结果,对应用程序的运行状态进行控制,包括允许或禁止应用程序继续运行。

本发明实施例提供的访问控制中主体运行时可信验证系统,综合重要性和频率两个要素,设计并定义了系统调用的动态等级描述,以区别对待主体进程内存数据的度量步骤,在保证安全的同时,最大限度地降低了由频繁度量主体所产生的性能损耗。

图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(communicationsinterface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行如下步骤:加载应用程序,并获取应用程序在运行阶段的系统调用;判定系统调用的等级;基于等级,度量系统调用的主体进程内存数据;确定度量结果为合格,则允许应用程序继续运行。

此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括以下步骤:加载应用程序,并获取应用程序在运行阶段的系统调用;判定系统调用的等级;基于等级,度量系统调用的主体进程内存数据;确定度量结果为合格,则允许应用程序继续运行。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

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

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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