CN115130106A - 一种通过fTPM实现可信启动的方法及相关装置 - Google Patents
一种通过fTPM实现可信启动的方法及相关装置 Download PDFInfo
- Publication number
- CN115130106A CN115130106A CN202110325716.9A CN202110325716A CN115130106A CN 115130106 A CN115130106 A CN 115130106A CN 202110325716 A CN202110325716 A CN 202110325716A CN 115130106 A CN115130106 A CN 115130106A
- Authority
- CN
- China
- Prior art keywords
- ftpm
- executing
- processor
- value
- storage space
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 153
- 238000005259 measurement Methods 0.000 claims abstract description 166
- 230000008569 process Effects 0.000 claims abstract description 94
- 238000012546 transfer Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 4
- 102100033668 Cartilage matrix protein Human genes 0.000 claims 10
- 101001018382 Homo sapiens Cartilage matrix protein Proteins 0.000 claims 10
- 238000004891 communication Methods 0.000 description 40
- 238000010586 diagram Methods 0.000 description 14
- 238000003752 polymerase chain reaction Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种通过基于固件的可信平台模块fTPM实现可信启动的方法,该方法应用于支持可信执行环境的计算机系统中。该方法包括:通过执行统一可扩展固件接口UEFI,在可信执行环境中分配存储空间;通过执行UEFI,对fTPM驱动组件进行度量,得到第一度量值,并将第一度量值存储于存储空间中;通过执行fTPM驱动组件,启动fTPM;通过执行fTPM,将存储空间中的第一度量值扩展到fTPM的平台配置寄存器中;根据PCR中的度量值对计算机系统的启动过程进行验证。通过该方法,整个度量过程所得到的度量值都能够扩展到PCR中,处理器能够基于PCR中的度量值对计算机系统的启动过程进行验证,保证了计算机系统启动过程的安全性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种通过基于固件的可信平台模块(firmware based Trusted Platform Module,fTPM)实现可信启动的方法及相关装置。
背景技术
远程证明是可信计算整体解决方案中的关键技术之一,用户可以通过远程证明服务器认证远端设备是否处于一个可信状态。远程证明过程包括:远端设备在某些特定的时刻,对目标文件进行度量,得到度量证据(例如目标文件的摘要值);远端设备将得到的度量证据发送给远程证明服务器,由远程证明服务器根据度量证据来判断远端设备是否可信。
启动度量作为远程证明的关键度量阶段之一,能够解决设备在启动过程中系统被篡改或植入恶意代码的问题,从而保障设备启动过程中系统的完整性。通常,启动度量是借助硬件模块--可信平台模块(Trusted Platform Module,TPM)实现的。系统的启动度量过程遵循“先度量,再执行”的原则,即当前阶段代码负责度量下一个阶段的代码,由当前阶段代码将对下一个阶段的代码进行度量得到的度量值扩展到TPM的平台配置寄存器(Platform Configuration Register,PCR)中。此后下一阶段的代码成为更新后的当前阶段代码,对新的下一阶段的代码执行上述过程,这样逐次循环往复,将系统启动过程中所得到的度量值都扩展到PCR中。PCR中的扩展值作为系统启动阶段的度量证据,被设备发给远程证明服务器,由远程证明服务器判断设备是否处于可信状态。
在启动度量过程中,TPM是不可缺少的硬件模块。然而,出于成本的考虑,某些设备上可能没配置TPM。目前,对于没配置TPM的设备,能够通过fTPM来实现启动度量。其中,fTPM是指基于固件实现TPM功能的程序。但是,fTPM作为一个可信的应用程序,fTPM必须等可信执行环境操作系统(Trusted Execution Environment operating system,TEE OS)启动之后才能够启动。因此,通过fTPM来实现启动度量时,fTPM启动之前所得到的度量值无法扩展到PCR中,即远端设备只能够获取到fTPM启动之后的度量值。由于远端设备无法获得fTPM启动之前所得到的度量值,因此设备启动过程的安全性无法得到保障。
发明内容
本申请提供了一种通过fTPM实现可信启动的方法及相关装置,能够保证计算机系统启动过程的安全性。
本申请第一方面提供一种通过fTPM实现可信启动的方法,该方法应用于支持可信执行环境的计算机系统中。该方法包括:在第一时刻计算机系统上电,在计算机系统上电后,处理器通过执行统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI),在可信执行环境中分配存储空间,该存储空间用于存储在fTPM启动前所得到的度量值。处理器通过执行UEFI,对fTPM驱动组件进行度量,得到第一度量值,并将第一度量值存储于存储空间中。例如,处理器采用哈希算法计算fTPM驱动组件的摘要值,得到第一度量值,第一度量值包括fTPM驱动组件的摘要值和哈希算法的编号。在对fTPM驱动组件进行度量后,处理器通过执行fTPM驱动组件,启动fTPM。然后,处理器通过执行fTPM,将存储空间中的第一度量值扩展到fTPM的PCR中。其中,处理器将第一度量值扩展到fTPM的PCR中是指处理器将第一度量值中的摘要值与PCR中所存储的值进行拼接,得到拼接后的值;处理器再对拼接后的值进行度量,得到新的摘要值,并将该新的摘要值写入PCR中。最后,处理器根据PCR中的度量值对计算机系统的启动过程进行验证。
本方案中,通过在处理器执行第一次度量之前,在可信执行环境中分配一个安全的存储空间,并将fTPM启动前所得到的度量值存储至该存储空间中。在fTPM启动后,再由处理器将可信执行环境的存储空间中的度量值扩展到fTPM的PCR中,保证了度量过程的完整性。基于本方案,整个度量过程所得到的度量值都能够扩展到PCR中,处理器能够基于PCR中的度量值对计算机系统的启动过程进行验证,保证了计算机系统启动过程的安全性。此外,由于处理器是在可信执行环境中分配用于存储度量值的存储空间,该存储空间的安全性高,能够有效保障存储空间所存储的度量值的安全性。
可选的,处理器通过执行UEFI,对fTPM驱动组件进行度量,得到第一度量值,包括:处理器通过执行核心可信度量根(Core Root of Trust for Measurement,CRTM),对ARM可信固件(arm-trusted-firmware,ATF)进行度量,得到第一子度量值,并将第一子度量值存储于存储空间中。处理器通过执行ATF,对TEE OS进行度量并启动TEE OS,得到第二子度量值。其中,UEFI包括CRTM和ATF,该ATF用于得到fTPM驱动组件的度量值。处理器对fTPM驱动组件进行度量所得到的第一度量值包括第一子度量值和第二子度量值。此外,fTPM位于TEEOS中,因此处理器通过执行ATF,对TEE OS进行度量并启动,以使得fTPM启动后能够运行于TEE OS中。
可选的,处理器通过执行UEFI,对fTPM驱动组件进行度量,得到第一度量值,还包括:处理器通过执行ATF,对UEFI中的引导器(BootLoader)进行度量,得到第三子度量值。处理器通过执行BootLoader,对操作系统内核(OS Kernel)进行度量,得到第四子度量值。其中,第一度量值还包括第三子度量值和第四子度量值。OS Kernel包括fTPM驱动组件。因此,处理器对整个OS Kernel进行度量,即可完成对fTPM驱动组件的度量。
可选的,该方法还包括:处理器通过执行CRTM,将存储空间的地址存储于平台配置数据库(Platform Configuration Database,PCD)中。然后,处理器通过执行BootLoader,从平台配置数据库中获取存储空间的地址,并将存储空间的地址配置于OS Kernel的设备树源码中。最后,处理器通过执行fTPM驱动组件,从设备树源码中获取到存储空间的地址,并将设备树源码中的存储空间的地址通过共享内存传递给fTPM。这样,处理器在执行fTPM时,fTPM则能够从共享内存中获取到用于存储度量值的存储空间的地址,并且基于该存储空间的地址从存储空间中取出所存储的度量值。
可选的,处理器通过执行UEFI,对fTPM驱动组件进行度量,得到第一度量值,还包括:处理器通过执行ATF,对UEFI中的fTPM驱动组件进行度量,得到第五子度量值。其中,第一度量值还包括第五子度量值。
可选的,该方法还包括:处理器通过执行CRTM,将存储空间的地址存储于平台配置数据库中。处理器通过执行ATF,从平台配置数据库中获取存储空间的地址,并将存储空间的地址传递给TEE OS,TEE OS用于将存储空间的地址传递给fTPM。即,存储空间的地址的传递顺序为:CRTM>>PCD>>ATF>>TEE OS>>fTPM。
可选的,该方法还包括:处理器通过执行CRTM,将存储空间的地址传递给ATF。处理器通过执行ATF,将存储空间的地址传递给TEE OS,TEE OS用于将存储空间的地址传递给fTPM。即,存储空间的地址的传递顺序为:CRTM>>ATF>>TEE OS>>fTPM。
可选的,处理器根据PCR中的度量值对计算机系统的启动过程进行验证,包括:处理器获取计算机系统的历史启动过程中所获得的历史度量值。其中,历史启动过程是指计算机系统在第一时刻之前发生的启动过程,例如计算机系统的第一次启动过程。处理器通过比对历史度量值以及PCR中的度量值,对计算机系统的启动过程进行验证。
可选的,处理器根据PCR中的度量值对启动过程进行验证,包括:处理器向计算机系统中的收发器传递PCR中的度量值。收发器再向服务器发送从处理器接收到的PCR中的度量值,以使得服务器根据该PCR中的度量值对启动过程进行验证。
在服务器中存储有该计算机系统的启动过程的度量参考值,服务器在接收到收发器所发送的PCR中的度量值之后,服务器对比度量参考值和该PCR中的度量值。如果度量参考值与该PCR中的度量值相同,则证明上述的计算机系统的启动过程处于可信状态;如果度量参考值与该PCR中的度量值不相同,则证明该计算机系统的启动过程处于不可信状态。
可选的,处理器通过执行UEFI,对fTPM驱动组件进行度量,包括:处理器通过执行UEFI,采用哈希算法(例如SHA256算法或SHA512算法)计算fTPM驱动组件的摘要值,得到第一度量值。其中,第一度量值包括fTPM驱动组件的摘要值和哈希算法的编号。fTPM驱动组件的摘要值为该fTPM驱动组件完整性证明的证据。哈希算法的编号用于确定该fTPM驱动组件的摘要值对应的哈希算法。
可选的,该方法还包括:处理器获取对fTPM驱动组件进行度量所得到的度量信息,度量信息包括UEFI的信息、fTPM驱动组件的信息和/或第一度量值。处理器将度量信息记录到度量日志。处理器在对各个程序进行度量后,将得到的度量信息存储到度量日志中,能够便于运维人员快速确定计算机系统启动过程中出现问题的环节。
本申请第二方面提供一种计算机系统。计算机系统支持可信执行环境,例如,该计算机系统为基于ARMv8架构的计算机系统。计算机系统包括:处理器和存储器。在第一时刻计算机系统上电,在计算机系统上电后,处理器用于通过执行UEFI,在存储器的可信执行环境中分配存储空间,存储空间用于存储在fTPM启动前所得到的度量值;处理器还用于通过执行UEFI,对fTPM驱动组件进行度量,得到第一度量值,并将第一度量值存储于存储空间中;处理器还用于通过执行fTPM驱动组件,启动fTPM;处理器还用于通过执行fTPM,将存储空间中的第一度量值扩展到fTPM的平台状态寄存器PCR中;处理器还用于根据PCR中的度量值对计算机系统的启动过程进行验证。
可选的,处理器还用于通过执行核心可信度量根CRTM,对ARM可信固件ATF进行度量,得到第一子度量值,并将第一子度量值存储于存储空间中;处理器还用于通过执行ATF,对TEE OS进行度量并启动TEE OS,得到第二子度量值;其中,UEFI包括CRTM和ATF,ATF用于得到fTPM驱动组件的度量值,第一度量值包括第一子度量值和第二子度量值,fTPM位于TEEOS中。
可选的,处理器还用于通过执行ATF,对UEFI中的引导器BootLoader进行度量,得到第三子度量值;处理器还用于通过执行BootLoader,对操作系统内核OS Kernel进行度量,得到第四子度量值;其中,OS Kernel包括fTPM驱动组件,第一度量值还包括第三子度量值和第四子度量值。
可选的,处理器还用于通过执行CRTM,将存储空间的地址存储于平台配置数据库中;处理器还用于通过执行BootLoader,从平台配置数据库中获取存储空间的地址,并将存储空间的地址配置于OS Kernel的设备树源码中;处理器还用于通过执行fTPM驱动组件,将设备树源码中的存储空间的地址传递给fTPM。
可选的,处理器还用于通过执行ATF,对UEFI中的fTPM驱动组件进行度量,得到第五子度量值;其中,第一度量值还包括第五子度量值。
可选的,处理器还用于通过执行CRTM,将存储空间的地址存储于平台配置数据库中;处理器还用于通过执行ATF,从平台配置数据库中获取存储空间的地址,并将存储空间的地址传递给TEE OS,TEE OS用于将存储空间的地址传递给fTPM。
可选的,处理器还用于通过执行CRTM,将存储空间的地址传递给ATF;处理器还用于通过执行ATF,将存储空间的地址传递给TEE OS,TEE OS用于将存储空间的地址传递给fTPM。
可选的,处理器还用于获取计算机系统的历史启动过程中所获得的历史度量值,历史启动过程是计算机系统在第一时刻之前发生的启动过程;处理器还用于通过比对历史度量值以及PCR中的度量值,对启动过程进行验证。
可选的,计算机系统还包括收发器;处理器还用于向收发器传递PCR中的度量值;收发器用于向服务器发送PCR中的度量值,以使得服务器根据PCR中的度量值对启动过程进行验证。
可选的,处理器还用于通过执行UEFI,采用哈希算法计算fTPM驱动组件的摘要值,得到第一度量值,第一度量值包括fTPM驱动组件的摘要值和哈希算法的编号。
可选的,处理器还用于获取对fTPM驱动组件进行度量所得到的度量信息,度量信息包括UEFI的信息、fTPM驱动组件的信息和/或第一度量值;处理器还用于将度量信息记录到度量日志。
本申请第三方面提供一种计算机,计算机包括:处理器和存储器;其中,存储器中存储有计算机可读指令;处理器读取计算机可读指令以使计算机实现如第一方面的任意一种实施方式的方法。
本申请第四方面提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面的任意一种实施方式的方法。
本申请第五方面提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行如第一方面的任意一种实施方式的方法。
本申请第六方面提供一种芯片,包括一个或多个处理器。处理器中的部分或全部用于读取并执行存储器中存储的计算机指令,以执行上述任一方面任意可能的实施方式中的方法。可选的,芯片还包括存储器。可选的,芯片还包括通信接口,处理器与通信接口连接。通信接口用于接收需要处理的数据和/或信息,处理器从通信接口获取数据和/或信息,并对数据和/或信息进行处理,并通过通信接口输出处理结果。可选的,通信接口是输入输出接口或者总线接口。本申请提供的方法由一个芯片实现,或者由多个芯片协同实现。
附图说明
图1为本申请实施例提供的TrustZone技术相关的系统软件层面的示意图;
图2为本申请实施例提供的一种支持可信执行环境的计算机系统的示意图;
图3为本申请实施例提供的一种通过fTPM实现可信启动的方法300的流程示意图;
图4为本申请实施例提供的一种通过fTPM实现可信启动的方法400的流程示意图;
图5为本申请实施例提供的一种计算机系统启动过程中的度量示意图;
图6为本申请实施例提供的一种通过fTPM实现可信启动的方法600的流程示意图;
图7为本申请实施例提供的另一种计算机系统启动过程中的度量示意图;
图8为本申请实施例提供的一种计算机系统800的结构示意图;
图9为本申请实施例提供的一种计算机系统900的结构示意图;
图10为本申请实施例提供的一种芯片1000的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为了便于理解,以下先介绍本申请所涉及的一些技术术语。
可信平台模块(Trusted Platform Module,TPM):TPM是一种含有密码运算和存储部件的小型芯片系统,用于安全地存储用于验证平台(例如个人电脑等网络设备)安全性的信息,比如密码、证书或加密密钥等信息。
基于固件的可信平台模块(firmware based Trusted Platform Module,fTPM):fTPM是运行在可信执行环境中的一个程序,fTPM能够基于固件实现TPM功能。其中,fTPM的具体实现方式为:将libtpms等TPM模拟软件作为可信应用运行在可信执行环境中,并通过可信执行环境中的特定接口为TPM模拟软件提供TPM的能力。借助于可信执行环境,fTPM能够很好地保证内部敏感数据的安全性。
平台配置寄存器(Platform Configuration Register,PCR):PCR是TPM上的一个存储区域,用于存储TPM中的临时数据。
以上介绍了本申请所涉及的技术术语,以下将介绍本申请实施例提供的方法所应用的场景。
相关技术中,为了给计算机中的应用或组件提供一个安全的运行环境,ARM处理器引入了可信空间(TrustZone)技术。支持TrustZone技术的ARM处理器在运行时将工作状态划分为两种:安全状态和非安全状态,也称为安全世界态和正常世界态。一般的操作系统以及大部分的应用运行在正常世界状态中,正常世界状态内的开发资源相对于安全世界状态较为丰富,因此通常称正常世界状态为丰富执行环境(Rich Execution Environment,REE)。而可信任的操作系统运行于安全世界状态,通常称安全世界状态为可信执行环境(Trusted Execution Environment,TEE)。
当处理器处于安全状态时只能运行可信执行环境侧的代码,且具有丰富执行环境侧地址空间的访问权限。当处理核处于非安全状态时只能运行丰富执行环境侧的代码,且只能通过预先定义好的客户端接口来获取可信执行环境侧中特定的数据和调用特定的功能。
可以参阅图1,图1为本申请实施例提供的TrustZone技术相关的系统软件层面的示意图。如图1所示,处理器在运行时具有不同的执行等级(Execution Level,EL)。其中,用户模式用EL0表示;特权模式用EL1表示;Hyp模式用EL2表示,用于实现虚拟化技术的模式;监控(Monitor)模式用EL3表示。系统只有在Monitor模式下,才能实现安全状态和非安全状态的切换。
可以参阅图2,图2为本申请实施例提供的一种支持可信执行环境的计算机系统的示意图。如图2所示,计算机系统包括可信执行环境和丰富执行环境。例如,前述包括可信执行环境和丰富执行环境的计算机系统为基于ARMv8架构的计算机系统或者基于其他指令集架构的计算机系统。可信执行环境是专门为高安全敏感的应用提供的,能够保证应用的资源和数据的保密性、和完整性。通用的丰富执行环境是为传统操作系统以及通用提供的。在丰富执行环境侧执行的应用称为客户端应用程序(client application,CA),比如银行类应用等第三方支付应用。在可信执行环境侧执行的应用称为可信应用程序(trustedapplication,TA),比如执行签名、加解密计算等关键服务的应用(即上述的fTPM)。
由于TA运行在可信执行环境中,TA的部署/升级操作需要严格遵循可信执行环境发行方的安全验证规范,比如使用数字签名等措施,以确保可信执行环境各个环节是真正可信的。可信执行环境中包括可信执行环境内部应用程序编程接口(trusted executionenvironment internal application programming interface,TEE Internal API)和可信操作系统部件。TEE Internal API的主要作用为:向上提供可信操作系统部件的功能、与客户端应用程序CA通信、实现TA与TA通信以及提供安全存储、密码学功能和时间等功能。可信操作系统部件主要包括可信核心框架、可信功能、可信内核和可信执行环境TEE通信代理。其中,可信核心框架为TA提供类似操作系统的功能。可信功能为应用开发者提供支持能力。可信内核用于与平台硬件中的可信设备进行交互。可信执行环境通信代理为TA和CA提供一个安全的通信通道。例如,可信执行环境通信代理通过平台硬件将消息传递至丰富执行环境通信代理,实现TA和CA的交互。
丰富执行环境中包括可信执行环境客户端应用程序编程接口(trustedexecution environment client application programming interface,TEE ClientAPI)、可信执行环境功能应用程序编程接口(trusted execution environmentfunctional application programming interface,TEE Functional API)和多媒体操作系统。多媒体操作系统部件主要包括公共设备驱动和丰富执行环境通信代理。其中,丰富执行环境通信代理用于与可信执行环境进行通信,为CA和TA提供一个安全的通信通道。公共设备驱动用于驱动平台硬件中的公共设备。CA使用TEE Client API、TEE Functional API接入到由TA提供的安全服务。
基于图2所示的计算机系统,本申请实施例提供了一种通过fTPM实现可信启动的方法。请参阅图3,图3为本申请实施例提供的一种通过fTPM实现可信启动的方法300的流程示意图。如图3所示,方法300包括以下的步骤301至步骤305。
步骤301,通过执行UEFI,在可信执行环境中分配存储空间,该存储空间用于存储在fTPM启动前所得到的度量值。
在计算机系统上电后,计算机系统中的处理器则执行UEFI。其中,UEFI是一组集成在计算机的只读存储器上的程序,UEFI中包括基本输入输出的程序、加电自检程序和系统自启动程序等程序。基于UEFI中的程序,处理器执行UEFI,能够完成初始化硬件、检测硬件功能及引导操作系统等步骤。
由于UEFI中包括多个程序,因此处理器执行UEFI的过程具体为:处理器依次执行UEFI中的多个程序。在处理器执行UEFI中的某个目标程序之前,处理器通过执行该目标程序的前一个程序,对目标程序进行度量,从而得到目标程序的度量值。
在本实施例中,处理器对某一个程序(例如下文所提及的fTPM驱动组件)进行度量是指:处理器采用算法对程序文件的相关信息或者程序文件的内容进行测量,以提供完整性证明的证据。例如,处理器采用哈希(hash)算法对程序文件的内容进行测量,得到程序文件的摘要值,程序文件的摘要值为该程序文件完整性证明的证据。
为了保证能够安全地存储计算机系统启动过程中所得到的度量值,处理器在对UEFI中的程序进行度量之前,处理器在可信执行环境中分配存储空间。其中,处理器在可信执行环境中所分配的存储空间用于存储在fTPM启动前所得到的度量值。也就是说,处理器首先在可信执行环境中分配存储空间;然后,处理器再对UEFI中的程序进行度量,得到程序的度量值,并将程序的度量值存储于处理器在可信执行环境中所分配的存储空间中。
可选的,处理器在可信执行环境中分配存储空间的过程包括:处理器通过执行UEFI中的CRTM,初始化存储器中的一块存储空间,并将该存储空间指定为可信执行环境的空间。其中,CRTM为UEFI中的程序,且CRTM为处理器在计算机系统上电后执行的第一段代码。CRTM用于执行计算机系统上电后的首次度量。即,在计算机系统上电后,处理器通过执行CRTM,进行第一次度量。
相较于相关技术中的CRTM,本实施例中对CRTM的代码进行了改动。通过对CRTM的代码进行改动,能够使得处理器执行CRTM的过程包括以下的步骤1和步骤2。步骤1:处理器初始化存储器中的一块存储空间,并将该存储空间指定为可信执行环境的空间。步骤2:处理器对CRTM的下一个程序进行度量,得到CRTM的下一个程序的度量值,并将CRTM的下一个程序的度量值存储于处理器所分配的存储空间中。
为保证CRTM是不可改变的,CRTM通常存储于只读存储器中。即,将CRTM写入存储器之后不能再对该存储器进行写入操作,从而保证以CRTM为度量起点的整个度量过程的可靠性。
步骤302,通过执行UEFI,对fTPM驱动组件进行度量,得到第一度量值,并将第一度量值存储于存储空间中。
在计算机系统上电后,该计算机系统处于图1所示的Monitor模式。在计算机系统处于Monitor模式的情况下,UEFI中的任意一个程序都能够访问可信执行环境中的存储空间。因此,处理器在通过执行UEFI,对fTPM驱动组件进行度量并得到第一度量值之后,处理器能够将所得到的第一度量值存储于可信执行环境中的存储空间。
本实施例中,处理器通过执行UEFI,对fTPM驱动组件进行度量的方式有多种。
在一种可能的实现方式中,fTPM驱动组件设置在UEFI中。处理器通过执行UEFI中fTPM驱动组件的前一个程序,对fTPM驱动组件进行度量,得到第一度量值。
在另一种可能的实现方式中,fTPM驱动组件设置在操作系统内核(OS Kernel)中,OS Kernel为丰富执行环境中的操作系统。处理器通过执行UEFI中用于启动OS Kernel的引导器(BootLoader),对OS Kernel进行度量,得到第一度量值。由于fTPM驱动组件设置在OSKernel中,因此处理器对整个OS Kernel进行度量,即可完成对fTPM驱动组件的度量。
可选的,处理器对fTPM驱动组件进行度量,包括:处理器采用哈希算法(例如SHA256算法或SHA512算法)计算fTPM驱动组件的摘要值,得到第一度量值。第一度量值包括fTPM驱动组件的摘要值和哈希算法的编号。其中,fTPM驱动组件的摘要值为该fTPM驱动组件完整性证明的证据。哈希算法的编号用于确定fTPM驱动组件的摘要值对应的哈希算法。
可选的,第一度量值还包括PCR编号,PCR编号用于确定fTPM中的PCR。在一些情况下,fTPM中包括多个PCR,且同一个PCR上具有多个不同的空间,PCR上不同的空间用于扩展不同哈希算法的摘要值。因此,处理器需要基于哈希算法的编号以及PCR编号确定度量值在PCR中的扩展位置,并将度量值扩展到所确定的PCR中的扩展位置上。
步骤303,通过执行fTPM驱动组件,启动fTPM。
本实施例中,fTPM位于可信执行环境中,fTPM驱动组件则位于UEFI或OS Kernel中。因此,在处理器执行fTPM驱动组件的过程中,fTPM驱动组件基于可信执行环境与丰富执行环境之间的通信接口,向可信执行环境中的fTPM发送指令,从而启动可信执行环境中的fTPM。
步骤304,通过执行fTPM,将存储空间中的第一度量值扩展到fTPM的PCR中。
在fTPM启动之后,fTPM中的PCR能够被正常使用。因此,处理器通过执行fTPM,从可信执行环境的存储空间中取出第一度量值,并将第一度量值扩展到fTPM的PCR中。
本实施例中,处理器将度量值扩展到fTPM的PCR中是指:处理器将该度量值中的摘要值与PCR中所存储的值进行拼接,得到拼接后的值;处理器再对拼接后的值进行度量,得到新的摘要值,并将该新的摘要值写入PCR中。
步骤305,根据fTPM的PCR中的度量值对计算机系统的启动过程进行验证。
本实施例中,在计算机系统的启动过程中,处理器将启动过程中所得到的度量值扩展到fTPM的PCR中。因此,fTPM的PCR中存储有计算机系统的整个启动过程中的度量值。基于fTPM的PCR中的度量值,处理器能够对计算机系统的启动过程进行验证。
可选的,处理器对计算机系统的启动过程进行验证的方式有多种。
在一种可能的实现方式中,处理器向计算机系统中的收发器传递PCR中的度量值。该收发器再向服务器发送从处理器接收到的PCR中的度量值,以使得服务器根据接收到的PCR中的度量值对计算机系统的启动过程进行验证。
在服务器中存储有该计算机系统的启动过程的度量参考值,服务器在接收到收发器所发送的PCR中的度量值之后,服务器对比度量参考值和该PCR中的度量值。如果度量参考值与该PCR中的度量值相同,则证明上述的计算机系统的启动过程处于可信状态;如果度量参考值与该PCR中的度量值不相同,则证明计算机系统的启动过程处于不可信状态。
在另一种可能的实现方式中,处理器获取计算机系统的历史启动过程中所获得的历史度量值。处理器通过比对历史度量值以及PCR中的度量值,对计算机系统的启动过程进行验证。如果历史度量值与PCR中的度量值相同,则证明计算机系统的启动过程处于可信状态;如果历史参考值与该PCR中的度量值不相同,则证明计算机系统的启动过程处于不可信状态。
其中,上述的历史启动过程是指计算机系统在第一时刻之前发生的启动过程,例如计算机系统的第一次启动过程。上述的步骤301-步骤305是计算机系统在第一时刻上电后,由计算机系统的处理器执行的。也就是说,计算机系统在第一时刻上电后,计算机系统的处理器执行上述的步骤301-步骤305,得到上述的PCR中的度量值。在第一时刻之前,计算机系统上电,处理器执行类似于上述的步骤301-步骤305的步骤,得到历史度量值,并将该历史度量值存储于该计算机系统中。
这样一来,处理器通过对比计算机系统在第一时刻之前的启动过程的度量值与计算机系统在第一时刻之后的启动过程的度量值,则能够实现对计算机系统在第一时刻之后的启动过程进行验证。
本实施例中,通过在处理器执行度量之前,在可信执行环境中分配一个安全可靠的存储空间,并将fTPM启动前所得到的度量值存储至该存储空间中。在fTPM启动后,再由处理器将可信执行环境的存储空间中的度量值扩展到fTPM的PCR中,保证了度量过程的完整性。基于本方案,整个度量过程所得到的度量值都能够扩展到PCR中,处理器能够基于PCR中的度量值对计算机系统的启动过程进行验证,保证了计算机系统启动过程的安全性。
以上实施例介绍了通过fTPM实现可信启动的方法的流程,以下将结合具体例子分别介绍fTPM驱动组件位于不同位置时,通过fTPM实现可信启动的过程。
图4为本申请实施例提供的一种通过fTPM实现可信启动的方法400的流程示意图。如图4所示,该方法400包括以下的步骤401至步骤408。
步骤401,通过执行CRTM,在可信执行环境中分配存储空间,该存储空间用于存储在fTPM启动前所得到的度量值。
本实施例中,CRTM为处理器在计算机系统上电后执行的第一段代码。在计算机系统上电后,处理器则执行CRTM,从而实现在可信执行环境中分配存储空间。在处理器完成在可信执行环境中分配存储空间之后,CRTM能够获取到可信执行环境中的存储空间的地址。
可选的,在获取到可信执行环境中的存储空间的地址后,处理器还通过执行CRTM,将该存储空间的地址存储于平台配置数据库中。由于在fTPM启动后,fTPM需要基于由于存储度量值的存储空间的地址,从该存储空间中取出所存储的度量值,并将该度量值扩展到PCR中,因此CRTM需要将获取到的存储空间的地址传递给fTPM。本实施例中,处理器通过执行CRTM,将存储空间的地址存储于平台配置数据库之后,UEFI中的其他程序能够从平台配置数据库中取出存储空间的地址,并且将存储空间的地址传递给fTPM。
步骤402,通过执行CRTM,对ARM可信固件(arm-trusted-firmware,ATF)进行度量,得到第一子度量值,并将第一子度量值存储于存储空间中。
在处理器完成在可信执行环境中分配存储空间之后,处理器继续执行CRTM,从而对ATF进行度量,并将对ATF进行度量所得到的第一子度量值存储于可信执行环境的存储空间中。可选的,处理器对ATF进行度量,包括:处理器采用哈希算法计算ATF的摘要值,得到第一子度量值。该第一子度量值包括ATF的摘要值以及哈希算法的编号,该哈希算法的编号用于指示计算ATF的摘要值的哈希算法。
本实施例中,ATF作为UEFI中的程序,ATF用于完成计算机系统中的TEE OS和引导器(BootLoader)的度量和启动。处理器通过执行ATF,能够实现度量TEE OS和BootLoader,并启动TEE OS和BootLoader。
步骤403,通过执行ATF,对TEE OS进行度量并启动TEE OS,得到第二子度量值。
由于fTPM启动后,fTPM需要运行于TEE OS中,因此本实施例中处理器通过执行ATF,对TEE OS进行度量并启动TEE OS。处理器对TEE OS进行度量,包括:处理器采用哈希算法计算TEE OS的摘要值,得到第二子度量值。该第二子度量值包括TEE OS的摘要值以及哈希算法的编号,哈希算法的编号用于指示计算TEE OS的摘要值的哈希算法。其中,用于计算TEE OS的摘要值的哈希算法与用于计算ATF的摘要值的哈希算法是相同的。
步骤404,通过执行ATF,对UEFI中的BootLoader进行度量,得到第三子度量值。
本实施例中,BootLoader用于度量和启动OS Kernel。处理器对BootLoader进行度量,包括:处理器采用哈希算法计算BootLoader的摘要值,得到第三子度量值。该第三子度量值包括BootLoader的摘要值以及哈希算法的编号,哈希算法的编号用于指示计算BootLoader的摘要值的哈希算法。其中,用于计算BootLoader的摘要值的哈希算法与用于计算ATF的摘要值的哈希算法是相同的。
可选的,处理器是在执行步骤403之后,再执行步骤404;或者,处理器是执行步骤404之后,再执行步骤403。本实施例并不对步骤403与步骤404之间的执行顺序做具体限定。
步骤405,通过执行BootLoader,对OS Kernel进行度量,得到第四子度量值。
在对BootLoader进行度量后,处理器启动BootLoader并执行该BootLoader,以实现对OS Kernel进行度量。其中,OS Kernel包括fTPM驱动组件,即fTPM驱动组件设置在OSKernel中。由于fTPM驱动组件设置在OS Kernel中,因此处理器对整个OS Kernel进行度量,即可完成对fTPM驱动组件的度量。
处理器对OS Kernel进行度量,包括:处理器采用哈希算法计算OS Kernel的摘要值,得到第四子度量值。该第四子度量值包括OS Kernel的摘要值以及哈希算法的编号,该哈希算法的编号用于指示计算OS Kernel的摘要值的哈希算法。其中,用于计算OS Kernel的摘要值的哈希算法与用于计算ATF的摘要值的哈希算法是相同的。
本实施例中,上述的第一度量值包括第一子度量值、第二子度量值、第三子度量值和第四子度量值。
可选的,在处理器将用于存储度量值的存储空间的地址存储于平台配置数据库后,处理器还通过执行BootLoader,从平台配置数据库中获取该存储空间的地址,并将存储空间的地址配置于OS Kernel的设备树源码中。
步骤406,通过执行fTPM驱动组件,启动fTPM。
在对OS Kernel进行度量后,处理器启动OS Kernel,并通过OS Kernel启动位于该OS Kernel中的fTPM驱动组件。在处理器执行fTPM驱动组件的过程中,fTPM驱动组件基于可信执行环境与丰富执行环境之间的通信接口,向可信执行环境中的fTPM发送指令,从而启动可信执行环境中的fTPM。
可选的,在处理器将存储空间的地址配置于OS Kernel的设备树源码中之后,处理器通过执行fTPM驱动组件,从该设备树源码中获取到存储空间的地址,并将该存储空间的地址通过共享内存传递给fTPM。这样,处理器在执行fTPM时,fTPM则能够从共享内存中获取到用于存储度量值的存储空间的地址,并且基于该存储空间的地址从存储空间中取出所存储的度量值。
步骤407,通过执行fTPM,将存储空间中的第一度量值扩展到fTPM的PCR中。
在fTPM启动之后,fTPM中的PCR能够被正常使用。因此,处理器通过执行fTPM,从可信执行环境的存储空间中取出第一度量值,并将第一度量值扩展到fTPM的PCR中。
由于第一度量值包括上述的第一子度量值、第二子度量值、第三子度量值和第四子度量值,因此处理器将第一度量值扩展到fTPM的PCR中包括:处理器将第一子度量值、第二子度量值、第三子度量值和第四子度量值依次扩展到fTPM的PCR中。例如,处理器首先将第一子度量值中扩展到PCR中,然后处理器再将第二子度量值扩展到该PCR中。在将第二子度量值扩展到PCR中之后,处理器继续将第三子度量值扩展到该PCR中,最后处理器将第四子度量值扩展到该PCR中,从而完成将第一度量值扩展到fTPM的PCR中。
步骤408,根据PCR中的度量值对计算机系统的启动过程进行验证。
其中,步骤408与上述的步骤305类似,具体请参考上述的步骤305,在此不再赘述。
可选的,为了便于在计算机系统启动出现问题的情况下,运维人员能够确定计算机系统启动出现问题的环节,处理器在对各个程序进行度量后,还将得到的度量信息存储到度量日志中。
示例性地,处理器在对fTPM驱动组件进行度量后,处理器获取对fTPM驱动组件进行度量所得到的度量信息,该度量信息包括UEFI的信息、fTPM驱动组件的信息和/或第一度量值。其中,UEFI的信息是指UEFI中对fTPM驱动组件进行度量的程序的文件名称,即BootLoader的文件名称;fTPM驱动组件的信息是指fTPM驱动组件的文件名称。简单来说,UEFI的信息是度量过程中度量者的信息,fTPM驱动组件的信息则是度量过程中被度量者的信息。然后,处理器再将获取到的该度量信息记录到度量日志。该度量日志存储于计算机系统中的一个特定存储区域,运维人员通过访问用于存储度量日志的存储区域,即可获知计算机系统启动过程中各个程序对应的度量信息。
图5为本申请实施例提供的一种计算机系统启动过程中的度量示意图。如图5所示,在计算机系统的启动过程中,CRTM度量并启动ATF,并且将度量ATF得到的第一子度量值存储到可信执行环境的存储空间中。ATF度量并启动TEE OS,ATF还度量并启动BootLoader,ATF将度量TEE OS和BootLoader得到的第二子度量值和第三子度量值存储到可信执行环境的存储空间中。BootLoader度量并启动OS Kernel,并将度量OS Kernel得到的第四子度量值存储到可信执行环境的存储空间中。
OS Kernel中的fTPM驱动组件启动后,fTPM驱动组件启动fTPM。然后,fTPM将可信执行环境的存储空间中所存储的度量值扩展到fTPM的PCR中。可选的,在fTPM启动后,OSKernel继续度量位于OS Kernel中的应用程序(application,APP),并且OS Kernel度量APP所得到的度量值扩展到fTPM的PCR中。
此外,对于执行度量的各个程序而言,程序在对另一个程序执行度量后,都将得到的度量信息记录到度量日志中。例如,CRTM在度量ATF后,将所得到的ATF对应的度量信息记录到度量日志中;ATF在度量BootLoader后,将所得到的BootLoader对应的度量信息记录到度量日志中。这样一来,由度量者将对被度量者进行度量所得到的度量信息记录到度量日志中,能够保证度量过程的相关信息都记录到度量日志中,便于后期追溯。
请参阅图6,图6为本申请实施例提供的一种通过fTPM实现可信启动的方法600的流程示意图。如图6所示,该方法600包括以下的步骤601至609。
步骤601,通过执行CRTM,在可信执行环境中分配存储空间,存储空间用于存储在fTPM启动前所得到的度量值。
步骤602,通过执行CRTM,对ARM可信固件ATF进行度量,得到第一子度量值,并将第一子度量值存储于存储空间中。
步骤603,通过执行ATF,对TEE OS进行度量并启动TEE OS,得到第二子度量值。
步骤604,通过执行ATF,对UEFI中的引导器BootLoader进行度量,得到第三子度量值。
本实施例中,步骤601-步骤604与上述的步骤401-步骤404类似,具体请参考上述的步骤401-步骤404,在此不再赘述。
步骤605,通过执行ATF,对UEFI中的fTPM驱动组件进行度量,得到第五子度量值。
在本实施例中,fTPM驱动组件位于UEFI中。因此,处理器是通过执行ATF,对位于UEFI中的fTPM驱动组件执行度量,得到第五子度量值。其中,通过执行UEFI,对fTPM驱动组件进行度量所得到的第一度量值则包括上述的第一子度量值、第二子度量值、第三子度量值和第五子度量值。
步骤606,通过执行fTPM驱动组件,启动fTPM。
处理器通过执行ATF,对位于UEFI中的fTPM驱动组件执行度量后,处理器启动fTPM驱动组件。在fTPM驱动组件启动后,处理器通过执行该fTPM驱动组件,基于可信执行环境与丰富执行环境之间的通信接口向可信执行环境中的fTPM发送指令,从而启动可信执行环境中的fTPM。
步骤607,通过执行fTPM,将存储空间中的第一度量值扩展到fTPM的PCR中。
在fTPM启动之后,fTPM中的PCR能够被正常使用。因此,处理器通过执行fTPM,从可信执行环境的存储空间中取出第一度量值,并将第一度量值扩展到fTPM的PCR中。
由于第一度量值包括上述的第一子度量值、第二子度量值、第三子度量值和第五子度量值,因此处理器将第一度量值扩展到fTPM的PCR中包括:处理器将第一子度量值、第二子度量值、第三子度量值和第五子度量值依次扩展到fTPM的PCR中。
可选的,在本实施例中,fTPM能够通过多种方式来获取到可信执行环境的存储空间的地址。
方式一,处理器通过执行CRTM,在可信执行环境中分配存储空间后,处理通过继续执行该CRTM,将该存储空间的地址存储于平台配置数据库中。然后,在TEE OS启动后,处理器通过执行ATF,从平台配置数据库中获取存储空间的地址,并将该存储空间的地址传递给TEE OS。这样一来,在fTPM启动后,该TEE OS则能够将ATF所传递的存储空间的地址传递给该fTPM。
也就是说,在方式一中,存储空间的地址的传递顺序为:CRTM>>PCD>>ATF>>TEE OS>>fTPM。
方式二,处理器通过执行CRTM,在可信执行环境中分配存储空间后,处理通过继续执行该CRTM,将该存储空间的地址传递给ATF。然后,在TEE OS启动后,处理器通过执行ATF,从平台配置数据库中获取存储空间的地址,并将该存储空间的地址传递给TEE OS。这样一来,在fTPM启动后,该TEE OS则能够将ATF所传递的存储空间的地址传递给该fTPM。
相较于方式一,在方式二中,处理器通过执行CRTM将存储空间的地址传递给ATF,而不再将存储空间的地址存储于平台配置数据库中。也就是说,在方式二中,存储空间的地址的传递顺序为:CRTM>>ATF>>TEE OS>>fTPM。
步骤608,通过执行BootLoader,对OS Kernel进行度量,得到第四子度量值,并将第四子度量值扩展到PCR中。
在将可信执行环境的存储空间中的度量值扩展到fTPM的PCR中之后,处理器通过执行BootLoader,对OS Kernel进行度量,得到第四子度量值。由于此时fTPM已经启动,因此处理器将所得到的第四子度量值扩展到fTPM的PCR中。
步骤609,根据PCR中的度量值对计算机系统的启动过程进行验证。
其中,步骤609与上述的步骤305类似,具体请参考上述的步骤609,在此不再赘述。
可以参阅图7,图7为本申请实施例提供的另一种计算机系统启动过程中的度量示意图。如图7所示,在计算机系统的启动过程中,CRTM度量并启动ATF,并且将度量ATF得到的第一子度量值存储到可信执行环境的存储空间中。ATF度量并启动TEE OS,ATF还度量并启动BootLoader和fTPM驱动组件,ATF将度量TEE OS、BootLoader和fTPM驱动组件得到的第二子度量值、第三子度量值和第五子度量值存储到可信执行环境的存储空间中。在TEE OS和fTPM驱动组件都启动后,fTPM驱动组件启动fTPM。然后,fTPM将可信执行环境的存储空间中所存储的度量值扩展到fTPM的PCR中。
BootLoader度量并启动OS Kernel,并将度量OS Kernel得到的第四子度量值存储到可信执行环境的存储空间中。可选的,在fTPM启动后,OS Kernel继续度量位于OS Kernel中的AP),并且OS Kernel度量APP所得到的度量值扩展到fTPM的PCR中。
图8为本申请实施例提供的一种计算机系统800的结构示意图。计算机系统800支持可信执行环境。例如,计算机系统800为基于ARMv8架构的计算机系统。如图8所示,计算机系统800包括:处理器801、存储器802和收发器803。在第一时刻计算机系统800上电,在计算机系统800上电后,处理器801用于通过执行UEFI,在存储器802的可信执行环境中分配存储空间,存储空间用于存储在fTPM启动前所得到的度量值;处理器801还用于通过执行UEFI,对fTPM驱动组件进行度量,得到第一度量值,并将第一度量值存储于存储空间中;处理器801还用于通过执行fTPM驱动组件,启动fTPM;处理器801还用于通过执行fTPM,将存储空间中的第一度量值扩展到fTPM的平台状态寄存器PCR中;处理器801还用于根据PCR中的度量值对计算机系统800的启动过程进行验证。
可选的,处理器801还用于通过执行核心可信度量根CRTM,对ARM可信固件ATF进行度量,得到第一子度量值,并将第一子度量值存储于存储空间中;处理器801还用于通过执行ATF,对TEE OS进行度量并启动TEE OS,得到第二子度量值;其中,UEFI包括CRTM和ATF,ATF用于得到fTPM驱动组件的度量值,第一度量值包括第一子度量值和第二子度量值,fTPM位于TEE OS中。
可选的,处理器801还用于通过执行ATF,对UEFI中的引导器BootLoader进行度量,得到第三子度量值;处理器801还用于通过执行BootLoader,对操作系统内核OS Kernel进行度量,得到第四子度量值;其中,OS Kernel包括fTPM驱动组件,第一度量值还包括第三子度量值和第四子度量值。
可选的,处理器801还用于通过执行CRTM,将存储空间的地址存储于平台配置数据库中;处理器801还用于通过执行BootLoader,从平台配置数据库中获取存储空间的地址,并将存储空间的地址配置于OS Kernel的设备树源码中;处理器801还用于通过执行fTPM驱动组件,将设备树源码中的存储空间的地址传递给fTPM。
可选的,处理器801还用于通过执行ATF,对UEFI中的fTPM驱动组件进行度量,得到第五子度量值;其中,第一度量值还包括第五子度量值。
可选的,处理器801还用于通过执行CRTM,将存储空间的地址存储于平台配置数据库中;处理器801还用于通过执行ATF,从平台配置数据库中获取存储空间的地址,并将存储空间的地址传递给TEE OS,TEE OS用于将存储空间的地址传递给fTPM。
可选的,处理器801还用于通过执行CRTM,将存储空间的地址传递给ATF;处理器801还用于通过执行ATF,将存储空间的地址传递给TEE OS,TEE OS用于将存储空间的地址传递给fTPM。
可选的,处理器801还用于获取计算机系统800的历史启动过程中所获得的历史度量值,历史启动过程是计算机系统800在第一时刻之前发生的启动过程;处理器801还用于通过比对历史度量值以及PCR中的度量值,对启动过程进行验证。
可选的,计算机系统800还包括收发器803;处理器801还用于向收发器803传递PCR中的度量值;收发器803用于向服务器发送PCR中的度量值,以使得服务器根据PCR中的度量值对启动过程进行验证。
可选的,处理器801还用于通过执行UEFI,采用哈希算法计算fTPM驱动组件的摘要值,得到第一度量值,第一度量值包括fTPM驱动组件的摘要值和哈希算法的编号。
可选的,处理器801还用于获取对fTPM驱动组件进行度量所得到的度量信息,度量信息包括UEFI的信息、fTPM驱动组件的信息和/或第一度量值;处理器801还用于将度量信息记录到度量日志。
应理解,计算机系统中的处理器为了实现上述方法实施例中各种步骤和方法的具体细节请参见上述的图3至图7的方法实施例,为了简洁,在此不再赘述。
图9为本申请实施例提供的一种计算机系统900的结构示意图。计算机系统900搭载有上述的计算机系统。计算机系统900由一般性的总线体系结构来实现。
计算机系统900包括至少一个处理器901、通信总线902、存储器903以及至少一个通信接口904。
可选的,处理器901是一个通用CPU、NP、微处理器、或者是一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
通信总线902用于在上述组件之间传送信息。通信总线902分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,存储器903是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备。可替换的,存储器903是随机存取存储器(random accessmemory,RAM)或者可存储信息和指令的其它类型的动态存储设备。可替换的,存储器903是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。可选的,存储器903是独立存在的,并通过通信总线902与处理器901相连接。可选的,存储器903和处理器901集成在一起。
通信接口904使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口904包括有线通信接口。可选的,通信接口904还包括无线通信接口。其中,有线通信接口例如为以太网接口。以太网接口是光接口,电接口或其组合。无线通信接口为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合等。
在具体实现中,作为一种实施例,处理器901包括一个或多个CPU,如图9中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,计算机系统900包括多个处理器,如图9中所示的处理器901和处理器905。这些处理器中的每一个是一个单核处理器(single-CPU),或者是一个多核处理器(multi-CPU)。这里的处理器指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在一些实施例中,存储器903用于存储执行本申请方案的程序代码910,处理器901执行存储器903中存储的程序代码910。也就是说,计算机系统900通过处理器901以及存储器903中的程序代码910,来实现上述的方法实施例。
本申请实施例还提供了一种芯片。图10为本申请实施例提供的一种芯片1000的结构示意图。该芯片1000包括处理器1001,用于执行计算机指令,以实现上述的方法实施例。例如,处理器1001执行上述方法实施例中所涉及的UEFI或fTPM驱动组件等程序。
可选的,芯片1000还包括存储器1002,用于存储用于实现上述的方法实施例必要的计算机指令1003和数据。
可选的,芯片1000还包括通信接口1004,处理器1001与通信接口1004连接。通信接口1004用于接收需要处理的数据和/或信息。处理器1001从通信接口1004获取数据和/或信息,并对数据和/或信息进行处理,并通过通信接口1004输出处理结果。可选的,通信接口1004是输入输出接口或总线接口。芯片1000通过通信接口1004与其他芯片、其他处理器、电源模块等进行通信。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (25)
1.一种通过基于固件的可信平台模块fTPM实现可信启动的方法,应用于支持可信执行环境的计算机系统中,其特征在于,包括:
在第一时刻所述计算机系统上电,在所述计算机系统上电后通过执行统一可扩展固件接口UEFI,在可信执行环境中分配存储空间,所述存储空间用于存储在fTPM启动前所得到的度量值;
通过执行所述UEFI,对fTPM驱动组件进行度量,得到第一度量值,并将所述第一度量值存储于所述存储空间中;
通过执行所述fTPM驱动组件,启动所述fTPM;
通过执行所述fTPM,将所述存储空间中的所述第一度量值扩展到所述fTPM的平台配置寄存器PCR中;
根据所述PCR中的度量值对所述计算机系统的启动过程进行验证。
2.根据权利要求1所述的方法,其特征在于,所述通过执行所述UEFI,对fTPM驱动组件进行度量,得到第一度量值,包括:
通过执行核心可信度量根CRTM,对ARM可信固件ATF进行度量,得到第一子度量值,并将所述第一子度量值存储于所述存储空间中;
通过执行所述ATF,对TEE OS进行度量并启动所述TEE OS,得到第二子度量值;
其中,所述UEFI包括所述CRTM和所述ATF,所述ATF用于得到所述fTPM驱动组件的度量值,所述第一度量值包括所述第一子度量值和第二子度量值,所述fTPM位于所述TEE OS中。
3.根据权利要求2所述的方法,其特征在于,所述通过执行所述UEFI,对fTPM驱动组件进行度量,得到第一度量值,还包括:
通过执行所述ATF,对所述UEFI中的引导器BootLoader进行度量,得到第三子度量值;
通过执行所述BootLoader,对操作系统内核OS Kernel进行度量,得到第四子度量值;
其中,所述OS Kernel包括所述fTPM驱动组件,所述第一度量值还包括所述第三子度量值和所述第四子度量值。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
通过执行所述CRTM,将所述存储空间的地址存储于平台配置数据库中;
通过执行所述BootLoader,从所述平台配置数据库中获取所述存储空间的地址,并将所述存储空间的地址配置于所述OS Kernel的设备树源码中;
通过执行所述fTPM驱动组件,将所述设备树源码中的所述存储空间的地址传递给所述fTPM。
5.根据权利要求2所述的方法,其特征在于,所述通过执行所述UEFI,对fTPM驱动组件进行度量,得到第一度量值,还包括:
通过执行所述ATF,对所述UEFI中的fTPM驱动组件进行度量,得到第五子度量值;
其中,所述第一度量值还包括所述第五子度量值。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
通过执行所述CRTM,将所述存储空间的地址存储于平台配置数据库中;
通过执行所述ATF,从所述平台配置数据库中获取所述存储空间的地址,并将所述存储空间的地址传递给所述TEE OS,所述TEE OS用于将所述存储空间的地址传递给所述fTPM。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
通过执行所述CRTM,将所述存储空间的地址传递给所述ATF;
通过执行所述ATF,将所述存储空间的地址传递给所述TEE OS,所述TEE OS用于将所述存储空间的地址传递给所述fTPM。
8.根据权利要求1-7任意一项所述的方法,其特征在于,所述根据所述PCR中的度量值对所述计算机系统的启动过程进行验证,包括:
获取所述计算机系统的历史启动过程中所获得的历史度量值,所述历史启动过程是所述计算机系统在所述第一时刻之前发生的启动过程;
通过比对所述历史度量值以及所述PCR中的度量值,对所述计算机系统的启动过程进行验证。
9.根据权利要求1-7任意一项所述的方法,其特征在于,所述根据所述PCR中的度量值对启动过程进行验证,包括:
向服务器发送所述PCR中的度量值,以使得所述服务器根据所述PCR中的度量值对启动过程进行验证。
10.根据权利要求1-9任意一项所述的方法,其特征在于,所述通过执行所述UEFI,对fTPM驱动组件进行度量,包括:
通过执行所述UEFI,采用哈希算法计算所述fTPM驱动组件的摘要值,得到所述第一度量值,所述第一度量值包括所述fTPM驱动组件的摘要值和所述哈希算法的编号。
11.根据权利要求1-10任意一项所述的方法,其特征在于,所述方法还包括:
获取对所述fTPM驱动组件进行度量所得到的度量信息,所述度量信息包括所述UEFI的信息、所述fTPM驱动组件的信息和/或所述第一度量值;
将所述度量信息记录到度量日志。
12.一种计算机系统,所述计算机系统支持可信执行环境,其特征在于,包括:处理器和存储器;
在第一时刻所述计算机系统上电,在所述计算机系统上电后,所述处理器用于通过执行UEFI,在所述存储器的可信执行环境中分配存储空间,所述存储空间用于存储在fTPM启动前所得到的度量值;
所述处理器还用于通过执行所述UEFI,对fTPM驱动组件进行度量,得到第一度量值,并将所述第一度量值存储于所述存储空间中;
所述处理器还用于通过执行所述fTPM驱动组件,启动所述fTPM;
所述处理器还用于通过执行所述fTPM,将所述存储空间中的所述第一度量值扩展到所述fTPM的平台状态寄存器PCR中;
所述处理器还用于根据所述PCR中的度量值对所述计算机系统的启动过程进行验证。
13.根据权利要求12所述的计算机系统,其特征在于,
所述处理器还用于通过执行核心可信度量根CRTM,对ARM可信固件ATF进行度量,得到第一子度量值,并将所述第一子度量值存储于所述存储空间中;
所述处理器还用于通过执行所述ATF,对TEE OS进行度量并启动所述TEE OS,得到第二子度量值;
其中,所述UEFI包括所述CRTM和所述ATF,所述ATF用于得到所述fTPM驱动组件的度量值,所述第一度量值包括所述第一子度量值和第二子度量值,所述fTPM位于所述TEE OS中。
14.根据权利要求13所述的计算机系统,其特征在于,
所述处理器还用于通过执行所述ATF,对所述UEFI中的引导器BootLoader进行度量,得到第三子度量值;
所述处理器还用于通过执行所述BootLoader,对操作系统内核OS Kernel进行度量,得到第四子度量值;
其中,所述OS Kernel包括所述fTPM驱动组件,所述第一度量值还包括所述第三子度量值和所述第四子度量值。
15.根据权利要求14所述的计算机系统,其特征在于,
所述处理器还用于通过执行所述CRTM,将所述存储空间的地址存储于平台配置数据库中;
所述处理器还用于通过执行所述BootLoader,从所述平台配置数据库中获取所述存储空间的地址,并将所述存储空间的地址配置于所述OS Kernel的设备树源码中;
所述处理器还用于通过执行所述fTPM驱动组件,将所述设备树源码中的所述存储空间的地址传递给所述fTPM。
16.根据权利要求13所述的计算机系统,其特征在于,
所述处理器还用于通过执行所述ATF,对所述UEFI中的fTPM驱动组件进行度量,得到第五子度量值;
其中,所述第一度量值还包括所述第五子度量值。
17.根据权利要求16所述的计算机系统,其特征在于,
所述处理器还用于通过执行所述CRTM,将所述存储空间的地址存储于平台配置数据库中;
所述处理器还用于通过执行所述ATF,从所述平台配置数据库中获取所述存储空间的地址,并将所述存储空间的地址传递给所述TEE OS,所述TEE OS用于将所述存储空间的地址传递给所述fTPM。
18.根据权利要求16所述的计算机系统,其特征在于,
所述处理器还用于通过执行所述CRTM,将所述存储空间的地址传递给所述ATF;
所述处理器还用于通过执行所述ATF,将所述存储空间的地址传递给所述TEE OS,所述TEE OS用于将所述存储空间的地址传递给所述fTPM。
19.根据权利要求12-18任意一项所述的计算机系统,其特征在于,
所述处理器还用于获取所述计算机系统的历史启动过程中所获得的历史度量值,所述历史启动过程是所述计算机系统在所述第一时刻之前发生的启动过程;
所述处理器还用于通过比对所述历史度量值以及所述PCR中的度量值,对启动过程进行验证。
20.根据权利要求12-18任意一项所述的计算机系统,其特征在于,所述计算机系统还包括收发器;
所述处理器还用于向所述收发器传递所述PCR中的度量值;
所述收发器用于向服务器发送所述PCR中的度量值,以使得所述服务器根据所述PCR中的度量值对启动过程进行验证。
21.根据权利要求12-20任意一项所述的计算机系统,其特征在于,
所述处理器还用于通过执行所述UEFI,采用哈希算法计算所述fTPM驱动组件的摘要值,得到所述第一度量值,所述第一度量值包括所述fTPM驱动组件的摘要值和所述哈希算法的编号。
22.根据权利要求12-21任意一项所述的计算机系统,其特征在于,
所述处理器还用于获取对所述fTPM驱动组件进行度量所得到的度量信息,所述度量信息包括所述UEFI的信息、所述fTPM驱动组件的信息和/或所述第一度量值;
所述处理器还用于将所述度量信息记录到度量日志。
23.一种计算机可读存储介质,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如权利要求1至11中任一项所述的方法。
24.一种计算机程序产品,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如权利要求1至11任一项所述的方法。
25.一种芯片,其特征在于,包括处理器,所述处理器用于执行计算机指令,以执行如权利要求1至11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110325716.9A CN115130106A (zh) | 2021-03-26 | 2021-03-26 | 一种通过fTPM实现可信启动的方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110325716.9A CN115130106A (zh) | 2021-03-26 | 2021-03-26 | 一种通过fTPM实现可信启动的方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115130106A true CN115130106A (zh) | 2022-09-30 |
Family
ID=83374377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110325716.9A Pending CN115130106A (zh) | 2021-03-26 | 2021-03-26 | 一种通过fTPM实现可信启动的方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115130106A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117610025A (zh) * | 2024-01-19 | 2024-02-27 | 国网信息通信产业集团有限公司 | 一种基于电力智能终端的嵌入式操作系统安全引导方法 |
-
2021
- 2021-03-26 CN CN202110325716.9A patent/CN115130106A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117610025A (zh) * | 2024-01-19 | 2024-02-27 | 国网信息通信产业集团有限公司 | 一种基于电力智能终端的嵌入式操作系统安全引导方法 |
CN117610025B (zh) * | 2024-01-19 | 2024-04-05 | 国网信息通信产业集团有限公司 | 一种基于电力智能终端的嵌入式操作系统安全引导方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3479223B1 (en) | Secure booting of virtualization managers | |
EP3479224B1 (en) | Memory allocation techniques at partially-offloaded virtualization managers | |
CN109669734B (zh) | 用于启动设备的方法和装置 | |
US7921286B2 (en) | Computer initialization for secure kernel | |
US9235707B2 (en) | Methods and arrangements to launch trusted, coexisting environments | |
US8904162B2 (en) | Methods and apparatus for performing secure BIOS upgrade | |
KR101458780B1 (ko) | 다단계 락스텝 무결성 보고 메커니즘 제공 | |
US7974416B2 (en) | Providing a secure execution mode in a pre-boot environment | |
US9098300B2 (en) | Providing silicon integrated code for a system | |
US10902127B2 (en) | Method and apparatus for secure boot of embedded device | |
US10592661B2 (en) | Package processing | |
US20210342162A1 (en) | Kernel space measurement | |
US20210397709A1 (en) | Data structure measurement comparison | |
CN115130106A (zh) | 一种通过fTPM实现可信启动的方法及相关装置 | |
US11809876B2 (en) | Trusted platform module protection for non-volatile memory express (NVMe) recovery | |
CN108595981B (zh) | 加密安卓系统的方法 | |
CN115687039A (zh) | 一种云平台验证方法、组件及arm云平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |