CN102750470B - 全虚拟化环境下启动加载器的可信验证方法和系统 - Google Patents

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

Info

Publication number
CN102750470B
CN102750470B CN201210160431.5A CN201210160431A CN102750470B CN 102750470 B CN102750470 B CN 102750470B CN 201210160431 A CN201210160431 A CN 201210160431A CN 102750470 B CN102750470 B CN 102750470B
Authority
CN
China
Prior art keywords
grub
stage1
virtual machine
privileged domain
credible
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
CN201210160431.5A
Other languages
English (en)
Other versions
CN102750470A (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.)
Beijing Zhongke Flux Technology Co ltd
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201210160431.5A priority Critical patent/CN102750470B/zh
Publication of CN102750470A publication Critical patent/CN102750470A/zh
Application granted granted Critical
Publication of CN102750470B publication Critical patent/CN102750470B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开一种全虚拟化环境下启动加载器的可信验证方法和系统,其该方法包括:步骤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启动的阶段。

Description

全虚拟化环境下启动加载器的可信验证方法和系统
技术领域
本发明涉及可信验证,具体涉及一种在全虚拟化环境下基于BIOS中断调用实现可信验证的方法,属于可信计算领域。
背景技术
全虚拟化(Full Virtualization),也称为原始虚拟化技术,该技术使用虚拟机协调客户操作系统和原始硬件,一些受保护的指令由虚拟机管理程序(Hypervisor)来捕获和处理。全虚拟化的运行速度优于硬件模拟,最大特点是客户操作系统无需经过任何修改,所以原来基于客户操作系统的所有软件都能不加修改在全虚拟化环境下运行。基于这种优点,把可信验证技术融入到全虚拟化环境下,是解决全虚拟化环境下软件运行安全性、完整性、可信性的关键手段。使用“全虚拟化环境and可信验证”、“BIOS中断调用and可信验证”、“启动加载器验证方法”作为关键词进行专利检索,没有找到使用BIOS中断的方式进行可信验证方面的专利,更没有找到在全虚拟化环境下使用BIOS中断方式进行启动加载器可信验证的专利。
在全虚拟化环境下,首先,虚拟机的启动也要通过启动加载器加载客户操作系统,然而启动加载器本身的完整性如何验证亟待解决;其次,启动加载器本身代码非常精巧,例如,一种称为GRUB的启动加载器其Stage1和Start功能代码编译后只有512字节,在这样精巧设计的代码中进行完整性验证更加困难。虚拟化技术作为云计算的技术支撑基石,解决好全虚拟化环境下虚拟机启动加载器的可信验证问题,对于当前的可信云安全技术也具有非常重要的意义。
发明内容
本发明公开一种全虚拟化环境下启动加载器的可信验证方法,包括:
步骤1,部署生成可信基准值链表Encrypted_Link_Trusted;
步骤2,启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置;
步骤3,非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stage1,其中Stage1为GRUB启动的阶段;
步骤4,非特权域虚拟机的GRUB的Stage1验证非特权域虚拟机的GRUB的Start;
步骤5,非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage1_5;其中Start为GRUB启动的阶段;
步骤6,非特权域虚拟机的GRUB的Stage1_5验证非特权域虚拟机的GRUB的Stage2,其中Stage1_5、Stage2为GRUB启动的阶段。
所述的全虚拟化环境下启动加载器的可信验证方法,所述步骤1还包括:
步骤21,修改Xen的Rombios的功能代码,增加GRUB的Stage1、GRUB的Start、GRUB的Stage1_5对BIOS的请求验证的中断响应函数;
步骤22,修改GRUB的Stage1功能代码,加入用BIOS中断的方式请求验证GRUB的Start的功能代码,并检查修改后的GRUB的Stage1代码是否满足编译后正好是512字节且安装在主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是与没有修改过的GRUB的Stage1生成的二进制代码进行比较;
步骤23,修改GRUB的Start功能代码,加入用BIOS中断的方式请求验证GRUB的Stage1_5的功能代码,并检查修改后的Start代码是否满足编译后正好是512字节且安装后位于0面0道的第2扇区,检查的方法是与没有修改过GRUB的Start生成的二进制代码进行比较;
步骤24,修改GRUB的Stage1_5功能代码,加入用BIOS中断的方式请求验证GRUB的Stage2的功能代码,由于Stage1_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stage1_5生成的二进制代码不需要与没有修改过的GRUB的Stage1_5生成的二进制代码相比较;
步骤25,计算出修改后的GRUB的Stage1、Start、Stage1_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的Stage1之前,计算GRUB的Stage1的二进制度量值,同时,解密Encrypted_Link_Trusted得到链表Decrypted_Link_Trusted,然后,查找Decrypted_Link_Trusted第一个链表元素可获得GRUB的Stage1的可信验证基准值;
步骤42,验证步骤41得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_extend)到相应的平台配置寄存器PCR中,并继续正常的非特权Domain启动的下一阶段,否则,阻止继续启动。
所述的全虚拟化环境下启动加载器的可信验证方法,所述步骤4还包括:
步骤51,GRUB的Stage1运行到把内存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运行到装载Stage1_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stage1_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stage15_sectors,计算出GRUB的Stage1_5的功能代码的二进制度量值;
步骤62,查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stage1_5的可信验证基准值,验证这个基准值和步骤61得到的GRUB的Stage1_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
所述的全虚拟化环境下启动加载器的可信验证方法,所述步骤6还包括:
步骤71,GRUB的Stage1_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值;
步骤72,GRUB的Stage1_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,然后,验证这个二进制度量值和步骤71得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
本发明公开一种全虚拟化环境下启动加载器的可信验证系统,包括:
生成可信基准值链表模块,用于部署生成可信基准值链表Encrypted_Link_Trusted;
启动非特权域虚拟机模块,用于启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置;
Rombios验证非特权虚拟机模块,用于非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stage1;
Stage1验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Stage1验证非特权域虚拟机的GRUB的Start;
Start验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage1_5;
Stage1_5验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Stage1_5验证非特权域虚拟机的GRUB的Stage2。
所述的全虚拟化环境下启动加载器的可信验证系统,所述生成可信基准值链表模块还包括:
增加函数模块,用于修改Xen的Rombios的功能代码,增加GRUB的Stage1、GRUB的Start、GRUB的Stage1_5对BIOS的请求验证的中断响应函数;
检查Stage1模块,用于修改GRUB的Stage1功能代码,加入用BIOS中断的方式请求验证GRUB的Start的功能代码,并检查修改后的GRUB的Stage1代码是否满足编译后正好是512字节且安装在主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是与没有修改过的GRUB的Stage1生成的二进制代码进行比较;
检查Start模块,用于修改GRUB的Start功能代码,加入用BIOS中断的方式请求验证GRUB的Stage1_5的功能代码,并检查修改后的Start代码是否满足编译后正好是512字节且安装后位于0面0道的第2扇区,检查的方法是与没有修改过GRUB的Start生成的二进制代码进行比较;
验证Stage2模块,用于修改GRUB的Stage1_5功能代码,加入用BIOS中断的方式请求验证GRUB的Stage2的功能代码,由于Stage1_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stage1_5生成的二进制代码不需要与没有修改过的GRUB的Stage1_5生成的二进制代码相比较;
计算模块,用于计算出修改后的GRUB的Stage1、Start、Stage1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将Link_Trusted用RSA算法加密生成Encrypted_Link_Trusted。
所述的全虚拟化环境下启动加载器的可信验证系统,所述启动非特权虚拟机模块还包括:
特权域解析模块,用于特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中;
找寻内存地址模块,用于使用扫描虚拟机内存的方式找到预设空间标识的内存地址Mem_Address,然后将Encrypted_Link_Trusted拷贝到Mem_Address。
所述的全虚拟化环境下启动加载器的可信验证系统,所述Rombios验证非特权虚拟机模块还包括:
计算Stage模块,用于在非特权域的Rombios跳转到GRUB的Stage1之前,计算GRUB的Stage1的二进制度量值,同时,解密Encrypted_Link_Trusted得到链表Decrypted_Link_Trusted,然后,查找Decrypted_Link_Trusted第一个链表元素可获得GRUB的Stage1的可信验证基准值;
扩展模块,用于验证计算Stage模块得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_extend)到相应的平台配置寄存器PCR中,并继续正常的非特权Domain启动的下一阶段,否则,阻止继续启动。
所述的全虚拟化环境下启动加载器的可信验证系统,所述Stage1验证非特权域虚拟机模块还包括:
中断请求模块,用于GRUB的Stage1运行到把内存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运行到装载Stage1_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stage1_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stage15_sectors,计算出GRUB的Stage1_5的功能代码的二进制度量值;
验证一致模块,用于查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stage1_5的可信验证基准值,验证这个基准值和中断验证模块得到的GRUB的Stage1_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
所述的全虚拟化环境下启动加载器的可信验证系统,所述Stage1_5验证非特权域虚拟机模块还包括:
获得验证基准值模块,用于GRUB的Stage1_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值;
验证基准值一致模块,用于GRUB的Stage1_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,然后,验证这个二进制度量值和获得验证基准值模块得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
本发明的有益效果为:本发明的优点是提供一种适合在全虚拟化环境下进行启动加载器的验证方法,这种方法很好的解决了空间受限的代码条件下进行可信验证的问题,非常适合在当前云计算环境中虚拟机启动加载器的可信验证,具有良好的市场前景和应用价值。
附图说明
图1为本发明全虚拟化环境下启动加载器的可信验证方法;
图2为未修改的GRUB Stage1的二进制影像;
图3为经过修改的GRUB Stage1的二进制影像;
图4为未修改的GRUB Start的二进制影像;
图5为经过修改的GRUB Start的二进制影像;
图6为可信验证基准值计算结果;
图7本发明全虚拟化环境下启动加载器的可信验证系统。
具体实施方式
下面给出本发明的具体实施方式,结合附图对本发明做出了详细描述。
为了解决上述的技术问题,提供了一种在全虚拟化环境下基于本地BIOS中断调用实现的对虚拟机启动加载器进行可信验证的方法。
所述启动加载器为GRUB,所述全虚拟化环境为Xen支持的全虚拟化环境。
全虚拟化环境下启动加载器GRUB各功能阶段代码受字节个数限制,即GRUB的Stage1、GRUB的Start编译后只有512字节,使用MBR的方式安装GRUB后,Stage1安装在0面0道的第1扇区,这个扇区又称为主引导扇区,这个扇区在所有的系统分区之前不属于任何分区,其由主引导记录(大小为446个字节)、磁盘分区表(大小为64个字节)、引导记录标识(大小为2个字节)。Start安装在0面0道第2扇区,GRUB的Stage1_5安装在0面0道第3扇区开始的扇区里,其占据扇区的大小与具体的Stage1_5文件大小有关。使用BIOS中断调用的方法实现本地验证好处是:只将BIOS中断请求部分置于上述字节个数受限的代码中,具体的验证工作交由虚拟BIOS实现的中断响应函数完成,虚拟BIOS本身的实现是在Xen代码中完成的,其不受字节个数多少的限制,有效的解决了GRUB功能代码字节个数限制的瓶颈。
具体来说,本发明针对在全虚拟化环境下基于本地BIOS中断调用实现的虚拟机启动加载器GRUB可信验证方法包括下列步骤:
A.部署生成可信基准值链表Encrypted_Link_Trusted,其具体实现方法为:
A1.修改Xen的Rombios的功能代码,增加GRUB的Stage1、GRUB的Start、GRUB的Stage1_5对BIOS的请求验证的中断响应函数;
A2.修改GRUB的Stage1功能代码,加入用BIOS中断的方式请求验证GRUB的Start的功能代码,并检查修改后的GRUB的Stage1代码是否满足编译后正好是512字节且安装在主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是与没有修改过的GRUB的Stage1生成的二进制代码进行比较;
A3.修改GRUB的Start功能代码,加入用BIOS中断的方式请求验证GRUB的Stage1_5的功能代码,并检查修改后的Start代码是否满足编译后正好是512字节且安装后位于0面0道的第2扇区,检查的方法是与没有修改过GRUB的Start生成的二进制代码进行比较;
A4.修改GRUB的Stage1_5功能代码,加入用BIOS中断的方式请求验证GRUB的Stage2的功能代码,由于Stage1_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stage1_5生成的二进制代码不需要与没有修改过的GRUB的Stage1_5生成的二进制代码相比较;
A5.计算出修改后的GRUB的Stage1、Start、Stage1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将Link_Trusted用RSA算法加密生成Encrypted_Link_Trusted。
B.启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置。其具体实现方法为:
B1.特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中;
B2.使用扫描虚拟机内存的方式找到预设空间标识的内存地址Mem_Address,然后将Encrypted_Link_Trusted拷贝到Mem_Address。
C.非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stage1,其具体实现方法为:
C1.在非特权域的Rombios跳转到GRUB的Stage1之前,计算GRUB的Stage1的二进制度量值,同时,解密Encrypted_Link_Trusted得到链表Decrypted_Link_Trusted,然后,查找Decrypted_Link_Trusted第一个链表元素可获得GRUB的Stage1的可信验证基准值。
C2.验证C1得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_extend)到相应的平台配置寄存器PCR(Platform Configuration Register)中,并继续正常的非特权Domain启动的下一阶段,否则,阻止继续启动;
D.非特权域虚拟机的GRUB的Stage1验证非特权域虚拟机的GRUB的Start,其具体实现方法为:
D1.GRUB的Stage1运行到把内存0x7000开始的512字节转移到内存0x8000之后,使用BIOS中断请求的方式验证GRUB的Start,这个Start是从0面0道第2扇区的内容读到内存的0x7000处的。然后,在非特权域虚拟机的Rombios中找到这512字节的Start功能代码,计算出其二进制度量值。
D2.查找链表Decrypted_Link_Trusted第二个链表元素即可获得GRUB的Start的可信验证基准值,验证这个基准值和D1得到的GRUB的Start的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的非特权域虚拟机启动的下一阶段,否则,阻止继续启动;
E.非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage1_5,其具体实现方法为:
E1.GRUB的Start运行到装载Stage1_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stage1_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stage15_sectors(该参数表示GRUB的Stage1_5实际完成安装后占用的扇区数),计算出GRUB的Stage1_5的功能代码的二进制度量值。
E2.查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stage1_5的可信验证基准值,验证这个基准值和E1得到的GRUB的Stage1_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动;
F.非特权域虚拟机的GRUB的Stage1_5验证非特权域虚拟机的GRUB的Stage2,其具体实现方法为:
F1.GRUB的Stage1_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值。
F2.GRUB的Stage1_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,然后,验证这个二进制度量值和F1得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
本发明的优点是提供一种适合在全虚拟化环境下进行启动加载器的验证方法,这种方法很好的解决了空间受限的代码条件下进行可信验证的问题,非常适合在当前云计算环境中虚拟机启动加载器的可信验证,具有良好的市场前景和应用价值。
下面结合附图,通过一套具体的基于BIOS中断调用实现对非特权域虚拟机启动加载器进行可信验证的实例进一步描述本发明。
实现对非特权域虚拟机启动加载器进行可信验证的方法流程如图1所示,本发明的方法包括:A.部署生成可信基准值链表Encrypted_Link_Trusted;B.启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置;非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stage1;非特权域虚拟机的GRUB的Stage1验证非特权域虚拟机的GRUB的Start;非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage1_5;非特权域虚拟机的GRUB的Stage1_5验证非特权域虚拟机的GRUB的Stage2。具体一种实施方式如下:
A.部署生成可信基准值链表Encrypted_Link_Trusted,其具体实现方法为:
A1.在Xen的Rombios的功能代码中,增加GRUB的Stage1请求验证的中断响应函数fun1_response_Stage1;增加GRUB的Start请求验证的中断响应函数fun2_response_Start;增加GRUB的Stage1_5请求验证的中断响应函数fun3_response_Stage1_5。
A2.在GRUB的Stage1功能代码中,增加BIOS中断请求的代码,使用BIOS的int 0x1a,子功能号使用bbf1,其作用是请求BIOS验证GRUB的Start,由fun1_response_Stage1响应该请求。之后,检查修改后的GRUB的Stage1代码是否满足编译后正好是512字节且安装在硬盘主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是分别用Linux的dd命令得到图2和图3两种二进制影像,图中阴影部分表示了它们的不同之处,由已有的常识有:从地址0X00001BE到地址0X00001FD是磁盘的分区表,地址0X00001FE到地址0X00001FF中存储的是引导记录标识。观察图2,能够确认从地址0X00001BE到地址0X00001FF中存储的内容和图1完全相同,所以这种方法证明了这种修改确实没有破环磁盘分区表的大小和结构
A3.在GRUB的Start功能代码中,增加BIOS中断请求的代码,使用BIOS的int 0x1a,子功能号使用bbf2,其作用是请求BIOS验证GRUB的Stage1_5,由fun2_response_Start响应该请求。之后,检查修改后的GRUB的Start代码是否满足编译后正好是512字节且安装后位于硬盘的0面0道的第2扇区,检查的方法之后,检查的方法参照步骤A2。附图中,图4的第一个字节、最后一个字节与图5的的第一个字节、最后一个字节都一样,可以确认经过修改的GRUB的Start满足要求。
A4.在GRUB的Stage1_5功能代码中,增加BIOS中断请求的代码,使用BIOS的int 0x1a,子功能号使用bbf3,其作用是请求BIOS验证GRUB的GRUB的Stage2,由fun3_response_Stage1_5响应该请求。由于Stage1_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stage1_5生成的二进制代码不需要与没有修改过的GRUB的Stage1_5生成的二进制代码相比较。
A5.计算出修改后的GRUB的Stage1、Start、Stage1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将Link_Trusted用RSA算法加密生成Encrypted_Link_Trusted。
计算可信验证基准值的方法是使用SHA(Secure Hash Algorithm)算法,该算法的输出即是需要的可信验证基准值,该算法的输入参数是GRUB的Stage1、Start、Stage1_5、Stage2在磁盘上实际占用的扇区数。图6是一种这四个验证基准值计算结果的实例,将这四个可信验证基准值组成一个链表并用RSA算法加密都是公开的技术且非常简单,不再赘述。
B.启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置。其具体实现方法为:
B1.特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中;
B2.使用扫描虚拟机内存的方式找到预设空间标识的内存地址Mem_Address,然后将Encrypted_Link_Trusted拷贝到Mem_Address。
其中扫描虚拟机内存找到预设空间标识的内存地址方法可以参照C库提供的函数memcmp的实现方法。
C.非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stage1,其具体实现方法为:
C1.在非特权域的Rombios跳转到GRUB的Stage1之前,计算GRUB的Stage1的二进制度量值,计算的方法是使用BIOS中断的方式调用TPM(TrustedPlatform Module)的SHA引擎,其应用了BIOS的int 0x1a中断,子功能号为bb05。解密Encrypted_Link_Trusted得到链表Decrypted_Link_Trusted以及查找Decrypted_Link_Trusted第一个链表元素获得GRUB的Stage1的可信验证基准值的方法都是公开的技术且非常简单,不再赘述。
C2.验证C1得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_extend)到TPM的相应的平台配置寄存器PCR(Platform Configuration Register)中,扩展的方法是利用BIOS中断的方式,使用的是BIOS的int 0x1a中断,子功能号为bb02。然后,继续正常的非特权域启动的下一阶段,否则,阻止继续启动。
D.非特权域虚拟机的GRUB的Stage1验证非特权域虚拟机的GRUB的Start,其具体实现方法为:
D1.GRUB的Stage1运行到把内存0x7000开始的512字节转移到内存0x8000之后,使用BIOS中断请求的方式验证GRUB的Start,这个Start是从0面0道第2扇区的内容读到内存的0x7000处的。然后,在非特权域虚拟机的Rombios中找到这512字节的Start功能代码,计算出其二进制度量值。
其中,中断请求应用了int 0x1a中断,子功能号为bbf1,BIOS验证请求的时刻非常关键,必须是保证GRUB的Start加载到内存后,否则,在非特权域虚拟机的Rombios无法通过查找内存的方式找到这512字节,也无法计算其二进制度量值;二进制度量值的计算方法同C1。
D2.查找链表Decrypted_Link_Trusted第二个链表元素即可获得GRUB的Start的可信验证基准值,验证这个基准值和D1得到的GRUB的Start的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。二进制度量值的扩展方法同C2。
E.非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage1_5,其具体实现方法为:
E1.GRUB的Start运行到装载Stage1_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stage1_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stage15_sectors(该参数表示GRUB的Stage1_5实际完成安装后占用的扇区数),计算出GRUB的Stage1_5的功能代码的二进制度量值。
其中,中断请求应用了int 0x1a中断,子功能号为bbf2,BIOS验证请求的时刻也非常关键,二进制度量值的计算方法同C1。
E2.查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stage1_5的可信验证基准值,验证这个基准值和E1得到的GRUB的Stage1_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。二进制度量值的扩展方法同C2。
F.非特权域虚拟机的GRUB的Stage1_5验证非特权域虚拟机的GRUB的Stage2,其具体实现方法为:
F1.GRUB的Stage1_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值,并把这个可信验证基准值传送回GRUB的Stage1_5。
其中,中断请求应用了int 0x1a中断,子功能号为bbf3,BIOS验证请求的时刻也非常关键。
F2.GRUB的Stage1_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,计算的方法同C1。然后,验证这个二进制度量值和F1得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。二进制度量值的扩展方法同C2。
如图7所示,本发明公开一种全虚拟化环境下启动加载器的可信验证系统,包括:
生成可信基准值链表模块,用于部署生成可信基准值链表Encrypted_Link_Trusted;
启动非特权域虚拟机模块,用于启动非特权域虚拟机时把链表Encrypted_Link_Trusted拷贝到非特权域虚拟机内存的指定位置;
Rombios验证非特权虚拟机模块,用于非特权域虚拟机的Rombios中验证非特权域虚拟机的GRUB的Stage1;
Stage1验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Stage1验证非特权域虚拟机的GRUB的Start;
Start验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Start验证非特权域虚拟机的GRUB的Stage1_5;
Stage1_5验证非特权域虚拟机模块,用于非特权域虚拟机的GRUB的Stage1_5验证非特权域虚拟机的GRUB的Stage2。
所述的全虚拟化环境下启动加载器的可信验证系统,所述生成可信基准值链表模块还包括:
增加函数模块,用于修改Xen的Rombios的功能代码,增加GRUB的Stage1、GRUB的Start、GRUB的Stage1_5对BIOS的请求验证的中断响应函数;
检查Stage1模块,用于修改GRUB的Stage1功能代码,加入用BIOS中断的方式请求验证GRUB的Start的功能代码,并检查修改后的GRUB的Stage1代码是否满足编译后正好是512字节且安装在主引导扇区之后没有破环磁盘分区表的大小和结构,检查的方法是与没有修改过的GRUB的Stage1生成的二进制代码进行比较;
检查Start模块,用于修改GRUB的Start功能代码,加入用BIOS中断的方式请求验证GRUB的Stage1_5的功能代码,并检查修改后的Start代码是否满足编译后正好是512字节且安装后位于0面0道的第2扇区,检查的方法是与没有修改过GRUB的Start生成的二进制代码进行比较;
验证Stage2模块,用于修改GRUB的Stage1_5功能代码,加入用BIOS中断的方式请求验证GRUB的Stage2的功能代码,由于Stage1_5已经准备好C语言的运行环境,并且开始支持文件系统,所以修改后的GRUB的Stage1_5生成的二进制代码不需要与没有修改过的GRUB的Stage1_5生成的二进制代码相比较;
计算模块,用于计算出修改后的GRUB的Stage1、Start、Stage1_5的可信验证基准值,计算出没有修改的GRUB的Stage2的可信验证基准值,并把这四个基准值组成一个链表Link_Trusted,同时,将Link_Trusted用RSA算法加密生成Encrypted_Link_Trusted。
所述的全虚拟化环境下启动加载器的可信验证系统,所述启动非特权虚拟机模块还包括:
特权域解析模块,用于特权域解析hvmloader并将可加载的段拷贝到非特权域虚拟机内存中;
找寻内存地址模块,用于使用扫描虚拟机内存的方式找到预设空间标识的内存地址Mem_Address,然后将Encrypted_Link_Trusted拷贝到Mem_Address。
所述的全虚拟化环境下启动加载器的可信验证系统,所述Rombios验证非特权虚拟机模块还包括:
计算Stage模块,用于在非特权域的Rombios跳转到GRUB的Stage1之前,计算GRUB的Stage1的二进制度量值,同时,解密Encrypted_Link_Trusted得到链表Decrypted_Link_Trusted,然后,查找Decrypted_Link_Trusted第一个链表元素可获得GRUB的Stage1的可信验证基准值;
扩展模块,用于验证计算Stage模块得到的可信验证基准值和二进制度量值是否一致,如果一致,把这个二进制度量值扩展(TPM_extend)到相应的平台配置寄存器PCR中,并继续正常的非特权Domain启动的下一阶段,否则,阻止继续启动。
所述的全虚拟化环境下启动加载器的可信验证系统,所述Stage1验证非特权域虚拟机模块还包括:
中断请求模块,用于GRUB的Stage1运行到把内存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运行到装载Stage1_5去内存0x2200之前,使用BIOS中断请求的方式验证GRUB的Stage1_5,非特权域虚拟机的Rombios中接收到这个验证请求后,结合0x2200的起始地址和从GRUB的Start传递过来的参数stage15_sectors,计算出GRUB的Stage1_5的功能代码的二进制度量值;
验证一致模块,用于查找链表Decrypted_Link_Trusted第三个链表元素即可获得GRUB的Stage1_5的可信验证基准值,验证这个基准值和中断验证模块得到的GRUB的Stage1_5的二进制度量值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
所述的全虚拟化环境下启动加载器的可信验证系统,所述Stage1_5验证非特权域虚拟机模块还包括:
获得验证基准值模块,用于GRUB的Stage1_5运行到装载GRUB的Stage2去内存0x8200之前,使用BIOS中断的方式请求获得GRUB的Stage2的可信验证基准值,非特权域虚拟机的Rombios接收到这个请求后,查找链表Decrypted_Link_Trusted第四个链表元素得到GRUB的Stage2的可信验证基准值;
验证基准值一致模块,用于GRUB的Stage1_5根据内存地址0x8200和Stage2实际占用的扇区个数计算出GRUB的Stage2功能代码的二进制度量值,然后,验证这个二进制度量值和获得验证基准值模块得到的GRUB的Stage2的可信验证基准值是否一致,如果一致,把这个二进制度量值扩展到相应的PCR中,并继续正常的的非特权域虚拟机启动的下一阶段,否则,阻止继续启动。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。

