用于访问安全世界的方法、装置和系统与流程

文档序号:16210371发布日期:2018-12-08 07:39阅读:197来源:国知局
用于访问安全世界的方法、装置和系统与流程

本申请涉及计算机领域,并且更具体地,涉及一种用于访问安全世界的方法、装置和系统。



背景技术:

高级精简指令集计算机(Reduced Instruction Set Computer,RISC)制造公司(Advanced RISC Machine,ARM)处理器自v6架构开始引入了信任区(TrustZone)的概念。TrustZone为ARM处理器独有的一种处理器模式。

如图1所示,TrustZone技术将计算机系统物理隔离为安全世界和非安全世界。其中,TrustZone内为安全世界,TrustZone外为非安全世界。

在如图1所示的架构中,用户应用(Client Application,CA)(也可以称为用户程序等)可以通过调用公用的安全监控调用(Secure Monitor Call,SMC)驱动来进行安全世界的访问。

为了便于理解,以下结合图1所示的架构,描述非安全世界的用户程序访问安全世界的方法,其中,可以通过安全服务通道来完成安全服务流程,图1所示的架构可以利用由非安全世界的SMC驱动、非安全世界的SMC指令、运行固件(runtime firmware)、安全世界的内核的安全服务分发及调度模块、以及安全用户程序所构建的安全服务通道来完成。

步骤一、CA程序(例如,CA1,CA2或CA3)调用基于公用的SMC驱动提供的应用程序编程接口(Application Programming Interface,API),将参数传递给富执行环境(Rich Execution Environment,REE)操作系统(Operation System,OS)内核的SMC驱动。

步骤二、SMC驱动将参数写入寄存器,调用SMC指令,触发异常事件。

步骤三、运行固件接管该异常事件后,切换系统模式,调用可信执行环境(Trusted Execution Environment,TEE)OS内核中安全服务分发及调度模块相关的函数。

步骤四、安全服务分发及调度模块进一步解析参数,并分解参数解析结果,以调度相关的TA程序。

步骤五、TA程序(例如,图1所示的TA1、TA2或TA3)通过非安全世界应用传递的通用唯一识别码(Universally Unique Identifier,UUID)来确认合法性,并完成相关的安全服务。

在以上的CA程序获取安全服务的流程中,公用的SMC驱动可被任意程序(包括恶意程序)所使用,从而使得恶意程序可以访问安全世界,从而降低了安全世界的安全性。



技术实现要素:

本申请提供一种用于访问安全世界的方法、装置和系统,能够提升安全世界的安全性。

第一方面,提供了一种用于访问安全世界的方法,包括:在非安全世界创建第一虚拟机(Virtual Machine,VM);将所述非安全世界中的多个程序加载到所述第一虚拟机中,所述多个程序包括内核和至少一个用户程序,其中,所述内核运行在第一等级的模式下,所述至少一个用户程序运行在第二等级的模式下,所述第一等级高于所述第二等级;在确定所述至少一个用户程序中的第一用户程序需要访问安全世界时,在所述非安全世界创建运行在所述第一等级的模式下的第二虚拟机;将所述第一用户程序从所述第一虚拟机中剥离,并加载到所述第二虚拟机,以便于所述第一用户程序通过所述第二虚拟机访问所述安全世界。

因此,在此方案中,非安全世界的操作系统的内核中不再部署公用的SMC驱动,普通程序(包括恶意程序)无法通过调用公用的SMC驱动的方式获取安全服务调用,同时,为了便于用户程序访问安全世界,可以创建与内核相同等级的虚拟机,从而需要访问安全世界的用户程序可以通过与该内核具有相同等级的虚拟机访问安全世界,无需再通过公用的SMC驱动来访问安全世界,从而可以在实现安全世界访问的同时,提高安全世界的安全性。

并且,由于第二虚拟机的等级与内核的等级相同,因此,安全世界的程序返回给第一用户程序的信息可以经过第二虚拟机直接被第一用户程序接收到,不需要经过共享内核,极大地避免了该返回的信息被内核所窥探或篡改,或避免其他恶意程序利用内核对该返回的信息进行窥探或篡改。

结合第一方面,在第一方面的一种可能的实现方式中,所述方法还包括:设置虚拟化列表,以禁止第一虚拟机中的所有程序(该多个程序中除第一用户程序之外的其他程序)继续访问属于被剥离的所述第一用户程序的内存页。可选地,可以在二级页表中将对应第一用户程序的页表删除,来实现第一虚拟机中的程序访问第一用户程序的内存页。

