CN113448681A - 一种虚拟机监控器公钥的注册方法、设备和存储介质 - Google Patents

一种虚拟机监控器公钥的注册方法、设备和存储介质 Download PDF

Info

Publication number
CN113448681A
CN113448681A CN202010229922.5A CN202010229922A CN113448681A CN 113448681 A CN113448681 A CN 113448681A CN 202010229922 A CN202010229922 A CN 202010229922A CN 113448681 A CN113448681 A CN 113448681A
Authority
CN
China
Prior art keywords
virtual machine
machine monitor
public key
trusted
integrity
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.)
Granted
Application number
CN202010229922.5A
Other languages
English (en)
Other versions
CN113448681B (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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202010229922.5A priority Critical patent/CN113448681B/zh
Publication of CN113448681A publication Critical patent/CN113448681A/zh
Application granted granted Critical
Publication of CN113448681B publication Critical patent/CN113448681B/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种虚拟机监控器公钥的注册方法,包括:接收注册请求信息;其中,注册请求信息至少包括待注册虚拟机监控器公钥和业务服务器执行可信启动的完整性报告;其中,完整性报告包含:平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果;对请求注册信息包含的数据进行验证;根据验证结果判断待注册虚拟机监控器公钥是否为虚拟机监控器可信启动过程产生的虚拟机监控器公钥;如果是,则接受所述待注册虚拟机监控器公钥的注册。本方案可以确保被验证服务器接受的公钥一定是真实的虚拟机监控器公钥,从而确保了虚拟机监控器公钥注册过程的安全性。

Description

一种虚拟机监控器公钥的注册方法、设备和存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种虚拟机监控器公钥的注册方法、设备和存储介质。
背景技术
虚拟机监控器:又称为hypervisor或者Virtual Machine Monitor(缩写为VMM),是一种可以运行物理主机之上创建和管理虚拟机以及管理虚拟环境操作的软件系统。虚拟机监控器在被OS(操作系统)加载后,会产生一对公私钥密钥对,并把公钥向远端的验证服务器进行注册,以便于验证服务器或者第三方验证虚拟机监控器的身份。因为这个公钥代表了虚拟机监控器的身份,所以需要确保远端的验证服务器收到的是真实而非虚假的虚拟机监控器公钥。
然而,在虚拟机监控器公钥注册的过程中可能面临多种攻击。一种攻击形式下,OS上的恶意的或者被攻击者控制的应用软件也产生一对公私钥,并抢在虚拟机监控器之前向验证服务器进行公钥注册,从而实现假冒虚拟机监控器。另外一种攻击形式下,OS上负责与验证服务器进行通信的注册agent(代理)软件有可能会被攻击者控制,用攻击者的公钥替换注册请求中的虚拟机监控器公钥,从而也实现假冒虚拟机监控器。在这些攻击中,攻击者可以是来自网络的黑客,或者心怀恶意的内部员工。
基于此,需要一种能够确保虚拟机监控器公钥注册过程安全的方案。
发明内容
有鉴于此,本说明书实施例提供了一种虚拟机监控器公钥的注册方法,用于确保虚拟机监控器公钥注册过程的安全性。
本说明书实施例采用下述技术方案:
本说明书实施例提供了一种虚拟机监控器公钥的注册方法,所述方法包括:
接收注册请求信息;其中,所述注册请求信息至少包括待注册虚拟机监控器公钥和业务服务器执行可信启动的完整性报告;
其中,所述完整性报告包含:平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果;
对所述请求注册信息包含的数据进行验证;
根据所述验证结果判断所述待注册虚拟机监控器公钥是否为所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥;
如果是,则接受所述待注册虚拟机监控器公钥的注册。
本说明书实施例还提供了一种虚拟机监控器公钥的注册方法,该方法包括:
获取待注册虚拟机监控器公钥;
获取业务服务器执行可信启动的完整性报告;其中,所述完整性报告包含:平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果;
向验证服务器发送注册请求信息;其中,所述注册请求信息至少包括待注册虚拟机监控器公钥和所述完整性报告。
本说明书实施例还提供了一种电子设备,包括:至少一个处理和存储器;所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行上述的虚拟机监控器公钥的注册方法。
本说明书实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述的虚拟机监控器公钥的注册方法。
本说明书实施例还提供了一种虚拟机监控器公钥的注册设备,包括:
业务服务器,所述业务服务器用于执行可信启动,以得到完整性报告;所述完整性报告包括:平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果;
代理注册模块,所述代理注册模块用于获取所述业务服务器的待注册虚拟机监控公钥和所述完整性报告,以及将所述待注册虚拟机监控公钥和所述完整性报告作为注册请求信息发送至所述验证服务器;
验证服务器,所述验证服务器接收所述代理注册模块发送的注册请求信息,并对所述注册请求信息进行验证;如果验证通过,则接受所述待注册虚拟机监控器公钥的注册。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:通过本方案,可以确保被验证服务器接受的公钥一定是真实虚拟机监控器的公钥,完全防止了虚拟机监控器公钥的假冒;虚拟机监控器公钥注册过程的安全性不依赖于注册agent的安全性,即使注册agent被攻击者控制,也不能欺骗验证服务器接受虚假的公钥;而且扩展性好,虚拟机监控器公钥注册是自动化的过程,不依赖于运维人员的人工干预。从而确保了虚拟机监控器公钥的注册过程的安全性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图:
图1为本说明书实施例提供的一种虚拟机监控器公钥的注册方法的主要流程图;
图2为本说明书实施例提供的一种虚拟机监控器公钥的注册方法的总体架构和详细流程图;
图3本说明书实施例提供的一种虚拟机监控器公钥的注册方法的主要流程图;
图4为本说明书实施例提供的一种虚拟机监控器公钥的注册设备结构示意图。
具体实施方式
在详细说明书本说明书实施例的方案之前,对本方案涉及到的相关技术再作进一步说明。
可信平台模块:Trusted Platform Module(缩写为TPM),是一种位于计算机内部(通常在主板上)为计算机提供可信根的芯片,其规格和接口由国际组织TCG(TrustedComputing Group)进行定义。PCR(平台状态寄存器)是用来记录系统运行状态的寄存器,是TPM内部的核心器件。
可信启动一般是基于TPM(可信平台模块,Trusted Platform Module)实施的,使用TPM的PCR(Platform Configuration Registers)寄存器记录平台组件的完整性度量结果,并使用TPM的AK密钥(Attestation key)进行远程验证(Remote Attestation)。TPM的PCR寄存器一般有多个,每个寄存器都支持无限次的扩展(extend)操作。一个计算机组件可以在度量完某个其它组件的启动过程之后,把新的完整性度量值ME扩展到某个PCR寄存器中,此时TPM会在该寄存器中存储新的完整性度量结果MR=Hash(原有度量结果MR’+ME),其中“+“为比特串连接操作,Hash为哈希函数。在支持可信启动的服务器上,BIOS在加载BootLoader时会度量Boot Loader的完整性,并将度量值扩展到PCR寄存器中。Boot Loader在加载OS时,会度量OS的完整性并将度量值扩展到PCR寄存器中。这样会在TPM的PCR寄存器中留下平台启动链的完整性度量,记录启动链上每个平台组件被加载时的完整性情况。
虚拟化是云计算的基础支撑技术,而虚拟机监控器(hypervisor)是虚拟化架构中的核心功能部件。目前主要有三种类型的hypervisor。类型1(也称为类型I)hypervisor直接运行在宿主机的硬件上来控制硬件和管理虚拟机,典型代表如Xen。这种hypervisor的优势是运行效率高,但一般需要硬件特性的配合。类型2(也称类型II)hypervisor运行在传统的操作系统环境下,包括VMware5.5以前版本,Xen 3.0以前版本,Virtual PC 2004等。类型2hypervisor运行效率一般比较低,但不直接依赖于硬件特性,从而有较好的硬件适应性。类型1.5hypervisor,也称为类型3hypervisor,通常由OS负责加载,但一旦运行起来可以完全虚拟化OS,并且可以将OS降格为客户机模式(例如从VMX root降格为VMX non-root),典型代表是jailhouse。类型1.5hypervisor优势是代码规模比较小,运行效率比较高,可以用于构建可信计算环境(TEE)。TEE可以确保应用程序或者应用程序的一部分运行在一个安全的计算环境中,避免来自OS安全漏洞或者OS之上其它含有安全漏洞的应用程序的威胁。
基于类型1.5hypervisor构建TEE一般需要使用TPM的PCR寄存器记录平台组件的完整性度量结果。OS启动完成后,会去度量并加载类型1.5hypervisor(如jailhouse)。Hypervisor在启动时,需要产生一对代表自己身份的公私钥对,并将公钥注册到远端的验证服务器上,以便此后验证服务器可以使用这个公钥来识别和认证Hypervisor。但此时OS上可能存在恶意或者被攻击者控制的应用软件,会抢在Hypervisor注册公钥之前,扩展hypervisor度量值到PCR并产生和注册自己的公钥,以实现假冒hypervisor。如果公钥被验证服务器接受,这些应用就可以假冒hypervisor。另外,OS上负责提交注册请求的agent软件(可以翻译为代理注册软件)有可能被攻击者控制,并替换注册请求中的公钥。所以需要一种方法在OS上可能有恶意软件或者注册agent本身就恶意的情况下,允许远端的验证服务器能够验证注册请求中的hypervisor公钥,确保注册过程的安全。
现有的hypervisor公钥的注册方式主要包括:
人工注册:在OS加载hypervisor时,hypervisor产生一对公私钥对,并把公钥显示给运维人员,运维人员将公钥注册到远端的验证服务器上。其主要存在以下缺点:1、该过程依赖于运维人员的可信性,需要信任运维人员一定会正确地注册公钥。实际上,运维人员可能因为出错或者心怀恶意,注册错误的公钥,利用恶意软件假冒hypervisor。2、扩展性差。一个组织内部可能有很多配置了可信计算环境的机器,每一台机器在注册公钥时都需要运维人员的参与。这降低了组织的运转效率,使得IT基础设施难以根据业务需求而弹性地伸缩。
信任注册agent:注册agent和验证服务器事先共享一个通讯密钥。注册agent从hypervisor获取其希望注册的公钥,和相关PCR寄存器的内容一起使用通讯密钥进行保护后发送给验证服务器。验证服务器使用共享的通讯密钥认证注册agent,并信任和接受其发送的公钥。其主要存在以下缺点:存在hypervisor假冒。由于注册agent难以有效地识别和认证hypervisor,OS上恶意的或者被攻击者控制的应用软件仍然可以假冒成hypervisor向注册agent发送公钥。公钥被注册agent提交给验证服务器后,会被接受为合法的公钥。另外,注册agent缺乏安全地保存通讯密钥的手段,攻击者可以窃取该通讯密钥,从而可以冒充注册agent,向验证服务器提交任意公钥,实现假冒hypervisor。最后,即使没有其它应用冒充hypervisor并且攻击者无法窃取通讯密钥,注册agent本身也可能因为含有漏洞被攻击者控制,进而向验证服务器提交虚假的hypervisor公钥。
本说明书实施例的主要技术思路是在虚拟机监控器(以下统称为hypervisor)注册公钥时,验证服务器通过远程验证(remote attestation)协议来检查hypervisor启动以及产生密钥过程的完整性,确保注册请求中一定是真实的hypervisor公钥。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本说明书实施例提供的一种虚拟机监控器公钥的注册方法的主要流程图,该方法主要包括:
S110:接收注册请求信息;注册请求信息至少包括待注册虚拟机监控器公钥和业务服务器执行可信启动的完整性报告。其中,该完整性报告包括:平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果。
S120:对所述请求注册信息包含的数据进行验证;
S130:根据所述验证结果判断所述待注册虚拟机监控器公钥是否为所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥;
S140:如果是,则接受所述待注册虚拟机监控器公钥的注册。
上述步骤S110-S140的执行主体可以是验证服务器。为了更清楚地说明本方案,下面结合图2来详细说明上述注册方法及其优选实施例。
图2为本说明书实施例提供的一种虚拟机监控器公钥的注册方法的总体架构和详细流程图。
本说明书实施例的总体结构如图2所示,业务服务器是一台开启了基于TPM的可信启动的服务器,通过加载hypervisor构建出一个可信执行环境(TEE),在TEE中执行用户的业务和处理用户的数据,防止来自OS的漏洞利用以及OS上其它潜在恶意应用的威胁。业务服务器的hypervisor在加载后产生一对公私钥对(EAKpu,EAKpr),其中EAKpu为公钥,EAKpr为私钥。私钥一直停留在hypervisor中。在Hypervisor加载完成后,注册agent向远端的验证服务器发起注册请求。验证服务器接受来自业务服务器上hypervisor公钥注册,被认为是可信的节点。在某些情况下,验证服务器可能是用户控制的一个软件,用于接受来自业务服务器上的hypervisor注册并与其通信。验证服务器通过远程验证协议检查业务服务器平台以及hypervisor启动过程的完整性,决定是否接受注册请求。如果接受注册请求,验证服务器就登记hypervisor公钥到数据库中;否则,不予登记。
具体而言,业务服务器首先执行TPM初始化。TPM产生AK密钥对(AttestationKey),其中AK私钥停留在TPM硬件内,AK公钥和业务服务器的标识(标识可以采用平台的某个硬件标识如网卡序列号,CPU序列号或者其它形式分配的某种标识符)被登记到验证服务器的数据库中。如果TPM的AK公钥被验证服务器登记在数据库中,则此后验证服务器可以识别对应的AK私钥签署的完整性报告(以下称为Quote);否则验证服务器拒绝接受这样的Quote。需要说明的是,只有服务器的平台组件,包括BIOS、Boot Loader和OS等,支持可信启动的情况下,去执行TPM的初始化才是有意义的。一般情况下,TPM初始化包含了运维人员人工检查的步骤在内,需要运维人员确认TPM是真实存在的并且其所在的服务器平台组件已经支持了可信启动。本说明书的技术方案依赖于业务服务器TPM的合法初始化,但这种初始化在现实中有很多具体可能的方案,都可以与本方案协同工作,本说明书不对具体的TPM初始化方式进行限定。
在业务服务器执行TPM初始化后,开启可信启动的业务服务器执行平台可信启动。本说明书的平台可信启动可以理解为从BISO开始启动到OS启动完成的过程。启动链条上的前一个环节会在加载后一个环节时,度量其完整性并扩展完整性度量值到TPM的PCR寄存器中。需要说明的是,平台可信启动在不同的平台上可能有不同的实现方案,所使用的PCR寄存器也可能不同。本说明书可以基于任意一种平台启动方案构建,只要其实现是安全的。方便起见,本说明书假设平台可信启动时,平台组件的完整性度量值都扩展到了PCR4和PCR5。
在一种具体的应用中,如图2所示,平台可信启动过程为BIOS-Boot Loader-OS,在执行平台可信启动过程中,Boot Loader的完整性度量值扩展到PCR4,OS的完整性度量值扩展PCR5,作为示例,可以按照公式1:Hash1(待扩展到PCR的值+PCR中原有的完整性度量结果),分别得到扩展后的PCR4和PCR5的值,其中,Hash1为TPM采用的哈希函数,待扩展到PCR的值分别为平台可信启动过程的Boot Loader和OS的完整性度量值;扩展后的PCR4和PCR5中的值即代表平台可信启动过程的完整性度量结果。在此需要说明的是,平台可信启动过程的完整性度量值还可以使用同一个PCR寄存器,即将平台可信启动过程的Boot Loader和OS的完整性度量值扩展到同一个PCR寄存器后得到平台可信启动过程的完整性度量结果。
接下来,业务服务器执行hypervisor可信启动,其目标是确保hypervisor以一种不能被假冒的方式产生一对公私钥。为了实现这个目标,hypervisor在OS上任何应用启动之前完成加载和产生密钥对并将公钥Hash扩展到PCR寄存器。在任何应用启动之前,OS加载hypervisor将其完整性度量值扩展到PCR12中,hypervisor完成加载之前产生一对公私钥对,并将公钥的Hash扩展到PCR13中,PCR13代表hypervisor可信启动过程产生的hypervisor公钥EAKpu的完整性度量结果。需要说明书的是,本说明书实施例选择使用PCR12和PCR13,但这种选择并非方案的本质要求,也可以使用其他的空闲寄存器。
在一种具体的应用中,如图2所示,业务服务器执行hypervisor可信启动的步骤如下:
(1)OS加载systemd,获得其完整性度量值并扩展到PCR12。需要说明的是,本说明书以linux系统为代表,而Systemd是linux系统启动的第一个用户进程,因此OS需要加载systemd。OS加载systemd,把其完整性度量值扩展到PCR12,然后把CPU控制权交给Systemd。
(2)Systemd加载hypervisor的loader(加载器),度量loader的完整性并扩展到PCR 12。Loader是一段专门用于加载hypervisor的程序。Systemd先度量loader,把其完整性度量值扩展到PCR12,然后将CPU控制权移交给loader。
(3)Loader加载hypervisor,度量hypervisor的完整性并将hypervisor可信启动过程的完整性度量值扩展到PCR12,作为示例,可以按照公式1:Hash1(待扩展到PCR的值)+PCR中原有的完整性度量结果),得到扩展后的PCR12的值;其中,Hash1为TPM采用的哈希函数,待扩展到PCR的值为hypervisor可信启动过程的完整性度量值;扩展后的PCR12的值即hypervisor可信启动过程的完整性度量结果。然后loader将CPU控制权移交给hypervisor。在此需要说明的是,hypervisor可信启动过程的完整性度量值还可以与平台可信启动过程的完整性度量值扩展到同一个寄存器,即将hypervisor可信启动过程的完整性度量值、平台可信启动过程的Boot Loader和OS的完整性度量值扩展到同一个PCR寄存器后,得到的值代表hypervisor可信启动过程的完整性度量结果和平台可信启动过程的完整性度量结果。
(4)优选地,Hypervisor构建出两张扩展页表(Extended Page Table),隔离OS和Hypervisor的内存;然后配置IOMMU(Input–Output Memory Management Unit)打开内存的DMA(Direct Memory Access)保护,防止外设读取hypervisor内存。
(5)作为一种示例,Hypervisor产生一对公私钥(EAKpu,EAKpr),并把公钥EAKpu的哈希值(hash值)扩展到PCR13中。作为示例,可以按照公式2:Hash1(Hash2(EAKpu)+0x0020),得到扩展后PCR13的值;其中Hash2为hypervisor采用的哈希函数,Hash1为TPM采用的哈希函数,Hash1和Hash2可以是同一个或不同的hash函数,0x0020代表20字节的0是TPM的PCR寄存器的初始值,EAKpu代表扩展到PCR13的公钥EAKpu的哈希值。PCR13的值代表Hypervisor产生的公钥EAKpu的完整性度量结果。
需要说明书的,TPM的PCR寄存器的初始值可能在不同的产品或者规范下有不同的取值,但只要初始值是确定已知的即可,本说明书不对具体的初始值进行限定。由于在(4)中,hypervisor对自己的内存进行了保护,所以私钥EAKpr的机密性可以得到保证。
作为一种具体的应用方式,业务服务器执行hypervisor可信启动还可以包括:(6)hypervisor可以使用刚产生的公私钥(EAKpu,EAKpr)构造一个证书签署请求CSR(Certificate Signing request)。CSR是通过使用私钥EAKpr签署公钥EAKpu等hypervisor信息而产生的结构,用于向验证服务器证明hypervisor确实拥有EAKpu对应的私钥EAKpr。
(7)Systemd在hypervisor加载完成后,开始启动其它应用和服务,包括注册agent(在OS上负责提交注册请求)。Systemd可以通过检查PCR13的变化判断hypervisor是否加载完成。
在步骤S110中,作为一种具体的实施方式,验证服务器接收到的注册请求信息可以按照如下步骤获得:
S1101:业务服务器上的注册agent向验证服务器发送注册消息,请求进行注册;
S1102:验证服务器根据该注册消息产生一个随机数c,作为挑战发送给注册agent;
S1103:注册agent从hypervisor获得在hypervisor可信启动过程中产生的EAKpu,作为示例还可以获得hypervisor可信启动过程中的证书签署请求CSR,然后调用TPM接口得到一个Quote。Quote包含平台可信启动过程的完整性度量结果(即PCR4和PCR5的值)、hypervisor可信启动过程的完整性度量结果(即PCR12的值)、可信启动过程产生的hypervisor公钥的完整性度量结果(即PCR13的值)和前述挑战数c。Quote可以是TPM使用自己的AK私钥对PCR4,PCR5、PCR12、PCR13等值的签名,由TPM担保这些寄存器值的真实性。Quote中包含了挑战数c是为了对抗重放攻击(replay),包含PCR4和PCR5可以提供平台可信启动的完整性证明,包含PCR12以提供hypervisor可信启动的完整性证明,包含PCR13作为验证服务器验证注册请求信息中公钥真实性的凭据。
S1104:注册agent将平台标识(业务服务器的标识信息)、Quote、hypervisor的公钥EAKpu和CSR放入一个注册请求消息,发送给验证服务器。
这样一来,在一种最优的实施方式中,步骤S110接收到的注册请求信息即包括平台标识、Quote、hypervisor的公钥EAKpu和CSR。
在步骤S120中,对所述请求注册信息包含的数据进行验证的步骤可以是:
S1201:在验证服务器的数据库中,根据平台标识检索与该平台标识对应的TPM的AK公钥。由于在业务服务器执行TPM初始化时,TPM产生AK密钥对,其中AK私钥停留在TPM硬件内,AK公钥和平台标识被登记到验证服务器的数据库中。因此,如果根据平台标识检索到与该平台标识对应的TPM的AK公钥,则说明验证服务器中存储的TPM的AK公钥是业务服务器合法地执行了TPM初始化;如果平台标识或者对应的TPM的AK公钥在数据库中不存在,则检查失败。
S1202:在步骤S1201检查通过之后,利用存储的TPM的AK公钥对Quote上的TPM的私钥签名进行验证。在该示例中,由于注册请求消息中的Quote包含TPM的私钥签名,因此,利用存储的TPM的AK公钥对Quote上的TPM的私钥签名进行验证可以确定该Quote是TPM的AK公钥对应的AK私钥所签署。
S1203:在步骤S1202验证通过之后,可以进一步检查Quote中是否包含了正确的挑战数c。具体而言,由于验证服务器在接收到注册agent发送的注册消息后,会产生一个随机数c作为挑战发送给注册agent,假如业务服务器发送的是第一随机数,Quote中包含了第二随机数(即该挑战数c),如果第一随机数与第二随机数相同,则说明Quote中包含了正确的挑战数c。
S1204:根据预先存储的平台可信启动过程的完整性度量结果的预期值验证平台可信启动过程的完整性度量结果。根据预先存储的hypervisor可信启动过程的完整性度量结果的预期值验证hypervisor可信启动过程的完整性度量结果。具体而言,对于一台配置正确的业务服务器完整地启动时,这些度量结果的预期值是可以提前获得,并配置在验证服务器的数据库中,以便验证服务器在执行远程验证时使用这些值作为对比的基线。在该示例中,通过核对PCR4和PCR5与预先配置在数据中的平台可信启动过程的完整性度量结果的预期值是否相同;以及核对PCR12与预先配置在数据中的hypervisor可信启动过程的完整性度量结果的预期值是否相同。
S1205:如果步骤S1204中验证的PCR4、PCR5和PCR12均与其预期值相同,则进一步验证hypervisor可信启动过程产生的hypervisor公钥的完整性度量结果。具体而言,对于注册请求信息中的待注册hypervisor公钥,可以按照上述公式2:Hash1(Hash2(EAKpu)+0x0020),对待注册hypervisor公钥的哈希值(EAKpu代表待注册公钥的哈希值)进行计算,得到待注册hypervisor公钥的完整性度量结果,该公式2即上述业务服务器执行hypervisor可信启动的步骤(5)中所用的公式。也就是说,利用公式2计算得到的待注册hypervisor公钥的完整性度量结果,然后将该结果与hypervisor可信启动过程产生的hypervisor公钥的完整性度量结果(即Quote中通过该公式2得到的扩展后的PCR13的值)比较,如果相等,则说明该待注册hypervisor公钥是真实的。
S1206:进一步,用该待注册hypervisor公钥验证注册请求信息中的CSR签名,由于CSR使用hypervisor私钥签名,该验证可以证明hypervisor确实拥有与待注册hypervisor公钥(hypervisor公钥)对应的私钥(EAKpr)。
在上述步骤中,验证服务器通过检查业务服务器提交过来的Quote中的PCR寄存器中的内容,可以确定业务服务器上hypervisor在任何应用运行之前完成了加载并扩展公钥Hash到PCR13中,进而确信PCR13中保存了hypervisor公钥的完整性度量结果。通过对注册请求中的待注册hypervisor公钥,使用公式2计算得到的完整性度量结果与PCR13的值作对比,验证服务器可以确信注册请求信息中的待注册hypervisor公钥是真实的hypervisor公钥。
在步骤S130中,如果上述验证通过,则可以确定待注册hypervisor公钥为真实的hypervisor公钥。并执行步骤S140,如果待注册hypervisor公钥为真实的hypervisor公钥,则接受该待注册hypervisor公钥的注册,即,将待注册hypervisor公钥登记到验证服务器的数据库中,进而可以使用该公钥来验证hypervisor的身份。如果上述验证不通过,即待注册hypervisor公钥为虚假的,则拒绝接受该待注册hypervisor公钥的注册。
上述的虚拟机监控器公钥的注册方法是以验证服务器为执行主体的方法,基于同样的思路,本说明书实施还提供了一种以注册agent为执行主体的方法。图3为本说明书实施例提供的一种虚拟机监控器公钥的注册方法的主要流程图,该方法主要包括:
S310:获取待注册虚拟机监控器公钥;
S320:获取业务服务器执行可信启动的完整性报告;其中,所述完整性报告包含:平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果;
S330:向验证服务器发送注册请求信息;其中,所述注册请求信息至少包括待注册虚拟机监控器公钥和所述完整性报告。
上述步骤的执行主体可以是安装于业务服务器上的注册agent应用程序。其中,业务服务器基于TPM执行可信启动,关于业务服务器的可信启动过程参见上文说明,在此不再赘述。此外,关于上述步骤S310-S330的具体实施方式以及优选的实施方式也参见上文说明,在此也不再赘述。
关于本说明书实施例的虚拟机监控器公钥的注册方法安全性分析如下:
(1)一种可能的攻击形式下,OS上的某个恶意应用(攻击者)自己产生一对公私钥RK和PK,在hypervisor扩展自己的公钥EAKpu之后,将PCR中的公钥完整性度量结果进行修改,以试图替换注册请求中的hypervisor公钥。假设在hypervisor扩展自己公钥EAKpu之后,PCR 13的值为V,则攻击者需要计算v’满足公式3:Hash1(v’+V)=Hash1(Hash2(PK)+0x0020),其中V和PK都是已知量,Hash1、Hash2是公开的Hash函数。这在计算上是不可行的,由Hash函数的单向性保证。
(2)另外一种攻击形式下,由于注册agent与hypervisor之间没有可信信道,而且agent本身就可能被入侵。攻击者可以替换注册请求中的hypervisor公钥为自己的公钥。但本方案中,此时hypervisor已经完成加载并且真实公钥的hash值已经扩展到PCR13。注册请求提交给验证服务器之后,验证服务器对注册请求中的假冒的公钥计算的公钥完整性度量结果与Quote中PCR13的值会不一致。验证服务器不会接受这样的注册请求。
(3)另外一种攻击形式下,恶意应用使用一台没有可信启动但装有TPM的机器,模拟平台可信启动以及hypervisor可信启动的过程,扩展伪造的度量值到PCR,产生公私钥并调用TPM接口产生Quote,然后向验证服务器注册,试图假冒hypervisor。由于任何一个能够被验证服务器识别的TPM的AK,必须是经过合法初始化过程产生的。只有这样的TPM的AK公钥才会登记在验证服务器的数据库中。合法的初始化过程可以确保,拥有合法AK私钥的TPM所在的平台都是配置有平台可信启动的,所以这种攻击不能成功。同理,如果攻击者使用一台没有任何TPM的机器,通过模拟TPM并模拟平台可信启动以及hypervisor可信启动的过程,向验证服务器提交注册请求。这样的TPM的AK是不能被验证服务器接受的,因为它没有经过合法初始化的过程,从而没有登记在验证服务器的数据库中。
通过本说明书实施例的上述方案,可以确保被验证服务器接受的公钥一定是真实hypervisor的公钥,完全防止hypervisor公钥的假冒;hypervisor公钥注册过程的安全性不依赖于注册agent的安全性,即使注册agent被攻击者控制,也不能欺骗验证服务器接受虚假的公钥;而且扩展性好,hypervisor公钥注册是自动化的过程,不依赖于运维人员的人工干预。从而确保了hypervisor公钥的注册过程的安全性。
基于同样的思路,本说明书实施例还提供了一种电子设备,包括:至少一个处理器和存储器,所述存储器存储有程序,并且被配置成由所述至少一个处理器执行上述的虚拟机监控器公钥的注册方法。
基于同样的思路,本说明书实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述的虚拟机监控器公钥的注册方法。
基于同样的思路,本说明书实施例还提供了一种虚拟机监控器公钥的注册设备。图4为本说明书实施例提供的一种虚拟机监控器公钥的注册设备结构示意图。如图4所示,该设备包括:
业务服务器401,业务服务器401用于执行可信启动,以得到完整性报告;所述完整性报告包括:平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果。
代理注册模块402,代理注册模块402用于获取业务服务器401的待注册虚拟机监控公钥和所述完整性报告,以及将所述待注册虚拟机监控器公钥和所述完整性报告作为注册请求信息发送至所述验证服务器;
验证服务器403,验证服务器403接收代理注册模块402发送的注册请求信息,并对所述注册请求信息进行验证;如果验证通过,则接受所述待注册虚拟机监控器公钥的注册。
其中,业务服务器401基于TPM执行可信启动。其中,所述平台可信启动过程可以理解为:从BISO开始启动到OS启动完成的过程。所述虚拟机监控器可信启动过程可以理解为:使所述虚拟机监控器先于OS上其他应用启动之前完成加载和产生虚拟机监控器公钥和私钥。其中,所述平台可信启动过程的完整性度量结果为将平台可信启动过程的完整性度量值扩展到TPM的寄存器后得到的;所述虚拟机监控器可信启动过程的完整性度量结果为将虚拟机监控器可信启动过程的完整性度值扩展到TPM的寄存器后得到的;所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果为将所述虚拟机监控器公钥的哈希值扩展到TPM的寄存器后得到的。具体的业务服务器401基于TPM执行可信启动的过程、以及平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果的计算过程参见上文方法的说明,此处不再赘述。
其中,验证服务器403对所述请求注册信息进行验证,具体包括:验证服务器403根据预先存储的平台可信启动过程的完整性度量结果的预期值验证所述平台可信启动过程的完整性度量结果;验证服务器403根据预先存储的虚拟机监控器可信启动过程的完整性度量结果的预期值验证所述虚拟机监控器可信启动过程的完整性度量结果。在验证通过后,验证服务器403按照预设公式对所述待注册虚拟机监控器公钥的哈希值进行计算,得到所述注册虚拟机监控器公钥的完整性度量结果,并比较所述待注册虚拟机监控器公钥的完整性度量结果与所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果。所述预设公式为所述业务服务器用于对所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的哈希值进行计算,以得到所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果,该预设公式为上述的公式2,具体的实施方式参见上文中方法的说明,此处不再赘述。
进一步,业务服务器401执行可信启动,得到的完整性报告还包括TPM的私钥签名。代理注册模块402还用于获取业务服务器401的标识信息,以及将标识信息发送至验证服务器403。验证服务器403还用于根据该标识信息检索与该标识信息对应的TPM公钥;如果索到与该标识信息对应的TPM公钥,则根据TPM公钥对完整性报告的TPM的私钥签名进行验证。具体的实施方式参见上文说明,此处不再赘述。
进一步,业务服务器401还用于使用虚拟机监控器的公私钥构造证书签署请求CSR,该证书签署请求CSR包括虚拟机监控器的私钥签名。代理注册模块402用于将证书签署请求CSR发送给验证服务器403;验证服务器403用于根据待注册虚拟机监控器公钥验证所述证书签署请求CSR的私钥签名。具体的实施方式参见上文说明,此处不再赘述。
进一步,代理注册模块402在获取业务服务器401的待注册虚拟机监控公钥和完整性报告之前,用于向验证服务器403发送注册消息;代理注册模块402在接收到验证服务器403针对所述注册消息反馈的第一随机数后,获取业务服务器401的待注册虚拟机监控公钥和完整性报告;其中,所述完整性报告包括第二随机数;验证服务器403用于检查所述第二随机数是否为所述第一随机数。具体的实施方式参见上文方法的说明,此处不再赘述。
本说明书的方案是通过远程验证(Remote attestation)协议实现hypervisor公钥安全注册的方法,以确保只有真实的hypervisor公钥才能实现注册。从总体上来说,本说明书实施例的方案主要包括:在注册前,OS通过Systemd在任何应用程序启动之前完成加载hypervisor,并把hypervisor可信启动过程的完整性度量值扩展到TPM的PCR寄存器中,这与平台启动过程的完整性度量结果一起构成hypervisor可信启动的证据链。hypervisor在完成加载之前,产生一对代表自己身份的公私钥对,并把公钥的Hash值扩展到TPM的PCR寄存器。这可以提供对注册请求信息中待注册hypervisor公钥的完整性保护。注册时,验证服务器接收的Quote中包含平台可信启动过程的完整性度量结果、hypervisor可信启动过程的完整性度量结果、hypervisor公钥的完整性度量结果,优选地还可包括挑战数(随机数)。验证服务器通过检查Quote中包含平台可信启动过程的完整性度量结果和hypervisor可信启动过程的完整性度量结果,可以确信hypervisor在任何OS应用之前启动,并扩展了公钥到指定的TPM的PCR寄存器(如上述示例中的PCR13),进而确信指定的TPM的PCR寄存器(PCR13)中包含了真实的hypervisor公钥的完整性度量结果。注册时,验证服务器通过对注册请求信息中的待注册hypervisor公钥的哈希值重新计算,得到待注册hypervisor公钥的完整性度量结果,并与Quote中基于同一公式计算得到的hypervisor公钥的完整性度量结果进行对比,可以判断注册请求中的待注册hypervisor公钥是否真实的。
通过本说明书实施例的上述方案,可以确保被验证服务器接受的公钥一定是真实hypervisor的公钥,完全防止hypervisor公钥的假冒;hypervisor公钥注册过程的安全性不依赖于注册agent的安全性,即使注册agent被攻击者控制,也不能欺骗验证服务器接受虚假的公钥;而且扩展性好,hypervisor公钥注册是自动化的过程,不依赖于运维人员的人工干预。从而确保了hypervisor公钥的注册过程的安全性。
上述对本说明书特定实施例进行了描述,其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,附图中描绘的过程不一定必须按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、设备、非易失性计算机可读存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware DescrIP地址tion Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescrIP地址tion Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware DescrIP地址tion Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware DescrIP地址tion Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware DescrIP地址tion Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、MicrochIP地址PIC18F26K20以及Silicone LabsC8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (26)