Claims (14)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210160431.5A CN102750470B (zh) 2012-05-22 2012-05-22 全虚拟化环境下启动加载器的可信验证方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210160431.5A CN102750470B (zh) 2012-05-22 2012-05-22 全虚拟化环境下启动加载器的可信验证方法和系统

Publications (2)

Publication Number Publication Date
CN102750470A CN102750470A (zh) 2012-10-24
CN102750470B true CN102750470B (zh) 2014-10-08

Family

ID=47030643

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210160431.5A Active CN102750470B (zh) 2012-05-22 2012-05-22 全虚拟化环境下启动加载器的可信验证方法和系统

Country Status (1)

Country Link
CN (1) CN102750470B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107145379A (zh) * 2017-03-14 2017-09-08 深圳航天科技创新研究院 实现具有数据信号连接关系虚拟设备组件的方法及系统

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103051673B (zh) * 2012-11-21 2016-09-28 浪潮集团有限公司 一种基于Xen和Hadoop的云存储平台的构建方法
CN104217166A (zh) * 2013-05-30 2014-12-17 鈊象电子股份有限公司 系统执行环境的验证方法
CN103744851B (zh) * 2013-10-25 2017-04-12 中国科学院计算技术研究所 一种虚拟化环境中的进程信息监控系统及其方法
CN109255242A (zh) * 2018-09-18 2019-01-22 郑州云海信息技术有限公司 一种基于可信uefi固件引导虚拟机启动的方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101488173A (zh) * 2009-01-15 2009-07-22 北京交通大学 支持零宕机的可信虚拟域启动文件完整性度量的方法
US7590867B2 (en) * 2004-06-24 2009-09-15 Intel Corporation Method and apparatus for providing secure virtualization of a trusted platform module
CN101551839A (zh) * 2009-03-17 2009-10-07 北京交通大学 多虚拟域环境下针对tpm可信计算的toctou攻击响应方法
CN101599115A (zh) * 2009-07-03 2009-12-09 北京交通大学 一种响应toctou攻击的轻量级方法
CN101887393A (zh) * 2010-07-01 2010-11-17 中兴通讯股份有限公司 基于半虚拟化技术的设备故障复现方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882318B2 (en) * 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590867B2 (en) * 2004-06-24 2009-09-15 Intel Corporation Method and apparatus for providing secure virtualization of a trusted platform module
CN101488173A (zh) * 2009-01-15 2009-07-22 北京交通大学 支持零宕机的可信虚拟域启动文件完整性度量的方法
CN101551839A (zh) * 2009-03-17 2009-10-07 北京交通大学 多虚拟域环境下针对tpm可信计算的toctou攻击响应方法
CN101599115A (zh) * 2009-07-03 2009-12-09 北京交通大学 一种响应toctou攻击的轻量级方法
CN101887393A (zh) * 2010-07-01 2010-11-17 中兴通讯股份有限公司 基于半虚拟化技术的设备故障复现方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107145379A (zh) * 2017-03-14 2017-09-08 深圳航天科技创新研究院 实现具有数据信号连接关系虚拟设备组件的方法及系统
CN107145379B (zh) * 2017-03-14 2020-10-02 深圳航天科技创新研究院 实现具有数据信号连接关系虚拟设备组件的方法及系统

Also Published As

Publication number Publication date
CN102750470A (zh) 2012-10-24

Similar Documents

Publication Publication Date Title
US12001867B2 (en) Method and system for improving software container performance and isolation
CN102750470B (zh) 全虚拟化环境下启动加载器的可信验证方法和系统
JP5905586B2 (ja) 仮想マシンおよびネストにされた仮想マシンマネージャの認証されたランチ
EP2529328B1 (en) Systems and methods for sharing the results of computing operations among related computing systems
JPWO2011142095A1 (ja) 情報処理装置および情報処理方法
CN102750471B (zh) 基于tpm 的本地验证式启动方法
CN112800429A (zh) 一种基于基础性的uefi bios固件系统中驱动程序保护的方法
WO2017172190A1 (en) Trusted execution of called function
CN114945900A (zh) 用于执行安全应用进程的基于进程的虚拟化系统
EP3785149B1 (en) Memory assignment for guest operating systems
KR102579861B1 (ko) 차량용 소프트웨어 업데이트 장치 및 그 제어 방법
CN115422554B (zh) 请求处理方法、编译方法和可信计算系统
Pott et al. Firmware Security Module: A Framework for Trusted Computing in Automotive Multiprocessors
CN107832606B (zh) 基于sgx的信任链实现方法及系统
US11327783B2 (en) Asynchronous management of unencrypted memory page list of a virtual machine
JP6462540B2 (ja) ドライバ装置、情報処理システム、プログラムおよび方法
Krichanov et al. UEFI virtual machine firmware hardening through snapshots and attack surface reduction
US11822663B2 (en) Supervisor-based firmware hardening
CN108875370A (zh) 基于静态数据引用链的Linux文件系统完整性验证方法
US12026561B2 (en) Dynamic authentication and authorization of a containerized process
US20240037217A1 (en) Digital content management through on-die cryptography and remote attestation
US20220066845A1 (en) Dynamic authenticatication an authorization of a containerized process
De Crecchio et al. Mobile Phones in the Cloud-Edge Continuum: Understanding the TEE’s Role
Yan et al. Research on Trusted Bootstrap Based on the Universal Smart Card
CN109937407B (zh) 用于smm传输监控器的扩展存储器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240320

Address after: Room 711C, Floor 7, Building A, Yard 19, Ronghua Middle Road, Daxing District, Beijing Economic-Technological Development Area, 100176

Patentee after: Beijing Zhongke Flux Technology Co.,Ltd.

Country or region after: China

Address before: 100190 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

Country or region before: China