一种基于Linux的程序安全加载方法及系统的制作方法

文档序号:9506460阅读:281来源:国知局
一种基于Linux的程序安全加载方法及系统的制作方法【
技术领域
】[0001]本发明涉及安全
技术领域
,特别涉及一种基于Linux的程序安全加载方法及系统。【
背景技术
】[0002]随着计算机技术的不断发展,已有越来越多的人开始推广和使用Linux系统,其安全性也受到越来越多的挑战。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于P0SIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。[0003]在程序运行的过程中,病毒以及恶意程序可能会通过篡改程序,来实现入侵,从而给系统安全带来威胁。【
发明内容】[0004]有鉴于此,本发明提供一种基于Linux的程序安全加载方法及系统,以对程序进行校验,保证系统安全性。[0005]第一方面,本发明提供了一种基于Linux的程序安全加载方法,预先计算每一个程序的哈希值,并将该哈希值添加到相应程序中;包括:[0006]加载待执行的目标程序;[0007]计算所述目标程序当前的哈希值;[0008]比较所述当前的哈希值与所述目标程序中包含的哈希值是否相同,若相同,则对所述目标程序的完整性校验通过;若不相同,则对所述目标程序的完整性校验不通过。[0009]优选地,在所述计算所述目标程序当前的哈希值之前,进一步包括:[0010]获取执行所述加载带执行的目标程序操作的父进程,判断该父进程是否包括安全标识,在该父进程包括安全标识时,则对所述目标程序的可信度验证通过,并执行所述计算所述目标程序当前的哈希值。[0011]优选地,[0012]所述目标程序包括:应用程序;[0013]在计算所述目标程序当前的哈希值之前,进一步包括:在启动sys_execve时,执行所述计算所述目标程序当前的哈希值。[0014]优选地,[0015]所述目标程序包括:内核程序;[0016]在计算所述目标程序当前的哈希值之前,进一步包括:在启动load_module时,执行所述计算所述目标程序当前的哈希值。[0017]优选地,[0018]所述计算每一个程序的哈希值,包括:计算每一个程序的内容、权限和该程序所依赖的数据库中的至少一项的哈希值。[0019]第二方案,本发明提供了一种基于Linux的程序安全加载系统,包括:[0020]第一计算单元,用于计算每一个程序的哈希值,并将该哈希值添加到相应程序中;[0021]加载单元,用于加载待执行的目标程序;[0022]第二计算单元,用于计算所述目标程序当前的哈希值;[0023]确定单元,用于比较所述当前的哈希值与所述目标程序中包含的哈希值是否相同,若相同,则对所述目标程序的完整性校验通过;若不相同,则对所述目标程序的完整性校验不通过。[0024]优选地,进一步包括:[0025]处理单元,用于获取执行所述加载带执行的目标程序操作的父进程,判断该父进程是否包括安全标识,在该父进程包括安全标识时,则对所述目标程序的可信度验证通过,并触发所述第二计算单元执行所述计算所述目标程序当前的哈希值。[0026]优选地,[0027]在所述目标程序包括应用程序时,进一步包括:第一检验单元,用于在检验到sys_execve启动时,触发所述第二计算单元执行所述计算所述目标程序当前的哈希值。[0028]优选地,[0029]在所述目标程序包括内核程序时,进一步包括:第二检验单元,用于在检验到load_module启动时,触发所述第二计算单元执行所述计算所述目标程序当前的哈希值。[0030]优选地,所述第一计算单元,用于计算每一个程序的内容、权限和该程序所依赖的数据库中的至少一项的哈希值。[0031]本发明实施例提供了一种基于Linux的程序安全加载方法及系统,通过计算程序的哈希值,并将该特征值添加到相应程序中,在程序运行时对程序的该哈希值进行校验,只有校验通过的程序才允许其运行,从而可以保证系统的安全性。【附图说明】[0032]图1是本发明实施例提供的方法流程图;[0033]图2是本发明另一实施例提供的方法流程图;[0034]图3是本发明实施例提供的系统硬件架构图;[0035]图4是本发明实施例提供的系统结构示意图;[0036]图5是本发明另一实施例提供的系统结构示意图。【具体实施方式】[0037]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0038]如图1所示,本发明实施例提供了一种基于Linux的程序安全加载方法,该方法可以包括以下步骤:[0039]步骤101:预先计算每一个程序的哈希值,并将该哈希值添加到相应程序中。[0040]步骤102:加载待执行的目标程序。[0041]步骤103:计算所述目标程序当前的哈希值。[0042]步骤104:比较所述当前的哈希值与所述目标程序中包含的哈希值是否相同,若相同,执行步骤105;若不相同,执行步骤106。[0043]步骤105:对所述目标程序的完整性校验通过。[0044]步骤106:对所述目标程序的完整性校验不通过。[0045]根据本实施例提供的方案,通过计算程序的哈希值,并将该特征值添加到相应程序中,在程序运行时对程序的该哈希值进行校验,只有校验通过的程序才允许其运行,从而可以保证系统的安全性。[0046]为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。[0047]如图2所示,本发明实施例提供了一种基于Linux的程序安全加载方法,该方法可以包括以下步骤:[0048]步骤201:预先计算每一个程序的哈希值。[0049]由于黑客或恶意程序可以篡改网络设备中的运行程序来窃取用户的账号、密码等隐私信息,进而对系统安全产生威胁,所以,在本实施例中,每当启动该程序时,需要对该程序的完整性进行验证,从而确定该程序是否被篡改过。[0050]在本实施例中,该哈希值可以通过哈希运算得到。其中,哈希运算的算法可以为安全哈希算法(SecureHashAlgorithm,SHA)、SHA2算法、中国国家密码管理局发布的中国商用密码杂凑算法标准SM3密码杂凑算法(SM3CryptographicHashAlgorithm)等等,本实施例对此不做具体限定。[0051]为了保证运行程序在各方面都未被篡改,在计算程序的哈希值时,可以计算程序的内容、权限和该程序所依赖的数据库中的至少一项的哈希值,以及在后续过程中对计算的每一项的哈希值均进行完整性校验,从而可以更全面的对运行程序的完整性进行校验。[0052]例如,在计算程序的哈希值时,对程序的内容、权限和该程序所依赖的数据库均计算了哈希值。[0053]其中,哈希值是一段数据唯一且极其紧凑的数值表示形式。[0054]步骤202:将该哈希值添加到相应程序中。[0055]在Linux系统中,运行程序的格式主要包括:ELF(ExecutableandLinkableFormat)、Ext2、Ext3、ReiserFS、XFS和JFS等。[0056]在本实施例中,可以将步骤201中计算得到的哈希值添加到相应程序对应的文件中,例如,将计算得到的哈希值添加到ELF文件中。[0057]为了便于后续过程中对添加到ELF文件中的哈希值进行读取,可以将该哈希值添加到ELF文件头中。[0058]步骤203:获取目标程序的加载指令,根据该加载指令加载该目标程序,并获取执行该加载目标程序的父进程。[0059]在本实施例中,目标程序可以是应用程序,也可以是内核程序。[0060]为了进一步保证系统的安全性,可以对目标程序的可信度进行校验。由于所有需要运行的程序启动加载时父进程必须是可信,根据可信的传导性,只有父进程可信,子进程才有可信的前提,即所有的运行的程序的在运行的时候都要可信认证。因此,本实施例中,而对目标程序可信度的校验,可以通过对其父进程的可信度校验来确定目标程序的可信度。[0061]其中,对于子程序的父进程,是加载该子程序的进程。[0062]步骤204:判断该父进程是否包括安全标识,若包括,执行步骤205,否则,执行步骤209。[0063]在本实施例中,可以通过父进程是否包括安全标识对父进程的可信度进行校验。[0064]步骤205:对所述目标程序的可信度验证通过,并执行步骤206。[0065]步骤206:计算目标程序当前的哈希值。[0066]在本实施例中,可以根据步骤201中对程当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1