现实世界越来越依赖于计算机系统,防止病毒对计算机系统的破坏,黑客对机密信息的窃取,加强计算机系统的安全性,更好的保护计算机内部的数据信息已成为当前信息安全领域新的挑战。
由于软件的复杂性、兼容性以及抗攻击的脆弱性,单纯采用软件层面的防护不能完全保证计算机系统的安全。相比之下,可信计算通过在计算机硬件中加人新的安全芯片,为系统提供一个更为严密的基础架构,对系统安全环境的启动进行有效的维护、对系统执行的程序进行限制性保护、对系统储存的加密或敏感数据进行严密的管理、提供有效的主机身份认证、建立安全的网络作业环境,使整个计算机系统成为可信赖的执行环境。
然而,如今的可信计算架构本身也存在一些亟待解决的问题,这主要包括软件的动态度量理论不完善和对存储空间保护的不足。可信计算中信任链传递的机制有一个较大的漏洞就是无论是静态度量还是动态度量,都只能保证软件在加载时候的可信,而在度量过后,软件则完全暴露在未知的运行环境中,软件的运行空间极有可能会遭到破坏,窃取或者篡改。而具有DMA功能的总线主设备的威胁程度最高。对于我国可信计算的现状而言,缺乏自主可信的关键软硬件,尚没有形成统一的可信计算架构。因此本文设计了一种增强存储保护从计算机体系结构上进行安全防护的可信计算架构,从整体上提高可信计算平台的安全性。
1.可信执行技术
可信执行技术(trusted execute technology, TXT)是英特尔公司提出的新一代PC平台的安全解决方案。可信执行的概念是将软件执行到一种已知的,可信的状态,可信执行通过为应用程序开启一个私人环境,从而使得硬件资源与应用程序请求锁定在一起(如内存池),使得受保护的应用程序不能被其它任何恶意代码或进程所监视,察看或者修改。
TXT体系结构如图1所示。
图1 TXT体系结构
相对于TCG的PC体系架构而言,基于TXT技术的可信计算平台所能提供的安全特性主要有以下几点增强:
(1)输人输出的保护:建立的可信通道,支持对I/O接口通信的保护。
(2)受控启动:提供了一套增强的扩展指令集来对受控的软件进行度量和控制启动,这一扩展被称为是安全模式扩展(safer mode extensions,SMX),如果系统软件启动使用了SMX,这种软件启动模式被认为是度量启动环境(measured launched environment,MLE)。 MLE提供了不同的启动机制和一些增强性的保护,比如对一些可能的软件损坏的保护。
(3)执行保护:保护程序执行和存放敏感数据的内存空间。这项特性允许某个应用程序在一个相对独立的环境中运行,与平台上的其它程序不能互相干扰。没有任何其它程序能够监视或读取在保护环境中运行的程序数据。
2.增强存储保护的可信计算架构设计
在一个计算机系统中,用户可能会运行不同安全级别的软件,例如用户可能会处理一些敏感信息,同时系统中还运行着其它一些未知的进程。而现如今的可信计算架构中,由于操作系统拥有完整的真实物理地址视图,恶意代码可以通过越权访问破坏或窃取应用程序内存空间的数据,而具有DMA访问能力的设备也可以对任意位置的内存空间进行访问,因此迫切地需要一种对内存进行保护的机制,虚拟化技术的发展则为这一机制提供了新的思路。因此本文在深入研究了可信执行技术和虚拟化技术后,在此基础上加人了DMA保护的模型,提出了一种增强存储保护的可信计算架构。本章将着重讨论设计该架构的整体框架、启动过程和架构中几个重要的组成部分。
2.1整体框架
该可信执行架构包括三大部分:可信硬件平台,可信BIOS和VMM以及用户虚拟机。整体架构如图2所示。
图2 整体框架
其中硬件平台由安全增强的芯片组,CPU和I/O设备以及TCM模块组成。安全增强芯片组和TCM模块作为硬件层的核心部件。
本架构中存储保护来源于两个方面:分区保护和DMA保护。其中分区保护是VMM提供的功能,通过在虚拟地址和物理地址之间加人宿主机物理地址,使得各个VM的运行相互独立,从而实现分区保护的功能。VMM控制着地址映射的硬件逻辑和数据结构,从而保护了分区的安全和完整性。而DMA保护则借鉴了CPU地址映射的思想,对传统的DMA访问架构进行了改进,加人了保护页表以及地址转换和设备分配的逻辑结构,从而保证了DMA访问的合法性。
2.2启动过程
由于在此架构在可信计算平台中引入了虚拟化层,在平台启动以后,运行于虚拟机监视器(VMM)之上的虚拟机(VM)可以多次重启和关闭,这时的信任关系已不再是简单的链式关系,因此靠信任链传递的静态度量根将不再有效。因此本架构采用动态度量信任根DRTM解决上述问题,与SRTM相对,DRTM不必在系统启动之后的那一时刻建立,可以在平台启动以后的任何时刻动态的建立。
动态信任链传递如图3所示。
图3 动态信任链传递
使用动态度量根的启动过程主要有以下几步:
(1)加载VMM和认证代码模块:当启动一个虚拟机管理器时,必须加载两个代码模块到内存。一个模块是VMM本身的页面,另一个模块被称之为认证代码模块(authenticated code modules, ACM)。ACM只有在环境运行的时候才启动,并且是由芯片组所确定的,是唯一的,它由芯片组进行数字签名,在启动继续之前必须要确定数字签名是否合法,如果合法才能够继续加载启动。ACM的度量值将被作为平台的动态度量根。
(2)将ACM加载进内存中以后,系统将关闭中断和DMA访问,以保证这一过程的安全可信。
(3)在这些准备工作完成以后,处理器开始认证和执行ACM。ACM将对芯片组和处理器进行一些列的配置(包括初始化平台的堆等)和检查以确保平台是工作在一种正常的配置下。然后ACM开始度量验证并启动VMM。
(4)经过度量的VMM,我们称之为MVMM,MVMM开始进行初始化工作,可以通过特殊的命令来访问和配置芯片组中的相关寄存器,包括配置内存保护和DMA保护的相关数据结构。当所有的配置都已经完成,MVMM开始进人执行过程。度量并启动VM,在以后的某个时刻,可以退出然后再启动而不必进行系统复位。
2.3硬件平台
2.3.1地址空间
地址空间(包括物理RAM和芯片组的配置空间)中有很多区域是专门给动态度量启动使用的。有一些需要为VMM所预留,而有一些则可以暴露给一个或多个用户虚拟机。
物理RAM中主要有两块区域是动态度量启动专用的,并且在MVMM启动之前这两块区域是由BIOS预留的,分别是可信堆栈区域和ACM区域。每一片区域的基地址和大小都由芯片组中的配置寄存器所指定。
这两块区域只能被度量启动所申请。安全堆栈主要包含以下内容:
(1>系统加载器传递给认证代码模块的数据:这部分内容包括了VMM页表的物理基地址以及镜像大小,在系统加载软件初始化完成这部分内容后,认证代码模块将从这个基地址去加载VMM。
(2)认证代码模块传递给VMM的数据:包括了DMA保护中的MPT,表基地址的指针和MPT表的大小。
其初始化过程如图4所示。
图4 可信堆栈初始化过程
为了能够保证和维护VMM加载的可信过程和对平台配置的正确性,芯片组配置空间被分割为公共空间和私有空间。公共空间提供对配置寄存器的只读访问,MVMM可以选择允许用户访问这片空间。私有空间允许写访问,包括一系列的命令寄存器,对这部分寄存器的操作只能由MVMM通过特殊的命令来进行初始化和更改,如图5所示。
图5 芯片组空间
私有空间:这部分空间只能被认证代码模块或者VMM访问,安全增强芯片组的管理配置寄存器也处于这个空间,VMM和认证代码模块只能通过特殊的访问命令来访问这片空间,在BIOS加载操作系统以后,这片区域对操作系统是透明的。
公共空间:安全增强芯片组的通用寄存器处于这个空间中,普通的读写访问就可以访问到这个空间中的内容,这片区域对操作系统而言同样是透明的。
需要特别注意的是,专用空间和公共空间的空间地址不同,但通过偏移量映射到的是物理上相同的一片寄存器空间。区别在于它们所具有的读写权限不同。这种权限取决于对寄存器的访问来自于什么空间。
在芯片组的配置空间中,其中最重要的有以下几组配置寄存器:
(1)认证代码模块基地址和大小:通过这组寄存器指向了存储空间中一片预留给认证代码模块使用的内存空间,由BIOS在加载ACM之前进行初始化。
(2)ACM公钥的HASH值:这个寄存器中的ACM公钥的hash值将被用来认证ACM模块的合法性。
(3)安全堆栈基地址和大小:这部分空间也在加载虚拟机管理器的时候进行初始化,这片区域也是BIOS预留的,提供给VMM,用户虚拟机和认证代码模块之间通讯使用。这组寄存器同样通过BIOS来初始化。
(4)TCM中平台配置寄存器的使用权限寄存器:这部分寄存器决定了能否对TCM中指定的PCR寄存器进行扩展操作。
(5) DMA重映射硬件相关配置寄存器:这些寄存器用来配置DMA硬件保护单元,一部分由BIOS进行初始化,一部分由VMM进行配置。
芯片组的私有配置空间只有通过特殊的命令由具有权限的可信代码才能访问,从而从硬件上保证了VMM的特权和操作的正确性。
2.3.2可信密码模块
可信密码模块(trust cryptography module,TCM)作为平台的静态可信根,作为整个平台信任链传递的起点,需要完成的工作包括3个部分:启动控制,密码服务,加密存储和可信运算,例如杂凑运算、椭圆曲线密码生成、数字签名、对称加解密运算等。
传统的TPM通过LPC总线与主机进行通信,LPC总线是一种低速总线,用来进行密码运算等的通信,效率较低,并且对LPC总线的硬件访问并没有任何的保护措施,不能验证对TPM访问的合法性。因此本文定义的可信密码模块将作为系统的一个PCI设备通过PCI总线与主机进行通信,并且通过内部进行隔离,建立专用的通信协议来实现主机与TCM的通信,从而保证对TCM访问的合法性。TCM主要包括5个部分:通信隔离模块,CPU,非易失存储器(non-volatile memory,NV),密码运算引擎,平台配置寄存器(PCR)。其结构如图6所示。
图6 TCM模块
通信隔离模块:提供通信隔离功能,上层驱动只能通过通信人口对TCM进行读写访问。并且读写访问都采用专门定制的通信协议来进行,将所有对TPM的操作都被封装为报文。上层通过驱动程序对报文进行封装和解析,TCM模块本身通过内部CPU进行报文解析。这样就保证了对TCM访问的合法性,TCM内部的空间对上层来说是透明的。
CPU:进行密码运算,报文解析和存储空间的管理。
NV:负责存储数字证书,用户口令,度量日志密钥,BIOS镜像,VMM镜像等。
PCR:参见TCG1.2关于动态可信的规范,由于采用了动态度量根,因此TCM中的平台状态寄存器在原有的基础上增加了3个PCR寄存器,对这3个寄存器的访问权限由芯片组中的配置寄存器决定:
PCR17:认证代码模块的度量值,作为平台的动态度量根。
PCR18:VMM的度量值。
PCR19:用户虚拟机的度量值。
2.4虚拟机管理器
MVMM作为该架构中提供控制的软件,它将主要实现下列功能:
(1)存储的保护:内存的隔离保护是VMM最重要的功能之一。通过VMM对地址空间的划分和地址映射逻辑结构的维护,可以实现不同虚拟机之间物理内存的隔离。
MVMM对所有的系统中的资源和存储进行控制。在度量启动完成之后,MVMM取得了系统的控制权。它位于系统最核心的一环,拥有最高的特权,拥有对硬件页表指针(PTR)和全局描述符表(GDT)以及中断描述符表(IDT)的完整控制。
如果一个应用需要通过一个存储地址来访问到物理空间页面。CPU会判断这个虚拟地址,并将这个虚拟地址转换映射到物理地址中。对页表人口的设置是完全处于VMM的控制之中。随着客户机的执行,VMM会截获客户机对内存的访问的操作,并对自己维护的用来进行地址转换的页表(影子页表)进行相应的操作。很清楚,在这种机制下,一个运行在虚拟机上的客户操作系统是不可能直接存取真正的页表数据的。由于VMM是经过度量和认证的,因此只要保证了VMM操作的合法性,就能确保各个虚拟域之间的隔离和安全。
(2)资源的分配:除了物理空间以外,VMM对平台中的所有资源都进行控制。硬盘,显示,USB设备以及所有平台中使用到的设备都在VMM的控制之下。
所有存储映射的资源对于VMM来说都非常好控制,它们发出存储地址,而VMM将这些地址都作为受保护的页面来处理。整个VMM对资源的控制映射到了对存储页面的控制。
(3)通信的通道:用户之间可能需要进行通信。VMM对用户之间的通信进行完全的控制。
(4)分区的生命周期:VMM的一个主要的特性就是启动和关闭一个客户分区的能力,什么时候,如何启动和关闭一个用户分区。用户分区生命周期的管理策略必须符合当前的强制策略。对于具有间接嵌人到代码中的策略的VMM来说,对VMM身份的鉴别同样就确认了用户分区生命周期的管理策略。对于有直接策略状态的VMM,VMM必须能够表示VMM强制的策略和VMM如何加载这个策略。
3.DMA保护
3.1 DMA保护模型
DMA保护通过一个位于计算机物理内存和DMA外设(也就是具有总线主设备访问权限的设备)之间的DMA保护硬件逻辑(位于硬件平台的芯片组中)来实现。外设在发起DMA操作的时候都必须要通过DMA保护硬件的处理。
首先有一部分存储空间的内容是本架构特有的并且是应当受到保护的,必须要避免这部分的内容受到DMA的影响。这部分功能通过一种称之为内存保护表(memoryprotect table, MPT)的结构来实现。其次,为了实现DMA保护,本设计研究和借鉴了直接I/O分配的I/O虚拟模型,在这种I/O分配模型下,通过VMM将物理I/O设备直接分配给虚拟机,驱动程序直接运行于客户虚拟机之下,而不是运行于VMM中,用户虚拟机内部的驱动程序直接和硬件设备直接通信,只需要经过少量,或者不经过VMM的管理。VMM需要通过维护硬件的设置,以隔离和保护硬件资源只给指定的虚拟机使用。
在初始化DMA控制器的时候,驱动程序对设备DMA访问的设置和分配都只具有客户机物理地址的视图,每个设备驱动程序明确地注册自己的设备存储空间缓冲器,VMM会将这些缓冲器分配给特定的域,从而实现设备存储空间的域隔离。这样DMA保护硬件可将来自I/O设备的DMA限制在这个域所拥有的物理内存。这种分配机制能够被每个设备独立的配置。而具有直接硬件控制能力的VMM将截获并验证这种配置操作的合法性并通过维护客户机物理地址到宿主机为地址视图的转换来保证I/O设备分配的域隔离的正确性。
参考CPU对内存的管理机制,这部分功能的实现主要包括一个地址映射逻辑,它的编程和维护由MVMM来实现,而对于运行在MVMM之上的用户虚拟机,这部分的内容是不可访问的。在此基础上更进一步,通过对各个分割域中的页面加人保护属性,最终实现了DMA访问的隔离和保护。当任何I/O设备请求对某个页面进行访问的时候,硬件会对该页面的访问权限进行查看,允许符合权限的访问,阻止不符合权限的访问。
DMA保护硬件对指定页面的保护如图7所示。
图7 DMA保护硬件对指定页面的保护
3.2 MPT
MPT包含了所有物理空间,由芯片组配置空间的二个寄存器来进行配置,分别为MPT的物理基地址和大小寄存器,在加载的时候,会将这部分的信息传递给认证代码模块以供使用。MPT存放在一片连的物理内存中。这个表覆盖了平台所支持的所有物理页面。如果以1bit对应4KB的页面,那么4GB需要1Mb的MPT来实现,其对应的物理页面是经过所有转换后的实际物理地址页面。通过ACM来使能MPT的保护。在度量启动的时候,认证代码模块将初始化MPT,在将控制权移交给MVMM之前,认证代码模块必须要将以下的页面加人到MPT中:所有包含有VMM的页面,包含有VMM页表的页面,可信堆栈空间,ACM区域和MPT,本身的物理页面。在完成这些操作后,之后认证代码模块将控制权交给VMM,VMM将负责维护MPT并且使用MPT来初始化它的DMA地址映射硬件。
MPT结构如图8所示。
图8 MPT结构
MPT的大小必须是固定的,并且是线性排列的,每一位对应一个物理页面。如果需要将一个页面加人到MPT中,那么需要将对应该页面的位置1,如果不需要保护则清除为。在系统复位后,MPT的初始化状态都为。
在MVMM加载完毕后,MVMM可能会启动一个或多个用户虚拟机,在为用户虚拟机分配虚拟地址并建立虚拟地址到物理地址的映射结构的时候,需要读取MPT的内容,并保证这部分的页面不会出现在分配给用户虚拟机的宿主机物理页面中。
3.3域和地址映射
在启动最初的客户虚拟机的之后,将由虚拟机管理器对DMA保护硬件进行初始化。上一节已经讲过,不允许DMA访问的受保护的页面将不会出现在地址映射后的页面中,而其它的物理页面则通过域的划分和地址转换来提供保护。
发送到地址转换硬件的DMA请求需要明确地标志发出请求的源设备。这种标志被称为源ID。例如对于PCI设备来说,一个设备的请求标志包含了3个组成部分:PCI总线号,设备号和功能号,通过配置软件分配用来唯一地标志发出请求的硬件功能。硬件通过源ID来索引地址映射结构,其映射过程如图9所示。
图9 DMA地址映射结构
需要3种数据结构:根条目,上下文条目和多级页表。根条目和上下文条目都存放于内存一片连续的空间中,根条目的地址由芯片组中一个配置寄存器所指向,分别代表了系统中的所有总线和该总线上所有的设备。上下文条目将一个指定的总线上的I/O设备映射到它被分配的某个域中,相应地指向这个域的地址转换结构。分配到同一个域的上下文条目必须使用相同的地址转换结构,同样,使用相同地址转换结构的上下文条目也必须处于同一个域中。对于多级页表,将根据用户虚拟机的地址宽度来决定它的级数,如果为页节点,则表示宿主机的物理地址,否则指向下级页表,页表中包含有一个可读位和可写位。在收到DMA请求时,硬件将进行判断。如果是DMA读请求,那么如果硬件发现一个页表条目的可读数据域被清除了,那么对这个页面进行读取的DMA访问将被阻塞。同样,如果为DMA写数据请求,当地址映射结束后的页面可写数据域被清除,那么DMA的写请求将被阻塞。
在3.2节中讲到过,MPT中的物理页面将不会出现在转换完成后的物理页面中。通过对页表条目的编程,VMM可以根据需要将分割域中需要进行保护的页面的读写保护位置位,要么地址被成功地翻译称为宿主机物理地址,要么请求被阻塞。
3.4仿真验证
在此基础上,本文对DMA保护硬件进行了仿真验证,其硬件平台为PLC9054+FPGA+DSP的形式。其验证的基本思路是:将9054的PCI总线端作为一个DMA访问的主设备,使用9054的PCI端的总线地址模拟用户虚拟机的用户物理地址。通过FPGA发起对DSP存储空间的访问,发起的访问通过PCI总线端对9054的地址空间进行读写访问来模拟,并通过DSP的中断模拟DMA的中断。9054通过FPGA中的一个深度为20字节的FIFO,写人发起访问的数据结构。FPGA通过内部的映射逻辑将9054发出的目的地址进行映射以后发起中断。DSP响应中断根据读写权限或成功完成访问或返回失败。这样一个完整的DMA访问过程就实现了。其过程如图10所示。
图10 仿真验证DMA访问过程
为简化过程,采用单级页表,地址空间分配见表1。
表1 地址映射结构
实验结果表明,当9054的PCI端对页面1和2发起读操作时,相应的访问被阻止,DSP返回失败的标志。当对页面2和页面4发起写操作的时候,访问被阻止,DSP返回失败。并且通过PCI端无法访问任何超出0x8000 0000-0x8000 3000地址范围以外的任何地址内容。可以看出,通过此种架构进行DMA保护是有效的,并且在页表级数不高的情况下具有相当高的效率,转换过程只用了3个时钟周期。
4.结束语
通过深人研究当前国际上最新的可信执行技术和虚拟化技术,本文提出了一种增强存储保护的可信计算架构,解决了传统的可信计算体系架构中对内存空间保护不足的问题。通过对系统中芯片组硬件的改进和增强,利用动态信任传递机制,保证虚拟机管理器加载和运行的安全可信,创建受保护的执行环境,有效增强系统的安全性。利用虚拟化技术对于内存的隔离和保护功能,实现不同虚拟域之间的完全隔离。通过MPT和 DMA硬件保护逻辑,实现了DMA访问的控制和DMA域分割以及域中页面的保护。在此基础上,对DMA保护硬件进行了仿真验证,结果表明该机制是有效的。
在今后的工作中,应当进一步深人研究虚拟化技术与硬件的结合,完善本架构中硬件逻辑和软件功能的划分和配合。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:增强存储保护的可信计算架构设计
本文网址:http://www.toberp.com/html/consultation/10839711558.html