发明内容
本发明要解决的技术问题在于提供一种云计算平台完整性证明方法及其系统,以克服现有技术中的验证过程的安全性和可见性问题。
为达上述目的,本发明提供了一种云计算平台完整性证明方法,其特征在于,所述方法基于混合式信任链对平台完整性进行证明,所述混合式信任链包含由云端虚拟机提供的静态信任链和远程验证方构建的动态信任链系统,所述方法包括:
静态信任链构建步骤:通过所述云端虚拟机提供的虚拟化可信平台模块构建所述静态信任链;
动态信任链系统构建与验证步骤:通过所述远程验证方构建一动态信任链系统,在可信执行环境中进行平台完整性验证,并且所述远程验证方生成一所述可信执行环境的运行证据,使虚拟机更安全地信任接收到的验证结果。
上述云计算平台完整性证明方法,其特征在于,所述静态信任链构建步骤还包括:
初始化步骤:创建并初始化一个新的虚拟化可信平台模块实例;
信任链建立和配置度量值计算步骤:建立启动过程的所述静态信任链,并通过可信平台模块的度量机制度量引导配置的可信性,计算所述引导配置的度量值,并将度量结果扩展到虚拟平台配置寄存器中;
内核镜像度量值计算步骤:通过可信平台模块的度量机制度量内核镜像的可信性,计算所述内核镜像的度量值,并将度量结果扩展到虚拟平台配置寄存器中;
加载阶段度量值计算步骤:通过可信平台模块的度量机制度量动态链接库、内核模块、用户空间可执行程序和可执行脚本各个加载阶段的可信性,计算所述各个加载阶段的度量值,并将度量结果扩展到虚拟平台配置寄存器中。
上述云计算平台完整性证明方法,其特征在于,所述动态信任链系统构建与验证步骤还包括:
远程验证请求步骤:所述云端虚拟机向所述远程验证方发送完整性证明请求,并接收所述远程验证方发送的证明挑战随机数nonce;
响应证明挑战步骤:所述云端虚拟机对收到的所述证明挑战随机数nonce进行签名和加密后,将密文发送给所述远程验证方进行平台完整性验证;
完整性验证步骤:所述远程验证方动态构建可信执行环境,并在所述可信执行环境中进行平台完整性验证;
结果分析步骤:用户收到所述远程验证方的验证结果进行解密和分析,得出所述云端虚拟机平台是否具有完整性的结论。
上述云计算平台完整性证明方法,其特征在于,所述远程验证请求步骤还包括:
完整性证明请求步骤:所述云端虚拟机向所述远程验证方发送完整性证明 请求;
证明挑战随机数步骤:所述远程验证方收到所述完整性证明请求后,生成证明挑战随机数nonce,并将所述证明挑战随机数nonce发给所述云端虚拟机。
上述云计算平台完整性证明方法,其特征在于,所述响应证明挑战步骤还包括:
签名步骤:所述云端虚拟机收到所述证明挑战随机数nonce后记录到全局静态变量nonce_a中,通过AIK私钥对虚拟平台配置寄存器中的度量值和所述证明挑战随机数nonce产生的随机数集进行签名,生成签名数据;
加密步骤:所述云端虚拟机用远程验证方的AIK公钥将所述内核镜像度量值计算步骤和所述加载阶段度量值计算步骤产生的度量值和所述签名步骤产生的所述签名数据进行加密,然后将密文发送给所述远程验证方,验证平台的完整性;
上述云计算平台完整性证明方法,其特征在于,所述完整性验证步骤还包括:
挂起当前执行环境步骤:所述远程验证方收到所述云端虚拟机发送的所述密文后,所述远程验证方保存当前执行上下文,并挂起当前的执行环境;
构建可信执行环境步骤:所述远程验证方通过特殊安全指令构建可信执行环境,建立DMA(直接存储器访问,Direct Memory Access,简称DMA)保护机制,并禁用中断和重置平台配置寄存器;
执行安全敏感代码步骤:所述远程验证方对接收到的所述密文进行解密,并对解密结果进行判断比较,得出平台完整性结论;
扩展平台配置寄存器步骤:所述远程验证方生成度量值,并将所述度量值扩展到平台配置寄存器中;
恢复执行环境步骤:将所述虚拟机平台完整性结论、所述平台配置寄存器和所述证明挑战随机数nonce进行签名和加密,并将得到的密文发送给所述云端虚拟机,恢复被挂起的所述当前执行环境。
上述云计算平台完整性证明方法,其特征在于,所述结果分析步骤还包括:
云端虚拟机解密比较步骤:所述云端虚拟机收到所述远程验证方的密文后,进行解密,并将解密后得到的所述证明挑战随机数nonce与所述全局静态变量nonce_a进行比较判断收到的密文是否可以信任;
度量值比较步骤:所述云端虚拟机将本地生成的度量值与解密后得到的所述远程验证方的平台配置寄存器进行比较,判断所述执行安全敏感代码步骤是否在可信执行环境中完成;
结论输出步骤:通过所述云端虚拟机解密比较步骤与所述度量值比较步骤中得到的判断结果,得出虚拟机平台完整性的结论,并返回给用户。
上述云计算平台完整性证明方法,其特征在于,所述执行安全敏感代码步骤还包括:
解密步骤:所述远程验证方在所述可信执行环境中利用自身的AIK私钥对收到的所述密文进行解密,得到度量值和签名数据,并通过所述云端虚拟机的AIK公钥对所述签名数据进行解密,得到所述度量值和所述证明挑战随机数nonce;
判断比较步骤:所述远程验证方将所述解密步骤得到的所述度量值与系统预留的可信程序列表进行比较,判断是否存在不可信的度量值,并得出虚拟机平台完整性的结论。
本发明还提供一种云计算平台完整性证明系统,所述系统采用如所述的云计算平台完整性证明方法,其特征在于,所述系统包括:
静态信任链构建模块:通过所述云端虚拟机提供的虚拟化可信平台模块构建所述静态信任链;
动态信任链系统构建与验证模块:通过所述远程验证方构建一动态信任链系统,在可信执行环境中进行平台完整性验证,并且所述远程验证方生成一所述可信执行环境的运行证据,使虚拟机更安全地信任接收到的验证结果。
上述云计算平台完整性证明系统,其特征在于,所述静态信任链构建模块还包括:
初始化模块:创建并初始化一个新的虚拟化可信平台模块实例;
信任链建立和配置度量值计算模块:建立启动过程的所述静态信任链,并通过可信平台模块的度量机制度量引导配置的可信性,计算所述引导配置的度量值,并将度量结果扩展到虚拟平台配置寄存器中;
内核镜像度量值计算模块:通过可信平台模块的度量机制度量内核镜像的可信性,计算所述内核镜像的度量值,并将度量结果扩展到虚拟平台配置寄存器中;
加载阶段度量值计算模块:通过可信平台模块的度量机制度量动态链接库、内核模块、用户空间可执行程序和可执行脚本各个加载阶段的可信性,计算所述各个加载阶段的度量值,并将度量结果扩展到虚拟平台配置寄存器中。
上述云计算平台完整性证明系统,其特征在于,所述动态信任链系统构建与验证模块还包括:
远程验证请求模块:所述云端虚拟机向所述远程验证方发送完整性证明请求,并接收所述远程验证方发送的证明挑战随机数nonce;
响应证明挑战模块:所述云端虚拟机对收到的所述证明挑战随机数nonce进行签名和加密后,将密文发送给所述远程验证方进行平台完整性验证;
完整性验证模块:所述远程验证方动态构建可信执行环境,并在所述可信执行环境中进行平台完整性验证;
结果分析模块:用户收到所述远程验证方的验证结果进行解密和分析,得出所述云端虚拟机平台是否具有完整性的结论。
上述云计算平台完整性证明系统,其特征在于,所述远程验证请求模块还包括:
完整性证明请求模块:所述云端虚拟机向所述远程验证方发送完整性证明请求;
证明挑战随机数模块:所述远程验证方收到所述完整性证明请求后,生成证明挑战随机数nonce,并将所述证明挑战随机数nonce发给所述云端虚拟机。
上述云计算平台完整性证明系统,其特征在于,所述响应证明挑战模块还包括:
签名模块:所述云端虚拟机收到所述证明挑战随机数nonce后记录到全局静态变量nonce_a中,通过AIK私钥对虚拟平台配置寄存器中的度量值和所述证明挑战随机数nonce产生的随机数集进行签名,生成签名数据;
加密模块:所述云端虚拟机用远程验证方的AIK公钥将所述内核镜像度量值计算模块和所述加载阶段度量值计算模块产生的度量值和所述签名模块产生的所述签名数据进行加密,然后将密文发送给所述远程验证方,验证平台的完整性;
上述云计算平台完整性证明系统,其特征在于,所述完整性验证模块还包括:
挂起当前执行环境模块:所述远程验证方收到所述云端虚拟机发送的所述密文后,所述远程验证方保存当前执行上下文,并挂起当前的执行环境;
构建可信执行环境模块:所述远程验证方通过特殊安全指令构建可信执行环境,建立DMA保护机制,并禁用中断和重置平台配置寄存器;
执行安全敏感代码模块:所述远程验证方对接收到的所述密文进行解密,并对解密结果进行判断比较,得出平台完整性结论;
扩展平台配置寄存器模块:所述远程验证方生成度量值,并将所述度量值扩展到平台配置寄存器中;
恢复执行环境模块:将所述虚拟机平台完整性结论、所述平台配置寄存器和所述证明挑战随机数nonce进行签名和加密,并将得到的密文发送给所述云端虚拟机,恢复被挂起的所述当前执行环境。
上述云计算平台完整性证明系统,其特征在于,所述结果分析模块还包括:
云端虚拟机解密比较模块:所述云端虚拟机收到所述远程验证方的密文后,进行解密,并将解密后得到的所述证明挑战随机数nonce与所述全局静态变量nonce_a进行比较判断收到的密文是否可以信任;
度量值比较模块:所述云端虚拟机将本地生成的度量值与解密后得到的所述远程验证方的平台配置寄存器进行比较,判断所述执行安全敏感代码模块是否在可信执行环境中完成;
结论输出模块:通过所述云端虚拟机解密比较模块与所述度量值比较模块中得到的判断结果,得出虚拟机平台完整性的结论,并返回给用户。
上述云计算平台完整性证明系统,其特征在于,所述执行安全敏感代码模块还包括:
解密模块:所述远程验证方在所述可信执行环境中利用自身的AIK私钥对收到的所述密文进行解密,得到度量值和签名数据,并通过所述云端虚拟机的AIK公钥对所述签名数据进行解密,得到所述度量值和所述证明挑战随机数nonce;
判断比较模块:所述远程验证方将所述解密模块得到的所述度量值与系统预留的可信程序列表进行比较,判断是否存在不可信的度量值,并得出虚拟机平台完整性的结论。
与现有技术的完整性证明系统相比,本发明的有益效果在于,可以提高验 证过程的安全性和可见性,具体有益效果如下:
安全性:即使远程验证方的操作系统、应用程序都是恶意的,利用Intel TXT技术构建的强隔离的可信的执行环境,也能够保证完整性验证过程的安全;
可见性:虚拟机能够收到由动态信任链系统生成的可信执行环境运行证据,该证据表明完整性验证过程是在相应的保护措施下进行的。也就是说,用户对远程验证方验证的代码执行过程是可见的,避免了盲目地相信来自远程验证方发送过来的验证结果。
具体实施方式
下面给出本发明的具体实施方式,结合图示对本发明做出了详细描述。
图1为本发明云计算平台完整性证明方法的步骤示意图,如图1所述,本发明提供的一种云计算平台完整性证明方法,该方法基于混合式信任链对平台完整性进行证明,混合式信任链包含由云端虚拟机提供的静态信任链和远程验证方构建的动态信任链系统,该方法包括:
静态信任链构建步骤S1:通过云端虚拟机提供的虚拟化可信平台模块构建静态信任链;
动态信任链系统构建与验证步骤S2:通过远程验证方构建一动态信任链系统,在可信执行环境中进行平台完整性验证,并且远程验证方生成可信执行环境的运行证据,使虚拟机更安全地信任接收到的验证结果。
其中,静态信任链构建步骤S1还包括:
初始化步骤S11:创建并初始化一个新的虚拟化可信平台模块实例;
信任链建立和配置度量值计算步骤S12:建立启动过程的静态信任链,并通过可信平台模块的度量机制度量引导配置的可信性,计算引导配置的度量值,并将度量结果扩展到虚拟平台配置寄存器中;
内核镜像度量值计算步骤S13:通过可信平台模块的度量机制度量内核镜像的可信性,计算内核镜像的度量值,并将度量结果扩展到虚拟平台配置寄存器中;
加载阶段度量值计算步骤S14:通过可信平台模块的度量机制度量动态链接库、内核模块、用户空间可执行程序和可执行脚本各个加载阶段的可信性,计算所述各个加载阶段的度量值,并将度量结果扩展到虚拟平台配置寄存器中。
其中,动态信任链系统构建与验证步骤S2还包括:
远程验证请求步骤S21:云端虚拟机向远程验证方发送完整性证明请求,并接收远程验证方发送的证明挑战随机数nonce;
响应证明挑战步骤S22:云端虚拟机对收到的证明挑战随机数nonce和虚拟平台配置寄存器中的度量值进行签名和加密后,将密文发送给远程验证方进行平台完整性验证;
完整性验证步骤S23:远程验证方动态构建可信执行环境,并在可信执行环境中进行平台完整性验证;
结果分析步骤S24:用户收到远程验证方的验证结果进行解密和分析,得出云端虚拟机平台是否具有完整性的结论。
图2为本发明远程验证请求步骤示意图,如图2所示,其中,远程验证请求步骤S21还包括:
完整性证明请求步骤S211:云端虚拟机向远程验证方发送完整性证明请求;
证明挑战随机数步骤S212:远程验证方收到完整性证明请求后,生成证明挑战随机数nonce,并将证明挑战随机数nonce发给云端虚拟机。
图3为本发明响应证明挑战步骤示意图,如图3所示,其中,响应证明挑战步骤S22还包括:
签名步骤S221:云端虚拟机收到证明挑战随机数nonce后记录到全局静态变量nonce_a中,通过AIK私钥对虚拟平台配置寄存器中的度量值和证明挑战随机数nonce产生的随机数集进行签名,生成签名数据;
加密步骤S222:云端虚拟机用远程验证方的AIK公钥将内核镜像度量值计算步骤和加载阶段度量值计算步骤产生的度量值和签名步骤产生的签名数据进行加密,然后将密文发送给远程验证方,验证平台的完整性;
图4为本发明完整性验证步骤示意图,如图4所示,其中,完整性验证步骤S23还包括:
挂起当前执行环境步骤S231:远程验证方收到云端虚拟机发送的密文后,远程验证方保存当前执行上下文,并挂起当前的执行环境;
构建可信执行环境步骤S232:远程验证方通过特殊安全指令构建可信执行环境,建立DMA保护机制,并禁用中断和重置平台配置寄存器;
执行安全敏感代码步骤S233:远程验证方对接收到的密文进行解密,并对解密结果进行判断比较,得出平台完整性结论;
扩展平台配置寄存器步骤S234:远程验证方生成度量值,并将度量值扩展到平台配置寄存器中;
恢复执行环境步骤S235:将虚拟机平台完整性结论、平台配置寄存器和证明挑战随机数nonce进行签名和加密,并将得到的密文发送给云端虚拟机,恢复被挂起的当前执行环境。
图5为本发明结果分析步骤示意图,如图5所示,其中,结果分析步骤S24还包括:
云端虚拟机解密比较步骤S241:云端虚拟机收到远程验证方的密文后,进行解密,并将解密后得到的证明挑战随机数nonce与全局静态变量nonce_a进行比较判断收到的密文是否可以信任;
度量值比较步骤S242:云端虚拟机将本地生成的度量值与解密后得到的远程验证方的平台配置寄存器进行比较,判断执行安全敏感代码步骤是否在可信执行环境中完成;
结论输出步骤S243:通过云端虚拟机解密比较步骤与度量值比较步骤中得到的判断结果,得出虚拟机平台完整性的结论,并返回给用户。
其中,执行安全敏感代码步骤S233还包括:
解密步骤:远程验证方在可信执行环境中利用自身的AIK私钥对收到的密文进行解密,得到度量值和签名数据,并通过云端虚拟机的AIK公钥对签名数据进行解密,得到的度量值和证明挑战随机数nonce;
判断比较步骤:远程验证方将解密步骤得到的度量值与系统预留的可信程序列表进行比较,判断是否存在不可信的度量值,并得出虚拟机平台完整性的结论。
以下结合图示说明本发明具体实施例的操作步骤。
本发明利用Intel TXT技术在远程验证方动态化地建立可信执行环境,将传统的静态信任链和新型的动态信任链进行结合,其目的在于提供一种基于混合式信任链的云计算平台完整性度量系统。该系统可以使得远程验证方安全敏感代码的执行更安全;基于该系统,云计算平台用户还可以更好地判断所属云端虚拟机的完整性。
本发明主要涉及两类实体:云端虚拟机(即部署在云平台上的需要被验证 的客户虚拟机)、远程验证方(即第三方验证系统)。
为了实现上述目的,本发明利用vTPM在云端虚拟机中提供了一个静态度量模块,负责在云端虚拟机记录自启动以来系统所有的改变,包括BIOS、Bootloader、LinuxKernel、动态库、内核模块和应用程序等实体的加载执行。在远程验证方利用Intel TXT技术构建一个动态信任链系统,创建一个可信的执行环境,将加解密、验证等安全敏感的操作置于可信执行环境中进行,避免了远程验证方因遭受攻击导致的执行结果被篡改。同时远程验证方生成一个可信执行环境的运行证据,向虚拟机表明安全敏感代码的执行是在可信环境下进行的。如此,用户便可以完全地信任收到的验证结果。
本发明所述的云计算平台完整性证明系统要求云端的虚拟机运行的是Linux操作系统,要求云计算平台在硬件上支持TPM,软件上支持vTPM。远程验证方的平台要求支持Intel TXT技术。对云端虚拟机来说,启动过程可以分为如下几个步骤:BIOS→Bootloader→OS→应用程序。TCG已经定义了将信任链传递到Bootloader的建立流程,Trusted Grub(一个可信引导系统,对Grub进行了扩展,Grub是使用最广泛的一种Bootloader)通过TPM的度量机制检查OS引导器Grub每个stage、Grub配置、OS内核镜像等的可信性,并将度量结果按照TCG规范规定存放在相应的PCR中,从而确保操作系统启动前环境的安全性。所以,事实上我们主要关心操作系统层信任链的构建,操作系统信任链需要保护影响系统完整性的各种可执行程序,比如载入到内核的内核模块、操作系统提供的各种服务以及各种应用程序。实现操作系统信任链构建的方法多重多样,本系统采用在程序加载后运行前度量的方法,即加载时度量。
之前的工作总是假设远程验证方是可信的,但是这种假设通常是不能够被满足的。本发明利用Intel TXT技术在远程验证方动态地构造一个可信的执行环境,将其中的执行与平台上的其他软件完全地隔离。这样,平台上的其他软件甚至操作系统都是恶意的,也能够通过这种强隔离的方式保证他们不会对隔离环境下代码的执行造成任何影响。而且,远程验证方可以生成一个可信执行环境的运行证据,证明相应的代码是在这种保护措施下执行的,这样就能够说服用户信任得到的验证结果。弥补了之前工作对远程验证方的脆弱假设,预防了远程验证方被攻破造成完整性状态误判的致命后果。
具体来说,本发明包括下列步骤:
图6为本发明具体实施例云端虚拟机检查验证结果正确性流程示意图,如图6所示:
步骤A:第一步为首先利用vTPM在虚拟机上构建静态信任链,具体实现方法为:
(1)当创建新的虚拟机时,利用云平台中的vTPM管理器的TPM_CreateInstance和TPM_SetupInstance指令为其创建并初始化一个新的vTPM实例。
(2)像物理TPM一样,当虚拟机启动时自动地建立从可信度量核心根(Core Rootof Trust for Measurement,简称CRTM,通常是BIOS或者BIOS上最先开始的一段代码)到Bootloader的静态信任链,并将得到的一系列度量值分别扩展到vPCR0-vPCR7(virtualPlatform Configure Register,简称vPCR)。Trusted Grub对本身代码、配置以及相关文件进行度量,并对vPCR4、vPCR5执行扩展。
(3)在Grub Stage2(Grub的最后阶段)中,使用vTPM提供的SHA-1引擎计算LinuxKernel镜像的度量值,存储到度量列表measurement_list_kernel中,并将度量值扩展到vPCR8中,然后再将控制权交给Kernel。
(4)在动态链接库、内核模块、用户空间可执行程序和可执行脚本各自的加载阶段调用vTPM的SHA-1引擎分别计算它们度量值。其中对可执行程序和动态库的度量在LSM(Linux安全模块,Linux Secure Module)提供的file_mmap安全钩子中进行;对模块的度量在load_module处理程序中进行;对可执行脚本的度量需要修改脚本解释器,使度量操作在脚本加载时进行。同时将度量值按先后顺序分别存入measurement_list_sharedlib、measurement_list_mod、measurement_list_exe和measurement_list_script中,并将度量值扩展到vPCR12-vPCR15中。
步骤B.如图6中第二步所示,当用户要在对云端虚拟机上启动安全相关的应用时,虚拟机向远程验证方发送完整性证明请求。
步骤C.如图6第三步所示,为了避免遭受重放攻击,远程验证方在收到请求后利用TPM硬件生成一个证明挑战随机数nonce,然后将nonce发送给虚拟机。
步骤D.如图6第四步,云端虚拟机响应证明挑战,其实现方法为:
(1)当云端的虚拟机收到证明挑战随机数nonce后,首先记录收到的随机数到全局静态变量nonce_a中,然后加载AIK密钥,并用AIK的私钥对vPCRs和随机数nonce的数据集进行签名。
(2)云端虚拟机将在A3以及A4得到的度量值measurement_list_kernel、measurement_list_sharedlib、measurement_list_mod、measurement_list_exe、measurement_list_script和D1得到的签名一起通过验证方的AIK公钥进行加密,然后将密文发送给远程验证方,要求验证方对其平台的完整性进行证明;
步骤E.如图6第五步所示,远程验证方利用Intel TXT动态化地构建一个可信的执行环境,并在该环境中执行对虚拟机平台的完整性验证,图7为本发明实施例构建可信执行环境方法流程示意图,其实现方法如图7所示:
步骤E1,远程验证方在收到从虚拟机发送过来的消息后,远程验证方保存当前执行上下文,并挂起当前的执行环境。
步骤E2,利用Intel TXT技术提供的特殊安全指令SENTER,建立DMA保护机制,防止外设对隔离环境的DMA攻击;禁用中断,防止原先操作系统重新控制当前环境;并重置PCR;
步骤E3,远程验证方在E2得到的隔离的内存区域内利用自己的AIK私钥对收到的密文进行解密,得到度量值measurement_list_kernel、measurement_list_sharedlib、measurement_list_mod、measurement_list_exe、measurement_list_script和签名数据;然后,利用虚拟机的AIK的公钥部分对签名数据进行解密,得到vPCRs和随机数nonce;
步骤E4,远程验证方在隔离环境中将解密得到的measurement_list_kernel、measurement_list_sharedlib、measurement_list_mod、measurement_list_exe、measurement_list_script与系统预留的可信程序列表trusted_kernel、trusted_sharedlib、trusted_mod、trusted_exe、trusted_script进行比较,判断收到的度量值中是否存在不可信的度量值,如果是则说明虚拟机的平台不具有高完整性integrity_result=0,并记录不可信度量值。否则,虚拟机平台具有高完整性integrity_result=1;
步骤E5,远程验证方清理E2初始化的内存区域的残留数据,并将二进制可执行的加解密和验证的代码、输入数据、输出结果传输到TPM中进行SHA-1 运算,生成度量值,并将度量值扩展到PCR23中;
步骤E6,远程验证方将E5得到的完整性验证结果、E6得到的PCR23与随机数nonce中组合,并通过类似步骤D1和D2的方法对数据集进行签名、加密;
步骤E7,远程验证方恢复E1挂起的执行环境。然后,将E7得到的密文发送给用户;
步骤F.如图6第七步所示,云端虚拟机对收到的验证结果进行解密、分析,得出当前云端虚拟机平台是否具有高完整性的结论,并将可信结果反馈给用户。图8为本发明云端虚拟机验证结果步骤示意图,其实现方法如图8所示:
步骤F1,云端虚拟机收到从远程验证方发送过来的消息后,对其进行解密;
步骤F2,将解密后得到的随机数nonce与B2存放在全局静态变量nonce_a中的随机数进行比较。若一致则说明收到的包是最新的验证结果,继续下一步判断。否则,说明系统遭到重放攻击,暂时不能信任收到的验证结果,需要重新做完整性证明。
步骤F3,云端虚拟机计算安全敏感代码、发送给远程验证方的数据、以及收到的验证结果的SHA-1值,并用扩展的方式最终得到一个20字节的度量值txt_measurement,将其与收到的PCR23做比较。如果一致则说明相应的代码是在动态信任链系统的保护下执行的,继续下一步判断。否则,说明相应的代码没有在该保护措施下进行,原因可能是远程验证方被攻破,直接终止该应用的启动。
步骤F4,若上面的判断都通过,则说明本次收到的验证结果是最新的并且是在动态信任连系统的保护下得到的验证结果,说明此验证结果可以信任。若integrity_result=1,说明此应用可信,则正常启动该应用。若integrity_result=0,则将不可信的度量值返回给用户,并终止该应用的启动。
本发明还提供一种云计算平台完整性证明系统,图9为本发明云计算平台完整性证明系统结构示意图,如图9所示,该系统包括:
静态信任链构建模块1:通过云端虚拟机提供的虚拟化可信平台模块构建静态信任链;
动态信任链系统构建与验证模块2:通过远程验证方构建一动态信任链系 统,在可信执行环境中进行平台完整性验证,并且远程验证方生成一可信执行环境的运行证据,使虚拟机更安全地信任接收到的验证结果。
其中,静态信任链构建模块1还包括:
初始化模块11:创建并初始化一个新的虚拟化可信平台模块实例;
信任链建立和配置度量值计算模块12:建立启动过程的静态信任链,并通过可信平台模块的度量机制度量引导配置的可信性,计算引导配置的度量值,并将度量结果扩展到虚拟平台配置寄存器中;
内核镜像度量值计算模块13:通过可信平台模块的度量机制度量内核镜像的可信性,计算内核镜像的度量值,并将度量结果扩展到虚拟平台配置寄存器中;
加载阶段度量值计算模块14:通过可信平台模块的度量机制度量动态链接库、内核模块、用户空间可执行程序和可执行脚本各个加载阶段的可信性,计算各个加载阶段的度量值,并将度量结果扩展到虚拟平台配置寄存器中。
其中,动态信任链系统构建与验证模块2还包括:
远程验证请求模块21:云端虚拟机向远程验证方发送完整性证明请求,并接收远程验证方发送的证明挑战随机数nonce;
响应证明挑战模块22:云端虚拟机对收到的证明挑战随机数nonce和虚拟平台配置寄存器中的度量值进行签名和加密后,将密文发送给远程验证方进行平台完整性验证;
完整性验证模块23:远程验证方动态构建可信执行环境,并在可信执行环境中进行平台完整性验证;
结果分析模块24:用户收到远程验证方的验证结果进行解密和分析,得出云端虚拟机平台是否具有完整性的结论。
图10为本发明远程验证请求模块结构示意图,如图10所示,其中,远程验证请求模块21还包括:
完整性证明请求模块211:云端虚拟机向远程验证方发送完整性证明请求;
证明挑战随机数模块212:远程验证方收到完整性证明请求后,生成证明挑战随机数nonce,并将证明挑战随机数nonce发给云端虚拟机。
图11为本发明响应证明挑战模块结构示意图,如图11所示,其中,响应 证明挑战模块22还包括:
签名模块221:云端虚拟机收到证明挑战随机数nonce后记录到全局静态变量nonce_a中,通过AIK私钥对虚拟平台配置寄存器中的度量值和证明挑战随机数nonce产生的随机数集进行签名,生成签名数据;
加密模块222:云端虚拟机用远程验证方的AIK公钥将内核镜像度量值计算模块和加载阶段度量值计算模块产生的度量值和签名步骤产生的签名数据进行加密,然后将密文发送给远程验证方,验证平台的完整性;
图12为本发明完整性验证模块结构示意图,如图12所示,其中,完整性验证模块23还包括:
挂起当前执行环境模块231:远程验证方收到云端虚拟机发送的密文后,远程验证方保存当前执行上下文,并挂起当前的执行环境;
构建可信执行环境模块232:远程验证方通过特殊安全指令构建可信执行环境,建立DMA保护机制,并禁用中断和重置平台配置寄存器;
执行安全敏感代码模块233:远程验证方对接收到的密文进行解密,并对解密结果进行判断比较,得出平台完整性结论;
扩展平台配置寄存器模块234:远程验证方生成度量值,并将度量值扩展到平台配置寄存器中;
恢复执行环境模块235:将虚拟机平台完整性结论、平台配置寄存器和证明挑战随机数nonce进行签名和加密,并将得到的密文发送给云端虚拟机,恢复被挂起的当前执行环境。
图13为本发明结果分析模块结构示意图,如图13所示,其中,结果分析模块24还包括:
云端虚拟机解密比较模块241:云端虚拟机收到远程验证方的密文后,进行解密,并将解密后得到的证明挑战随机数nonce与全局静态变量nonce_a进行比较判断收到的密文是否可以信任;
度量值比较模块242:云端虚拟机将本地生成的度量值与解密后得到的远程验证方的平台配置寄存器进行比较,判断执行安全敏感代码模块是否在可信执行环境中完成;
结论输出模块243:通过云端虚拟机解密比较模块与度量值比较模块中得到的判断结果,得出虚拟机平台完整性的结论,并返回给用户。
其中,执行安全敏感代码模块233还包括:
解密模块:远程验证方在可信执行环境中利用自身的AIK私钥对收到的密文进行解密,得到度量值和签名数据,并通过云端虚拟机的AIK公钥对签名数据进行解密,得到度量值和证明挑战随机数nonce;
判断比较模块:远程验证方将解密模块得到的所述度量值与系统预留的可信程序列表进行比较,判断是否存在不可信的度量值,并得出虚拟机平台完整性的结论。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。