1.一种虚拟机监控器公钥的注册方法,所述方法包括:
接收注册请求信息;其中,所述注册请求信息至少包括待注册虚拟机监控器公钥和业务服务器执行可信启动的完整性报告;
其中,所述完整性报告包含:平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果;
对所述请求注册信息包含的数据进行验证;
根据所述验证结果判断所述待注册虚拟机监控器公钥是否为所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥;
如果是,则接受所述待注册虚拟机监控器公钥的注册。
2.根据权利要求1所述的方法,所述业务服务器基于TPM执行可信启动;
所述平台可信启动过程为:从BISO开始启动到OS启动完成的过程;
所述虚拟机监控器可信启动过程为:使所述虚拟机监控器先于OS上其他应用启动之前完成加载和产生虚拟机监控器公钥和私钥。
3.根据权利要求2所述的方法,所述业务服务器执行可信启动的完整性报告包括TPM的私钥签名;
对所述请求注册信息进行验证,还包括:
根据存储的TPM公钥对所述完整性报告的TPM的私钥签名进行验证。
4.根据权利要求3所述的方法,所述注册请求信息还包括所述业务服务器的标识信息;
根据存储的TPM的公钥对所述完整性报告的TPM的私钥签名进行验证,具体包括:
根据所述标识信息检索与所述标识信息对应的TPM公钥;
如果检索到与所述标识信息对应的TPM公钥,则根据所述TPM公钥对所述完整性报告的TPM的私钥签名进行验证。
5.根据权利要求1所述的方法,所述注册请求信息还包括使用所述虚拟机监控器的公私钥构造的证书签署请求,所述证书签署请求包括所述虚拟机监控器的私钥签名;
对所述请求注册信息进行验证,还包括:
根据所述待注册虚拟机监控器公钥验证所述证书签署请求的私钥签名。
6.根据权利要求1所述的方法,在接收发送的注册请求信息之前,所述方法还包括:接收注册消息,并向业务服务器发送的第一随机数;
所述完整性报告还包含第二随机数,对所述请求注册信息包含的数据进行验证,还包括:
检查所述第二随机数是否与所述第一随机数相同。
7.根据权利要求2至6中任一项所述的方法,
所述平台可信启动过程的完整性度量结果为将平台可信启动过程的完整性度量值扩展到TPM的寄存器后得到;
所述虚拟机监控器可信启动过程的完整性度量结果为将虚拟机监控器可信启动过程的完整性度值扩展到TPM的寄存器后得到;
所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果为将所述虚拟机监控器公钥的哈希值扩展到TPM的寄存器后得到。
8.根据权利要求7所述的方法,对所述请求注册信息包含的数据进行验证,包括:
根据预先存储的平台可信启动过程的完整性度量结果的预期值验证所述平台可信启动过程的完整性度量结果;
根据预先存储的虚拟机监控器可信启动过程的完整性度量结果的预期值验证所述虚拟机监控器可信启动过程的完整性度量结果;
计算所述待注册虚拟机监控器公钥的完整性度量结果,并比较所述待注册虚拟机监控器公钥的完整性度量结果与所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果。
9.根据权利要求8所述的方法,所述计算所述待注册虚拟机监控器公钥的完整性度量结果,具体包括:
按照预设公式对所述待注册虚拟机监控器公钥的哈希值进行计算得到所述待注册虚拟机监控器公钥的完整性度量结果;
其中,所述预设公式为用于对所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的哈希值进行计算,以得到所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果。
10.一种虚拟机监控器公钥的注册方法,所述方法包括:
获取待注册虚拟机监控器公钥;
获取业务服务器执行可信启动的完整性报告;其中,所述完整性报告包含:平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果;
向验证服务器发送注册请求信息;其中,所述注册请求信息至少包括待注册虚拟机监控器公钥和所述完整性报告。
11.根据权利要求10所述的方法,所述业务服务器基于TPM执行可信启动;
所述平台可信启动过程为:从BISO开始启动到OS启动完成的过程;
所述虚拟机监控器可信启动过程为:使所述虚拟机监控器先于OS上其他应用启动之前完成加载和产生虚拟机监控器公钥和私钥。
12.根据权利要求11所述的方法,所述业务服务器执行可信启动的完整性报告还包括TPM的私钥签名。
13.根据权利要求12所述的方法,在向验证服务器发送注册请求信息之前,所述方法还包括:
获取业务服务器的标识信息;其中,所述标识信息和与所述标识信息对应的TPM公钥存储在验证服务器;
向验证服务器发送的注册请求信息包括所述业务服务器的标识信息。
14.根据权利要求13所述的方法,在向验证服务器发送注册请求信息之前,所述方法还包括:
获取使用所述虚拟机监控器的公私钥构造的证书签署请求,所述证书签署请求包括所述虚拟机监控器的私钥签名;
向验证服务器发送的注册请求信息包括所述证书签署请求。
15.根据权利要求10所述的方法,在获取业务服务器执行可信启动的完整性报告之前,所方法还包括:
向验证服务器发送注册消息,以及接收所述验证服务器针对所述注册消息反馈的随机数;
所述获取到的完整性报告还包括所述随机数。
16.根据权利要求11至15中任一项所述的方法,
所述平台可信启动过程的完整性度量结果为将平台可信启动过程的完整性度量值扩展到TPM的寄存器后得到;
所述虚拟机监控器可信启动过程的完整性度量结果为将虚拟机监控器可信启动过程的完整性度值扩展到TPM的寄存器后得到;
所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果为将所述虚拟机监控器公钥的哈希值扩展到TPM的寄存器后得到。
17.一种电子设备,包括:至少一个处理器和存储器,所述存储器存储有程序,并且被配置成由所述至少一个处理器执行权利要求1至16中任一项所述的虚拟机监控器公钥的注册方法。
18.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现权利要求1至16中任一项所述的虚拟机监控器公钥的注册方法。
19.一种虚拟机监控器公钥的注册设备,所述设备包括:
业务服务器,所述业务服务器用于执行可信启动,以得到完整性报告;所述完整性报告包括:平台可信启动过程的完整性度量结果、虚拟机监控器可信启动过程的完整性度量结果和虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果;
代理注册模块,所述代理注册模块用于获取所述业务服务器的待注册虚拟机监控公钥和所述完整性报告,以及将所述待注册虚拟机监控公钥和所述完整性报告作为注册请求信息发送至所述验证服务器;
验证服务器,所述验证服务器接收所述代理注册模块发送的注册请求信息,并对所述注册请求信息进行验证;如果验证通过,则接受所述待注册虚拟机监控器公钥的注册。
20.根据权利要求19所述的设备,所述业务服务器基于TPM执行可信启动;
所述平台可信启动过程为:从BISO开始启动到OS启动完成的过程;
所述虚拟机监控器可信启动过程为:使所述虚拟机监控器先于OS上其他应用启动之前完成加载和产生虚拟机监控器公钥和私钥。
21.根据权利要求20所述的设备,
所述平台可信启动过程的完整性度量结果为将平台可信启动过程的完整性度量值扩展到TPM的寄存器后得到;
所述虚拟机监控器可信启动过程的完整性度量结果为将虚拟机监控器可信启动过程的完整性度值扩展到TPM的寄存器后得到;
所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果为将所述虚拟机监控器公钥的哈希值扩展到TPM的寄存器后得到。
22.根据权利要求21所述的设备,所述验证服务器对所述请求注册信息进行验证,具体包括:
所述验证服务器根据预先存储的平台可信启动过程的完整性度量结果的预期值验证所述平台可信启动过程的完整性度量结果;
所述验证服务器根据预先存储的虚拟机监控器可信启动过程的完整性度量结果的预期值验证所述虚拟机监控器可信启动过程的完整性度量结果;
所述验证服务器计算所述待注册虚拟机监控器公钥的完整性度量结果,并比较所述待注册虚拟机监控器公钥的完整性度量结果与所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果。
23.根据权利要求22所述的设备,所述验证服务器按照预设公式对所述待注册虚拟机监控器公钥的哈希值进行计算得到所述待注册虚拟机监控器公钥的完整性度量结果;
其中,所述预设公式为所述业务服务器用于对所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的哈希值进行计算,以得到所述虚拟机监控器可信启动过程产生的虚拟机监控器公钥的完整性度量结果。
24.根据权利要求20所述的设备,所述业务服务器执行可信启动,得到的完整性报告还包括TPM的私钥签名;
所述代理注册模块还用于获取所述业务服务器的标识信息,以及将所述标识信息发送至所述验证服务器;
所述验证服务器还用于根据所述标识信息检索与所述标识信息对应的TPM公钥;如果索到与所述标识信息对应的TPM公钥,则根据所述TPM公钥对所述完整性报告的TPM的私钥签名进行验证。
25.根据权利要求20所述的设备,所述业务服务器还用于使用所述虚拟机监控器的公私钥构造证书签署请求,所述证书签署请求包括所述虚拟机监控器的私钥签名;
所述代理注册模块用于将所述证书签署请求发送给所述验证服务器;
所述验证服务器用于根据所述待注册虚拟机监控器公钥验证所述证书签署请求的私钥签名。
26.根据权利要求19至25中任一项所述的设备,所述代理注册模块在获取所述业务服务器的待注册虚拟机监控公钥和完整性报告之前,用于向验证服务器发送注册消息;
所述代理注册模块在接收到所述验证服务器针对所述注册消息反馈的第一随机数后,获取所述业务服务器的待注册虚拟机监控公钥和完整性报告;其中,所述完整性报告包括第二随机数;
所述验证服务器用于检查所述第二随机数是否为所述第一随机数。
CN202010229922.5A 2020-03-27 2020-03-27 一种虚拟机监控器公钥的注册方法、设备和存储介质 Active CN113448681B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010229922.5A CN113448681B (zh) 2020-03-27 2020-03-27 一种虚拟机监控器公钥的注册方法、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010229922.5A CN113448681B (zh) 2020-03-27 2020-03-27 一种虚拟机监控器公钥的注册方法、设备和存储介质

Publications (2)

Publication Number Publication Date
CN113448681A true CN113448681A (zh) 2021-09-28
CN113448681B CN113448681B (zh) 2024-05-03

Family

ID=77807800

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010229922.5A Active CN113448681B (zh) 2020-03-27 2020-03-27 一种虚拟机监控器公钥的注册方法、设备和存储介质

Country Status (1)

Country Link
CN (1) CN113448681B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115296938A (zh) * 2022-10-09 2022-11-04 湖南警云智慧信息科技有限公司 云计算管理系统及云计算管理方法
CN117421096A (zh) * 2023-12-19 2024-01-19 麒麟软件有限公司 基于jailhouse虚拟机监控器SMMU使用方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100082991A1 (en) * 2008-09-30 2010-04-01 Hewlett-Packard Development Company, L.P. Trusted key management for virtualized platforms
CN102932459A (zh) * 2012-11-05 2013-02-13 广州杰赛科技股份有限公司 一种虚拟机的安全控制方法
CN103795717A (zh) * 2014-01-23 2014-05-14 中国科学院计算技术研究所 一种云计算平台完整性证明方法及其系统
WO2014079009A1 (zh) * 2012-11-22 2014-05-30 华为技术有限公司 虚拟机的管理控制方法及装置、系统
WO2016107394A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 虚拟机的深度证明方法、计算设备和计算机系统
CN106372499A (zh) * 2010-08-18 2017-02-01 安全第公司 用于安全保护虚拟机计算环境的系统和方法
US20180365045A1 (en) * 2015-07-03 2018-12-20 Telefonaktiebolaget Lm Ericsson (Publ) Virtual machine integrity

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100082991A1 (en) * 2008-09-30 2010-04-01 Hewlett-Packard Development Company, L.P. Trusted key management for virtualized platforms
CN106372499A (zh) * 2010-08-18 2017-02-01 安全第公司 用于安全保护虚拟机计算环境的系统和方法
CN102932459A (zh) * 2012-11-05 2013-02-13 广州杰赛科技股份有限公司 一种虚拟机的安全控制方法
WO2014079009A1 (zh) * 2012-11-22 2014-05-30 华为技术有限公司 虚拟机的管理控制方法及装置、系统
US20150256341A1 (en) * 2012-11-22 2015-09-10 Huawei Technologies Co., Ltd. Management Control Method, Apparatus, and System for Virtual Machine
CN103795717A (zh) * 2014-01-23 2014-05-14 中国科学院计算技术研究所 一种云计算平台完整性证明方法及其系统
WO2016107394A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 虚拟机的深度证明方法、计算设备和计算机系统
US20180365045A1 (en) * 2015-07-03 2018-12-20 Telefonaktiebolaget Lm Ericsson (Publ) Virtual machine integrity

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黄永生;蒋志翔;: "虚拟机的可信计算技术研究", 电子世界, no. 11, 15 June 2013 (2013-06-15) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115296938A (zh) * 2022-10-09 2022-11-04 湖南警云智慧信息科技有限公司 云计算管理系统及云计算管理方法
CN117421096A (zh) * 2023-12-19 2024-01-19 麒麟软件有限公司 基于jailhouse虚拟机监控器SMMU使用方法
CN117421096B (zh) * 2023-12-19 2024-04-05 麒麟软件有限公司 基于jailhouse虚拟机监控器SMMU使用方法

