Saturday, 29 June 2013

如何保护隐私[2]:关于浏览器的防范(上)

  本系列的前一篇博文,俺介绍了选择"软件"和"服务"的一般性原则。
从这篇开始,俺要来介绍一下:具体的软件和服务,有哪些需要注意的细节。俺先从"个人软件"说起,说完"个人软件"再来说"互联网服务"。在个人软件中,跟隐私关系最密切的软件有很多。其中"浏览器"的篇幅最大,俺单独写一篇博文来介绍。

★浏览器本身导致的隐私问题


◇浏览器自身如何泄漏隐私?


  先来谈浏览器自身是如何泄漏隐私的。这里强调的是"自身",也就是说,跟浏览器外围的插件、扩展、cookie 等等无关,是浏览器软件自己把用户隐私给泄漏了。
  很多国产的浏览器(至少包括:奇虎的"360浏览器"和腾讯的"QQ浏览器")自身都存在严重的隐私问题。它们会收集用户的上网行为(比如:你在啥时候访问了啥网站),并且把你的上网行为保存到它们自家的服务器上。
  一旦你用了有危险的浏览器,即使你在其它方面的防范做得再好,也是白搭。因为浏览器是上网冲浪的关键,浏览器出问题会导致你的隐私防御全线崩溃。

  稍微跑题,说一下当年轰动武林的"3Q大战"。(因为前两天有读者在博客留言中争论此事)
  这件事说白了就是"狗咬狗 一嘴毛",奇虎和腾讯都不是好东西,它俩不但充当朝廷的走狗,而且不择手段收集用户隐私。但是"3Q大战"的积极意义在于:两只癞皮狗互咬,把两边的家丑都曝光了。咱们普通网民作为旁观者,可以更清楚这些国产软件厂商的嘴脸。
  再强调一下,有问题的国产浏览器,绝不止这两家。

◇应该如何选择?


  刚才说了,国产浏览器猫腻很多。那么国外的浏览器,是不是就很安全捏?也未必。
  大伙儿不妨复习一下前一篇博文。在那篇博文中,有两个原则可以参考:
原则1:开源 好过 闭源
(开源软件,即使有后门或流氓行为,也比较容易被发现)
原则2:非营利组织 好过 商业公司
(对于大型商业公司,收集用户信息会带来商业利益,所以商业公司有收集隐私的热情)

  国外的浏览器,名气大且使用广泛的,主要有三款:Firefox、Chrome(Chromium)、IE。其中,Firefox 和 Chromium 是开源的,Chrome 和 IE 是闭源的。
  很多人都误以为 Chrome 是开源的。虽然 Chrome 是基于开源的 Chromium,但是 Chrome 包含闭源的模块。所以严格来讲,Chrome 只能算部分开源。
  根据原则1(开源角度):这几款浏览器的隐私安全性如下
Firefox = Chromium > Chrome > IE

  再来看这几个浏览器的后台。IE 的 后台是微软公司、Chrome/Chromium 的后台是 Google 公司,Firefox 的后台是 Mozilla 组织
  根据原则2(商业角度):这几款浏览器的隐私安全性如下
Firefox > Chromium = Chrome = IE

◇Firefox VS Chrome 的补充说明


  俺博客的读者中,有相当数量的 Chrome 用户。估计很多人会为 Chrome/Chromium 打抱不平。所以,再从商业模式的角度分析一下,为啥 Chrome/Chromium 的隐私保护不如 Firefox。
  稍微熟悉 Google 的同学应该知道,Google 的大部分收入(90% 以上)是依靠"在线广告"。要想做好"广告"这门生意,其中一个关键点是:做到"精准投放广告"。而要实现精准投放,自然要收集用户信息(只有当 Google 对某网民足够了解,才能知道该网民会对哪些广告感兴趣)。而这就涉及到隐私问题。
  反之,Mozilla 是非营利组织,不像 Google 那么依赖广告客户。所以 Firefox 就可以放开手脚去防范隐私泄露。

  举例——浏览器对 Do Not Track 的支持
  Do Not Track(简称 DNT,中文叫"请勿追踪"),维基百科的词条在"这里"。是一项浏览器功能,用来告知网站,用户不希望被追踪。
  以下是各个知名浏览器加入 DNT 功能的时间表。
Firefox  2011年1月(第一个支持 DNT 的浏览器)
IE  2011年3月
Safari  2011年4月
Opera 2012年2月
Chrome  2012年11月(在主流浏览器中,是最晚支持 DNT 的,比 Firefox 晚了将近2年)
  用 Chrome 的同学都知道,Chrome 是频繁发布新版本的,而且 Google 的研发力量是很强大滴。那么,为啥 Chrome 拖了这么长时间才支持 DNT 功能,显然不是因为技术原因,而是因为商业原因——Google 不愿意得罪广告客户。

◇小结


  综上所述,在隐私保护方面,Firefox 是首选。

★"浏览历史"导致的隐私问题


  本章节提及的"浏览历史",至少包括如下几个方面的信息:
网址的历史
下载的历史
页面缓存
各种Cookies

◇"浏览历史"如何泄漏隐私?


  举例:
  假如你是一个年轻男网民,喜欢访问成人色情网站。然后捏,你又不注意清除浏览器的历史缓存。或许有一天,你的女朋友或者你的父母无意中打开你的浏览器,就会发现你的癖好。那你就尴尬了。

