基于Linux系统的软件安全防护方法

文档序号:6372693阅读:680来源:国知局
专利名称:基于Linux系统的软件安全防护方法
技术领域
本发明属于信息安全技术领域,涉及文件加密处理的一种方法,具体涉及一种基于Linux系统的软件安全防护方法,将该方法应用于Linux系统环境下的非嵌入式软件安全防护过程,可以保证软件加密的可靠性。
背景技术
随着软件在测试、控制、任务规划等航天领域的不断应用,软件安全性问题越来越突出,软件运行环境透明,存放在存储器中的程序很容易被读取并破解,从而造成核心技术和工作原理的泄露。因此,急需对软件进行安全防护,提高软件抗复制、抗反编译和抗逆向分析的能力。软件通常由可执行文件、库文件、数据文件等组成,软件安全防护的核心内容是文件安全管理,需要在保证软件正常运行的前提下,采用各种措施对可执行文件、数据文件等关键文件的内容进行加密,以提高软件运行过程的安全性。目前,实施人员对Linux环境的软件进行安全防护时,通常把所有文件都进行了加密处理,由于文件众多,存在加密速度慢、处理效率低等问题,增大了时间消耗,影响了软件运行的时序性,另外常用的软加密措施与硬件特征结合较少,安全强度不够,关键数据和参数很容易被分析和窃取。

发明内容
本发明的目的是针对现有技术的不足,提出一种基于Linux环境的软件安全防护方法,对文件进行分类过滤加密处理,且运算速度快,安全强度高。本发明是这样实现的一种基于Linux系统的软件安全防护方法,包括如下步骤(I)在虚拟文件系统和物理文件系统之间生成安全文件模块,并建立文件管理服务;(2)安装加密卡并进行初始化,使安全文件模块与加密卡进行通信;(3)通信正常后,加载安全文件模块,对被保护的目录或文件类型进行分类过滤与文件加解密处理;预先定义好待加密的目录或者文件类型,在执行加解密过程中,对已定义的文件进行加解密、对未定义的文件不处理。如上所述的一种基于Linux系统的软件安全防护方法,其中所述安全文件模块使用虚拟文件系统VFS进行文件管理,VFS的对象是一个结构体,包括超级对象块、索引节点对象、目录项对象、文件对象,及指向操作其父对象的函数指针,通过继承使用VFS的通用函数。如上所述的一种基于Linux系统的软件安全防护方法,其中所述对文件进行加解密时,采用密钥分级管理方法把密钥分为主密钥、二级密钥两级;主密钥以随机系统时间做种子,保存在硬件加密卡密码芯片的屏蔽区域中;使用主密钥对工作密钥加密生成二级密钥;工作密钥种子由随机真数发生器产生,随机真数发生器固化到密码芯片中,对每个加密文件分别由密钥种子进行SHAl运算产生一个工作密钥。如上所述的一种基于Linux系统的软件安全防护方法,其中所述文件加密保护时,使用工作密钥结合SMl算法对文件进行加密形成加密文件主体,主密钥通过AES算法对工作密钥加密生成二级密钥,存储在文件头部,成为加密文件的一部分;文件解密时,取出文件头部分的二级密钥,使用主密钥结合AES对其解密,得到工作密钥;再对加密文件主体部分解密,得到源文件。如上所述的一种基于Linux系统的软件安全防护方法,其中建立隐藏分区,并在隐藏分区中存储安全策略;读处理时,安全文件模块拦截到读磁盘请求后,检查访问的进程是否允许访问加密文件,如果不允许,直接放行;通过文件尾部的加密位判断该文件是否已经被加密,如果该文件没有被加密,那么直接放行;否则重新构造请求数据包,读取指定长度的数据内容,并且对数据进行解密,返回给原来的请求数据包;写处理时,安全文件模块拦截到写磁盘操作后,根据安全策略判断该文件是不是需要加密保存,如果需要加密,则对数据进行加密,并写入磁盘。如上所述的一种基于Linux系统的软件安全防护方法,其中采用密文和明文双缓冲方法一个加密文件设有两种页面缓冲数据,一种页面缓冲数据是明文,另一种加密数据是密文;内核模块判断进程是否允许访问明文数据,如果允许,则访问明文缓冲,否则只访问密文缓冲。如上所述的一种基于Linux系统的软件安全防护方法,其中采用文件完整性校验方法如果文件被定义为可信资源,对其进行完整性保护;如果文件损坏,系统自动对其数据进行恢复;在数据恢复过程中,资源备份和资源SHAl散列数据一一对应,存储在磁盘隐藏分区中;在访问可信资源之前,比较SHAl数据,如果不匹配,那么将资源从隐藏分区中恢复。本发明的有益效果是通过在Linux环境的文件系统和操作系统内核之间建立一个新的安全文件模块,该模块通过服务加载到内核。加解密处理时,进行文件类别过滤判断,如果类型是待加密的类别,则安全文件模块调用加密板卡随机产生的加密密钥,使用SMl算法加密文件内容,提高软件安全防护强度;如果不是待加密的类别,则直接放过而不做任何处理;通过分类过滤措施,提高了文件加解密速度和数据处理效率。


