一种防止在计算机中运行的应用系统被攻击或篡改的方法,先将各可加载模块被开发商各自拥有的数字证书签名,产生证书链和可加载模块签名信息作为信任书文件保存。从该文件获取证书链确认验证者本身;调用者根据该文件可找到模块签名信息,并从磁盘和内存映象空间对被加载模块验证来确定在装载前、后没有被恶意攻击者篡改,而且签名验证可随时在线进行,同时可对加载模块中的函数调用进行安全链接检查,从代码级保证动态计算环境的安全。(*该技术在2021年保护过期,可自由使用*)
【技术实现步骤摘要】
本专利技术涉及系统安全技术,具体涉及基于公开密钥体制(PublicKey Infrastructure,PKI)的数字证书在计算机应用系统中的应用,更具体地说,涉及一种防止在计算机中运行的应用系统代码被攻击或篡改的方法。随着计算机的普及,互联网的广泛应用,各种病毒、非法入侵程序对计算机应用系统安全造成极大威胁。这些非法代码往往通过修改应用系统代码或入口达到破坏目的。目前,解决问题主要是通过系统级安全进行防范,如防火墙、各种杀毒软件,并且它们只能针对现有的系统漏洞或已知的病毒特征码扫描。对于预防新的病毒和其它非法入侵程序具有滞后性,往往在已遭受攻击后才找出解决办法进行补救。而现行的在计算机上运行的应用系统,特别是大型的和复杂的应用系统,都采用了模块化设计,经常需要调用多个软件模块或其它应用程序,并且根据需要会随时从环境中添加和移走这些模块。为了防止恶意攻击者的攻击或篡改,建立一个安全可信任的计算环境,特别是在动态计算环境中,对应用系统、各加载模块和调用程序之间的验证处理和安全检查显得格外重要。本专利技术的目的在于,提供,可以克服现有技术存在的上述缺点,特别是可以有效地防止来自应用系统外部的非法代码的入侵,保证在动态环境下应用系统、各加载模块和其它调用程序的安全性,使得运行在计算机中的应用系统的功能不被破坏和影响,从而建立一个安全可信任的计算环境。本专利技术的目的是基于以下认识实现的,由于基于公开密钥框架(PKI)的数字签名是实现上述验证处理和安全检查的比较完善的算法。本专利技术提出并利用认证系统的分层认证结构(证书链)和数字证书的签名验证技术。一方面,利用证书链验证了验证者本身(开发模块开发商)的真实性;另一方面,利用数字证书的签名验证技术,采用自我完整性检查、应用系统和各模块相互之间进行双向认证以及安全链接检查,从代码级去保证动态计算环境的安全。本专利技术的目的是这样实现的,构造,所述应用系统包括第一子系统和第二子系统,其特征在于,包括以下步骤根据第一子系统中的可加载模块A1、加载应用程序A2和第二子系统中的可加载模块B1和加载应用程序B2设置信任书文件;启动所述第一子系统时,通过查找所述信任书文件,获得证书链和模块信息,由证书链验证开发商的真实性验证对欲装载模块A1、A2进行完整性检查(即签名验证),如果签名验证成功则装载所述模块A1、A2;将所述第一子系统中模块A1、A2装入可执行环境中,在运行环境中,验证所述模块A1、A2在执行环境中的内存映象代码的杂凑值,将之与事先计算好的杂凑值进行比较,如果比较两者相同,验证装载后的完整性,其后可随时相互在线验证,防止恶意攻击者的在线攻击。启动第二子系统时,装载模块B1、B2的验证方法与上述相同。对应用系统和模块、模块和模块之间的函数调用进行安全链接检查,检查被调用的函数地址是否在所属模块的内存映象地址空间内。按照本专利技术提供的方法,所述应用系统和第一子系统由第一开发商提供,所述第二子系统由第二开发商提供,第一子系统调用第二子系统,其特征在于,所述在包含第一子系统和第二子系统的应用系统中设置信任书文件的步骤包括以下步骤由所述第一开发商生成根证书,使第一子系统中的动态可装载模块A1、A2实现自我签名;所述第一开发商用根证书为第二开发商拥有的数字证书签名,形成第二级数字证书,所述第二开发商利用自己的数字证书为所述第二子系统动态可加载模块B1、可加载应用程序B2签名;将所述根证书、所述数字证书形成的证书链以及模块信息、被签名的模块代码的杂凑值(信息摘要)、签名验证的具体算法以文件方式保存作为信任书文件,按照本专利技术提供的方法,其特征在于,所述完整性验证包括以下步骤从信任书文件中根据证书链读取签名验证用的模块证书和模块信息,验证验证者本身的真实性;从磁盘和内存映象空间两方面计算模块代码的杂凑值,将之与证书中事先计算好的杂凑值进行比较,如果一致,则验证了模块在装载前和装载后没有被他人篡改;相互验证能在线进行,防止在线攻击;对加载模块的函数调用实行安全链接检查,检查函数地址是否在模块内存映性地址空间内。按照本专利技术提供的方法,其特征在于,所述第一、第二子系统运行时,所述信任书文件存储在外部存储介质中。实施本专利技术提供的防止在计算机中运行的应用系统被攻击或篡改的方法,具有以下显著优点应用了基于公开密钥框架(PKI)的数字签名技术,通过利用数字证书的签名验证技术,采用自我完整性检查、应用系统、各加载模块和其它被调用程序之间的双向认证,从磁盘和内存映象空间两方面分别对已签名的代码进行验证,确定代码在装载前或装载后没有被恶意攻击者篡改;在动态计算环境中,加载模块会不断地从环境中添加和移走,本方法能保证相互验证处理在线进行,即在应用系统运行中能随时进行相互验证处理,有效地防止了恶意攻击者的在线攻击;对加载模块的函数调用实行安全链接检查,检查函数地址是否在模块内存代码空间内。从这三个方面,实现在代码级上保证动态计算环境的安全性。结合附图和实施例,进一步说明本专利技术的特点,附图中附图说明图1是按照本专利技术的方法形成签名及验证证书链的示意图;图2是按照本专利技术的方法,对可装载模块进行验证的过程示意图;在图1示出的本专利技术的方法原理性结构图中,设应用系统A本身有可加载模块A1和可加载应用程序A2,该A1、A2需要调用由开发商B开发的可加载模块B1和可加载应用程序B2,具体地说,即在一个应用系统中,有一个被调用的子系统SA,以及一个被调用的子系统SB,子系统SA包括可加载模块A1和可加载应用程序A2,子系统SB包括可加载模块B1和可加载应用程序B2,其中应用系统A和子系统SA、由开发商A开发,子系统SB由开发商B开发,子系统SA调用子系统SB。图1中,方框102、104表示数字证书,箭头线101、103表示私钥的对象。为检测和防止在静态和动态条件下应用系统被攻击或篡改,由应用系统提供者预先为应用系统准备信任书文件,该文件可以随应用系统一起销售或分发,该信任书文件是这样形成的1)开发商A生成自我签名的根证书CA,给系统A的可装载模块A1、A2实现自我签名,包括计算模块A1、A2代码的杂凑值(即信息摘要),并签名杂凑值。2)开发商A用根证书为开发商B拥有的数字证书签名,形成第二级数字证书CB,开发商B用数字证书CB对自己开发的模块B1、B2签名,即用证书CB对应的算法和私钥计算模块B1、B2代码的杂凑值,并签名杂凑值。开发商B也可为提供模块的其他开发商生成自己签名的数字证书,如此类推。3)将1、2形成证书链作为信任书以文件方式保存。信任书还记录了模块的信息,被签名的模块代码的杂凑值,签名日期,签名验证的具体算法等等。当应用系统分发到用户,在启动应用系统之前,首先,找出该应用系统的信任书文件,从中读取签名验证用的证书链和模块信息,在模块装载前,按以下步骤验证其完整性1)根据证书链验证验证者本身(即开发商提供的各级数字证书)的真实性;2)计算模块代码的杂凑值(即信息摘要),由证书获得事先计算好的杂凑值,与当前计算得到的杂凑值比较,如果一致,则验证了模块没有被他人篡改。如果上述验证了静态模块没有被他人篡改,则准备装载模块A1、A2。将模块A1、A2装入可执行环境中,在运行环境中,验证模块在执行环境中的内存映象,本文档来自技高网...
【技术保护点】
一种防止在计算机中运行的应用系统被攻击或篡改的方法,所述应用系统包括第一子系统和第二子系统,其特征在于,包括以下步骤: 设置信任书文件; 启动所述第一子系统时,通过查找所述信任书文件对所述第一子系统欲装载模块A1、A2进行完整性验证,如果检验完整则装载所述模块A1、A2; 将所述第一子系统的模块A1、A2装入可执行环境中,在运行环境中,随时或定时验证所述模块A1、A2在执行环境中的内存映象代码的杂凑值,将之与事先计算好的杂凑值进行比较,如果比较两者相同,则验证没有出现恶意攻击者的攻击。
【技术特征摘要】
【专利技术属性】
技术研发人员:刘华芳,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。