虚拟的有时比真实的还要好(+奥运杂谈)

8月 25th, 2008 发表在 未分类 | 没有评论 »

虚拟技术十分热门.虚拟技术是将一台物理硬件计算机虚拟成多台软件计算机.每一台虚拟出来的软件计算机(以下叫做虚拟机)用起来都就象是在用那台被虚拟的硬件计算机(以下叫做真实机)完全一样.当然这样的说法忽略了虚拟机相对于真实机在执行效益上不可避免所存在的损失.所以如何减少执行效益的损失也是虚拟技术的一个重要研究课题.

今天我想通过一些例子来说明虚拟机经常会比真实机还要好.既然真实机是一台硬件设备,机器搬家就不一定非常容易.首先停机是必须的.还得花钱雇搬家公司…虚拟机搬家就容易多了.虚拟机作为软件可以存储成数据文件从网上搬走,既便当又快捷.虚拟机搬家有许多用途.比如目的地电费便宜些,云计算方法的租赁费更优惠,等等.通过虚拟机搬家的方法还可以调整真实机上的载荷,以较饱满的载荷达到节能减排.

昨天奥运会成功闭幕!祝贺中国队荣登金牌榜首!让我借此机会杜撰一个”虚拟金牌”与真实金牌相对于虚拟机与真实机所显示出的某种相似性.金牌榜上的数字当然是真实金牌数.而一个国家队却可以获得更多数量的”虚拟金牌”.比如阿根廷单在男子足球上就获得了22枚这样的金牌.我们完全可以说这22枚金牌都是从阿根廷金牌榜上那一枚真实足球金牌所虚拟出来的.我个人以为,每一枚这样虚拟出来的金牌含金量一点儿都不比任何一枚真实金牌少.是啊,大球项目与团体项目的金牌更能体现与证明实力.颇有意思的是,争夺这些”虚拟金牌”往往需要花费更多的努力.所以我们也许可以这样说:争夺一个团体项目的诸多”虚拟金牌”,其”执行效益”要比争夺一枚单项金牌低吧.

 

云计算与分布式计算

8月 25th, 2008 发表在 未分类 | 没有评论 »

云计算是时下十分热门的概念.它到底是个什么好东东呢?以下Gartner给出的定义已经成为经典而被大量引用: Cloud computing is“a style of computing where massively scalable IT-related capabilities are provided ‘as a service’ across the Internet to multiple external customers using Internet technologies.”即,云计算是用因特网技术将信息技术能力整合成以极大规模上可扩展的方式对多个外部客户作为服务来提供的一种计算方式.太绕口了,说的白一点吧.云计算就是对用户提供租赁服务的一种计算方式,(由于采用因特网技术)用户应该在任何地方都能得到服务,而且(由于在极大规模上可扩展)租金还应该非常便宜.

可是用因特网技术把大量服务器联起来,提供租赁式计算服务,这难道有什么新意吗?换一句话:将一个大规模分布式计算网络配备上一个前端计费服务器(见下图),那样一来分布式计算就变成云计算了吗?当然不是!要不然我就会在如下表示分布式计算的图中画上一朵云彩了.

云计算具有可扩展计算资源整合的方法.因此我们也可以认为云计算是为用户量身定制一台虚拟计算机.说到虚拟计算机,我们通常会想到下图所示意的虚拟机模型.其中虚拟机监控器(VMM)是虚拟化技术中的一个重要部件.VMM的主要功能是将硬件资源变成虚拟资源.将硬件资源变成虚拟资源有许多好处,我就不在此详细叙述了.只讲一条:有时虚拟资源居然会比真实的硬件资源还要好,比如我们都知道虚拟内存可以做的远远大于硬件所能提供的内存量.不过用如下图联结起来的虚拟机群还是不能整合出云计算所需要的为用户量身定制的虚拟计算机的.关键在于通常的虚拟化方法只考虑到了虚拟单个硬件资源.如果只是把单独个别虚拟好的分布式的计算环境联结起来,这样做仍然没有超脱出上图所示的分布式计算的思路.

