全虚拟化环境下启动加载器的可信验证方法和系统的制作方法

文档序号:6370068阅读:143来源:国知局
专利名称:全虚拟化环境下启动加载器的可信验证方法和系统的制作方法
技术领域
本发明涉及可信验证,具体涉及一种在全虚拟化环境下基于BIOS中断调用实现可信验证的方法,属于可信计算领域。
背景技术
全虚拟化(Full Virtualization),也称为原始虚拟化技术,该技术使用虚拟机协调客户操作系统和原始硬件,一些受保护的指令由虚拟机管理程序(Hypervisor)来捕获和处理。全虚拟化的运行速度优于硬件模拟,最大特点是客户操作系统无需经过任何修改,所以原来基于客户操作系统的所有软件都能不加修改在全虚拟化环境下运行。基于这种优点,把可信验证技术融入到全虚拟化环境下,是解决全虚拟化环境下软件运行安全性、完整性、可信性的关键手段。使用“全虚拟化环境and可信验证”、“BIOS中断调用and可信验证”、“启动加载器验证方法”作为关键词进行专利检索,没有找到使用BIOS中断的方式进 行可信验证方面的专利,更没有找到在全虚拟化环境下使用BIOS中断方式进行启动加载器可信验证的专利。在全虚拟化环境下,首先,虚拟机的启动也要通过启动加载器加载客户操作系统,然而启动加载器本身的完整性如何验证亟待解决;其次,启动加载器本身代码非常精巧,例如,一种称为GRUB的启动加载器其Stagel和Start功能代码编译后只有512字节,在这样精巧设计的代码中进行完整性验证更加困难。虚拟化技术作为云计算的技术支撑基石,解决好全虚拟化环境下虚拟机启动加载器的可信验证问题,对于当前的可信云安全技术也具有非常重要的意义。