由于操作系统可能会出现一些漏洞,恶意程序会利用这些漏洞执行一些操作(如提权)后破坏或者窃取正常用户程序的数据,以达到攻击的目的。而通过设置虚拟化列表禁止第一虚拟机中的所有程序访问属于被剥离的第一用户程序的内存页后,第一虚拟机中的恶意程序也无法访问第一用户程序的内存页,也就意味着无法对第一用户程序进行攻击(如果要攻击某个程序,必然会访问到该程序的内存页),因此,这种实现方式进一步增强了应用程序的安全性。

结合第一方面或其上述任一种可能的实现方式,在第一方面的一种可能的实现方式中,所述在所述非安全世界创建运行在所述第一等级的模式下的第二虚拟机,包括:为所述第二虚拟机分配由所述第一用户程序独享的资源。其中,该独享的资源可选的包括中央处理单元(Center Processing Unit,CPU)资源、外设和内存中的至少一种。

在第一用户程序访问安全世界时将要采用一些资源,如果这些资源被其它程序所利用,则会泄露访问安全世界得到的信息,例如,如果第二虚拟机中的内存资源与非安全世界中的其他程序是共享的,则存储在该内存中的来自安全世界的信息将有可能被其他程序所窃取。因此,为所述第二虚拟机分配由所述第一用户程序独享的资源,可以避免其它程序利用该第一用户程序访问安全世界所采用的资源而窃取与安全世界相关的信息。

可选地,在多个用户程序均需要访问安全世界时,可以创建多个工作在第一等级的模式下的虚拟机,该多个虚拟机中一一对应于多个用户程序,用于对应的用户程序访问安全世界,该多个虚拟机各自的资源是独享的。

因此,每个合法的用户程序都独占地部署在一个独立虚拟机中,从而每个用户程序可以独享安全服务通道,从而用户程序访问安全世界的安全服务通道可以不被其他用户程序所利用,从而可以避免恶意程序利用该服务通道访问安全世界。

并且进一步地,由于每个用户程序的安全服务通道都是独立的,摈弃了所有的用户程序利用相同的安全服务通道访问安全世界,避免恶意软件通过长期占用该相同的安全服务通道(例如,占用公用的SMC驱动的方式)来瘫痪其他用户程序的安全服务。

可选地,该独享的资源包括内存。其中,第二虚拟机中的内存可以作为第一用户程序与安全世界的程序共享内存。

因此,由于为第一用户程序创建的第二虚拟机的内存是独享的,非安全世界的用户程序跟安全世界的程序间通信用的共享内存做到了虚拟机级别的隔离,第一虚拟机内的恶意程序无法窃取和破坏第二虚拟机中的用户程序和安全世界的用户程序通信的共享内存中的数据。

结合第一方面或其上述任一种可能的实现方式,在第一方面的一种可能的实现方式中,所述多个程序还包括所述第一用户程序对应的代理程序,其中,在所述第一用户程序从所述第一虚拟机剥离之后,所述代理程序作为所述第一用户程序在所述第一虚拟机的代理,以触发所述内核处理需要由所述内核处理的待处理事件,其中,所述待处理事件是在所述第一用户程序在所述第二虚拟机运行时产生的。

因此,在第一用户程序在第二虚拟机中运行时,产生了需要由内核处理的事件时,可以通过第一虚拟机中的由该第一用户程序对应的代理程序替代用户程序,营造了该第一用户程序仍旧工作在第一虚拟机下的环境,从而可以使得第一虚拟机的操作内核处理该需要由内核处理的事件。

结合第一方面或其上述任一种可能的实现方式,在第一方面的一种可能的实现方式中,所述方法还包括:获取所述待处理事件,所述待处理事件需要由所述内核处理,且是在所述第一用户程序在所述第二虚拟机中运行时产生的;保存所述第二虚拟机的上下文;恢复所述第一虚拟机中所述代理程序的上下文,以用于触发所述第一虚拟机加载的所述内核对所述待处理事件进行处理。

因此,在获取到需要由内核处理的待处理事件时,通过保存第二虚拟机的上下文来中断第一用户程序的运行,并且恢复代理程序的上下文,可以在不将第一用户程序直接切换到第一虚拟机的情况下,营造了该第一用户程序仍旧工作在第一虚拟机下的环境,从而可以使得第一虚拟机的操作内核处理该需要由内核处理的事件。

结合第一方面或其上述任一种可能的实现方式,在第一方面的一种可能的实现方式中,所述方法还包括:在所述第一虚拟机处理完所述待处理事件之后,在所述第二虚拟机中恢复所述第一用户程序。

