目录
- 一、可信
- 1、可信计算基础思想
- 二、可信计算概念
- 1、信任根&信任边界
- 2、传递信任(Transitive Trust)& 信托机构(Trust Authority)
- 1、信托机构
- 三、TPM(Trusted Platform Module)
- 四、可信根
- 五、可信启动关键技术概念介绍(以国产TPCM为例)
- 1、TPCM节点可信框架
- 2、TPCM节点可信链组成
- 3、TPCM度量部件
- 4、TPCM静态度量可信链
- 5、TPCM动态度量可信链
- 1、钩子机制原理
- 2、主动免疫机制
- 3、可信机制与已有安全机制的对接
一、可信
在可信计算组织(Trusted Computing Group,TCG)规范的概念里,“信任”意味着传达一种“可期望的/可预测的”行为。然而,可预测的行为并不一定构成值得信任的行为。例如,我们预计银行的行为会像银行一样,我们预计小偷的行为会像小偷一样贼。为了确定平台的预期行为,有必要确定其身份与平台行为相关。物理上不同的平台可能有相同的行为。如果是的话,由具有相同行为的组件(硬件和软件)构成,然后是它们的信任属性,应该是一样的。
TCG定义了在平台中建立信任的方案,该方案基于识别其硬件和软件软件组件。可信平台模块(TPM)提供了这些身份收集和报告的方法。计算机系统中使用的TPM报告硬件和软件的方式,允许确定预期行为,并根据该预期建立信任。
1、可信计算基础思想
在计算机系统中,建立一个信任根,从信任根开始,到硬件平台、操作系统、应用,一级度量一级,一级信任一级,把这种信任扩展到整个计算机系统,并采取防护措施,确保计算资源的数据完整性和行为的预期性,从而提高计算机系统的可信性。
通俗的解释:
可信 ≈ 可靠 + 安全
现阶段的可信计算应具有确保资源的数据完整性、数据安全存储和平台远程证明等功能。
二、可信计算概念
1、信任根&信任边界
TPM信任根是可信计算机的可信起基点,也是实施安全控制的点。在功能上有三个信任根组成。
- 1、可信度量根(Root Of Trust For Measurement, RTM)。RTM是可信平台进行可信度量的基点,在TCG的可信平台中,是平台启动时首先执行的一段软件,用以对计算机可信度量。又被称为可信度量根核(CRTM)。具体到可信计算PC中,是BIOS中最开始的代码。
- 2、可信存储根(Root Of Trust For Storage,RTS)。RTS是对可信度量值进行安全存储的基点。由TPM芯片中一组被称为平台配置寄存器(Paltform Configuration Register, PCR)和存储根密钥(Storage Root Key,SRK)组成。
- 3、可信报告根(Root of Trust for Reporting,RTR)。由PCR和背书秘钥(Endorsement Key)的派生密钥AIK(Attestaion Identity Key)组成。
可信计算平台由TPM芯片机器密钥和相应软件作为期信任根。
可信PC是最早开发并得到广泛应用的可信计算平台,特征是在主板上镶嵌可信构建模块(trusted Building block,TBB)。TBB就是可信PC平台的信任根,包括CRTM模块和TPM模块,以及它们与主板间的连接。TBB和信任根的组合形成了一个信任边界,在这个边界内,度量、存储和管理都是有效的。
2、传递信任(Transitive Trust)& 信托机构(Trust Authority)
信任链传递和安全启动信任链类似。由“信任的根源(如可信执行环境、TPM芯片等)”建立“可执行文件”可信度量的函数,然后使用函数得到下一级可执行文件度量值。
1、信托机构
当可信度量根 RTM开始执行CRTM时,可以证明“TBB正确性的实体”是TBB的实体创建者。对于系统来说,这个角色就是平台制造商。换句话说,制造商是构成有效TBB的权威,其声誉是允许使用者信任一个特定的TBB,也就是上文阐述可信根。
不过当系统转换到,运行CRTM之外的代码时,可传递的信任链被下一级被代码度量的模块获得。信任链从可信度量根传递到外部代码中,即使使用者完全相信RTM和CRTM,但是外部代码和外部组件在现代体系结构中,固件和软件组件来自许多不同的供应商,因此对于平台制造商来说,只是了解平台上运行的所有代码的签名者通常是不可行的,使用者不相信你全流程的本地度量结果,因此各个需要度量组件,将各个环节的测量结果记录下来了,用以评估当前系统状态。
两种不同的方法允许评估平台的信任权限。
1) 对代码进行度量(散列计算),并将其值记录在RTS中。如果代码运行时不考虑度量,则信任的权限是RTR度量报告的代码摘要。也就是说测量本身就说明了问题,验证者需要了解构成值得信赖的代码的度量,或表示恶意或易受攻击的代码。
2) 对代码进行签名,以便知道代码管理机构的身份。如果该身份记录在在RTS中,评估可以更改。它不是基于对代码摘要的了解,而是可以基于代码签名者的身份。
由于受信任的代码源有时可能会生成带有安全漏洞的代码,因此支持通常需要吊销。为了允许撤销特定的代码模块,通常需要使用上述混合解决方案(既记录身份权限信息,又记录了代码度量详细信息)。
三、TPM(Trusted Platform Module)
TPM是一个系统组件,其状态与其报告的系统(主机)不同系统)。TPM和主机系统之间的唯一交互是通过本规范中定义的接口进行的。
TPM可以使用永久专用于TPM的物理资源,也可以使用临时分配给TPM的资源。TPM的所有物理资源都可能位于在相同的物理边界内,或者不同的物理资源可能在不同的新人边界内,外部无法直接访问篡改。
TPM组件有一个处理器,RAM、ROM和闪存。与TPM的唯一交互是通过LPC。主机系统不能直接更改TPM内存中的值,除非通过作为TPM的一部分的I/O缓冲区接口
TPM的另一个合理实现是在主机处理器上运行代码,同时处理器处于特殊的执行模式。对于这些TPMs,系统内存的一部分由硬件隔离构建,以便主机处理器无法直接访问TPM所使用的内存,除非它位于此位置特殊模式。此外,当主机处理器切换模式时,它总是在特定时间开始执行入口点。此版本的TPM将具有许多与独立组件相同的属性。
因此,主机使TPM修改其内部状态的唯一方法是使用定义良好的接口。
有几种不同的方案可以实现这种模式切换,包括系统管理模式,信任区™, 以及处理器虚拟化。
定义主机和TPM之间的交互是本规范的主要目标。规定的命令指示TPM对TPM保存的数据执行规定的操作。初选这些命令的目的是允许确定平台的信任状态。TPM的能力实现其目标取决于信任之根的正确实施。
四、可信根
前文已讲,略过。后续博文,再细讲这几个密钥在TPM中是如何被使用的。
五、可信启动关键技术概念介绍(以国产TPCM为例)
1、TPCM节点可信框架
节点中各可信部件以可信软件基为核心,组成节点可信框架。可信计算基在可信计算体系中处于承上启下的核心地位。其上与可信策略管理中心对接,通过主动监控机制保护应用;对下管理可信根和其他可信硬件资源,对系统安全机制(访问控制机制)提供支撑,同时与网络环境中其他可信软件基实现可信协同。
左为系统的可信节点,右为系统的计算节点。两个节点组合形成双系统体系架构。
在可信节点中,可信软件基对可信硬件平台进行资源访问,使用各种密码服务和可信硬件功能。可信策略管理中心将制定的可信策略下发给可信软件基,可信软件基则上传审计信息给可信策略管理中心,供其监督。
计算节点基本保持原有,在OS、VMM或底层中间件等设置钩子机制,可信节点通过钩子拦截系统行为,对应用监控,判断异常行为并实施控制,对数据资源进行验证,确认数据的可信性。同时可信软件基对系统的访控机制进行管理。
节点自身可信性通过可信根开始到应用层的逐级可信链来保证。这一可信链包括可信节点的各个部件,也包括计算节点中的安全机制。 可信链不是用来取代安全,而是支撑安全, 保证安全机制的可信运行。
2、TPCM节点可信链组成
可信链从可信根出发,通过一层套一层的可信扩展过程,将可信机制扩展到整个节点环境。节点可信链分为静态和动态可信扩展过程。
静态可信扩展过程是从可信根到系统初始脚本运行的全过程。
动态可信扩展过程是操作系统启动后为系统的安全机制和应用提供可信支持的过程。系统的控制权始终在操作系统手中,操作系统将监视到的信息提交给可信软件基,执行主动免疫,拦截不可信行为并实施控制。
节点可信链从TPCM开始,首先是TPCM度量主板和可信固件,确定主板和固件的可信性后,将控制权移交给主板上的固件程序(BIOS)。固件程序中有固件度量模块,以传统硬件为宿主,通过钩子机制切入主板固件的正常流程中,对OS引导程序进行度量,将控制权交给OS引导程序。OS引导程序通过引导程序中的可信度量模块度量OS内核镜像及系统的初始化程序,确认内核镜像以及内核层的安全机制的完整性,以及系统基本信任基的正确启动,而后将控制权交给内核。此过程为静态扩展部分。
在内核启动之后,内核安全机制将持续对系统服务和应用程序进行监控,并支撑系统中其他主动免疫安全机制的可信运行,此过程为动态扩展部分。
3、TPCM度量部件
节点静态可信过程的起点可信根——可信主板的可信扩展是从可信根加电开始,到可信主板完成对自身
和包括从开机到操作系统内核装载之前的可信启动过程。
由上图所示组成结构包含:TPCM、BootRom、RAM等。
根据《信息安全技术 可信计算规范 可信平台主板功能接口》,可信根TPCM与计算机主板其他部件的协作关系有如下要求:
- 在CPU执行Boot ROM代码前,TPCM先启动,实现TPCM中的RTM度量Boot ROM的初始引导代码。其中初始化代码包括扩展度量模块(EMM1)。
- TPCM通过物理电路连接,可靠地读取主机Boot ROM的初始引导代码,并对其实时完整性度量和存储操作。
- 扩展度量模块EMM代理RTM度量平台代码的装载过程,通过接口访问TPCM。
TPCM先于主板启动是为了防止CPU启动后旁路TPCM,使可信根失去作用。TPCM启动后,通过EMM1度量系统,可以在CPU启动前确认主板的可信性。
可信主板标准提出3个扩展度量模块,分别为EMM1、EMM2、EMM3.
EMM1:被RTM完整性度量,并被装载到系统的一段Boot ROM初始引导代码;EMM1作为主板开机引导的初始执行部件,并对Boot ROM中的版本信息和扩展度量模块(EMM2)进行完整性度量。
EMM2:被EMM1完整性度量,并被装载的扩展度量模块,负责对平台启动部件以及操作系统装载器进行完整性度量与可信装载。
EMM3:存储于外部存储器中,被EMM2完整性度量,用来度量和装载操作系统内核的执行部件。
此处EMM2一般是嵌入在BIOS中用来装载引导程序的模块,用来度量引导程序的可信性。EMM3则是嵌入在引导程序中的可信代码。
可信主板中,TPCM模块实体是主板平台的可信根,其内部包括可信度量根(RTM)、可信存储根(RTS)、可信报告根(RTR),其中RTS和RTR位于TPCM模块中内置的可信平台密码模块(TCM)中,RTM在TPCM中,可以度量Boot ROM中的初始代码。它们同时受到TPCM模块的物理保护。同时TPCM的可信度量根与系统的控制器之间存在控制接口,当RTM的度量结果不符合预期时,TPCM可以不通过CPU实现初始的可信控制功能。
TPCM的度量功能有限,可信主板需设置扩展度量模块(EMM)。EMM是TPCM之外的度量模块,他们接受了完整性度量检查后被装载到当前执行环境中,度量后续被装载代码的部件。作为可信度量根的扩展度量模块,实现对执行部件的完整性度量,确保信任传递。
信任链上主要部件之间的相互协作关系是:RTM度量EMM1,EMM1度量EMM2,EMM2度量EMM3,EMM3度量操作系统内核;可信平台主板以RTM、EMM1、EMM2和EMM3为节点搭建信任链传递。
4、TPCM静态度量可信链
信任链基于RTM建立,通过EMM实现信任传递。RTM和EMM采用杂凑算法对部件代码进行完整性计算,并储存度量结果,实现完整性度量。
完整性度量分为4个步骤。
- RTM或EMM使用其内部实现的杂凑算法对“部件i”的二进制代码进行计算。
- RTM或EMM生成在1.中对“部件i”的计算结果“度量事件i描述”;该描述包括杂凑算法的结果、“度量值i”,以及本次度量事件的上下文信息“度量事件i上下文”。
- RTM或EMM通过接口调用TPCM,将“度量值i”扩展存储到于预先定义与部件i相关的PCRi中。
- RTM或EMM通接口调用执行密码,将“度量事件i描述”存储于度量事件日志中。
信任链建立的一般流程如下:
- TPCM先于Boot ROM被执行前启动,由TPCM中的RTM度量Boot ROM的初始引导代码(Boot
Block);可信度量根RTM作为信任链的起点,可靠地读取Boot ROM中Boot
Block并对其执行完整性度量,生成杂凑值和日志,并存储于TPCM中。 - TPCM发送控制信号,使主板其他部件,如CPU、芯片组和动态存储器等复位,开始执行Boot ROM中的EMM1模块,EMM1获得系统执行权,构建以EMM1为当前度量值的可信执行环境。
- EMM1对Main Block部件中的EMM2进行完整性度量,生成杂凑值和日志,并存储于TPCM中。
- EMM2获得当前系统控制权,对平台启动部件以及EMM3执行完整性度量,将杂凑值存储到TPCM的PCR中,度量事件日志保存到ACPI表中,并将在1.和3.中存储在TPCM的日志存储到ACPI中。 EMM3获得当前度量执行部件控制权,作为当前可信度量执行部件。
- EMM3对操作系统内核执行完整性度量,将杂凑值存储到TPCM的PCR中,并可把日志保存到ACPI表中。
在最后,当操作系统的安全机制和可信机制启动并且读入初始化策略后,系统的可信度量和安全控制机制由系统可信软件基和操作系统安全机制构成的节点主动可信监控机制接管,此时系统进入主动免疫的安全模式。静态可信扩展过程结束。
5、TPCM动态度量可信链
节点主动监控机制一般是通过调用在操作系统、虚拟机监视器(VMM)、底层函数和中间件中的钩子函数来实现对上层行为的监控。监控过程过程可抽象为可信度量、可信决策、可信控制。同时,对系统中已有的安全机制,可信软件也可以通过策略输出和审计接入将它们纳入系统的可信保障体系架构中,并向这些安全机制提供可信支撑。
1、钩子机制原理
钩子机制是windows、linux等同样操作系统以及虚拟机、中间件等场合常用的安全机制,为开发者提供相对独立的安全机制开发环境。可信软件基与操作系统访问控制机制的对接就是通过钩子机制实现的。
Linux安全模块(LSM)是代表性的安全钩子机制,通过在操作系统内核中提供一个通用的访问控制框架来解决系统安全问题。LSM允许安全策略以内核模块的形式加载,目标是通过给Linux一个安全策略执行的标准API接口,以方便Linux环境的安全改造。
LSM采取钩子机制接入系统调用中对内核的内部对象(任务、索引节点、文件等)处理过程,一般流程为:在系统调用的合适位置插入一个函数调用接口,该接口提供一组通用的安全API,用户可以按照这些API自行编写安全策略处理函数,并通过LSM加载机制让用户的安全策略处理流程对接到这些API上。当用户执行系统调用时,首先按照正常的系统调用顺序执行到LSM机制插入的函数调用接口处,调用接口通过安全API访问用户提供的安全策略处理函数,完成后返回出处理结果。系统调用可以根据这一处理结果决定调用是否返回,也可以存储处理过程中获取的信息以备其他钩子函数使用。如Linux IMA机制,后续会专题分析。
2、主动免疫机制
系统运行时的主动免疫机制由控制机制、判定机制、度量机制和可信基准库联合组成。控制机制实现与系统监视点和安全机制点的对接,度量机制对系统的行为实施度量,判定机制根据判定策略决定对系统行为的授权、拒绝和其他处理方式。每一个机制都有自己的策略库,而可信基准库则为系统安全机制和安全策略提供可信基准值,为系统度量本地节点和远程节点提供可信依据,以支撑主动免疫机制的可信运行。
系统运行时主动免疫的工作流程分为四个步骤:
- 控制机制依据策略对系统实施主动监控,控制包括文件/设备的打开、读、写、程序的执行等,并收集度量点处受度量对象的上下文信息(主体、客体、操作、环境)传递给度量机制。
- 度量机制依据度量策略对不同的度量点(如系统环境度量点、进程环境度量点、文件访问控制度量点、设备控制度量点、网络通信度量点等)设置合适的度量方法(如完整性度量和行为度量方法等)。度量机制依据度量策略对控制机制传递的受度量信息(主体、客体、操作、环境等)进行可信度量,并将度量结果发送至判定机制。
- 判定机制对度量信息机制产生的度量结果进行综合判定。判定机制利用系统运行环境的基准配置信息对系统运行环境的度量结果进行判定,利用应用的基准配置信息对应用启动时的度量结果进行判定,利用应用的基准行为信息对应用的行为度量结果进行判定。
- 控制机制根据判定机制返回的判定结果对受度量对象进行处理,包括执行、阻止、隔离、审计等。处理方式根据系统的实际安全需求灵活配置。
3、可信机制与已有安全机制的对接
可信3.0不会取代现有安全机制,它可以为安全机制提供可信支撑,保障安全机制运行环境的可信,让安全机制更好地集成到系统安全框架中。
各种安全产品的安全机制,实质是依据一定的安全策略,对其上层的运行环境进行监控。可抽象为一个输入安全策略、完成功能并输出审计信息的模块,这一模块需要有一个底层的可信运行环境来支持其可靠运行,并通过它的安全功能保护其上层运行环境的安全。
在可信3.0体系下:
底层的可信计算机制可以对产品安全机制的底层运行环境进行可信度量,确保其底层运行环境的可信。
与产品安全机制同一层面的可信计算机制可以与安全产品对接,将安全管理中心配置的安全策略发送给产品安全机制,同时接受产品安全机制获得的审计信息,并将其发送给安全管理中心进行分析,使产品安全机制可以集成到系统的可信保障体系中。
主动可信免疫还可以建立起安全机制和其他安全机制之间的协作关系。