发明内容
本发明公开一种全虚拟化环境下启动加载器的可信验证方法,包括步骤I,部署生成可信基准值链表Encrypted_Link_Trusted ;步骤2,启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置;步骤3,非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stagel,其中Stagel为GRUB启动的阶段;步骤4,非特权域虚拟机的GRUB的Stagel验证非特权域虚拟机的GRUB的Start ;步骤5,非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage 1_5 ;其中Start为GRUB启动的阶段;步骤6,非特权域虚拟机的GRUB的Stage 1_5验证非特权域虚拟机的GRUB的Stage2,其中 Stagel_5、Stage2 为 GRUB 启动的阶段。所述的全虚拟化环境下启动加载器的可信验证方法,所述步骤I还包括步骤21,修改Xen的Rombios的功能代码,增加GRUB的Stagel、GRUB的Start、GRUB的Stage 1_5对BIOS的请求验证的中断响应函数;
步骤22,修改GRUB的Stagel功能代码,加入用BIOS中断的方式请求验证GRUB的Start的功能代码,并检查修改后的GRUB的Stagel代码是否满足编译后正好是512字节且安装在主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是与没有修改过的GRUB的Stagel生成的二进制代码进行比较;步骤23,修改GRUB的Start功能代码,加入用BIOS中断的方式请求验证GRUB的Stage 1_5的功能代码,并检查修改后的Start代码是否满足编译后正好是512字节且安装后位于0面0道的第2扇区,检查的方法是与没有修改过GRUB的Start生成的二进制代码进行比较;步骤24,修改GRUB的Stagel_5功能代码,加入用BIOS中断的方式请求验证GRUB的Stage2的功能代码,由于Stagel_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stagel_5生成的二进制代码不需要与没有修改过的GRUB的Stage 1_5生成的二进制代码相比较;
步骤25,计算出修改后的GRUB的Stage I、Start、Stage 1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将 Link_Trusted 用 RSA 算法加密生成 Encrypted_Link_Trusted。所述的全虚拟化环境下启动加载器的可信验证方法,所述步骤2还包括步骤31,特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中;步骤32,使用扫描虚拟机内存的方式找到预设空间标识的内存地址Mem_Address,然后将 Encrypted_Link_Trusted 拷贝到 Mem_Address。所述的全虚拟化环境下启动加载器的可信验证方法,所述步骤3还包括 步骤41,在非特权域的Rombios跳转到GRUB的Stagel之前,计算GRUB的Stagel 的二进制度量值,同时,解密 Encrypted_Link_Trusted 得到链表 Decrypted_Link_Trusted,然后,查找Decrypted_Link_Trusted第一个链表元素可获得GRUB的Stagel的可信验证基准值;步骤42,验证步骤41得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_eXtend)到相应的平台配置寄存器PCR中,并继续正常的非特权Domain启动的下一阶段,否则,阻止继续启动。所述的全虚拟化环境下启动加载器的可信验证方法,所述步骤4还包括步骤51,GRUB的Stagel运行到把内存0x7000开始的512字节转移到内存0x8000之后,使用BIOS中断请求的方式验证GRUB的Start,这个Start是从0面0道第2扇区的内容读到内存的0x7000处的。然后,在非特权域虚拟机的Rombios中找到这512字节的Start功能代码,计算出其二进制度量值。步骤52,查找链表Decrypted_Link_Trusted第二个链表元素即可获得GRUB的Start的可信验证基准值,验证这个基准值和步骤51得到的GRUB的Start的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。所述的全虚拟化环境下启动加载器的可信验证方法,所述步骤5还包括步骤61,GRUB的Start运行到装载Stagel_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stagel_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stagel5_sectors,计算出GRUB的Stagel_5的功能代码的二进制度量值;步骤62,查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stage 1_5的可信验证基准值,验证这个基准值和步骤61得到的GRUB的Stagel_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。所述的全虚拟化环境下启动加载器的可信验证方法,所述步骤6还包括步骤71,GRUB的Stagel_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值; 步骤72,GRUB的Stage 1_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,然后,验证这个二进制度量值和步骤71得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。本发明公开一种全虚拟化环境下启动加载器的可信验证系统,包括生成可信基准值链表模块,用于部署生成可信基准值链表EnCrypted_Link_Trusted ;启动非特权域虚拟机模块,用于启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置;Rombios验证非特权虚拟机模块,用于非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stagel ;Stagel验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Stagel验证非特权域虚拟机的GRUB的Start ;Start验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage 1_5 ;Stage 1_5验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Stagel_5验证非特权域虚拟机的GRUB的Stage2。所述的全虚拟化环境下启动加载器的可信验证系统,所述生成可信基准值链表模块还包括增加函数模块,用于修改Xen的Rombios的功能代码,增加GRUB的Stagel、GRUB的Start、GRUB的Stagel_5对BIOS的请求验证的中断响应函数;检查Stagel模块,用于修改GRUB的Stagel功能代码,加入用BIOS中断的方式请求验证GRUB的Start的功能代码,并检查修改后的GRUB的Stagel代码是否满足编译后正好是512字节且安装在主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是与没有修改过的GRUB的Stagel生成的二进制代码进行比较;检查Start模块,用于修改GRUB的Start功能代码,加入用BIOS中断的方式请求验证GRUB的Stagel_5的功能代码,并检查修改后的Start代码是否满足编译后正好是512字节且安装后位于0面0道的第2扇区,检查的方法是与没有修改过GRUB的Start生成的二进制代码进行比较;验证Stage2模块,用于修改GRUB的Stagel_5功能代码,加入用BIOS中断的方式请求验证GRUB的Stage2的功能代码,由于Stagel_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stagel_5生成的二进制代码不需要与没有修改过的GRUB的Stagel_5生成的二进制代码相比较;计算模块,用于计算出修改后的GRUB的Stage I、Start、Stage 1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将 Link_Trusted 用 RSA 算法加密生成 Encrypted_Link_Trusted。所述的全虚拟化环境下启动加载器的可信验证系统,所述启动非特权虚拟机模块还包括特权域解析模块,用于特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中;找寻内存地址模块,用于使用扫描虚拟机内存的方式找到预设空间标识的内存地址 Mem_Address,然后将 Encrypted_Link_Trusted 拷贝到 Mem_Address。所述的全虚拟化环境下启动加载器的可信验证系统,所述Rombios验证非特权虚拟机模块还包括计算Stage模块,用于在非特权域的Rombios跳转到GRUB的Stagel之前,计算GRUB的Stagel的二进制度量值,同时,解密Encrypted_Link_Trusted得到链表Decrypted_Link_Trusted,然后,查找 Decrypted_Link_Trusted 第一个链表兀素可获得GRUB的Stagel的可信验证基准值;扩展模块,用于验证计算Stage模块得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_eXtend)到相应的平台配置寄存器PCR中,并继续正常的非特权Domain启动的下一阶段,否则,阻止继续启动。所述的全虚拟化环境下启动加载器的可信验证系统,所述Stagel验证非特权域虚拟机模块还包括中断请求模块,用于GRUB的Stagel运行到把内存0x7000开始的512字节转移到内存0x8000之后,使用BIOS中断请求的方式验证GRUB的Start,这个Start是从0面0道第2扇区的内容读到内存的0x7000处的。然后,在非特权域虚拟机的Rombios中找到这512字节的Start功能代码,计算出其二进制度量值。验证Start模块,用于查找链表Decrypted_Link_Trusted第二个链表元素即可获得GRUB的Start的可信验证基准值,验证这个基准值和中断请求模块得到的GRUB的Start的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。所述的全虚拟化环境下启动加载器的可信验证系统,所述Start验证非特权域虚拟机模块还包括中断验证模块,用于GRUB的Start运行到装载Stage 1_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stagel_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stagel5_sectors,计算出GRUB的Stagel_5的功能代码的二进制度量值;
验证一致模块,用于查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stagel_5的可信验证基准值,验证这个基准值和中断验证模块得到的GRUB的Stage 1_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。所述的全虚拟化环境下启动加载器的可信验证系统,所述Stagel_5验证非特权域虚拟机模块还包括获得验证基准值模块,用于GRUB的Stagel_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值;验证基准值一致模块,用于GRUB的Stage 1_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,然后,验证这个二进制度 量值和获得验证基准值模块得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。本发明的有益效果为本发明的优点是提供一种适合在全虚拟化环境下进行启动加载器的验证方法,这种方法很好的解决了空间受限的代码条件下进行可信验证的问题,非常适合在当前云计算环境中虚拟机启动加载器的可信验证,具有良好的市场前景和应用价值。