因此,在第一虚拟机处理完待处理事件之后,在第二虚拟机中恢复第一用户程序,可以继续第一用户程序在第二虚拟机的运行。

结合第一方面或其上述任一种可能的实现方式,在第一方面的一种可能的实现方式中,所述待处理事件为中断事件、缺页异常事件或系统调用事件。

由于中断事件、缺页异常事件或系统调用事件为需要由内核处理的事件,在第一用户程序在第二虚拟机中运行时,产生了这些事件时,可以通过第一虚拟机中的由该第一用户程序对应的代理程序替代用户程序,营造了该第一用户程序仍旧工作在第一虚拟机下的环境,从而可以使得第一虚拟机的操作内核处理该这些事件。

结合第一方面或其上述任一种可能的实现方式,在第一方面的一种可能的实现方式中,在将所述第一用户程序从所述第一虚拟机中剥离之前,所述方法还包括:确定所述第一用户程序为安全用户程序。

因此,在第一用户程序需要访问安全世界的情况下,确定所述第一用户程序为安全用户程序,可以避免将恶意程序加载在第二等级的模式下的虚拟机,从而避免恶意程序访问安全世界。

结合第一方面或其上述任一种可能的实现方式,在第一方面的一种可能的实现方式中,所述确定所述第一用户程序为安全用户程序包括:获取第一哈希值组和第二哈希值组,所述第一哈希值组包括至少一个第一哈希值,所述第二哈希值组包括至少一个第二哈希值,其中,每个第一哈希值与所述第一用户程序中的至少一个数据对象中的每个数据对象一一对应,所述每一哈希值为数据对象的当前的哈希值;每个第二哈希值与所述第一用户程序中的至少一个数据对象中的每个数据对象一一对应,所述第二哈希值是所述数据对象在出厂时的哈希值;在所述第一哈希值组与第二哈希值组相同时,确定所述第一用户程序为安全用户程序。

由于用户程序的数据对象的哈希值在正常情况下是不变的,如果被篡改或利用,则会导致数据对象的哈希值与出厂时的哈希值不相同,因此,通过比较用户程序的数据对象的当前的哈希值与出厂时的哈希值,可以准确的判断该用户程序是否是安全用户程序。

结合第一方面或其上述任一种可能的实现方式,在第一方面的一种可能的实现方式中,所述方法由ARM处理器实现,所述第一等级的模式为特权等级1(Exception Level 1,EL1)模式,所述第二等级的模式为特权等级0(Exception Level 0,EL0)模式。

第二方面,提供了一种虚拟机监控器(Virtual Machine Monitor,VMM),可以包括用于执行第一方面或第一方面的任一可选的实现方式中的方法的模块或者单元。

第三方面,提供了一种用于访问安全世界的装置,包括存储器和处理器,该存储器上存储有可以用于指示执行上述第一方面或其任意可选的实现方式的程序代码,当该代码被执行时,该处理器可以实现第一方面或第一方面的任一可选的实现方式中的方法。

第四方面,提供了一种用于访问安全世界的系统,包括:非安全世界的硬件层;运行在非安全世界的所述硬件层之上的虚拟机监控器,由所述虚拟机监控器创建和控制的第一虚拟机和第二虚拟机;其中,所述第一虚拟机用于加载所述非安全世界的多个程序,所述多个程序包括内核和至少一个用户程序,其中,所述内核运行在第一等级的模式下,所述至少一个用户程序运行在第二等级的模式下,所述第一等级高于所述第二等级;所述第二虚拟机用于加载所述至少一个用户程序中从所述第一虚拟机剥离的第一用户程序,以用于所述第一用户程序通过所述第二虚拟机访问安全世界,其中,所述第二虚拟机运行在第二等级的模式下。其中,虚拟机监控器可以执行第一方面或第一方面的任一可选的实现方式中的方法。

第五方面,提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码用于使得计算机执行上述第一方面或第一方面的任一种可能的实现方式中的方法。

第六方面,提供了一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一可选的实现方式中的方法。

附图说明

图1是当前一种TrustZone架构的示意性框图;

图2是根据本申请实施例的一种TrustZone架构的示意性框图;

图3是根据本申请实施例的一种访问安全世界的方法的示意性流程图;

图4是根据本申请实施例的进行第二虚拟机的创建以及进行用户程序的迁移;

图5是在图2所示的架构下,处理中断事件的示意性流程图;

图6是在图2所示的架构下,处理系统调度事件的示意性流程图;

图7是在图2所示的架构下,处理缺页异常事件的示意性流程图;

图8是根据本申请实施例的一种虚拟机监控器的示意性框图;

图9是根据本申请实施例的一种用于访问安全世界的装置的示意性框图;

