发明内容
有鉴于此,本申请实施例中提供虚拟机数据处理、控制方法、处理器、芯片、装置及介质,解决现有技术中的问题。
本申请实施例提供了一种虚拟机数据处理方法,应用于安全处理器;所述虚拟机数据处理方法包括:生成并存储根密钥;响应于为每个虚拟机申请虚拟机标识的第一申请,安全处理器为每个所述虚拟机分配虚拟机标识;响应于对目标虚拟机的目标数据的加密或解密的第二申请,安全处理器根据所述根密钥和所述目标虚拟机的虚拟机标识生成目标虚拟机的虚拟机密钥,以用于对所述目标数据进行加密或解密。
可选的,所述安全处理器为每个所述虚拟机分配虚拟机标识,包括:在向每个虚拟机分配虚拟机标识时,判断是否还有可用的虚拟机标识;若否,则更换所述根密钥,并在更换所述根密钥后为所述虚拟机分配虚拟机标识;若是,则分配虚拟机标识。
可选的,在判断没有可用的虚拟机标识时,更换所述根密钥,包括:在判断没有可用的虚拟机标识时,响应所述第一申请而发送表示需更换根密钥的通知信息;在接收到更换根密钥的指令时,更换所述根密钥;返回根密钥更换完成的信息以响应所述指令。
可选的,所述的虚拟机数据处理方法包括:在更换所述根密钥之后,重复利用各虚拟机标识进行分配。
可选的,所述目标数据包括:用于运行所述虚拟机的程序代码及数据。
可选的,所述虚拟机密钥的生成算法包括以下至少一种:哈希算法;消息认证码算法。
可选的,所述的虚拟机数据处理方法包括:在每次生成根密钥时,发送所述根密钥至内存控制器以作更新。
本申请实施例提供了一种虚拟机数据处理方法,应用于内存控制器;所述虚拟机数据处理方法包括:
响应于虚拟机对内存地址的读和/或写操作的相应指令,根据预先存储的根密钥以及所述虚拟机的虚拟机标识生成所述虚拟机的虚拟机密钥;
通过所述虚拟机密钥对所述内存地址中数据进行加密或解密。
可选的,所述的虚拟机数据处理方法包括:接收并更新根密钥。
本申请实施例提供了一种虚拟机运行控制方法,应用于虚拟机的虚拟机管理器,所述虚拟机运行控制方法包括:发送申请虚拟机标识的第一申请;获得对应所述虚拟机分配的虚拟机标识;发送对所述虚拟机的目标数据进行加密或解密的第二申请;其中,所述加密或解密是使用所述虚拟机的虚拟机密钥执行的,所述虚拟机密钥是根据所述虚拟机标识和根密钥生成的。
可选的,所述的虚拟机运行控制方法,包括:在接收到对所述第一申请的响应信息以表示虚拟机标识已分配用尽时,暂停所述虚拟机;发送更换根密钥的指令;在接收到表示根密钥已更换的返回信息时,恢复所述虚拟机的运行。
可选的,所述的虚拟机运行控制方法包括:根据虚拟机对内存地址的读和/或写操作触发相应指令,以令内存控制器使用生成的虚拟机密钥对所述内存地址中数据加密或解密。
本申请实施例提供了一种内存控制器,包括:存储单元,用于存储根密钥;生成单元,用于响应于虚拟机对内存地址的读和/或写操作的相应指令,根据所述根密钥以及所述虚拟机的虚拟机标识生成所述虚拟机的虚拟机密钥;加解密单元,用于通过所述虚拟机密钥对所述内存地址中数据进行加密或解密。
本申请实施例提供了一种主处理器,用于运行存储器中的可执行指令以实现虚拟机及其虚拟机管理器,所述虚拟机管理器用于执行所述的虚拟机运行控制方法。
可选的,所述的主处理器包括所述的内存控制器。
本申请实施例提供了一种安全处理器,用于运行存储器中的可执行指令,以执行所述的虚拟机数据处理方法。
本申请实施例提供了一种处理器芯片,包括:所述的安全处理器;所述的主处理器,与所述安全处理器连接。
本申请实施例提供了一种虚拟机数据处理装置,应用于安全处理器,包括:根密钥生成模块,用于生成并存储根密钥;标识分配模块,用于响应于为每个虚拟机申请虚拟机标识的第一申请,安全处理器为每个所述虚拟机分配虚拟机标识;虚拟机密钥生成模块,用于响应于对目标虚拟机的目标数据的加密或解密的第二申请,安全处理器根据所述根密钥和所述目标虚拟机的虚拟机标识生成目标虚拟机的虚拟机密钥,以用于对所述目标数据进行加密或解密。
本申请实施例提供了一种虚拟机运行控制装置,应用于虚拟机的虚拟机管理器,包括:第一发送模块,用于发送申请虚拟机标识的第一申请;获得模块,用于获得对应所述虚拟机分配的虚拟机标识;第二发送模块,发送对所述虚拟机的目标数据进行加密或解密的第二申请;其中,所述加密或解密是使用所述虚拟机的虚拟机密钥执行的,所述虚拟机密钥是根据所述虚拟机标识和根密钥生成的。
本申请实施例提供了一种计算机装置,包括:所述的处理器芯片;或者,包括:所述的主处理器及其相连的所述的安全处理器。
本申请实施例提供了一种计算机可读存储介质,其上存储有可执行指令,所述可执行指令运行时执行所述的虚拟机数据处理方法或者所述的虚拟机运行控制方法。
与现有技术相比,本申请实施例的技术方案具有以下有益效果:
一方面,安全处理器只需要存储单个根密钥,即可结合各个虚拟机的虚拟机标识派生出每个虚拟机不同的虚拟机密钥,从而减少存放密钥的密钥槽的数量,节省芯片资源。
另一方面,只需要增加可以分配的虚拟标识的数量即可扩展所支持的安全虚拟机的数量,利于功能扩展。
具体实施方式
在普遍采用硬件辅助的虚拟化技术的当下,通过对虚拟机的相关数据进行加解密管理的手段,以能实现安全虚拟机,满足用户服务的安全要求。
如前所述,为了保障用于虚拟机数据加解密的密钥的安全,会将密钥存储在硬件的处理器芯片的存储资源中。在需要进行加解密操作时,使用所存储的密钥进行
如图1所示,展示一示例中内存控制器对虚拟机内存数据加解密的原理示意图。
在此示例中,对应每个虚拟机都分配有虚拟机标识,所述虚拟机标识可以通过地址空间识别符(Address Space Identifier,ASID)来表示,以用于区分不同的虚拟机。
在具体实施中,每个虚拟机分配有ASID,并对应分配不同的密钥,例如,图中所示的对应ASID1~ASID N的虚拟机分别有密钥1~密钥N。这些虚拟机的密钥都存放在处理器的硬件存储资源中,例如内存控制器的硬件寄存器中。
每个虚拟机的ASID作为对其虚拟机密钥的索引。当某个虚拟机对内存写操作时,为了数据安全需要对写入内存的数据进行加密,则内存控制器(Memory Management Unit)会根据该虚拟机的ASID从存储的各个密钥中匹配该虚拟机的虚拟机密钥,比如通过ASID1去匹配密钥1,如图1中两个箭头所示;在匹配到密钥之后,内存控制器使用该密钥并应用加解密算法对相应内存数据进行加密或解密。
从中可见,每个虚拟机都需要私有的ASID和虚拟机密钥,其中每个虚拟机的虚拟机密钥都需要占用处理器中的硬件存储资源,则随着虚拟机数量的增加,所需要的存储资源亦需增加,造成处理器的成本增加。并且,在处理器设计完成时,其所能存储的虚拟机密钥数量也就确定了,使得未来实际应用场景中如果有需要更多数量虚拟机支持时,无法进行扩展,造成应用限制。
鉴于上述种种问题,本申请实施例中提供改进的方案,从而解决上述问题。
如图2所示,展示本申请实施例中实现安全虚拟机的处理器架构示意图。
如图所示,在此场景中,提供通信连接的主处理器201和安全处理器202。在具体实施中,主处理器201和安全处理器202可采用相同架构的处理器,例如均可采用例如32位或64位X86架构的处理器;或者,也可采用不同架构,例如主处理器201采用32位或64位X86架构的处理器,而安全处理器202可采用嵌入式架构的处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、或现场可编程门阵列(Field Programmable GateArray,FPGA)等。
在具体实施例中,所述主处理器201运行虚拟机相关的计算机程序而实现每个虚拟机(VM)及相应的虚拟机管理器(VMM),例如图中的虚拟机1~N,及其各自的虚拟机管理器1~N。虚拟机管理器可用于管理虚拟机与外部间的数据交互,来满足虚拟机的运行需求。
所述主处理器201中可包含内存管理器203,以用于内存数据的读写。在可能的示例中,所述内存管理器203还可以用于使用虚拟机的虚拟机密钥对其读和/或写操作的内存地址中的数据进行加密或解密。
所述安全处理器202可以作为所述主处理器201的协处理器,负责虚拟机的安全加密的管理工作,例如密钥生成、ASID的分配等。安全处理器202中包含存储资源,可供存放密钥,较为形象地,可以把存放每个密钥的存储空间称为一个“密钥槽”。在具体实施中,安全处理器202可以运行预先配置的安全处理器固件(Firmware)来实现功能。
在一些示例中,所述主处理器201和安全处理器202可以封装在处理器芯片中,呈现为片上系统(SoC)芯片;或者,在其它示例中,所述述主处理器201和安全处理器202也可以是位于相互独立的芯片中实现。
基于上述示例所给出的处理器架构,以下可以提供多个方法实施例来说明本申请实施例中安全虚拟机的具体实现。
如图3所示,展示本申请实施例中虚拟机数据处理方法的流程示意图。所述虚拟机数据处理方法可以由安全处理器(例如图2实施例中)执行。在此流程中,虚拟机给各虚拟机分配标识及相关的虚拟机密钥。
所述虚拟机数据处理方法包括:
步骤S301:生成并存储根密钥。
在一些示例中,所述安全处理器可以通过随机方式来生成所述根密钥。
步骤S302:响应于为每个虚拟机申请虚拟机标识的第一申请,安全处理器为每个所述虚拟机分配虚拟机标识。
在一些示例中,第一申请可以由虚拟机的虚拟机管理器发出,以为其所对应的虚拟机申请虚拟机标识。
在一些示例中,所述虚拟机标识可以是ASID,其长度可以是例如32bit、64bit等。
步骤S303:响应于对目标虚拟机的目标数据的加密或解密的第二申请,安全处理器根据所述根密钥和所述目标虚拟机的虚拟机标识生成目标虚拟机的虚拟机密钥,以用于对所述目标数据进行加密或解密。
具体的,对于已分配了虚拟机标识的目标虚拟机而言,已具备能根据其虚拟机标识和根秘钥派生出该目标虚拟机的虚拟机密钥,以用于对其目标数据进行加密或解密。
可以理解的是,安全处理器可以仅存储根密钥,而在收到此对目标虚拟机的目标数据加密或解密的第二申请时,才对应生成虚拟机密钥来用以执行第二申请的加密或解密工作。此外,所述虚拟机密钥是临时的,在完成加密或解密的工作之后可以予以销毁,而释放硬件存储资源中的密钥槽。
在一些示例中,所述第二申请中可以包含虚拟机的虚拟机标识,或者包含指明虚拟机身份的其它标识而由安全处理器据以匹配虚拟机标识。
在一些示例中,所述目标数据可以包括用于运行虚拟机的程序代码、程序数据等,以保障运行虚拟机所使用计算机程序代码和数据的安全性。
在具体实施中,在需要运行虚拟机时,会将用于运行虚拟机的程序代码、程序数据加载到内存中。为保障此部分内存数据安全,可以将相应的内存地址信息(比如内存中物理地址范围)在第二申请中提供给安全处理器,以由所述安全处理器来对相应内存地址信息所存放的用于运行虚拟机的程序代码、程序数据进行加密。
请一并参考图4所示,展示本申请实施例中虚拟机密钥生成的原理示意图。
如图所示,以所述根密钥401为基础,同每个虚拟机的虚拟机标识402(如ASID)之间按预设的虚拟机密钥404的生成算法403以分别得到每个虚拟机400的虚拟机密钥404。
举例来说,设根密钥为X,X和虚拟机1的ASID1进行特定运算,得到虚拟机1的虚拟机密钥Y1;X和虚拟机2的ASID2进行特定运算,得到虚拟机2的虚拟机密钥Y2;以此类推可以得到虚拟机n的虚拟机密钥Yn。
在一些示例中,所述虚拟机密钥404的生成算法403可以包括以下至少一种:哈希算法;消息认证码算法。
哈希算法即hash算法,通过哈希函数将输入数据转化为散列值,比如MD5,SHA等算法。在一实际示例中,可以根据VKEY=HASH(RKEY||ASID)来计算得到虚拟机密钥。其中,ASID为一虚拟机的虚拟机标识,RKEY表示根密钥,VKEY表示该虚拟机的虚拟机密钥,HASH()为哈希函数,||表示逻辑或。需说明的是,RKEY和ASID之间的运算结果作为哈希函数的输入,但并不限定采用此逻辑或的方式,比如还可以将RKEY同ASID之间的拼接结果(例如RKEY为abc,ASID为001,则连接为001abc或abc001等)、四则运算结果、其它逻辑运算结果等作为哈希函数的输入,并非以此示例为限。并且,考虑到安全处理器的负担,所采用的运算方式可以视情形选择。
消息认证码(Message Authentication Code,MAC)也称为密码学校验和或密钥的哈希函数。其中,哈希运算消息验证码(HMAC)是MAC的一种实现方案,HMAC运算利用哈希算法,以一个消息M和一个密钥K作为输入,生成一个定长的消息摘要作为输出。在一个实例中,可以根据VKEY=HMAC(RKEY,ASID)来计算得到虚拟机密钥VKEY,HMAC()为HMAC的运算函数。
在一些示例中,所述虚拟机密钥404的生成算法403可以通过硬件/软件/软硬件结合的方式实现于所述安全处理器,还可以实现在内存控制器中;由于每次加密/解密的第二申请时均需要执行该生成算法403来生成虚拟机密钥,为优化速度和效率,该生成算法403可以通过安全处理器中的硬件电路实现,例如实现HASH或HMAC运算函数的运算电路等。
在图4中,以虚线表示每个虚拟机400同虚拟机标识401和虚拟机密钥404之间的关联关系,其中,每个虚拟机拥有唯一的虚拟机密钥,而每个虚拟机标识可以视情形唯一关联于一个虚拟机或者关联于多个虚拟机。
此外,一般情况下,ASID中每个bit的取值为0或1,故以32bit的ASID为例可知,其最多能提供给232个虚拟机不同的ASID,一般情况下虚拟机数量是不会超出这个上限的,但是并不排除超出的小概率情形发生;一旦超出,则会在原232个ASID中使用重复的ASID分配给申请虚拟机标识的虚拟机。
若一旦分配了重复的ASID,则结合根密钥HKEY所生成的虚拟机密钥VKEY会与之前232个虚拟机中的一个的VKEY重复,这样就会造成这两个虚拟机密钥重复的虚拟机之间可以加密或解密对方的数据,存在安全隐患,当如此继续下去,可能会有更多个具有重复VKEY的虚拟机,安全风险越来越大。
如果要防止VKEY的重复,从其生成根源上来讲,一种方式是避免ASID的重复,一种方式是避免RKEY的重复。
在一些示例中,可以根据实际应用场景中最大虚拟机的需求来设置ASID的位数,以通过合适的ASID上限数量来避免出现ASID重复。比如,将32bit的ASID扩大到更多bit位,例如64bit等。
在又一些示例中,也可以通过更换根密钥的方式来避免生成的VKEY重复,则ASID是否能重复可以视其它具体因素来决定。
相应的,如图5所示,展示本申请实施例中安全处理器进行根密钥更换的流程示意图。图5中的根密钥流程更换可以发生在步骤S302中,安全处理器为每个所述虚拟机分配虚拟机标识。
所述根密钥更换的流程包括:
步骤S501:在向每个虚拟机分配虚拟机标识时,判断是否还有可用的虚拟机标识。
若否,则进入步骤S502;若是,则进入步骤S503:分配虚拟机标识。
步骤S502:更换所述根密钥,并在更换所述根密钥后进入步骤S503。
举一具体实例来讲,假设ASID是32bit长度,假设安全处理器例如从1至232循环计数,即对应第1个虚拟机分配ASID1,对应第232个虚拟机分配ASID 232,再下一个又从ASID 1开始分配。因此,当在分配了ASID 232之后,若又接收到了为新的虚拟机申请虚拟机标识的第一申请时,则生成新根密钥RKEY1,以替换原RKEY,之后可以继续分配ASID 1,如果在虚拟机标识重复不影响其它运行的情况下,安全处理器可以持续分配下去,只需要每次数量溢出时再更换一个RKEY即可。
在一些示例中,在步骤S501判断数量溢出至步骤S502对应更换根密钥,可以是安全处理器先告知由需求分配虚拟机标识的一方,并由其所确定触发。在具体实施中,所述虚拟机数据处理方法可进一步包括:在判断没有可用的虚拟机标识时,安全处理器响应所述第一申请而发送表示需更换根密钥的通知信息;在接收到更换根密钥的指令时,安全处理器更换所述根密钥,并返回根密钥更换完成的信息以响应所述指令。
在其它示例中,安全处理器也可以对应数量溢出而直接更换根密钥,并在更换更密钥后,分配虚拟机标识并提供给第一申请的发起方。如此,对于发起方来说,并不知道安全处理器侧执行的上述工作,而只是申请并接收到了虚拟机标识,这样可以减少第一申请发起方和安全处理器之间的交互次数。
为避免在虚拟机密钥的数量溢出之后而在更换根密钥之间的时间段中产生重复的虚拟机密钥,在可选示例中,安全处理器可以在该时间段中拒绝任何分配虚拟机表示的第一申请,直至根密钥更换完成。
由于虚拟机读和/或写内存数据也需要加密,故而在一些示例中,在根密钥生成时,安全处理器可以将生成的根密钥传递至内存控制器,以由内存控制器存储并同样可按图4原理生成虚拟机密钥,来对内存数据加密或解密。当内存控制器收到新生成的根密钥时,可替换原根密钥。
上述图2、图3、图5等实施例中的安全处理器所执行的流程步骤,可以由其所运行的安全处理器固件来实现,而第一申请、第二申请的发起方可以是需要分配虚拟机标识的VM的VMM。
如图6所示,展示本申请实施例中虚拟机运行控制方法的流程示意图。所述虚拟机运行控制方法应用于虚拟机(即VM)对应的虚拟机管理器(即VMM),所述虚拟机及虚拟机管理器可由主处理器运行相应程序实现。
所述虚拟机运行控制方法包括:
步骤S601:发送申请虚拟机标识的第一申请;
步骤S602:获得对应所述虚拟机分配的虚拟机标识;
步骤S603:发送对所述虚拟机的目标数据进行加密或解密的第二申请。
其中,所述加密或解密是使用所述虚拟机的虚拟机密钥执行的,所述虚拟机密钥是根据所述虚拟机标识和根密钥生成的。具体的虚拟机密钥的生成原理可以参考图4所示。
再如图7所示,在某些示例中,当安全处理器需要更换密钥时会通知申请密钥的VMM,则相应的在VMM所执行的虚拟机运行控制方法的流程,包括:
步骤S701:在接收到对所述第一申请的响应信息以表示虚拟机标识已分配用尽时,暂停所述虚拟机。
在一些示例中,如果主机(例如服务器等)还可以继续建立虚拟机,则在暂停此虚拟机时,按此时的运行状态保存虚拟机在主机本地;或者,如果认为主机已达到负荷,则可以迁移此虚拟机至其它主机上,等待根密钥更换后再予以恢复运行。虚拟机迁移的实现可以参考相关技术,此处不作赘述。
步骤S702:发送更换根密钥的指令;
在一些示例中,通过发送更换根密钥的指令,以触发安全处理器更换更密钥的动作。
步骤S703:在接收到表示根密钥已更换的返回信息时,恢复所述虚拟机的运行。
如图8所示,展示本申请一个具体实施例中安全处理器与VMM之间交互实现虚拟机标识分配的流程示意图。
所述流程具体包括:
步骤S801:虚拟机管理器向安全处理器发送申请其对应虚拟机的虚拟机标识的第一申请。
其中,在软件层面上,安全处理器运行的安全处理器固件与主处理器运行的虚拟机管理之间软件交互,在硬件层面上,则是主处理器和安全处理器之间交互。
步骤S802:安全处理器判断是否虚拟机标识数量溢出。
若否,则执行步骤S803;若是,则表示需要更换根密钥,进行步骤S804;
步骤S803:分配虚拟机标识给该虚拟机管理器的虚拟机。
步骤S804:安全处理器发送表示需更换根密钥的通知信息给虚拟机管理器;
步骤S805:虚拟机管理器暂停虚拟机运行;
步骤S806:虚拟机管理器发送更换根密钥的指令给安全处理器;
步骤S807:安全处理器更换根密钥;
步骤S808:安全处理器返回根密钥更换完成的信息给虚拟机管理器;
步骤S809:虚拟机管理器恢复其对应虚拟机的运行;
步骤S810:虚拟机管理器再发送第一申请给安全处理器;
如同步骤S802,步骤S811:安全处理器判断是否虚拟机标识数量溢出;
由于更换了根密钥,则步骤S811的判断结果会是不会溢出,则进行步骤S812:安全处理器分配虚拟机标识给该虚拟机管理器的虚拟机。
以下再通过多个示例来说明安全虚拟机的内存数据加解密的实现。
再如图9所示,展示本申请实施例中虚拟机数据处理方法的流程示意图。所述虚拟机数据处理方法应用于内存控制器,所述内存控制器可以是集成在主处理器中,也可以是在主处理器外的。
所述方法包括:
步骤S901:响应于虚拟机对内存地址的读和/或写操作的相应指令,根据预先存储的根密钥以及所述虚拟机的虚拟机标识生成所述虚拟机的虚拟机密钥。
在一些示例中,所述内存地址的读和/或写操作的相应指令,可以是由虚拟机对该内存地址数据读和/或写操作触发产生的。具体的,在虚拟机视角只知道其所需要读写内存的虚拟机物理地址(GPA),而若要从GPA得到实际物理内存地址(HPA),需要管理虚拟机的虚拟机管理器通过主处理器来指令内存控制器参与进行地址转换。因此,当内存控制器获得某个虚拟机要对虚拟机对内存地址的读和/或写操作的相关指令时,即派生出该虚拟机的虚拟机密钥,对该内存地址中的数据执行相应的加密或解密操作。
在一些示例中,所述内存控制器所存储的根密钥可以是由安全处理器产生并传递来的,且可根据新传递来的根密钥以替换旧根密钥,以避免不同虚拟机的虚拟机密钥重复。
此外,所述虚拟机密钥的生成方式可以参考前述图4实施例所示,此处不作重复赘述。
步骤S902:通过所述虚拟机密钥对所述内存地址中数据进行加密或解密。
在具体实施中,所述内存控制器中可以通过硬件电路的形式来实现用于所述加密或解密运算(如前述HASH、HMAC等)的电路模块,可以被称为“加解密引擎”,以用于根据所存储的根密钥和所述虚拟机的虚拟机标识来运算得到虚拟机密钥,并进一步对该虚拟机读和/或写操作的内存数据进行加密或解密。比如,对写入数据加密,对读出数据解密等。
在上述实施例中,安全处理器、内存控制器在派生出虚拟机密钥并用于执行完加密/解密操作之后,即可将其销毁,则不必占用存储资源。如此,安全处理器、内存控制器只需要存储一个根密钥并具备相应的加解密引擎即可,不会如现有技术中,处理器的存储资源被与虚拟机数量一致的虚拟机密钥一直占用。
如图10所示,展示本申请具体实施例中安全虚拟机启动前后的流程示意图。其中,展示有虚拟机管理器、安全处理器和内存控制器,它们之间交互以实现此流程。当然,图10只是为了整体说明原理所举的一个实例,在实际应用中,其中的步骤之间的时间顺序未必不能有变化,且部分步骤也是可以不发生的。
所述流程包括:
步骤S1001:安全处理器生成根密钥并存储;
步骤S1002:安全处理器将根密钥传递给内存控制器;
例如,安全处理器将密钥写入主处理器的内存控制器中。
步骤S1003:内存控制器存储根密钥;
步骤S1004:某个虚拟机的虚拟机管理器向安全处理器发出申请虚拟机标识的第一申请;
步骤S1005:安全处理器响应第一申请,分配该虚拟机的虚拟机标识;
在S1005中,安全处理器和虚拟机管理器之间还可能发生如图8所示的虚拟机标识分配的流程,图10示例中不作重复赘述,只是给出最终分配虚拟机标识的结果。在分配该虚拟机标识后,可以通知虚拟机管理器。
步骤S1006:虚拟机管理器向安全处理器发出加密程序代码及数据的第二申请。
步骤S1007:安全处理器根据根密钥和分配给所述虚拟机的虚拟机标识,生成该虚拟机的虚拟机密钥。
步骤S1008:安全处理器使用所生成的虚拟机密钥对该虚拟机的程序代码及数据进行加密。
步骤S1009:安全处理器响应第二申请加密完成的通知信息;
步骤S1010:虚拟机管理器启动对应的虚拟机;
步骤S1011:虚拟机读和/或写内存操作,触发对相应内存地址的读和/或写操作的相应指令至内存控制器;
步骤S1011:内存控制器根据预先存储的根密钥和该虚拟机的虚拟机标识,生成虚拟机密钥;
步骤S1012:内存控制器使用生成的虚拟机密钥对所述内存地址中数据加密或解密。
在上述示例中,虚拟机密钥可以是临时的,安全处理器和内存控制器在完成加密或解密动作之后,即可将虚拟机密钥销毁,从而释放虚拟机密钥占用的硬件存储资源。
如图11所示,展示本申请实施例中内存控制器的结构示意图。所述内存控制器1100可以实现为图2示例中的内存控制器。
所述内存控制器1100包括:
存储单元1101,用于存储根密钥;
生成单元1102,用于响应于虚拟机对内存地址的读和/或写操作的相应指令,根据所述根密钥以及所述虚拟机的虚拟机标识生成所述虚拟机的虚拟机密钥;
加解密单元1103,用于通过所述虚拟机密钥对所述内存地址中数据进行加密或解密。
在可选示例中,所述存储单元1101、生成单元1102及加解密单元1103可以是硬件电路实现,例如存储单元1101可以是寄存器、高速缓存等实现,生成单元1102和加解密单元1103可以是运算电路实现。
对应于如图3实施例,如图12所示,展示本申请实施例中虚拟机数据处理装置的功能模块示意图。由于本实施例中的虚拟机数据处理装置的实现原理可以参考图3实施例,故此处不作重复赘述。
所述虚拟机数据处理装置1200用于安全处理器,其包括:
根密钥生成模块1201,用于生成并存储根密钥;
标识分配模块1202,用于响应于为每个虚拟机申请虚拟机标识的第一申请,安全处理器为每个所述虚拟机分配虚拟机标识;
虚拟机密钥生成模块1203,用于响应于对目标虚拟机的目标数据的加密或解密的第二申请,安全处理器根据所述根密钥和所述目标虚拟机的虚拟机标识生成目标虚拟机的虚拟机密钥,以用于对所述目标数据进行加密或解密。
可选的,所述标识分配模块1202包括:
判断子模块,在向每个虚拟机分配虚拟机标识时,判断是否还有可用的虚拟机标识;
根密钥管理子模块,用于在所述判断模块的判断结果为否时,更换所述根密钥,并在更换所述根密钥后为所述虚拟机分配虚拟机标识;
分配子模块,用于在所述判断模块的判断结果为是时,分配虚拟机标识。
可选的,所述标识分配模块还包括:
发送子模块,用于在所述判断模块的判断结果为否时,响应所述第一申请而发送表示需更换根密钥的通知信息;
接收子模块,用于在接收到更换根密钥的指令时,触发根密钥管理子模块更换所述根密钥;
返回子模块,用于返回根密钥更换完成的信息以响应所述指令。
对应于图6实施例,本申请实施例中虚拟机运行控制装置应用于虚拟机的虚拟机管理器。由于本实施例中的虚拟机数据处理装置的实现原理可以参考图6实施例,故此处不作重复赘述。
所述虚拟机运行控制装置包括:
第一发送模块,用于发送申请虚拟机标识的第一申请;
标识获得模块,用于获得对应所述虚拟机分配的虚拟机标识;
第二发送模块,用于发送对所述虚拟机的目标数据进行加密或解密的第二申请;其中,所述加密或解密是使用所述虚拟机的虚拟机密钥执行的,所述虚拟机密钥是根据所述虚拟机标识和根密钥生成的。
可选的,虚拟机运行控制装置还可包括:
暂停模块,用于在接收到对所述第一申请的响应信息以表示虚拟机标识已分配用尽时,暂停所述虚拟机;
第三发送模块,用于发送更换根密钥的指令;
恢复模块,用于在接收到表示根密钥已更换的返回信息时,恢复所述虚拟机的运行。
需特别说明的是,图11、图12中的功能模块或子模块可以通过硬件电路/软件/软硬件结合中的任意一种方式实现,并且,各个功能模块和子模块只是一一种功能上的表述方式,在实际实现中,它们之间的划分方式并不限定在实际实现中必须为独立的硬件或软件实现,即不限定这些功能模块和子模块之间的任意组合而实现在同一个或相互独立但通信的多个硬件设备,或实现在同一个或相互独立但通信的多个软件程序中。
本申请实施例中还可以提供计算机装置。所述计算机装置包括例如图1中的主处理器和安全处理器。其中,所述主处理器和安全处理器可以是集成在一块处理器芯片中,也可以是分处于独立芯片中。另外,所述计算机装置还可以包括存储器,例如RAM、ROM等,以用于存放供所述主处理器调用的数据、可执行指令等。可选的,所述计算机装置还可以包含通信器,所述通信器可以包括有线或无线通信电路模块,比如有线网卡、USB模块、WiFi模块、移动网络通信模块(2G~5G模块中的一或多种)等。
在一些示例中,所述计算机装置可以实现在服务器、台式机、笔记本电脑、智能手机、平板电脑等电子设备上。
本申请实施例中还可提供计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序运行时执行前述实施例(例如图3、图5、图6、图7、图8、图9、图10实施例)中任一方法中步骤。
即,本申请实施例(例如图3、图5、图6、图7、图8、图9、图10实施例)中的方法流程可被实现为可存储在记录介质中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,寄存器、高速缓存、RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件读和/或写操作且执行时,实现在此描述的页表管理方法、脏页信息获取方法。此外,当通用计算机读和/或写操作用于实现在此示出方法的代码时,代码的执行将通用计算机转换为用于执行在此示出方法的专用计算机。
在本申请的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本申请中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
另外,前述实施例(例如图3、图5、图6、图7、图8、图9、图10实施例)中的流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
与现有技术相比,本申请实施例的技术方案具有以下有益效果:
一方面,安全处理器只需要存储单个根密钥,即可结合各个虚拟机的虚拟机标识派生出每个虚拟机不同的虚拟机密钥,从而减少存放密钥的密钥槽的数量,节省芯片资源。
另一方面,只需要增加可以分配的虚拟标识的数量即可扩展所支持的安全虚拟机的数量,利于功能扩展。
虽然本申请实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本申请实施例的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。