CN101908115B - 基于可信平台模块实现软件可信执行的方法 - Google Patents

基于可信平台模块实现软件可信执行的方法 Download PDF

Info

Publication number
CN101908115B
CN101908115B CN201010243074XA CN201010243074A CN101908115B CN 101908115 B CN101908115 B CN 101908115B CN 201010243074X A CN201010243074X A CN 201010243074XA CN 201010243074 A CN201010243074 A CN 201010243074A CN 101908115 B CN101908115 B CN 101908115B
Authority
CN
China
Prior art keywords
acm
tpm
bios
vcaller
authentication
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.)
Expired - Fee Related
Application number
CN201010243074XA
Other languages
English (en)
Other versions
CN101908115A (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.)
709th Research Institute of CSIC
Original Assignee
709th Research Institute of CSIC
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 709th Research Institute of CSIC filed Critical 709th Research Institute of CSIC
Priority to CN201010243074XA priority Critical patent/CN101908115B/zh
Publication of CN101908115A publication Critical patent/CN101908115A/zh
Application granted granted Critical
Publication of CN101908115B publication Critical patent/CN101908115B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

一种基于可信平台模块实现软件可信执行的方法:系统启动后,BIOS、VCaller将TPM签名后的BIOS-ACM、VCaller-ACM分别发送给TPM;TPM首先在内部认证区域对ACM进行认证,认证通过则执行ACM。其优点是:在系统启动过程中TPM从被动设备成为主动设备,具有认证、加载和执行软件的功能;系统启动过程中将BIOS、VCaller分别与BIOS-ACM、VCaller-ACM进行绑定,将ACM与TPM进行绑定,解决了可信计算系统启动过程中存在的软件加载和软件运行不一致问题。

Description

