红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

代号 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:183349
用户头像

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

关注

评论

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

Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩,多线程面试题2021

Java 程序员 后端

Github神作!2021Java秋招高级面试指南,吃透至少阿里P6

Java 程序员 后端

IDEA-2021首个大版本发布,Java开发者感动哭了(附新亮点演示

Java 程序员 后端

dubbo实战之三:使用Zookeeper注册中心,java后端工程师面试题

Java 程序员 后端

Elasticsearch的高阶使用方法有哪些?,rabbitmq入门案例

Java 程序员 后端

Dubbo—SPI及自适应扩展原理,java项目系统架构图

Java 程序员 后端

hive学习笔记之七:内置函数,mybatis防止sql注入原理

Java 程序员 后端

hive学习笔记之三:内部表和外部表,java面试手写算法

Java 程序员 后端

hive学习笔记之八:Sqoop,大厂Offer拿到手软啊

Java 程序员 后端

HTTP-2做错了什么?刚刚辉煌2年就要被弃用了!,mybatis底层工作原理

Java 程序员 后端

IDEA 一键部署 SpringBoot 项目到远程服务器 Docker 内(1)

Java 程序员 后端

HTML笔记 —— 列表,和快手大佬的技术面谈

Java 程序员 后端

Docker下的Nacos环境开发,mysql联合索引原理

Java 程序员 后端

透过表象看REST

Jxin

HashMap(jdk1,Java程序员进大厂面试必备基础技能

Java 程序员 后端

Helm部署的服务如何修改配置,nginx面试题负载均衡

Java 程序员 后端

hive学习笔记之九:基础UDF,java入门书籍下载

Java 程序员 后端

GateWay 网关服务,java程序员进阶路线

Java 程序员 后端

GitHub上访问下载破百万的神仙文档《Java面试神技》看完我呆了

Java 程序员 后端

Github又爆神作,阿里JVM垃圾回收全解小册全网开源!,已开源

Java 程序员 后端

HashMap源码解析,操作系统原理与实践教程第三版答案

Java 程序员 后端

IDEA 一键部署 SpringBoot 项目到远程服务器 Docker 内

Java 程序员 后端

hive学习笔记之三:内部表和外部表(1),贼好用的Java学习路线集合

Java 程序员 后端

GitHub上标星90k+的《Java知识总结,java基础选择题填空

Java 程序员 后端

Github点赞接近 70k 的Spring Cloud学习教程+实战项目推荐!牛批

Java 程序员 后端

GitHub调优热榜,居然是腾讯T9熬肝撰写的594页MySQL优化手册,简直太香

Java 程序员 后端

Gradle构建多模块SpringBoot应用,mybatis面试常问问题

Java 程序员 后端

gRPC学习之三:初试GO版gRPC开发,Java面试题中高级

Java 程序员 后端

golang实战之flag包,Redis灵魂14问

Java 程序员 后端

HashMap详解,hadoop源码分析完整版

Java 程序员 后端

Hello Git快速入门,redis常见数据结构以及使用场景分析

Java 程序员 后端

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