云计算所需的虚拟化技术必须是虚拟架构技术.简单说来,联结要考虑做在VMM集群的层面上.这样一来,硬件资源的虚拟化就不必局限于单个独立的硬件资源了.下图(来源:VMWare的创办人Dr Mendel Rosenblum)给出了虚拟架构技术的示意.在这样的虚拟架构上,一个应用软件对于硬件资源使用的请求(通常是对硬件发出中断,interrupt)可以不局限于同一个物理硬件资源.这样用虚拟架构技术整合出来的虚拟计算机才可以真正做到是为用户量身定制的.

可信计算(2)

8月 5th, 2008 发表在 未分类 | 没有评论 »

前几天我在”可信计算(1)”一文中声称:可信计算技术的一个重要应用就是保护软件的完整性,或者说是”硬化”软件,并将这一事实向用户作出担保.现对这一断言作一番技术说明.希望它Make Sense.

如图给出了可信计算的重要部件,可信平台模块(Trusted Platform Module, TPM),在计算机体系架构中的安装位置.TPM是个具有计算及存储功能的芯片.输入/输出控制器(I/O Controller)是连接外部设备与内存的总线.将TPM安装在I/O Controller中的目的是为了让TPM截获每一个从外存装载入内存的软件.所谓”截获”,您尽管可以把它读作”偷听”(或叫”垂帘听政”也行).由于是硬件连接,只要用户选择了”打开TCG功能”,TPM的”偷听”行为就不可避免.当然囿于TPM的内存量,TPM仅存储被它”偷听”到的软件的一个哈希值.TPM内部配备有哈希函数.

按照TCG的设计理念,TPM会按照整个系统及应用软件栈的装载顺序来”偷听”装载到计算平台上的所有软件.请不要担心TPM有没有这个海量,由于采用了一个很聪明的哈希扩展算法,TPM的确会有办法来存储所有能够被平台所装载的全部软件.举例X86平台的软件装载过程:从机器加电启动开始,TPM将顺序”偷听”并存储BIOS(通常是存在一个固件中,与附加ROMs一起,叫做BasicBootBlocks), MBR(Master Boot Record, 是系统硬盘上的第一个扇区内容), OS Loader(MBR所指向的一个足够大的磁盘区域,从其能够导入一个足够大的程序来执行OS的装载), OS, 用户应用程序1, 用户应用程序2,…(见下图,来源TCG).

如此顺序装载的程序叫做一个链(Chain).图中”度量”一个软件就是对该软件哈希.TPM之所以要把跑在计算平台上的整个软件链的哈希值记录下来是为了能够把该平台上的软件加载状况向一个关心这一状况的人报告.比如该平台是一台云服务器,而关心者是云服务的用户.TPM可以对一分报告进行数字签名,确保报告的真实性.TPM内有公钥密码算法使得TPM可以给出数字签名.

除了对TPM给出设计说明,TCG还给出了TPM设备驱动软件的设计说明.到此为止我对TCG技术作了一个非常简单的叙述.

假定在这样一个链中的这些程序都是正确的,则这个从底部BIOS开始到顶部用户应用程序的链就叫做信任链(a Chain of Trust),而BIOS又叫做信任链之根(the Root of a Chain of Trust).TCG当然无法控制任何这些软件的可信性!实际上通过TCG技术,一个平台软件状况的询问者仅仅是得到了平台软件状况而已,判断这些软件的正确与否还是询问者自己的任务.TCG技术只是对询问者作出了真实的报告.

目前普遍认为TCG所设想的信任链如要包含商用操作系统是不切实际的.从BIOS一直到OS Loader,这些软件都不是很复杂,做到可信不会太难.惟独可信OS是个大难题.目前热门的做法是用可信硬件虚拟化的技术来绕开商用操作系统不可信的问题.我会在以后的一讲中尝试介绍.

可信计算技术(1)

8月 4th, 2008 发表在 未分类 | 没有评论 »

我在云计算的一个问题“,”应用程序间的安全隔离问题软件的完整性保护问题等文中都提到”可信计算”技术.该技术的一个重要应用就是保护软件的完整性,或者说是”硬化”软件,并将这一事实向用户作出担保.所以可信计算技术在云计算中也有重头戏可唱.