图I为本发明全虚拟化环境下启动加载器的可信验证方法;图2为未修改的GRUB Stagel的二进制影像;图3为经过修改的GRUB Stagel的二进制影像;图4为未修改的GRUB Start的二进制影像;图5为经过修改的GRUB Start的二进制影像;图6为可信验证基准值计算结果;图7本发明全虚拟化环境下启动加载器的可信验证系统。
具体实施例方式下面给出本发明的具体实施方式
,结合附图对本发明做出了详细描述。为了解决上述的技术问题,提供了一种在全虚拟化环境下基于本地BIOS中断调用实现的对虚拟机启动加载器进行可信验证的方法。所述启动加载器为GRUB,所述全虚拟化环境为Xen支持的全虚拟化环境。全虚拟化环境下启动加载器GRUB各功能阶段代码受字节个数限制,即GRUB的Stagel、GRUB的Start编译后只有512字节,使用MBR的方式安装GRUB后,Stagel安装在0面0道的第I扇区,这个扇区又称为主引导扇区,这个扇区在所有的系统分区之前不属于任何分区,其由主引导记录(大小为446个字节)、磁盘分区表(大小为64个字节)、引导记录标识(大小为2个字节)。Start安装在0面0道第2扇区,GRUB的Stagel_5安装在O面O道第3扇区开始的扇区里,其占据扇区的大小与具体的Stagel_5文件大小有关。使用BIOS中断调用的方法实现本地验证好处是只将BIOS中断请求部分置于上述字节个数受限的代码中,具体的验证工作交由虚拟BIOS实现的中断响应函数完成,虚拟BIOS本身的实现是在Xen代码中完成的,其不受字节个数多少的限制,有效的解决了 GRUB功能代码字节个数限制的瓶颈。具体来说,本发明针对在全虚拟化环境下基于本地BIOS中断调用实现的虚拟机启动加载器GRUB可信验证方法包括下列步骤A.部署生成可信基准值链表Encrypted_Link_Trusted,其具体实现方法为Al.修改 Xen 的 Rombios 的功能代码,增加 GRUB 的 Stagel、GRUB 的 Start、GRUB的Stage 1_5对BIOS的请求验证的中断响应函数; A2.修改GRUB的Stagel功能代码,加入用BIOS中断的方式请求验证GRUB的Start的功能代码,并检查修改后的GRUB的Stagel代码是否满足编译后正好是512字节且安装在主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是与没有修改过的GRUB的Stagel生成的二进制代码进行比较;A3.修改GRUB的Star t功能代码,加入用BI OS中断的方式请求验证GRUB的Stage 1_5的功能代码,并检查修改后的Start代码是否满足编译后正好是512字节且安装后位于0面0道的第2扇区,检查的方法是与没有修改过GRUB的Start生成的二进制代码进行比较;A4.修改GRUB的Stagel_5功能代码,加入用BIOS中断的方式请求验证GRUB的Stage2的功能代码,由于Stagel_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stagel_5生成的二进制代码不需要与没有修改过的GRUB的Stage 1_5生成的二进制代码相比较;A5.计算出修改后的GRUB的Stagel、Start、Stage 1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将 Link_Trusted 用 RSA 算法加密生成 Encrypted_Link_Trusted。B.启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置。其具体实现方法为BI.特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中; B2.使用扫描虚拟机内存的方式找到预设空间标识的内存地址Mem_Address,然后将 Encrypted_Link_Trusted 拷贝到 Mem_Address。C.非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stagel,其具体实现方法为Cl.在非特权域的Rombios跳转到GRUB的Stagel之前,计算GRUB的Stagel的二进制度量值,同时,解密 Encrypted_Link_Trusted 得到链表 Decrypted_Link_Trusted,然后,查找Decrypted_Link_Trusted第一个链表元素可获得GRUB的Stagel的可信验证基准值。C2.验证Cl得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_extend)到相应的平台配置寄存器PCR(Platform ConfigurationRegister)中,并继续正常的非特权Domain启动的下一阶段,否则,阻止继续启动;
D.非特权域虚拟机的GRUB的Stagel验证非特权域虚拟机的GRUB的Start,其具体实现方法为Dl. GRUB的Stagel运行到把内存0x7000开始的512字节转移到内存0x8000之后,使用BIOS中断请求的方式验证GRUB的Start,这个Start是从0面0道第2扇区的内容读到内存的0x7000处的。然后,在非特权域虚拟机的Rombios中找到这512字节的Start功能代码,计算出其二进制度量值。D2.查找链表Decrypted_Link_Trusted第二个链表元素即可获得GRUB的Start的可信验证基准值,验证这个基准值和Dl得到的GRUB的Start的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的非特权域虚拟机启动的下一阶段,否则,阻止继续启动;E.非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stagel_5,其 具体实现方法为El. GRUB的Start运行到装载Stagel_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stagel_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stagel5_sectors (该参数表示GRUB的Stagel_5实际完成安装后占用的扇区数),计算出GRUB的Stagel_5的功能代码的
二进制度量值。E2.查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stage 1_5的可信验证基准值,验证这个基准值和El得到的GRUB的Stagel_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动;F.非特权域虚拟机的GRUB的Stagel_5验证非特权域虚拟机的GRUB的Stage2,其具体实现方法为Fl. GRUB的Stagel_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值。F2. GRUB的Stage 1_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,然后,验证这个二进制度量值和Fl得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。本发明的优点是提供一种适合在全虚拟化环境下进行启动加载器的验证方法,这种方法很好的解决了空间受限的代码条件下进行可信验证的问题,非常适合在当前云计算环境中虚拟机启动加载器的可信验证,具有良好的市场前景和应用价值。下面结合附图,通过一套具体的基于BIOS中断调用实现对非特权域虚拟机启动加载器进行可信验证的实例进一步描述本发明。实现对非特权域虚拟机启动加载器进行可信验证的方法流程如图I所示,本发明的方法包括A.部署生成可信基准值链表Encrypted_Link_Trusted ;B.启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置;非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stagel ;非特权域虚拟机的GRUB的Stagel验证非特权域虚拟机的GRUB的Start ;非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage 1_5 ;非特权域虚拟机的GRUB的Stage 1_5验证非特权域虚拟机的GRUB的Stage2。具体一种实施方式如下A.部署生成可信基准值链表Encrypted_Link_Trusted,其具体实现方法为Al.在Xen的Rombios的功能代码中,增加GRUB的Stagel请求验证的中断响应函数funl_response_Stagel ;增加GRUB的Start请求验证的中断响应函数fun2_response_Start ;±曾加GRUB的Stagel_5请求验证的中断响应函数fun3_response_Stagel_5。A2.在GRUB的Stage I功能代码中,增加BIOS中断请求的代码,使用BIOS的int Oxla,子功能号使用bbfl,其作用是请求BIOS验证GRUB的Start,由funl_response_Stagel响应该请求。之后,检查修改后的GRUB的Stagel代码是否满足编译后正好是512字节且安装在硬盘主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是分别 用Linux的dd命令得到图2和图3两种二进制影像,图中阴影部分表示了它们的不同之处,由已有的常识有从地址0X00001BE到地址0X00001FD是磁盘的分区表,地址0X00001FE到地址0X00001FF中存储的是引导记录标识。观察图2,能够确认从地址0X00001BE到地址0X0000IFF中存储的内容和图I完全相同,所以这种方法证明了这种修改确实没有破环磁盘分区表的大小和结构A3.在GRUB的Start功能代码中,增加BIOS中断请求的代码,使用BIOS的intOxla,子功能号使用bbf2,其作用是请求BIOS验证GRUB的Stagel_5,由fun2_response_Start响应该请求。之后,检查修改后的GRUB的Start代码是否满足编译后正好是512字节且安装后位于硬盘的0面0道的第2扇区,检查的方法之后,检查的方法参照步骤A2。附图中,图4的第一个字节、最后一个字节与图5的的第一个字节、最后一个字节都一样,可以确认经过修改的GRUB的Start满足要求。A4.在GRUB的Stage 1_5功能代码中,增加BIOS中断请求的代码,使用BIOS的int Oxla,子功能号使用bbf3,其作用是请求BIOS验证GRUB的GRUB的Stage2,由fun3_response_Stagel_5响应该请求。由于Stagel_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stagel_5生成的二进制代码不需要与没有修改过的GRUB的Stage 1_5生成的二进制代码相比较。A5.计算出修改后的GRUB的Stagel、Start、Stage 1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将 Link_Trusted 用 RSA 算法加密生成 Encrypted_Link_Trusted。计算可信验证基准值的方法是使用SHA (Secure Hash Algorithm)算法,该算法的输出即是需要的可信验证基准值,该算法的输入参数是GRUB的Stagel、Start、Stage 1_5,Stage2在磁盘上实际占用的扇区数。图6是一种这四个验证基准值计算结果的实例,将这四个可信验证基准值组成一个链表并用RSA算法加密都是公开的技术且非常简单,不再赘述。B.启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置。其具体实现方法为BI.特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中;
B2.使用扫描虚拟机内存的方式找到预设空间标识的内存地址Mem_Address,然后将 Encrypted_Link_Trusted 拷贝到 Mem_Address。其中扫描虚拟机内存找到预设空间标识的内存地址方法可以参照C库提供的函数memcmp的实现方法。C.非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stagel,其具体实现方法为Cl.在非特权域的Rombios跳转到GRUB的Stagel之前,计算GRUB的Stagel的二进制度量值,计算的方法是使用BIOS中断的方式调用TPM(Trusted Platform Module)的SHA引擎,其应用了 BIOS的int Oxla中断,子功能号为bb05。解密Encrypted_Link_Trusted 得到链表 Decrypted_Link_Trusted 以及查找 Decrypted_Link_Trusted 第一个 链表元素获得GRUB的Stagel的可信验证基准值的方法都是公开的技术且非常简单,不再赘述。C2.验证Cl得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_extend)到TPM的相应的平台配置寄存器PCR(PlatformConfiguration Register)中,扩展的方法是利用BIOS中断的方式,使用的是BIOS的intOxla中断,子功能号为bb02。然后,继续正常的非特权域启动的下一阶段,否则,阻止继续启动。D.非特权域虚拟机的GRUB的Stagel验证非特权域虚拟机的GRUB的Start,其具体实现方法为Dl. GRUB的Stagel运行到把内存0x7000开始的512字节转移到内存0x8000之后,使用BIOS中断请求的方式验证GRUB的Start,这个Start是从0面0道第2扇区的内容读到内存的0x7000处的。然后,在非特权域虚拟机的Rombios中找到这512字节的Start功能代码,计算出其二进制度量值。其中,中断请求应用了 int Oxla中断,子功能号为bbfl, BIOS验证请求的时刻非常关键,必须是保证GRUB的Start加载到内存后,否则,在非特权域虚拟机的Rombios无法通过查找内存的方式找到这512字节,也无法计算其二进制度量值;二进制度量值的计算方法同Cl。D2.查找链表Decrypted_Link_Trusted第二个链表元素即可获得GRUB的Start的可信验证基准值,验证这个基准值和Dl得到的GRUB的Start的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。二进制度量值的扩展方法同C2。E.非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stagel_5,其具体实现方法为El. GRUB的Start运行到装载Stagel_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stagel_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stagel5_sectors (该参数表示GRUB的Stagel_5实际完成安装后占用的扇区数),计算出GRUB的Stagel_5的功能代码的
二进制度量值。其中,中断请求应用了 int Oxla中断,子功能号为bbf2, BIOS验证请求的时刻也非常关键,二进制度量值的计算方法同Cl。E2.查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stage 1_5的可信验证基准值,验证这个基准值和El得到的GRUB的Stagel_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。二进制度量值的扩展方法同C2。F.非特权域虚拟机的GRUB的Stagel_5验证非特权域虚拟机的GRUB的Stage2,其具体实现方法为Fl. GRUB的Stagel_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值,并把这个可信验证基准值传送回GRUB的Stagel_5。
其中,中断请求应用了 int Oxla中断,子功能号为bbf3, BIOS验证请求的时刻也非常关键。F2. GRUB的Stagel_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,计算的方法同Cl。然后,验证这个二进制度量值和Fl得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。二进制度量值的扩展方法同C2。如图7所示,本发明公开一种全虚拟化环境下启动加载器的可信验证系统,包括生成可信基准值链表模块,用于部署生成可信基准值链表EnCrypted_Link_Trusted ;启动非特权域虚拟机模块,用于启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置;Rombios验证非特权虚拟机模块,用于非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stagel ;Stagel验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Stagel验证非特权域虚拟机的GRUB的Start ;Start验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage 1_5 ;Stage 1_5验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Stagel_5验证非特权域虚拟机的GRUB的Stage2。所述的全虚拟化环境下启动加载器的可信验证系统,所述生成可信基准值链表模块还包括增加函数模块,用于修改Xen的Rombios的功能代码,增加GRUB的Stagel、GRUB的Start、GRUB的Stagel_5对BIOS的请求验证的中断响应函数;检查Stagel模块,用于修改GRUB的Stagel功能代码,加入用BIOS中断的方式请求验证GRUB的Start的功能代码,并检查修改后的GRUB的Stagel代码是否满足编译后正好是512字节且安装在主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是与没有修改过的GRUB的Stagel生成的二进制代码进行比较;
检查Start模块,用于修改GRUB的Start功能代码,加入用BIOS中断的方式请求验证GRUB的Stagel_5的功能代码,并检查修改后的Start代码是否满足编译后正好是512字节且安装后位于0面0道的第2扇区,检查的方法是与没有修改过GRUB的Start生成的二进制代码进行比较;验证Stage2模块,用于修改GRUB的Stagel_5功能代码,加入用BIOS中断的方式请求验证GRUB的Stage2的功能代码,由于Stagel_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stagel_5生成的二进制代码不需要与没有修改过的GRUB的Stagel_5生成的二进制代码相比较;计算模块,用于计算出修改后的GRUB的Stage I、Start、Stage 1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将 Link_Trusted 用 RSA 算法加密生成 Encrypted_Link_Trusted。所述的全虚拟化环境下启动加载器的可信验证系统,所述启动非特权虚拟机模块 还包括特权域解析模块,用于特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中;找寻内存地址模块,用于使用扫描虚拟机内存的方式找到预设空间标识的内存地址 Mem_Address,然后将 Encrypted_Link_Trusted 拷贝到 Mem_Address。所述的全虚拟化环境下启动加载器的可信验证系统,所述Rombios验证非特权虚拟机模块还包括计算Stage模块,用于在非特权域的Rombios跳转到GRUB的Stagel之前,计算GRUB的Stagel的二进制度量值,同时,解密Encrypted_Link_Trusted得到链表Decrypted_Link_Trusted,然后,查找 Decrypted_Link_Trusted 第一个链表兀素可获得GRUB的Stagel的可信验证基准值;扩展模块,用于验证计算Stage模块得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_eXtend)到相应的平台配置寄存器PCR中,并继续正常的非特权Domain启动的下一阶段,否则,阻止继续启动。所述的全虚拟化环境下启动加载器的可信验证系统,所述Stagel验证非特权域虚拟机模块还包括中断请求模块,用于GRUB的Stagel运行到把内存0x7000开始的512字节转移到内存0x8000之后,使用BIOS中断请求的方式验证GRUB的Start,这个Start是从0面0道第2扇区的内容读到内存的0x7000处的。然后,在非特权域虚拟机的Rombios中找到这512字节的Start功能代码,计算出其二进制度量值。验证Start模块,用于查找链表Decrypted_Link_Trusted第二个链表元素即可获得GRUB的Start的可信验证基准值,验证这个基准值和中断请求模块得到的GRUB的Start的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。所述的全虚拟化环境下启动加载器的可信验证系统,所述Start验证非特权域虚拟机模块还包括中断验证模块,用于GRUB的Start运行到装载Stage 1_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stagel_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stagel5_sectors,计算出GRUB的Stagel_5的功能代码的二进制度量值;验证一致模块,用于查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stagel_5的可信验证基准值,验证这个基准值和中断验证模块得到的GRUB的Stage 1_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。所述的全虚拟化环境下启动加载器的可信验证系统,所述Stagel_5验证非特权域虚拟机模块还包括获得验证基准值模块,用于GRUB的Stagel_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素 得到GRUB的Stage2的可信验证基准值;验证基准值一致模块,用于GRUB的Stage 1_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,然后,验证这个二进制度量值和获得验证基准值模块得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1.一种全虚拟化环境下启动加载器的可信验证方法,其特征在于,包括 步骤1,部署生成可信基准值链表Encrypted_Link_Trusted ; 步骤2,启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置; 步骤3,非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stagel,其中Stagel为GRUB启动的阶段; 步骤4,非特权域虚拟机的GRUB的Stagel验证非特权域虚拟机的GRUB的Start ;步骤5,非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage 1_5 ;其中Start为GRUB启动的阶段; 步骤6,非特权域虚拟机的GRUB的Stagel_5验证非特权域虚拟机的GRUB的Stage2,其中Stage 1_5、Stage2为GRUB启动的阶段。
2.如权利要求I所述的全虚拟化环境下启动加载器的可信验证方法,其特征在于,所述步骤I还包括 步骤21,修改Xen的Rombios的功能代码,增加GRUB的Stagel、GRUB的Start、GRUB的Stage 1_5对BIOS的请求验证的中断响应函数; 步骤22,修改GRUB的Stagel功能代码,加入用BIOS中断的方式请求验证GRUB的Start的功能代码,并检查修改后的GRUB的Stagel代码是否满足编译后正好是512字节且安装在主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是与没有修改过的GRUB的Stagel生成的二进制代码进行比较; 步骤23,修改GRUB的Start功能代码,加入用BIOS中断的方式请求验证GRUB的Stage 1_5的功能代码,并检查修改后的Start代码是否满足编译后正好是512字节且安装后位于0面0道的第2扇区,检查的方法是与没有修改过GRUB的Start生成的二进制代码进行比较; 步骤24,修改GRUB的Stagel_5功能代码,加入用BIOS中断的方式请求验证GRUB的Stage2的功能代码,由于Stagel_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stagel_5生成的二进制代码不需要与没有修改过的GRUB的Stage 1_5生成的二进制代码相比较; 步骤25,计算出修改后的GRUB的Stagel、Start、Stage 1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将 Link_Trusted 用 RSA 算法加密生成 Encrypted_Link_Trusted。
3.如权利要求I所述的全虚拟化环境下启动加载器的可信验证方法,其特征在于,所述步骤2还包括 步骤31,特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中; 步骤32,使用扫描虚拟机内存的方式找到预设空间标识的内存地址Mem_Address,然后将 Encrypted_Link_Trusted 拷贝到 Mem_Address。
4.如权利要求I所述的全虚拟化环境下启动加载器的可信验证方法,其特征在于,所述步骤3还包括 步骤41,在非特权域的Rombios跳转到GRUB的Stagel之前,计算GRUB的Stagel的二进制度量值,同时,解密 Encrypted_Link_Trusted 得到链表 Decrypted_Link_Trusted,然后,查找Decrypted_Link_Trusted第一个链表元素可获得GRUB的Stagel的可信验证基准值; 步骤42,验证步骤41得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_eXtend)到相应的平台配置寄存器PCR中,并继续正常的非特权Domain启动的下一阶段,否则,阻止继续启动。
5.如权利要求I所述的全虚拟化环境下启动加载器的可信验证方法,其特征在于,所述步骤4还包括 步骤51,GRUB的Stagel运行到把内存0x7000开始的512字节转移到内存0x8000之后,使用BIOS中断请求的方式验证GRUB的Start,这个Start是从0面0道第2扇区的内容读到内存的0x7000处的。然后,在非特权域虚拟机的Rombios中找到这512字节的Start 功能代码,计算出其二进制度量值。
步骤52,查找链表Decrypted_Link_Trusted第二个链表元素即可获得GRUB的Start的可信验证基准值,验证这个基准值和步骤51得到的GRUB的Start的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
6.如权利要求I所述的全虚拟化环境下启动加载器的可信验证方法,其特征在于,所述步骤5还包括 步骤61,GRUB的Start运行到装载Stagel_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stagel_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stagel5_sectors,计算出GRUB的Stage 1_5的功能代码的二进制度量值; 步骤62,查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stage 1_5的可信验证基准值,验证这个基准值和步骤61得到的GRUB的Stagel_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
7.如权利要求I所述的全虚拟化环境下启动加载器的可信验证方法,其特征在于,所述步骤6还包括 步骤71,GRUB的Stagel_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值; 步骤72,GRUB的Stage 1_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,然后,验证这个二进制度量值和步骤71得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
8.—种全虚拟化环境下启动加载器的可信验证系统,其特征在于,包括 生成可信基准值链表模块,用于部署生成可信基准值链表Encrypted_Link_Trusted ; 启动非特权域虚拟机模块,用于启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置;Rombios验证非特权虚拟机模块,用于非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stagel ; Stagel验证非特权域虚拟机 模块,用于非特权域虚拟机的GRUB的Stagel验证非特权域虚拟机的GRUB的Start ; Start验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage 1_5 ; Stage 1_5验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Stage 15验证非特权域虚拟机的GRUB的Stage2。
9.如权利要求I所述的全虚拟化环境下启动加载器的可信验证系统,其特征在于,所述生成可信基准值链表模块还包括 增加函数模块,用于修改Xen的Rombios的功能代码,增加GRUB的Stagel、GRUB的Start、GRUB的Stage 1_5对BIOS的请求验证的中断响应函数; 检查Stagel模块,用于修改GRUB的Stagel功能代码,加入用BIOS中断的方式请求验证GRUB的Start的功能代码,并检查修改后的GRUB的Stagel代码是否满足编译后正好是512字节且安装在主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是与没有修改过的GRUB的Stagel生成的二进制代码进行比较; 检查Start模块,用于修改GRUB的Start功能代码,加入用BIOS中断的方式请求验证GRUB的Stagel_5的功能代码,并检查修改后的Start代码是否满足编译后正好是512字节且安装后位于O面O道的第2扇区,检查的方法是与没有修改过GRUB的Start生成的二进制代码进行比较; 验证Stage2模块,用于修改GRUB的Stagel_5功能代码,加入用BIOS中断的方式请求验证GRUB的Stage2的功能代码,由于Stagel_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stagel_5生成的二进制代码不需要与没有修改过的GRUB的Stagel_5生成的二进制代码相比较; 计算模块,用于计算出修改后的GRUB的Stagel、Start、Stage 1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将 Link_Trusted 用 RSA 算法加密生成 Encrypted_Link_Trusted。
10.如权利要求I所述的全虚拟化环境下启动加载器的可信验证系统,其特征在于,所述启动非特权虚拟机模块还包括 特权域解析模块,用于特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中; 找寻内存地址模块,用于使用扫描虚拟机内存的方式找到预设空间标识的内存地址Mem_Address,然后将 Encrypted_Link_Trusted 拷贝到 Mem_Address。
11.如权利要求I所述的全虚拟化环境下启动加载器的可信验证系统,其特征在于,所述Rombios验证非特权虚拟机模块还包括 计算Stage模块,用于在非特权域的Rombios跳转到GRUB的Stagel之前,计算GRUB的Stagel 的二进制度量值,同时,解密 Encrypted_Link_Trusted 得到链表 Decrypted_Link_Trusted,然后,查找Decrypted_Link_Trusted第一个链表元素可获得GRUB的Stagel的可信验证基准值;扩展模块,用于验证计算Stage模块得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_eXtend)到相应的平台配置寄存器PCR中,并继续正常的非特权Domain启动的下一阶段,否则,阻止继续启动。
12.如权利要求I所述的全虚拟化环境下启动加载器的可信验证系统,其特征在于,所述Stagel验证非特权域虚拟机模块还包括 中断请求模块,用于GRUB的Stagel运行到把内存0x7000开始的512字节转移到内存0x8000之后,使用BIOS中断请求的方式验证GRUB的Start,这个Start是从0面0道第2扇区的内容读到内存的0x7000处的。然后,在非特权域虚拟机的Rombios中找到这512字节的Start功能代码,计算出其二进制度量值。
验证Start模块,用于查找链表Decrypted_Link_Trusted第二个链表元素即可获得GRUB的Start的可信验证基准值,验证这个基准值和中断请求模块得到的GRUB的Start的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常 的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
13.如权利要求I所述的全虚拟化环境下启动加载器的可信验证系统,其特征在于,所述Start验证非特权域虚拟机模块还包括 中断验证模块,用于GRUB的Start运行到装载Stage 1_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stagel_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stagel5_sectors,计算出GRUB的Stagel_5的功能代码的二进制度量值; 验证一致模块,用于查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stagel_5的可信验证基准值,验证这个基准值和中断验证模块得到的GRUB的Stage 1_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
14.如权利要求I所述的全虚拟化环境下启动加载器的可信验证系统,其特征在于,所述Stage 1_5验证非特权域虚拟机模块还包括 获得验证基准值模块,用于GRUB的Stage 1_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值; 验证基准值一致模块,用于GRUB的Stagel_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,然后,验证这个二进制度量值和获得验证基准值模块得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
全文摘要
本发明公开一种全虚拟化环境下启动加载器的可信验证方法和系统,其该方法包括步骤1,部署生成可信基准值链表;步骤2,启动非特权域虚拟机时把链表拷贝到非特权域虚拟机内存的指定位置;步骤3,非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stage1;步骤4,非特权域虚拟机的GRUB的Stage1验证非特权域虚拟机的GRUB的Start;步骤5,非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage1_5;步骤6,非特权域虚拟机的GRUB的Stage1_5验证非特权域虚拟机的GRUB的Stage2,其中Stage1_5、Stage2为GRUB启动的阶段。
文档编号G06F9/455GK102750470SQ20121016043
公开日2012年10月24日 申请日期2012年5月22日 优先权日2012年5月22日
发明者孙毓忠, 薛栋梁, 邬小龙, 高云伟 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1