图10是根据本申请实施例的一种用于访问安全世界的系统的示意性框图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

本申请实施例提供了一种如图2所示的TrustZone架构。

如图2所示,TrustZone技术将计算机系统物理隔离为安全世界和非安全世界。其中,TrustZone内为安全世界,TrustZone外为非安全世界。

对于非安全世界,存在富执行环境(Rich Execution Environment,REE)操作系统(Operation System,OS),以及用户应用(Client Application,CA)(也可以称为用户程序等),例如,如图2所示的CA1、CA2和CA3。

相对应于非安全世界,在安全世界内,存在可信执行环境(Trusted Execution Environment,TEE)OS,以及安全应用(Trusted Application,TA),例如,如图2所示的TA1、TA2和TA3。

其中,TEE OS负责安全世界的硬件资源抽象管理以及安全服务程序调度,如接收到来自非安全世界的服务请求后,通过参数的解析后,调度相应的TA程序完成相关的安全任务处理;而TA则特指提供特定安全服务功能的程序,以安全世界进程的方式运行在TrustZone中。

TrustZone技术可以提供包括中央处理单元(Center Processing Unit,CPU)、寄存器、总线、内存、缓存(cache)、后备缓冲器(Translation Lookaside Buffer,LTB)和外设在内的完整的物理隔离运行环境。

针对内存而言,安全世界与非安全世界有各自的内存空间,非安全世界的程序无法访问安全世界的内存,而安全世界的程序可访问已映射的非安全世界的内存。

如果非安全世界需要往安全世界传输大块数据(例如,无法通过寄存器传递的数据尺寸),则通过共享内存来传递。

如图2所示,在非安全世界,可以存在三种工作模式,即特权等级0(Exception Level 0,EL0)模式,特权等级1(Exception Level 1,EL1)模式和特权等级2(Exception Level 2,EL2)模式。其中,EL0模式是指用于运行用户程序的模式,EL1模式是指用于运行操作系统的内核的模式。EL2模式是指用于运行虚拟机监控器的模式。其中,EL1模式的特权等级高于EL0模式,EL2模式的特权等级高于EL1模式。

可选地,在安全世界存在三种工作模式,即,特权等级3(Exception Level 3,EL3)模式、安全特权等级1(Secure Exception Level 1,SEL1)模式,和安全特权等级0(Secure Exception Level 0,SEL0)模式。

如图2所示的VMM可以用于管理VM的资源以及上下文。具体地,可以用于VM的生成、VM的销毁、VM的初始化,以及用户程序在VM中的切换等。

在如图2所示的架构中,非安全世界的操作系统的内核中不再部署SMC驱动,为了便于用户程序访问安全世界,创建工作在与内核相同等级模式下的虚拟机,从而需要访问安全世界的用户程序可以通过新创建的虚拟机访问安全世界,而普通程序(包括恶意程序)无法通过调用公用的SMC驱动的方式获取安全服务调用,从而可以提高安全世界的安全性。

应理解,图2所示的架构不应对本申请实施例构成限定。例如,非安全世界中CA的数量和VM的数量,以及安全世界中TA的数量,不应对本申请构成特别的限定。

为了便于理解,以下以图2所示的场景为例,结合图3,对本申请实施例的用于访问安全世界的方法进行说明。

应理解,本申请实施例可以应用于ARM处理器架构下,例如,ARMv8Cortex A系列处理器的架构,但是本申请实施例并不限于此。

图3示出了一种用于访问安全世界的方法100的示意性流程图。该方法100可选地可以由如图2所示的虚拟机监控器执行。如图3所示,该方法100包括以下内容中的至少部分内容。

在110中,虚拟机监控器在非安全世界创建第一虚拟机。

例如,该第一虚拟机可以是如图2所示的VM0。其中,该第一虚拟机可以在系统初始化阶段建立的。

在120中,虚拟机监控器将非安全世界中的多个程序加载到第一虚拟机中,该多个程序包括内核和至少一个用户程序。

例如,该多个程序包括如图2所示的OS内核、CA1、CA2以及CA3。

可选地,在第一虚拟机中,内核运行在第一等级的模式下,至少一个用户程序运行在第二等级的模式下,第一等级高于第二等级。

可选地,第一等级的模式可以为图2所示的EL1模式,第二等级的模式可以是图2所示的EL0模式。

例如,如图2所示,OS内核可以工作在EL1模式,CA1、CA2和CA3可以工作在EL0模式。

在130中,在确定至少一个用户程序中的第一用户程序需要访问安全世界时,虚拟机监控器在非安全世界创建的第二虚拟机。

