防止虚拟机恶意回滚的方法、装置及电子设备
技术领域
本申请涉及虚拟机
技术领域
,尤其涉及一种防止虚拟机恶意回滚的方法、装置及电子设备。背景技术
近年来,云计算受到了学术界和产业界的一致关注。随着云计算应用的日益复杂。其安全性要求也越来越高。因此也出现了多重针对云计算、虚拟机安全的保护技术。比如VTPM(Virtualizing Trusted Platform Module,虚拟化的可信平台控制模块)技术的使用。VTPM基于可信硬件基础TPM(Trusted Platform Module,可信平台控制模块),利用TPM的可信保护方案技术,为每个虚拟机虚拟化出一个专门的VTPM构建出可信的虚拟OS(Operation System,操作系统),通过该技术,极大的提升了虚拟机的安全可信功能。
VTPM是对TPM的虚拟化,使得TPM能够应用在云计算等虚拟化的环境中,在一台拥有无限VM(Virtual Machine,虚拟机)的物理机上允许可信计算技术,通过虚拟可信平台模块,使得TPM的安全存储与加密功能能够在VM中使用,支持在虚拟化环境中建立可信环境,使得虚拟机的可信服务成为可能,但可信计算要求安全状态不可逆转,从而导致虚拟机无法回滚。而云平台支持虚拟机快照与回滚的特点却与可信计算相违背,比如,一个虚拟机从安全状态回滚到不安全状态,会导致安全状态不一致,这就导致虚拟机回滚异常。故,如何在可信的虚拟机环境下,识别出异常的虚拟机回滚,以确保虚拟机正常回滚,是目前亟待解决的技术问题。
发明内容
有鉴于此,本申请一个或多个实施例提供了一种防止虚拟机恶意回滚的方法、装置及电子设备,可有效识别出异常的虚拟机回滚操作。
本申请一个或多个实施例提供了一种防止虚拟机恶意回滚的方法,包括:获取虚拟机回滚命令,其中,所述虚拟机回滚命令中包括所述虚拟机的回滚目标;获取所述虚拟机当前的第一状态信息;将所述第一状态信息写入所述虚拟机的虚拟机状态保护内存,其中,所述虚拟机状态保护内存中存储有在获取所述虚拟机回滚命令之前所述虚拟机的状态信息;响应于接收到安全处理器发出的所述虚拟机状态保护内存的异常消息,确定当前回滚操作异常,其中,所述安全处理器上运行第一度量任务,在所述第一度量任务处于运行状态下,所述第一度量任务周期性的根据所述第一状态信息计算所述虚拟机状态保护内存对应的第一校验值,将所述第一校验值与所述第一度量任务中存储的第一度量基准值进行对比,根据对比结果确定所述虚拟机状态保护内存中存储的内容是否发生异常。
可选的,所述方法还包括:在获取虚拟机回滚命令之前,向所述安全处理器发送暂停度量任务请求以及所述第一度量任务的认证信息,以使所述安全处理器在确定所述认证信息合法后根据所述暂停度量任务请求暂停所述第一度量任务;在将所述第一状态信息写入所述虚拟机的虚拟机状态保护内存之后,基于所述第一状态信息生成度量更新值,将所述度量更新值以及所述认证信息发送给所述安全处理器,以使所述第一度量任务在确定所述认证信息合法后,使用所述度量更新值更新所述第一度量任务中的第一度量基准值;响应于所述第一度量任务根据所述度量更新值更新所述第一度量基准值,确定当前回滚操作合法,根据所述回滚目标对所述虚拟机进行回滚操作。
可选的,所述方法还包括:在获取虚拟机回滚命令之前,获取虚拟机监视器VMM的加载命令;请求所述安全处理器为所述VMM创建第二度量任务,向所述安全处理器请求启动所述第二度量任务;其中,所述第二度量任务在处于运行状态下时,所述第二度量任务周期性的根据所述VMM对应的内存计算第二校验值,将所述第二校验值与所述第二度量任务中存储的第二度量基准值进行对比,根据对比结果确定所述VMM是否发生异常;加载所述VMM。
可选的,所述方法还包括:在加载所述VMM之后,获取VMM的卸载命令;请求停止所述第二度量任务;销毁所述第二度量任务;卸载所述VMM。
可选的,所述方法还包括:在获取所述虚拟机回滚命令之前,获取虚拟机创建命令,其中,所述虚拟机创建命令中包括虚拟机创建参数;根据所述虚拟机创建参数创建所述虚拟机;获取所述虚拟机当前的第二状态信息;将所述第二状态信息写入所述虚拟机的虚拟机状态保护内存;基于所述第二状态信息生成所述第一度量基准值;将所述第一度量基准值发送给所述安全处理器;请求所述安全处理器创建所述第一度量任务;请求所述安全处理器启动所述第一度量任务。
可选的,所述方法还包括:在获取所述虚拟机当前的第二状态信息之后,为所述虚拟机申请所述虚拟机状态保护内存。
可选的,所述方法还包括:在请求所述安全处理器创建所述第一度量任务之后,注册异常回调函数;响应于接收到所述安全处理器发出的所述虚拟机状态保护内存的异常消息,触发所述异常回调函数。
可选的,所述方法还包括:请求所述安全处理器停止所述第一度量任务;获取虚拟机销毁命令;根据所述虚拟机销毁命令销毁所述虚拟机;请求所述安全处理器销毁所述第一度量任务。
可选的,所述方法还包括:在根据所述回滚目标对所述虚拟机进行回滚操作之后,根据所述认证信息请求所述安全处理器启动所述第一度量任务,其中,所述第一度量任务启动后处于运行状态。
可选的,所述认证信息包括:由所述安全处理器在创建所述第一度量任务时生成的授权码,以及所述第一度量任务创建者的上下文信息。
可选的,所述虚拟机的状态信息至少包括以下一种:虚拟机的进程号、虚拟地址空间身份标识ASID、系统时间、操作用户身份标识UID信息以及虚拟化的可信平台控制模块VTPM状态信息。
本发明一个或多个实施例还提供了一种防止虚拟机恶意回滚的装置,包括:第一获取模块,被配置为获取虚拟机回滚命令,其中,所述虚拟机回滚命令中包括所述虚拟机的回滚目标;第二获取模块,被配置为获取所述虚拟机当前的第一状态信息;写入模块,被配置为将所述第一状态信息写入所述虚拟机的虚拟机状态保护内存,其中,所述虚拟机状态保护内存中存储有在获取所述虚拟机回滚命令之前所述虚拟机的状态信息;确定模块,被配置为响应于接收到安全处理器发出的所述虚拟机状态保护内存的异常消息,确定当前回滚操作异常,其中,所述安全处理器上运行第一度量任务,在所述第一度量任务处于运行状态下,所述第一度量任务周期性的根据所述状态信息计算所述虚拟机状态保护内存对应的第一校验值,将所述第一校验值与所述第一度量任务中存储的第一度量基准值进行对比,根据对比结果确定所述虚拟机状态保护内存中存储的内容是否发生异常。
可选的,所述装置还包括:第一发送模块,被配置为在获取虚拟机回滚命令之前,向所述安全处理器发送暂停度量任务请求以及所述第一度量任务的认证信息,以使所述安全处理器在确定所述认证信息合法后根据所述暂停度量任务请求暂停所述第一度量任务;第一生成模块,被配置为在将所述第一状态信息写入所述虚拟机的虚拟机状态保护内存之后,基于所述第一状态信息生成度量更新值,将所述度量更新值以及所述认证信息发送给所述安全处理器,以使所述第一度量任务在确定所述认证信息合法后,使用所述度量更新值更新所述第一度量任务中的第一度量基准值;回滚模块,被配置为响应于所述第一度量任务根据所述度量更新值更新所述第一度量基准值,确定当前回滚操作合法,根据所述回滚目标对所述虚拟机进行回滚操作。
可选的,所述装置还包括:第二获取模块,被配置为在获取虚拟机回滚命令之前,获取虚拟机监视器VMM的加载命令;第一请求模块,被配置为请求所述安全处理器为所述VMM创建第二度量任务;第二请求模块,被配置为向所述安全处理器请求启动所述第二度量任务,其中,所述第二度量任务处于运行状态下,所述第二度量任务周期性的根据所述VMM对应的内存计算第二校验值,将所述第二校验值与所述第二度量任务中存储的第二度量基准值进行对比,根据对比结果确定所述VMM是否发生异常;加载模块,被配置为加载所述VMM。
可选的,所述装置还包括:第三获取模块,被配置为在加载所述VMM之后,获取VMM的卸载命令;第三请求模块,被配置为请求停止所述第二度量任务;销毁模块,被配置为销毁所述第二度量任务;卸载模块,被配置为卸载所述VMM。
可选的,所述装置还包括:第四获取模块,被配置为在获取所述虚拟机回滚命令之前,获取虚拟机创建命令,其中,所述虚拟机创建命令中包括虚拟机创建参数;创建模块,被配置为根据所述虚拟机创建参数创建所述虚拟机;第五获取模块,被配置为获取所述虚拟机当前的第二状态信息;保存模块,被配置为将所述第二状态信息写入所述虚拟机的虚拟机状态保护内存;第二生成模块,被配置为基于所述第二状态信息生成所述第一度量基准值;第二发送模块,被配置为将所述第一度量基准值发送给所述安全处理器;第四请求模块,被配置为请求所述安全处理器创建所述第一度量任务;第五请求模块,被配置为请求所述安全处理器启动所述第一度量任务。
可选的,所述装置还包括:申请模块,被配置为在获取所述虚拟机当前的第二状态信息之后,为所述虚拟机申请所述虚拟机状态保护内存。
可选的,所述装置还包括:注册模块,被配置为在请求所述安全处理器创建所述第一度量任务之后,注册异常回调函数;触发模块,被配置为接收到所述安全处理器发出的所述虚拟机状态保护内存的异常消息,触发所述异常回调函数。
可选的,所述装置还包括:第六请求模块,被配置为请求所述安全处理器停止所述第一度量任务;第六获取模块,被配置为获取虚拟机销毁命令;销毁模块,被配置为根据所述虚拟机销毁命令销毁所述虚拟机;第七请求模块,被配置为请求所述安全处理器销毁所述第一度量任务。
可选的,所述装置还包括:第八请求模块,被配置为在根据所述回滚目标对所述虚拟机进行回滚操作之后,根据所述认证信息请求所述安全处理器启动所述第一度量任务,其中,所述第一度量任务启动后处于运行状态。
可选的,所述认证信息包括:由所述安全处理器在创建所述第一度量任务时生成的授权码,以及所述第一度量任务创建者的上下文信息。
可选的,所述虚拟机的状态信息至少包括以下一种:虚拟机的进程号、虚拟地址空间身份标识ASID、系统时间、操作用户身份标识UID信息以及虚拟化的可信平台控制模块VTPM状态信息。
本发明一个或多个实施例还提供了一种电子设备,包括:处理器;和存储器,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现如上述任意一种防止虚拟机恶意回滚的方法。
本发明一个或多个实施例还提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现上述任意一种防止虚拟机恶意回滚的方法。
本申请一个或多个实施例提供的防止虚拟机恶意回滚的方法、装置及电子设备,在获取到虚拟机回滚命令后,获取虚拟机当前的第一状态信息,将该第一状态信息写入虚拟机的虚拟机状态保护内存,以使得运行于安全处理器上的第一度量任务周期性的基于第一状态信息计算虚拟机状态保护内存对应的第一校验值,将该校验值与第一度量任务中存储的第一度量值进行对比,根据对比结果确定虚拟机状态保护内存中存储的内容是否发生异常,在获取到安全处理器发出的虚拟机状态保护内存异常消息的情况下,确定当前回滚操作异常,从而可有效识别出异常的虚拟机回滚操作,提高了虚拟机的安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是根据本申请一个或多个实施例示出的一种硬件系统的示意图;
图2是根据本申请一个或多个实施例示出的一种防止虚拟机恶意回滚的方法的流程图;
图3是根据本申请一个或多个实施例示出的一种防止虚拟机恶意回滚的方法的流程图;
图4是根据本申请一个或多个实施例示出的一种防止虚拟机恶意回滚的方法的流程图;
图5是根据本申请一个或多个实施例示出的一种虚拟机系统的结构示意图;
图6是根据本申请一个或多个实施例示出的从加载VMM至卸载VMM过程的流程图;
图7是根据本申请一个或多个实施例示出的创建虚拟机的流程图;
图8是根据本申请一个或多个实施例示出的销毁虚拟机的流程图;
图9是根据本申请一个或多个实施例示出的一种防止虚拟机恶意回滚的装置的结构示意图;
图10是根据本申请一个或多个实施例示出的一种防止虚拟机恶意回滚的装置的结构示意图;
图11是根据本申请一个或多个实施例示出的一种电子设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本申请一个或多个实施例提供了一种防止虚拟机恶意回滚的方法,该方法可基于图1所示的硬件系统实现。如图1所示,该硬件系统包括CPU(Central Processing Unit,中央处理器)、内存、虚拟机状态保护内存、安全处理器以及安全处理器内存。
其中,安全处理器的运行环境与CPU隔离,具有专用的内存资源,CPU无法直接访问该内存资源;安全处理器与CPU之间具有特定的通信接口,CPU通过该通信接口可以向安全处理器发送命令,安全处理器通过该通信接口返回命令处理的结果;安全处理器可以访问自身的内存和CPU的所有内存,CPU只能访问自身的内存,无法访问安全处理器的内存。其中,虚拟机状态保护内存块用来存储虚拟机的状态信息。
图2是根据本申请一个或多个实施例示出的一种防止虚拟机恶意回滚的方法的流程图,该方法例如可以由图1所示的硬件系统中的CPU来执行,如图2所示,该方法包括:
步骤201:获取虚拟机回滚命令,其中,所述虚拟机回滚命令中包括所述虚拟机的回滚目标;
其中,虚拟机回滚命令用于指示将虚拟机由当前状态回滚至虚拟机之前所处的某一状态,该状态即为回滚目标。
步骤202:获取所述虚拟机当前的第一状态信息;
例如,该第一状态信息至少可以包括以下一种信息:
虚拟机的进程号、ASID(Adress Space Identity Document,地址空间标识)、系统时间、操作用户身份标识UID(User Identification,用户身份标识)信息以及VTPM状态信息。
步骤203:将所述第一状态信息写入所述虚拟机的虚拟机状态保护内存;
其中,所述虚拟机状态保护内存中存储有在获取所述虚拟机回滚命令之前所述虚拟机的状态信息。
在本申请的一个或多个实施例中,可预先为每个虚拟机申请一个虚拟机状态保护内存块,用来存储虚拟机每次回滚前的状态信息,基于此,在步骤203中,可直接将获取到的第一状态信息写入预先为当前虚拟机分配的虚拟机状态保护内存,或者,可在创建虚拟机之后,申请该虚拟机的虚拟机状态保护内存。每个虚拟机状态保护内存仅用于存储与其对应的虚拟机的状态信息。其中,写入虚拟机状态保护内存的虚拟机状态信息例如可以包括上述多种第一状态信息中的至少一种。
步骤204:响应于接收到安全处理器发出的所述虚拟机状态保护内存的异常消息,确定当前回滚操作异常。
其中,所述安全处理器上运行第一度量任务,在所述第一度量任务处于运行状态下,所述第一度量任务周期性的根据所述第一状态信息计算所述虚拟机状态保护内存对应的第一校验值,该第一校验值例如可以是根据上述虚拟机状态保护内存中存储的数据计算得到的哈希值,将所述第一校验值与所述第一度量任务中存储的第一度量基准值进行对比,根据对比结果确定所述虚拟机状态保护内存中存储的内容是否发生异常,例如,根据对比结果确定虚拟机状态保护内存中存储的数据是否发生改变,若发生改变,则确定虚拟机状态保护内存发生异常。
在步骤204中,可以在确定出当前回滚操作异常之前,已根据虚拟机回滚命令完成了对虚拟机的回滚操作,这时确定出当前回滚操作异常,可发出回滚异常消息,以及时通知管理员进行处理;或者,在确定出当前回滚操作异常,可触发异常回调函数,阻止本次回滚操作,以及通知管理员虚拟机当前出现异常。
图3是根据本申请一个或多个实施例示出的一种防止虚拟机恶意回滚的方法的流程图,如图3所示,该方法包括:
步骤301:使用者调用虚拟机回滚命令;
步骤302:将当前虚拟机状态信息(即第一状态信息)写入虚拟机状态保护内存;
步骤303:运行于安全处理器上的度量任务检测到虚拟机状态保护内存中存储的内容发生异常,确定度量异常,触发异常回调函数;
步骤304:接收到安全处理器发出的虚拟机状态保护内存中存储的内容发生异常的消息,异常回调函数被触发,阻止虚拟机回滚,通知管理员异常;
步骤305:虚拟机回滚失败。
本申请一个或多个实施例提供的防止虚拟机恶意回滚的方法,在获取到虚拟机回滚命令后,获取虚拟机当前的第一状态信息,将该第一状态信息写入虚拟机的虚拟机状态保护内存,以使得运行于安全处理器上的第一度量任务周期性的基于第一状态信息计算虚拟机状态保护内存对应的第一校验值,将该校验值与第一度量任务中存储的第一度量值进行对比,根据对比结果确定虚拟机状态保护内存中存储的内容是否发生异常,在获取到安全处理器发出的虚拟机状态保护内存中存储的内容发生异常的消息的情况下,确定当前回滚操作异常,从而有效识别出了异常的虚拟机回滚操作,提高了虚拟机的安全性。在本申请的一个或多个实施例中,上述防止虚拟机恶意回滚的方法还可包括:
在获取虚拟机回滚命令之前,向所述安全处理器发送暂停度量任务请求以及所述第一度量任务的认证信息,以使所述安全处理器在确定所述认证信息合法后根据所述暂停度量任务请求暂停所述第一度量任务;
在本申请的一个或多个实施例中,第一度量任务例如可以是TDM(TrustedDynamic Measurement,可信动态度量)任务,第一度量任务运行于安全处理器上,在第一度量任务处于启动状态下,周期性的根据已经注册的受保护的内存段(如上述虚拟机状态保护内存)中存储的数据计算哈希值(为上述第一校验值的一个示例),与第一度量任务预存的基准值,如上述第一度量基准值进行对比,以确保受保护的内存中的数据不被篡改,一旦检测到数据被篡改,可以触发异常处理警告。需要说明的是,注册到TDM模块的内存(如上述虚拟机状态保护内存)即为受TDM模块保护的内存,TDM模块即可对该内存中的数据进行保护。
例如,CPU可调用度量任务暂停命令,以请求安全处理器暂停第一度量任务,在调用度量任务暂停命令后,CPU将第一度量任务对应的认证信息发送给安全处理器,安全处理器在验证认证信息,确定该认证信息合法后,可暂停第一度量任务,其中,第一度量任务对应的认证信息例如可以包括第一度量任务被创建时生成的授权码,例如随机授权码,以及度量任务创建者的上下文信息,其中,上下文信息例如可以包括进程号和/或驱动模块的名称。
在将所述第一状态信息写入所述虚拟机的虚拟机状态保护内存之后,基于所述第一状态信息生成度量更新值,将所述度量更新值以及所述认证信息发送给所述安全处理器,以使所述第一度量任务在确定所述认证信息合法后,使用所述度量更新值更新所述第一度量任务中的第一度量基准值;
在一个例子中,可以由CPU基于上述多种第一状态信息中的至少一种状态信息计算得到度量更新值,例如,可根据上述至少一种状态信息计算得到的哈希值作为该度量更新值。
响应于所述第一度量任务根据所述度量更新值更新所述第一度量基准值,确定当前回滚操作合法,根据所述回滚目标对所述虚拟机进行回滚操作。
图4是根据本申请一个或多个实施例示出的一种防止虚拟机恶意回滚的方法的流程图,如图4所示,该方法可包括如下处理:
步骤401:在CPU端,使用者调用度量任务暂停命令,以请求暂停度量任务;
在该步骤401中,使用者调用度量任务暂停命令,CPU即将使用者持有的度量任务的授权码以及上下文信息发送给安全处理器。
步骤402:安全处理器暂停度量任务;
在该步骤402中,安全处理器对接收到的来自CPU的度量任务的授权码以及上下文信息进行验证,若授权码以及上下文信息与安全处理器中存储的度量任务对应的授权码以及上下文信息均一致,确定授权码以及上下文信息验证合法,暂停度量任务,否则不暂停度量任务;
步骤403:调用虚拟机回滚命令;
步骤404:将当前虚拟机状态信息写入虚拟机状态保护内存;
步骤405:根据当前虚拟机状态信息计算度量更新值;
在该步骤405中,例如可基于上述虚拟机状态信息中的至少一种信息计算哈希值,将计算得到的哈希值作为度量更新值;
步骤406:使用者调用度量任务更新接口;
在该步骤406中,在使用者调用度量任务更新接口时,CPU即将使用者持有的度量任务的授权码以及上下文信息发送给安全处理器。
步骤407:安全处理器更新度量任务;
在该步骤407中,安全处理器对CPU发送的度量任务的授权码以及上下文信息进行验证,验证通过后,使用度量更新值更新度量任务中的度量基准值;
步骤408:根据选择的回滚目标对虚拟机进行回滚操作;
步骤409:调用度量任务启动命令;
在该步骤409中,在调用度量任务启动命令时,CPU即将使用者持有的度量任务的授权码以及上下文信息发送给安全处理器。
步骤410:安全处理器启动度量任务;
在该步骤410中,安全处理器对CPU发送的度量任务的授权码以及上下文信息进行验证,验证通过后,启动度量任务。
步骤411:虚拟机回滚成功。
在该步骤中,例如可以发出虚拟机回滚成功的提示消息。
在本申请的一个或多个实施例中,在获取虚拟机回滚命令之前,先基于暂停度量任务请求以及第一度量任务的认证信息请求安全处理器暂停运行于其上的第一度量任务,以使得第一度量任务停止周期性的对虚拟机状态保护内存中的数据的一致性进行验证。
在将虚拟机的第一状态信息写入虚拟机状态保护内存后,可基于该第一状态信息生成度量更新值,将该度量更新值以及第一度量任务的认证信息发送给安全处理器。
安全处理器在接收到度量更新值后,由于需要使用该度量更新值对第一度量任务中的度量基准值进行更新操作,故,首先需对认证信息进行认证,待确定认证信息合法后,再使用度量更新值更新第一度量任务中的度量基准值,以及根据回滚目标执行本次虚拟机回滚操作,若确定认证信息不合法,则不更新度量任务中的度量基准值,以及阻止本次虚拟机回滚操作。由于认证信息与当前的第一度量任务对应,故,只有具有第一度量任务操作权限的用户才可获知该认证信息,从而可确保只有第一度量任务操作权限的用户才可以进行合法的虚拟机回滚操作。
在该方法的执行过程中,每当需对第一度量任务进行操作,均需确保第一度量任务的认证信息认证合法的基础上进行,故,可通过认证信息保证虚拟机环境的安全性。
在请求虚拟机回滚之前,若非法使用者意图使虚拟机恶意回滚,则由于无法获知第一度量任务的认证信息,使其无法向安全处理器请求暂停第一度量任务,由于第一度量任务在处于运行状态下会周期性的对虚拟机状态保护内存中的数据的一致性进行校验,在该种情况下,在向虚拟机状态保护内存写入第一状态信息时,会使第一度量任务检测到异常,此时,若再基于第一状态信息生更度量更新值,则会无法获知认证信息而导致无法更新第一度量基准值,而使得虚拟机回滚的操作也无法执行,基于此,可有效防止虚拟机恶意回滚,提高了虚拟机的安全性。
图5是根据本申请一个或多个实施例示出的一种虚拟机系统的结构示意图,如图5所示,虚拟机以虚拟机0以及虚拟机1为例进行说明,虚拟机中运行有VTPM(VirtualTrusted Platform Module,虚拟化的可信平台控制模块),可信动态度量模块运行于安全处理器上,中央处理器上运行可信动态度量驱动模块、VMM(Virtual Machine Monitor,虚拟机监视器)模块以及可信平台控制驱动模块,由中央处理器上的虚拟机监视器模块通过可信动态度量模块统一提供的接口访问以及控制安全处理器上的可信动态度量模块,实现对虚拟机状态保护内存中的数据的度量保护。其中,可信动态度量模块为OS的一个内核模块,其处于系统的高特权模式下,在其处理基于可信动态度量模块发出的命令的过程中会对授权码以及度量任务创建者的上下文信息进行提取,通过对授权码以及上下文信息的认证来保证命令交互的安全性。其中,虚拟机监视器模块可负责客户机的创建、执行、快照以及销毁等功能,也可负责TDM模块驱动接口的访问与虚拟机状态保护内存的管理工作。虚拟机监视器模块为内核中的一个驱动模块,符合内核中驱动模块的结构,可信动态度量模块可对虚拟机监视器模块代码段与只读段数据进行动态保护。
基于图5所示的虚拟机系统,本申请一个或多个实施例提供的防止虚拟机恶意回滚的方法还可包括:
在获取虚拟机回滚命令之前,获取虚拟机监视器VMM的加载命令;
请求所述安全处理器为所述VMM创建第二度量任务;向所述安全处理器请求启动所述第二度量任务;其中,当所述第二度量任务处于运行状态下时,所述第二度量任务周期性的根据所述VMM对应的内存计算第二校验值,将所述第二校验值与所述第二度量任务中存储的第二度量基准值进行对比,根据对比结果确定所述VMM是否发生异常,若确定所述VMM发生异常,向CPU发送VMM异常消息;
加载所述VMM。
需要说明的是,图5所示的VMM加载过程例如可以是在创建上述虚拟机之前执行。
通过为虚拟机监视器增加TDM模块动态度量保护,可动态保护虚拟机监视器不被篡改,确保虚拟机监视器的安全性,同时还可以确保上述图3所示的虚拟机回滚流程中的各步骤不会被恶意跳过。通过TDM模块对虚拟机监视器的保护以对VMM中的KVM(Kernel-basedVirtual Machine,开源的系统虚拟化模块)模块的保护为例进行说明,KVM作为一个内核驱动模块存在,可在Linux内核中通过符号接口获取到KVM模块的task_struct(称为进程描述符的一个结构体),该数据结构中包含了整个KVM模块的代码段,数据段等信息,获取到该信息后,可将KVM模块的数据段与代码段的地址段进行虚拟地址段到物理地址段的转换,得到与KVM模块的数据段与代码段对应的内存(为上述与VMM对应的内存的一个示例)的信息,转换成功后,可调用TDM模块的接口创建KVM模块相应内存段的任务,即可实现通过TDM模块对KVM模块的地址段以及代码段的保护。
本申请一个或多个实施例提供的防止虚拟机恶意回滚的方法还可包括:
在加载所述VMM之后,获取VMM的卸载命令;
请求停止所述第二度量任务;
销毁所述第二度量任务;
卸载所述VMM。
以下结合图6对加载VMM模块至卸载VMM模块的过程进行示例性说明,如图6所示,加载VMM模块的过程包括:
步骤601:获取VMM模块的加载命令;
步骤602:在VMM模块加载的初始阶段module_init中启动TDM保护,TDM保护包括需要保护的内存段,该内存段可包括VMM模块代码段对应的内存段以及只读数据段地址块。TDM保护还包括度量任务创建、异常回调函数注册、TDM度量任务的启动,通过TDM可实现对加载的VMM模块的动态保护;
步骤603:加载VMM模块;
步骤604:TDM保护下的VMM模块加载成功。
卸载VMM模块的过程包括:
步骤605:获取VMM模块卸载请求;
步骤606:在VMM模块的移除阶段module_exit中停止TDM任务,销毁TDM任务;
步骤607:卸载VMM模块;
步骤608:VMM模块卸载成功。
在加载VMM模块时启动TDM保护可以实现对VMM模块的动态保护,确保加载的VMM模块处于可信的状态下,为下一步VMM模块的使用提供可信保障。
在本申请的一个或多个实施例中,防止虚拟机恶意回滚的方法还可包括:在获取所述虚拟机回滚命令之前,获取虚拟机创建命令,其中,所述虚拟机创建命令中包括虚拟机创建参数;
例如,使用者调用虚拟机创建命令,选择虚拟机创建参数,CPU基于该参数生成虚拟机创建命令。
根据所述虚拟机创建参数创建所述虚拟机;
获取所述虚拟机当前的第二状态信息;
该第二状态信息例如可以包括以下至少一种:
虚拟机的进程号、ASID、系统时间、操作用户身份标识UID信息以及VTPM状态信息。
需要说明的是,虽然第一状态信息以及第二状态信息均可包括该多种状态信息中的至少一种,但在上述方法的执行过程中需确保第一状态信息以及第二状态信息中所包括的状态信息一致,此处,状态信息一致指的是信息个数与信息种类均一致。
将获取到的所述第二状态信息写入所述虚拟机的虚拟机状态保护内存;
基于所述第二状态信息生成所述第一度量基准值;
例如,基于以上多种状态信息中的至少一种计算哈希值,将计算得到的哈希值作为第一度量基准值。
将所述第一度量基准值发送给所述安全处理器;
请求所述安全处理器创建所述第一度量任务;
例如,CPU可调用度量任务创建接口,使安全处理器创建第一度量任务,安全处理器可根据CPU发送的信息创建第一度量任务以及生成授权码,再将其创建的第一度量任务的ID以及授权码发送给CPU;
请求所述安全处理器启动所述第一度量任务。
需要说明的,上述创建虚拟机,创建第一度量任务至请求安全处理器启动第一度量任务的过程是在请求暂停第一度量任务,获取第一状态信息,将第一状态信息写入虚拟机状态保护内存以及更新第一度量基准值之前执行。
例如,CPU可调用第一度量任务的启动命令,请求安全处理器启动第一度量任务,安全处理器在获取到第一度量任务的启动命令后,第一度量任务可对授权码以及上下文信息进行验证,在验证通过后启动第一度量任务。
在本申请的一个或多个实施例中,防止虚拟机恶意回滚的方法还可包括:在获取所述虚拟机当前的第二状态信息之后,为所述虚拟机申请所述虚拟机状态保护内存。例如,在存在多个虚拟机需申请虚拟机状态保护内存的情况下,可为各虚拟机申请一个虚拟机状态保护内存块。虚拟机状态保护内存块用来存储虚拟机每次回滚之前虚拟机的状态信息,该内存块可由TDM动态保护,该内存块下的信息处在授权码与上下文双重保护下,属于可信状态。
在本申请的一个或多个实施例中,上述防止虚拟机恶意回滚的方法还可包括:
在请求所述安全处理器创建所述第一度量任务之后,注册异常回调函数;例如,CPU可调用异常处理函数注册命令来注册异常回调函数。
响应于接收到所述安全处理器发出的所述虚拟机状态保护内存的异常消息,触发所述异常回调函数。例如,在向所述安全处理器发送暂停度量任务请求以及所述第一度量任务的认证信息之后,若接收到安全处理器发送的认证信息不合法的消息,可触发异常回调函数,异常回调函数被触发,可阻止当前操作;又例如,在将所述度量更新值以及所述认证信息发送给所述安全处理器,若接收到安全处理器发送的认证信息不合法的消息,也可触发异常回调函数,异常回调函数被触发,可阻止更新第一度量任务更新值以及根据回滚目标进行回滚的操作。
图7是根据本申请一个或多个实施例示出的创建虚拟机的流程图,如图7所示,创建虚拟机的流程包括如下步骤:
步骤701:使用者调用创建虚拟机命令;
步骤702:根据使用者选择的参数进行虚拟机的创建;
步骤703:申请虚拟机的虚拟机状态保护内存;
步骤704:将当前虚拟机的状态信息(为上述第二状态信息的一个示例)写入虚拟机状态保护内存;
步骤705:计算虚拟机状态保护内存基准值(为上述度量基准值的一个示例);
在该步骤705中,例如可以根据当前虚拟机的状态信息中的至少一种信息计算哈希值,将计算得到的哈希值作为虚拟机状态保护内存的基准值;
步骤706:调用度量任务创建接口;
步骤707:安全处理器创建度量任务(为上述第一度量任务的一个示例);
在该步骤707中,安全处理器根据CPU传递的信息创建度量任务,生成度量任务的授权码,例如随机授权码,可将度量任务的ID以及度量任务的授权码发送给CPU;
步骤708:安全处理器将度量任务ID以及授权码发送给CPU;
步骤709:CPU获得度量任务ID以及授权码;
步骤710:调用异常回调函数注册命令,注册异常回调函数;
步骤711:调用度量任务启动命令;
在该步骤711中,在使用者调用度量任务启动命令后,CPU即将使用者持有的度量任务的授权码以及上下文信息发送给安全处理器;
步骤712:安全处理器对接收到的授权码以及上下文信息进行验证,验证通过后,启动度量任务;
步骤713:虚拟机创建成功。
在该步骤713中,例如可以发出虚拟机创建成功的提示消息。
在本申请的一个或多个实施例中,防止虚拟机恶意回滚的方法还可包括:请求所述安全处理器停止所述第一度量任务;例如,CPU可将第一度量任务的授权码、上下文信息以及度量任务停止请求发送给安全处理器,在安全处理器对授权码以及上下文信息进行验证,确认授权码以及上下文信息合法后,安全处理器停止第一度量任务,该第一度量任务停止后,处于非运行状态。获取虚拟机销毁命令;根据所述虚拟机销毁命令销毁所述虚拟机;请求所述安全处理器销毁所述第一度量任务,例如,CPU可将第一度量任务的授权码、上下文信息以及度量任务销毁请求发送给安全处理器,在安全处理器对授权码以及上下文信息进行验证,确认授权码以及上下文信息合法后,安全处理器销毁第一度量任务。
需要说明的是,销毁第一度量任务的操作可以在创建第一度量任务之后的任意时间根据接收到的合法的第一度量任务销毁请求来执行。
以图8所示为例,在本申请的一个或多个实施例中,虚拟机的销毁处理流程可包括:
步骤801:CPU调用度量任务停止命令;
步骤802:安全处理器根据度量任务停止命令停止度量任务;
步骤803:调用虚拟机销毁命令;
步骤804:CPU根据虚拟机销毁命令中选择的目标销毁虚拟机;
步骤805:CPU调用度量任务销毁接口;
步骤806:安全处理器销毁度量任务,虚拟机销毁完成,销毁任务结束。
在本实施例中,在第一度量任务的结束与销毁的过程中,请求者(指向安全处理器发出请求,以请求安全处理器对第一度量任务进行相应操作的一方)均需通过第一度量任务的授权码以及上下文信息的双重认证,进一步增加了虚拟机操作命令的安全性。
在本申请的一个或多个实施例中,防止虚拟机恶意回滚的方法还可包括:
在根据所述回滚目标对所述虚拟机进行回滚操作之后,根据所述认证信息请求所述安全处理器启动所述第一度量任务,其中,所述第一度量任务启动后处于运行状态。仍以图4所示的方法为例,CPU可调用度量任务启动命令,将授权码以及上下文信息发送给安全处理器,安全处理器在对授权码以及上下文信息进行验证,确定授权码以及上下文信息合法后,启动第一度量任务,以继续对虚拟机进行保护。
在本申请的一个或多个实施例中,合法的虚拟机回滚用户拥有TDM模块度量当前虚拟机任务的授权码与上下文信息的权限,因此拥有更新度量任务中的度量基准值的权限。当需要进行虚拟机回滚操作时,例如,在上述获取虚拟机回滚命令的步骤之后,虚拟机回滚操作的请求方可首先通过授权码与上下文信息通过TDM模块授权暂停度量任务。此时,由于授权通过,可以确定此时的虚拟机处于安全可信的环境下,在该环境下可对度量任务中存储的度量基准值进行更新。例如可调用TDM模块的更新接口对度量基准值进行更新。更新完毕后执行虚拟机回滚操作,并向安全处理器请求重新启动度量任务,此过程为一个安全状态下的虚拟机回滚过程。整个过程处于安全可信的状态下,由授权码与上下文信息作保证,攻击者即使知道了该过程也会因为无法获取授权码或执行在错误的上下文信息而导致任务无法继续执行,进而无法更新基准值。即使更新了虚拟机状态保护内存中存储的虚拟机状态信息,也会因为没有权限更新度量基准值而导致异常回调函数被触发而阻止虚拟机的回滚操作,可见,本申请一个或多个实施例的防止虚拟机恶意回滚的方法能够确保虚拟机在安全状态下进行正常的回滚操作,避免了虚拟机的恶意回滚。
图9是根据本申请一个或多个实施例示出的一种防止虚拟机恶意回滚的装置的结构示意图,如图9所示,该装置90包括:
第一获取模块91,被配置为获取虚拟机回滚命令,其中,所述虚拟机回滚命令中包括所述虚拟机的回滚目标;
第二获取模块92,被配置为获取所述虚拟机当前的第一状态信息;
写入模块93,被配置为将所述第一状态信息写入所述虚拟机的虚拟机状态保护内存,其中,所述虚拟机状态保护内存中存储有在获取所述虚拟机回滚命令之前所述虚拟机的状态信息;
确定模块94,被配置为响应于接收到安全处理器发出的所述虚拟机状态保护内存的异常消息,确定当前回滚操作异常,其中,所述安全处理器上运行第一度量任务,在所述第一度量任务处于运行状态下,所述第一度量任务周期性的根据所述状态信息计算所述虚拟机状态保护内存对应的第一校验值,将所述第一校验值与所述第一度量任务中存储的第一度量基准值进行对比,根据对比结果确定所述虚拟机状态保护内存中存储的内容是否发生异常。
图10是根据本申请一个或多个实施例示出的一种防止虚拟机恶意回滚的装置的结构示意图,如图10所示,该装置在图9所示装置的基础上,还可包括:
第一发送模块95,被配置为在获取虚拟机回滚命令之前,向所述安全处理器发送暂停度量任务请求以及所述第一度量任务的认证信息,以使所述安全处理器在确定所述认证信息合法后根据所述暂停度量任务请求暂停所述第一度量任务;
第一生成模块96,被配置为在将所述第一状态信息写入所述虚拟机的虚拟机状态保护内存之后,基于所述第一状态信息生成度量更新值,将所述度量更新值以及所述认证信息发送给所述安全处理器,以使所述第一度量任务在确定所述认证信息合法后,使用所述度量更新值更新所述第一度量任务中的第一度量基准值;
回滚模块97,被配置为响应于所述第一度量任务根据所述度量更新值更新所述第一度量基准值,确定当前回滚操作合法,根据所述回滚目标对所述虚拟机进行回滚操作。
在本申请的一个或多个实施例中,上述防止虚拟机恶意回滚的装置还可包括:
第三获取模块,被配置为在获取虚拟机回滚命令之前,获取VMM的加载命令;
第一请求模块,被配置为请求所述安全处理器为所述VMM创建第二度量任务;
第二请求模块,被配置为向所述安全处理器请求启动所述第二度量任务,其中,当所述第二度量任务处于运行状态下时,所述第二度量任务周期性的根据所述VMM对应的内存计算第二校验值,将所述第二校验值与所述第二度量任务中存储的第二度量基准值进行对比,根据对比结果确定所述VMM是否发生异常;
加载模块,被配置为加载所述VMM。
在本申请的一个或多个实施例中,上述防止虚拟机恶意会滚的装置还可包括:
第四获取模块,被配置为在加载所述VMM之后,获取VMM的卸载命令;
第三请求模块,被配置为请求停止所述第二度量任务;
销毁模块,被配置为销毁所述第二度量任务;
卸载模块,被配置为卸载所述VMM。
在本申请的一个或多个实施例中,上述防止虚拟机恶意回滚的装置还可包括:
第五获取模块,被配置为在获取所述虚拟机回滚命令之前,获取虚拟机创建命令,其中,所述虚拟机创建命令中包括虚拟机创建参数;
创建模块,被配置为根据所述虚拟机创建参数创建所述虚拟机;
第六获取模块,被配置为获取所述虚拟机当前的第二状态信息;
保存模块,被配置为将所述第二状态信息写入所述虚拟机的虚拟机状态保护内存;
第二生成模块,被配置为基于所述第二状态信息生成所述第一度量基准值;
第二发送模块,被配置为将所述第一度量基准值发送给所述安全处理器;
第四请求模块,被配置为请求所述安全处理器创建所述第一度量任务;
第五请求模块,被配置为请求所述安全处理器启动所述第一度量任务。
在本申请的一个或多个实施例中,上述防止虚拟机恶意回滚的装置还可包括:
申请模块,被配置为在获取所述虚拟机当前的第二状态信息之后,为所述虚拟机申请所述虚拟机状态保护内存。
在本申请的一个或多个实施例中,上述防止虚拟机恶意回滚的装置还可包括:
注册模块,被配置为在请求所述安全处理器创建所述第一度量任务之后,注册异常回调函数;
触发模块,被配置为接收到所述安全处理器发出的所述虚拟机状态保护内存的异常消息,触发所述异常回调函数。
在本申请的一个或多个实施例中,上述防止虚拟机恶意回滚的装置还可包括:
第六请求模块,被配置为请求所述安全处理器停止所述第一度量任务;
第七获取模块,被配置为获取虚拟机销毁命令;
销毁模块,被配置为根据所述虚拟机销毁命令销毁所述虚拟机;
第七请求模块,被配置为请求所述安全处理器销毁所述第一度量任务。
在本申请的一个或多个实施例中,上述防止虚拟机恶意回滚的装置还可包括:
第八请求模块,被配置为在根据所述回滚目标对所述虚拟机进行回滚操作之后,根据所述认证信息请求所述安全处理器启动所述第一度量任务,其中,所述第一度量任务启动后处于运行状态。
在本申请的一个或多个实施例中,所述认证信息可包括:由所述安全处理器在创建所述第一度量任务时生成的授权码,以及所述第一度量任务创建者的上下文信息。
在本申请的一个或多个实施例中,所述虚拟机的状态信息至少可包括以下一种:虚拟机的进程号、虚拟地址空间身份标识ASID、系统时间、操作用户身份标识UID信息以及虚拟化的可信平台控制模块VTPM状态信息。
本申请一个或多个实施例还提供了一种电子设备,包括:处理器;和存储器,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现本申请一个或多个实施例中的防止虚拟机恶意回滚的方法。
本申请一个或多个实施例还提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现本申请一个或多个实施例中的防止虚拟机恶意回滚的方法。
基于本申请一个或多个实施例的电子设备,提出了一种更为具体的电子设备,如图11所示,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。
此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本申请时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:应用误杀评估方法及相关设备