文摘

为了解决动态完整性测量方法存在的问题,一个动态完整性度量模型提出了基于内存分页机制。该模型可执行的对象作为测量对象的内存页面。页面安排到内存时,测量点插入,测量页面,他们的完整性验证。模型能够保证每个可执行文件的完整性和信任页面并确保整个可执行对象的完整性不是摧毁。来验证这个模型中,使用XEN hypercall机制获得可执行对象的页面安排到内存和完整性度量和验证码被放入hypercall处理程序。因此,动态实现完整性测量可执行对象。

1。介绍

可信计算技术是来自彩虹系列的安全指导文件信息系统由美国在1983年推出。TCG在1999年首先提出了可信计算平台的概念(TCP)和可信平台模块(TPM)并提出TCP系统的具体结构和技术路线(1]。

可信计算技术的核心是可信计算基础和信任链2,3),和信任的测量是这项技术的关键问题(4,5]。可信计算把诚信作为一个信任的基本属性。平台的可靠性取决于完整性度量值等于相应的完整的参考价值。

完整性度量可以包括静态测量和动态测量。静态测量的对象是可执行部分加载到平台启动期间,如BIOS、操作系统加载程序,操作系统内核。动态测量的对象是可执行的对象,包括代码、数据和库文件。单链过程的静态测量是一个固定的序列(6),测量过程仍然是不变的操作平台的变化。不同于静态测量、动态测量多个和无序的过程,和对象加载和运行的时间和空间都不是固定的。显然,动态测量更准确的描述和评估平台的完整性,并且它还可以得到更多的关注和研究7]。

完整性度量架构(IMA) (8)是一个著名的完整性测量结构由IBM开发的。TCG测量方法的基础上,IMA扩展的内容完整性测量,并使用一个可执行的主题,动态加载程序,内核模块,动态链接库作为测量对象来衡量执行主体的完整性。政策减少完整测量体系结构(表面上)(9)提出了一种policy-reduced完整性测量加载时间测量的结构来解决这个问题。

安全总线(某人)(10)是乔治梅森大学提出的可信计算架构。建筑使用TPM作为可信根并添加一个安全内核(SK)和某人信任关系是按照顺序传输的硬件,SK,操作系统,某人,可执行的主体。SK位于之间的硬件和操作系统内核,从底层硬件隔离程序流程。某人执行动态完整性测量每个程序的过程,使输入和输出数据散列操作,使输出数据的签名。一个新的嵌入式测量模块设计了基于某人测量方法(11]。这个模块可以计算平台与nontrusted组件使用可信计算功能和保持平台的操作。

一般来说,评价指标的测量方法是测量范围和实现机制(12]。IMA测量有很大的性能和效率,它可以执行测量在加载过程。然而,IMA不能掌握的动态过程由于LSM核心钩子函数,所以它不能执行测量在流程运行。IMA的基础,表面上增加强制访问控制策略,这使得它灵活控制测量之间保持一个平衡安全性和可行性(13),但表面上仍表现测量只在加载过程。此外,表面上需要测量强制访问控制政策和信任的对象,这就增加了难度和复杂性。某人的方法可以测量完整流程运行阶段的进程间防止篡改和测量完整输入和输出阶段使用一个散列算法程序流程的代码。然而,由于严格的处理隔离机制,运行的进程在某人是非常有限的。虽然某人模型是为了确保安全,它减少了可用性,这使得它难以推广。

解决存在的问题和不充足的动态完整测量方法,基于内存分页机制的动态完整性度量模型(MP)是研究。为了证明这种测量模式,XEN hypercall机制采用获得可执行主体的页面为测量对象,插入点,测量措施和验证前计划到内存的页面,并将测量码和验证码到超级调用处理函数,因此实现动态完整性测量可执行的对象。本文的贡献在于动态完整性测量可以有效地实现通过以可执行的内存页面为测量对象,运用操作系统内存分页机制。