例如,如图2所示,在某一用户程序,例如CA3,需要访问安全世界时,VMM可以创建工作在EL1模式的VM 1,并可以将该用户程序CA3从VM0剥离,并加载在VM 1中。

可选地,虚拟机监控器为所述第二虚拟机分配由所述第一用户程序独享的资源。其中,该独享的资源可选的包括CPU资源、外设和内存中的至少一种。

在第一用户程序访问安全世界时将要采用一些资源,如果这些资源被其它程序所利用,则会泄露访问安全世界得到的信息,例如,如果第二虚拟机中的内存资源与非安全世界中的其他程序是共享的,则存储在该内存中的来自安全世界的信息将有可能被其他程序所窃取。因此,为所述第二虚拟机分配由所述第一用户程序独享的资源,可以避免其它程序利用该第一用户程序访问安全世界所采用的资源而窃取与安全世界相关的信息。

可选地,在多个用户程序均需要访问安全世界时,可以创建多个工作在第一等级的模式下的虚拟机,该多个虚拟机中一一对应于多个用户程序,用于对应的用户程序访问安全世界,该多个虚拟机各自的资源是独享的。

因此,每个合法的用户程序都独占地部署在一个独立虚拟机中,从而每个用户程序可以独享安全服务通道,从而用户程序访问安全世界的安全服务通道可以不被其他用户程序所利用,从而可以避免恶意程序利用该服务通道访问安全世界。

并且进一步地,每个用户程序的安全服务通道都是独立的,摈弃了所有的用户程序利用相同的安全服务通道访问安全世界,避免恶意软件通过长期占用该相同的安全服务通道(例如,占用公用的SMC驱动的方式)来瘫痪其他用户程序的安全服务。

可选地,该独享的资源包括内存。其中,第二虚拟机中的内存可以作为第一用户程序与安全世界的程序共享内存。

因此,由于为第一用户程序创建的第二虚拟机的内存是独享的,非安全世界的用户程序跟安全世界的程序间通信用的共享内存做到了虚拟机级别的隔离,第一虚拟机内的恶意程序无法窃取和破坏第二虚拟机中的用户程序和安全世界的用户程序通信的共享内存中的数据。

可选地,虚拟机监控器可以设置虚拟化列表,以禁止剥离第一虚拟机中加载的内核和其他用户程序访问第二虚拟机中的内存页。

例如,如图2所示,VM0中的内核、CA1和CA2将禁止访问VM1中的内存页。

可选地,可以在二级页表中将对应第一用户程序的页表删除,来实现第一虚拟机种的程序访问第一用户程序的内存页。

由于操作系统可能会出现一些漏洞,恶意程序会利用这些漏洞执行一些操作(如提权)后破坏或者窃取正常用户程序的数据,以达到攻击的目的。而通过设置虚拟化列表禁止第一虚拟机中的所有程序访问属于被剥离的第一用户程序的内存页后,第一虚拟机中的恶意程序也无法访问第一用户程序的内存页,也就意味着无法对第一用户程序进行攻击(如果要攻击某个程序,必然会访问到该程序的内存页),因此,这种实现方式进一步增强了应用程序的安全性。

可选地,在第一用户程序需要访问安全世界的情况下,虚拟机监控器确定第一用户程序是否为安全用户程序,在确定第一用户程序为安全用户程序时,虚拟机监控器将第一用户程序从第一虚拟机中剥离,并加载到创建的第二虚拟机。。

具体地说,在某一用户程序需要访问安全世界时,第一虚拟机可以自陷到虚拟机监控器,虚拟机监控器可以保存第一虚拟机的上下文,并触发安全世界的动态度量功能,度量该用户程序的完整性及合法性,以确保安全。

可选地,确定所述第一用户程序为安全用户程序的动作可以在将所述第一用户程序从所述第一虚拟机中剥离之前执行。

具体地,确定所述第一用户程序为安全用户程序的动作可以在将所述第一用户程序从所述第一虚拟机中剥离之前,以及在所述非安全世界创建运行在所述第一等级的模式下的第二虚拟机之后执行。

或者,确定所述第一用户程序为安全用户程序的动作也可以在所述非安全世界创建运行在所述第一等级的模式下的第二虚拟机之前,以及将所述第一用户程序加载到所述第一虚拟机之后执行。

进一步地,除了需要度量当前需要访问安全世界的用户程序的完整性和安全性,还可以度量其他程序的完整性和合法性,例如,可以度量代理程序和/或其他用户程序的完整性和安全性。

