商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

毛文波博士:通过VMM提高系统安全可信度

作者:IT168 胡铭娅 整理  2008-02-20
    下面我介绍技术的范例,我们用进程隔离来实现。进程隔离有一定强制性的问题,进程隔离是在一个平台上,一般在一个OS平台上,这个OS尤其是我用商用OS,我认为Linux也是一个商用OS,在这个上面都是多进程的,那么过去呢为了OS做为一个资源管理的一个程序,它过去的情况是要多用户使用一个硬件平台,所以造成了很多进程,用了分时共享的方法,那么为了追求效益,它把进程之间的隔离做得比较差,一会儿我会介绍为什么做得比较差,造成进程之间可以读你的东西,如果我有点优先权更容易做这件事,大家知道有很多攻击的手段,都是因为进程隔离做得比较差造成的结果。那么这个可以看到,我又提到了如果是对于一个权限比较高的用户,比如说系统管理员,怎么管住他,这个管住的方法也有一个行业的标准。它是用一个硬件,如果现在买一个Server,如果上面没有一个可信平台模块,TPM,没有这么一个硬件的话,您很有可能没有买到好机器,现在根据IDC的好几年前的推测,实际上应该在2007年的时候超过50%的平台都已经有了,Server都已经出来了。它就是一个很的硬件模块,装在主板上,它有一些密码程序在里面,它里面有技术产生器等等,还有计算器,目的就是把平台上面的软件环境给记录下来,它本身又是具有一定的所谓的抗物理攻击的一些性能,一般来说要设法打开它,一般来说就破坏掉,它不会为你服务了,那么在这种情况下,里面可以做一些事情。使得系统管理员想要有很好的优先权,比如说他想读你的内存内容,你作为Guest,比如说语音计算,或者在多注册的计算环境下,怎么样是不是很担心Server把我的内容给跨过去,或者Server会担心破坏其他的进程的完整性。这个时候呢实际上就需要有一个硬件模块来解决这个问题。OK,这是一个行业标准。

    它除了硬件模块以外,还有TSS,一整套的软件系统。TCG的故事讲的是比较完美的,这个是装在系统上,作为一个外设,它的意思就是通过这个总线,从最早的开始,一直到OS,一直到理想情况,都得到一(哈西),得到一个然后再(哈西)一下,存在里面的目的就是我想把我的问题放到Server运算的时候,我对这个环境很感兴趣,我想问一下这个环境到底怎么样,这个TPM就可以回答我的问题,我送一个随机数,这里面有数字签名,把这个环境说一下,比如说这个是OS,哪个OS,我想说的是,PC机说的是一般的OS,我认为一般的OS不能解决这个问题,一般的OS设计得比较差,我们想OS下面有一个静态的模块,我们把这个VMM度量一下,然后我就问一下你是不是有我需要的VMM,如果有的话我可以放心的把我的东西放过去运行,这是PC机的想法和思路是这样的。那么由于TPM是抗物理攻击性的,所以想要让系统欺骗远程用户的询问是比较难的一件事儿。

   那么现在呢很容易的软件攻击的方法,在网络上多得是,这是很容易的,所以我们就想把软件的一些攻击的手段用TPM保护起来。当然我们用虚拟化的手段,这一张图可以很清楚的看到,我们在底下有一个硬件,在上面可以开许多不同的VMM,这些有的是Guest的等等,这些都是被TCB保护起来的。由于TPM有度量的功能,它把这个VMM,就是我们修改过的把它给度量一下然后存起来,再往上呢,OS我们一般就不再度量了,这个开源的工作我们是在Linux上做的。我们不相信Linux是可信的,但是我们不担心,在上面我们有用户需要处理的东西,递交给Server运行,但是用户不希望Server看到所有的东西,这样我们就把它保护起来,保护的方法我一会儿介绍。

    这个VMM我们用它的功能,它的优先权很高,它又是静态的,所以它可以度量下来,经过度量以后可以说,我们在讨论公开源代码的情况,这是一个玻璃的盒子,是一个透明的,可以把错误找出来,而度量呢,实际上形成了一个钢化的盒子,如果不把它度量,不把它分化,如果没有这样做的话,很多人很担心,我们把度量完了以后呢,改过的东西是不会通过我们刚才所说的报告,我希望你那边的是一个什么版本,是不是我同意的版本,里面有可能有漏洞,但是别人不能去修改它,这里面还有一个假定的前提,整个这个过程目前不一定是完全完美的,但是我们朝这个思路走,如果这个里面比较小的一个OS,如果它没有漏洞的话,那么这个里面应该是工作的。但是虽然说它比Linux要小得多,但是还很是复杂的一个东西。不管怎么样度量完了以后,这个时候可以通过报告的方法,把它这个结果拿过来,如果想要这个VMM,一个黑客想要让VMM为黑客服务的话,这个黑客最好的办法应该去攻击这块硬件。那是最容易的,或者它要设法找到(哈西)的碰撞,这是很难的。OK在这个前提下,我们就管这个VMM高度MMVMM,我们想要用它做什么事情呢?

   我们现在回到商用的OS,内存管理器是怎么做的,商用OS内存管理,它有一个逻辑页面和物理内存的Local map,这个map不会这么简单,但是原理是这样的,这个MAP在过去发展过程中呢,为所有的服务,比如说大家写东西的时候经常就自动存储了,这就是避免突然断电的时候,写过的程序还存在,这就是管理内存镜像的时候,用的地址是共享的。就是那片蓝的那片,它和物理完全无关的,而绿色的那是User逻辑内存。由于这个原因有各种各样的攻击手段来从一个进程跑到另一个进程。下一个进程以后这个Conal又可以下去,冒充另外一个来攻击,如果不去攻击就没有事,如果去攻击就有许多办法,如果有开源的攻击程序,如果大家想要下载的话,可以找到攻击程序,也可以看,可以在Linux上,比如说可以看别人的内存。别人存到磁盘上的东西都可以时时的读出来,这些攻击程序都存在的,是因为过去设计的共享资源方面和管理方面有问题。那么我们现在采取什么办法呢?

   我们说OS没有办法处理,OS太复杂了,OS本身是动态的,OS本身可以修改自己,比如说OS有错误的时候,就把OS改掉了,所以度量OS是没有意义的那么我们就想搞VMM,搞VMM的时候,原来的OS仍然想使用,OS不是有这个问题吗,有一个方法,这个VM M优先权很高,这个进程会发生中断,这样会被VMM截获,实际上是把User map存在地址里面,这是一个专用的地址。VMM可以这样管理的。它抹掉以后呢,用这个办法,比如说我们又回到原来的,我有一个攻击程序,它经过一个程序,Conal为他服务的时候,它进入了Conal,这为下一步为Bob服务的时候,Conal想攻击的时候,Bob地址不存在了,找不到了,以这样的办法来实现了进程隔离。这个进程隔离的方法是没有修改OS的。只是把在VMM截获了以后进行了一些处理,这是一个比较简单的方法。但是我还没有回答一个问题,比如说在Conal的时候,实际上这个User的地址找不到了,通常的情况下是成立的,但是有些情况下,正在做文档的时候,找不到的话就没有办法存储,所以对于这样的情况下我们就把它截获下来以后,把User内容进行加密。所以这件事是从效益上考虑,我们完全可以用加密的方法,但是我们不用,如果Conal不需要知道User内存地址的时候,我们就把地址内存给拦断就可以了。这样我们也有一个很好的效益。所以这个图片是在Conal必须要知道User地址内容的时候,我们就用加密的办法。
1 2 3
【内容导航】
第1页: 第1页 第2页: 第2页
第3页: 第3页
©版权所有。未经许可,不得转载。
[责任编辑:胡铭娅]