您也许不知道,中国在可信计算技术这一领域并不象其它许多高科技领域那样比国际上落后不少.可信计算联盟(Trusted Computing Group, TCG www.trustedcomputinggroup.org)是行业中的一个标准组织.TCG于2003年11月公开发布可信计算模块标准.而国内武汉大学早在2001年就开始独立进行可信计算的研究工作了.2004年可信计算样机都已经在武汉做出来了.所以说咱们中国在该领域的研究与开发工作起步一点都不比国外晚.

第三届亚太地区可信基础架构技术大会 http://grid.hust.edu.cn/aptc08/chinese%20version/index.html 将在今年10月14-17日于长江三峡的一条游轮上举办.中国可信计算联盟(CTCU),中国开源软件推进联盟(COPU)以及若干跨国公司将积极参与主办.会议邀请到了12位国际国内资深望重的讲师演讲.许多很有意思的问题如云计算的安全,软件硬化保护,硬件虚拟技术,等都将在会议上作深入浅出的讨论.

欲知更多会议内容及参会方法,请到会议网站一访: http://grid.hust.edu.cn/aptc08/chinese%20version/index.html (中文) http://grid.hust.edu.cn/aptc08/index.html (英文).

软件的完整性保护问题

7月 28th, 2008 发表在 未分类 | 没有评论 »

软件的完整性保护问题不仅是个老话题,也是当前的一个重要而未解决的问题. “重要而未解决”这一断言是以目前计算机网络病毒,恶意代码,流氓软件,木马程序肆虐横行的现实情况来佐证的.  的确,许多这一类的攻击手段都利用到了目前缺乏有效手段对软件提供完整性保护这一薄弱环节,使攻击者得以将一个本来语义或行为基本上正确或至少是非恶意的软件的代码部分篡改成错误的甚至是恶意的版本.

对于一般的用户级软件,完整性保护至少有两个方面需要防范:即,软件在内存中及在外存中都需要保护. 前一种情况是指一个软件的代码(包括有些数据)已经被加载入计算平台的内存中后,在执行的时候平台对内存内容实行完整性保护. 在这一情况下,软件完整性的定义是一个比较复杂的问题(例如需要区分软件代码的合法自身修改与被非法篡改,另外在内存中一个软件可以有动态联结部分). 所以目前在内存中对软件的完整性保护手段很有限. 我们在道里项目中也(暂时)回避了对用户级软件在内存中作完整性保护. 对于后一种情况,由于软件在外存(如磁盘)中的完整性定义要比在内存中的情况简单的多.就是指一般意义上的数据完整性,手段不外乎使用更改检测码(modification detection code, MDC, 可以用哈希函数来实现),所以保护手段就相对比较成熟. 目前在研究与实践中很热门的”可信计算”(Trusted Computing)方法就是将一个软件代码的MDC哈希值存入计算平台上的一个密码芯片中保护起来. 下一讲我会介绍可信计算技术并对该技术应用于保护软件在外存上的完整性给出讨论.

在”应用程序间的安全隔离问题(1,2)”系列杂文中我介绍过可以采用硬件虚拟化技术来实现用户程序之间,包括用户程序对操作系统的安全隔离.其原理是使用虚拟机监控器(Virtual Machine Monitor, VMM)来截获用户程序为请求使用物理内存时所发出的中断,从而能够为用户程序提供妥善的内存管理服务.由于VMM对中断的截获具有不可被旁路的性质,所以这样的内存管理具有强制性.也许我们会这样想:这种具有强制性的内存管理服务是否可被利用到对用户级软件在内存中进行完整性保护呢?这的确是一个很值得研究的课题.