可选地,动态度量为部署在TrustZone中的动态安全监控功能,可以用于校验程序运行中不发生变化的数据对象,通过校验对象的哈希值确保运行过程中没有发生非法的篡改。

具体地,虚拟机监控器可以获取第一哈希值组(包括至少一个第一哈希值)和第二哈希值组(包括至少一个第二哈希值),其中,所述第一哈希值为所述第一用户程序中的至少一个数据对象(例如,为用户程序代码段,或者还包括用户程序运行所需的动态链接库)的当前的哈希值,所述第二哈希值是所述数据对象在出厂时的哈希值(为了安全,会被放置在安全世界的内存区里);在所述第一哈希值组与第二哈希值组相同(即每个数据对象的哈希值相同),确定所述第一用户程序为安全用户程序。

由于用户程序的数据对象的哈希值在正常情况下是不变的,如果被篡改或利用,则会导致数据对象的哈希值与出厂时的哈希值不相同,因此,通过比较用户程序的数据对象的当前的哈希值与出厂时的哈希值,可以准确的判断该用户程序是否是安全用户程序。

可选地,在如图2所示的架构中,处于EL0模式的进程可以通过访问ID寄存器的方式自陷到EL2模式的VMM,例如,对ID寄存器Group 2中的CTR_EL0寄存器(其中,CRT_EL0是ID寄存器Group2中的寄存器,CTR为计数寄存器(Count Register))进行访问来触发自陷。可选地,至此之前,VMM中可以对HCR_EL2寄存器(HCR_EL2寄存器为在VMM控制的虚拟化控制寄存器,HCR为管理程序配置寄存器(Hypervisor Configuration Register))的对应比特位进行设置,例如,在VMM中将HCR_EL2的TID2位置位。

可选地,在如图2所示的架构中,处于EL1模式的程序(例如,操作系统的内核)自陷到VMM可以采取指令触发的方式,通过访问HVC指令,可自陷到EL2模式的VMM中。

在140中,将第一用户程序从第一虚拟机中剥离,并加载到第二虚拟机,以便于第一用户程序通过第二虚拟机访问安全世界。

具体地说,在虚拟机监控器确定第一用户程序为合法且安全的程序之后,可以对第一用户程序进行迁移,即从第一虚拟机中剥离,并加载到第二虚拟机,从而该第一用户程序可以调用第二虚拟机中的SMC驱动以访问安全世界。例如,可以通过SMC驱动申请共享内存,并通过共享内存,与安全世界中的TA进行交互。

可选地,第二虚拟机可以通过调用SMC指令的方式,访问安全世界。

本申请中的“剥离”顾名思议是指“去除”、“移除”的意思,其实质是不在第一虚拟机中运行第一用户程序,而让第一用户程序在第二虚拟机中运行,可看作将第一虚拟机中的代码段“剪切”到了第二虚拟机。

可选地,本申请实施例可以采用多种实现方式实现第一用户程序从第一虚拟机中剥离,并加载到第二虚拟机。

在一种实现方式中,虚拟机监控器可以将第一用户程序在第一虚拟机中的内存页(包括各种程序本身的代码段或者运行所需的动态链接库等)拷贝到第二虚拟机中,并修改第一虚拟机的内存页的映射关系,使得第一用户程序在第一虚拟机中的内存页被回收。

在另一种实现方式中,虚拟机监控器可以将在第一用户程序在第一虚拟机中的内存页直接映射到第二虚拟机(即将内存页在物理内存中的地址映射到第二虚拟机中的地址)。

本申请实施例还可以通过其他方式实现用户程序在虚拟机中的剥离和加载,具体可以参考现有技术,在此不再赘述。

为了便于理解,以下以图2所示的场景为例,结合图4描述如何进行第二虚拟机的创建以及进行用户程序的迁移。

在141中,CA3调用代理程序的初始化接口。

在142中,代理程序通过读取ID组2中的CTR_EL0寄存器,触发CPU自陷到EL2模式的VMM中。

在143中,在CPU自陷到VMM后,VMM保存VM0虚拟机上下文,并触发安全世界的动态度量功能,度量CA3的完整性及合法性,以确保安全。

在144中,VMM创建新的虚拟机VM1,VMM将CA3迁移到虚拟机VM 1的EL1模式中,以继续运行CA3。

可选地,在本申请实施例中,加载到第一虚拟机的多个程序还包括用户程序对应的代理程序,在用户程序从第一虚拟机剥离之后,作为所述用户程序在所述第一虚拟机的代理,以便于在所述用户程序在所述第二虚拟机运行时所产生的待处理事件被执行。

