TWiki> Daoli Web>DaoliChinese (12 Aug 2009, Main.Admininistrator)EditAttach

道里可信虚拟化平台

道里解决的安全问题——云安全

Daoli的目标在于解决云计算中的IaaS的安全问题,关于云计算安全的讨论参见云计算安全

体系结构

Daoli可信平台的目标是为云计算环境提供一种行为合规性(Behavior Conformity)服务。其一是加强用户之间的安全隔离。传统的虚拟机监控器VMM已经提供了VM之间的隔离,使不同虚拟机的运行环境相互独立,互不影响。我们认为,在现代开放的计算环境中,由于COTS系统的安全脆弱性,仅仅提供虚拟机级别的安全隔离是不够的,它并不能有效地保护用户数据的私密性和完整性。Daoli可信平台基于VMM提供一种安全的进程隔离机制,无论是操作系统内核还是其他进程都无法访问和破坏受保护进程的用户空间。其二是对平台所提供的安全隔离保护机制的完整性进行度量,并使用可信证明技术向用户提供可验证的安全保障机制。
1)进程隔离
现代多任务操作系统的主要目标之一是实现进程隔离。但不幸的是,由于COTS操作系统的安全脆弱性,OS的安全漏洞经常被恶意软件加以利用,恶意软件很容易获取root权限从而控制操作系统。此时,任何进程的用户空间都可能被访问甚至篡改。所以说COTS操作系统所提供的进程隔离是无法保证的。而在云计算环境,由于云计算平台的管理员不受用户所控制,他很可能会变成内部攻击者来窃取用户的数字财产,所以安全的进程隔离服务是非常重要的。 Daoli通过在VMM中增加“进程隔离(Process Isolation)”层来创建一个具有私密性保护的运行环境。“进程隔离”层截获并监视受保护进程的数据流向,控制受保护进程、OS内核和底层硬件之间的数据传输,确保OS内核和其它进程无法访问或篡改受保护进程的用户空间的代码和数据。

daoli.JPG

图1描述了Daoli可信平台的系统结构。与传统VMM的视图(如左边物理视图所示)有所不同的是,从逻辑上来看,Daoli-VMM实际上在受保护应用程序和OS内核之间的交互过程中扮演了中间人(man-in-the-middle)的角色。不过这是一种中间人保护机制,而不是中间人攻击。因为VMM所处的特权位置,它能够截获所有的特权操作以及受保护进程和OS内核之间的交互。 从标准的进程抽象来看,进程一般由如下三部分组成:CPU执行上下文、内存页面和I/O数据。为了保护一个进程,Daoli实现了如下三种机制:截获、隔离和I/O加密。在进入内核态运行前,Daoli对受保护进程的CPU执行上下文信息进行隐藏,以阻止其泄漏给OS。对于内存页面,Daoli同样执行对页面映射信息的隐藏,以阻止OS访问进程的物理页面。另外,Daoli还对受保护进程的物理页面进行监控,以防止物理页面被未授权的改动。对于进程I/O相关的数据来说,Daoli通过I/O加密或解密的方法来解决。比如,从用户空间写数据到外存,Daoli首先对数据执行加密然后交给OS内核处理;从外存读数据到用户空间,Daoli执行解密操作之后,然后将数据交给受保护进程。 Daoli所提供的“进程隔离”具有透明性,它保持后向兼容性,所以遗留的应用程序不需要任何修改便可以直接运行于Daoli平台。另外,Daoli所提供的进程隔离方法还具有强制性,无论OS内核是否可信(或已遭受攻击),它都无法绕过Daoli所提供的安全控制。对于一个恶意的OS内核来说,尽管它有可能拒绝服务,但这并不会破坏受保护进程的私密性。

2)TCB完整性度量
可信计算基(TCB)通常指一个应用程序的安全执行所必须依赖的一个包括硬件、固件、软件以及负责执行安全策略的组合体。如果TCB中的任何部分的完整性被破坏,应用程序的安全执行便无法得到保证。在传统的系统安全技术中,由于不存在有效的方法对TCB的完整性进行度量,所以一般假设TCB是正确实现的。但实事上,由于TCB是一个庞大的组合体,其安全性往往是很脆弱的,比如遭受攻击而导致完整性破坏。可信计算技术的出现使得我们有办法对平台上加载的软件栈进行度量以决定其完整性是否遭到破坏。所以,我们可以采用可信计算技术对TCB的完整性进行度量。 在Daoli框架中,Daoli-VMM属于TCB的一部分,但OS内核并不属于TCB。所以,需要度量的模块主要包括BIOS、OptionROMs、Bootloader和VMM。和TCG技术规范相比,Daoli平台仅需将度量的软件延伸到VMM,而不必对负责的OS进行度量(而事实上,目前还没有很好的度量OS的方法,因为OS内核可能包含一些无序的动态加载的模块)。 对Daoli平台的TCB进行完整性度量的结果可以通过可信证明(Attestation)方法向用户提供度量报告。用户通过验证度量报告以确定Daoli平台的TCB是否为用户所信赖。下一部分我们讨论Daoli所使用的一种轻量级的可验证安全启动机制。