可是我们要注意到VMM本身也是以软件的形式存在于一个计算平台的外存上,并服务于平台之内存中的. 那么该软件自身的完整性,或者说它所具有的强制性内存管理这一语义行为的正确与否又是怎样得到保护的呢? 对于VMM在外存上的完整性保护问题,我将在下一讲介绍可信计算技术时再作讨论. 至于该软件被加载入内存中之后的代码完整性,我想如下的观察应该是比较合理的:VMM是系统程序栈中特权级别最高的一个软件,一旦被加载入内存中跑起来之后便开始执行强制性内存管理,所以一个攻击软件在VMM的监控之下很难对VMM所使用的内存区域进行任何形式的访问.另外值得一提的是VMM的执行代码部分可以做成一个静态程序. 所以说VMM在计算平台内存中的完整性保护问题倒反而是一个简化了的问题. 这似乎是一个好消息,一个硬件虚拟化技术给软件完整性问题带来的好消息.

公式化描述EMC中国实验室的研究2.0

7月 21st, 2008 发表在 未分类 | 没有评论 »

今天让我来对EMC中国实验室的 “研究2.0″作一个公式化的介绍.

IBM 的 James Snell 对于 Web2.0 给出了一个有名的 “程序员呆子”式的(geeky)定义: “Web2.0 = chmod 777 web”. 我虽然不敢自我标榜为 “程序员呆子”,但曾经干过几天程序员的历史背景使我非常喜欢这个 “程序员呆子”公式. 现对其作出如下延伸: “Research2.0 = chmod 777 Research”. 虽然充满 “程序员呆子”气,这个公式却是对EMC中国实验室正在尝试中的 “研究2.0″实践所给出的一个精辟的公式化描述.

首先,我们的研究人员与公司其它核心实验室(如著名的RSA实验室, 与EMC中国实验室同隶属于EMC全球创新网络)的同事们保持着密切的研究合作关系.这种公司内核心实验室之间的研究合作可由上述公式中的 “7–” 部分来表达. 同时我们也致力于把研究成果介绍给公司内位于全球各地的工程师们,并经常向他们征求反馈意见及用户需求.这种由核心实验室向公司各产品开发部门知识的交流与共享可由公式中的 “-7-” 部分来表达. 最后是十分重要的一条, 我们与全球大学及研究社区合作伙伴们的公开性合作研究(当然在中国我们与中国大学的合作更为广泛,深入而且密切).这一条也是使我们研究人员获得及生成知识的最有效途径,可以用上述公式中的 “–7″部分来表达.

“程序员呆子”们可以跳过以下圆括号中的内容(请注意:7的二进制表达是111三个比特). Linux 或 Unix “程序员呆子”们可以跳过以下方括号中的内容[111三个比特中第一个比特代表 "读"操作特权,第二个代表 "写"操作特权,而第三个代表 "执行"操作特权]

如上所述在三个范围内的全方位合作都是在知识共享的方式下进行的,所以每一个7都表示合作者们都具有 “读”操作特权. 合作者们积极贡献知识的交流方式当然包含研究论文写作及发表,有用程序的设计及开发.所以每一个7都又表示合作者们都具有 “写”操作特权, 即人人都是发布者. 至于每一个7都还表示合作者们的 “执行”操作特权嘛, 就用我们与合作者们都特别喜欢倒腾开源软件.(所谓倒腾开源软件, 是指包含如下一类的行为: 使用,开发,试验开源软件,参与开源社区活动,并将我们的结果又作为开源软件贡献回馈给开源社区).

基于 “研究2.0″的理念,EMC中国实验室领导开发了道里维基网站: www.daoliproject.org 这是一个Web2.0式的网站. 欢迎大家来道里维基访问. 请记住, 您可以成为一个参与者, 请给自己设制上读,写,及执行的特权!

Extending James Snell’s geeky definition of web 2.0 as “chmod 777 web” to our notion of Research 2.0, we use “chmod 777 research” to describe our research practice in EMC Research China. It involves intra-EIN collaborations among core research labs (the 1st 7), cross-EMC-organization collaborations with globally distributed Advanced Development Groups and Centers of Excellence (the 2nd 7), and world-wide collaborations with universities and external business partners (the 3rd 7). Moreover, these collaborations feature openness in knowledge sharing (set all the read bits), ease of making contributions (set all the write bits), and roll-up-the-sleeves style of execution including getting our hands dirty with open-source code (set all the execution bits). ERC has already implemented an example of Research 2.0. The Daoli twiki www.daoliproject.org, which has been in the spotlight since its recent debut in early June, can be regarded as a prototype of our executing “chmod 777 research”. The Daoli twiki has more than 70 pages, which were created in less than one month through the collaborative efforts of ERC staff members and our partners at four universities working concurrently. It is kept up-to-date through efficient maintenance by distributed teams and monitored through email notifications used to prevent malicious modifications.

一个播客(podcast)展示对用户程序的攻击

7月 14th, 2008 发表在 未分类 | 没有评论 »

接上周博文中叙述:一个攻击者可以利用操作系统的安全弱点对用户程序的内存数据进行非授权式的访问. 以下是用一个视频播客来展示这样一个攻击. 在此攻击展示中,用户Alice正在用字符编辑程序vim输入一些(个人隐私)数据. 可惜她不知道在同一个操作系统上正跑着另一个攻击程序MCP_Attacking_gui(Memory Content Peeking), 该攻击程序将Alice输入至内存中的所有信息都给亮出来了!

 http://www.daoliproject.org/twiki/pub/Daoli/Podcasts/daolidemo55.swf

该视频播客声道暂时是英文的,过两天我会将中文声道dub上的.

 

该文原文是作者当天在道里博客上发表的 http://daoliproject.org/wordpress/ 道里网页请见 http://daoliproject.org/

 

应用程序间的安全隔离问题(2)

7月 8th, 2008 发表在 未分类 | 没有评论 »

上回我在应用程序间的安全隔离问题(1)中介绍了硬件虚拟技术的一个特点:由于VMM的不可被旁路的强制性监控性质,不同的客户虚拟机之间具有很强的隔离效果, 跑在不同虚拟机上的用户应用程序是很难做到实现互访而同时又不被VMM所监控到. 那么将不同用户的应用程序部署于不同的虚拟机上,是否应用程序间的严格隔离就得到满足了呢?

如上问题的回答其实是安全操作系统要解决的一个问题. 假定在客户VM中跑的操作系统本身不存在安全漏洞可被利用来攻击用户程序, 那么对如上的问题我们可以给出肯定的回答. 当然这也是一个有点儿奇怪的回答: 如果这样安全的操作系统存在, 用户程序之间的隔离则无须走硬件虚拟化技术的途径. 其实当前利用硬件虚拟化技术来解决操作系统安全问题这样的做法变得越来越热门.这一现象本身恰恰是因为安全操作系统的缺失才使得人们考虑另辟蹊径走虚拟化道路的. 常用的商业操作系统(如Windows, Linux, Unix各种版本, Mac等)可以说没有一个能被认为是安全的操作系统. 如果跑在一个客户VM中的操作系统是这些商业操作系统中的任何一个, 则客户虚拟机之间哪怕是再怎么强的隔离效果都无法在用户程序之间形成有效隔离. 哪怕是在一个VM中只跑一个用户程序也不解决问题! 原因是如此简单: 你无法在用户程序及操作系统之间做隔离! 用户程序需要操作系统对其提供服务.而其中最起码的一项服务就是内存管理. 很不幸,所有商用操作系统偏偏在内存管理上尤其弱得不堪一击(理由我在上一讲中叙述过,下一讲中我还将给出攻击实例演示).广为所闻的堆栈缓冲区溢出攻击就是利用了商用操作系统在内存管理上存在的设计漏洞. 你也许可以要求让你的程序”独享专用”一个VM,即不允许其他任何程序使用你的VM.可是你的”仆人”,操作系统,却始终在为你服务!这个仆人的确能为你提供许多优质的服务使得你已经离不开它.可是它却有许多与生俱来的缺点和毛病可以被隐藏的敌人利用而给你带来危险!如今似乎没有人能知道常用的商用操作系统中隐含的安全漏洞在哪里.人们已达成共识:发现一个漏洞打一个补钉的方法是不能够得到一个安全操作系统的.