符号。摘要组件需要动态测量运行服务,流程,或可执行对象,用 用、内存页面 和存储块用

2。设计的动态完整性度量模型基于内存分页

内存空间中所有的代码和数据暂时存储。代码和数据的变化可以观察到在内存空间。因此,如果它可以有效存取存储器内容,动态完整性测量可以有效地实现。

2.1。模型设计

在内存管理的观点,话题 在它的生命周期可以被看作是一个动态的内存页面的数量 ;也就是说, 在哪里 是内存页的数量被主题 的生命周期。

显然,如果所有加载动态页面都是集成的,话题 动态信任。

公理1。当且仅当 ,在那里 完整页面的期望值 ,那么这个话题 动态集成或可信。
根据公理1、动态信任度量的主题可以相当于测量动态加载页面。图中描述的议员动态测量模型1

议员模型主要包括监控模块和测量模块。

(1)监控模块。监控模块用于页面和页面的执行控制和主要由监测单元和执行控制单元。

页面监控单位负责监控物理内存空间。当页面监测单元调整页面,它可以按时内存页,然后发送测量模块的页面。

执行控制单元负责控制内存页面的执行。完成完整的测量后,执行控制单元需要决定是否执行页面或中断程序基于测量结果。

(2)测量模块。用于完整性测量和测量模块主要由完整性计算单元、完整性验证单位,和完整性参考价值。测量模块与底层可信平台模块通信。

完整性计算单位获得完整性值通过使用指定的哈希算法来衡量特征信息的页面发送的监控单元。

完整性验证单位被比较完整性价值和完整性检查结果参考价值的页面。页面是可信的,如果检查结果是一致的,否则它不受信任。然后检查结果应发送给监控模块。

2.2。动态页面的完整性参考价值

完整的参考价值是一个完整性验证的证据。这个模型可以动态地计算页面参考价值 基于块的物理存储机制。

正如我们所知,每个主题的地址空间由代码段、数据段和堆栈段。然而,由于代码段包含可执行程序的机器指令,它变成了一个木马病毒和其他计算机病毒的主要目标。本文的完整性测量方法的代码段页面只是分析。

一般来说,计算机文件系统(脂肪,FAT32, NTFS等)通常是存储和管理基于块或部门的机制。也就是说,当话题 存储的身体,它可以被视为一个序列存储块的组合吗 : 在哪里 的物理存储块的数量吗 占领。

当这个话题 加载并运行,一些块 将会加载到缓冲区。根据文件系统的管理机制,一块或数个连续块的主题 每次加载。因此,每个缓冲区可以表示为 在哪里 是开始块的数量,和 是结束块的数量。

根据操作系统的内存管理机制,内存分页。事实上,内存是一组缓冲,它可以在两个具体案例讨论。 页面是由几个缓冲区和缓冲区很小。 页面缓冲区和缓冲区是相当大的一部分。

在第一种情况下,每个缓冲区可以对应多个物理存储块的主题 。显然,页面也可以相应的物理存储块的话题 通过缓冲区。

正如我们所知,在操作系统中,每个内存页面的大小 存储块的整数倍吗 。因此,当页面缓冲区的一部分,每一页的开始必须与某种相应的存储块,和相应的页面也可以用一些物理存储块的主题 通过缓冲区。

根据上面的分析,我们可以得到

基于(4),我们可以得到完整的参考价值 通过一些简单的散列计算

这意味着我们也可以 通过计算的完整性参考价值的话题 存储块。

同样的,当这个主题 加载动态链接库(DLL),页面的完整性参考价值可以通过计算得到的主题 和DLL。

2.3。测量的点

选择测量的点是可用的测量模型的一个关键因素。

一般来说,当执行一个可执行的主题是,操作系统将创建一个完整的程序地图,包括代码、数据、堆栈和库文件的部分。同时,操作系统会分配内存,当前块加载到内存中,并创建一个新页面的映射表物理地址空间和虚拟地址空间。当页面加载失败时,所需的操作系统将取代一些新的页面从磁盘向内存基于页面置换算法和更新页表。