图1为本发明提供的一种基于Linux系统的软件安全防护方法的流程图;图2为文件加密处理过程;图3为文件解密处理过程;图4为数据文件读处理过程;图5为数据文件写处理过程。
具体实施例方式下面结合附图和实施例对本发明提供的一种基于Linux系统的软件安全防护方法做进一步介绍
实施例1 :如图1所示一种基于Linux系统的软件安全防护方法,包括如下步骤(I)生成安全文件模块,建立文件管理服务,并选定被保护的目录或被保护的文件类型;文件管理服务以模块的形式注册到Linux操作系统下,然后以图形模式创建新服务名,这样Linux上电启动后,就自动执行该服务;所述安全文件模块插在虚拟文件系统和物理文件系统之间,充当一个“过滤器”的角色。该安全文件模块可以采用面向对象的设计思想,使用虚拟文件系统VFS进行文件管理,VFS的对象是一个结构体,包括超级对象块、索引节点对象、目录项对象、文件对象等,包含指向操作其父对象的函数指针,通过继承使用VFS的通用函数,提供一个统一的、抽象的文件系统模型,支持具体的文件系统。安全文件模块也可以采用其他设计思想或函数实现该“过滤器”功能。(2)安装加密卡并进行初始化,使安全文件模块与加密卡进行通信;(3)通信正常后,利用安全文件模块对被保护的目录或文件类型进行分类过滤与文件加密处理与操作权限处理;为保证文件分类过滤,提高加解密速度,采用分类处理机制,即预先定义好待加密的目录或者文件类型,在执行加解密过程中,对已定义的文件进行加解密、对未定义的文件不处理,正常运行,从而避免了对非重要文件加解密造成的时间损耗和资源浪费,保证了加解密速度。安全文件模块通常加载在电路板卡上(例如PCR板卡),可以先使电路板卡与加密卡建立通信,通信通正常后,加载安全文件模块,并修改系统配置文件,启动系统同时挂载此安全文件模块。实施例2 在实施例1的基础上,对文件进行加解密时,采用密钥分级管理方法把密钥分为主密钥、二级密钥两级。主密钥以随机系统时间做种子,保存在硬件加密卡密码芯片的屏蔽区域中,字长可为128位,是唯一的根密钥。工作密钥不能以明文形式存放,需要进行加密处理,使用主密钥对工作密钥加密生成二级密钥。工作密钥种子由随机真数发生器产生,随机真数发生器固化到密码芯片中,对每个加密文件分别由密钥种子进行SHAl运算产生一个工作密钥(可为128位)。文件加密解密处理如下如图2所示,文件加密保护时,使用工作密钥结合SMl算法对文件进行加密形成加密文件主体,主密钥通过AES算法对工作密钥加密生成二级密钥,存储在文件头部,成为加密文件的一部分。如图3所示,文件解密时,取出文件头部分的二级密钥,使用主密钥结合AES对其解密,得到工作密钥。然后再对加密文件主体部分解密,得到源文件。访问某文件时,安全文件模块会判断此文件是否是被加密的文件,若文件未被加密,则直接执行此文件;若此文件是加密处理的文件,安全文件模块会与加密卡进行通讯,通讯不正常会提示给用户。通讯正常之后,将此文件交给加密卡做解密工作并放入内存之中。加密卡完成解密工作之后,将解密的内容交给操作系统做程序执行工作。实施例3 在实施例1或2的基础上,为获得更好的安全防护效果,建立隐藏分区。在隐藏分区中文件系统格式是私有的,其他程序无法读取该分区的数据。安全策略由守候进程从隐藏分区中读取,通过系统调用加载到内核策略库中。该安全策略通常指出哪些文件需要加密或文件的读与权限等。如图4所示,读处理时,安全文件模块拦截到读磁盘请求后(文件读请求),检查访问的进程是否允许访问加密文件,如果不允许,直接放行;通过文件尾部的加密位判断该文件是否已经被加密(例如I表示加密,O表示未加密),如果该文件没有被加密,那么直接放行;否则重新构造请求数据包,读取指定长度的数据内容,并且对数据进行解密,返回给原来的请求数据包。如图5所示,写处理时,安全文件模块拦截到写磁盘操作后(文件写请求),根据安全策略判断该文件是不是需要加密保存,如果需要加密,则对数据进行加密,并写入磁盘。实施例4 在实施例1、2或3的基础上,为了防止文件在使用过程中主动泄密,同时又不影响系统性能,采用密文和明文双缓冲方式来处理,即一个加密文件有两种页面缓冲数据,一种页面缓冲数据是明文,另一种加密数据是密文。充分利用操作系统的页面缓冲功能,在可信进程和不可信进程同时访问加密文件的时候不用频繁的对磁盘文件进行加密解密处理,大大提供系统处理速度,内核模块只需判断进程是不是允许访问明文数据,如果允许,则访问明文缓冲,否则只能访问密文缓冲。为进一步获得安全防护效果,可采用文件完整性校验方法如果文件被定义为可信资源,将会对其进行完整性保护。对可执行程序,可以防止其他恶意进程伪装成加密进程,读取数据文件内容,对重要的数据文件,可以及时检查文件是否损坏,如果损坏,那么系统将自动对其数据进行恢复。在数据恢复过程中,资源备份和资源SHAl散列数据一一对应,存储在磁盘隐藏分区中;该隐藏分区被格式化为私有的文件系统格式,对用户不可见,不可访问。在访问可信资源之前,比较SHAl数据,如果不匹配,那么将资源从隐藏分区中恢复,保证数据的正常读取。
权利要求
1.一种基于Linux系统的软件安全防护方法,包括如下步骤 (1)在虚拟文件系统和物理文件系统之间生成安全文件模块,并建立文件管理服务; (2)安装相应的硬件驱动并进行初始化,通过硬件驱动与加密卡进行通信,分配硬件资源; (3)通信正常后,加载安全文件模块,对被保护的目录或文件类型进行分类过滤与文件加解密处理;预先定义好待加密的目录或者文件类型,在执行加解密过程中,对已定义的文件进行加解密、对未定义的文件不处理。
2.如权利要求1所述的一种基于Linux系统的软件安全防护方法,其特征在于所述安全文件模块使用虚拟文件系统VFS进行文件管理,VFS的对象是一个结构体,包括超级对象块、索引节点对象、目录项对象、文件对象,及指向操作其父对象的函数指针,通过继承使用VFS的通用函数。
3.如权利要求1或2所述的一种基于Linux系统的软件安全防护方法,其特征在于所述对文件进行加解密时,采用密钥分级管理方法把密钥分为主密钥、二级密钥两级;主密钥以随机系统时间做种子,保存在硬件加密卡密码芯片的屏蔽区域中;使用主密钥对工作密钥加密生成二级密钥;工作密钥种子由随机真数发生器产生,随机真数发生器固化到密码芯片中,对每个加密文件分别由密钥种子进行SHAl运算产生一个工作密钥。
4.如权利要求3所述的一种基于Linux系统的软件安全防护方法,其特征在于所述文件加密保护时,使用工作密钥结合SMl算法对文件进行加密形成加密文件主体,主密钥通过AES算法对工作密钥加密生成二级密钥,存储在文件头部,成为加密文件的一部分; 文件解密时,取出文件头部分的二级密钥,使用主密钥结合AES对其解密,得到工作密钥;再对加密文件主体部分解密,得到源文件。
5.如权利要求4所述的一种基于Linux系统的软件安全防护方法,其特征在于建立隐藏分区,并在隐藏分区中存储安全策略;读处理时,安全文件模块拦截到读磁盘请求后,检查访问的进程是否允许访问加密文件,如果不允许,直接放行;通过文件尾部的加密位判断该文件是否已经被加密,如果该文件没有被加密,那么直接放行;否则重新构造请求数据包,读取指定长度的数据内容,并且对数据进行解密,返回给原来的请求数据包; 写处理时,安全文件模块拦截到写磁盘操作后,根据安全策略判断该文件是不是需要加密保存,如果需要加密,则对数据进行加密,并写入磁盘。
6.如权利要求4所述的一种基于Linux系统的软件安全防护方法,其特征在于采用密文和明文双缓冲方法一个加密文件设有两种页面缓冲数据,一种页面缓冲数据是明文,另一种加密数据是密文;内核模块判断进程是否允许访问明文数据,如果允许,则访问明文缓冲,否则只访问密文缓冲。
7.如权利要求6所述的一种基于Linux系统的软件安全防护方法,其特征在于采用文件完整性校验方法如果文件被定义为可信资源,对其进行完整性保护;如果文件损坏,系统自动对其数据进行恢复;在数据恢复过程中,资源备份和资源SHAl散列数据一一对应,存储在磁盘隐藏分区中;在访问可信资源之前,比较SHAl数据,如果不匹配,那么将资源从隐藏分区中恢复。
全文摘要
本发明属于信息安全技术领域,具体涉及一种基于Linux系统的软件安全防护方法。本发明的目的是为了解决Linux系统中软加密强度低、加密速度慢等问题,通过与硬件结合提高软件加密防护强度和处理速率,减少对时序性的影响。本方法分为如下步骤1)与硬件加密卡结合,采用多级密钥管理机制;2)采用分类过滤策略,制定安全文件管理方法;3)建立安全策略摘要,安全策略加载到内核策略库,通过该策略安全文件模块处理读写请求;4)利用页面缓冲功能,进行数据双缓冲处理;5)对需要解密还原的数据进行完整性校验。本发明提供的方法提高了软件安全防护强度,节约了时间开支,保证了数据处理速度和效率。
文档编号G06F21/52GK103065082SQ20121022880
公开日2013年4月24日 申请日期2012年7月4日 优先权日2012年7月4日
发明者苏均生, 李逊 申请人:北京京航计算通讯研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1