◇"隐私浏览模式"的用处


  如今,几款主流的浏览器(Firefox、Chrome、IE)都已经支持"隐私浏览"功能。
  你在"隐私浏览模式"下进行的上网行为,浏览器不会保存相应的"浏览历史"。当你退出"隐私浏览模式"或者关闭了浏览器之后,这些信息就不见了。

◇"隐私浏览模式"的局限性


  但是,"隐私浏览模式"并不是足够安全的。如果你的浏览器安装了插件(比如 Flash),可能会导致"隐私模式"部分失效。
  因为浏览器插件不受浏览器的控制。所以,即使在"隐私模式"下,某些插件还是可能会留下上网痕迹。
  下一章节会介绍,插件如何导致"隐私模式"部分失效。

◇更彻底地解决浏览历史——使用虚拟机


  假如你对"浏览历史"导致的问题很在意,可以考虑使用操作系统虚拟机来防范。
  如果你不熟悉操作系统虚拟机,请先看俺写的《扫盲操作系统虚拟机》系列博文。
  使用虚拟机,大致的操作步骤如下:
1. 先安装虚拟机软件,然后装一个虚拟操作系统(Guest OS)
2. 在 Guest OS 中安装好上网相关的软件(比如浏览器、插件、等)
3. 在没有访问任何网站之前,先做一个 Guest OS 的快照(这是一个干净的快照)
4. 在这个 Guest OS 里面上网
5. 上网结束后,回退到这个干净的快照
  通过上述步骤,就可以避免在电脑中留下任何上网的痕迹。由于虚拟机是操作系统级别的,即使是浏览器插件,也不会留下痕迹。

★浏览器插件导致的隐私问题


◇"插件"和"扩展"的区别


  先来扫盲一下插件和扩展的区别(连很多 IT 技术人员都把这两者混为一谈)。所谓的插件,洋文叫"plugin";所谓的扩展,洋文叫"extension"。两者的区别如下:

  插件
  在功能上,插件通常是用来渲染页面里的 <object> 或 <embed> 标签;不会增加浏览器自身的功能。
  插件通常实现比较底层的功能,一般以操作系统的本地代码(也叫"原生代码")编写,可以调用操作系统的 API。形式上,插件以动态库(Windows 上就是 DLL 文件)的方式,加载到浏览器的进程内。由于使用本地代码编写,插件通常依赖于特定的操作系统(不同系统的插件不能混用)。

举例:
Flash 插件
媒体播放器插件
PDF 插件
Java 插件
各种网银控件

  扩展
  扩展,顾名思义,是用来扩展浏览器自身的功能。所以,扩展可以调用浏览器自身的 API,但是扩展通常不能调用操作系统的 API。
  一般来说,扩展是跟操作系统无关的。比如 Firefox 的大部分扩展,既可以用于 Windows 平台的 Firefox,也可以用于 Linux 和 Mac OS X 的 Firefox。

举例:
俺推荐的 GreaseMonkey,就属于扩展。

◇插件的隐私问题


  刚才说了,插件是用本地代码编写的,调用的是操作系统的 API。所以,插件的行为浏览器是无法控制的。相对而言,扩展调用的是浏览器的 API,所以扩展的行为,浏览器是比较可控的。
  下面,俺就拿 Flash 的 cookie 来举例,让大伙儿看看插件导致的隐私问题。

  举例——Flash 的 cookie
  平时大伙儿提到 cookie,说的都是浏览器的 HTTP Cookies;但是除了浏览器,插件也可能有自己的 cookie——比如最流行的插件 Flash 就有自己的 cookie 功能。
  Flash Cookies,专业术语叫做"Local shared object"。网页里的 Flash 文件可以利用这个功能,在你的操作系统中保存一些信息。所以,Flash Cookies 跟"HTTP Cookie"一样,都可能带来某些隐私问题。

  从上述例子可以看出,插件也可以在操作系统中留下自己的一些痕迹(不妨称之为"插件的 Cookie")。而且"插件的Cookies"比"HTTP Cookies"更讨厌的地方在于——它是独立于浏览器 cookie 的。这就导致如下两个隐私问题:
1. 当你在浏览器中清空 HTTP Cookies 的时候,插件的 cookie 不会受影响;
2. 浏览器的"隐私模式"会限制 HTTP Cookies 的永久保存,但是浏览器无法限制插件的 cookie(这就是俺刚才提到的"隐私浏览模式"局限性)

注:从 Flash 10.3 开始,Adobe 已经通过技术手段,解决了 Flash Cookie 与浏览器的整合问题。也就是说,浏览器在清除 HTTP Cookies 的同时,也可以清除 Flash Cookies 了。
但是,其它的插件可能依然存在上述问题。

◇如何防范插件留下的痕迹?


  办法由两个:
办法1
最直接的办法就是:你的浏览器不要装任何插件。
办法2
如果你不得不装一些插件,那么还有一招——利用虚拟机的快照功能。这个方法刚刚讲过,就不再啰嗦了。

  今天先聊到这里,下一篇接着说说浏览器的 HTTP Cookie。
回到本系列的目录

版权声明

本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者"编程随想"和本文原始地址。

学习翻墙

用国外邮箱发信给help_gfw@yahoo.com即可收到翻墙教程
如有其它问题,用program.think@gmail.com联系俺


from 编程随想的博客 http://program-think.blogspot.com/2013/06/privacy-protection-2.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+programthink+%28programthink%29