基于上述分析,在整个生命周期的可执行的主体 ,操作系统管理和操作的内存空间。但是内存空间的变化必须导致页表更新或创建。因此,当操作系统创建或者更新的页表,测量角度应该插入和执行预设的测量程序。然后,测量模块调用TPM散列算法测量的完整性值特征信息的可执行的主题页面。之后,测量模块应该比较完整性值与完整性的参考价值。操作系统执行该页面如果测量成功,否则退出。

2.4。动态测量过程

议员的测量过程度量模型页面加载时开始。第一步是通过相关机制获取页面内容,然后使用完整性计算单位计算特征信息的页面。下一步是执行和验证的完整性,然后回到原来的页面。

议员的动态测量过程模型显示在图2

假设当前执行(或更新)的页面 , 年代初始地址的缓冲区,和Memory_snap 的实际内容。动态测量算法描述如下。(1)分页单元加载页面 到内存中,并执行它。很明显, (2)度量程序获得这个页面并使用哈希算法来计算页面的功能信息 。然后, (3)度量程序得到相应的完整的参考价值 页面的框架 从(5)。然后, 在(5), 可以通过数据结构指向缓冲区的指针,和缓冲区的指针对应 (4)完整性评价单元(TPM在一般情况下)进行比较 。如果 、页面 是值得信赖的,它允许加载和运行。否则,错误处理程序应该被执行。

根据公理1,当且仅当 ,那么我们可以考虑系统是动态的,完整的、可信的。

2.5。模型分析

(1)模型的可行性。TCG动态完整性度量模型议员基本上符合测量框架和机制模型,包括两个单位:完整性测量和完整性验证。顺便说一下,两个单位的功能与TCG的测量模型是一致的。议员的可行性模型是由测量点插入机制决定。即议员度量模型可以实现只要测量成功插入点。议员的内存分页机制是基础测量模型,虽然它是由操作系统实现的。目前,研究操作系统的非常全面的特别是开源操作系统。通过修改操作系统的核心,它可以实现动态议员测量模型基于内存分页机制。

(2)攻击检测能力。篡改攻击内存页面的加载之前攻击(LBA)和负载之后攻击(LAA)。LBA攻击页面映射存储在磁盘上。即页面干扰之前被加载到内存中。LAA是使用一些恶意程序篡改页面加载后的记忆。

上面的议员测量模型可以抵御攻击。例如,如果模型受到LBA,页面将会破坏和完整性值将被改变,但模型的完整性参考价值是从未改变。因此,当度量模型执行验证操作,它必须能够检测到的页面已经被伪造,然后执行错误处理程序。

如果模型被LAA攻击,破坏记忆总是会导致页面置换,移出页面失败,页面。当页面故障,任何破坏页面将移动到磁盘,和执行流将被打断时,这种情况下检测到的测量程序。页面移出或分页替换发生时,内存分页机制可以首先找到一个不常用的页面框架和这一页移动到磁盘和新需要的页面加载到页面框架。然后测量程序可以发现内存页面干扰。LAA是可能的恶意攻击者攻击另一个进程的内存空间运行,和恶意攻击过程必须存在于它自己的内存空间或嵌入其他进程的内存空间。当恶意进程或其嵌入式进程加载到内存空间,该模型可以检测它的执行恶意程序的开始。

(3)安全分析。议员的安全性度量模型支持的安全测量根和测量算法。

议员的TPM是测量根测量模型。在这个模型中,计算完整性和完整性验证执行TPM和依靠TPM的安全。一般来说,TPM模块是一个安全芯片,它作为内部密码算法引擎可信计算的可靠保证。测量根,TPM模块是可信链的第一个节点的可信计算平台,和其余的可信计算将视此步骤为基础。TPM的安全主要体现在能力的芯片设计安全、密钥存储,antisoftware分析和antihardware分析。因此,TPM的安全受到物理安全和管理安全保障。

这个模型使用散列算法作为测量算法。重要的是要选择一个可靠的信誉为保证哈希函数的测量机制。

(4)计算复杂度分析。这个模型使用散列算法作为测量算法。议员模型的计算复杂度取决于散列算法。

(5)与其他测量模型进行比较分析。在表1,几个完整性测量方法四个方面进行比较:范围的行动,硬件要求,结构复杂性和实现机制。

TCG的度量模型只能完成静态完整性测量平台开始阶段。因为这种测量方法是只执行完整性测量组件加载平台,很容易实现。

TCG IMA测量模型扩展了测量模型和执行完整的程序加载时间。然而,由于LSM机制的限制,完整性测量程序运行时无法实施。

通过使用处理隔离,某人测量模型可以实现动态测量程序运行时完整性。但它需要特殊的硬件支持。LaGrande技术(LT)是一个硬件技术引入了英特尔,它旨在微软的钯可信计算程序。安全执行模式(SEM)是一个AMD提出的硬件技术。某人,TPM, LT和SEM是用于隔离内存运行软件的攻击。

议员模型可以实现动态测量程序运行时完整性。此外,它的结构简单,容易实现。本文的其余部分将讨论如何实现议员完整性度量模型在XEN虚拟架构。这很简单和灵活的实现机制,同时也避免了有限的过程中沟通问题,因为处理隔离。

3所示。实现基于XEN的议员超级调用

3.1。实现机制

在XEN系统中,作为虚拟监视器,XEN位于最高特权级别(环0),而来宾操作系统仅位于分段(环1)。较低的内核特权使来宾操作系统不执行一些特权操作,和XEN可以执行特权操作。因此,XEN提供了一系列的接口,它是方便客人操作系统来完成这些特权操作,超级调用(14]。

可执行的主体是在操作时,来宾操作系统可以管理和处理的内存空间基于特征的超级调用机制。如果页表操作,一个超级调用XEN的开始。在这个时候,我们插入一个计量点并将度量程序嵌入超级调用的处理函数。然后这个模型可以实现。具体的过程如图3(1)来宾操作系统页面加载到内存中,并试图处理页表。(2)来宾操作系统不能直接访问页表,它适用于XEN超级调用。XEN检查超级调用请求,它将下一步如果允许,否则程序结束。(3)实现测量项目:测量程序的内存页面,调用TPM散列算法计算测量值,并比较其与参考价值这些页面的完整性。如果他们是一致的,这意味着页面是可信的,程序进入下一步,否则结束。(4)完成操作的页表,回到来宾操作系统。

3.2。测量模型的实现

(1当创建页表)措施。当一个可执行的主题进行,这个软件创建一个完整的复制硬盘上的程序地图,和地址空间可以形成。但是该软件是完全不把到内存中来处理。来宾操作系统分配一个号码的记忆并创建页表映射物理内存和地址空间。来宾操作系统调用HYPERVISOR_mmuext_op和这一进程页表装入页目录。XEN权威检验结束后,它执行do_mmuext_op()函数。这时,度量程序将测试点插入这个函数并执行测量程序。

对HYPERVISOR_mmuext_op XEN version-3.4.0维持18种操作,包括安装页表,卸载页表,更新CR3登记,缓存刷新和LDT表设置。HYPERVISOR_mmuext_op操作股票一个参数结构mmuext_op算法1

/ / xen / include /公共/ xen.h
struct mmuext_op{
unsigned int cmd;
联盟{
xen_pfn_t最惠国;
无符号长linear_addr;
}__arg1;
联盟{
unsigned int nr_ents;
Xen_GUEST_HANDLE_00030205 vcpumask (void);
}最长;
};
typedef struct mmuext_op mmuext_op_t;
DEFINE_Xen_GUEST_HANDLE (mmuext_op_t);