基于可信平台模块实现软件可信执行的方法
技术领域
本发明涉及计算机信息安全技术领域,主要涉及基于TPM(可信平台模块)实现STE(可信执行技术)的方法,通过TPM(可信平台模块)实现软件签名、软件认证和软件执行,解决系统启动过程中存在的TOCTTOU(软件加载和软件运行不一致)问题。
背景技术
目前TCP(可信计算平台)已经逐渐成为个人日常使用的台式机和笔记本,TCP(可信计算平台)是TCG(可信计算组织)提出并已实现的一种商业产品,TCP(可信计算平台)以完整性度量的方式对系统中的软件进行保护,通过杂凑值反映出平台当前的运行状态,提供一种判别系统环境是否安全的方法。
根据TCG(可信计算组织)规范,TCP(可信计算平台)从CRTM(可信度量根核)开始,首先由CRTM(可信度量根核)对平台的下一个运行软件进行完整性度量,并将完整性度量结果存储到TPM(可信平台模块),然后CRTM(可信度量根核)加载该软件到内存运行。该软件继续对平台的下一个运行软件进行完整性度量和完整性存储。就这样,TCP(可信计算平台)从信任根开始到硬件平台、到操作系统加载器、再到操作系统及应用,逐级认证,从而把信任链扩展到整个系统。
在TCP(可信计算平台)系统启动过程中,一方面,TCP(可信计算平台)仅仅存储软件代码的完整性度量值,并没有验证度量值的正确性,因此也就无法得知软件代码的安全性;另一方面,软件自身存在着安全脆弱性,攻击者可以在TCP(可信计算平台)系统启动阶段植入恶意代码,造成如下的攻击:攻击者将正确代码的完整性度量值存储到TPM,而加载执行预先准备好的恶意代码,即TOCTTOU(软件加载和软件运行不一致)攻击。
TPM(可信平台模块)是TCP(可信计算平台)的核心部件,它是一个含有密码运算部件和存储部件的小型片上系统。TPM(可信平台模块)的密码功能部件包括了非对称加密算法、签名算法和杂凑算法等。本发明对TPM(可信平台模块)进行安全功能扩展和命令扩展,使得TPM(可信平台模块)在系统启动过程中从被动设备变为主动设备,具有认证、加载和执行软件的功能,解决系统启动过程中存在的TOCTTOU(软件加载和软件运行不一致)问题。
发明内容
本发明所要解决的技术问题是:在系统启动过程中TPM(可信平台模块)从被动设备变为主动设备,具有认证、加载和执行软件的功能;通过TPM(可信平台模块)的密码功能对ACM(认证代码模块)进行签名;系统启动过程中将BIOS(基本输入输出系统)、VCaller(虚拟机系统加载器)分别与BIOS-ACM(认证BIOS的代码模块)、VCaller-ACM(认证VCaller的代码模块)进行绑定,将ACM(认证代码模块)与TPM(可信平台模块)进行绑定,基于TPM(可信平台模块)实现STE(软件可信执行)的方法如图1所示。
本发明解决其技术问题采用的技术方案是:
(1)为实现系统启动过程中TPM(可信平台模块)从被动设备变为主动设备,使其具有认证、加载和执行软件的功能,需要对pTPM(可信平台模块)进行安全功能扩展和命令扩展:使其能够对认证BIOS-ACM指令和认证VCaller-ACM指令进行接收和处理,能够在TPM(可信平台模块)内部认证区域对ACM(认证代码模块)进行认证和执行,能够访问LPC(低引脚数目)地址空间上的数据。
(2)通过TPM的密码功能对ACM(认证代码模块)进行签名并生成ACM结构体,其结构体主要包括首部、公钥、签名块、可填充空间和主体,ACM结构体如图2所示。
(3)通过TPM的签名功能实现BIOS、VCaller分别与BIOS-ACM、VCaller-ACM绑定,通过TPM内部认证区域对ACM(认证代码模块)进行认证,实现ACM(认证代码模块)与TPM(可信平台模块)绑定,其绑定过程分别如图3、图4所示。
本发明基于可信平台模块实现软件可信执行的方法,其步骤如下:
(1)软件签名
系统启动前,通过TPM(可信平台模块)的密码功能产生密钥对,将公钥填充到ACM结构体中,用私钥对ACM(认证代码模块)进行签名,签名完成后发布ACM(认证代码模块);
(2)软件认证
TPM(可信平台模块)执行ACM(认证代码模块)之前,首先在内部认证区域对ACM(认证代码模块)进行认证:TPM(可信平台模块)读取ACM(认证代码模块)中的公钥并计算杂凑值,将其与存储于TPM(可信平台模块)内部的公钥杂凑值进行比较;然后TPM(可信平台模块)读取ACM(认证代码模块)中的公钥对ACM(认证代码模块)中的签名块进行解密并验证其有效性;
(3)软件执行
BIOS-ACM、VCaller-ACM分别对BIOS、VCaller进行完整性度量、完整性存储和执行。
本发明提供的方法与现有技术相比具有以下的有益效果:
第一,在系统启动过程中TPM从被动设备变为主动设备,具有认证、加载和执行软件的功能;本发明改变了TCP中TPM作为被动设备的现状,通过让TPM主动参与到软件验证过程,将软件加载、认证和执行约束到TPM内部的封闭环境,不受外界环境影响,可以有效增强软件的安全性;
第二,通过TPM的密码功能产生密钥对,公钥用于对ACM进行验证,私钥安全存储于TPM内部并用于对软件进行签名;本发明通过TPM产生密钥对,由于TPM具有物理上受保护的特点,使得攻击者很难直接获取密钥;另一方面,TPM是产生密钥的主体,它可以很方便的生成密钥对,一旦软件需要升级,TPM能够快速地对软件对应的ACM结构体进行更新,并且TPM自带的密钥树层次结构可以很方便的对密钥进行管理,减少了密钥管理带来的负担;
第三,系统启动过程中将BIOS、VCaller分别与BIOS-ACM、VCaller-ACM进行绑定,将ACM与TPM进行绑定,解决了系统启动过程中存在的TOCTTOU问题;对于现有主要采用虚拟机系统的平台来说,本发明可以有效保护VCaller的安全性,防范TOCTTOU攻击,增强系统的安全强度。
附图说明
图1为本发明基于TPM实现STE示意图。
图2为本发明ACM结构体示意图。
图3为本发明TPM认证BIOS-ACM流程示意图。
图4为本发明TPM认证VCaller-ACM流程示意图。
具体实施方式
本发明提出了基于TPM实现STE的方法,具体为:系统启动后,BIOS、VCaller将TPM签名后的BIOS-ACM、VCaller-ACM分别发送给TPM执行。TPM首先在内部认证区域对ACM进行认证,认证通过则执行ACM。BIOS-ACM、VCaller-ACM分别负责对BIOS、VCaller进行完整性度量、完整性存储和执行。
本发明提供的上述基于TPM实现STE的方法包含了软件签名、软件认证和软件执行。
1.软件签名
软件签名包括以下几个步骤:
(1)运行AAP(ACM辅助程序);
(2)AAP使用TPM生成密钥对Kp和Ks,并将公钥Kp的杂凑值H(Kp)存储到TPM,私钥Ks存储于TPM内部;
(3)AAP读取公钥Kp,将其填充到ACM结构体中;
(4)AAP计算ACM首部HeadACM和ACM主体BodyACM的杂凑值H(HeadACM||BodyACM)并发送给TPM,TPM用私钥Ks对H(HeadACM||BodyACM)进行签名,得到签名结果SigACM=(H(HeadACM||BodyACM))Ks,AAP把SigACM填充到ACM结构体中。
2.软件认证
软件认证包括对BIOS-ACM的认证和对VCaller-ACM的认证。
BIOS-ACM的认证流程主要包括以下几个步骤:
(1)BIOS给TPM发起认证BIOS-ACM指令;
(2)TPM将BIOS中的ACMBIOs读入到TPM内部认证区域;
(3)TPM计算ACMBIOS结构体中公钥的杂凑值H(Kp),并与存储于TPM内部的公钥杂凑值H’(Kp)进行验证;
(4)若H’(Kp)=H(Kp),TPM继续验证ACMBIOS结构体中首部和主体的完整性,Hash’ACM=H(HeadACM||BodyACM),HashACM=(SigACM)Kp,SigACM是ACM的签名块;
(5)若Hash’ACM=HashACM,则TPM开始执行ACMBIOS的主体BodyACM。VCaller-ACM的认证流程主要包括以下几个步骤:
(1)OS Loader(操作系统加载器)将VCaller从磁盘加载到TPM地址空间;
(2)VCaller给TPM发起认证VCaller-ACM指令;
(3)TPM将ACMVCaller读入到TPM内部认证区域;
(4)TPM计算ACMVCaller结构体中公钥的杂凑值H(Kp),并与存储于TPM内部的公钥杂凑值H′(Kp)进行验证;
(5)若H’(Kp)=H(Kp),TPM继续验证ACMVCaller结构体中首部和主体的完整性,Hash’ACM=H(HeadACM||BodyACM),HashACM=(SigACM)Kp,其中SigACM是ACM的签名块;
(6)若Hash’ACM=HashACM,则TPM开始执行ACMVCaller的主体BodyACM
3.软件执行
ACMBIOS的BodyACM完成以下执行流程:
(1)将BIOS的杂凑值存储到TPM;
(2)运行BIOS。
ACMVCaller的BodyACM完成以下执行流程:
(1)将虚拟机系统内核文件的杂凑值存储到TPM;
(2)运行虚拟机系统内核文件。
下面结合附图对本发明作进一步说明。
1.软件可信执行
对于目前的TCP来说,软件的安全是通过完整性度量来保证的,而目前软件的开源性和脆弱性使得攻击者具备下列攻击能力:将正确代码的完整性度量值存储到TPM,而加载执行预先准备好的恶意代码。例如,在一个TCP上,攻击者事先获得平台配置信息P={Pi|0≤i≤15},这里i代表系统启动的不同阶段,假设在系统启动到某一个阶段Sj,由于攻击者已经获得Sj之前的平台配置信息,因此攻击者能够将事先获得的正确配置信息P’={Pj|0≤j≤i}存储到TPM中,并且加载执行预先准备好的恶意代码Mj,对于TCP自身或远程验证方来说,这种攻击是无法检测到的。
因此需要一个安全的软件运行环境,将软件的认证、加载和执行过程约束到封闭环境中,并且这三个过程都是原子过程,也就是说这三个过程要么都做,要么都不做,并且实施体只能是安全硬件。基于上述目标,本发明提出了基于TPM的STE技术。
2.ACM结构体
图2说明了ACM结构体包含了首部、公钥、签名块、可填充空间和主体。首部用于标识ACM,公钥是TPM产生的公钥,签名块是TPM用私钥对首部和主体的签名值,主体是ACM的运行实体。
ACM结构体中的公钥和签名块是通过TPM填充的,公钥和签名块用于对ACM进行验证,保证ACM首部和ACM主体的完整性和可用性。
验证ACM的过程主要包含以下步骤:
(1)TPM接收ACM结构体,将其加载到内部认证区域;
(2)TPM读取ACM结构体中的公钥,计算其杂凑值并与TPM存储的公钥杂凑值进行比较;
(3)TPM读取ACM首部和ACM主体计算其杂凑值,TPM使用公钥对签名块进行解密得到杂凑值,TPM比较两个杂凑值;
(4)TPM对ACM主体进行完整性度量和完整性存储;
(5)TPM执行ACM主体。
3.TPM地址空间
ACM分为BIOS-ACM和VCaller-ACM,BIOS-ACM是位于主板BIOS中的模块,其安全性通过物理安全来确保。VCaller-ACM存储于磁盘,TPM和主板之间通过LPC总线相连,为保证TPM能够正确读取VCaller-ACM,VCaller必须能够把VCaller-ACM映射到TPM地址空间上[2]
4.完整性度量
TCP通过PCR(平台配置寄存器)反映当前平台的配置信息,目前TCP的大部分PCR是可以被随意写入的,这种方式会导致攻击者发起TOCTTOU攻击,为了保证写入PCR操作的正确性,本发明把对特定PCR的写入操作交给TPM完成,平台上的其它任何实体都没有写入权利。
5.可信度量根
对于TCP而言,CRTM是整个平台的可信度量根,它的安全性确保了整个平台的安全。但是CRTM是位于BIOS中的一段代码,通常是不同BIOS厂商发布的,没有经过专门的安全认证,并且用户可以自主地对BIOS进行升级,因此存在着安全上的隐患。本发明将TPM作为CA(证书授权中心),所有ACM的创建、使用和销毁都需要经过TPM来完成,ACM在TPM内部认证区域执行,因此可大幅度提高平台可信度量根的安全性。
6.作为主动设备的TPM
本发明提出的STE主要是通过TPM来完成的,因此需要对作为主动设备的TPM进行安全功能扩展和命令扩展,主要有:
(1)认证指令,包含接收和处理认证BIOS-ACM指令和认证VCaller-ACM指令;
(2)执行软件,在TPM内部认证区域运行ACM主体;
(3)访问地址空间,TPM能够访问LPC地址空间上的ACM结构体;
(4)完整性度量和完整性存储,TPM能够对软件代码进行完整性度量和完整性存储。

Claims (1)

1.一种基于可信平台模块实现软件可信执行的方法,其特征是:其步骤如下:
(1)为解决可信计算系统启动过程中存在的软件加载和软件运行不一致问题,将TPM从被动设备设计为主动设备,使其具有认证、加载和执行软件的功能;所述的认证,加载和执行软件功能为:
①.软件签名
软件签名包括以下几个步骤:
a、运行ACM辅助程序(AAP);
b、AAP使用TPM生成密钥对Kp和Ks,并将公钥Kp的杂凑值H(Kp)存储到TPM,私钥Ks存储于TPM内部;
c、AAP读取公钥Kp,将其填充到ACM结构体中;
d、AAP计算ACM首部HeadACM和ACM主体BodyACM的杂凑值H(HeadACM||BodyACM)并发送给TPM,TPM用私钥Ks对H(HeadACM||BodyACM)进行签名,得到签名结果SigACM=(H(HeadACM||BodyACM))Ks,AAP把SigACM填充到ACM结构体中;
②.软件认证
软件认证包括对BIOS-ACM的认证和对VCaller-ACM的认证,
BIOS-ACM的认证流程主要包括以下几个步骤:
a、BIOS给TPM发起认证BIOS-ACM指令;
b、TPM将BIOS中的ACMBIOS读入到TPM内部认证区域;
c、TPM计算ACMBIOS结构体中公钥的杂凑值H(Kp),并与存储于TPM内部的公钥杂凑值H’(Kp)进行验证;
d、若H’(Kp)=H(Kp),TPM继续验证ACMBIOS结构体中首部和主体的完整性,Hash’ACM=H(HeadACM||BodyACM),HashACM=(SigACM)KP,SigACM是ACM的签名块;
e、若Hash’ACM=HashACM,则TPM开始执行ACMBIOS的主体BodyACM,VCaller-ACM的认证流程主要包括以下几个步骤:
a、操作系统加载器(OS Loader)将VCaller从磁盘加载到TPM地址空间;
b、VCaller给TPM发起认证VCaller-ACM指令;
c、TPM将ACMVCaller读入到TPM内部认证区域;
d、TPM计算ACMVCaller结构体中公钥的杂凑值H(Kp),并与存储于TPM内部的公钥杂凑值H’(Kp)进行验证;
e、若H’(Kp)=H(Kp),TPM继续验证ACMVCaller结构体中首部和主体的完整性,Hash’ACM=H(HeadACM||BodyACM),HashACM=(SigACM)KP,其中SigACM是ACM的签名块;
f、若Hash’ACM=HashACM,则TPM开始执行ACMVCaller的主体BodyACM
③.软件执行
ACMBIOS的BodyACM完成以下执行流程:
a、将BIOS的杂凑值存储到TPM;
b、运行BIOS;
(2)作为主动设备的TPM应满足:能够对认证BIOS-ACM指令和认证VCaller-ACM指令进行接收和处理,能够在TPM内部认证区域对ACM进行认证和执行,能够访问低引脚数目(LPC)地址空间上的数据;
(3)通过TPM的密码功能对ACM进行签名并生成ACM结构体,其结构体主要包括首部、公钥、签名块、可填充空间和主体;
(4)通过TPM的签名功能实现BIOS、VCaller分别与BIOS-ACM、VCaller-ACM绑定,通过TPM内部认证区域对ACM进行认证,实现ACM与TPM绑定。
CN201010243074XA 2010-07-30 2010-07-30 基于可信平台模块实现软件可信执行的方法 Expired - Fee Related CN101908115B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010243074XA CN101908115B (zh) 2010-07-30 2010-07-30 基于可信平台模块实现软件可信执行的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010243074XA CN101908115B (zh) 2010-07-30 2010-07-30 基于可信平台模块实现软件可信执行的方法

Publications (2)

Publication Number Publication Date
CN101908115A CN101908115A (zh) 2010-12-08
CN101908115B true CN101908115B (zh) 2013-09-11

Family

ID=43263572

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010243074XA Expired - Fee Related CN101908115B (zh) 2010-07-30 2010-07-30 基于可信平台模块实现软件可信执行的方法

Country Status (1)

Country Link
CN (1) CN101908115B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3872666A1 (fr) * 2015-01-30 2021-09-01 Enrico Maim Systèmes et procédés pour la gestion d'engagements en réseau d'entités sécurisées
CN106815494B (zh) * 2016-12-28 2020-02-07 中软信息系统工程有限公司 一种基于cpu时空隔离机制实现应用程序安全认证的方法
US10230527B2 (en) * 2017-04-19 2019-03-12 Continental Automotive Systems, Inc. Method and apparatus to quickly authenticate program using a security element
WO2019177563A1 (en) 2018-03-12 2019-09-19 Hewlett-Packard Development Company, L.P. Hardware security
CN112468473B (zh) * 2018-11-16 2023-10-24 创新先进技术有限公司 可信应用程序的远程证明方法及装置、电子设备
CN110543768B (zh) * 2019-08-23 2021-07-27 苏州浪潮智能科技有限公司 一种在bios中控制可信根的方法和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101251879A (zh) * 2006-12-29 2008-08-27 英特尔公司 用于保护数据的方法和装置
CN101430747A (zh) * 2008-09-26 2009-05-13 武汉大学 基于可信嵌入式平台的移动设备及其安全存储方法
CN101576944A (zh) * 2008-11-20 2009-11-11 武汉大学 基于可信平台模块的计算机安全启动系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101251879A (zh) * 2006-12-29 2008-08-27 英特尔公司 用于保护数据的方法和装置
CN101430747A (zh) * 2008-09-26 2009-05-13 武汉大学 基于可信嵌入式平台的移动设备及其安全存储方法
CN101576944A (zh) * 2008-11-20 2009-11-11 武汉大学 基于可信平台模块的计算机安全启动系统

Also Published As

Publication number Publication date
CN101908115A (zh) 2010-12-08

Similar Documents

Publication Publication Date Title
US20200272739A1 (en) Performing an action based on a pre-boot measurement of a firmware image
CN109313690B (zh) 自包含的加密引导策略验证
US10244394B2 (en) Method and update gateway for updating an embedded control unit
US10885197B2 (en) Merging multiple compute nodes with trusted platform modules utilizing authentication protocol with active trusted platform module provisioning
US9405912B2 (en) Hardware rooted attestation
US7711960B2 (en) Mechanisms to control access to cryptographic keys and to attest to the approved configurations of computer platforms
CN101176100B (zh) 提供基于软件的安全协处理器的方法和装置
EP2979221B1 (en) Systems, methods and apparatuses for secure storage of data using a security-enhancing chip
US7962738B2 (en) Hypervisor runtime integrity support
CN103038745B (zh) 扩展完整性测量
EP3033710B1 (en) Secure os boot as per reference platform manifest and data sealing
EP3637297A1 (en) Securing firmware
CN101908115B (zh) 基于可信平台模块实现软件可信执行的方法
US9749141B2 (en) Secure boot devices, systems, and methods
CN103927490A (zh) 操作系统安全启动方法及装置
KR20090080050A (ko) 소프트웨어 신뢰성 검증 방법, 장치 및 컴퓨터 프로그램 제품
US11604881B2 (en) Verification of a provisioned state of a platform
CN112699419A (zh) 安全执行可延伸固件应用程序的方法及计算器设备
CN105308610A (zh) 用于设备上的平台和用户应用安全性的方法和系统
CN112511306A (zh) 一种基于混合信任模型的安全运行环境构建方法
US9122864B2 (en) Method and apparatus for transitive program verification
EP3176723A1 (en) Computer system and operating method therefor
CN113448681A (zh) 一种虚拟机监控器公钥的注册方法、设备和存储介质
Futral et al. Fundamental principles of intel® txt
CN110188530A (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130911

Termination date: 20190730