可选地,在本申请实施例中,代理程序可以与用户进程一一对应。代理程序可以作为对应的用户进程的代理。具体地,在用户程序加载在第二虚拟机中时,代理程序可以代理作为该用户程序。

可选地,在本申请实施例中,虚拟机监控器还可以获取针对第一用户程序的待处理事件,待处理事件需要由内核处理;保存第二虚拟机的上下文;恢复代理程序的上下文,以便于内核对待处理事件进行处理。

可选地,在本申请实施例中,在第一虚拟机处理完待处理事件之后,虚拟机监控器在第二虚拟机中恢复第一用户程序。

可选地,该代理程序可以处于第二等级的模式。例如,如图2所示的EL0模式。

可选地,待处理事件为中断事件、缺页异常事件或系统调用事件。

因此,在本申请实施例中,在当前运行的用户程序所在的虚拟机没有操作系统内核时,可以通过代理程序代理该用户程序,通过原有的虚拟机的操作内核实现中断事件、缺页异常事件或系统调用事件的处理。

为了便于理解,以下将以图2所示的架构为例,分别结合图5-7描述待处理事件为中断事件、缺页异常事件和系统调用事件时的处理流程。

图5所示的为在待处理事件为中断事件时的处理流程的示意性图。

在151中,VMM获取由硬件触发的中断信号,此时,当前系统正在运行CA3。

在152中,VMM触发虚拟中断,并恢复该CA3的代理程序的运行。

在153中,系统切换到代理程序,且虚拟中断到达虚拟机VM0,中断抢占了代理程序的运行。

在154中,VM 0内核处理虚拟中断。

在155中,VM 0完成中断处理后,恢复代理程序的运行。

在156中,代理程序自陷到VMM。

在157中,VMM恢复被中断的VM 1的上下文。

因此,在如图5所示的方案中,在当前系统运行在VM 1的情况下,在硬件触发中断信号时,VMM可以恢复代理程序的处理,将代理程序作为第一用户程序的代理,并随后执行中断处理,并在中断处理后恢复代理程序,从而即使在新的架构中,正在运行的程序所在的虚拟机没有操作系统内核,仍然可以进行中断处理。

图6所示的为在待处理事件为系统调度事件时的处理流程的示意性图。

在161中,当系统运行CA3时,如发生调度中断,则中断被VMM捕获。

在162中,VMM恢复VM0的上下文,将CA3切换到代理程序运行,同时转发虚拟中断到VM0。

在163中,中断抢占代理程序后,进入VM0的内核。

在164中,由内核调度模块,根据自身的调度策略执行相关的进程进行运行。

在165中,当重新调度代理程序后,代理程序自陷到VMM。

在166中,VMM恢复VM1,也即将切换CA3切换到VM1。

因此,由于在本申请架构中,CA1所在的VM1没有操作系统内核,无法自调度,例如,无法确定执行CA 1的时间分片,且CA1需遵从VM0的调度策略,从而在如图6所示的方案中,VM0内核对CA1的调度,可以通过代理程序来完成。

图7示出的为在待处理事件为缺页异常事件时的处理流程的示意性图。

在171中,CA1缺页后,触发的异常,由VMM接管。

在172中,VMM识别CA3发生缺页异常,则该CA3的恢复代理程序的上下文。

在173中,代理程序触发缺页异常事件重新进入VM0内核。

在174中,内核缺页处理程序执行缺页相关处理。

在175中,内核恢复代理程序的处理。

在176中,代理程序自陷到VMM。

在177中,VMM设置相应的内存页后,恢复VM1,也即将CA 3切换到VM1中。

因此,在如图7所示的方案中,在当前系统运行在VM1的情况下,在VM1中的CA3出现缺页异常事件后,可以恢复VM0中的CA3的代理程序,由VM0的操作系统内核进行缺页异常事件的处理,从而即使在新的架构中,正在运行的程序所在的虚拟机没有操作系统内核,仍然可以进行缺页异常事件的处理。

图8是根据本申请实施例的虚拟机监控器200的示意性框图。如图8所示,该虚拟机监控器200包括创建单元210和加载单元220。

其中,所述创建单元210用于:在非安全世界创建第一虚拟机;所述加载单元220用于:将所述非安全世界中的多个程序加载到所述第一虚拟机中,所述多个程序包括内核和至少一个用户程序,其中,所述内核运行在第一等级的模式下,所述至少一个用户程序运行在第二等级的模式下,所述第一等级高于所述第二等级;所述创建单元210进一步用于:在所述至少一个用户程序中的第一用户程序需要访问安全世界时,在所述非安全世界创建运行在所述第一等级的模式下的第二虚拟机;所述加载单元220进一步用于:将所述第一用户程序从所述第一虚拟机中剥离,并加载到所述第二虚拟机,以便于所述第一用户程序通过所述第二虚拟机访问所述安全世界。

