基于信任区的操作系统和方法与流程

文档序号:18901410发布日期:2019-10-18 21:59阅读:340来源:国知局
本发明涉及安全
技术领域
:,具体涉及一种基于信任区的操作系统和方法。
背景技术
::随着互联网技术和智能终端的高速发展,对于智能终端运行环境的安全级别的要求也越来越高,信任区(trustzone)已逐渐成为智能终端的标配。trustzone是由arm公司提出的一种安全技术,trustzone引入了监控模式,在监控模式之上分为安全模式(secureworld)与普通模式(normalworld),安全模式下运行安全级别较高的程序。监控模式的安全级别是最高的,可通过它实现安全模式与普通模式之间的切换。安全模式是与普通模式完全隔离的,但是安全模式可以访问普通模式的所有物理内存等信息。终端设备启动时,会首先进入安全模式,然后由安全模式下的程序负责切换到普通模式启动终端系统。安全模式中运行的环境,通常称为可信执行环境(trustexecutionenvironment,tee),普通模式中运行的环境,通常称为普通执行环境(richexecutionenvironment,ree),一般也称tee和ree为secureworld和normalworld。tee具有其自身的执行空间,比普通操作系统(richos)的安全级别更高。tee所能访问的软硬件资源是与richos分离的。tee提供了授权安全软件(trustedapplication,ta)的安全执行环境,同时也保护ta的资源和数据的保密性、完整性和访问权限。为了保证tee本身的可信根,tee在安全启动过程中是要通过验证并且与richos隔离的。随着生态系统的发展,tee已经成为安全关键应用程序的平台,支持各种可信应用(tas)动态安装。这种开放性不可避免地会导致tee的两方面的问题:复杂性越高,攻击面越大。作为构建安全模型中的可信计算基(trustedcomputingbase,tcb),如果tee受到威胁,就会威胁整个系统的安全。例如,由于tee具有最高的特权,攻击者可以利用tee的错误来写入称为“回旋镖”攻击,通过该攻击获取到ree的控制权限,对ree系统的安全性造成极大的威胁。同时,如果tee受到威胁,则可能会进一步损害tas并导致诸如指纹数据或密钥等重要数据信息的泄漏。技术实现要素:本发明实施例提供了一种基于信任区的操作系统和操作系统的启动方法,用于提高系统的安全性第一方面,本发明实施例提供一种基于信任区的操作系统,所述操作系统应用于终端设备中,所述操作系统包括安全模式子系统,所述安全模式子系统中运行可信执行环境tee、tee监控区域和安全切换装置,所述tee和所述tee监控区域分别与所述安全切换装置连接;所述tee,用于在接收到所述tee中的可信应用ta发送的第一敏感操作请求后,将所述第一敏感操作请求对应的第一敏感指令标识和所述第一敏感操作请求的第一操作参数存储到通用寄存器中,并向所述安全切换装置发送携带有第一切换标识的第一切换请求,所述第一切换标识用于标识需要将所述安全模式子系统的运行环境由所述tee切换至所述tee监控区域;所述安全切换装置,用于接收所述第一切换请求,根据所述第一切换请求将所述安全模式子系统的运行环境由所述tee切换至所述tee监控区域;所述tee监控区域,用于存储所述操作系统中的敏感指令,在所述安全模块子系统的运行环境由所述tee切换至所述tee监控区域之后,从所述通用寄存器中读取所述第一敏感指令标识和所述第一操作参数,根据所述第一敏感指令标识调用对应的第一敏感指令,通过所调用的第一敏感指令和所述第一操作参数执行相应的第一敏感操作。在上述方法中,操作系统的敏感指令都存储在tee监控区域中,将需要调用这些敏感指令来执行的敏感操作作为接口为tee提供服务。由于tee监控区域单独控制了操作系统的敏感指令,因此,tee监控区域获得了在进行敏感操作前对敏感操作进行安全检查的能力,保证了对敏感操作的安全检查不会被绕过,提高了系统敏感操作的安全性。进而提高系统的安全性。在一种可能的设计中,所述tee,具体用于:根据所述第一敏感操作请求在预配置的敏感指令标识表中,查找所述第一敏感操作请求所对应的第一敏感指令标识;其中,所述敏感指令标识表用于存储敏感操作与敏感指令标识的对应关系。在上述方法中,这样tee监控区域能够知晓tee所需要调用的敏感指令。在一种可能的设计中,所述安全切换装置,具体用于:获取所述tee监控区域的第一上下文信息,加载所述第一上下文信息;若第二上下文信息与所述第一上下文信息相同,则确定所述tee与所述监控环境之间的切换环境安全,所述第二上下文信息为所述第一上下文信息加载后的、与所述第一上下文信息对应的信息。在上述方法中,能够表明在加载tee监控区域的过程中未发生安全攻击。在一种可能的设计中,若所述第二上下文信息与所述第一上下信息不相同,所述安全切换装置还用于:退出将所述安全模式子系统的运行环境由所述tee切换至所述tee监控区域的操作。在上述方法中,能够表明在加载tee监控区域的过程中发生安全攻击。在一种可能的设计中,所述tee监控区域在通过所调用的第一敏感指令和所述第一操作参数执行相应的第一敏感操作之前,还用于:按照预配置的安全检查策略对所述第一敏感操作进行安全检查,确定所述第一敏感操作通过所述安全检查。在上述方法中,tee监控区域在进行敏感操作前对敏感操作进行安全检查,保证了对敏感操作的安全检查不会被绕过,提高了系统敏感操作的安全性。在一种可能的设计中,所述安全切换装置,还用于在接收到所述第一切换请求之后,保存所述tee的tee上下文信息;所述tee监控区域,还用于在所述第一敏感操作执行完毕后,将所述第一敏感操作的第一操作结果存储到所述通用寄存器,并向所述安全切换装置发送携带有第二切换标识的第二切换请求,所述第二切换标识用于标识需要将运行环境由所述tee监控区域切换至所述tee;所述安全切换装置,还用于接收所述第二切换请求,根据所述第二切换请求和所述tee上下文信息将所述安全模式子系统的运行环境由所述tee监控区域切换至所述tee;所述tee,还用于在所述安全模块子系统的运行环境由所述tee监控区域切换至所述tee之后,从所述通用寄存器中读取所述第一操作结果。在上述方法中,可以依据tee上下文信息,安全切换进tee。在一种可能的设计中,所述tee监控区域,还用于在所述tee的代码加载阶段,对所加载的所述tee的代码进行敏感指令检查,确定所述所加载的所述tee的代码中不存在敏感指令。在上述方法中,确定所加载的tee的代码中不存在敏感指令,则认为启动过程中没有对操作系统的攻击,进而可以正常加载代码。在一种可能的设计中,所述操作系统还包括普通模式子系统,所述普通模式子系统运行普通执行环境ree,所述ree与所述安全切换装置连接;所述ree,用于接收所述ree中的客户应用ca发送的ta调用请求,将所述ta调用请求的安全请求参数存储到第一共享内存中,向所述安全切换装置发送携带有第三切换标识的第三切换请求,所述第一共享内存为所述ree与所述tee之间的共享内存,所述安全请求参数中包括所请求调用的ta标识,所述第三切换标识用于标识需要将运行环境由所述ree切换至所述tee;所述安全切换装置,用于接收所述第三切换请求,根据所述第三切换请求将所述操作系统的运行环境由所述ree切换至所述tee;所述tee,用于在所述操作系统的运行环境由所述ree切换至所述tee后,从所述第一共享内存中读取所述安全请求参数,根据所述安全请求参数调用对应的ta并执行相应的操作。在上述方法中,通过切换请求中携带的切换请求标识,使安全切换装置能够区分去是将运行环境切换至tee。在一种可能的设计中,所述ree,用于接收所述ree中的ca发送的第二敏感操作请求,将所述第二敏感操作请求对应的第二敏感指令标识和所述第二敏感操作请求的第二操作参数存储到第二共享内存中,向所述安全切换装置发送携带有第四切换标识的第四切换请求,所述第四切换标识用于标识需要将所述操作系统的运行环境由所述ree切换至所述tee监控区域,所述第二共享内存为所述ree与所述tee监控区域之间的共享内存;所述安全切换装置,用于接收所述第四切换请求,根据所述第四切换请求将所述操作系统的运行环境由所述ree切换至所述tee监控区域;所述tee监控区域,用于在所述操作系统的运行环境由所述ree切换至所述tee监控区域后,从所述第二共享内存中读取所述第二敏感指令标识和所述第二操作参数,根据所述第二敏感指令标识调用对应的敏感指令,通过所调用的敏感指令和所述第二操作参数执行相应的第二敏感操作。在上述方法中,操作系统的所有敏感指令都存储在tee监控区域中,tee监控区域获得了在进行敏感操作前对敏感操作进行安全检查的能力,保证了对ree的敏感操作的安全检查不会被绕过,提高了系统敏感操作的安全性。在一种可能的设计中,所述tee,具体用于:根据所述第二敏感操作请求在预配置的敏感指令标识表中,查找所述第二敏感操作请求所对应的第二敏感指令标识。在一种可能的设计中,所述安全切换装置,还用于在接收到所述第四切换请求之后,保存所述ree的ree上下文信息;所述tee监控区域,还用于在所述第二敏感操作执行完毕后,将所述第二敏感操作的第二操作结果存储到所述第二共享内存,并向所述安全切换装置发送携带有第五切换标识的第五切换请求,所述第五切换标识用于标识需要将运行环境由所述tee监控区域切换至所述ree;所述安全切换装置,还用于接收所述第五切换请求,根据所述第五切换请求和所述ree上下文信息将所述安全模式子系统的运行环境由所述tee监控区域切换至所述ree;所述ree,还用于在所述安全模块子系统的运行环境由所述tee监控区域切换至所述ree之后,从所述第二共享内存中读取所述第二操作结果。在上述方法中,可以依据ree上下文信息,安全切换进ree。在一种可能的设计中,所述tee监控区域,还用于在所述操作系统的启动与初始化阶段,将所述安全切换装置配置为所述tee、所述tee监控区域和所述ree三者中两两之间的切换机制,并在所述终端设备的内存中初始化所述tee监控区域的第一内存页表、所述tee的第二内存页表、所述ree的第三内存页表,其中,所述第一内存页表、所述第二内存页表、所述第三内存页表和所述安全切换装置的第四内存页表所对应的内存空间各不相同,所述第一内存页表禁止被所述tee和所述ree映射,所述第一内存页表和所述第二内存页表禁止被所述ree映射,所述第四内存页表禁止被所述ree映射;所述安全切换装置,还用于在将所述操作系统的运行环境切换的过程中,将操作系统的内存页表指针切换至对应的运行环境的内存页表。在上述方法中,由于第一内存页表、第二内存页表、第三内存页表和第四内存页表所对应的内存空间各不相同,因此可以避免tee和tee监控区域受到攻击。在一种可能的设计中,所述tee,具体用于通过调用安全监视调用smc指令向所述安全切换装置发送所述第一切换请求。第二方面,本发明实施例提供一种基于信任区的操作方法,所述方法应用的操作系统应用于移动设备中,所述操作系统包括安全模式子系统,所述安全模式子系统中运行可信执行环境tee、tee监控区域和安全切换装置,所述tee和所述tee监控区域分别与所述安全切换装置连接;在接收到所述tee中的可信应用ta发送的第一敏感操作请求后,所述tee将所述第一敏感操作请求对应的第一敏感指令标识和所述第一敏感操作请求的第一操作参数存储到通用寄存器中,并向所述安全切换装置发送携带有第一切换标识的第一切换请求,所述第一切换标识用于标识需要将所述安全模式子系统的运行环境由所述tee切换至所述tee监控区域;所述安全切换装置根据所述第一切换请求,将所述安全模式子系统的运行环境由所述tee切换至所述tee监控区域;所述tee监控区域存储有所述操作系统中的敏感指令,在所述安全模块子系统的运行环境由所述tee切换至所述tee监控区域之后,从所述通用寄存器中读取所述第一敏感指令的标识和所述第一操作参数,根据所述第一敏感指令的标识调用对应的第一敏感指令,通过所调用的第一敏感指令和所述第一操作参数执行相应的第一敏感操作。在一种可能的设计中,所述第一敏感指令标识是根据所述第一敏感操作请求在预配置的敏感指令标识表中,查找到的所述第一敏感操作请求所对应的标识;其中,所述敏感指令标识表用于存储敏感操作与敏感指令标识的对应关系。在一种可能的设计中,所述安全切换装置根据所述第一切换请求,将所述安全模式子系统的运行环境由所述tee切换至所述tee监控区域之前,还包括:获取所述tee监控区域的第一上下文信息,加载所述第一上下文信息;若第二上下文信息与所述第一上下文信息相同,则确定所述tee与所述监控环境之间的切换环境安全,所述第二上下文信息为所述第一上下文信息加载后的、与所述第一上下文信息对应的信息。在一种可能的设计中,所述方法还包括:若所述第二上下文信息与所述第一上下信息不相同;所述安全切换装置退出将所述安全模式子系统的运行环境由所述tee切换至所述tee监控区域的操作。在一种可能的设计中,所述通过所调用的第一敏感指令和所述第一操作参数执行相应的第一敏感操作之前,还包括:按照预配置的安全检查策略对所述第一敏感操作进行安全检查,确定所述第一敏感操作通过所述安全检查。在一种可能的设计中,所述安全切换装置根据所述第一切换请求,将所述安全模式子系统的运行环境由所述tee切换至所述tee监控区域之前,还包括:在接收到所述第一切换请求之后,保存所述tee的tee上下文信息;所述通过所调用的第一敏感指令和所述第一操作参数执行相应的第一敏感操作之后,还包括:所述tee监控区域将所述第一敏感操作的第一操作结果存储到所述通用寄存器,并向所述安全切换装置发送携带有第二切换标识的第二切换请求,所述第二切换标识用于标识需要将运行环境由所述tee监控区域切换至所述tee;所述安全切换装置根据所述第二切换请求和所述tee上下文信息将所述安全模式子系统的运行环境由所述tee监控区域切换至所述tee;所述tee从所述通用寄存器中读取所述第一操作结果。在一种可能的设计中,所述方法还包括:所述tee监控区域在所述tee的代码加载阶段,对所加载的所述tee的代码进行敏感指令检查,确定所述所加载的所述tee的代码中不存在敏感指令。在一种可能的设计中,所述操作系统还包括普通模式子系统,所述普通模式子系统运行普通执行环境ree,所述ree与所述安全切换装置连接;所述方法还包括:所述ree接收客户应用ca发送的ta调用请求,将所述ta调用请求的安全请求参数存储到第一共享内存中,向所述安全切换装置发送携带有第三切换标识的第三切换请求,所述第一共享内存为所述ree与所述tee之间的共享内存,所述安全请求参数中包括所请求调用的ta标识,所述第三切换标识用于标识需要将运行环境由所述ree切换至所述tee;所述安全切换装置根据所述第三切换请求,将所述操作系统的运行环境由所述ree切换至所述tee;所述tee用于在所述操作系统的运行环境由所述ree切换至所述tee后,从所述第一共享内存中读取所述安全请求参数,根据所述安全请求参数调用对应的ta并执行相应的操作。在一种可能的设计中,所述方法还包括:所述ree接收所述ree中的ca发送的第二敏感操作请求,将所述第二敏感操作请求对应的第二敏感指令的标识和所述第二敏感操作请求的第二操作参数存储到第二共享内存中,向所述安全切换装置发送携带有第四切换标识的第四切换请求,所述第四切换标识用于标识需要将所述操作系统的运行环境由所述ree切换至所述tee监控区域,所述第二共享内存为所述ree与所述tee监控区域之间的共享内存;所述安全切换装置根据所述第四切换请求,将所述操作系统的运行环境由所述ree切换至所述tee监控区域;所述tee监控区域从所述第二共享内存中读取所述第二敏感指令的标识和所述第二操作参数,根据所述第二敏感指令的标识调用对应的敏感指令,通过所调用的敏感指令和所述第二操作参数执行相应的第二敏感操作。在一种可能的设计中,所述第二敏感操作标识是根据所述第二敏感操作请求在预配置的敏感指令标识表中,查找的所述第二敏感操作请求所对应的标识。在一种可能的设计中,所述安全切换装置根据所述第四切换请求,将所述操作系统的运行环境由所述ree切换至所述tee监控区域之前,还包括:所述安全切换装置在接收到所述第四切换请求之后,保存所述ree的ree上下文信息;所述通过所调用的敏感指令和所述第二操作参数执行相应的第二敏感操作之后,还包括:所述tee监控区域将所述第二敏感操作的第二操作结果存储到所述第二共享内存,并向所述安全切换装置发送携带有第五切换标识的第五切换请求,所述第五切换标识用于标识需要将运行环境由所述tee监控区域切换至所述ree;所述安全切换装置根据所述第五切换请求和所述ree上下文信息将所述安全模式子系统的运行环境由所述tee监控区域切换至所述ree;所述ree在所述安全模块子系统的运行环境由所述tee监控区域切换至所述ree之后,从所述第二共享内存中读取所述第二操作结果。在一种可能的设计中,所述方法还包括:所述tee监控区域在所述操作系统的启动与初始化阶段,将所述安全切换装置配置为所述tee、所述tee监控区域和所述ree三者中两两之间的切换机制,并在所述终端设备的内存中初始化所述tee监控区域的第一内存页表、所述tee的第二内存页表、所述ree的第三内存页表,其中,所述第一内存页表、所述第二内存页表、所述第三内存页表和所述安全切换装置的第四内存页表所对应的内存空间各不相同,所述第一内存页表禁止被所述tee和所述ree映射,所述第一内存页表和所述第二内存页表禁止被所述ree映射,所述第四内存页表禁止被所述ree映射;在将所述操作系统的运行环境切换的过程中,所述安全切换装置将操作系统的内存页表指针切换至对应的运行环境的内存页表。在一种可能的设计中,所述向所述安全切换装置发送携带有第一切换标识的第一切换请求,包括:通过调用安全监视调用smc指令,向所述安全切换装置发送所述第一切换请求。附图说明图1示出了根据本发明一实施例的基于信任区的操作系统的架构示意图;图2示出了根据本发明实施例的内存页表的映射关系示意图;图3示出了根据本发明实施例的基于信任区的操作方法流程示意图;图4示出了根据本发明实施例的操作系统的启动过程流程示意图。具体实施方式图1示出了本发明一实施例的基于信任区的操作系统的系统架构示意图,该操作系统可以应用于包括但不限于智能手机等终端设备中。如图1所示,该操作系统包括普通模式子系统(normalworld)和安全模式子系统(secureworld),secureworld的安全级别高于normalworld。normalworld中运行ree,secureworld中运行tee、tee监控区域(teemonitor,tee-mon)和安全切换装置(gate)。ree包括位于normalworld用户空间的普通客户应用(clientapplication,ca)和位于normalworld内核空间的ree内核(reekernel),tee包括位于secureworld用户空间的可信应用(trustedapplication,ta)和位于secureworld内核空间的tee内核(teekernel)。由图1中可以看出,secureworld中有tee和tee-mon两种运行环境,tee-mon和tee-kernel运行在同一个特权级。tee和tee-mon之间,以及tee与ree之间的切换都必须通过gate进行,从而实现了tee和tee-mon的隔离。由于tee和tee-mon是隔离的,因此,即使在tee部分出现安全漏洞时,也不会影响到tee-mon的运行。本发明实施例中,操作系统的所有敏感指令都存储在tee-mon中,将需要调用这些敏感指令来执行的敏感操作作为接口为tee或ree提供服务。也就是说,tee中不再保留任何敏感指令,tee或ree中的任何敏感操作(需要调用敏感指令来执行的操作),都需要将操作系统的运行环境由tee或ree切换至tee-mon之后,由tee-mon来完成。由于tee-mon单独控制了操作系统的所有敏感指令,因此,tee-mon获得了在进行敏感操作前对敏感操作进行安全检查的能力,保证了对敏感操作的安全检查不会被绕过,提高了系统敏感操作的安全性。其中,敏感指令是指操作特权资源的指令,一般是指与内存管理相关的操作指令。敏感指令一般包括企图访问或修改虚拟机模式或机器状态的指令,企图访问或修改敏感寄存器或存储单元,企图访问存储保护系统或内存、地址分配系统的指令,以及所有i/o指令。例如,对于翻译表基址寄存器(translatetablebaseregister,ttbr)、系统控制寄存器(systemcontrolregister)sctlr、向量基地址寄存器(vectorbaseaddressregister,vbar)、监视程序向量基地址寄存器(monitorvectorbaseaddressregister,mvbar)、内存管理单元(memorymanagementunit,mmu)以及协处理器(cp15)等设备的安全操作请求。由于这些操作关系到系统内存的隔离,因此,对操作系统的安全至关重要。本发明实施例的操作系统,为了进一步提高不同运行环境之间的隔离,降低不同运行环境之间的耦合度,在操作系统的启动及初始化阶段,tee-mon将gate设置为tee、tee-mon和ree三者中两两之间的切换装置,并在终端设备的内存中为tee、tee-mon、gate和ree分别配置不同的内存页表,即四者之间的内存空间各不相同,从而实现了相互之间物理上的隔离,进一步提高了系统的安全性。由于gate是用于完成tee、tee-mon和ree三者中两两之间切换的装置,也就是说,gate为tee、tee-mon和ree的入口环境,为了保证入口环境的安全,避免由于入口环境被篡改导致secureworld中的tee和/或tee-mon被攻击的问题,本发明实施例中,在操作系统的启动阶段即开启对gate代码段的转换检测缓冲区(translationlookasidebuffer,tlb)的锁定(lockdown),即锁定gate部分对应的tlb项,从而保证了gate部分对应的tlb项不会被修改,即这些tlb项所对应的虚拟地址与物理地址之间的映射关系也就不会被改变,从而保障了程序执行到相应虚拟地址的控制流也不会变化,进一步提升了secureworld的安全性。图2示出了本发明实施例中,ree、tee和tee-mon三者之间的内存映射关系的示意图,图中分别示出了tee对其它三者内存空间的映射权限,tee-mon对其它三者内存空间的映射权限、以及ree对其它三者内存空间的映射权限,图中还分别示出了ree、tee、tee-mon和gate的代码段(code)和数据段(data),其中,rx表示可读可执行,rwnx表示可读、可写、但不可执行,null表示禁止映射(即不可读、不可写且不可执行),例如,对于tee而言,teedata是可读可写但不可执行,teecode是可执行,而tee对于ree的内存页表是禁止映射的。由图中可以看出,ree、tee、tee-mon三种运行环境中,对于tee-mon的物理内存,ree和tee均是被禁止映射的,tee和tee-mon即使均运行在secureworld中,但tee-mon的内存页表对于tee是不可见的,从而进一步保证了tee-mon的安全性。为了保证ree的安全性,本发明实施例中限制了tee对ree的内存映射权限,ree的内存页表禁止被tee映射。ree运行在normalworld,normalworld的安全级别是低于secureworld的,因此ree的可见内存空间是最少的,除了ree自身的code、data,ree与tee之间的共享内存(worldsharemem)、以及ree和tee-mon之间的共享内存之外,其它都是不可映射的。为了便于描述,后续描述中将ree与tee之间的共享内存称为第一共享内存,将ree和tee-mon之间的共享内存称为第二共享内存。由图2可以看出,与现有的基于trustzone的操作系统相比,本发明实施例的操作系统中的tee被降权,虽然tee运行在secureworld,但无法访问tee-mon的内存空间,也无法任意访问ree的内存空间,从而极大地减少了由于tee出现问题后对整个secureworld安全性的影响,也减少了tee出问题后对normalworld安全性的影响。为了使tee能够向tee-mon申请敏感操作服务,本发明实施例中,需要在tee中预配置敏感指令标识表,该敏感指令标识表用于存储敏感操作与敏感指令标识的对应关系,在tee需要向tee-mon申请敏感操作服务时,即可根据敏感操请求该标识表中查找到对应的敏感指令标识并将查找到的敏感指令标识告知tee-mon,以使tee-mon知晓tee所需要调用的敏感指令。对于图1中所示的操作系统,ta是安装于tee中的授权安全软件,在tee内部,不同ta之间是相互独立的,未授权访问的情况下,一个ta不能执行其他ta的资源。ta通过tee的内部接口(internalapi)来获取所需安全资源和服务的访问权限。teekernel接收到ta发送的操作请求时,若操作请求为非敏感操作请求,则teekernel可以直接调用tee中ta所需的安全资源和服务,完成ta的操作请求,并将操作结果通过internalapi返回给ta。若teekernel接收到的ta的操作请求为敏感操作请求,由于完成该敏感操作请求需要调用敏感指令,而teekernel中不存在敏感指令,因此,teekernel自身无法完成该敏感操作,需要调用tee-mon的服务。此时,teekernel首先需要根据敏感操作请求在敏感指令标识表中查找对应的敏感指令标识,将敏感指令标识和敏感操作请求中的操作参数写入到通用寄存器中,并向gate发送切换请求,请求将操作系统的运行环境由tee切换至tee-mon。gate在接收到teekernel发送的切换请求后,需要保存teekernel的上下文信息(简称为tee上下文信息),以在运行环境需要切换回teekernel时,根据保存的tee上下文信息恢复teekernel的运行环境。为了将操作系统的运行环境由teekernel切换至tee-mon,gate需要获取并加载tee-mon的上下文信息,此时,gate从tee-mon的内存空间中获取tee-mon的上下文信息,为处理器安全的切换进tee-mon做准备,gate加载获取到的tee-mon的上下文信息。其中,上下文信息主要指的是运行环境当前上下文环境,通常是指寄存器状态即寄存器的值,包括vbar、sctlr以及ttbr等寄存器的当前状态。为防御跳转到指令段的中间(jump-to-the-middle)攻击,需要确保加载的tee-mon上下文信息在执行过程中不被篡改,因此,gate在完成tee-mon的上下文信息的加载后,需要将加载后的tee-mon的上下文信息与原始的tee-mon的上下文信息(从tee-mon的内存空间中获取tee-mon的上下文信息)进行比对,若两者一致,则表明在加载tee-mon的过程中未发生安全攻击,gate将运行环境由teekernel切换至tee-mon。由于不同的运行环境对应各自的内存页表,因此,gate在将运行环境由teekernel切换至tee-mon的过程中,还需要将操作系统的内存页表指针切换至tee-mon的内存页表,以保证在操作系统运行在tee-mon中时,处理器能够依据tee-mon的内存页表完成虚拟地址到物理地址的正确映射。其中,页表指针指向的是处理器的页表内存地址,页表指针一般都是专门的寄存器,例如,arm系统架构的ttbr0和ttbr1寄存器,x86系统架构的cr3寄存器,页表指针寄存器和翻译表基址寄存器。tee-mon从通用寄存器中读取敏感指令标识和操作参数,根据敏感指令标识调用相应的敏感指令,并通过所调用的敏感指令和操作参数执行相应的敏感操作。tee-mon执行完敏感操作后,将对应的操作结果写回到通用寄存器中,并向gate发起切换请求,gate接收到tee-mon发起的切换请求后,根据所保存的tee上下文信息将运行环境由tee-mon切换至tee,将内存页表指针切换至tee的内存页表。切换完成后,teekernel即可从通用寄存器读取到敏感操作请求的操作结果。在ree中的ca需要调用敏感指令完成敏感操作时,reekernel在接收到ca发送的敏感操作请求时,可以先根据ca发送的敏感操作请求在预配置的敏感指令标识表中,查找ca发送的敏感操作请求所对应的敏感指令标识,然后需要将敏感指令标识和操作参数写入ree和tee-mon之间的第二共享内存中,并向tee-mon发起切换请求。tee-mon保存reekernel的上下文信息(简称ree上下文信息),获取tee-mon的上下文信息,确定在加载tee-mon上下文信息的过程中未发生安全攻击时,将运行环境切换至tee-mon,tee-mon从第二共享内存中读取敏感指令标识和操作参数后,调用敏感指令完成相应的敏感操作,将操作结果写回第二共享内存,向gate发起切换请求,gate将运行环境切换回ree后,reekernel即可从第二共享内存中读取到敏感操作请求的操作结果。需要说明的是,现有基于trustzone的操作系统中,由于操作系统中的敏感指令是存储在tee中的,ree侧需要调用敏感指令完成敏感操作时,ree是向是通过将需要调用的敏感指令标识和对应的操作参数写入到ree与tee之间的共享内存中,由监控模式的将运行环境由ree切换至tee之后,由tee根据共享内存中的数据完成对应的敏感操作。而本发明实施例中,由于操作系统的所有敏感指令都存储在与ree和tee均隔离的tee-mon中,所以ree侧中需要调用敏感指令的敏感操作请求也需要通过gate切换至tee-mon之后,由tee-mon完成,具体的,reekernel在执行ca发送来的操作请求时,在操作请求的执行过程中,如果操作请求的逻辑实现中包括敏感指令标识,则将敏感指令标识和对应的操作参数写入到ree与tee-mon之间的共享内存,gate根据ree侧发送的切换请求,将运行环境由ree切换至tee-mon之后,tee-mon通过从ree与tee-mon之间的共享内存中获取相关数据,完成相应的敏感操作。本发明实施例中,ree中的ca若需要调用tee中的ta来完成安全操作(非敏感操作)时,ree在接收到ca发送的ta调用请求后,将该请求的安全请求参数(包括但不限于所需要调用的ta的标识、ta完成操作所需要的参数信息等)写入到第一共享内存中,并向gate发起切换请求,因该切换请求所对应的操作为非敏感操作,gate将运行环境由ree切换至tee之后,teekernel根据从第一共享内存中读取的安全请求参数,调用对应的ta,完成相应的安全操作,并将操作结果写入第一共享内存后,向gate发起切换回ree的切换请求,由gate根据所保存的ree上下文信息将运行环境切换回ree,reekernel即可从第一共享内存中读取到ta调用请求所对应的操作结果。同样,在gate在完成不同运行环境的切换过程中,需要将内存页表指针对应的切换至切换后的运行环境的内存页表。本发明实施例中,ree、tee或tee-mon可以通过安全监控调用(securemonitorcall,smc)指令或者硬件中断的方式向gate发起运行环境的切换请求。由前文的描述可知,ree向gate发起的切换请求,如果是需要调用敏感指令的敏感操作请求,则gate需要根据切换请求将运行环境由ree切换至tee-mon;如果需要调用tee中的ta,则gate需要根据切换请求将运行环境由ree切换至tee。因此,为了使gate能够区分去是将运行环境切换至tee-mon还是tee,需要预定义不同的切换请求标识,ree向gate发起切换请求时,通过在切换请求中携带不同的切换请求标识,使gate能够区分去是将运行环境切换至tee-mon还是tee。同样的,tee向gate发起的切换请求,切换请求中也需要携带不同的切换请求标识,使gate能够区分去是将运行环境切换至tee-mon还是ree。可以理解的是,本发明实施例中ree、tee、tee-mon和gate各部分中各操作的实现,具体都是由终端设备的中央处理器(centralprocessingunit,cpu)执行的,根据操作系统运行环境的切换,cpu处于不同的运行环境中。对应于图1中所示的操作系统,本发明实施例还提供了一种基于信任区的操作方法,该启动方法应用于终端设备中,操作系统包括安全模式子系统和普通模式子系统,安全模式子系统中运行可信执行环境tee、tee-mon和gate,普通模式子系统中运行ree。如图3所示,该操作方法具体可以包括:s301、tee向gate发送携带有第一切换标识的第一切换请求。在接收到tee中的ta发送的第一敏感操作请求后,tee将第一敏感操作请求对应的第一敏感指令标识和第一敏感操作请求的第一操作参数存储到通用寄存器中,并向gate发送携带有第一切换标识的第一切换请求,第一切换标识用于标识需要将安全模式子系统的运行环境由tee切换至tee监控区域。s302、gate根据第一切换请求,将gate的运行环境由tee切换至tee监控区域。s303、tee监控区域通过所调用的第一敏感指令和第一操作参数执行相应的第一敏感操作。tee监控区域存储有操作系统中的敏感指令,在安全模块子系统的运行环境由tee切换至tee监控区域之后,从通用寄存器中读取第一敏感指令的标识和第一操作参数,根据第一敏感指令的标识调用对应的第一敏感指令,通过所调用的第一敏感指令和第一操作参数执行相应的第一敏感操作。在本发明的一个可选的实施例中,第一敏感指令标识是根据第一敏感操作请求在预配置的敏感指令标识表中,查找到的所述第一敏感操作请求所对应的标识;其中,敏感指令标识表用于存储敏感操作与敏感指令标识的对应关系。在本发明的一个可选的实施例中,gate根据第一切换请求,将安全模式子系统的运行环境由tee切换至tee监控区域之前,还包括:获取tee监控区域的第一上下文信息,加载所述第一上下文信息;若第二上下文信息与所述第一上下文信息相同,则确定tee与监控环境之间的切换环境安全,第二上下文信息为所述第一上下文信息加载后的、与所述第一上下文信息对应的信息。在本发明的一个可选的实施例中,若第二上下文信息与第一上下信息不相同;gate退出将安全模式子系统的运行环境由tee切换至tee监控区域的操作。在本发明的一个可选的实施例中,通过所调用的第一敏感指令和第一操作参数执行相应的第一敏感操作之前,还包括:按照预配置的安全检查策略对第一敏感操作进行安全检查,确定第一敏感操作通过所述安全检查。在本发明的一个可选的实施例中,gate根据第一切换请求,将安全模式子系统的运行环境由tee切换至tee监控区域之前,还包括:在接收到第一切换请求之后,保存tee的tee上下文信息;所述通过所调用的第一敏感指令和第一操作参数执行相应的第一敏感操作之后,还包括:tee监控区域将第一敏感操作的第一操作结果存储到通用寄存器,并向gate发送携带有第二切换标识的第二切换请求,第二切换标识用于标识需要将运行环境由tee监控区域切换至tee;gate根据第二切换请求和tee上下文信息将安全模式子系统的运行环境由tee监控区域切换至tee;tee从通用寄存器中读取第一操作结果。在本发明的一个可选的实施例中,还包括:tee监控区域在tee的代码加载阶段,对所加载的tee的代码进行敏感指令检查,确述所加载的tee的代码中不存在敏感指令。在本发明的一个可选的实施例中,操作系统还包括普通模式子系统ree,ree与gate连接;还包括:ree接收ca发送的ta调用请求,将ta调用请求的安全请求参数存储到第一共享内存中,向gate发送携带有第三切换标识的第三切换请求,第一共享内存为ree与tee之间的共享内存,安全请求参数中包括所请求调用的ta标识,第三切换标识用于标识需要将运行环境由ree切换至tee;gate根据第三切换请求,将操作系统的运行环境由ree切换至tee;tee用于在操作系统的运行环境由ree切换至tee后,从第一共享内存中读取安全请求参数,根据安全请求参数调用对应的ta并执行相应的操作。在本发明的一个可选的实施例中,还包括:ree接收ree中的ca发送的第二敏感操作请求,将第二敏感操作请求对应的第二敏感指令的标识和第二敏感操作请求的第二操作参数存储到第二共享内存中,向gate发送携带有第四切换标识的第四切换请求,第四切换标识用于标识需要将操作系统的运行环境由ree切换至所述tee监控区域,第二共享内存为ree与tee监控区域之间的共享内存;gate根据第四切换请求,将操作系统的运行环境由ree切换至tee监控区域;tee监控区域从所述第二共享内存中读取第二敏感指令的标识和第二操作参数,根据第二敏感指令的标识调用对应的敏感指令,通过所调用的敏感指令和第二操作参数执行相应的第二敏感操作。在本发明的一个可选的实施例中,第二敏感操作标识是根据第二敏感操作请求在预配置的敏感指令标识表中,查找的第二敏感操作请求所对应的标识。在本发明的一个可选的实施例中,gate根据第四切换请求,将操作系统的运行环境由ree切换至tee监控区域之前,还包括:gate在接收到第四切换请求之后,保存ree的ree上下文信息;通过所调用的敏感指令和第二操作参数执行相应的第二敏感操作之后,还包括:tee监控区域将第二敏感操作的第二操作结果存储到所述第二共享内存,并向gate发送携带有第五切换标识的第五切换请求,第五切换标识用于标识需要将运行环境由tee监控区域切换至ree;gate根据第五切换请求和ree上下文信息将安全模式子系统的运行环境由tee监控区域切换至ree;ree在安全模块子系统的运行环境由tee监控区域切换至ree之后,从第二共享内存中读取所述第二操作结果。在本发明的一个可选的实施例中,所述方法还包括:tee监控区域在操作系统的启动与初始化阶段,将gate配置为tee、tee监控区域和ree三者中两两之间的切换机制,并在终端设备的内存中初始化tee监控区域的第一内存页表、tee的第二内存页表、ree的第三内存页表,其中,第一内存页表、第二内存页表、第三内存页表和gate的第四内存页表所对应的内存空间各不相同,第一内存页表禁止被tee和ree映射,第一内存页表和第二内存页表禁止被ree映射,第四内存页表禁止被ree映射;在将操作系统的运行环境切换的过程中,gate将操作系统的内存页表指针切换至对应的运行环境的内存页表。作为一个示例,具体的启动过程包括:步骤s11:终端设备上电后,启动安全模式子系统的加载器(bootloader),依次加载tee监控区域的代码和tee的代码。本发明一可选实施例中,为了保证操作系统的所有敏感指令不会被加载到tee,在加载tee的代码时,该启动方法还可以包括:在加载tee的代码时,tee-mon对tee的加载代码进行敏感指令检查,确定tee的加载代码中不存在敏感指令。其中,若tee监控区域确定所加载的tee的代码中存在敏感指令,则认为启动过程中存在对操作系统的攻击,需要停止操作系统的启动。可以理解的是,在加载tee监控区域的代码和tee的代码过程中,还需要对所加载的代码进行校验,若校验通过则继续记载,否则停止启动过程。其中,在操作系统的启动过程中,对所记载的代码进行安全校验的具体实现为现有技术,一般可以包括但不限于所记载的代码的哈希(hash)值与签名等。步骤s12:运行tee监控区域,tee监控区域对操作系统的硬件资源进行初始化,并将gate配置为tee、tee-mon和ree三者中两两之间的切换机制。本发明实施例中,由于tee、tee-mon和ree三者中两两之间切换均依赖于安全切换装置来实现,也就是说,gate为tee、tee-mon和ree的入口环境,为了保证入口环境的安全,避免由于入口环境被篡改导致secureworld中的tee和/或tee-mon被攻击的问题,通过在操作系统的启动阶段开启对gate代码段的tlb项的锁定,使这些tlb项所对应的虚拟地址与物理地址之间的映射关系不能够被改变,从而保障了程序执行到相应虚拟地址的控制流也不会变化,进一步提升了安全子系统的安全性。作为一个示例,初始化tlb,并锁定tlb中安全切换装置的数据段和代码段对应的tlb项。步骤s13:tee监控区域通过安全切换装置切换至tee,完成tee的初始化。步骤s14:tee通过安全切换装置切换至ree,启动普通模式子系统的加载器,加载ree的代码,完成ree的初始化。本发明实施例的操作系统的启动方法,在系统上电后,系统从安全模式子系统的tee-mon开始启动,这样就可以在tee和ree启动之前对操作系统的关键数据进行检测,且先加载的前一级代码都会验证后一级代码的安全性,保证了每一个阶段代码的安全性。在本发明的一个可选的实施例中,向gate发送携带有第一切换标识的第一切换请求,包括:通过调用smc指令,向gate发送所述第一切换请求。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1