关键函数安全调用方法及装置制造方法
【专利摘要】本发明实施例提供一种关键函数安全调用方法及装置。本发明关键函数安全调用方法,包括:调用关键函数时对调用所述关键函数的进程进行解锁校验,若校验通过,则生成运行所需的生成件;当所述关键函数调用所述关键函数内部的函数时,若检测到所述生成件,则跳过解锁校验;当所述关键函数调用结束后,对所述进程进行加锁,并销毁所述生成件。本发明实施例提高了系统的安全性。
【专利说明】关键函数安全调用方法及装置
【技术领域】
[0001]本发明实施例涉及计算机【技术领域】,尤其涉及一种关键函数安全调用方法及装置。
【背景技术】
[0002]操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,提供了各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口。实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按着应用程序的资源请求,为其分配资源,如:划分中央处理器(Central ProcessingUnit,简称CPU)时间,内存空间的开辟,调用打印机等。
[0003]权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。Root权限跟SYSTEM权限可以理解成一个概念(高于Administrator权限)。Root权限是Linux和unix系统中的超级管理员,该权限拥有整个系统至高无上的权力,所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到Root权限,用windows的方法理解也就是将自己的非法用户添加到Administrators用户组。Administrator是Windows NT内核系统中的超级管理员,也拥有极高的权限,而SYSTEM用户组可以理解为计算机系统自身的权限。可以操作一切对象,对一切进程进行操作。不良的权限管理系统,必然留下系统漏洞,给黑客可趁之机。很多软件可以轻松通过统一资源定位符(Uniform Resource Locator,简称URL)侵入、SQL注入等模式,轻松越权获得未授权数据。甚至对系统数据进行修改、删除,造成巨大损失。
[0004]现有技术一般通过用户权限控制和进程的权限控制,来限制用户或者进程的调用。即一个用户或者进程拥有对应的权限,调用过程只对此权限进行检验。经过用户或进程权限校验之后的函数级调用都可以执行。
[0005]现有技术的问题是,如果用户或者进程以非法手段获得较高权限,就可以执行所有函数调用,系统风险性大大提闻。
【发明内容】
[0006]本发明实施例提供一种关键函数安全调用方法及装置,以克服现有技术中系统风险性较大的问题。
[0007]第一方面,本发明实施例提供一种关键函数安全调用方法,包括:
[0008]调用关键函数时对调用所述关键函数的进程进行解锁校验,若校验通过,则生成运行所需的生成件;[0009]当所述关键函数调用所述关键函数内部的函数时,若检测到所述生成件,则跳过解锁校验;
[0010]当所述关键函数调用结束后,对所述进程进行加锁,并销毁所述生成件。
[0011]结合第一方面,在第一方面的第一种实现方式中,还包括:
[0012]若校验不通过,则禁止调用所述关键函数。
[0013]结合第一方面、或第一方面的第一种实现方式,在第一方面的第二种实现方式中,所述调用所述关键函数时对调用所述关键函数的进程进行解锁校验,包括:
[0014]使用函数调用栈校验的方式对所述进程进行解锁校验;或,
[0015]使用进程标识和系统时间生成解锁键的方式对所述进程进行解锁校验。
[0016]结合第一方面的第二种实现方式,在第一方面的第三种实现方式中,所述检测到所述生成件之后,包括:
[0017]检测所述生成件是否合法,若检测到所述生成件合法,则继续调用,否则返回。
[0018]第二方面,本发明实施例提供一种关键函数安全调用装置,包括:
[0019]校验模块,用于调用关键函数时对调用所述关键函数的进程进行解锁校验,若校验通过,则生成运行所需的生成件;
[0020]处理模块,用于当所述关键函数调用所述关键函数内部的函数时,若检测到所述生成件,则跳过解锁校验;
[0021]所述处理模块,还用于当所述关键函数调用结束后,对所述进程进行加锁,并销毁所述生成件。
[0022]结合第二方面,在第二方面的第一种实现方式中,所述处理模块,还用于:
[0023]若校验不通过,则禁止调用所述关键函数。
[0024]结合第二方面、或第二方面的第一种实现方式,在第二方面的第二种实现方式中,所述校验模块,具体用于:
[0025]使用函数调用栈校验的方式对所述进程进行解锁校验;或,
[0026]使用进程标识和系统时间生成解锁键的方式对所述进程进行解锁校验。
[0027]结合第二方面的第二种实现方式,在第二方面的第三种实现方式中,所述处理模块,还用于:
[0028]检测所述生成件是否合法,若检测到所述生成件合法,则继续调用,否则返回。
[0029]本发明实施例关键函数安全调用方法及装置,通过调用关键函数时对调用关键函数的进程进行解锁校验,若检测到进程已校验通过,则生成运行所需的生成件,当关键函数调用关键函数内部的函数时,若检测到生成件,则跳过解锁校验,当关键函数调用结束后,对进程进行加锁,并销毁生成件,通过对函数调用的校验,限制了函数的非法调用,实现了函数级调用的安全性,解决了现有技术中系统风险性较大的问题。
【专利附图】
【附图说明】
[0030]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。[0031]图1为本发明关键函数安全调用方法实施例一的流程图;
[0032]图2为本发明关键函数安全调用装置实施例一的结构示意图;
[0033]图3为本发明关键函数安全调用设备实施例一的结构示意图。
【具体实施方式】
[0034]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035]图1为本发明关键函数安全调用方法实施例一的流程图,如图1所示,本实施例的方法可以包括:
[0036]步骤101、调用关键函数时对调用关键函数的进程进行解锁校验,若校验通过,则生成运行所需的生成件。
[0037]步骤102、当关键函数调用关键函数内部的函数时,若检测到生成件,则跳过解锁校验。
[0038]步骤103、当关键函数调用结束后,对进程进行加锁,并销毁生成件。
[0039]可选地,本实施例的方法,还包括:
[0040]若校验不通过,则禁止调用关键函数。
[0041]具体地,调用的关键函数的入口存在进程解锁的校验函数,会对是否解锁进行校验,即在调用关键函数时对调用关键函数的进程进行解锁校验。如果解锁校验失败就认为是非法调用,禁止对该关键函数进行调用,从而保护系统的安全性。如果解锁校验成功,则生成运行所需的生成件,继续执行调用,关键函数调用结束时再进行本进程锁定。本发明实施例还可以用于其他特性或者业务的关键函数不限于用户权限,而对应的检测规则,可以结合具体的业务情况加以变化。不同的检测规则,则要分开,比如获取权限和硬盘格式化,就是两个不同的东西,不能使用同一个加锁解锁来控制。
[0042]例如,假设存在进程提权的标准API函数funcl,对函数funcl充分进行了标准的检测和认证,可以保证安全性。函数funcl里面调用了提权的关键函数func2,func2调用了提权的关键函数func3、func4等进行相应的功能设置。函数funcl在调用func2前会对提权功能进行解锁校验,当调用func3、func4等都会进行解锁校验。当func2被调用时,会对解锁进行全面校验,若校验通过,则生成运行所需的生成件,而当func2调用func3、func4时,如发现已经存在校验通过的生成件,则跳过解锁校验,减少对运行效率的影响。当函数funcl调用完func2时,再次对提权功能加锁,同时销毁对应的生成件。从而可以保证未通过API的提权操作都无法提权,这样可以杜绝权限的非法提升。
[0043]某些关键函数被正常使用时,调用这些关键函数的函数一般就固定几个,一般不会出现其它调用者。通过限制调用,可以减少关键函数被非法调用的风险结合进程的权限,可以更好地保护系统安全。
[0044]可选地,调用关键函数时对调用关键函数的进程进行解锁校验之前,还包括:
[0045]使用函数调用栈校验的方式对进程进行解锁校验;或,
[0046]使用进程标识和系统时间生成解锁键的方式对进程进行解锁校验。[0047]具体地,进程解锁可以采用如下两种方式或者两种方式的组合:函数调用栈校验的方式,通过检查函数调用栈中可以被哪些函数调用,校验所述进程是否可以解锁,若所述函数调用栈中没有当前调用该关键函数的函数,则校验失败,禁止调用;使用当前进程标识和系统时间生成解锁键的方式,解锁键的有效周期很短,这样可以保证解锁校验不会失效。
[0048]使用当前进程标识和系统时间生成解锁键的方式,具体过程例如可以是:解锁时的时间为xl,进程ID为yl,则通过加密密钥函数fl (xl, yl)计算生成密钥keyl。判断时获取时间x2,进程ID为y2,则通过解密函数f2 (x2, y2)计算生成密钥key2,且记录当前时间x2。可以对已知的明文采用keyl加密key2解密,判断上述加密解密是否配对,如解密之后的明文与原始的明文相同,则说明解密成功,就判定允许执行。后面函数发现这个解密密钥时,判断获取时间x3,与x2相比判断是否在有效期内,若在有效期内则通过解密函数f2(x3, y3)计算生成密钥key3。此时若key3等于key2,则判断成功,否则禁止调用。这样可以有效保证周期的控制。实际操作过程中还可以通过其他方式,并不只限于此。
[0049]可选地,检测到生成件之后,包括:
[0050]检测生成件是否合法,若检测到生成件合法,则继续调用,否则返回。
[0051]具体地,解锁校验通过后,关键函数调用该关键函数内部的函数时,可以先检测生成件,若检测到生成件之后,还可以再检测生成件的合法性,进一步保证函数调用的安全性,例如检测该生成件的时间是否已失效。若不合法,则异常返回。
[0052]本实施例,通过调用关键函数时对调用关键函数的进程进行解锁检测校验,若检测到进程已解锁校验通过,则生成运行所需的生成件,当关键函数调用关键函数内部的函数时,若检测到生成件,则跳过解锁检测校验,当关键函数调用结束后,对进程进行加锁,并销毁生成件,通过对函数调用的校验,限制了函数的非法调用,实现了函数级调用的安全性,解决了现有技术中系统风险性较大的问题。
[0053]图2为本发明关键函数安全调用装置实施例一的结构示意图,如图2所示,本实施例的关键函数安全调用装置20可以包括:校验模块201和处理模块202,其中,校验模块201,用于调用关键函数时对调用所述关键函数的进程进行解锁校验,若校验通过,则生成运行所需的生成件;处理模块202,用于当所述关键函数调用所述关键函数内部的函数时,若检测到所述生成件,则跳过解锁校验;处理模块202,还用于当所述关键函数调用结束后,对所述进程进行加锁,并销毁所述生成件。
[0054]可选地,处理模块202,还用于:
[0055]若校验不通过,则禁止调用所述关键函数。
[0056]可选地,校验模块201,具体用于:
[0057]使用函数调用栈校验的方式对所述进程进行解锁校验;或,
[0058]使用进程标识和系统时间生成解锁键的方式对所述进程进行解锁校验。
[0059]可选地,处理模块202,还用于:
[0060]检测所述生成件是否合法,若检测到所述生成件合法,则继续调用,否则返回。
[0061]本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0062]图3为本发明关键函数安全调用设备实施例一的结构示意图。如图3所示,本实施例提供的关键函数安全调用设备30包括处理器301和存储器302。存储器302存储执行指令,当关键函数安全调用30运行时,处理器301与存储器302之间通信,处理器301调用存储器302中的执行指令,用于执行方法实施例一所述的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0063]在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0064]所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0065]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0066]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种关键函数安全调用方法,其特征在于,包括: 调用关键函数时对调用所述关键函数的进程进行解锁校验,若校验通过,则生成运行所需的生成件; 当所述关键函数调用所述关键函数内部的函数时,若检测到所述生成件,则跳过解锁校验; 当所述关键函数调用结束后,对所述进程进行加锁,并销毁所述生成件。
2.根据权利要求1所述的方法,其特征在于,还包括: 若校验不通过,则禁止调用所述关键函数。
3.根据权利要求1或2所述的方法,其特征在于,所述调用所述关键函数时对调用所述关键函数的进程进行解锁校验,包括: 使用函数调用栈校验的方式对所述进程进行解锁校验;或, 使用进程标识和系统时间生成解锁键的方式对所述进程进行解锁校验。
4.根据权利要求3所述的方法,其特征在于,所述检测到所述生成件之后,包括: 检测所述生成件是否合法,若检测到所述生成件合法,则继续调用,否则返回。
5.一种关键函数安全调用装置,其特征在于,包括: 校验模块,用于调用关键函数时对调用所述关键函数的进程进行解锁校验,若校验通过,则生成运行所需的生成件; 处理模块,用于当所述关键函数调用所述关键函数内部的函数时,若检测到所述生成件,则跳过解锁校验; 所述处理模块,还用于当所述关键函数调用结束后,对所述进程进行加锁,并销毁所述生成件。
6.根据权利要求5所述的装置,其特征在于,所述处理模块,还用于: 若校验不通过,则禁止调用所述关键函数。
7.根据权利要求5或6所述的装置,其特征在于,所述校验模块,具体用于: 使用函数调用栈校验的方式对所述进程进行解锁校验;或, 使用进程标识和系统时间生成解锁键的方式对所述进程进行解锁校验。
8.根据权利要求7所述的装置,其特征在于,所述处理模块,还用于: 检测所述生成件是否合法,若检测到所述生成件合法,则继续调用,否则返回。
【文档编号】G06F21/54GK103970540SQ201410205877
【公开日】2014年8月6日 申请日期:2014年5月15日 优先权日:2014年5月15日
【发明者】周冲, 李佳玲 申请人:北京华为数字技术有限公司