可选地,如图8所示,所述虚拟机监控器200还包括设置单元230用于:设置虚拟化列表,以禁止剥离所述第一用户程序后的所述第一虚拟机中除所述第一用户程序之外的其他程序访问从所述第一虚拟机剥离的所述第一用户程序的内存页。

可选地,所述创建单元210进一步用于:为所述第二虚拟机分配由所述第一用户程序独享的资源。

可选地,所述多个程序还包括代理程序,其中,在所述第一用户程序从所述第一虚拟机剥离之后,所述代理程序作为所述第一用户程序在所述第一虚拟机对应的代理,以触发所述内核处理需要由所述内核处理的待处理事件,其中,所述待处理事件是在所述第一用户程序在所述第二虚拟机运行时产生的。

可选地,如图8所示,所述虚拟机监控器200还包括处理单元240,用于:在所述第一用户程序运行时,获取针对所述第一用户程序的所述待处理事件,所述处理事件需要由内核处理;保存所述第二虚拟机的上下文;恢复所述第一虚拟机中的代理程序的运行,以触发所述内核处理需要由所述内核处理的待处理事件,其中,所述待处理事件是在所述第一用户程序在所述第二虚拟机运行时产生的。

可选地,所述处理单元240进一步用于:在所述第一虚拟机处理完所述待处理事件之后,在所述第二虚拟机中恢复所述第一用户程序。

可选地,所述待处理事件为中断事件、缺页异常事件或系统调用事件。

可选地,如图8所示,所述虚拟机监控器200还包括确定单元250,用于:确定所述第一用户程序为安全用户程序。

可选地,所述确定单元250进一步用于:获取第一哈希值组和第二哈希值组,所述第一哈希值组包括至少一个第一哈希值,所述第二哈希值组包括至少一个第二哈希值,其中,每个第一哈希值与所述第一用户程序中的至少一个数据对象中的每个数据对象一一对应,所述每一哈希值为数据对象的当前的哈希值;每个第二哈希值与所述第一用户程序中的至少一个数据对象中的每个数据对象一一对应,所述第二哈希值是所述数据对象在出厂时的哈希值;在所述第一哈希值组与第二哈希值组相同时,确定所述第一用户程序为安全用户程序。

应理解,根据本申请实施例的一种虚拟及监控器200中的各个单元的上述和其它操作和/或功能分别为了实现图3中的方法100中虚拟机监控器的相应流程,为了简洁,在此不再赘述。

图9示出了本申请实施例提供的用于访问安全世界的装置300的示意性框图,该装置300包括处理器310和存储器320。

存储器320,用于存储程序,该程序包括代码;

处理器310,用于执行存储器320中的程序代码。

可选地,当该代码被执行时,该处理器310可以实现图3中的方法100中由虚拟机监控器执行的各个操作,为了简洁,在此不再赘述。

图10示出了一种用于访问安全世界的系统400的示意性框图。如图10所示,该系统400包括:非安全世界的硬件层410;运行在非安全世界的所述硬件层之上的虚拟机监控器420,由所述虚拟机监控器创建和控制的第一虚拟机430和第二虚拟机440。

所述第一虚拟机430用于加载所述非安全世界的多个程序,所述多个程序包括内核和至少一个用户程序,其中,所述内核运行在第一等级的模式下,所述至少一个用户程序运行在第二等级的模式下,所述第一等级高于所述第二等级;所述第二虚拟机用于加载所述至少一个用户程序中从所述第一虚拟机剥离的第一用户程序,以用于所述第一用户程序通过所述第二虚拟机访问安全世界,其中,所述第二虚拟机运行在第二等级的模式下。

可选地,该硬件层410可以包括处理器、通信接口和存储器等。

应理解,该虚拟机监控器420,第一虚拟机430和第二虚拟机440的相应描述可以参考图3所示的方法100,为了简洁,在此不再赘述。

应理解,在本申请实施例中,该处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。

通信接口可以是用于实现信号发送和接收功能,例如频率调制和解调功能或叫上变频和下变频功能。

在实现过程中,上述方法的至少一个步骤可以通过处理器中的硬件的集成逻辑电路完成,或该集成逻辑电路可在软件形式的指令驱动下完成该至少一个步骤。因此,通信装置可以是个芯片或者芯片组。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本发明实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、(数字用户线(Digital Subscriber Line,DSL)))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD)等。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

所属领的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1