Also Published As

Publication number Publication date
CN113448681B (zh) 2024-05-03

Similar Documents

Publication Publication Date Title
US10771264B2 (en) Securing firmware
US9871821B2 (en) Securely operating a process using user-specific and device-specific security constraints
US8127146B2 (en) Transparent trust validation of an unknown platform
US9288155B2 (en) Computer system and virtual computer management method
US7937575B2 (en) Information processing system, program product, and information processing method
JP5510550B2 (ja) ハードウェアトラストアンカー
US10990428B2 (en) Virtual machine integrity
US11206141B2 (en) Merging multiple compute nodes with trusted platform modules utilizing provisioned node certificates
US20130031371A1 (en) Software Run-Time Provenance
JP5346608B2 (ja) 情報処理装置およびファイル検証システム
US9208292B2 (en) Entering a secured computing environment using multiple authenticated code modules
JP2012533128A (ja) セキュア仮想マシンを提供するためのシステムおよび方法
TWI745629B (zh) 電腦系統以及初始化電腦系統的方法
CN108595983B (zh) 一种基于硬件安全隔离执行环境的硬件架构、及应用上下文完整性度量方法
CN105426750A (zh) 一种嵌入式系统的启动方法及嵌入式装置
CN108345805B (zh) 验证固件的方法及装置
US20220382874A1 (en) Secure computation environment
US20210243030A1 (en) Systems And Methods To Cryptographically Verify An Identity Of An Information Handling System
CN112148314B (zh) 一种嵌入式系统的镜像验证方法、装置、设备及存储介质
CN113448681B (zh) 一种虚拟机监控器公钥的注册方法、设备和存储介质
CN112511306A (zh) 一种基于混合信任模型的安全运行环境构建方法
CN115329321A (zh) 一种固件的启动方法、芯片及计算设备
CN113448682A (zh) 一种虚拟机监控器加载方法、装置及电子设备
CN117610083A (zh) 文件校验方法、装置、电子设备及计算机存储介质
US12010250B2 (en) Capability enabling method and apparatus

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
GR01 Patent grant
GR01 Patent grant