CN102750471A - 基于tpm 的本地验证式启动方法 - Google Patents

基于tpm 的本地验证式启动方法 Download PDF

Info

Publication number
CN102750471A
CN102750471A CN2012101605163A CN201210160516A CN102750471A CN 102750471 A CN102750471 A CN 102750471A CN 2012101605163 A CN2012101605163 A CN 2012101605163A CN 201210160516 A CN201210160516 A CN 201210160516A CN 102750471 A CN102750471 A CN 102750471A
Authority
CN
China
Prior art keywords
unsealed
prog
data
hash
mod
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
CN2012101605163A
Other languages
English (en)
Other versions
CN102750471B (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 CN201210160516.3A priority Critical patent/CN102750471B/zh
Publication of CN102750471A publication Critical patent/CN102750471A/zh
Application granted granted Critical
Publication of CN102750471B publication Critical patent/CN102750471B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开一种基于TPM的本地验证式启动方法,所述方法包括:步骤1,使用TPM封存功能部署生成需要验证程序的度量标准值;步骤2,在GRUBStage2中验证虚拟机监视器、Linux Kernel、Ramdisk的完整性;步骤3,在GRUB Stage2的最后阶段将动态库、模块、可执行程序的基准值传递到LinuxKernel;所述的动态库、模块、可执行程序是指Linux操作系统启动过程中加载的动态库、内核模块、可执行程序;步骤4,在Linux Kernel的相应功能处对动态库、模块、可执行程序分别进行完整性验证。

Description

基于TPM 的本地验证式启动方法
技术领域
本发明涉及可信启动,具体涉及一种基于TPM解封技术进行本地验证式可信启动方法,属于可信计算领域。 
背景技术
通常Linux系统的启动过程是BIOS加电自检,接着启动引导程序,然后引导内核,最终完成系统初始化,打开终端供用户登陆。GRUB是一种开源的启动引导程序,Trusted GRUB是对原始GRUB的扩展。Trusted GRUB的主要特征是支持TPM(Trusted Platform Module)提供的可信计算功能,在启动过程中度量程序文件并将完整性度量结果扩展到TPM的PCR(platform configurationregister)寄存器中。GRUB-IMA(Integrity Measurement Architecture)是由IBM提出的,其在Trusted GRUB的基础上,建立了一个可信启动平台并通过向远程用户请求验证的方式报告平台上运行软件的完整性。在论文方面,文献[1][2]发表于2011年且都是进行远程验证,使用远程验证时,验证方在进行证书验证过程中需要了解PCA(Privacy Certificate Authority),这样非常容易导致由PCA和验证方合谋导致的TPM平台身份的泄露;另外,TPM使用者与PCA进行交互以获得AIK(Attestation Identity Keys)证书,而TPM可能有大数量的AIK,那么PCA将服务大量的AIK证书请求,从而导致可用性问题。使用“可信启动”、“完整性and验证”、“本地验证”作为关键词进行专利检索,没有找到使用本地验证方式的进行可信启动方面的专利。 
发明内容
为了解决上述远程验证带来的问题,本发明提供了一种本地验证式的可信启动方法。 
本发明公开一种基于TPM的本地验证式启动方法,包括: 
步骤1,使用TPM封存功能部署生成需要验证程序的度量标准值; 
步骤2,在GRUB Stage2中验证虚拟机监视器、Linux Kernel、Ramdisk 的完整性; 
步骤3,在GRUB Stage2的最后阶段将动态库、模块、可执行程序的基准值传递到Linux Kernel;所述的动态库、模块、可执行程序是指Linux操作系统启动过程中加载的动态库、内核模块、可执行程序; 
步骤4,在Linux Kernel的相应功能处对动态库、模块、可执行程序分别进行完整性验证。 
所述的基于TPM的本地验证式启动方法,所述步骤1还包括: 
步骤21,使用SHA算法生成虚拟机监视器、Linux Kernel、Ramdisk的完整性验证标准值Integrity-Valuve-Group1,生成动态库Lib-1至Lib-n、模块Mod-1至Mod-n、可执行程序Prog-1至Prog-n的完整性验证标准值Integrity-Valuve-Group2; 
步骤22,用户获得TPM的使用权,使用TPM封存功能,指定相应的PCR寄存器,并根据步骤21得到的Integrity-Valuve-Group1和Integrity-Valuve-Group2分别生成Block-Data-Group1和Block-Data-Group2; 
步骤23,将步骤22得到的Block-Data-Group1和Block-Data-Group2分别转储到特定的文件目录下生成File-Data-Group1和File-Data-Group2。 
所述的基于TPM的本地验证式启动方法,所述步骤2还包括: 
步骤31,在GRUB Stage2中,调用TPM的SHA引擎服务分别计算虚拟机监视器、Linux Kernel、Ramdisk的度量值存储到变量M-hash1、K-hash2、R-hash3中; 
步骤32,在GRUB Stage2中已经支持文件系统,将步骤23得到的位于特定文件目录下的File-Data-Group1读到GRUB Stage2设置的缓冲区Array-Data-Group 1中; 
步骤33,使用TPM的解封功能将缓冲区Array-Data-Group1中的数据集解析为Unsealed-M-hash1、Unsealed-K-hash2、Unsealed-R-hash3三个数据块,这三个数据块分别对应虚拟机监视器、Linux Kernel、Ramdisk的标准值; 
步骤34,分别验证M-hash1与Unsealed-M-hash1、K-hash2与Unsealed-K-hash2、R-hash3与Unsealed-R-hash3的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段。 
所述的基于TPM的本地验证式启动方法,所述步骤3还包括: 
步骤41,将步骤23,得到的File-Data-Group2读到GRUB Stage2设置的缓冲区Array-Data-Group2中; 
步骤42,将缓冲区Array-Data-Group2中的数据拷贝到内核的特殊位置Flag-Array-Data-Group2中。 
所述的基于TPM的本地验证式启动方法,所述步骤4还包括: 
步骤51,在内核初始化时刻的适当阶段使用TPM的解封功能将位于Flag-Array-Data-Group2中的数据集解封为Unsealed-Data-Group2; 
步骤52,在动态库加载阶段使用SHA算法分别计算出Lib-1至Lib-n的度量值存储到Lib-1-hash至Lib-n-hash中;同时,从Unsealed-Data-Group2中解析出Lib-1至Lib-n的标准值Unsealed-Lib-1至Unsealed-Lib-n;分别验证Lib-1-hash与Unsealed-Lib-1,Lib-2-hash与Unsealed-Lib-2直至Lib-n-hash与Unsealed-Lib-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段; 
步骤53,在模块加载阶段使用SHA算法分别计算出Mod-1至Mod-n的度量值存储到Mod-1-hash至Mod-n-hash中;同时,从Unsealed-Data-Group2中解析出Mod-1至Mod-n的标准值Unsealed-Mod-1至Unsealed-Mod-n;分别验证Mod-1-hash与Unsealed-Mod-1,Mod-2-hash与Unsealed-Mod-2直至Mod-n-hash与Unsealed-Mod-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段,其中Unsealed-Mod-1和Unsealed-Mod-n分别为第1个模块解封后的解封值、第n个模块解封后的解封值; 
步骤54,在可执行程序加载阶段使用SHA算法分别计算出Prog-1至Prog-n的度量值存储到Prog-1-hash至Prog-n-hash中;同时,从Unsealed-Data-Group2中解析出Prog-1至Prog-n的标准值Unsealed-Prog-1至Unsealed-Prog-n;分别验证Prog-1-hash与Unsealed-Prog-1,Prog-2-hash与Unsealed-Prog-2直至Prog-n-hash与Unsealed-Prog-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段;其中Prog-1-hash和Prog-n-hash分别为第1个可执行程序度量值、第n个可执行程序度量值,Unsealed-Prog-1和Unsealed-Prog-2、Unsealed-Prog-n分别为第1个可执行程序的解封值、第2个可执行程序的解封值、第n个可执行程序的解 封值,其中Prog-1-hash和Prog-n-hash为第1个程序度量值存储的变量名、第n个程序度量值存储的变量名。 
本发明的有益效果为: 
本发明的优点在于提供了一种基于TPM的可信验证式启动方法,该方法对启动过程中加载的各个功能程序进行本地验证,避免了远程验证带来的通信开销和密钥暴露的机会,非常适合Linux系统的可信启动以及当前云计算环境下虚拟机的可信启动,具有良好的市场前景和应用价值。 
附图说明
图1为本发明基于TPM的本地验证式启动方法流程图; 
图2虚拟机监视器、Linux Kernel、Ramdisk的完整性验证标准值; 
图3动态库、模块、可执行程序的完整性验证标准值。 
具体实施方式
下面给出本发明的具体实施方式,结合附图对本发明做出了详细描述。 
为了解决上述远程验证带来的问题,本发明提供了一种本地验证式的可信启动方法。 
所述可信启动是Linux系统的可信启动,也可是支持Xen虚拟化技术的特权域和非特权域的可信启动,可信启动使用的引导程序为Trusted GRUB。Trusted GRUB引导程序的过程是:可信度量核心根CRTM(Core Root of Trustfor Measurement)→GRUB Stage1→GRUB Stage2→Linux Kernel→Linux系统启动完成。在这个过程中,每个功能实体在将控制权交给下一个功能实体之前,都要对实体的完整性进行度量,最终平台启动过程中各个阶段的完整性度量值都保存在TPM(Trusted Platform Module)的PCR寄存器中。GRUB-IMA对于Trusted GRUB的改进在于每个阶段的度量值都要和位于远程的标准值进行验证,若两个值不同,说明了可信启动过程中运行的程序遭受了非法篡改。 
本发明在Trusted GRUB的基础上,把GRUB-IMA进行远程验证的工作放到本地系统上进行,有效的解决了远程验证弊端;同时,从GRUB Stage2开始,增加了对虚拟机监视器、动态库、模块、可执行程序的可信验证。 
具体来说,本发明针对基于TPM解封技术进行本地验证式可信启动方法 包括下列步骤: 
A.使用TPM封存功能部署生成需要验证程序的度量标准值,其实现方法为: 
A1.使用SHA(Secure Hash Algorithm)算法生成虚拟机监视器、LinuxKernel、Ramdisk的完整性验证标准值Integrity-Valuve-Group1,生成动态库Lib-1至Lib-n、模块Mod-1至Mod-n、可执行程序Prog-1至Prog-n的完整性验证标准值Integrity-Valuve-Group2。 
A2.用户获得TPM的使用权,使用TPM封存(TPM_Seal)功能,指定相应的PCR寄存器,并根据A1得到的Integrity-Valuve-Group1和Integrity-Valuve-Group2分别生成Block-Data-Group1和Block-Data-Group2。 
A3.将A2得到的Block-Data-Group1和Block-Data-Group2分别转储到特定的文件目录下生成File-Data-Group1和File-Data-Group2。 
B.在GRUB Stage2中验证虚拟机监视器、Linux Kernel、Ramdisk的完整性,其实现方法为: 
B1.在GRUB Stage2中,调用TPM的SHA引擎服务分别计算虚拟机监视器、Linux Kernel、Ramdisk的度量值存储到变量M-hash1、K-hash2、R-hash3中。 
B2.在GRUB Stage2中已经支持文件系统,将A.中A3.得到的位于特定文件目录下的File-Data-Group1读到GRUB Stage2设置的缓冲区Array-Data-Group1中。 
B3.使用TPM的解封(TPM_Unseal)功能将缓冲区Array-Data-Group1中的数据集解析为Unsealed-M-hash1、Unsealed-K-hash2、Unsealed-R-hash3三个数据块,这三个数据块分别对应虚拟机监视器、Linux Kernel、Ramdisk的标准值。 
B4.分别验证M-hash1与Unsealed-M-hash1、K-hash2与Unsealed-K-hash2、R-hash3与Unsealed-R-hash3的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段。 
C.在GRUB Stage2的最后阶段将动态库、模块、可执行程序的基准值传递到Linux Kernel,其实现方法为: 
C1.将A.中A3.得到的File-Data-Group2读到GRUB Stage2设置的缓 冲区Array-Data-Group2中。 
C2.将缓冲区Array-Data-Group2中的数据拷贝到内核的特殊位置Flag-Array-Data-Group2中。 
D.在Linux Kernel的相应功能处对动态库、模块、可执行程序分别进行完整性验证,其实现方法为: 
D1.在内核初始化时刻的适当阶段使用TPM的解封功能将位于Flag-Array-Data-Group2中的数据集解封为Unsealed-Data-Group2。 
D2.在动态库加载阶段使用SHA算法分别计算出Lib-1至Lib-n的度量值存储到Lib-1-hash至Lib-n-hash中;同时,从Unsealed-Data-Group2中解析出Lib-1至Lib-n的标准值Unsealed-Lib-1至Unsealed-Lib-n;分别验证Lib-1-hash与Unsealed-Lib-1,Lib-2-hash与Unsealed-Lib-2直至Lib-n-hash与Unsealed-Lib-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段。 
D3.在模块加载阶段使用SHA算法分别计算出Mod-1至Mod-n的度量值存储到Mod-1-hash至Mod-n-hash中;同时,从Unsealed-Data-Group2中解析出Mod-1至Mod-n的标准值Unsealed-Mod-1至Unsealed-Mod-n;分别验证Mod-1-hash与Unsealed-Mod-1,Mod-2-hash与Unsealed-Mod-2直至Mod-n-hash与Unsealed-Mod-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段。 
D4.在可执行程序加载阶段使用SHA算法分别计算出Prog-1至Prog-n的度量值存储到Prog-1-hash至Prog-n-hash中;同时,从Unsealed-Data-Group2中解析出Prog-1至Prog-n的标准值Unsealed-Prog-1至Unsealed-Prog-n;分别验证Prog-1-hash与Unsealed-Prog-1,Prog-2-hash与Unsealed-Prog-2直至Prog-n-hash与Unsealed-Prog-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段。 
下面结合附图,通过以Xen的特权域启动为例实现一套具体的基于TPM的可信验证式启动进一步描述本发明。 
实现基于TPM的可信验证式启动的方法流程如图1所示,本发明的方法包括:A.使用TPM封存功能部署生成需要验证程序的度量标准值;B.在GRUB Stage2中验证虚拟机监视器、Linux Kernel、Ramdisk的完整性;C.在 GRUB Stage2的最后阶段将动态库、模块、可执行程序的度量标准值传递到Linux Kernel;D.在Linux Kernel的相应功能处对动态库、模块、可执行程序分别进行完整性验证。具体一种实施方式如下: 
A.使用TPM封存功能部署生成需要验证程序的度量标准值,其具体实现为: 
A1.使用SHA(Secure Hash Algorithm)算法生成虚拟机监视器、LinuxKernel、Ramdisk的完整性验证标准值集Integrity-Valuve-Group1,生成动态库Lib-1至Lib-n、模块Mod-1至Mod-n、可执行程序Prog-1至Prog-n的完整性验证标准值集Integrity-Valuve-Group2。 
本步骤中,分别计算出xen-4.1.0.gz、vmlinuz-2.6.32.12-0.7-tcg、initrd-2.6.32.12-0.7-tcg的完整性验证标准值如图2所示;为了说明问题,只选一个动态库、一个模块、一个可执行程序,分别计算出动态库/usr/lib/libc.so、模块/sys/module/libata/initstate、可执行程序/bin/bash的完整性验证值如图3所示。 
A2.用户获得TPM的使用权,使用TPM封存(TPM_Seal)功能,指定相应的PCR寄存器,并根据A1得到的Integrity-Valuve-Group1和Integrity-Valuve-Group2分别生成Block-Data-Group 1和Block-Data-Group2。 
本步骤中,需要用命令TPM_takeownership获得TPM的使用权,使用封存功能时pcr寄存器的映射位图、用户指定的密钥、Integrity-Valuve-Group1和Integrity-Valuve-Group2作为输入,输出为Block-Data-Group1和Block-Data-Group2。 
A3.将A2得到的Block-Data-Group1和Block-Data-Group2分别转储到特定的文件目录下生成File-Data-Group1和File-Data-Group2。 
本步骤中,只是将数据块转存到文件系统中,非常简单,不再赘述。 
B.在GRUB Stage2中验证虚拟机监视器、Linux Kernel、Ramdisk的完整性,其具体实现为:: 
B1.在GRUB Stage2中,调用TPM的SHA引擎服务分别计算虚拟机监视器、Linux Kernel、Ramdisk的度量值存储到变量M-hash1、K-hash2、R-hash3中。 
本步骤中,使用BIOS中断的方式调用TPM的SHA引擎服务,BIOS中 断号是0x1a,子功能号是bb05。计算后TPM返回xen-4.1.0.gz、vmlinuz-2.6.32.12-0.7-tcg、initrd-2.6.32.12-0.7-tcg的度量值存储到变量M-hash1、K-hash2、R-hash3中。 
B2.在GRUB Stage2中已经支持文件系统,将A.中A3.得到的位于特定文件目录下的File-Data-Group1读到GRUB Stage2设置的缓冲区Array-Data-Group1中。 
本步骤中,只要使用普通文件读功能就能够将文件系统中文件的内容读到数据缓冲区,非常简单,不再赘述。 
B3.使用TPM的解封(TPM_Unseal)功能将缓冲区Array-Data-Group1中的数据集解析为Unsealed-M-hash1、Unsealed-K-hash2、Unsealed-R-hash3三个数据块,这三个数据块分别对应虚拟机监视器、Linux Kernel、Ramdisk的标准值。 
本步骤中,使用TPM的解封功能时需要与A2.相一致的PCR寄存器的映射位图、与A2.相一致用户指定的密钥、Array-Data-Group1作为输入,输出为Unsealed-M-hash1、Unsealed-K-hash2、Unsealed-R-hash3。 
C.在GRUB Stage2的最后阶段将动态库、模块、可执行程序的基准值传递到Linux Kernel,其实现方法为: 
C1.将A.中A3.得到的File-Data-Group2读到GRUB Stage2设置的缓冲区Array-Data-Group2中。 
本步骤中,本步骤的方法同B2.,不再赘述。 
C2.将缓冲区Array-Data-Group2中的数据拷贝到内核的特殊位置Flag-Array-Data-Group2中。 
本步骤中,采用内存拷贝的方法将Array-Data-Group2中的数据复制到内核中预设空间标志Flag的Flag-Array-Data-Group2中。 
D.在Linux Kernel的相应功能处对动态库、模块、可执行程序分别进行完整性验证,其实现方法为: 
D1.在内核初始化时刻的适当阶段使用TPM的解封功能将位于Flag-Array-Data-Group2中的数据集解封为Unsealed-Data-Group2。 
本步骤中,需要在内核文件的init/main.c中解封,解封的方法同B3.,不再赘述。 
D2.在动态库加载阶段使用SHA算法分别计算出Lib-1至Lib-n的度量值存储到Lib-1-hash至Lib-n-hash中;同时,从Unsealed-Data-Group2中解析出Lib-1至Lib-n的标准值Unsealed-Lib-1至Unsealed-Lib-n;分别验证Lib-1-hash与Unsealed-Lib-1,Lib-2-hash与Unsealed-Lib-2直至Lib-n-hash与Unsealed-Lib-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段。 
本步骤中,需要在内核文件的mm/mmap.c中实现SHA算法的调用,验证时只需要简单的数值比较即可。 
D3.在模块加载阶段使用SHA算法分别计算出Mod-1至Mod-n的度量值存储到Mod-1-hash至Mod-n-hash中;同时,从Unsealed-Data-Group2中解析出Mod-1至Mod-n的标准值Unsealed-Mod-1至Unsealed-Mod-n;分别验证Mod-1-hash与Unsealed-Mod-1,Mod-2-hash与Unsealed-Mod-2直至Mod-n-hash与Unsealed-Mod-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段。 
本步骤中,需要在内核文件的kernel/module.c中实现SHA算法的调用,验证时只需要简单的数值比较即可。 
D4.在可执行程序加载阶段使用SHA算法分别计算出Prog-1至Prog-n的度量值存储到Prog-1-hash至Prog-n-hash中;同时,从Unsealed-Data-Group2中解析出Prog-1至Prog-n的标准值Unsealed-Prog-1至Unsealed-Prog-n;分别验证Prog-1-hash与Unsealed-Prog-1,Prog-2-hash与Unsealed-Prog-2直至Prog-n-hash与Unsealed-Prog-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段。 
本步骤中,需要在内核文件的fs/exec.c中实现SHA算法的调用,验证时只需要简单的数值比较即可。 
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。 

Claims (5)

1.一种基于TPM的本地验证式启动方法,其特征在于,包括:
步骤1,使用TPM封存功能部署生成需要验证程序的度量标准值;
步骤2,在GRUB Stage2中验证虚拟机监视器、Linux Kernel、Ramdisk的完整性;
步骤3,在GRUB Stage2的最后阶段将动态库、模块、可执行程序的基准值传递到Linux Kernel;所述的动态库、模块、可执行程序是指Linux操作系统启动过程中加载的动态库、内核模块、可执行程序;
步骤4,在Linux Kernel的相应功能处对动态库、模块、可执行程序分别进行完整性验证。
2.如权利要求1所述的基于TPM的本地验证式启动方法,其特征在于,所述步骤1还包括:
步骤21,使用SHA算法生成虚拟机监视器、Linux Kernel、Ramdisk的完整性验证标准值Integrity-Valuve-Group1,生成动态库Lib-1至Lib-n、模块Mod-1至Mod-n、可执行程序Prog-1至Prog-n的完整性验证标准值Integrity-Valuve-Group2;
步骤22,用户获得TPM的使用权,使用TPM封存功能,指定相应的PCR寄存器,并根据步骤21得到的Integrity-Valuve-Group1和Integrity-Valuve-Group2分别生成Block-Data-Group1和Block-Data-Group2;
步骤23,将步骤22得到的Block-Data-Group1和Block-Data-Group2分别转储到特定的文件目录下生成File-Data-Group1和File-Data-Group2。
3.如权利要求1所述的基于TPM的本地验证式启动方法,其特征在于,所述步骤2还包括:
步骤31,在GRUB Stage2中,调用TPM的SHA引擎服务分别计算虚拟机监视器、Linux Kernel、Ramdisk的度量值存储到变量M-hash1、K-hash2、R-hash3中;
步骤32,在GRUB Stage2中已经支持文件系统,将步骤23得到的位于特定文件目录下的File-Data-Group1读到GRUB Stage2设置的缓冲区Array-Data-Group1中;
步骤33,使用TPM的解封功能将缓冲区Array-Data-Group1中的数据集解析为Unsealed-M-hash1、Unsealed-K-hash2、Unsealed-R-hash3三个数据块,这三个数据块分别对应虚拟机监视器、Linux Kernel、Ramdisk的标准值;
步骤34,分别验证M-hash1与Unsealed-M-hash1、K-hash2与Unsealed-K-hash2、R-hash3与Unsealed-R-hash3的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段。
4.如权利要求1所述的基于TPM的本地验证式启动方法,其特征在于,所述步骤3还包括:
步骤41,将步骤23,得到的File-Data-Group2读到GRUB Stage2设置的缓冲区Array-Data-Group2中;
步骤42,将缓冲区Array-Data-Group2中的数据拷贝到内核的特殊位置Flag-Array-Data-Group2中。
5.如权利要求1所述的基于TPM的本地验证式启动方法,其特征在于,所述步骤4还包括:
步骤51,在内核初始化时刻的适当阶段使用TPM的解封功能将位于Flag-Array-Data-Group2中的数据集解封为Unsealed-Data-Group2;
步骤52,在动态库加载阶段使用SHA算法分别计算出Lib-1至Lib-n的度量值存储到Lib-1-hash至Lib-n-hash中;同时,从Unsealed-Data-Group2中解析出Lib-1至Lib-n的标准值Unsealed-Lib-1至Unsealed-Lib-n;分别验证Lib-1-hash与Unsealed-Lib-1,Lib-2-hash与Unsealed-Lib-2直至Lib-n-hash与Unsealed-Lib-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段;
步骤53,在模块加载阶段使用SHA算法分别计算出Mod-1至Mod-n的度量值存储到Mod-1-hash至Mod-n-hash中;同时,从Unsealed-Data-Group2中解析出Mod-1至Mod-n的标准值Unsealed-Mod-1至Unsealed-Mod-n;分别验证Mod-1-hash与Unsealed-Mod-1,Mod-2-hash与Unsealed-Mod-2直至Mod-n-hash与Unsealed-Mod-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段,其中Unsealed-Mod-1和Unsealed-Mod-n分别为第1个模块解封后的解封值、第n个模块解封后的解封值;
步骤54,在可执行程序加载阶段使用SHA算法分别计算出Prog-1至Prog-n的度量值存储到Prog-1-hash至Prog-n-hash中;同时,从Unsealed-Data-Group2中解析出Prog-1至Prog-n的标准值Unsealed-Prog-1至Unsealed-Prog-n;分别验证Prog-1-hash与Unsealed-Prog-1,Prog-2-hash与Unsealed-Prog-2直至Prog-n-hash与Unsealed-Prog-n的值是否一致,只要其中的一对不一致,终止系统启动,否则,继续系统启动的下一个阶段;其中Prog-1-hash和Prog-n-hash分别为第1个可执行程序度量值、第n个可执行程序度量值,Unsealed-Prog-1和Unsealed-Prog-2、Unsealed-Prog-n分别为第1个可执行程序的解封值、第2个可执行程序的解封值、第n个可执行程序的解封值,其中Prog-1-hash和Prog-n-hash为第1个程序度量值存储的变量名、第n个程序度量值存储的变量名。
CN201210160516.3A 2012-05-22 2012-05-22 基于tpm 的本地验证式启动方法 Active CN102750471B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210160516.3A CN102750471B (zh) 2012-05-22 2012-05-22 基于tpm 的本地验证式启动方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210160516.3A CN102750471B (zh) 2012-05-22 2012-05-22 基于tpm 的本地验证式启动方法

Publications (2)

Publication Number Publication Date
CN102750471A true CN102750471A (zh) 2012-10-24
CN102750471B CN102750471B (zh) 2015-02-11

Family

ID=47030644

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210160516.3A Active CN102750471B (zh) 2012-05-22 2012-05-22 基于tpm 的本地验证式启动方法

Country Status (1)

Country Link
CN (1) CN102750471B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103093150A (zh) * 2013-02-18 2013-05-08 中国科学院软件研究所 一种基于可信芯片的动态完整性保护方法
CN104751063A (zh) * 2014-12-31 2015-07-01 国家电网公司 一种基于实模式技术的操作系统可信引导方法
CN104796427A (zh) * 2015-04-30 2015-07-22 浪潮电子信息产业股份有限公司 一种基于Trust Grub的可信云主机静态度量方法及装置
CN104933354A (zh) * 2014-12-30 2015-09-23 国家电网公司 一种基于可信计算的白名单静态度量方法
CN106354550A (zh) * 2016-11-01 2017-01-25 广东浪潮大数据研究有限公司 一种保护虚拟机安全的方法、装置及系统
CN106775941A (zh) * 2016-12-08 2017-05-31 北京国电通网络技术有限公司 一种虚拟机内核完整性保护方法和装置
CN109766702A (zh) * 2019-01-11 2019-05-17 北京工业大学 基于虚拟机状态数据的全过程可信启动检验方法
US11907375B2 (en) 2021-04-13 2024-02-20 Hewlett Packard Enterprise Development Lp System and method for signing and interlocking a boot information file to a host computing system

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132031A1 (en) * 2003-12-12 2005-06-16 Reiner Sailer Method and system for measuring status and state of remotely executing programs
CN101038556A (zh) * 2007-04-30 2007-09-19 中国科学院软件研究所 可信引导方法及其系统
CN101043338A (zh) * 2007-04-27 2007-09-26 中国科学院软件研究所 基于安全需求的远程证明方法及其系统
CN101226577A (zh) * 2008-01-28 2008-07-23 南京大学 基于可信硬件与虚拟机的微内核操作系统完整性保护方法
CN101477602A (zh) * 2009-02-10 2009-07-08 浪潮电子信息产业股份有限公司 一种可信计算环境中远程证明的方法
CN101504704A (zh) * 2009-03-17 2009-08-12 武汉大学 由星型信任链支持的嵌入式平台应用程序完整性验证方法
CN101576944A (zh) * 2008-11-20 2009-11-11 武汉大学 基于可信平台模块的计算机安全启动系统
CN101784051A (zh) * 2009-01-21 2010-07-21 华为技术有限公司 一种平台完整性验证的方法、网络设备和网络系统
CN102270288A (zh) * 2011-09-06 2011-12-07 中国人民解放军国防科学技术大学 基于反向完整性验证的操作系统可信引导方法
CN102375956A (zh) * 2010-08-19 2012-03-14 北京市国路安信息技术有限公司 基于Unix系统调用重定向的机制构建Unix可信平台的方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132031A1 (en) * 2003-12-12 2005-06-16 Reiner Sailer Method and system for measuring status and state of remotely executing programs
CN101043338A (zh) * 2007-04-27 2007-09-26 中国科学院软件研究所 基于安全需求的远程证明方法及其系统
CN101038556A (zh) * 2007-04-30 2007-09-19 中国科学院软件研究所 可信引导方法及其系统
CN101226577A (zh) * 2008-01-28 2008-07-23 南京大学 基于可信硬件与虚拟机的微内核操作系统完整性保护方法
CN101576944A (zh) * 2008-11-20 2009-11-11 武汉大学 基于可信平台模块的计算机安全启动系统
CN101784051A (zh) * 2009-01-21 2010-07-21 华为技术有限公司 一种平台完整性验证的方法、网络设备和网络系统
CN101477602A (zh) * 2009-02-10 2009-07-08 浪潮电子信息产业股份有限公司 一种可信计算环境中远程证明的方法
CN101504704A (zh) * 2009-03-17 2009-08-12 武汉大学 由星型信任链支持的嵌入式平台应用程序完整性验证方法
CN102375956A (zh) * 2010-08-19 2012-03-14 北京市国路安信息技术有限公司 基于Unix系统调用重定向的机制构建Unix可信平台的方法
CN102270288A (zh) * 2011-09-06 2011-12-07 中国人民解放军国防科学技术大学 基于反向完整性验证的操作系统可信引导方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103093150A (zh) * 2013-02-18 2013-05-08 中国科学院软件研究所 一种基于可信芯片的动态完整性保护方法
CN103093150B (zh) * 2013-02-18 2016-01-20 中国科学院软件研究所 一种基于可信芯片的动态完整性保护方法
CN104933354A (zh) * 2014-12-30 2015-09-23 国家电网公司 一种基于可信计算的白名单静态度量方法
CN104751063A (zh) * 2014-12-31 2015-07-01 国家电网公司 一种基于实模式技术的操作系统可信引导方法
CN104751063B (zh) * 2014-12-31 2018-08-14 国家电网公司 一种基于实模式技术的操作系统可信引导方法
CN104796427A (zh) * 2015-04-30 2015-07-22 浪潮电子信息产业股份有限公司 一种基于Trust Grub的可信云主机静态度量方法及装置
CN106354550A (zh) * 2016-11-01 2017-01-25 广东浪潮大数据研究有限公司 一种保护虚拟机安全的方法、装置及系统
CN106775941A (zh) * 2016-12-08 2017-05-31 北京国电通网络技术有限公司 一种虚拟机内核完整性保护方法和装置
CN109766702A (zh) * 2019-01-11 2019-05-17 北京工业大学 基于虚拟机状态数据的全过程可信启动检验方法
CN109766702B (zh) * 2019-01-11 2021-02-05 北京工业大学 基于虚拟机状态数据的全过程可信启动检验方法
US11907375B2 (en) 2021-04-13 2024-02-20 Hewlett Packard Enterprise Development Lp System and method for signing and interlocking a boot information file to a host computing system

Also Published As

Publication number Publication date
CN102750471B (zh) 2015-02-11

Similar Documents

Publication Publication Date Title
CN102750471B (zh) 基于tpm 的本地验证式启动方法
US11741234B2 (en) Technologies for fast launch of trusted containers
US11783081B2 (en) Secure public cloud
CN111638943B (zh) 具有受保护的访客机验证主机控制的装置和方法
AU2017290741B2 (en) Secure booting of virtualization managers
EP3582129B1 (en) Technologies for secure hardware and software attestation for trusted i/o
US8151262B2 (en) System and method for reporting the trusted state of a virtual machine
US20190103976A1 (en) Technologies for implementing mutually distrusting domains
US20180183578A1 (en) Provisioning keys for virtual machine scaling
US20140230024A1 (en) Computer system and virtual computer management method
JP2019525306A (ja) 部分的にオフロードされた仮想化マネージャにおけるメモリ割当て技術
US11423179B2 (en) Integrated-chip-based data processing method, computing device, and storage media
EP3207488B1 (en) Identifying security boundaries on computing devices
WO2019084575A1 (en) METHOD FOR STARTING BIOS AND METHOD FOR PROCESSING DATA
JP2019525312A (ja) オポチュニスティックハイパーバイザを用いたパフォーマンスの変動の低減
WO2016107394A1 (zh) 虚拟机的深度证明方法、计算设备和计算机系统
US20140040997A1 (en) Self-deleting virtual machines
CN107704308B (zh) 虚拟平台vTPM管理系统、信任链构建方法及装置、存储介质
US20200127850A1 (en) Certifying a trusted platform module without privacy certification authority infrastructure
US11709700B2 (en) Provisioning identity certificates using hardware-based secure attestation in a virtualized and clustered computer system
US20220222100A1 (en) Integrity protection of container image disks using secure hardware-based attestation in a virtualized and clustered computer system
CN116263832A (zh) 异构计算集群中的分布式认证
US11893410B2 (en) Secure storage of workload attestation reports in a virtualized and clustered computer system
Ushakov et al. Trusted hart for mobile RISC-V security
CN114238941A (zh) 一种程序度量验证方法、装置、系统及存储介质

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