Gazelle浏览器上的操作系统
Gazelle并不是一个新的Windows,而是一种新型的浏览器,它的内核会像操作系统那样,为不同的网站(web site principals)分配资源并对这些资源提供访问保护。Security principal被定义为“一个可以被计算机系统或网络验证的实体。检查和确认这个实体标识的过程被称为验证”。微软研究院的Janie Chang定义了browser principal,并解释了为什么安全如此重要:
在浏览器中,principal一般就等价于一个网站。对于计算机来说,通常在同一时刻只有一个用户在使用,系统资源是被不同的应用程序所共享的;而对网 页来说,每个页面可能包含了来自不同网站的内容,计算资源是被这些不同网站的内容所共享的。因此浏览器自然而然就成为为这些网站调配资源的平台。
一个网页可能包含来自其它网站的内容,比如广告和新闻。所有这些来源不同的内容都共存在浏览器的同一进程或保护域(protection domain)中。含有恶意代码或问题代码的广告会阻塞网络、降低性能、锁死整个页面甚至让浏览器崩溃。而在浏览器操作系统中,有问题的网站(内容)并不 会影响到其它网站(的内容)、浏览器本身或者计算机。
Wang等人将principal定义为“由网站来源(协议、域名、端口)标识的同源策略(SOP)下”的网站。为了加强对principal的保护,在网站和操作系统之间引入了浏览器内核(browser kernel),如图1:
浏览器内核运行在独立的保护域中,存在于网站和传统的操作系统之间。内核协调网站对系统资源的访问,并在浏览器上执行安全策略。本质上,浏览器内核就是网 站的操作系统,负责管理和保护系统资源。此外浏览器内核还管理着浏览器的外观,例如地址栏和菜单。内核接收所有来自底层操作系统的事件,包括鼠标点击或键 盘操作这样的用户事件,这些事件将被分发到正确的网站运行实例(principal instance)。当用户点击指向另一个来源的超链接时,浏览器内核会为这个URL指向的网站实例创建一个新的保护域(如果还不存在的话)来渲染页面, 销毁包含这个链接的页面所在的保护域,并将窗口重新初始化以显示URL指向的网站实例。
Wang等人比较了Google Chrome和Gazelle在安全方面的实现。Google Chrome使用了如下的进程模型: 单进程、每浏览实例一进程(process-per-browsing-instance)、每网站实例一进程(process-per-site- instance)和每网站一进程(process-per-site)。浏览实例由所有互相关联的窗口、框架和子框架构成,而网站实例由所有来自同一网 站的网页构成,并存在于浏览实例中。根据Wang等人所说,网站被定义为“一组共享注册域名的SOP来源。如 attackerAd.socialnet.com,alice.profiles.socialnet.com和socialnet.com就共享了注 册域名socialnet.com,因此被Chrome当成是同一个网站”。
Chrome的默认模型是每网站一进程(process-per-site-instance)。除此之外……目前的Chrome实现在每网站实例 一进程(process-per-site-instance)和每网站一进程(process-per-site)中不支持严格的网站隔离:含有不同网 站内容的iframe等内嵌内容会和页面(上的其它内容)放在一个进程中。Chrome的单进程和每浏览实例一进程(process-per- browsing-instance) 模型都不提供在不同网站之间对内存和其它资源进行隔离保护。每网站一进程(process-per-site)模型不会在网站实例之间提供错误保护。 Chrome的每网站实例一进程(process-per-site-instance)模型与Gazelle的每网站实例两进程(two processes-per principal- instance)模型最为相似,但是有几个重大的区别:1. Chrome的principal就是网站,而Gazelle的principal是SOP principal;2. Chrome中网站自己的内容与内嵌的内容共存于同一进程中,而Gazelle将它们放在不同的保护域中,为此我们还需要研究如跨网站显示保护这样的新东 西;3. Chrome中不同网站的插件都运行在同一个进程中,而Gazelle将它们放在各自的保护域中;4. Chrome在渲染进程中对不同的网站执行SOP。这些区别显示,Chrome中的跨网站隔离保护发生在渲染和插件进程中,而不是浏览器内核。相 反,Gazelle的浏览器内核则像一个操作系统,管理着资源的跨网站隔离,也包括内容显示。
Wang等人还提到了Gazelle和IE8的不同
IE8使用操作系统进程来隔离不同的tab,这种方式效率并不高,因为用户可能会在同一个tab中同时浏览安全和不安全的内容,而同一个页面也可能包含有来自不安全站点的iframe(如广告)。
T研发团队的结论是:
基本上,Chrome和IE8的目标与Gazelle并不相同。他们对多进程的使用是为了在不同浏览进程之间控制错误,而不是为了安全。他们的安全目标是 通过使用沙箱进程来保护操作系统。Chrome和IE8已经在浏览器架构设计中迈出了坚实的一步。今后,越来越多的数据和功能会被塞到web中,浏览器会 成为最重要的应用程序平台,将浏览器当成操作系统来将不同的网站以及计算机本身隔离起来,是浏览器设计者急需考虑的问题。而这就是Gazelle的目标。
通过使用IE7的向后兼容解析、DOM管理和Javascript引擎,一个Gazelle原型已经被构造出来。据称它的性能与IE8和 Google Chrome在同一数量级上。跨网站脚本隔离使用了图2的架构。原理是使用沙箱运行插件代码以隔离恶意代码,这样在插件出现问题的情况下,浏览器仍然可以 运行。
这个项目对那些担心微软还没有放弃将浏览器完全合并到操作系统中的人来说是一个惊喜。虽然微软保证他们只是为了加强安全性,但对于很多厂商来说是这 一个重大的推动,因为浏览器将要成为桌面上最重要的应用程序平台。目前Gazelle仍只是一个研究项目,时间会证明它是否能够成为一个产品,或者至少会 集成在IE、其它浏览器或Windows上的在线应用程序中。
介绍内容来自 http://www.infoq.com/cn/news/2009/07/Microsoft-Gazelle