结构体包含两个工会:__arg1最长和包含四个参数最惠国,linear_addr nr_ents, vcpumask。结构体的定义改变根据不同的操作。页表的操作,最惠国指向页表的机器地址。测量程序完全根据参数获取页面。

(2当更新页表)测量。当一个程序运行时,所有的动态变化将反映的记忆,和记忆的变化将反映在页表中。过程变化时,内存变化和页表也变化。来宾操作系统适用于使用_HYPERVISOR_mmu_update更新页表。XEN权威检验结束后,它执行do_mmu_update()函数。此时,度量程序将测试点插入这个函数并执行完整性测量。_HYPERVISOR_mmu_update中定义有两种操作:页表更新(MMU_NORMAL_PT_UPDATE)M2P表更新(MMU_MACHPHYS_UPDATE),

定义的算法2

/ / xen / include /公共/ xen.h
#定义MMU_NORMAL_PT_UPDATE 0
#定义MMU_MACHPHYS_UPDATE 1

中定义的结构mmu_update _HYPERVISOR_mmu_update包含两个参数:“ptr”和“val”。ptr代表物理地址的项目需要更新页表,而瓦尔代表需要修改页表的新值。中定义的结构的算法3

struct mmu_update{
uint64_t ptr;/ *PTE的机器地址。* /
uint64_t瓦尔;/ *PTE的新内容。* /
};
typedef struct mmu_update mmu_update_t;
DEFINE_XEN_GUEST_HANDLE (mmu_update_t);

在来宾操作系统中,页表页表的更新意味着项目更新。页表的条目保存实际上是一个内存页面地址(或帧数页)。因此,事实上,页表的项目更新是相当于一个新的内存映射到当前的页表条目替换原来的页面。在这个过程中,双方的操作原页面地址和新的映射地址,它不是(ptr, val),但(val,新的val)。因此,XEN定义了一个新的hypercall完成这样的页表更新,这是_HYPERVISOR_update_va_mapping。因为这种操作是相对简单的,它不像其他超级调用定义结构,它直接传输参数。在x86架构下,三个参数需要操作是通过寄存器EBX转移,连成一片,EDX do_update_va_mapping ()。然后测量程序插入点到这个函数并执行完整性测量。

(3)可写的页表测量。Hypercall方法使更新页表模型成为间接;,来宾操作系统需要XEN安全确认和使用XEN完成页表更新。因此,来宾操作系统无法写它的页表。但事实上,除了使用hypercall更新页表,XEN还提供一个名为可写页面的新页表更新模型模型。尽管页面仍然无法写在这个模型中,来宾操作系统可以直接读写这些页面。

当然,在可写页面模型中,来宾操作系统确实没有写页表的访问。完成页表的更新操作后,它仍然需要XEN确认操作。在来宾操作系统更新页表,XEN的页表页表结构,操作系统,使客人操作系统识别页面作为普通的读和写。来宾操作系统完成后更新和XEN证实,XEN将来宾操作系统的页面到页面表结构,允许MMU访问这个页表。

在可写页面模型中,来宾操作系统可以通过使用Hypercall更新页表:_HYPERVISOR_vm_assist;函数是vm_assist ()。然后,测量程序插入点到这个函数并执行完整性测量。

4所示。结论

为了解决动态完整性测量方法存在的问题,一个动态完整性度量模型提出了基于内存分页机制。模型以可执行的主题页面为测量对象,插入点,测量和措施并验证它们在页面加载到内存中。该模型为每个可执行文件页面的完整性和信任,整个可执行对象的完整性并不是毁灭。为了证明这个模型,使用XEN hypercall机制获取可执行主题页面加载到内存,将测量码和验证码到hypercall处理程序,然后动态完整性测量可执行对象实现。

在接下来的工作记忆模型将讨论进一步攻击,完整性测量算法改进了相同的步骤。

利益冲突

作者宣称没有利益冲突有关的出版。