CN109684030B - 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统 - Google Patents

虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统 Download PDF

Info

Publication number
CN109684030B
CN109684030B CN201811400796.4A CN201811400796A CN109684030B CN 109684030 B CN109684030 B CN 109684030B CN 201811400796 A CN201811400796 A CN 201811400796A CN 109684030 B CN109684030 B CN 109684030B
Authority
CN
China
Prior art keywords
virtual machine
machine memory
memory key
key
key generation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811400796.4A
Other languages
English (en)
Other versions
CN109684030A (zh
Inventor
刘子行
应志伟
杜朝晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN201811400796.4A priority Critical patent/CN109684030B/zh
Publication of CN109684030A publication Critical patent/CN109684030A/zh
Application granted granted Critical
Publication of CN109684030B publication Critical patent/CN109684030B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

一种虚拟机内存密钥生成系统,用于包括一个以上处理核心的SoC系统,包括安全处理器和虚拟机内存密钥生成装置,所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引,所述虚拟机内存密钥生成装置从所述安全处理器接收所述虚拟机内存密钥索引,并通过特定的算法,计算生成用于所述处理核心的内存密钥。所述内存密钥生成装置包括:随机密钥生成部,生成随机密钥;以及,密钥导出函数电路,其利用所述虚拟机内存密钥索引以及所述随机密钥,通过所述特定的算法,生成所述内存密钥。本发明提高了安全虚拟化中虚拟机内存密钥的安全性,更好的保证了虚拟机的数据安全。

Description

虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统
技术领域
本发明涉及本发明虚拟化技术领域,并涉及在特定的安全虚拟化环境下生成虚拟机内存密钥(VEK-VM Encryption Key)的虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统。
背景技术
随着硬件虚拟机技术的进步,在服务器上采用服务器的资源为多个用户模拟相同的计算机环境成为可能。但伴随于此,由于内存资源是在各个虚拟机之间共享的资源,因此,防止虚拟机管理程序或者他虚拟机用户窃取其他虚拟机的内容成为当前各个厂商研究的重点。
为了解决该问题,例如,已知存在安全虚拟化技术,该技术可以实现对虚拟机的物理内存进行加密,安全虚拟化中由于对不同的虚拟机用不同的密钥来加密(密钥命名为VEK即VM Encryption Key),因此不仅能够防止虚拟机管理程序窃取虚拟机的内容,同时也可保护虚拟机的内存不被其他的虚拟机窃取。
VEK的安全等级极高,必须无法被应用程序和操作系统读取到。因为一旦VEK被窃取,虚拟机的内存就会被解密成明文并泄露。
这里,由于安全虚拟化的硬件限制,内存控制器中同时保存的VEK数据个数有一定限制,而系统中虚拟机的个数远大于此,也就是说内存控制器无法为所有的虚拟机保存VEK。这意味着在整个虚拟机的生命周期内,安全处理器必须为虚拟机保存VEK,以防虚拟机的VEK丢失,则该虚拟机的内存将无法解密。
但是,在上述架构下,在某些场景下仍然存在风险:
安全处理器提供了若干API与操作系统交互,如果某个API存在漏洞,在某种场景下输出了安全处理器自身的内存,则VEK就有可能被一同输出。因此,一旦安全处理器自身的内存暴露,VEK就可能暴露,从而间接的暴露了虚拟机的内容,整个安全虚拟化的保护机制将无效。
发明内容
本发明是鉴于现有技术存在的上述问题而完成的,其目的在于提供一种加强虚拟机内存密钥VEK保密性的技术方案。
本发明提供一种虚拟机内存密钥生成系统,用于包括一个以上处理核心的SoC系统,包括安全处理器和虚拟机内存密钥生成装置,所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引,所述虚拟机内存密钥生成装置从所述安全处理器接收所述虚拟机内存密钥索引,并通过特定的算法,计算生成用于与所述处理核心的请求所对应的虚拟机对应的虚拟机内存密钥。
本发明提供的虚拟机内存密钥生成系统,还可以是,所述虚拟机内存密钥生成装置包括:随机密钥生成部,生成随机密钥;以及,密钥导出函数电路,其利用所述虚拟机内存密钥索引以及所述随机密钥,通过所述特定的算法,生成所述内存密钥。
本发明提供的虚拟机内存密钥生成系统,还可以是,所述随机密钥在所述内存密钥生成装置上电期间保持不变。
本发明提供的虚拟机内存密钥生成系统,还可以是,所述特定的算法为密钥导出函数算法,并保存在所述虚拟机内存密钥生成装置中。
本发明提供的虚拟机内存密钥生成系统,还可以是,所述虚拟机内存密钥生成装置生成的所述虚拟机内存密钥对所述安全处理器不可见。
本发明提供一种SoC系统,该SoC系统包括一个以上处理核心、虚拟机内存密钥生成系统以及内存控制器,所述虚拟机内存密钥生成系统包括安全处理器和虚拟机内存密钥生成装置,所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引,所述虚拟机内存密钥生成装置从所述安全处理器接收所述虚拟机内存密钥索引,并通过特定的算法,计算生成用于与所述处理核心的请求所对应的虚拟机对应的内存密钥,所述内存控制器从所述虚拟机内存密钥生成装置接收所述虚拟机内存密钥,在所述处理核心对外部内存进行读写时进行加密或解密。
本发明涉及的SoC系统,还可以是,所述虚拟机内存密钥生成装置包括:随机密钥生成部,生成随机密钥;以及,密钥导出函数电路,其利用所述虚拟机内存密钥索引以及所述随机密钥,通过所述特定的算法,生成所述虚拟机内存密钥。
本发明的SoC系统,还可以是,所述随机密钥在所述虚拟机内存密钥生成装置上电期间保持不变。
本发明的SoC系统,还可以是,所述特定的算法为密钥导出函数算法,并保存在所述虚拟机内存密钥生成装置中。
本发明的SoC系统,还可以是,所述虚拟机内存密钥生成装置生成的虚拟机内存密钥对所述安全处理器不可见。
本发明提供的SoC系统,还可以是所述安全处理器在接收到表示上述SoC系统的电源将进入休眠的指令时,指示所述虚拟机内存密钥生成装置将所述随机密钥保存在所述外部内存中;并在从该休眠恢复时,所述外部内存中保存的所述随机密钥被读回到所述虚拟机内存密钥生成装置,在所述休眠中,所述虚拟机内存密钥生成装置将掉电。
本发明提供的虚拟机内存密钥生成系统中的密钥生成方法,还可以是,所述虚拟机内存密钥生成系统用于包括一个以上处理核心的SoC系统,并包括安全处理器和虚拟机内存密钥生成装置,所述密钥生成方法的特征在于,包括:虚拟机内存密钥索引生成步骤,所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引;以及虚拟机内存密钥生成步骤,所述虚拟机内存密钥生成装置从所述安全处理器接收所述虚拟机内存密钥索引,并通过特定的算法,计算生成用于与所述处理核心的请求所对应的虚拟机对应的内存密钥。
本发明的虚拟机内存密钥生成系统中的密钥生成方法,还可以是,所述虚拟机内存密钥生成装置包括随机密钥生成部和密钥导出函数电路,在所述虚拟机内存密钥生成步骤中,还包括:由所述随机密钥生成部生成随机密钥的步骤;以及,由所述密钥导出函数电路利用所述虚拟机内存密钥索引以及所述随机密钥,通过所述特定的算法,生成所述虚拟机内存密钥的步骤。
本发明提供一种SoC系统中的虚拟机内存数据加密方法,所述SoC系统包括一个以上处理核心、虚拟机内存密钥生成系统以及内存控制器,所述虚拟机内存密钥生成系统包括安全处理器和虚拟机内存密钥生成装置,所述内存数据加密方法包括:步骤1:所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引;步骤2:所述安全处理器将所述处理核心发送来的虚拟机ID与所述虚拟机内存密钥索引发送给所述虚拟机内存密钥生成装置;步骤3:所述虚拟机内存密钥生成装置基于所述虚拟机内存密钥索引,并通过特定的算法,计算生成用于与所述处理核心的请求所对应的虚拟机对应的虚拟机内存密钥;步骤4:所述虚拟机内存密钥生成装置将所述虚拟机内存密钥和所述虚拟机ID发送给所述内存控制器;以及步骤5:所述内存控制器将所述虚拟机内存密钥和所述虚拟机ID绑定,以在所述处理核心对外部内存进行读写时通过所述虚拟机内存密钥进行加密或解密。
本发明提供的SoC系统中的虚拟机内存数据加密方法,还可以是,所述虚拟机内存密钥生成装置包括随机密钥生成部和密钥导出函数电路,在步骤3中,还包括:由所述随机密钥生成部生成随机密钥的步骤;以及,由所述密钥导出函数电路利用所述虚拟机内存密钥索引以及所述随机密钥,通过所述特定的算法,生成所述虚拟机内存密钥的步骤。
本发明提供的SoC系统中的虚拟机内存数据加密方法,还可以是,还包括:步骤6:所述虚拟机内存密钥生成装置向所述内存控制器发送解除绑定命令;以及步骤7:所述内存控制器基于所述解除绑定命令将所述虚拟机内存密钥和所述虚拟机ID的绑定解除,并删除所述虚拟机内存密钥。
因此,为更好的保护VEK,可将VEK放在专门的硬件中,而不是保存在安全处理器的内存中。安全处理器只持有一个和虚拟机内存密钥VEK对应的索引。安全处理器任何时候都不会直接接触到虚拟机内存密钥VEK,当需要使用虚拟机内存密钥VEK时,将虚拟机内存密钥VEK的索引输入给此专门硬件,后续和虚拟机内存密钥VEK相关操作由硬件继续完成。
本发明对安全虚拟化架构中虚拟机内存密钥(VEK-VM Encryption Key)生成过程做了优化。通过把原先由软件生成并保存在固件中的VEK改成由专门的部件来产生,从而提高了VEK本身的安全性,进而提升了虚拟机内容的安全。
本发明提供的技术方案,提高了安全虚拟化中VEK的安全性,更好的保证了虚拟机的数据安全。
附图说明
图1是现有技术中安全虚拟化和安全处理器架构的硬件结构图。
图2是现有CPU核心架构中密钥创建以及删除过程的处理流程。
图3是本发明的增加了虚拟机内存密钥生成装置VEKM的硬件结构图。
图4是本发明的虚拟机内存密钥生成装置VEKM的结构图。
图5是本发明中增加了虚拟机内存密钥生成装置VEKM的CPU核心架构中的密钥创建以及删除过程的处理流程。
具体实施方式
参考附图,对本发明的实施方式进行说明。其中相同的部件赋予相同的标号。首先描述本发明的示例性实施例。提供示例性实施例是为了说明本发明的各方面,而不应被解释为限制本发明的范围。当参考框图或流程图描述示例性实施例时,每个框可以表示用于执行方法步骤的方法步骤或装置元件。根据实现方式,相应的装置元件可以配置为硬件、软件、固件或其组合。
为保证VEK的安全,安全虚拟化技术使用了一个单独的处理器—安全处理器来管理VEK。安全处理器SoC(片上系统)中处理内存加解密和启动虚拟机的处理器。安全处理器上不会运行操作系统和应用程序,只运行安全虚拟化的固件,且安全处理器的内存是单独划分的,与操作系统使用的内存隔离。安全虚拟化和安全处理器的微架构参见图1。如图1所示,在SoC内部涉及到安全虚拟化的有CPU核心、安全处理器和内存控制器这3个器件,在SoC外部涉及到安全虚拟化的有DRAM(动态随机存取存储器)。这里,SoC外部的数据皆为加密后的密文,SoC内部为明文。
下面,结合图1与图2,对通常生成虚拟机内存密钥VEK的方式进行说明。
在图2中,CPU核心向安全处理器发送安全虚拟化API(应用程序编程接口),安全处理器处理后回应结果。其中开始启动、激活、去激活这三个API分别用来启动虚拟机,为虚拟机绑定虚拟机ID,为虚拟机解除绑定虚拟机ID。
如图2所示,当CPU核心向安全处理器发送开始启动命令时,安全处理器将启动虚拟机,随机生成虚拟机内存密钥VEK,并保存到自己的内存中。
CPU核心向安全处理器发送激活命令时,安全处理器把该虚拟机的虚拟机内存密钥VEK写入到内存控制器的寄存器中,同时与该虚拟机的虚拟机ID绑定在一起。
这样,该虚拟机向DRAM写数据时,内存控制器根据虚拟机的虚拟机ID找到对应的虚拟机内存密钥VEK,生成密文保存到DRAM。
该虚拟机从DRAM读取数据时,内存控制器根据虚拟机的虚拟机ID找到对应的虚拟机内存密钥VEK,解密密文,转换成明文。
CPU核心向安全处理器发送去激活命令时,安全处理器把该虚拟机的虚拟机内存密钥VEK从内存控制器的寄存器中删除,这时虚拟机将无法再读写内存。
当虚拟机启动时,安全处理器随机生成虚拟机内存密钥VEK,并保存在自己的内存中。虚拟机退出时,安全处理器销毁虚拟机内存密钥VEK。因此,这种方式的确很大程度的保证了虚拟机内存密钥VEK的安全性。
但如前所述,将虚拟机内存密钥VEK放在安全处理器内存中存在安全风险。为更好的保护虚拟机内存密钥VEK的安全,为此设计了一个增强方案。
[VEKM的功能以及架构]
如图3所示,在本申请发明中,在安全处理器与内存控制器之间增加了一个新的器件,即虚拟机内存密钥生成装置VEKM。图4示出了虚拟机内存密钥生成装置的具体结构。所述虚拟机内存密钥生成装置包括:随机密钥生成部,生成随机密钥RVEK;以及,密钥导出函数电路,其利用所述虚拟机内存密钥索引VEK_ID以及所述随机密钥RVEK,通过所述特定的算法,生成所述虚拟机内存密钥。亦即,在本发明中把虚拟机内存密钥VEK放在VEKM中,而不是保存在安全处理器的内存中,安全处理器只持有一个和虚拟机内存密钥VEK对应的索引VEK_ID,安全处理器任何时候都不会直接接触到VEK,当需要使用虚拟机内存密钥VEK时,将虚拟机内存密钥VEK的索引输入给此专门硬件,后续和虚拟机内存密钥VEK相关操作由硬件继续完成。
本发明的VEKM具有如下功能和特点:
1.上电启动时,随机生成一个密钥,称为RVEK。RVEK在上电期间保持不变。
2.具有密钥导出函数功能。即能够根据输入的所述密钥索引VEK_ID和RVEK,生成虚拟机内存密钥VEK。只要输入的虚拟机内存密钥索引VEK_ID不同,输出的虚拟机内存密钥VEK就不同。只要输入的虚拟机内存密钥索引VEK_ID相同,输出的虚拟机内存密钥VEK就一定相同。在这里,只要输入参数所述虚拟机内存密钥索引VEK_ID和RVEK变化,所生成的虚拟机内存密钥VEK就不同。即,密钥导出函数是一种不对外公开的加密算法,虚拟机内存密钥VEK由输入参数所述虚拟机内存密钥索引VEK_ID和RVEK决定。常见的密钥导出函数例如有密钥加密哈希函数等,但这里要注意的是本发明并不限定于一种或几种特定的函数,本领域技术人员可以根据具体需要来进行选择。
3.密钥导出函数算法保存在VEKM硬件中,永远不对外发布。
4.能够把安全处理器发给内存控制器的命令中的虚拟机内存密钥索引VEK_ID,替换为功能2中生成的虚拟机内存密钥VEK,再转发给内存控制器。
以上介绍了虚拟机内存密钥生成装置VEKM的工作过程。在上述虚拟机内存密钥生成装置VEKM中,所述随机密钥在所述虚拟机内存密钥生成装置上电期间保持不变。所述特定的算法为密钥导出函数算法,该算法保存在所述虚拟机内存密钥生成装置中。所述虚拟机内存密钥生成装置生成的所述虚拟机内存密钥对所述安全处理器不可见。
[本发明的VEKM生成虚拟机内存密钥VEK的具体流程]
图5示出了本发明的密钥创建及删除过程的流程。即,所述虚拟机内存密钥生成装置VEKM从所述安全处理器接收所述密钥索引,并通过特定的算法,计算生成用于与所述处理核心的请求所对应的虚拟机对应的内存密钥。所述虚拟机内存密钥生成装置包括:随机密钥生成部,生成随机密钥;以及,密钥导出函数电路,其利用所述虚拟机内存密钥索引以及所述随机密钥RVEK,通过所述特定的算法,生成所述虚拟机内存密钥VEK。所述随机密钥在所述虚拟机内存密钥生成装置上电期间保持不变。所述特定的算法为密钥导出函数算法,并保存在所述虚拟机内存密钥生成装置中。所述虚拟机内存密钥生成装置生成的所述虚拟机内存密钥对所述安全处理器不可见。这样一来,即便处理核心通过API漏洞,从所述安全处理器处读取数据,也无法得到VEK。
下面,基于图5来具体说明整个处理流程。
首先,当CPU核心向安全处理器发送开始启动命令时,安全处理器将启动虚拟机,随机生成虚拟机内存密钥索引VEK_ID,并保存到自己的内存中。
然后,CPU核心向安全处理器发送激活命令时,安全处理器向VEKM发送创建以及写入虚拟机内存密钥VEK命令,同时传递参数虚拟机内存密钥索引VEK_ID、虚拟机ID。
VEKM接收到命令后,利用密钥导出函数算法,以虚拟机内存密钥索引VEK_ID和RVEK为参数,计算出虚拟机内存密钥VEK。
VEKM向内存控制器发送虚拟机内存密钥VEK命令,并携带虚拟机内存密钥VEK和虚拟机ID为参数,内存控制器收到后将虚拟机内存密钥VEK保存到寄存器中,同时与虚拟机ID绑定。
CPU核心向安全处理器发送去激活命令时,安全处理器向VEKM发送创建以及删除VEK命令,同时传递参数VEK_ID,虚拟机ID。
VEKM接收到命令后,利用密钥导出函数算法,以虚拟机内存密钥索引VEK_ID和RVEK为参数,计算出虚拟机内存密钥VEK。
VEKM向内存控制器发送删除VEK(放弃VEK)命令,并携带VEK和虚拟机ID为参数,内存控制器收到后将虚拟机内存密钥VEK与虚拟机ID解除绑定,同时从寄存器中删除。
整个过程中,安全处理器固件并不保存VEK,只是保存了VEK_ID。因此即使安全处理器固件内存暴露,虚拟机内容仍然是安全的。因为只根据虚拟机内存密钥索引VEK_ID,没有RVEK,并且不知道密钥导出函数算法,无法推算出虚拟机内存密钥VEK,而密钥导出函数保存在VEKM中不会暴露。
结合本发明的图3、图4、图5可知,本发明提供的SoC系统,包括一个以上处理核心(CPU核心)、虚拟机内存密钥生成系统以及内存控制器,所述虚拟机内存密钥生成系统包括安全处理器和虚拟机内存密钥生成装置
VEKM,所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引VEK_ID,所述虚拟机内存密钥生成装置VEKM从所述安全处理器接收所述虚拟机内存密钥索引VEK_ID,并通过特定的算法,计算生成用于与所述处理核心(CPU核心)请求对应的虚拟机的内存密钥VEK,所述内存控制器从所述虚拟机内存密钥生成装置VEKM接收所述内存密钥VEK,在所述处理核心(CPU核心)对外部内存DRAM进行读写时进行加密或解密。
本发明提供的SoC系统的所述虚拟机内存密钥生成装置VEKM包括:随机密钥生成部,生成随机密钥RVEK;以及,密钥导出函数电路,其利用所述虚拟机内存密钥索引VEK_ID以及所述随机密钥RVEK,通过所述特定的算法,生成所述内存密钥。所述随机密钥RVEK在所述虚拟机内存密钥生成装置VEKM上电期间保持不变。所述特定的算法为密钥导出函数算法,并保存在所述虚拟机内存密钥生成装置中。所述虚拟机内存密钥生成装置生成的虚拟机内存密钥对所述安全处理器不可见。
所述内存控制器从所述虚拟机内存密钥生成装置接收所述虚拟机内存密钥,在所述处理核心(CPU核心)对外部内存DRAM进行读写时进行加密或解密。
本发明涉及的SoC系统中的内存数据加密方法,所述SoC系统包括一个以上处理核心(CPU核心)、虚拟机内存密钥生成系统以及内存控制器,所述虚拟机内存密钥生成系统包括安全处理器和虚拟机内存密钥生成装置VEKM,所述内存数据加密方法包括:步骤1:所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引VEK_ID;步骤2:所述安全处理器将所述处理核心发送来的虚拟机ID与所述虚拟机内存密钥索引发送给所述虚拟机内存密钥生成装置;步骤3:所述虚拟机内存密钥生成装置基于所述虚拟机内存密钥索引,并通过特定的算法,计算生成用于与所述处理核心的请求所对应的虚拟机对应的虚拟机内存密钥;步骤4:所述虚拟机内存密钥生成装置将所述虚拟机内存密钥和所述虚拟机ID发送给所述内存控制器;以及步骤5:所述内存控制器将所述虚拟机内存密钥和所述虚拟机ID绑定,以在所述处理核心对外部内存进行读写时通过所述虚拟机内存密钥进行加密或解密。
本发明的所述的SoC系统中的内存数据加密方法,还可以是,所述虚拟机内存密钥生成装置包括随机密钥生成部和密钥导出函数电路,在步骤3中,还包括:由所述随机密钥生成部生成随机密钥的步骤;以及,由所述密钥导出函数电路利用所述虚拟机内存密钥索引以及所述随机密钥,通过所述特定的算法,生成所述虚拟机内存密钥的步骤。
本发明的所述的SoC系统中的内存数据加密方法,还可以是,还包括:步骤6:所述虚拟机内存密钥生成装置向所述内存控制器发送解除绑定命令;以及步骤7:所述内存控制器基于所述解除绑定命令将所述虚拟机内存密钥和所述虚拟机ID的绑定解除,并删除所述虚拟机内存密钥。
[VEKM对电源休眠状态的处理]
这里,CPU核心向安全处理器发送去激活命令时,安全处理器把该虚拟机的VEK从内存控制器的寄存器中删除,这时虚拟机将无法再读写内存。
这意味着在整个虚拟机的生命周期内,安全处理器必须为虚拟机保存虚拟机内存密钥索引VEK。如果虚拟机内存密钥VEK丢失,则该虚拟机的内存将无法解密。因此,需要对使用的虚拟机内存密钥VEK在设备掉电时进行保护。
我们知道,CPU在休眠状态下,主存储器(RAM)仍然有电源供给,而且它也是几乎唯一的有电源供给的原件。因为操作系统、所有应用程序等等的当前系统状态都是保存在主存储器中,可以把设备恢复到正好上次保持的状态——计算机从该休眠状态回来时主存储器的内容和它进入休眠状态时候的内容是相同的。也就是说,保存当前系统状态至内存,然后进入假关机状态,此时除了内存需要电源来保持数据以外,其他的设备全部断电。唤醒后可以快速回复到待机前状态。例如,通常所说的电源S3状态。
电源S4状态及以上包含了S3状态。在S3状态下,即在该休眠状态下,VEKM会失去供电,VEKM中保存的RVEK将丢失。因此当安全处理器收到休眠启动通知时,需要把VEKM中的RVEK保存在DRAM中,当安全处理器收到休眠恢复通知时,需要把DRAM中保存的RVEK恢复到VEKM。
在本发明中,增加VEKM器件,VEKM可以是单独的器件,可以合并到内存控制器中,成为内存控制器的一部分。也可以是各部分分开设置的器件。
本发明通过添加VEKM器件,使安全虚拟化固件不需要保存VEK,提高了VEK的安全性和虚拟机的安全性。
以上对虚拟机内存密钥生成装置、方法、系统进行了说明中,省略了相同或类似的说明,实施的过程、原理相同,可以参考对应的内容。
以上参考附图,基于实施方式的实施例和变形例说明了本发明,但本发明并非限定于上述的实施方式,根据实际需要等将各实施方式的部分构成适当组合或置换后的方案,也包含在本发明的范围内。另外,还可以基于本领域技术人员的知识适当重组各实施方式的组合和处理顺序,或者对各实施方式施加各种设计变更等变形,被施加了这样的变形的实施方式也可能包含在本发明的范围内。

Claims (12)

1.一种虚拟机内存密钥生成系统,用于包括一个以上处理核心的SoC系统,其特征在于,包括安全处理器和虚拟机内存密钥生成装置,
所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引,
所述虚拟机内存密钥生成装置从所述安全处理器接收所述虚拟机内存密钥索引,并通过特定的算法,计算生成用于与所述处理核心的请求所对应的虚拟机对应的虚拟机内存密钥,
所述虚拟机内存密钥生成装置包括:
随机密钥生成部,生成随机密钥;以及,
密钥导出函数电路,其利用所述虚拟机内存密钥索引以及所述随机密钥,通过所述特定的算法,生成所述虚拟机内存密钥。
2.如权利要求1所述的虚拟机内存密钥生成系统,其特征在于,
所述随机密钥在所述虚拟机内存密钥生成装置上电期间保持不变。
3.如权利要求1或2所述的虚拟机内存密钥生成系统,其特征在于,
所述特定的算法为密钥导出函数算法,并保存在所述虚拟机内存密钥生成装置中。
4.如权利要求1或2所述的虚拟机内存密钥生成系统,其特征在于,
所述虚拟机内存密钥生成装置生成的所述虚拟机内存密钥对所述安全处理器不可见。
5.一种SoC系统,包括一个以上处理核心、虚拟机内存密钥生成系统以及内存控制器,其特征在于,
所述虚拟机内存密钥生成系统包括安全处理器和虚拟机内存密钥生成装置,
所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引,
所述虚拟机内存密钥生成装置从所述安全处理器接收所述虚拟机内存密钥索引,并通过特定的算法,计算生成用于与所述处理核心的请求所对应的虚拟机对应的内存密钥,
所述内存控制器从所述虚拟机内存密钥生成装置接收所述虚拟机内存密钥,在所述处理核心对外部内存进行读写时进行加密或解密,
所述虚拟机内存密钥生成装置包括:
随机密钥生成部,生成随机密钥;以及,
密钥导出函数电路,其利用所述虚拟机内存密钥索引以及所述随机密钥,通过所述特定的算法,生成所述虚拟机内存密钥。
6.如权利要求5所述的SoC系统,其特征在于,
所述随机密钥在所述虚拟机内存密钥生成装置上电期间保持不变。
7.如权利要求5或6所述的SoC系统,其特征在于,
所述特定的算法为密钥导出函数算法,并保存在所述虚拟机内存密钥生成装置中。
8.如权利要求5或6所述的SoC系统,其特征在于,
所述虚拟机内存密钥生成装置生成的所述虚拟机内存密钥对所述安全处理器不可见。
9.如权利要求5或6所述的SoC系统,其特征在于,
所述安全处理器在接收到表示上述SoC系统的电源将进入休眠的指令时,指示所述虚拟机内存密钥生成装置将所述随机密钥保存在所述外部内存中;并在从该休眠恢复时,所述外部内存中保存的所述随机密钥被读回到所述虚拟机内存密钥生成装置,
在所述休眠中,所述虚拟机内存密钥生成装置将掉电。
10.一种虚拟机内存密钥生成系统中的密钥生成方法,所述虚拟机内存密钥生成系统用于包括一个以上处理核心的SoC系统,并包括安全处理器和虚拟机内存密钥生成装置,所述密钥生成方法的特征在于,包括:
虚拟机内存密钥索引生成步骤,所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引;以及
虚拟机内存密钥生成步骤,所述虚拟机内存密钥生成装置从所述安全处理器接收所述虚拟机内存密钥索引,并通过特定的算法,计算生成用于与所述处理核心的请求所对应的虚拟机对应的内存密钥,
所述虚拟机内存密钥生成装置包括随机密钥生成部和密钥导出函数电路,
在所述虚拟机内存密钥生成步骤中,还包括:
由所述随机密钥生成部生成随机密钥的步骤;以及,
由所述密钥导出函数电路利用所述虚拟机内存密钥索引以及所述随机密钥,通过所述特定的算法,生成所述虚拟机内存密钥的步骤。
11.一种SoC系统中的虚拟机内存数据加密方法,所述SoC系统包括一个以上处理核心、虚拟机内存密钥生成系统以及内存控制器,所述虚拟机内存密钥生成系统包括安全处理器和虚拟机内存密钥生成装置,所述内存数据加密方法的特征在于,包括:
步骤1:所述安全处理器基于来自所述处理核心的请求,生成虚拟机内存密钥索引;
步骤2:所述安全处理器将所述处理核心发送来的虚拟机ID与所述虚拟机内存密钥索引发送给所述虚拟机内存密钥生成装置;
步骤3:所述虚拟机内存密钥生成装置基于所述虚拟机内存密钥索引,并通过特定的算法,计算生成用于与所述处理核心的请求所对应的虚拟机对应的虚拟机内存密钥;
步骤4:所述虚拟机内存密钥生成装置将所述虚拟机内存密钥和所述虚拟机ID发送给所述内存控制器;以及
步骤5:所述内存控制器将所述虚拟机内存密钥和所述虚拟机ID绑定,以在所述处理核心对外部内存进行读写时通过所述虚拟机内存密钥进行加密或解密,
所述虚拟机内存密钥生成装置包括随机密钥生成部和密钥导出函数电路,
在步骤3中,还包括:
由所述随机密钥生成部生成随机密钥的步骤;以及,
由所述密钥导出函数电路利用所述虚拟机内存密钥索引以及所述随机密钥,通过所述特定的算法,生成所述虚拟机内存密钥的步骤。
12.如权利要求11所述的SoC系统中的虚拟机内存数据加密方法,其特征在于,
还包括:
步骤6:所述虚拟机内存密钥生成装置向所述内存控制器发送解除绑定命令;以及
步骤7:所述内存控制器基于所述解除绑定命令将所述虚拟机内存密钥和所述虚拟机ID的绑定解除,并删除所述虚拟机内存密钥。
CN201811400796.4A 2018-11-22 2018-11-22 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统 Active CN109684030B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811400796.4A CN109684030B (zh) 2018-11-22 2018-11-22 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811400796.4A CN109684030B (zh) 2018-11-22 2018-11-22 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统

Publications (2)

Publication Number Publication Date
CN109684030A CN109684030A (zh) 2019-04-26
CN109684030B true CN109684030B (zh) 2021-05-04

Family

ID=66184918

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811400796.4A Active CN109684030B (zh) 2018-11-22 2018-11-22 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统

Country Status (1)

Country Link
CN (1) CN109684030B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110334531B (zh) * 2019-07-01 2023-07-11 深信服科技股份有限公司 虚拟机密钥的管理方法、主节点、系统、存储介质及装置
US12075346B2 (en) 2019-10-31 2024-08-27 Google Llc Determining a machine-learning architecture for network slicing
CN111124956B (zh) * 2019-11-22 2023-03-07 海光信息技术股份有限公司 一种容器保护方法、处理器、操作系统及计算机设备
US11663472B2 (en) 2020-06-29 2023-05-30 Google Llc Deep neural network processing for a user equipment-coordination set
CN111949376B (zh) * 2020-08-24 2021-12-17 海光信息技术股份有限公司 虚拟机系统和用于虚拟机系统的方法
CN112052069B (zh) * 2020-08-25 2024-03-12 海光信息技术股份有限公司 一种写、读虚拟机标识的方法、装置及相关设备
WO2022093185A1 (en) * 2020-10-27 2022-05-05 Google Llc Testing-and-manufacturing keys for a system-on-chip

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103414558A (zh) * 2013-07-17 2013-11-27 电子科技大学 一种基于xen云平台的虚拟机块设备隔离方法
CN105653970A (zh) * 2015-05-13 2016-06-08 宇龙计算机通信科技(深圳)有限公司 一种密钥处理方法及装置
CN107609405A (zh) * 2017-08-03 2018-01-19 致象尔微电子科技(上海)有限公司 一种外部安全内存装置及系统级芯片soc
CN109844751A (zh) * 2016-10-19 2019-06-04 超威半导体公司 处理系统中的直接存储器访问授权

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180165224A1 (en) * 2016-12-12 2018-06-14 Ati Technologies Ulc Secure encrypted virtualization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103414558A (zh) * 2013-07-17 2013-11-27 电子科技大学 一种基于xen云平台的虚拟机块设备隔离方法
CN105653970A (zh) * 2015-05-13 2016-06-08 宇龙计算机通信科技(深圳)有限公司 一种密钥处理方法及装置
CN109844751A (zh) * 2016-10-19 2019-06-04 超威半导体公司 处理系统中的直接存储器访问授权
CN107609405A (zh) * 2017-08-03 2018-01-19 致象尔微电子科技(上海)有限公司 一种外部安全内存装置及系统级芯片soc

Also Published As

Publication number Publication date
CN109684030A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
CN109684030B (zh) 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统
KR101565223B1 (ko) 인플레이스 암호화 시스템 및 방법
CN107851151B (zh) 保护虚拟机的状态信息
KR102013841B1 (ko) 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
US8862898B2 (en) Secure environment management during switches between different modes of multicore systems
TWI245182B (en) Method, chipset, system and recording medium for responding to a sleep attack
US8775824B2 (en) Protecting the security of secure data sent from a central processor for processing by a further processing device
US9703723B2 (en) Method and apparatus for performing mapping within a data processing system having virtual machines
US10922117B2 (en) VTPM-based virtual machine security protection method and system
US8379846B2 (en) Encryption apparatus and method therefor
EP2062191B1 (en) System and method for securely restoring a program context from a shared memory
KR101054981B1 (ko) 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
US10565130B2 (en) Technologies for a memory encryption engine for multiple processor usages
AU2012204448A1 (en) System and method for in-place encryption
US10511578B2 (en) Technologies for secure content display with panel self-refresh
US20170359175A1 (en) Support for changing encryption classes of files
JP2006018685A (ja) マルチタスク実行システム
EP3758276B1 (en) Data processing method, circuit, terminal device storage medium
WO2020101771A2 (en) System and method for booting processors with encrypted boot image
US10880082B2 (en) Rekeying keys for encrypted data in nonvolatile memories
KR102584506B1 (ko) 가상 기계들을 위한 상태 정보 보호
CN115361132A (zh) 密钥生成方法、装置、片上系统、设备及存储介质
KR101696900B1 (ko) 임베디드 시스템의 실행코드 암호화 및 복호화장치 및 이를 이용하여 정보유출 방지기능을 가지는 임베디드 시스템
CN111125791B (zh) 一种内存数据的加密方法、装置、cpu芯片及服务器
JP6095289B2 (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 300450 Tianjin Binhai New Area Tianjin Huayuan Industrial Zone Haitai West Road 18 North 2-204 Industrial Incubation-3-8

Applicant after: Haiguang Information Technology Co., Ltd

Address before: 300450 Tianjin Binhai New Area Tianjin Huayuan Industrial Zone Haitai West Road 18 North 2-204 Industrial Incubation-3-8

Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant