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

文档序号:6606970阅读:210来源:国知局
专利名称:基于可信平台模块实现软件可信执行的方法
技术领域
本发明涉及计算机信息安全技术领域,主要涉及基于TPM(可信平台模块)实现 STE(软件可信执行)的方法,通过TPM(可信平台模块)实现软件签名、软件认证和软件执 行,解决系统启动过程中存在的T0CTT0U(软件加载和软件运行不一致)问题。
背景技术
目前TCP (可信计算平台)已经逐渐成为个人日常使用的台式机和笔记本,TCP (可 信计算平台)是TCG(可信计算组织)提出并已实现的一种商业产品,TCP (可信计算平台) 以完整性度量的方式对系统中的软件进行保护,通过杂凑值反映出平台当前的运行状态, 提供一种判别系统环境是否安全的方法。根据TCG(可信计算组织)规范,TCP(可信计算平台)从CRTM(可信度量根核) 开始,首先由CRTM(可信度量根核)对平台的下一个运行软件进行完整性度量,并将完整 性度量结果存储到TPM(可信平台模块),然后CRTM(可信度量根核)加载该软件到内存运 行。该软件继续对平台的下一个运行软件进行完整性度量和完整性存储。就这样,TCP(可 信计算平台)从信任根开始到硬件平台、到操作系统加载器、再到操作系统及应用,逐级认 证,从而把信任链扩展到整个系统。在TCP(可信计算平台)系统启动过程中,一方面,TCP(可信计算平台)仅仅存储 软件代码的完整性度量值,并没有验证度量值的正确性,因此也就无法得知软件代码的安 全性;另一方面,软件自身存在着安全脆弱性,攻击者可以在TCP(可信计算平台)系统启动 阶段植入恶意代码,造成如下的攻击攻击者将正确代码的完整性度量值存储到TPM,而加 载执行预先准备好的恶意代码,即T0CTT0U(软件加载和软件运行不一致)攻击。TPM(可信平台模块)是TCP(可信计算平台)的核心部件,它是一个含有密码运算 部件和存储部件的小型片上系统。TPM(可信平台模块)的密码功能部件包括了非对称加密 算法、签名算法和杂凑算法等。本发明对TPM(可信平台模块)进行安全功能扩展和命令扩 展,使得TPM(可信平台模块)在系统启动过程中从被动设备变为主动设备,具有认证、加载 和执行软件的功能,解决系统启动过程中存在的T0CTT0U (软件加载和软件运行不一致)问 题。

发明内容
本发明所要解决的技术问题是在系统启动过程中TPM(可信平台模块)从被动 设备变为主动设备,具有认证、加载和执行软件的功能;通过TPM(可信平台模块)的密码 功能对ACM(认证代码模块)进行签名;系统启动过程中将BIOS(基本输入输出系统)、 VCaller (虚拟机系统加载器)分别与BIOS-ACM(认证BIOS的代码模块)、VCalIer-ACM(认 证VCaller的代码模块)进行绑定,将ACM(认证代码模块)与TPM(可信平台模块)进行 绑定,基于TPM(可信平台模块)实现STE(软件可信执行)的方法如图1所示。本发明解决其技术问题采用的技术方案是
(1)为实现系统启动过程中TPM(可信平台模块)从被动设备变为主动设备,使 其具有认证、加载和执行软件的功能,需要对TPM(可信平台模块)进行安全功能扩展和命 令扩展使其能够对认证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(认证代码模块)中的签名块进行 解密并验证其有效性;⑶软件执行BIOS-ACM、VCaller-ACM分别对BIOS、VCaller进行完整性度量、完整性存储和执 行。本发明提供的方法与现有技术相比具有以下的有益效果第一,在系统启动过程中TPM从被动设备变为主动设备,具有认证、加载和执行软 件的功能;本发明改变了 TCP中TPM作为被动设备的现状,通过让TPM主动参与到软件验证 过程,将软件加载、认证和执行约束到TPM内部的封闭环境,不受外界环境影响,可以有效 增强软件的安全性;第二,通过TPM的密码功能产生密钥对,公钥用于对ACM进行验证,私钥安全存储 于TPM内部并用于对软件进行签名;本发明通过TPM产生密钥对,由于TPM具有物理上受保 护的特点,使得攻击者很难直接获取密钥;另一方面,TPM是产生密钥的主体,它可以很方 便的生成密钥对,一旦软件需要升级,TPM能够快速地对软件对应的ACM结构体进行更新, 并且TPM自带的密钥树层次结构可以很方便的对密钥进行管理,减少了密钥管理带来的负 担;第三,系统启动过程中将BI0S、VCaller分别与BIOS-ACM、VCaller_ACM进行绑定, 将ACM与TPM进行绑定,解决了系统启动过程中存在的T0CTT0U问题;对于现有主要采用虚 拟机系统的平台来说,本发明可以有效保护VCaller的安全性,防范T0CTT0U攻击,增强系 统的安全强度。


图1为本发明基于TPM实现STE示意图。图2为本发明ACM结构体示意图。图3为本发明TPM认证BIOS-ACM流程示意图。图4为本发明TPM认证VCalIer-ACM流程示意图。
具体实施例方式本发明提出了基于TPM实现STE的方法,具体为系统启动后,BIOS、VCaller将 TPM签名后的BIOS-ACM、VCaller-ACM分别发送给TPM执行。TPM首先在内部认证区域对 ACM进行认证,认证通过则执行ACM。BIOS-ACM、VCalIer-ACM分别负责对BI0S、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 主体 B0dyACM 的杂凑值 H (HeadACM | | BodyACM)并发 送给TPM,TPM用私钥Ks对H(HeadACM| | BodyACM)进行签名,得到签名结果SigAQ( = (H(HeadACM
I BodyACM)) Ks, AAP 把 SigACM 填充到 ACM 结构体中。2.软件认证软件认证包括对BIOS-ACM的认证和对VCaller-ACM的认证。BIOS-ACM的认证流程主要包括以下几个步骤(1) BIOS 给 TPM 发起认证 BI0S-ACM 指令;(2) TPM将BIOS中的ACMbiqs读入到TPM内部认证区域;(3) TPM计算ACMbiqs结构体中公钥的杂凑值H(Kp),并与存储于TPM内部的公钥杂 凑值H’ (Kp)进行验证;(4)若H,(Kp) = H(Kp), TPM继续验证ACMbiqs结构体中首部和主体的完整性, Hash,ACM = H(HeadACM | BodyACM),HashACM = (SigACM)KP, SigACM 是 ACM 的签名块;(5)若 Hash,ACM = HashACM,则 TPM 开始执行 ACMbiqs 的主体 BodyACM。VCaller-ACM 的认证流程主要包括以下几个步骤(1) OS Loader (操作系统加载器)将VCaller从磁盘加载到TPM地址空间;(2) VCaller 给 TPM 发起认证 VCaller-ACM 指令;(3) TPM将ACMVcaller读入到TPM内部认证区域;(4) TPM计算ACMvcalle,结构体中公钥的杂凑值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的BodyAc:M完成以下执行流程(1)将BIOS的杂凑值存储到TPM ;(2)运行 BIOS。ACMvcaller的BodyACM完成以下执行流程(1)将虚拟机系统内核文件的杂凑值存储到TPM ;(2)运行虚拟机系统内核文件。下面结合附图对本发明作进一步说明。1.软件可信执行对于目前的TCP来说,软件的安全是通过完整性度量来保证的,而目前软件的开 源性和脆弱性使得攻击者具备下列攻击能力将正确代码的完整性度量值存储到TPM,而 加载执行预先准备好的恶意代码。例如,在一个TCP上,攻击者事先获得平台配置信息P = {PjO^ i < 15},这里i代表系统启动的不同阶段,假设在系统启动到某一个阶段Sj,由于 攻击者已经获得Sji前的平台配置信息,因此攻击者能够将事先获得的正确配置信息P’ = {Pj I O彡j彡i}存储到TPM中,并且加载执行预先准备好的恶意代码Mj,对于TCP自身或远 程验证方来说,这种攻击是无法检测到的。因此需要一个安全的软件运行环境,将软件的认证、加载和执行过程约束到封闭 环境中,并且这三个过程都是原子过程,也就是说这三个过程要么都做,要么都不做,并且 实施体只能是安全硬件。基于上述目标,本发明提出了基于TPM的STE技术。2. ACM 结构体图2说明了 ACM结构体包含了首部、公钥、签名块、可填充空间和主体。首部用于 标识ACM,公钥是TPM产生的公钥,签名块是TPM用私钥对首部和主体的签名值,主体是ACM 的运行实体。ACM结构体中的公钥和签名块是通过TPM填充的,公钥和签名块用于对ACM进行验 证,保证ACM首部和ACM主体的完整性和可用性。验证ACM的过程主要包含以下步骤(1) TPM接收ACM结构体,将其加载到内部认证区域;⑵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 是可以被随意写入的,这种方式会导致攻击者发起T0CTT0U攻击,为了保证写入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能够对软件代码进行完整性度量和完整性存 储。
权利要求
一种基于可信平台模块实现软件可信执行的方法,其特征是其步骤如下(1)为实现系统启动过程中TPM从被动设备变为主动设备,使其具有认证、加载和执行软件的功能,需要对TPM进行安全功能扩展和命令扩展使其能够对认证BIOS ACM指令和认证VCaller ACM指令进行接收和处理,能够在TPM内部认证区域对ACM进行认证和执行,能够访问LPC(低引脚数目)地址空间上的数据;(2)通过TPM的密码功能对ACM进行签名并生成ACM结构体,其结构体主要包括首部、公钥、签名块、可填充空间和主体;(3)通过TPM的签名功能实现BIOS、VCaller分别与BIOS ACM、VCaller ACM绑定,通过TPM内部认证区域对ACM进行认证,实现ACM与TPM绑定。
2.根据权利要求1所述的基于可信平台模块实现软件可信执行的方法,其特征是采 用以下步骤的方法(1)软件签名系统启动前,通过TPM的密码功能产生密钥对,将公钥填充到ACM结构体中,用私钥对 ACM进行签名,签名完成后发布ACM ;(2)软件认证TPM执行ACM之前,首先在内部认证区域对ACM进行认证TPM读取ACM中的公钥并计 算杂凑值,将其与存储于TPM内部的公钥杂凑值进行比较;然后TPM读取ACM中的公钥对 ACM中的签名块进行解密并验证其有效性;(3)软件执行BIOS-ACM、VCaller-ACM分别对BIOS、VCaller进行完整性度量、完整性存储和执行。
全文摘要
一种基于可信平台模块实现软件可信执行的方法,系统启动后,BIOS、VCaller将TPM签名后的BIOS-ACM、VCaller-ACM分别发送给TPM;TPM首先在内部认证区域对ACM进行认证,认证通过则执行ACM。其优点是在系统启动过程中TPM从被动设备成为主动设备,具有认证、加载和执行软件的功能;系统启动过程中将BIOS、VCaller分别与BIOS-ACM、VCaller-ACM进行绑定,将ACM与TPM进行绑定,解决了系统启动过程中存在的软件加载和软件运行不一致问题。
文档编号G06F9/445GK101908115SQ20101024307
公开日2010年12月8日 申请日期2010年7月30日 优先权日2010年7月30日
发明者徐明迪, 李峻林, 李鉴, 赵恒 , 陆炜, 黄伟 申请人:中国船舶重工集团公司第七○九研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1