写点什么

代号 Gazelle,微软研发浏览器上的操作系统

  • 2009-07-02
  • 本文字数:2396 字

    阅读完需:约 8 分钟

由 Hellen J.Wang 带领的一个微软研发团队提出了浏览器上的操作系统 Gazelle (PDF),目的是加强网上冲浪的安全性。

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 上的在线应用程序中。

查看英文原文: Microsoft Researches a Browser-based OS, Code Name Gazelle

2009-07-02 22:183432
用户头像

发布了 63 篇内容, 共 24.1 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

区块链将会深度应用于乡村振兴

CECBC

全新演绎!美团内部疯传Spring Boot速成手册也太香了

Java 程序员 后端

35w奖金池,腾讯云TDSQL精英挑战赛正式开赛!

科技热闻

先知道怎么手写一个分页查询,再去使用PageHelper吧

Java 程序员 后端

这本现代魔法原理指南,把计算机体系掰开揉碎讲清楚了

Zilliz

编码

毕业之后,开源给了我第一份工作

Zilliz

数据库 vim 开源 成长

和12岁小同志搞创客开发:手撕代码,Arduino IDE 软件下载和环境搭建

不脱发的程序猿

少儿编程 智能硬件 创客开发 Arduino

全网最热Vue入门教程你不看就吃亏了哦

Java 程序员 后端

活用向量数据库,普通散户也能找到潜力股!

Zilliz

数据库 Milvus 股票

入秋的第一篇数据结构算法:看看归并与快排的风采

Java 程序员 后端

和12岁小同志搞创客开发:手撕代码,点亮LED灯

不脱发的程序猿

少儿编程 智能硬件 创客开发 Arduino

全网最新最全面Java程序员面试清单(12专题5000解析)

Java 程序员 后端

Python Qt GUI设计:Python调用UI文件的两种方法(基础篇—3)

不脱发的程序猿

Python qt PyQt 调用UI文件 上位机开发

你还搞不定生涩难懂的Spring-Aop?梳理完毕以后原来如此简单

Java 程序员 后端

使用Redis和Java进行数据库缓存 - DZone数据库

Java 程序员 后端

使用SpringCloudConfig进行分布式配置:存储库后端类型

Java 程序员 后端

全链路压测必备基础组件之线程上下文管理之“三剑客”

Java 程序员 后端

公司用算法考核程序员,与绩效挂钩,成绩太差将面临淘汰?

Java 程序员 后端

先到先得!价值百万的的ELk+Lucene笔记,技术点拉满

Java 程序员 后端

全网最全Spring面试题之基础篇整理总结(共69题,附超详细解答)

Java 程序员 后端

使用Spring Data JPA的Specification构建数据库查询

Java 程序员 后端

ajax跨域问题

加里都好

JavaScript ajax HTTP

全是精华!阿里最新出品的“SpringCloud架构笔记” GitHub已爆火

Java 程序员 后端

做一名程序员的基本要求

Java 程序员 后端

全文检索工具solr:第一章:理论知识

Java 程序员 后端

全网首发!撸了谷歌大神写的Spring源码笔记后,感觉之前读的都是渣渣

Java 程序员 后端

全新演绎!美团内部疯传Spring Boot速成手册也太香了(1)

Java 程序员 后端

八年CRUD,疫情备战三个月,三面头条、四面阿里拿offer面经分享

Java 程序员 后端

使用Spring Cloud Config进行分布式配置:Vault 后端

Java 程序员 后端

使用Spring

Java 程序员 后端

和12岁小同志搞创客开发:如何驱动 12864 OLED液晶显示屏?

不脱发的程序猿

少儿编程 智能硬件 创客开发 12864 OLED液晶显示屏

代号Gazelle,微软研发浏览器上的操作系统_.NET_Abel Avram_InfoQ精选文章