这就是为什么我们说VM之间的隔离无法延伸到用户程序之间的隔离. 在下一讲中我要用一个播客来展示如何利用商用操作系统的漏洞来攻击一个用户应用程序. 这一杂谈系列将引入道里项目试图解决应用程序间的安全隔离问题的技术手段.

应用程序间的安全隔离问题(1)

6月 30th, 2008 发表在 未分类 | 没有评论 »

上回我在 “云计算的一个问题”一文作出结论时提到 “云计算的一个重要问题是计算平台的安全问题”, 即,用户级的应用程序代码与数据如何在计算机内存中得到保护. 所谓在内存中保护用户程序与数据的安全,是指一个用户的程序代码以及数据在一个计算平台的内存储器中被执行时,其代码的正确性以及数据的私密性完整性不因受到攻击而被破坏或丢失. 注意,这里 “破坏或丢失”不仅仅是指一般意义上的失去对物件的拥有或有效使用,还包含很可能是更为严重后果的破坏情况,如攻击者成功获得了其不应得到的信息.

我们都知道若要在外存设备上(如磁盘,网络通信设备)对数据进行保护,加密是常用且十分有效的保护手段. 但在内存中情况十分不同,在内存中我们当然不能采用对信息进行加密的手段,不然的话CPU将如何理解,执行并计算那些加了密的代码与数据呢. 对于内存中信息的保护,我们所需要的技术手段是隔离,即,不同用户的应用程序代码及数据之间应当实施适当的访问控制管理措施,使不同应用程序的代码及数据不能随意互访. 应用程序数据间的隔离其实是多用户操作系统的一个基本问题:操作系统负责管理用户对计算平台资源的分时共享包括内存的分时共享. 正确的隔离是维护程序正确执行的基本条件. 值得注意的是,现今成功的商用操作系统(如Windows, Linux, 及各种Unix版本, 等等)在实现应用程序隔离时主要考虑了程序正确执行的环境是一个非恶意的环境,其间不存在恶意攻击者. 这样的考虑至少在这些系统问世之初以及它们的早期发展阶段应该算是合理的吧. 在这样的非恶意计算环境考虑下,系统的正确性或许不是一个特别难解的问题(也许研究程序正确性,尤其是可证明正确性的同仁不会同意我这样说). 不过在如今的互联网时代,在恶意代码,病毒,流氓软件肆意虐行的今天,计算环境的非恶意假定已不再成立. 可惜商用操作系统在用户级应用程序隔离上的确存在先天不足的毛病. 主要原因包含由于在以前非恶意计算环境考虑下形成的设计中 系统赋予了用户进程过多的不必要的特权. 另外所有这些操作系统如今都已经发展得十分庞大复杂, 存在许多隐含的设计漏洞. 许多这些漏洞都可以被恶意利用造成对用户应用程序的有效攻击. 的确,大量攻击的存在恰恰是以操作系统存在可以被利用的漏洞为前提的. 大家都有过对操作系统安装打补钉程序的经历吧. 看来补钉是一时半会儿打不完的. 系统化地解决计算平台安全问题现时已变得刻不容缓.

近来用硬件虚拟化技术来加强计算平台安全问题被十分看好. 硬件虚拟化技术是用一个直接跑在 “金属”硬件计算平台上的软件来模拟 “金属”硬件的指令. 用分时的概念,一个硬件平台可以被虚拟成多个具有同样功能的软件计算平台. 在每一个软件平台上都可以运行一个客户操作系统以及跑在其上的用户应用程序. 在用户看来,这样虚拟出来的软件平台与被虚拟的硬件平台没有任何不同(当然在硬件平台负荷大的情况下用户会感觉到执行效益上的差别). 这样虚拟出来的软件平台叫做虚拟机(Virtual Machine, VM). 由于每个虚拟机分时地使用被虚拟的硬件平台,为了保证虚拟机正确使用硬件(向硬件平台发出正确执行指令),每个虚拟机都受到上面提到的哪个直接跑在硬件上的软件的严格监控(所以那个直接跑在硬件上的软件又叫做虚拟机监控器,Virtual Machine Monitor, VMM). 虽然可以说VMM对每一个VM的严格监控,其出发点完全是为了向硬件发出正确的执行指令,以避免机器出错而死机, 结果却在不同虚拟机之间事实上形成了很强的隔离效果. 跑在不同虚拟机上的用户应用程序是很难做到实现互访而同时又不被VMM所监控到.

