前言:

    近段时间帮助客户开发一套基于TPM的安全管理系统,现隐去项目和代码内容,为大家简单介绍一下Windows7的安全启动与TPM相关技术。以下开始算是正式内容。

 

一、概述 

       Windows 7是微软推出的新一代操作系统。在继承了Windows Vista的基础上,对其安全性和易用性做了较大改善,特别是在安全启动方面,相对于前几代操作系统有很大改进。
       可信计算被公认为信息安全的下一个发展方向。其基本思想是在计算机系统中首先建立一个信任根,再建立一条信任链。从信任根开始,一级测量认证一级,一级信任一级,把信任关系扩大到整个计算机系统,从而确保计算机系统的可信。在Windows 7中用TPM芯片结合BitLocker驱动器加密功能来实现,该技术的引入对Windows 7的安全启动具有极其重要的意义。
       由于以BitLocker为核心的一系列安全启动措施的运用,因此使得利用篡改操作系统启动文件实现内核劫持功能的Bootkit***很难应用于Windows 7。
 
二、Windows 7启动过程 
       Windows 7的启动框架基本沿用Windows Vista的启动框架,其主要启动模块包括BIOS、主引导记录、Bootmgr、Winload.exe以及内核文件Ntoskrnl.exe。
       BIOS是一个掌管基本输入输出的小型操作系统,主要负责硬件的初始化工作。在BIOS执行完其功能后会将控制流程传递给主引导记录(Master Boot Record, MBR)。MBR由引导代码和主分区表组成,其主要功能是定位存放有操作系统的主分区,并将操作系统加载模块读入内存中,最后将控制权交给分区引导记录(Partition Boot Record, PBR),由PBR引导操作系统加载模块。
       在PBR后,进入操作系统的初始化阶段,该阶段第1个获得控制权的启动模块是Bootmgr。Bootmgr由16位的引导代码和32位的PE文件部分组成。引导代码部分主要负责参数设置、打开保护模式等功能。PE文件部分一般将其称为OSloader,该模块主要负责内存的初始化、从启动管理器中获取参数等功能。若开启BitLocker保护,则OSloader将负责完成密钥的获取以及Winload.exe的解密等工作。Bootmgr后控制权将交给Winload.exe。该模块的功能包括操作系统内核模块的加载、建立部分内核结构、设备驱动的加载等。
       操作系统启动的最后一步由内核文件Ntoskrnl.exe完成,该模块会建立系统运行所需的全部环境,并创建系统进程和线程。整个Windows 7的启动流程如图1所示。  

 
三、Windows 7安全启动中的技术实现
3.1 BitLocker 技术实现  
       BitLocker是Windows 7中引入的最重要的安全启动技术,需要计算机提供TPM v1.2芯片支持才能实现其全部保护功能。开启BitLocker时会加密整个Windows卷,并在启动时检查系统启动模块的完整性是否遭到破坏。一旦监控到对模块的篡改行为,系统将终止启动,并且警告用户发生篡改情况。
       BitLocker在初始化时会生成全卷加密密钥(Full Volume Encrypt Key, FVEK)并用该密钥加密磁盘,FVEK由另一个密钥卷主密钥(Volume Master Key, VMK)保护,VMK自身则一般由TPM保护。当系统启动时,BIOS、MBR、PBR、Bootmgr等启动模块将依次被度量,度量值被保存在PCR寄存器中。
       最后,Bootmgr请求TPM使用PCR寄存器中的值对VMK进行解密。只有当所有的度量值都和VMK封装时的度量结果一致时,VMK才能被成功解密,进而对整个操作系统进行解密。BitLocker开启后的操作系统启动流程如图2所示。
 
 
3.2 启动模块加载地址随机分布技术  
       地址空间随机化技术ASLR(Address Space Layout Randomization)的引入可以使内存中系统模块的加载地址随机分布,而非以前的固定内存段方式,这样可避免恶意软件搜索特定系统代码段进行***的行为。
 
3.3 Bootmgr 保护措施  
       除了BitLocker会对Bootmgr的完整性进行保护外,Bootmgr自身也会采取一些保护措施,具体包括:静态文件编码,数字签名,模块校验和检查。
       静态文件编码是指在Windows 7下,Bootmgr中32位的OSloader部分将以编码的形式存储在磁盘上。启动时被编码的部分由Bootmgr引导代码将其解码。这样恶意代码将无法通过搜索特征码的方法对Bootmgr中OSloader进行挂钩***,并且使***者无法对保存在磁盘上的OSloader进行静态反汇编,大大提高了对其进行逆向分析的难度。
数字签名与模块校验和检查都是Bootmgr对其自身进行完整性检查的功能。模块校验和检查在Bootmgr 16位引导代码加载32位OSloader前对该模块进行校验。若***者对OSloader进行任何篡改,将会导致校验和与正确的值不符,从而使得Bootmgr终止启动过程并向用户报警。数字签名功能是防止对Bootmgr的任何篡改行为,其实现函数为BmFwVerifySelfIntegrity,对Bootmgr的任何篡改都会导致此函数返回错误代码并终止系统启动。
 
附注:
       IT业界从1999年开始,就有一个由Intel、IBM、HP、Microsoft、Compaq发起的TCPA(Trusted Computing Platform Alliance)组织在推动构建一个可信赖的计算环境,这个组织的成果是定义了一个平台设备认证的架构,以及嵌入在主板上的安全芯片(TPM:Trusted Platform Module)和上层软件中间件TSS(Trusted Software Stack)的第一个规范,到2003年初,IBM已经推出了将近1000万台带有安全芯片的电脑;2003年TCPA重新组成了一个更加具有商业性质的组织TCG(Trusted Computing Group),加大了产业推广力度,至今为止,已经有Intel、AMD、Microsoft、IBM、HP、Sony、Sun 7个发起成员.Intel和微软这两大行业巨头在TCG组织中发挥了越来越重要的作用,并且投入了很大的资源推动了整个产业链(包括安全芯片、主板、BIOS、芯片组、CPU、OS、软件中间件、单机上层应用系统、电子商务应用系统、CA系统、安全认证)的形成,因此TCG组织对IT产业的影响将非常巨大。
       TCG要求的关键部件TPM1.2安全芯片是嵌入密码型计算机的核心部件,通过LPC总线接口放置在主板上,芯片内部是一个完整的安全计算环境,内部结构包括:1、低功耗的32位RISC CPU;2、CPU访问片内外围模块的通道;3、中断控制器(Interrupt Controller); 4、时钟发生器(Clock Generator);5、对外IO端口;6、RAM;7、ROM;8、Flash;9、SHA/HMAC模块;10、RSA协处理器模块;11、真随机数产生模块。 
       TPM1.2安全芯片提供了平台完整性度量、提供平台唯一身份标识、提供硬件级的密钥保护等基本安全功能,为可信计算提供基础硬件支撑。