一种应用程序完整性验证方法

文档序号:8457508阅读:2780来源:国知局
一种应用程序完整性验证方法
【技术领域】
[0001]本发明涉及计算机安全技术。
【背景技术】
[0002]随着物联网、移动互联网和云计算等新型技术的快速发展,信息技术已深刻影响到人们的生活方式,无处不在的信息已经成为国家、企业和个人的重要资产。随着网络安全威胁种类日益多样化,这些重要的信息资产将暴露在越来越多的威胁中。比如恶意软件的非法篡改:恶意软件常常通过篡改正常程序的代码和数据,并植入恶意代码来完成自身想要到达的目的。一旦被篡改程序被执行,从而威胁到系统的安全,可能给用户带来巨大的损失和灾难性的打击。因此,只要能在恶意软件或代码执行前发现并阻止其运行,就可以保证应用程序的安全。
[0003]现有的软件完整性验证与保护技术通常需要额外的硬件支持。一方面增加了硬件成本开销;另一方面,由于引入了硬件处理,增加了与硬件的交互,带来了额外的性能开销。

【发明内容】

[0004]本发明所要解决的技术问题是,提供一种不需要硬件开销的应用程序完整性验证方法。
[0005]本发明为解决上述技术问题所采用的技术方案是,一种应用程序完整性验证方法,包括以下步骤:
[0006]I)设置步骤:
[0007]1-1)应用层接收对应用程序完整性验证进行设置的请求,触发应用层中的标识设置模块;
[0008]1-2)标识设置模块判断请求类型,当请求类型为添加完整性验证时,则计算该应用程序的完整性校验值,在该应用程序的扩展属性中添加完整性扩展属性,并将完整性校验值作为该完整性扩展属性的值;当请求类型为取消完整性验证时,则删除该应用程序的完整性扩展属性值;
[0009]2)验证步骤:
[0010]2-1)内核层捕获打开文件系统调用后,触发内核层中的验证代理模块;
[0011]2-2)验证代理模块获取当前应用程序的文件描述符,通过该文件描述符查看应用程序,判断应用程序是否有完整性扩展属性值,如是,进入步骤2-3),如否,进入步骤2-5);
[0012]2-3)验证代理模块获取应用程序为完整性验证所添加的扩展属性值,计算当前打开应用程序的完整性校验值,再与获取的扩展属性值进行比较,当比较结果相同则进入步骤2-5),否则进入步骤2-4);
[0013]2-4)验证代理模块返回打开文件系统调用一个无用的文件描述符,同时提示应用程序被破坏;
[0014]2-5)验证代理模块返回打开文件系统调用正确的文件描述符。
[0015]本发明的有益效果是,本发明属于加载期的验证方法,与文件系统完整性验证方法相比减少了验证开销;通过使用文件系统自带的扩展属性存完整性扩展属性值,不需要辅助硬件的存储支持,降低了成本、提高了性能、增加了灵活性。
【附图说明】
[0016]图1应用程序完整性验证框架图;
[0017]图2应用程序完整性验证流程图;
[0018]图3内核验证代理执行过程图;
[0019]图4标识设置程序执行过程图。
【具体实施方式】
[0020]接下来依次结合附图1、附图2、附图3以及附图4对本发明申请的技术方案的主要实现原理、【具体实施方式】及其对应能够达到的有益效果进行详细地阐述。
[0021]图1为具有应用程序完整性验证功能的操作系统100,在原有操作系统上修改两个部分,分别是应用层101中添加标识设置程序103以及在内核102中添加验证代理104。标识设置程序103为方便用户对有权限的应用程序设置是否需要完整性验证,验证代理104用于对需要完整性验证的应用程序进行验证。
[0022]其中标识设置程序103所包含的构成元素有:
[0023]Hash计算模块105,根据可信计算中完整性验证的方法,优选使用Hash算法对应用程序进行完整性验证。该模块用于计算应用程序预期的完整性度量值。其中的Hash函数包括 MD4、MD5、SHAl、SHA2 等。
[0024]扩展属性添加模块107,该模块用于标记需要完整性验证的应用程序,通过添加扩展属性的方法,扩展属性的值为Hash计算模块105的计算结果。
[0025]扩展属性删除模块109,该模块用于取消应用程序的完整性验证标记,通过删除为完整性验证所添加的扩展属性。
[0026]其中验证代理104所包含的构成元素有:
[0027]Hash计算模块106:该模块是和Hash计算模块105相同,只是该模块位于内核层,完成对需要完整性验证的应用程序进行Hash计算。
[0028]文件扩展属性获取模块108:该模块用于获取应用程序的扩展属性值,此扩展属性值是为完整性验证而添加的扩展属性值。
[0029]比较模块110:该模块用于比较Hash计算模块106和文件扩展属性获取模块108所获得的两值。
[0030]打开文件系统调用111:有对文件的重要操作,如读、写、执行等,都需要先打开文件。应用层101通过打开文件系统调用111对文件进行各种操作,内核中验证代理104通过在打开文件系统调用111中完成对需要完整性验证的程序的验证。
[0031]参考图2为本发明实施案例所使用的应用程序完整性验证流程图。
[0032]其具体步骤是:
[0033]开始步骤200,启动系统,为应用程序的执行提供环境。
[0034]步骤201:用户根据当前对应用程序安全级别的要求,发出对应用程序完整性验证请求。
[0035]步骤202:判断用户请求类型。用户的请求可以是为应用程序添加完整性验证,也可以是取消完整性验证功能。
[0036]步骤203:当用户请求201是删除完整性验证功能时,删除为完整性验证而添加的扩展属性。
[0037]步骤204:当用户请求是添加完整性验证功能时,需要计算应用程序的Hash值。
[0038]步骤205:为完整性验证添加扩展属性,其扩展属性的值是步骤204计算所得的Hash 值。
[0039]步骤206:内核层捕获打开文件系统调用,获取文件描述符。
[0040]步骤207:据步骤206获取的文件描述符查找该应用程序,判断应用程序是否有为完整性验证而设置的扩展属性。
[0041]步骤208:当步骤208中判断结果是有完整性扩展属性时,获取该文件的完整性扩展属性的值。
[0042]步骤209:Hash值计算。此处计算的Hash值是内核中验证完整性时,对应图1中的106模块,而步骤204是执行在应用层,为内核验证提供比较参考值,对应图1中的105模块。
[0043]步骤210:判断步骤208和步骤209所得的两值是否相等。如果两值不相等,则可证明该应用程序的完整性遭到破坏;如果两值相等,则可说明该应用程序是完整的,未遭篡改。
[0044]步骤211:当步骤210返回结果为不相等时,给步骤206的系统调用返回无用的文件描述符,使对应用程序后续的操作失效,同时提示用户该应用程序的完整性遭到破坏。
[0045]步骤212:当步骤207中应用程序没有完整性扩展属性或是步骤210返回结果为相等,给打开文
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1