那么将不同用户的应用程序部署于不同的虚拟机上,是否应用程序间的严格隔离问题,即我们所面对的计算平台安全问题,就得到解决了呢? 可惜事情远没那么简单! 且听下回分解.
 

云计算的一个问题

6月 23rd, 2008 发表在 未分类 | 1 评论 »

近来时常听到如下问题: 什么是云计算? 它与网格计算有什么不同? 再仔细聆听回答, 常常感到提问者最终未能得到满意的答复. 而我自己却总是因此进入了déjà vu 的状态: 因为几年前也老听到: 什么是网格计算? 它与分布式计算有什么不同? 而且提问者也似乎不甚满意所得到的答复.

前些天看到了一篇Gartner的分析报告: Assessing the Security Risks of Cloud Computing (云计算安全风险的评估  http://www.gartner.com/DisplayDocument?id=685308 该文发表于June 3, 2008, 抱歉,原文须向Gartner购买,195美元一份). 与许多通常的也颇有点费解的说法, 如云计算是网格计算2.0, 是低价格的网格计算, 等等不同, Gartner 报告从一个形象化的解释出发对云计算引入了面对一个问题的讨论.首先,Gartner 也对云计算给出一个通常的说法:(云计算是)在极大规模上可扩展的信息技术能力向外部客户作为服务来提供的一种计算方式 (Gartner defines cloud computing as “a style of computing where massively scalable IT-enabled capabilities are delivered ‘as a service’ to external customers using Internet technologies.”) Gartner报告继续道: “云,顾名思义,是指某种大的,可进入的,但从外部来看是不透明的东西,你不能从云外看穿入云内,你只不过假定它是工作的.”  (The word “cloud” suggests something big and accessible, but externally opaque. You can’t see into the cloud — you just assume that it works.) 于是乎Gartner引入了正题: “显然, 一个云计算的服务提供商因而会具有(远远超过以前计算方式的)自由度来回避对用户给出许多细节的具体说明, 如其所在地,员工情况,所采用的技术,运作过程,以及其向外(向下)转包的承包商情况” (Obviously, a service provider has far more flexibility by avoiding specifics about its location, staff, technology, processes or subcontractors.) 再往下才是要害: “越来越多的情况是,计算服务是由串成一条龙的服务商来提供的,每一家接包的服务商都以不甚可见的方式为上一家转包的服务商来提供计算处理或数据存储的服务, 因而使其可能无法直接对下家使用的技术有所控制, 甚至每家都可能在其内部以用户未知的方式访问到未加密的用户数据.” (Increasingly, service is being offered by a chain of providers, each invisibly offering processing or storage services on behalf of a service provider that might not be directly controlling any of the technology, and each able to invisibly access unencrypted data in its facility.)

那么不是每一家云计算方案提供商都充分强调使用加密,如SSL(Secure Sokets Layer),技术来保护用户数据了吗? 为何Gartner还认为用户数据可以被云计算服务提供商或转接包商以非授权的方式获取呢?

Gartner的分析确有其独到之处. 我们知道SSL加密技术是针对网络安全有效使用的, 即用户数据经过SSL协议加密后可在网络上或在外部存储器(如磁盘)上是以密文的形式安全地通信或存储. Gartner考虑的云计算安全问题恰恰是在计算部件核心中:即,用户数据在内存中是如何保护的. 由于需要进行计算, 用户数据在内存中是不可对其进行加密的.

用户数据在内存中的安全问题可以被认为是计算平台安全问题. 所以云计算的一个重要问题是计算平台的安全问题. 计算平台安全问题一般来讲要比网络安全复杂些. 目前实现方案要用到一些不同计算机学科及实践的方法. 我们在道里项目中采用可信计算(Trusted Computing)加虚拟化(Virtualization)技术来实现计算平台安全问题. 在下一章中我将进一步讨论.