可验证安全启动

安全启动的目标是使得系统启动之后能进入一个用户所预期的状态,否则系统启动失败或无法提供正确的安全服务。 实现安全启动的典型方法是在加载软件之前验证该软件的正确性,比如验证其代码签名是否有效,或者计算其Hash值并与预期值进行比较。这通常需要额外的代码签名和签名验证开销,或者需要维持一系列预期值存储及其完整性保护。近来,Intel TXT技术还使用了重量级的硬件改造方案来实现运行时的安全启动:CPU在执行引导模块(ACM, authenticated code module)之前需要使用内置在CPU中的公钥来验证ACM代码数字签名,如果验证通过便加载该引导模块,从而进一步度量并加载内核使平台进入一个预期状态。 为此,Daoli提出了一种轻量级的基于软件的安全启动解决方案。Daoli安全启动方案基于现有的TPM标准来实现。该方法包括两个阶段:(1)安装引导程序;(2)启动系统。具体过程如下。

1)安装过程
假设第一天的安装环境是可信的,安装引导程序的目的是记录这个预期的可信启动环境,并强制要求之后的启动过程必须符合这个预期的可信环境。安装过程的输入是当前启动环境和Daoli-VMM可执行映象的哈希值。那么,安装过程的输出是一个与启动环境绑定的加密的引导程序。这个加密的引导程序被成功解密的条件是解密时的启动环境与加密时的启动环境完全匹配,否则解密失败。将加/解密过程与指定条件绑定的操作可以利用TPM的SEAL/UNSEAL功能来实现。 在这一天的安装过程中,安装程序需要产生一个签名密钥对,其公钥部分被TPM(或可信第三方)认证,私钥存放于加密引导程序中。在之后的启动过程中,该签名密钥将被用于认证Daoli-VMM的正确加载,以及证明加密引导程序被成功解密这一事实。

2)启动过程
系统每次启动过程中,引导程序需要被解密。成功解密引导程序的条件是当前启动过程的完整性度量值与第一天安装时的完整性度量值相符。如果解密成功,则:(1) 引导程序获得执行控制权,验证待加载Daoli-VMM可执行代码的完整性,使用第一天产生的签名私钥对Daoli-VMM进行签名;(2) TPM对Daoli-VMM的代理功能进行授权。如果解密失败,ATCB将不能被加载。任何被篡改的启动过程将导致Daoli-VMM不可能获得引导程序的有效签名,也不可能获得TPM的有效授权。 拥有引导程序的签名和TPM授权后,Daoli-VMM将成为一个主动的可信计算基,并获得由TPM授权的身份密钥和存储密钥。身份密钥将用于远程证明,存储密钥用于实现受保护存储功能。当前TCG的远程证明操作是由TPM来完成,而Daoli远程证明过程将由Daoli-VMM来代理TPM执行,所以Daoli方法被称为“代理远程证明”。

3)完整性证明
Daoli-VMM代理远程证明的功能是验证 “当前”系统启动时的完整性与“第一天”系统启动时完整性是否完全相同。由于第一天的平台配置是可信的,如果验证成功,验证者也将相信今天的平台配置是可信的。与TCG的远程证明验证过程相比,Daoli-VMM代理远程证明验证过程更加简单。验证方只需要验证: (1) 引导程序对Daoli-VMM的签名及其签名公钥被TPM(或可信第三方)认证的证书; (2) TPM对Daoli-VMM的授权证书。如果验证有效,验证方将相信当前平台完整性与系统安装时平台完整性完全相同。对于任何绕过解密过程或解密失败的情况,由于Daoli-VMM不可能获得引导程序的有效签名和TPM的正确授权,平台完整性的验证将会失败。 因此,对于代理远程证明来说,判断平台正确性的含义其实就是判断当前系统启动时,平台上启动软件系统的完整性是否与“第一天”系统安装时的完整性(无贼时)完全相同。与TCG远程证明方法相比,代理远程证明的优势是:平台正确性由TPM来判断(不依赖于远端验证者),而远端验证者仅仅需要验证TPM的有效性。

道里与TCG

参见
Topic attachments
I Attachment Action Size Date Who Comment
jpgJPG daoli.JPG manage 16.5 K 10 Aug 2009 - 02:48 Main.Admininistrator  
Topic revision: r2 - 12 Aug 2009 - 14:49:06 - Main.Admininistrator
 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback