什么是浏览器指纹?

浏览器指纹识别是继cookiesupercookie之后进行用户跟踪的第三条途径。指纹识别是由网站方发起的,这些网站分析HTTP客户端发送的请求,通过收集数字指纹来唯一标识特定计算机。以这种方式获取的数据即使在删除cookie后也可以用于持续跟踪用户。

在本篇文章中,我们将概述浏览器指纹识别的基础知识,如何使用它来跟踪互联网用户以及可以采取哪些措施来减少发送的详细信息被识别的可能性。

浏览器指纹识别如何运作


浏览器指纹识别是一种十分有效的数据收集方式,可散列独有的浏览器参数并创建数字签名。网站可以将其他JavaScript代码(通过创建自己的脚本或从第三方提供商处购买)添加到HTTP请求响应中。JavaScript代码扫描所有公共浏览器参数,并根据数据创建唯一的数字签名。 

通过使用其他JavaScript代码获得的数据包括用户代理、屏幕大小和分辨率、已安装的字体、插件和扩展、GPU / CPU等。每个数据点都增加了设备的唯一性,从而使网站可以更轻松地识别特定的计算机。

指纹追踪方法

浏览器指纹变得越来越普遍。许多网站都在利用指纹识别新用户和老用户,包括一些排名靠前的网站。像Google和Bing这样的搜索引擎也不例外,它们采取了多种措施来识别特定用户。

音频指纹

音频指纹测试可以测试设备播放声音的方式。声波可以提供有关设备音频堆栈的信息,例如声音硬件,软件和驱动程序。

HTML5画布

高级浏览器指纹版本可以在机器上提供更多数据,主要是通过访问HTML5 画布并请求特定图形处理的衡量。使用HTML5画布可以显示计算机的操作系统,浏览器和GPU。HTML5画布通常会要求浏览器呈现特定图像。由于GPU渲染图像的方式略有不同,因此可能会获取特定设备的详细信息。

时钟偏斜

极端措施包括分析时钟偏斜。时钟偏斜是指来自一个源(主要来自时钟发生器)的电信号不均匀地到达不同的组件时。这些差异受硬件温度变化的影响。因此,通过足够的数据和数值分析,可以测量时钟时滞差异,以确定硬件规格以及机器的许多其他方面。

什么是浏览器指纹?
什么是浏览器指纹? 1

温度变化可能用于收集机器使用的设备上的数据。资料来源:

https://murdoch.is/talks/eurobsdcon07hotornot.pdf

了解浏览器的唯一性

浏览器的唯一性是确定是否可以识别用户的决定因素。简而言之,浏览器的唯一性是将一台设备与许多其他计算机指纹进行比较,以查找可能的重复项。如果数据集中只有很少的副本,则该设备被认为是唯一的。 

由于可以收集有关特定设备和浏览器的大量数据,因此即使不访问Cookie数据,网站也可能会将用户标识为唯一用户。电子前沿基金会(EFF)的一项研究发现,286,777个浏览器中只有1个会共享其指纹。如此高的浏览器唯一性意味着可以完全通过指纹轻松识别同一用户。

资料来源:https://coveryourtracks.eff.org/static/browser-uniqueness.pdf

请注意,识别指纹的全球唯一性可能会更糟,因为与普通互联网用户相比,研究参与者可能更精通技术和更加注重隐私。但是,准确预测指纹的全局唯一性几乎是不可能的。由于实验样本和指纹的整体集合之间的差异,数学上的局限性是显而易见的。

乍一看,独特指纹的存在似乎令人费解。对于普通的互联网用户来说,大多数浏览器可能看起来很相似。但是,唯一性通常取决于插件透露的信息量。例如,JavaScript版本数据通常包括仅用于调试目的的编号(例如1.6.0_17)。由于在开发过程中有许多小的更改,因此单个插件可能具有数百个不同的版本。结合浏览器的详细信息,包括所有插件和其他数据点,可以创建数百万个唯一可识别的设备。

什么是浏览器指纹?
什么是浏览器指纹? 2

改善浏览器的唯一性


可以使用电子前沿基金会开发的项目Panopticlick来测试浏览器的唯一性。Panopticlick浏览器指纹测试将显示有关设备的所有数据,并提供可能的选项来防范跟踪。

如果不想被大公司跟踪,可以降低浏览器的唯一性,这是指纹保护的最有效选择:

  • 使用常用的浏览器。运行罕见的浏览器(例如Comodo IceDragon)将大大增加拥有唯一指纹的可能性。
  • 避免使用自定义用户代理。独特的用户代理是肯定会让你从人群中脱颖而出的,因此,最好使用通用的用户代理。
  • 减少使用的插件数量。浏览器中安装的插件数量越多,唯一性越得不到保证。
  • 缩小首选语言列表。请求使用不同语言的页面会大大提高浏览器的指纹识别能力。例如,默认情况下,TorButton仅请求EN版本的网站。
  • 使用TorButton。TorButton实现了Tor浏览器到Firefox浏览器中使用的大多数安全功能。
  • 禁用JavaScript。禁用JavaScript是一种极端的措施,它将破坏几乎所有网站。然而,电子前沿基金会发现NoScript(允许用户关闭JavaScript的扩展)用户对指纹的抵抗力最大。

讽刺的是,应该增强隐私性并减少唯一性的防指纹解决方案和插件通常会产生相反的效果。可以检测到已安装的插件(及其版本),这意味着它们通常会增加而不是减少浏览器的唯一性。 

我们建议尝试使用Panopticlick测试这些选项,并在互联网上找到最合适的组合。如果使用上面列出的所有选项可能会破坏很多网站,而不知道会发生什么。

结论


浏览器指纹识别作为一种跟踪手段正变得越来越普遍。跟前几代跟踪工具(例如HTTP cookie)相比,防御浏览器指纹识别的难度要大得多。改善浏览器唯一性是一种趋势,目前最有效的措施是禁用JavaScript,但是一旦禁用JS就会在显示网站时引发各种客户端问题。所以想要找到防御浏览器指纹识别又不导致客户端问题的最佳方法,则需要更综合的手段。