一种基于CPU时空隔离机制实现应用程序安全认证的方法与流程

文档序号:12597016阅读:257来源:国知局
本发明涉及一种应用程序安全认证方法,具体地说是一种基于CPU时空隔离机制实现应用程序安全认证的方法,属于应用程序安全认证方法领域。
背景技术
::在信息安全的长期探索实践中,这样一种事实逐渐被人们认识——越来越多的安全攻击发生在计算机终端。恶意程序利用计算机终端的脆弱性,破坏应用程序的完整性(修改库文件和二进制文件),运行非法(未认证)程序,进而提升权限,达到破坏系统、窃取终端信息的目的。为了确保计算机终端安全,一方面使用防火墙、入侵检测等安全防护技术,将恶意程序尽可能的阻截在终端外;另一方面采取终端平台完整性保护措施,保护驱动、操作系统内核、应用程序等不被恶意程序篡改,禁止非法程序运行,增强终端自身安全性。应用程序的安全认证,可以阻止恶意程序通过篡改应用程序的方式入侵系统,禁止未经认证的应用程序运行,增加恶意程序的攻击成本。基于软件的应用程序认证方案虽在一定程度上实现了这种防护机制,但存在运行效率低、密码泄露等安全隐患。因此,为了解决这些安全问题,基于硬件的应用程序安全认证机制被提出来,并且受到国内外信息安全研究领域的持续广泛关注。当前应用程序安全认证所采用的技术方案主要有:1、基于软件实现的可执行文件认证技术,该类方案的主要特点是在Linux通用的elf可执行文件的文件头中加入安全信息(对整个文件的散列值),系统在执行elf文件前首先验证安全信息。然而方案中所使用的密钥未得到硬件级的安全存储,恶意代码可以通过替换认证公钥的方式欺骗认证模块以允许其运行,所以存在密钥篡改问题,安全性差;除此之外,该方案使用软件级的密码运算模块,没有硬件级的密码加速单元处理复杂的加解密运算,进行哈希计算、公钥认证计算的时间消耗多,效率低。2、基于硬件实现的应用程序认证系统,该类方案的特点是使用独立于CPU的PCI板卡协处理器(或TPM芯片)进行度量,并将度量结果交由操作系统进行认证。方案为认证模块提供了硬件级的信任根及密码运算模块,在安全性与效率方面都有一定程度的提升,然而无论是PCI板卡协处理器还是TPM芯片,其都需要与CPU进行多次数据交互,数据传输速度低直接限制认证的执行效率,时间消耗依然较大,并不能满足当前的计算要求。此外,该方案采用先度量后认证的方式,首先将度量结果进行存储,待本地证明和远程证明认证该度量结果,若得出应用程序不合法则判定平台不可信,所以未能阻止非法程序执行,不具备实时性。从应用程序的加载原理出发,分析可能存在的安全隐患,对标已有的应用程序认证方案,得出基于软件实现的应用程序认证方案存在安全性差、效率低等问题,基于可信硬件实现的应用程序认证方案虽在一定程度上有所改善,但提升效果并不显著,此外还存在实时性问题。技术实现要素:为了解决上述问题,本发明设计了一种基于CPU时空隔离机制实现应用程序安全认证的方法,通过安全增强应用程序启动过程的执行流程,为其提供硬件级的可信根和强安全认证,有效解决了密钥篡改、时效性差等问题,在有限时间损耗内提升计算机终端在应用程序加载过程中的安全性。本发明的技术方案为:一种基于CPU时空隔离机制实现应用程序安全认证的方法,包括签名过程和认证过程;其中,所述签名过程:安全操作系统供应商每个应用程序颁发一组公私钥对及X.509证书(称为应用程序证书),并将证书编号内嵌至elf文件头中;使用颁发的私钥签名elf二进制文件,并将签名值内嵌至应用程序证书的可扩展区域;此外供应商使用自身的私钥对应用程序证书签名后将签名值存储在证书的“颁发者唯一标识符”区域,并将证书的散列值存储至安全操作系统;签名过程生成两组重要数据——应用程序证书及证书散列值,其为应用程序执行时的认证过程提供支撑;通用运行环境负责维护应用程序证书列表,可信执行环境负责维护应用程序证书散列值列表;所述认证过程包括:1、在通用运行环境下,应用程序elf文件被执行时,需通过execve()系统调用函数(已修改)陷入至内核态;应用程序被加载执行时,使用SVC指令从中断向量表查找该中断的入口地址,通过中断服务例程system_call查找系统调用表sys_call_table中对应系统调用号的入口地址,并执行该系统调用;execve()根据调用参数分配内存页表,检测程序文件的格式(elf、aout等),若为elf格式则通过系统切换指令SMC(在系统调用函数中添加)通过安全监控器切换至可信执行环境;2、在可信执行环境下,安全监控器接收到环境切换请求后,调用监控器服务例程,根据系统调用函数传递的可信应用(应用程序安全认证模块)的UUID作为建立会话的参数信息,建立与应用程序安全认证模块的会话,然后系统调用函数将在其进程空间分配共享缓冲区,传递待处理的数据和命令;认证模块从通用运行环境中将应用程序elf文件读取至共享内存区,并查询elf文件头中的证书编号,依据该编号从通用运行环境中的证书管理模块读取该证书,然后调用可信执行环境的证书认证模块,使用密钥管理模块维护的供应商公钥认证该证书(认证过程需调用密码算法服务模块进行哈希运算及加解密运算),并检查证书有效性;若认证失败,则将异常返回至安全认证模块,阻止该elf文件运行;若认证通过,则继续调用elf文件认证模块使用应用程序证书中的公钥对elf文件进行解签名,验证elf文件的合法性及完整性,若失败,则返回异常至安全认证模块并阻止运行;若成功,则允许程序允许。上述方法包括以下功能模块:1、证书管理模块:通用运行环境下的应用程序证书管理模块负责维护及读取应用程序证书,以备可信执行环境的应用程序安全认证模块调用;2、安全认证模块:可信执行环境下的应用程序安全认证模块负责通过安全监控器与通用运行环境建立会话链接,包括从通用运行环境读取elf文件、应用程序证书,调用证书认证模块、elf文件认证模块,以及将服务结果传递至通用运行环境等功能;3、证书认证模块:可信执行环境下的证书认证模块负责认证应用程序证书,包括从安全内核的密钥管理模块读取供应商公钥、调用密码算法服务模块进行密码运算、从安全存储模块读取应用程序证书散列值列表,以及将认证结果传递给应用程序安全认证模块等功能;4、elf文件认证模块:可信执行环境下的elf文件认证模块负责认证elf文件的合法性,包括使用应用程序证书中的公钥对elf文件进行认证、调用密码算法服务模块进行密码运算,以及将认证结果传递给应用程序安全认证模块等功能;5、密码算法服务模块:可信执行环境下的密码算法服务模块属于安全内核,负责数据加解密、密钥交换协商、签名、哈希等算法的具体执行,为其他安全模块提供安全调用接口;6、密钥管理模块:可信执行环境下的密钥管理模块属于安全内核,负责密钥的管理和维护,为其他安全模块提供安全调用接口,在本方案中提供供应商公钥以供证书认证模块调用;7、安全存储模块:可信执行环境下的安全存储模块属于安全内核,负责为数据进行加密存储,为其他安全模块提供安全调用接口,在本方案中提供应用程序证书散列值列表以供证书认证模块调用。本发明以CPU安全核、CPU信任根、可信执行环境安全内核、应用程序安全认证组件紧耦合为基本思想,突出系统实现的软硬件协同性,力图构建基于CPU时空隔离的可信执行环境以确保应用程序执行过程中的安全性,阻止非法的、完整性遭破坏的应用程序运行。为了实现目标,首先,需要构建一个拥有应用程序认证组件的可信执行环境,即安全内核。安全内核提供基本的内存管理、任务调度、中断处理、密码算法、密钥管理及TEE会话核心框架,通过CPU时空隔离特性,运行于CPU安全核。同时,可信执行环境应提供应用程序安全认证模块、证书认证模块、elf文件认证模块。其次,构建一个执行应用程序的通用运行环境,即通用操作系统内核,运行于CPU普通核。最后,需要构建一个安全监控器,负责在两个运行环境之间进行上下文切换,运行于CPU安全核。基于CPU时空隔离机制的可信执行环境与通用运行环境物理隔离,具有独立于通用操作系统的安全性。其中,可信执行环境本身为应用程序认证组件提供了一个隔离、安全、可靠的运行环境。CPU时空隔离机制是指利用CPU虚拟化技术以时间片的方式运行两个不同状态的CPU虚拟核,通常划分为安全核和普通核,是一个CPU核的两个不同状态;通过内存管理单元MMU对系统内存域进行空间划分、配置内存,控制相关的寄存器以确保不同内存区域的访问权限,以达到访问控制、内存隔离的效果。CPU时空隔离机制为应用程序安全认证提供硬件级的信任根——CPU信任根。CPU信任根是指CPU供应商在生产制造过程中,由注入的CPUUID(CPU唯一标识符)所生成的CPU报告根密钥EK和存储根密钥SRK,CPU度量根由CPU片内安全ROM提供。基于CPU时空隔离机制,可以为系统提供两种运行环境,即通用运行环境(REE)和可信执行环境(TEE)。其中,通用运行环境由通用操作系统环境组成,比如Linux、Windows等操作系统环境。可信执行环境由操作系统安全内核和安全服务组件构成,安全服务组件为通用运行环境提供基本的安全服务,如数据加解密、安全策略配置、远程证明、数据安全存储等基本安全功能。可信执行环境拥有最高等级的安全权限,可以访问通用运行环境的全部资源,但通用运行环境则不能直接访问可信执行环境的资源,只能通过系统切换指令或异步中断进入可信环境。本发明的优点在于:(1)运行于安全内核的应用程序认证系统具有更高的隔离性,可以确保应用程序安全认证的有效性及系统自身的安全性;(2)构建基于CPU的硬件级信任根以及CPU安全核内的密码服务算法,可以提供TPM芯片及CPU片外芯片不能达到的CPU内核级密码加速认证过程,并为密钥存储提供最高等级的安全保护;(3)在专用计算机应用领域,该应用程序安全认证方法可以有效降低因为应用程序漏洞以及系统动态可加载内核模块漏洞而引起的系统安全风险;(4)使用公钥证书认证elf文件,避免频繁地使用可信执行环境管理的密钥,进而有效减少通过大量尝试攻击带来的密钥泄露问题。下面结合附图和实施例对本发明作进一步说明。附图说明图1为本发明实施例的系统整体架构图(ELn代表CPU运行状态特权级,n=0,1,,3);图2为本发明实施例的基本原理图。具体实施方式以下对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。实施例1如图1-2所示,一种基于CPU时空隔离机制实现应用程序安全认证的方法,包括签名过程和认证过程;其中,所述签名过程:安全操作系统供应商每个应用程序颁发一组公私钥对及X.509证书(称为应用程序证书),并将证书编号内嵌至elf文件头中;使用颁发的私钥签名elf二进制文件,并将签名值内嵌至应用程序证书的可扩展区域;此外供应商使用自身的私钥对应用程序证书签名后将签名值存储在证书的“颁发者唯一标识符”区域,并将证书的散列值存储至安全操作系统;签名过程生成两组重要数据——应用程序证书及证书散列值,其为应用程序执行时的认证过程提供支撑;通用运行环境负责维护应用程序证书列表,可信执行环境负责维护应用程序证书散列值列表;所述认证过程包括:1、在通用运行环境下,应用程序elf文件被执行时,需通过execve()系统调用函数(已修改)陷入至内核态;应用程序被加载执行时,使用SVC指令从中断向量表查找该中断的入口地址,通过中断服务例程system_call查找系统调用表sys_call_table中对应系统调用号的入口地址,并执行该系统调用;execve()根据调用参数分配内存页表,检测程序文件的格式(elf、aout等),若为elf格式则通过系统切换指令SMC(在系统调用函数中添加)通过安全监控器切换至可信执行环境;2、在可信执行环境下,安全监控器接收到环境切换请求后,调用监控器服务例程,根据系统调用函数传递的可信应用(应用程序安全认证模块)的UUID作为建立会话的参数信息,建立与应用程序安全认证模块的会话,然后系统调用函数将在其进程空间分配共享缓冲区,传递待处理的数据和命令;认证模块从通用运行环境中将应用程序elf文件读取至共享内存区,并查询elf文件头中的证书编号,依据该编号从通用运行环境中的证书管理模块读取该证书,然后调用可信执行环境的证书认证模块,使用密钥管理模块维护的供应商公钥认证该证书(认证过程需调用密码算法服务模块进行哈希运算及加解密运算),并检查证书有效性;若认证失败,则将异常返回至安全认证模块,阻止该elf文件运行;若认证通过,则继续调用elf文件认证模块使用应用程序证书中的公钥对elf文件进行解签名,验证elf文件的合法性及完整性,若失败,则返回异常至安全认证模块并阻止运行;若成功,则允许程序允许。上述方法包括以下功能模块:1、证书管理模块:通用运行环境下的应用程序证书管理模块负责维护及读取应用程序证书,以备可信执行环境的应用程序安全认证模块调用;2、安全认证模块:可信执行环境下的应用程序安全认证模块负责通过安全监控器与通用运行环境建立会话链接,包括从通用运行环境读取elf文件、应用程序证书,调用证书认证模块、elf文件认证模块,以及将服务结果传递至通用运行环境等功能;3、证书认证模块:可信执行环境下的证书认证模块负责认证应用程序证书,包括从安全内核的密钥管理模块读取供应商公钥、调用密码算法服务模块进行密码运算、从安全存储模块读取应用程序证书散列值列表,以及将认证结果传递给应用程序安全认证模块等功能;4、elf文件认证模块:可信执行环境下的elf文件认证模块负责认证elf文件的合法性,包括使用应用程序证书中的公钥对elf文件进行认证、调用密码算法服务模块进行密码运算,以及将认证结果传递给应用程序安全认证模块等功能;5、密码算法服务模块:可信执行环境下的密码算法服务模块属于安全内核,负责数据加解密、密钥交换协商、签名、哈希等算法的具体执行,为其他安全模块提供安全调用接口;6、密钥管理模块:可信执行环境下的密钥管理模块属于安全内核,负责密钥的管理和维护,为其他安全模块提供安全调用接口,在本方案中提供供应商公钥以供证书认证模块调用;7、安全存储模块:可信执行环境下的安全存储模块属于安全内核,负责为数据进行加密存储,为其他安全模块提供安全调用接口,在本方案中提供应用程序证书散列值列表以供证书认证模块调用。本发明以CPU安全核、CPU信任根、可信执行环境安全内核、应用程序安全认证组件紧耦合为基本思想,突出系统实现的软硬件协同性,力图构建基于CPU时空隔离的可信执行环境以确保应用程序执行过程中的安全性,阻止非法的、完整性遭破坏的应用程序运行。为了实现目标,首先,需要构建一个拥有应用程序认证组件的可信执行环境,即安全内核。安全内核提供基本的内存管理、任务调度、中断处理、密码算法、密钥管理及TEE会话核心框架,通过CPU时空隔离特性,运行于CPU安全核。同时,可信执行环境应提供应用程序安全认证模块、证书认证模块、elf文件认证模块。其次,构建一个执行应用程序的通用运行环境,即通用操作系统内核,运行于CPU普通核。最后,需要构建一个安全监控器,负责在两个运行环境之间进行上下文切换,运行于CPU安全核。基于CPU时空隔离机制的可信执行环境与通用运行环境物理隔离,具有独立于通用操作系统的安全性。其中,可信执行环境本身为应用程序认证组件提供了一个隔离、安全、可靠的运行环境,如图1所示。其中,应用程序的签名过程与认证过程是在两个不同环境中进行的。签名过程是指安全操作系统供应商为某个应用程序颁发公私钥对,并且利用该私钥对该应用程序的所有elf文件进行加密的过程。认证过程是指被签名的应用程序在执行过程中,由可信执行环境的证书认证模块及elf文件认证模块对应用程序证书及elf文件进行解密及完整性校验的过程。实例的需求:基于国产FT1500ACPU硬件平台,以Debian为通用运行环境下的操作系统、optee_os为可信执行环境下的安全内核、ARMTrustedFirmwareVersion1.1作为系统引导固件。使用本专利中的实现方法,对execve()系统调用函数以及elf文件头进行改造,并实现各个模块的功能,在elf文件执行之前可有效地检测出非法程序并阻止其运行,同时可以防止因操作系统底层漏洞所引起的密钥泄露问题。在实现中使用的elf文件头设计如下所示:typedefstruct{unsignedchare_ident[EI_NIDENT];Elf32_Halfe_type;/*目标文件类型*/Elf32_Halfe_machine;Elf32_Worde_version;Elf32_Addre_entry;Elf32_Offe_phoff;Elf32_Offe_shoff;Elf32_Worde_flags;Elf32_Halfe_ehsizes;Elf32_Halfe_certlabel;/*应用程序证书编号*/Elf32_Halfe_phentsize;Elf32_Halfe_phnum;Elf32_Halfe_shentsize;Elf32_Halfe_shnum;Elf32_Halfe_shstrndx;}Elf32_Ehdr;在实现中使用的execve()系统调用函数设计如下所示:intdo_execve(){file=open_exec(filename);……if(e_type)tee_entry_std(structthread_smc_args*smc_args);/*若为文件为elf格式,*//*则通过可信环境入口函数,使用系统切换指令切换至可信执行环境*/……returnauthentication;}通过修改elf文件头以及execve()系统调用函数,使得elf文件在执行之前需被可信执行环境认证,若该文件合法,则允许其执行,相反则不允许。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1