本发明涉及计算机安全,特别涉及一种计算机入侵防范方法。
背景技术:
随着信息技术的发展,计算机系统广泛应用于政治、经济、文化、国防和安全等重要领域。其中,操作系统内核是整个计算机系统工作和安全的基础。内核运行于整个系统的最高权限层,管理和控制底层硬件资源,为上层文件提供安全隔离的资源抽象和访问接口。越来越多的安全报告表明操作系统内核仍然存在着大量的漏洞和错误,攻击者能够获得最髙的权限、以内核权限实施任意攻击行为,包括恶意操作底层硬件、执行系统中的任意代码、读写内存和磁盘上的任意数据等等。现有技术基于vmm,对内核权限操作进行截获和验证,实现了对文件的全面保护。然而另一方面,vmm运行于更高的权限层,操作系统内核与vmm之间频繁的层间切换也导致了较高的性能开销。
技术实现要素:
为解决上述现有技术所存在的问题,本发明提出了一种计算机入侵防范方法,包括:
当应用与内核交互时,首先进入到安全寻址区的可信平台,可信平台保存应用上下文,然后切换到内核寻址区,进入内核执行;
当内核返回应用时,首先返回安全寻址区的可信平台,可信平台恢复应用上下文,再返回安全寻址区中的应用继续执行。
优选地,所述可信平台控制所有进入安全寻址区的入口点,一旦cpu进入安全寻址区,可信平台获得系统控制权;只有安全寻址区的软件能够修改块表,所有的块表更新操作只能由可信平台完成;当内核需要更新块表时,只能向可信平台发出请求,可信平台截获并验证所有的块表更新操作,实现内存保护;
可信平台在安全寻址区完成自身的执行流程,在返回外部组件时,将cpu切换回内核寻址区或者安全寻址区第3层,保证安全寻址区中只有可信平台运行,外部组件无法破坏安全寻址区中可信平台的数据代码;
从入口点进入安全寻址区后,可信平台在整个执行过程中,中断被禁止,执行流无法被外部组件劫持;只有当返回外部组件时,可信平台才恢复中断;当可信平台中发生不可屏蔽中断时,可信平台暂时阻塞该不可屏蔽中断,防止外部组件使用不可屏蔽中断劫持可信平台执行流;当返回到内核时,可信平台再将该不可屏蔽中断转发给内核进行处理。
优选地,所述块表由4级结构l1、l2、l3和l4组成,控制寄存器指向安全块表的l4块表称为s-l4,块表切换是通过将目标文件的l4块表整体拷贝到s-l4来实现;s-l4只能被安全寻址区中的可信平台修改;进程切换时,内核只能向可信平台发出请求,由可信平台切换文件块表;
当应用发生中断、进入可信平台时,可信平台保存应用安全环境,并将该中断转发给内核寻址区中的内核,将块表更新的具体内容置于一个共享内存中,到内核完成所有处理,当操作系统完成中断处理时,分配相应的物理块;可信平台从共享内存中读取更新请求,完成块表更新,然后返回内核;内核完成余下的中断处理工作,最终返回可信平台;可信平台恢复应用安全环境,返回应用。
优选地,所述可信平台截获并验证系统中所有发送到磁盘外设的i/o命令,将分配给磁盘管理器的i/o内存映射为只读。当内核需要向磁盘发送i/o命令时,只能将该命令转发给可信平台,由可信平台访问i/o内存,在系统启动时,对bios设置的pci配置空间进行验证,在系统运行过程中禁止内核访问整个pci配置空间;利用硬件虚拟化禁止普通模式中的软件访问该段i/o端口;将这段保留的系统内存在寻址区中映射为不可见,禁止内核访问。
本发明相比现有技术,具有以下优点:
本发明提出了一种计算机入侵防范方法,与不可信操作系统完全隔离,避免了频繁低效的加密解密,并为应用提供了全面的保护。
附图说明
图1是根据本发明实施例的计算机入侵防范方法的流程图。
具体实施方式
下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中描述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
本发明的一方面提供了一种计算机入侵防范方法。图1是根据本发明实施例的计算机入侵防范方法流程图。
本发明在安全寻址区引入可信平台,应用运行于可信平台保护的安全环境中。将不可信内核与应用分别运行于两个不同的寻址区,分别称为内核寻址区和安全寻址区。内核寻址区中使用的块表称为内核块表,安全寻址区中使用的块表称为安全块表。当安全寻址区的应用与内核交互时,应用首先进入到安全寻址区的可信平台,可信平台保存应用上下文,然后切换到内核寻址区,进入内核执行。当内核返回应用时,必须首先返回安全寻址区的可信平台,可信平台恢复应用上下文,再返回安全寻址区中的应用继续执行。
可信平台利用硬件虚拟化直接对控制寄存器的目标值进行限制;同时,可信平台截获并验证系统中所有的块表更新操作,实现内存保护。使用硬件虚拟化保证整个系统(内核、应用和可信平台)只能运行于内核寻址区和安全寻址区中。在控制寄存器目标列表中设定最多4个控制寄存器的目标值。当软件修改控制寄存器,且目标值是控制寄存器目标列表中的一个时,该控制寄存器修改可直接完成。本发明仅使用2个目标值,将内核寻址区中的内核块表和安全寻址区中的安全块表的基地址写入控制寄存器目标列表,因此,整个系统在运行过程中只能将控制寄存器修改为这两个值。如果试图修改为其他目标值均使cpu进入到安全模式,本发明中任何导致进入到安全模式的操作都被认为是恶意的,并会导致整个系统重启。在内核寻址区中,整个块表被映射为只读。任何运行于内核寻址区中的软件若要修改某个块表项时,必须首先将该块表项映射为可写。内核寻址区中的软件试图解除块表锁定的方式是:1)修改控制寄存器、切换寻址区。2)修改控制寄存器的模式标志位,使块表的只读保护失效。针对这种方式,本发明使用硬件虚拟化禁止普通模式的所有软件修改控制寄存器的模式标志位,任何修改模式标志位的操作均使系统进入到安全模式,进而导致系统重启。
在安全寻址区中,本发明限制只有第0层的软件能够修改块表。块表在其他层被映射为不可见。因此,整个系统中只有安全寻址区的软件能够修改块表。所有的块表更新操作只能由可信平台完成。当内核需要更新块表时,只能向可信平台发出请求,可信平台能够截获并验证所有的块表更新操作,实现内存保护。因此本发明基于控制寄存器控制和块表锁定技术,消除了内核寻址区的内核修改块表的权限。
可信平台控制所有进入安全寻址区的入口点,保证一旦cpu进入安全寻址区,可信平台获得系统控制权。可信平台在安全寻址区完成自身的执行流程,在返回外部组件时,将cpu切换回内核寻址区或者安全寻址区第3层,保证安全寻址区中只有可信平台运行。因此,外部组件始终只能运行于内核寻址区或者安全寻址区第3层中,不能破坏安全寻址区中可信平台的数据代码。
从入口点进入安全寻址区第0层后,可信平台在整个执行过程中,中断被禁止,执行流无法被外部组件劫持:只有当返回外部组件时,可信平台才恢复中断。同时,可信平台将cpu切换回内核寻址区或者安全寻址区第3层,保证安全寻址区第0层中只有可信平台运行。当可信平台中发生不可屏蔽中断时,可信平台暂时阻塞该不可屏蔽中断,防止外部组件使用不可屏蔽中断劫持可信平台执行流。当返回到内核时,可信平台再将该不可屏蔽中断转发给内核进行处理。运行于内核寻址区的内核或者安全寻址区第3层的应用无法破坏可信平台数据代码完整性,也无法修改块表、对可信平台的数据代码进行恶意映射。
块表由4级结构组成(l1、l2、l3和l4表示),控制寄存器指向安全块表的l4块表(称为s-l4),块表切换是通过将目标文件的l4块表整体拷贝到s-l4来实现的。和其他块表一样,s-l4只能被安全寻址区中的可信平台修改。因此,进程切换时,内核只能向可信平台发出请求,由可信平台切换文件块表。
当应用发生中断、进入可信平台,可信平台保存应用安全环境,并将该中断转发给内核寻址区中的内核,将块表更新的具体内容置于一个共享内存中,到内核完成所有处理,当操作系统完成中断处理时,分配相应的物理块。可信平台从共享内存中读取更新请求,完成块表更新,然后返回内核。内核完成余下的中断处理工作,最终返回可信平台。可信平台恢复应用安全环境,返回应用。
可信平台截获并验证系统中所有发送到磁盘外设的i/o命令,整个i/o验证过程在普通模式中实现。本发明仅需要截获内存映射i/o,就可以截获发送到磁盘外设的i/o命令。具体来说,基于可信平台的内存保护机制,可信平台将分配给磁盘管理器的i/o内存映射为只读。当内核需要向磁盘发送i/o命令时,它只能将该命令转发给可信平台,由可信平台访问i/o内存,在系统启动时,对bios设置的pci配置空间进行验证,在系统运行过程中禁止内核访问整个pci配置空间。利用硬件虚拟化禁止普通模式中的软件访问该段i/o端口;将这段保留的系统内存在寻址区中映射为不可见,禁止内核访问。
下面具体描述可信平台如何保护应用寻址区中的内存,实现寻址区隔离和完整性保护。为了实现应用寻址区与内核的隔离,可信平台使用一个数组来跟踪系统中每个物理块的映射情况。每个块可被定义为3种映射状态:正常,隔离和占有。正常状态的块被内核块表和安全块表两者映射,因而内核和可信平台都能访问它们。隔离状态的块仅被安全块表映射,只能被可信平台访问。可信平台和块表所在的块都被映射为隔离状态。占有状态的块已被分配给某个应用,仅被安全块表和其应用占有者的安全块表映射,因而只有可信平台和其占有者能访问它们。可信平台使用唯一的安全标识符sid来标识占有块的占有者。sid在进程创建时由可信平台赋予每个进程。
下面以应用a的块分配为例,描述块映射状态的转化过程和寻址区隔离。当一个块被内核分配给应用a时,可信平台要求内核只能使用隔离状态的块。当可信平台将该块映射到a的安全块表时,对该块的映射状态进行验证,拒绝所有非隔离块。然后,该块被安全的分配给a,标记为占有状态、并被应用a的sid标记。可信平台通过验证sid,禁止占有状态的块被内核块表或者其他应用的安全块表映射,保证a的内存隔离。同时禁止应用块在应用寻址区中被重映射。
可信平台由应用自身维护一个链表,描述自身的寻址区映射状态。该链表与应用寻址区的其他数据一样,无法被内核修改。当可信平台更新应用块表时,将査看该链表。如果内核的块表更新请求与该链表描述的寻址区映射状态不一致,可信平台将拒绝该请求。下面以文件映射函数为例,描述这一机制。
在磁盘上,不同文件被不同方式标记,同一文件的不同数据块被文件偏移标记,表示该数据块在文件中的位置。当应用调用文件映射函数时,同时更新自身维护的寻址区状态链表,包括要读取的文件对应的id和偏移。当可信平台进行块表更新验证时,会检查该链表。如果该更新对应的寻址区映射文件,可信平台将该链表中的id和偏移与文件本身的id和偏移进行比对。如果不是应用需要的文件或者偏移位置,可信平台拒绝将文件映射到寻址区、并通知应用。
本发明中,应用的应用数据以明文的形式进入内核,可信平台通过在不可信内核中构建一条可信应用数据流来传输应用数据,防止应用数据被窃取或篡改。本发明基于可信平台的访问控制模型中,应用数据被安全用户id即suid标识。每个用户都占有自身的suid,用户在启动自身的应用时,将suid赋予应用。可信平台通过验证suid保证应用数据只能被其所有者访问。suid可以标记一个用户组,用于用户之间的文件共享;suid可以指定不同的读写和执行权限。
应用数据从应用寻址区的块被拷贝到内核的缓存块,然后从缓存块传输到磁盘块。可信应用数据流保证,应用数据在内核中传输时,应用数据与内核隔离,无法被内核访问。首先,文件块被映射为占有状态,其中的应用数据无法被内核访问。当内核需要将应用数据从文件块拷贝到缓存块时,只能向可信平台发出请求,由可信平台完成数据拷贝。可信平台要求内核只能提供隔离状态的缓存块,对于非隔离状态的缓存块,可信平台将拒绝拷贝应用数据。
可信平台定义了两种磁盘块的状态即空闲和占用,并使用一个数组(称为磁盘块数组)进行状态跟踪。在磁盘块数组中,内存的一个位对应一个磁盘块的状态。可信平台对所有发送到磁盘的i/o命令进行验证。如果该命令是将应用数据写入磁盘块,可信平台确保被写入的磁盘块只能是空闲状态。在数据传输完成后,该磁盘块变为占用状态,suid和应用数据一起存储在磁盘块上,用于标识该磁盘块的所有者。然后,可信平台只允许具有相同suid的内存块与该占用磁盘块进行数据传输,因而磁盘块上应用数据隔离和访问控制得到保证。
当读取文件时,可信平台只允许占用磁盘块上的应用数据传输到隔离状态的缓存块,同时该缓存块被赋予占用磁盘块的suid。此后,可信平台只允许该缓存块的数据拷贝到具有相同suid的文件块,被其文件所有者访问。
可信平台的用户验证是基于验证用户密码来实现的。可信平台进一步使用公钥/私钥对保证不可信内核无法窃取用户密码。本发明使用tpm中的存储密钥来加密和解密可信平台的私钥。当用户启动自身的应用时,将自身的用户密码放置在应用的可执行文件,并使用可信平台的公钥进行加密。可信平台从应用可执行文件中获得用户密码,并使用自身的私钥进行解密。然后,可信平台通过验证用户密码赋予该应用相应的suid,标识应用的身份。在整个身份验证过程中,本发明保证了可信链:tpm存储密钥→可信平台私钥→用户密码→suid。
综上所述,本发明提出了一种计算机入侵防范方法,与不可信操作系统完全隔离,避免了频繁低效的加密解密,并为应用提供了全面的保护。
显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。