安全路透社
当前位置:安全路透社 > 安全客 > 正文

【技术分享】浅谈反浏览器指纹追踪

http://p6.qhimg.com/t012ffb682c869bb15a.jpg

作者:ComSoc

预估稿费:300RMB


浏览器指纹追踪是在过去五年中出现的一种在网络上追踪用户的方法,为了反制浏览器指纹追踪行为,反浏览器追踪技术也在不断发展。 


一、反浏览器指纹追踪技术概述


浏览器指纹识别的原理是根据不同浏览平台所使用的硬件类型、操作系统、浏览器类型、浏览器配置的不同,能够构建出独特的浏览器指纹。这个指纹有三个特性可以用来追踪用户:一、指纹的确定性,具有极低的碰撞率,至少能够从数千台设备中标识某一设备;二、指纹的易获取性,在用户在浏览网页时,Web服务器可以很容易获取指纹。随着浏览器中引入更新更强大的API,指纹追踪将变得更容易;三、指纹的稳定性,用户第一次浏览网页与第N次浏览网页产生的指纹是一样的。

本文简要介绍反浏览器指纹追踪技术。反浏览器指纹追踪只要打破上述指纹追踪的三个特性即可:

一、指纹的确定性。要使两个浏览平台产生完全一样的指纹,目前暂未发现有效方法;

二、指纹的易获性。可以使用浏览器的各种设置或插件来减缓追踪 [1],但这种方法可能会影响用户体验,例如无法使用Cookie和JavaScript;

三、指纹的稳定性。来自法国 INRIA Rennes大学的研究人员皮埃尔·拉普里克斯博士提出了一个解决思路[2],可以组建一个动态的浏览平台,使用户每次浏览网页都产生不一样的指纹。

并且皮埃尔通过两种方法来打破了指纹的稳定性:

a) 利用虚拟化和模块化架构自动组合和重新配置多个级别的软件组件,随机生成浏览环境,为每个浏览会话产生随机的指纹,从而来模糊实际设备的指纹。作者开发了一个叫做Blink的原型系统[3];

b) 第二种是通过在指纹识别过程中引入足够的噪音,打破非常特定的指纹技术(Canvas,Audio,JavaScript引擎)的稳定性,使追踪者不能将新鲜的指纹与旧的指纹绑定在一起,从而使得跨越多个会话的跟踪变得不可能。作者基于Firefox开发了FPRandom[4]。

本文下面来重点介绍下Blink。


二、Blink工作原理


每两个浏览平台之间或多或少都存在一些差异,追踪者可以根据这个差异来定位追踪用户,所以浏览平台的多样性是浏览器指纹追踪问题的根源,但同时这也是解决浏览器指纹追踪问题的方案。平台间众多的差异部分为动态的浏览平台提供了的基础。

Blink利用虚拟化和模块化架构自动组合和重新配置浏览平台的组件,使得每次运行产生不同的指纹,追踪者不能轻易地找到彼此的联系[5]。图1显示了影响浏览平台指纹的元素:配置参数,例如语言,屏幕分辨率;软件组件,例如,浏览器,操作系统;硬件组件,如显卡,麦克风;跨级动态属性只能在运行时收集,例如canvas,,AudioContext。

http://p3.qhimg.com/t01c981996fce9094e6.png

一旦用户开始浏览网页,这些数据就用于创建指纹。这就是一般所认为的浏览器指纹。研究人员发现对指纹影响最显著的因素是字体、插件和用户代理。因此,选择专注于重新配置以下因素就可以达到改变指纹的目的:字体,插件,浏览器和操作系统。

Blink通过在运行时自动重新配置浏览平台的各个组件,来达到动态目标防御的能力。动态目标防御需要浏览平台使用模块化架构,以达到自动随机组装配置各个组件,而不是事先构建好它们。Blink属于一种动态平台,特点为:

a) 组装的平台总是表现出与真实浏览器一致的指纹,不是伪造的,因为平台是真实的; 

b) 自动选择正确的配置,即由兼容组件组成并正确运行的平台; 

c) 每次重新配置都会导致指纹的改变。


三、Blink实现


Blink在不同的层次组装多个组件,形成如图2所示的浏览平台。

http://p5.qhimg.com/t0124c050cece6a38e4.png

Blink使用Docker作为背后的基础技术,因为Docker能够在运行时快速组装组件,同时将主机系统与平台隔离开来。Blink组装的组件有:

a) 操作系统:由于DockerHub的官方映像,许多操作系统都可以开箱即用。

b) 浏览器:直接从网络下载或从官方软件包存储库中下载,众多的浏览器用于产生多种指纹。

c) 字体和插件:皮埃尔创建了一个多样性的字体和插件库,Blink可以在创建浏览平台时选择其字体和插件。当前版本的Blink,包含超过2700种字体和超过30个插件。

只需要几秒钟,Blink就能产生一个全新的指纹,用户可以像本地浏览器一样使用它。为了避免产生明显另类于普通Web客户端的指纹,皮埃尔从https://amiunique.org收集指纹数据,优化Blink的配置文件,使Blink产生的指纹更接近于普通浏览器产生的指纹。结果显示Blink产生的指纹足以以假乱真。皮埃尔运行了Blink上千次,结果它们的指纹都各不相同,而且商业指纹解决方案无法知道这些指纹实际上来于自单个用户[6]。


四、总结


Blink通过生成随机浏览环境,每次会话都产生不一样的指纹,打破了指纹的稳定性,来减缓指纹追踪。Blink还实现了其他的反追踪方法,如:

a) 为了防止cookie追踪,当用户完成浏览时,所有生成的临时数据都被删除。

b) 为了防止IP追踪,Blink与Tor网络完全兼容。通过点击一个简单的按钮,所有具有Blink的Internet流量可以通过Tor网络重定向。

这些新方法允许用户在使用Blink时能有效的躲避追踪。 


参考文献


1. http://www.freebuf.com/articles/web/127266.html 

2. https://plaperdr.github.io/ 

3. https://github.com/plaperdr/blink-docker 

4. https://github.com/plaperdr/fprandom 

5. http://www.ieee-security.org/TC/SP2016/poster-abstracts/59-poster_abstract.pdf 

6. https://hal.inria.fr/hal-01121108/document 


本文地址:http://bobao.360.cn/learning/detail/3760.html

未经允许不得转载:安全路透社 » 【技术分享】浅谈反浏览器指纹追踪

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册