FP-STALKER-跟踪浏览器指纹演变

前言

本篇论文翻译自2018 IEEE Symposium on Security and Privacy (S&P)的《FP-STALKER:Tracking Browser Fingerprint Evolutions》

简单翻译了一下。缺少精校。

Abstract

浏览器指纹已经成为一种在未经用户同意的情况下跟踪用户的技术。与Cookie不同,指纹识别是一种无状态技术,不会在设备上存储任何信息,利用用户浏览器传递的属性的独特组合来识别用户。指纹的独特性使其可以用于识别。但是,浏览器指纹会随时间变化,因此无法正确解决长时间跟踪用户的有效性。

在本文中,我们展示了由于软件更新或配置更改等原因,浏览器指纹往往会频繁更改(从每几小时到几天)。但是,尽管进行了这些频繁的更改,但我们显示出浏览器指纹仍然可以追踪用户,从而可以进行长期跟踪。

FP-STALKER是一种跟踪浏览器指纹演变的方法。它能够比较指纹以确定它们是否源自同一浏览器。我们创建了FP-STALKER的两个变体,一个是基于规则的变体,速度更快,另一个是利用机器学习来提高准确性的混合变体。为了评估FP-STALKER,我们使用从1905个不同浏览器实例中收集的98598个指纹进行了实证研究。我们将算法与最新技术进行了比较,结果表明,平均而言,我们可以跟踪浏览器54.48天,而26%的浏览器可以跟踪100天以上。

1. INTRODUCTION

网站出于各种原因跟踪其用户,包括投放定向广告,定制内容和提高安全性[2]。传统上利用cookie进行跟踪。但是,最近的讨论和立法揭示了这些Cookie所隐含的隐私问题。更多的人对这些问题敏感。微软在2012年进行的一项研究发现,如果定期删除Cookie,就无法跟踪仅使用Cookie的32%用户。Cookie擦除(cookie erasure)现在很常见,因为许多浏览器扩展程序和私有模式都会在浏览会话结束时自动删除Cookie。

2010年,Eckersley引入了一种称为浏览器指纹的跟踪技术,该技术利用用户的浏览器和系统特征来生成与浏览器相关的指纹[8]。他表明,只需8个属性组成的指纹就能唯一识别出PANOPTICLICK网站的访客的83.6%。进一步的研究集中在研究增加浏览器指纹唯一性的新属性上[7],[10],[14],[18],[19],[20],而其他研究则表明网站使用浏览器指纹作为一种方式来重新生成已删除的Cookie[1]。

然而,由于指纹改变,仅指纹唯一性本身不足以进行跟踪。人们需要跟踪这些演变,以将其与以前的指纹相关联。 最近的方法通过增加随机性来打破唯一性,将指纹唯一性作为防御机制[12],[13],[21],但它们并未解决可链接性

本文的目的是链接浏览器指纹的演变,并发现可以跟踪浏览器多长时间。更准确地说,FP-STALKER检测两个指纹是否来自同一浏览器实例,这是指在设备上安装的浏览器。浏览器实例随时间变化,例如它们的更新或配置不同,从而导致其指纹演变。我们介绍了FP-STALKER的两个变体:基于规则的和混合的变体,它们分别利用了规则和随机森林算法。

我们使用时间跨度为2年的共计1905个浏览器实例的98598个浏览器指纹来评估我们的方法。指纹是使用在AmIUnique网站上发布的两个浏览器扩展程序收集的,一个用于Firefox,另一个用于Chrome。我们比较了FP-STALKER的两个变体和Eckersley提出的算法的实现[8]。在我们的实验中,我们评估了FP-STALKER正确链接来自同一浏览器实例的浏览器指纹的能力,以及检测来自未知浏览器实例的指纹的能力。最后,我们证明FP-STALKER平均可以链接给定浏览器实例的指纹超过51天,与文献中最接近的算法相比,提高了36天。

总的来说,这篇论文有以下四大贡献:

  1. 我们通过显示指纹频繁更改(50%的浏览器实例在不到5天的时间内更改其指纹,80%不到10天进行了更改)突出了用于跟踪目的的浏览器指纹唯一性的限制;
  2. 我们提出了两种变体算法来链接来自同一浏览器实例的指纹,并检测何时指纹来自未知浏览器实例;
  3. 我们将算法的准确性与最新技术进行了比较,并研究了浏览器指纹识别频率如何影响跟踪持续时间;
  4. 最后,我们评估算法的执行时间,并讨论研究结果的影响。

本文的其余部分安排如下。第二部分概述了现有技术。第三部分分析了浏览器指纹如何随时间演变。第四部分介绍了Eckersley的算法以及FP-STALKER的两种变体。第五部分报告了实证评估,与现有技术的比较以及我们方法的基准。最后,我们在第六节中总结。

2. BACKGROUND & MOTIVATIONS

​ a) 浏览器指纹识别:旨在在不使用状态标识符(例如cookie[8])的情况下识别Web浏览器。浏览器指纹由一组浏览器和系统属性组成。通过在浏览器中执行脚本,可以揭示敏感的元数据,包括浏览器的参数以及操作系统和硬件详细信息。由于该技术是完全无状态的,因此仍然难以检测和阻止,因为客户端上没有存储任何信息。单独地,这些属性可能不会提供很多信息,但是当组合使用时,它们通常会形成唯一的签名,因此类似于指纹。指纹中的大多数属性都是通过JavaScript APIHTTP标头收集的,但是额外的信息也可以通过Flash之类的插件检索。 表一说明了从Windows 10上运行的Chrome浏览器收集的浏览器指纹。

表I 指纹的一个例子

image-20200106150620097

​ b) 浏览器指纹研究:专注于唯一标识浏览器。Mayer[17]在2009年率先指出,可以将基于其配置和底层操作系统的浏览器的“独特性”用于“个人识别”。2010年,PANOPTICLICK研究的浏览器指纹识别技术进行了首次大规模展示[8]。Eckersley从大约50万个指纹中成功地独特地识别了83.6%的浏览器。从那时起,已经对该跟踪技术的许多不同方面进行了许多研究。由于网络浏览器中包含用于绘制图像,渲染3D场景或处理声音的新功能,因此发现了新属性来增强指纹识别过程[5],[7],[9],[10],[18],[ 19],[20]。此外,研究人员对网络进行了大规模爬网,证实了浏览器指纹的稳定增长[1],[2],[9],[22]。尽管这些研究大多集中在台式机上,但其他研究表明它们可以成功地为移动设备浏览器提供指纹[11],[14]。最后,我们在2016年进行的一项研究证实了Eckersley的发现,但发现某些属性发生了显着变化[14]。尽管插件和字体列表是2010年最具启发性的功能,但是随着Netscape插件应用程序编程接口(NPAPI)在Chrome浏览器(2015年9月)和Firefox(2017年3月)中被弃用,这一情况已迅速改变。浏览器指纹识别技术不断变化,以适应浏览器技术的发展。

​ c) 浏览器指纹防御:设计用于抵抗指纹跟踪。浏览器指纹的最大部分来自JavaScript引擎。但是,可以更改这些属性的值以误导指纹算法。浏览器扩展(称为spoofers)会使用预定义的值来更改浏览器填充的值,例如用户代理平台。这里的目标是伪造与实际值不同的值。但是,Nikiforakis等人表明它们可能有害,因为他们发现这些扩展“并未考虑识别出真实身份的所有可能方式”(译者注:应该是就算用插件改了这些属性,但是实际的指纹算法其实不根据这些伪造的属性,从而导致失败),并且实际上这些插件使得用户“与其他用户的可见性和区别性更大”,因为普通的用户的浏览器未经修改” [22]。托雷斯等人通过提供使用FP-BLOCK分离Web身份的概念,进一步迈出了一步,他们为每个遇到的域生成了浏览器指纹[24]。每次浏览器连接到相同的域时,它将生成相同的指纹。但是,由于修改后的值不完整且可能不连贯,因此它始终具有与朴素的spoofer相同的局限性。 Laperdrix等人探索了用于指纹识别的媒体元素(例如canvas和音频)的随机化,以打破指纹的可链接性[12]。它们给canvas和音频添加了轻微的随机噪声,使用户无法察觉,从而击败了指纹算法。最后,可以说TOR浏览器是抵御指纹识别的最佳防御工具。它的策略是使所有用户都趋向于标准化指纹。TOR浏览器是经过修改的Firefox,集成了自定义防御功能[23] 特别是,这款浏览器删除了插件,默认情况下阻止了canvas提取,并且修改了众所周知的属性以在所有操作系统上返回相同的信息。它们还通过与浏览器绑定一组默认字体来防御JavaScript字体枚举。但是,使用TOR可能会降低用户的体验(例如延迟),并且可能会破坏某些网站(例如,由于禁用的功能,阻止TOR网络的网站)。此外,唯一的浏览器指纹仍然受到限制,因为更改浏览器的配置甚至调整窗口大小可以使浏览器指纹具有唯一性。

​ d) 浏览器指纹可链接性:现有研究仅部分解决了该问题。Eckersley尝试通过基于字符串比较的非常简单的启发式方法来识别PANOPTICLICK网站上的多次访问的用户,该方法正确率可达65%[8]。尽管与浏览器无关,但Wu等人采用的整体方法从零权限应用程序对Android智能手机进行指纹识别[25]本质上类似于我们的工作。他们收集了38个属性的指纹,包括系统软件包列表,设备的存储容量和当前铃声。使用朴素的贝叶斯分类器,他们能够随着时间的推移成功地链接来自同一移动设备的指纹。但是,[25]中数据的性质与本文的工作重点大不相同。特别是,浏览器指纹中的属性不是由强标识符组成,例如当前的墙纸,并且浏览器不会像Android上的应用程序那样共享系统其他部分的个人信息。由于这些原因,结果无法比较。

​ 据我们所知,除Eckersley最初的贡献外,没有其他的研究工作研究使用高级技术来链接浏览器指纹。

3. BROWSER FINGERPRINT EVOLUTIONS

​ 本文着眼于浏览器指纹演变的可链接性。使用指纹作为一种长期跟踪技术,不仅需要获得唯一的浏览器指纹,而且还需要链接源自同一浏览器实例的指纹。大多数文献集中于研究或增加指纹的唯一性[7],[8],[14]。 尽管唯一性是指纹的关键属性,但了解指纹的演变以建立有效的跟踪技术也至关重要。我们的研究提供了更多有关浏览器指纹演变的见解,以证明这种跟踪技术的有效性。

​ a) 输入数据集:我们收集的原始输入数据集包含从7965个不同的浏览器实例获得的172285个指纹。本研究的参与者从2015年7月至2017年8月初安装的Chrome和Firefox AmIUnique扩展程序中获取了所有浏览器指纹。这些扩展程序会在后台加载一个页面,该页面会为浏览器添加指纹。与指纹网站相比,我们收集的唯一其他信息是安装扩展程序后,每个浏览器实例生成的唯一标识符。 这有助于建立基本信息。 此外,我们通过应用以下规则对原始数据集进行预处理:

  1. 我们删除了少于7个浏览器指纹的浏览器实例。 这是因为要研究跟踪浏览器的能力,我们需要经过多次指纹识别的浏览器实例
  2. 由于使用了人为更改指纹的对抗手段,因此我们丢弃了指纹不一致的浏览器实例。要知道用户是否安装了这样的插件,我们将检查浏览器或操作系统是否已更改,并检查属性之间是否一致。 尽管自然环境下存在这样的对策,但少数用户使用了插件来对抗追踪,我们认为,应采用单独的专门反欺骗算法对其进行处理。 我们把这项任务留给以后的工作。

应用这些规则后,我们从1905个浏览器实例中获得了98598个指纹的最终数据集。 以下所有图表和统计信息均基于此最终数据集。 图1显示了两年期间每月的指纹和不同浏览器实例的数量。

image-20200106160324738

图1 每个月收集的指纹和不同浏览器实例的数量
​ 大多数用户是通过在Reddit,Hackernews或Slashdot等热门网站上发布的帖子看到我们的扩展程序的。用户安装该扩展程序后,可以长时间可视化浏览器指纹的演变,并帮助研究人员了解浏览器指纹,以便设计更好的对策。 我们明确声明了扩展的目的以及它收集其浏览器指纹的事实。此外,我们还获得了研究中心机构审查委员会(IRB)的批准,可以收集和存储这些浏览器指纹。作为基本事实,该扩展为每个浏览器实例生成一个唯一的标识符。 标识符附在所有指纹上,指纹每4小时自动发送一次。在这项研究中,我们考虑的浏览器指纹由表I中所述的标准属性组成。

​ 图2说明了匿名集大小与该研究涉及的参与者数量之间的关系。 长尾巴反映出,所有参与者中99%的浏览器指纹都是唯一的,并且属于一个浏览器实例,而5个以上的浏览器实例仅共享10个浏览器指纹。

image-20200106160835438

图2 匿名浏览器指纹设置大小
​ b) *指纹变化的触发因素*:浏览器指纹自然会进化,原因有几个。我们确定了以下类别的更改:
  1. 自动演变是自动发生的,无需用户直接干预。 这主要是由于软件自动升级所致,例如浏览器或插件的升级可能会影响用户代理插件列表。
  2. 用户上下文变化引起的相关上下文演变。 某些属性(例如分辨率或时区)会受到上下文变化的间接影响,例如将计算机连接至外部屏幕或前往其他时区。(译者注:原文中有一个and,但是之后却没有内容了)
  3. 用户触发的演变需要用户采取行动。它们涉及特定于配置的属性,例如Cookie,do not track或本地存储。

要知道属性可以保持多长时间以及它们的稳定性是否取决于浏览器实例,我们计算每个浏览器实例每个属性不变的平均时间。表II列出了在浏览器实例中,每个属性的持续时间的中位数,第90个百分位数和第95个百分位数平均保持不变。特别是,我们注意到在大多数浏览器实例中,用户代理都是相当不稳定的,因为其值会受到软件更新的系统影响。相比之下,Cookie,本地存储和DNT等属性很少更改(如果有的话)。此外,我们观察到,属性根据浏览器实例的不同而演化。例如,canvas指纹在50%的浏览器实例中保持290天稳定,而在10%的浏览器实例中每17.2天更改一次。对于屏幕分辨率,可以观察到相同的现象,其中超过50%的浏览器实例从未看到更改,而平均每3.1天更改了10%。一般来说,这表明某些浏览器实例非常稳定,因此更易于跟踪,而其他浏览器则不稳定。

表II 属性不变的持续时间的中位数,第90个百分位数和第95个百分位数的属性

image-20200106162704460

​ c) 演化频率:要观察的另一个关键指标是浏览器指纹发生变化之前的经过时间(Et)。图3描述了所有指纹(蓝色)或每个浏览器实例的平均值(橙色)的Et累积分布函数。一天后,在观察到的指纹的45.2%中至少发生了一次过渡。13天后观察到第90个百分位,17.3天后观察到第95个百分位。这意味着在13天内至少发生一次过渡的概率为0.9(蓝色)。重要的是要指出,更改取决于浏览器实例(橙色)或多或少地频繁发生。尽管某些浏览器实例经常更改(在不到两天的时间内更改了20%),但其他浏览器实例却要稳定得多(在10天后没有更改的比例为23%)。在这种情况下,与变化的频率保持同步可能是浏览器指纹链接算法面临的挑战,就我们所知,目前尚未进行过探索。

image-20200106163341242

图3 所有指纹在指纹变化之前经过的时间的CDF,并按浏览器实例取平均
​ d) *演化规则*:虽然很难预期浏览器指纹的变化,但我们可以观察到各个属性如何变化。特别是,User agent属性的变化通常与浏览器升级相关,而Plugins属性的变化是指插件的添加,删除或升级(升级会更改其版本)。但是,并不是所有的属性更改都可以用这种方式来解释,有些值很难预测。例如,canvas属性的值是浏览器实例渲染的图像的结果,并且取决于许多不同的软件和硬件层。屏幕分辨率也有所不同,尽管程度较小,但取决于所连接的屏幕,屏幕分辨率可能会出现意外值。基于这些观察,链接浏览器指纹进化的准确性取决于这种进化规则的推论。以下部分介绍了我们首先根据经验确定的演化规则,然后自动学习,以实现一种有效的算法来随时间跟踪浏览器指纹。

4. LINKING BROWSER FINGERPRINTS

FP-STALKER的目标是确定浏览器指纹是否来自已知的浏览器实例(即这个指纹是否是经过变化得到的)或是否应将其视为来自新的浏览器实例。由于指纹频繁更改,并且由于不同的原因(请参见第三节),简单的直接相等比较不足以长时间跟踪浏览器。

在FP-STALKER中,我们实现了两个变体算法,目的是链接浏览器指纹,如图4所示。第一个变体是使用静态规则集的基于规则的算法,第二个变体是结合了以下内容的混合算法规则和机器学习。 我们将在本节中解释这两种算法的细节和权衡。 我们的结果表明,基于规则的算法速度更快,但是混合算法更精确,同时仍保持可接受的执行时间。 我们还实现了基于森林的完全随机算法,但是精度的小幅提高并没有超过大的执行代价,因此在本文中不再赘述。

image-20200106164203398

图4 FP-STALKER:两种算法变体的概述,基于规则的算法更简单,更快速,但混合算法可带来更好的指纹链接。

A. 浏览器指纹链接

收集浏览器指纹时,指纹可能来自先前的访问者(即已知的浏览器实例)或来自新的访问者(即未知的浏览器实例)。指纹链接的目的是将指纹与其浏览器实例匹配,并通过链接其所有指纹演变尽可能长时间地跟随浏览器实例。在匹配的情况下,链接的浏览器指纹被赋予相同的标识符,这意味着链接算法认为它们源自同一浏览器实例。 如果无法链接浏览器指纹,则该算法会为指纹分配一个新的标识符。

更加正式地来说,给定一组已知的浏览器指纹F,对于每个在这个集合中的浏览器f,都有一个f.id能够将浏览器与指纹连接在一起。对于一个不知道的指纹 fu,这个fu不属于F集合中,那么指纹连接算法会返回一个浏览器实例辨识符fk.id,这个标识符的意思是:fk和fu属于同一个浏览器实例的最大可能性。这个计算结果可以通过规则或者通过训练一个算法来预测。如果一个都找不到,那么就会分配一个新的id给fu。为了优化算法,对于每个浏览器实例bi,我们仅仅计算最后的v个指纹,也就是说我们不会去比对一个浏览器最开始的指纹,而只是比对最新的那v个指纹。

B. 基于规则的链接算法

FP-STALKER的第一个变体是基于规则的算法,该算法使用从第三部分中进行的统计分析获得的静态规则。该算法依赖于根据表II中的属性稳定性设计的规则,以确定未知指纹fu是否与已知指纹fk属于同一浏览器实例。 我们还基于不希望违反的约束条件来定义规则,例如,浏览器的系列应该是恒定的(例如,同一浏览器实例不能一开始是Firefox,然后变成了Chrome),操作系统是恒定的 ,并且浏览器版本是固定的或随时间增加。 规则的完整列表如下:

  1. 对于任何给定的浏览器实例,操作系统,平台和浏览器系列必须相同。即使并非总是如此(例如当用户从Windows 8升级到10)时,由于发生频率如此大的变化,我们并不认为算法会丢失浏览器是合理的。
  2. 浏览器版本保持不变或随时间增加。对于降级,情况并非如此,但这也不是常见事件。
  3. 根据统计分析的结果,我们定义了一组属性,这些属性必须来自同一浏览器实例,且两个指纹之间的这些属性不得有差异。我们认为,对于任何给定的浏览器实例,本地存储,Dnt,cookie和canvas都应保持不变。如表II所示,对于给定的浏览器实例,这些属性不会经常更改(即使有的话)。就canvas而言,即使大多数用户很少更改cans(请参见表II,更改也是不可预测的,因此难以建模。因为canvas属性在浏览器实例之间非常独特[14],并且更改的频率不高) 考虑到在同一浏览器实例的两个指纹之间必须保持相同,这仍然很有趣。
  4. 我们对字体施加了限制:如果两个指纹均已激活Flash,即我们有可用字体的列表,那么fu的字体必须是fk字体的子集或超集,但不能是不相交的集合。 这意味着在浏览器实例的两个指纹之间,它将允许删除或添加字体,但不能同时删除和添加字体。
  5. 我们定义了一组允许更改的属性,但只能在一定的相似度之内。这意味着它们的值的相似度必须大于0.75,如Python库函数difflib.SequenceMatcher().ratio中所定义。这些属性是user agent, vendor, renderer, plugins, language, accept, headers。我们最多允许两种此类更改。
  6. 我们还定义了一组属性,无论其值如何,都可以更改。该集合由resolution, timezone和encoding组成。但是,我们只能在这三个属性之间同时进行一次更改。
  7. 最后,对规则5和规则6进行的更改总数必须少于2。

image-20200106172957115

算法1 基于规则的匹配算法
​ 规则的应用顺序对于性能而言很重要:我们从最大到最小区分度进行排序。第一条规则丢弃许多候选者,从而减少了比较的总数。为了将fu链接到指纹fk,我们将规则应用于从F提取的每个已知指纹。一旦不匹配规则,已知的指纹将被丢弃,然后移至下一个。如果指纹符合所有规则,则将其添加到潜在候选列表中。此外,在指纹fk和fu相同的情况下,我们将其添加到精确匹配候选列表中。规则验证过程完成后,我们将查看两个候选列表。如果精确候选表不为空,则检查是否只有一个候选者,或者所有候选者是否来自同一浏览器实例。如果是这种情况,则将fu与该浏览器实例链接,否则我们为fu分配新的ID。如果未找到确切的候选者,我们将查看候选者并应用与精确相同的技术。我们在算法1中总结了基于规则的方法。

在旁注中,我们使用简单的单变量统计分析来建立规则,以研究属性稳定性(请参见表II)以及一些客观(例如规则1)和其他主观(例如规则4)决策。 由于难以制定复杂而有效的规则,下一部分将介绍如何使用机器学习来制定更有效的算法。

C. 混合链接算法

FP-STALKER的第二个变体将基于规则的算法与机器学习混合在一起,以产生混合算法。它重用了先前算法的前三个规则,因为我们认为它们是在同一浏览器实例的两个指纹之间不应该违反的约束。但是,对于最后四个规则,情况更加模糊。的确,尚不清楚何时允许属性不同,可以允许多少个属性不同以及有什么不同之处。我们建议不要使用机器学习来发现它们,而不必手动为这些属性中的每一个制定规则。 将规则和机器学习方法结合起来的目的是,规则比机器学习要快,但是机器学习往往更精确。 因此,通过首先应用规则,它有助于仅保留要应用机器学习算法的指纹子集。

​ 1) 方法描述:该算法的第一步是对fu和所有fk∈F应用规则1、2和3。我们保留验证这些规则的浏览器指纹子集fksub。如果在此过程中发现任何与fu完全匹配的浏览器指纹,则将它们添加到fu。如果精确集不为空并且所有候选都来自同一个浏览器实例,我们将在此处停止并将fu与浏览器实例精确链接。否则,如果有多个确切的候选者但来自不同的浏览器实例,则我们将新的浏览器ID分配给fu。如果精确的候选集为空,我们继续进行第二步,利用机器学习。在此步骤中,对于每个属于fksub的指纹fk,我们使用随机森林模型计算fk和fu来自同一浏览器实例的概率。我们保留一组概率大于λ阈值参数的指纹候选者。如果候选集为空,则为fu分配一个新的id。否则,我们保留概率最高和次高的候选集ch1和ch2。然后,我们检查ch1是否仅包含一个候选者,或者所有候选者都来自同一浏览器实例。如果不是这种情况,我们检查与ch1候选关联的概率ph1大于与ch2+diff候选关联的概率ph2,或者ch2和ch1仅包含来自同一浏览器实例的候选。算法2总结了混合方法。

image-20200106194939251

算法2 混合匹配算法
​ 2) *机器学习*:计算两个指纹fu和fk源自同一浏览器实例的概率可以建模为二进制分类问题,其中要预测的两个类是相同的浏览器实例和不同的浏览器实例。我们使用随机森林算法[6]解决此二进制分类问题。随机森林是一种用于分类的整体学习方法,通过在训练时构造大量决策树并输出各个树的类来进行操作。对于FP-STALKER,如果两个浏览器指纹来自同一浏览器实例,则每个决策树都会做出预测并投票。选择多数票的结果。我们采用随机森林而不是其他分类器的主要动机是因为它在精度和模型解释之间提供了很好的折衷。特别是,随机森林中特征重要性的概念使FP-STALKER可以在决策过程中解释每个属性的重要性。

​ 总的来说,给定两个指纹fu∉F,但是fk∈F,它们的表示被简化为M个特征的单个特征向量X =<x1,x2,…,xM>,其中特征xn是属性n的两个指纹的比较 (之后介绍将两个指纹转换为特征向量的过程)。我们的随机森林模型计算fu和fk属于同一浏览器实例的概率P(fu.id = fk.id |(x1,x2,…,xM))。

​ a) 输入特征向量:为了能够解决二分类问题,对于M个特征,我们提供了一个输入向量X =<x1,x2,…,xM>给随机森林分类器。特征主要是两个指纹的属性值之间的成对比较(比如canvas指纹之间和UA之间)。这些特征大多数是对应于属性的相等或不相等,或这些属性之间的相似性的二进制值(0或1)。我们还包括许多更改特征,这些特征与fu和fk之间的不同属性的总数以及两个指纹之间的时间差相对应。

​ 为了选择哪些属性来构成特征向量,我们进行了特征选择。实际上,具有太多特征并不一定能确保获得更好的结果。这可能会导致过度拟合-即我们的算法正确拟合我们的训练数据,但无法正确预测测试集。此外,具有太多特征也会对性能产生负面影响。对于特征选择,我们从使用指纹中所有属性的模型开始。然后,我们研究了在[15]中定义的特征重要性,以确定最具区别性的特征。在我们的案例中,特征的重要性是唯一性,稳定性和可预测性(可以预测属性随时间变化的可能性)的组合。我们删除了特征向量影响不大(特征重要性<0.002)的所有分量。最后,我们获得了由表III所示属性组成的特征向量。我们发现最重要的特征是两个指纹之间的差异数量,第二个最有区别的属性是语言列表。尽管这似乎令人惊讶,因为语言列表没有很高的熵,但是随着时间的推移,它确实保持稳定,如表II所示,这意味着如果两个指纹使用不同的语言,这通常意味着它们不属于同一指纹浏览器实例。相比之下,屏幕分辨率的熵值也较低,但它的变化频率要高于语言列表,因此这个特征的重要性较低。这主要是由于以下事实造成的:由于屏幕分辨率经常变化,因此使用具有不同分辨率的两个指纹并不会增加很多信息来确定它们是否来自同一浏览器实例。最后,在Rank 5(从0.083降至0.010)之后,我们发现特征重要性大幅下降,这意味着分类所需的大多数信息都包含在前五个特征中。

表III 根据指纹训练集计算出的随机森林模型的特征重要性
![image-20200107112455253](./image-20200107112455253.png)

​ b) 训练随机森林:此阶段训练随机森林分类器,以估计两个指纹属于同一浏览器实例的概率。为此,我们按时间顺序将第III节中介绍的输入数据集分为两组:训练集和测试集。训练集由输入数据集中的前40%指纹和后60%的测试集组成。随机森林通过将指纹之间的演变计算为特征向量来检测指纹的演变。在训练阶段,它需要通过从训练集中计算相关特征向量来学习正确的演变。算法3描述了该训练阶段,分为两个步骤。

image-20200107112956784

算法3 为训练计算输入特征向量
​ 在`Step 1`中,对于训练集的每个浏览器实例(id),我们将训练集(F)中存在的每个指纹(ft∈BROWSERFINGERPRINTS(id,F))与上一个指纹(ft-1)进行比较。这样,FP-STALKER捕获了来自同一浏览器实例的两个连续指纹之间发生的原子演化。我们将BUILDTRAININGVECTORS()用于不同的收集频率(t和t-1之间的时间差),以教导我们的模型链接指纹,即使它们之间的时间间隔不相等。

​ 尽管Step 1给出了算法能够让随机森林识别属于同一浏览器实例的指纹,但也有必要识别它们何时不属于同一指纹。Step 2比较来自不同浏览器实例的指纹。由于来自不同浏览器实例的指纹数量远大于来自同一浏览器实例的指纹数量,因此我们将每个指纹的比较数量限制为一个。这项技术称为欠采样[16],它通过调整标记为true(即2个指纹属于同一浏览器实例)的输入数据的比率,相对于标记为false(即2个指纹来自不同的浏览器实例)的数据数量来减少过拟合。 如果不那么做,该算法将倾向于简单地预测为假。

​ c) 随机森林超参数:关于随机森林的树的个数,在精度和执行时间之间需要权衡。添加树确实可以获得更好的结果,但遵循收益递减的规律,并增加了训练和预测时间。我们的目标是在精度和执行时间之间取得平衡。特征的数量在树的归纳过程中起作用。在每个分割中,随机选择Nf个特征,其中选择最佳分割[4]。通常,其默认值设置为特征向量长度的平方根。diff参数使分类器可以避免选择具有与指纹来源非常相似的概率的浏览器实例。我们宁愿创建一个新的浏览器实例,也不愿选择错误的实例。它与随机森林超参数没有直接关系,而是与我们方法的特殊性有关。为了优化树,特征数量以及diff参数的超参数数量,我们为每个参数定义了几个可能的值,然后运行网格搜索以优化精度。这导致将超参数设置为10棵树和3个特征,并且diff值设置为0.10。

​ 在训练了随机森林分类器之后,我们获得了决策树森林,这些森林预测了两个指纹属于同一浏览器实例的概率。图5说明了其中一个决策树的前三个级别。这些级别取决于language,number of changes和user agent来做出决定。如果属性的值低于其阈值,则决策路径将转到左侧的子节点,否则它将转到右侧的子节点 重复该过程,直到到达树的叶子。 该预测对应于在所有叶节点上具有最多实例的类(相同/不同的浏览器实例)。

image-20200107114212073

​ d) Lambda阈值参数:对于测试集中的每个浏览器指纹,我们将其与之前的浏览器指纹以及来自不同浏览器的另一个随机指纹进行比较,并使用带有先前确定的参数的随机森林分类器来计算它属于同一浏览器实例的概率。使用这些概率和真实标签,我们选择使假阳性率最小化而最大化真实阳性率的λ值。但是,此配置参数取决于浏览器指纹识别的目标应用程序。例如,如果使用浏览器指纹作为第二层安全机制(例如,验证用户正在从已知的浏览器实例进行连接),则将λ设置为较高的值。这使算法更加保守,减少了将指纹链接到错误的浏览器实例的风险,但同时也增加了假阴性,并缩短了算法可以有效跟踪浏览器的持续时间。另一方面,较低的λ值会增加误报率,在这种情况下,即使它们存在差异,也倾向于将浏览器指纹链接在一起。这样的用例对于广告投放来说可能是可以接受的,因为可以说,较大的资料更有用,即使有时会被别人的信息污染。通过应用这种方法,我们得出了0.994的λ阈值。

5. EMPIRICAL EVALUATION OF FP-STALKER

​ 本部分评估FP-STALKER的能力。主要有

​ i) 正确链接来自同一浏览器实例的指纹

​ ii)正确预测指纹何时属于从未见过的浏览器实例。

我们发现了FP-STALKER的两个变体在链接指纹和区分新浏览器实例的指纹方面均有效。但是,基于规则的变体更快,而混合变体更为精确。最后,我们讨论了收集频率对指纹有效性的影响,并评估了FP-STALKER两种变体的执行时间。

图6说明了链接和评估过程。由于我们的扩展程序用于识别浏览器实例的唯一标识符,因此我们的数据库包含完善的跟踪链。在这里,我们使用不同的采集频率对数据库进行采样,并生成一个删除标识符的测试集,从而导致来自不同浏览器的指纹混合在一起。然后,将生成的测试集通过FP-STALKER运行,以尽可能重建最佳的浏览器实例链。

image-20200107141910955

图6 我们的评估过程概述,允许使用不同的模拟收集频率来测试算法
#### A. Key Performance Metrics

为了评估我们算法的性能并衡量用户对浏览器指纹跟踪的脆弱程度,我们考虑了几种指标,这些指标代表了随时间推移跟踪浏览器实例并检测新浏览器实例的能力。本节介绍了这些评估指标以及相关词汇。图6说明了场景的不同指标。

跟踪链是已链接指纹的列表,即链接算法为其分配了相同标识符的指纹。一条链可以由一个或多个指纹组成。如果使用完美的链接算法,则每个浏览器实例都将具有唯一的跟踪链,即其所有指纹都被分组在一起,并且不会与其他任何浏览器实例的指纹混合在一起。 但是,实际上,指纹识别是一种统计攻击,在链接过程中可能会发生错误,这意味着:

  1. 来自不同浏览器实例的指纹可能包含在同一跟踪链中。
  2. 来自给定浏览器实例的指纹可以分为不同的跟踪链。

图6的下部显示了这些错误的示例。链1具有来自浏览器B的不正确指纹fpB1,链3和链4包含来自浏览器C的指纹未正确链接(即,未链接fpC3和fpC4导致链条断裂)。

我们提出跟踪持续时间指标,以评估算法随时间跟踪浏览器实例的能力。我们将跟踪持续时间定义为链接算法与单个跟踪链中的浏览器实例的指纹匹配的时间段。更具体地,将在链chaink中的浏览器bi的跟踪持续时间定义为CollectFrequency x(#bi ∈chaink-1)。之所以减去一个,是因为根据定义,我们认为从第二个链接的指纹开始已经跟踪了浏览器实例。

浏览器实例bi的平均跟踪持续时间是其在实例所在的所有跟踪链中的跟踪持续时间的算术平均值。例如,在图6中,链1中浏览器B的跟踪持续时间为0×CollectFrequency,链2中的跟踪持续时间为1×CollectFrequency,因此平均跟踪持续时间为0.5×CollectFrequency。以相同的方式,浏览器C的平均跟踪持续时间为1.5×CollectFrequency。

浏览器实例bi最大跟踪持续时间定义为该浏览器实例所在的所有跟踪链的最大跟踪持续时间。对于浏览器C,最大跟踪持续时间发生在链3中,并且等于2× CollectFrequency。

分配的ID的数量表示已通过链接算法分配给浏览器实例的不同标识符的数量。可以将其视为存在浏览器实例的跟踪链的数量。对于每个浏览器实例,一种完美的链接算法会将浏览器的所有指纹分组到一个链中。 因此,每个浏览器实例将具有多个分配的ID。图6显示了一种不完美的情况,其中为浏览器C分配了2个不同的ID(链3和链4)。

拥有率反映了算法不链接来自不同浏览器实例的指纹的能力。跟踪链chaink的所有者定义为链中指纹最多的浏览器实例bi。因此,我们将所有权比率定义为属于链所有者的指纹数除以链的长度。例如,在链1中,浏览器A以4/5的所有权比率拥有4个所有权,因此拥有所有权比率为4的链。实际上,所有权比率接近1意味着跟踪配置文件不会被来自不同浏览器实例的信息污染。

B. Comparison with Panopticlick’s linking algorithm

我们将FP-STALKER与Eckersley[8]在PANOPTICLICK项目中提出的算法进行了比较。据我们所知,没有其他算法可以比较。尽管Eckersley算法的作者将其算法描述为“天真”,但我们将其用作比较我们的方法的基准。PANOPTICLICK算法在算法4中进行了总结。它使用以下8个属性:User agent, accept, cookies enabled, screen resolution, timezone, plugins,fonts和local storage。给定一个未知的指纹fu,如果存在足够相似的指纹(即,仅更改了一个属性),则PANOPTICLICK尝试将其与同一浏览器实例的先前指纹进行匹配。否则,如果找不到相似的指纹或属于不同浏览器实例的太多相似的指纹,它将分配一个新的ID。 此外,尽管最多允许进行一次更改,但是此更改只能在以下属性中发生:Cookie,分辨率,时区和本地存储。

C. Dataset generation using fingerprint collect frequency

​ 为了评估FP-STALKER的有效性,我们从1395个浏览器实例(输入数据集的60%,请参阅第IV-C2b节)收集的59159个指纹测试集开始。但是,我们不直接使用此集合。相反,通过对测试集进行采样,我们使用可配置的收集频率生成新的数据集。因为我们的输入数据集是细粒度的,所以它允许我们模拟指纹频率对跟踪的影响。直觉是,如果对浏览器进行指纹识别的频率较低,则很难对其进行跟踪。

为了生成给定收集频率的数据集,我们从59159个指纹的测试集开始,然后针对每个浏览器实例,查看其第一个指纹的收集日期。然后,我们通过收集频率天数的时间进行迭代,并在时间t+collect_frequency下恢复浏览器实例的指纹。它可能是与先前收集的指纹相同或新的指纹。我们一直这样做,直到达到为该浏览器ID收集的最后一个指纹。这使我们可以记录一个指纹序列,该序列对应于如果以collect_frequency天的频率对浏览器实例进行指纹识别,指纹识别器将获得的指纹序列。采样的好处在于,由于使用了非常精细的指纹,因此比使用我们数据库中的所有指纹更为现实。实际上,该扩展程序甚至能够捕获指纹中短暂的变化(例如,连接外部显示器),这在自然环境中并不总是可能的。最后,它使我们能够研究指纹采集频率如何影响浏览器跟踪。图7提供了一个生成数据集的过程示例,该数据集的收集频率为两天。表IV列出了每个模拟的采集频率所生成的测试集中的指纹数量。

image-20200107151455971

图7 生成模拟测试集的过程示例。 该数据集包含从浏览器A和B收集的指纹,我们以2天的收集频率对其进行采样,以获得一个数据集,该数据集使我们能够测试收集频率对指纹跟踪的影响。
表IV 模拟不同的采集频率后,每个生成的测试集的指纹数
![image-20200107151646465](./image-20200107151646465.png)

生成的测试集中的浏览器指纹按时间顺序排列。在实验开始时,已知指纹(F)的集合为空。在每次迭代中,FP-STALKER尝试将未知指纹fu与F中的指纹之一相关联。如果它可以链接到指纹fk,则FP-STALKER会将fk.id分配给fu,否则它将分配一个新的id。在这两种情况下,fu被添加到F中。指纹的时间顺序意味着在时间t,浏览器指纹只能与在时间t’<t收集的先前的指纹链接。与我们允许过去的指纹与将来收集的指纹链接在一起相比,这种方法可确保类似于在线指纹跟踪方法的情况更加逼真。

D. Tracking duration

图8绘制了三种算法的平均跟踪持续时间与收集频率的关系。平均而言,测试集中的浏览器实例存在109天,这与我们的链接算法可能实现的最大值相对应。我们看到,与其他两种算法相比,FP-STALKER的混合变体能够在更长的时间内跟踪浏览器实例。 如果浏览器每三天被指纹识别一次,FP-STALKER可以平均追踪51.8天(译者注:原文中是51,8天,我怀疑是符号打错了)。更一般而言,FP-STALKER的混合变体的平均跟踪持续时间比基于规则的变体多9天,比Panopticlick算法多15天。

image-20200107152359727

图8 三种算法的平均跟踪持续时间与模拟收集频率的关系
图9给出了三种算法的平均最大跟踪持续时间与收集频率的关系。我们看到,混合算法仍然优于其他两个算法,因为它可以构建更长的跟踪链且错误更少。平均而言,FP-STALKER混合版本的最大平均跟踪持续时间约为74天,这意味着通常最多跟踪此持续时间的用户。

image-20200107152755318

图9 这三种算法的平均最大跟踪持续时间相对于模拟收集频率,这显示了构建的最长跟踪持续时间的平均值
图10显示了平均分配给每个浏览器实例的ID数。我们看到PANOPTICLICK的算法通常会分配新的浏览器ID,这是由于其保守性造成的。确实,一旦有多个更改或多个候选链接,Panopticlick的算法就会为未知的浏览器实例分配一个新ID。 但是,我们可以看到FP-STALKER的混合型和基于规则的变体的性能相似。

image-20200107152946685

图10 针对三种算法的模拟收集频率,每个浏览器实例的平均分配ID数(越小越好)
最后,图11给出了三种算法的跟踪链相对于收集频率的平均所有权。我们看到,尽管PANOPTICLICK具有保守性,但其所有权为0.94,这意味着,平均而言,跟踪链的6%是由不属于该链的浏览器实例的指纹构成的,即被污染了。 其他指纹。 FP-STALKER的混合变体的平均所有权为0.985,而基于规则的平均所有权为0.977。

image-20200107153440118

图11 三种算法的追踪链相对于模拟收集频率的平均所有权。值为1表示跟踪链构造良好。
在链接浏览器指纹时,FPSTALKER的混合版本更好,甚至与基于规则的版本一样好。接下来的几节将重点介绍使用混合算法获得的更多结果。图12展示了当Hybrid_variant的collect_frequency等于7天时平均和最大跟踪持续时间的累积分布。我们观察到,平均有15.5%的浏览器实例被跟踪超过100天。关于最长的跟踪链,我们观察到在实验期间,超过26%的浏览器实例至少被跟踪了100天以上。这些数字表明跟踪可能如何取决于浏览器及其配置。确实,虽然有些浏览器很长一段时间都没有被跟踪,但是其他浏览器可能会被跟踪几个月。这些结果也是由于我们的实验中存在浏览器实例的持续时间。在整个实验中,很少有浏览器实例存在,大部分持续了几周,而充其量,我们只能跟踪存在的浏览器实例。该图还显示了完美链接算法的结果,这也可以解释为测试集中浏览器实例存在时间的分布。

image-20200107153832910

图12 收集频率为7天的平均和最大跟踪持续时间的CDF(仅FP-STALKER混合变体)
图13中的箱线图描绘了混合算法在7天的收集频率下生成的ID数。它显示一半的浏览器实例已分配了2个标识符,这意味着它们有一个错误,超过90%的浏览器实例具有少于9个标识符。

image-20200107154259253

图13 每个浏览器的ID数量分布,收集频率为7天(仅限FP-STALKER混合版本)
最后,我们还查看了链的分布,以查看来自不同浏览器实例的指纹混合在一起的频率。对于FP-STALKER混合版本,超过95%的链拥有超过0.8的所有权,而超过90%的拥有完美的所有权(即值为1)。这表明一小部分浏览器实例在链中高度混合 ,而大多数浏览器实例已正确链接到干净且相对较长的跟踪链中。

E. Benchmark/Overhead

本部分提供了一个基准,用于评估FP-STALKER的混合和基于规则的变体的性能。我们首先提供有关实现的更多详细信息,然后解释该基准测试所使用的协议,展示我们的方法可以扩展,并说明当浏览器实例数量增加时,这两种变体的行为方式。

​ a)实施:用于该基准测试的FP-STALKER是用Python开发的,随机森林的实现来自Scikit-Learn库。为了研究我们方法的可扩展性,我们并行化了链接算法以在多个节点上运行。主节点负责接收可链接性请求,然后将未知指纹与fu匹配,发送给将fu与进程中所有fk进行比较的从节点。然后,每个从属节点发送其候选集,该候选集与在混合算法的情况下的概率或在基于规则的版本的情况下的更改次数相关。最后,主节点根据基于规则的算法或混合算法定义的策略做出最终决定。做出决定后,它将向每个节点发送一条消息,以宣布是否应将fu保留在其本地内存中。在基准测试的情况下,我们不会对精确匹配进行优化。实际上,通常,主节点应持有与其ID相关的精确匹配列表。

​ b) 实验方案:旨在研究可伸缩性。我们在标准Azure云实例上评估我们的方法。我们会生成伪造的浏览器指纹,以增加测试集的大小。因此,该部分不会评估先前的指标(例如跟踪持续时间),而只会评估链接合成浏览器指纹所需的执行时间,以及该方法在多个流程之间的扩展程度。

基准测试的第一步是从真实的指纹中生成假指纹。生成过程包括从我们的数据库中获取真实指纹,并对canvas和时区属性进行随机更改。我们仅应用两个随机更改,以便生成的指纹是唯一的,但它们没有太多差异,因此会减少比较次数。这一点很重要,因为我们的算法包括与差异数量有关的启发式算法。因此,通过应用少量的随机更改,我们不会丢弃所有fk指纹,这使其成为测试执行时间的最坏情况。关于浏览器ID,我们为每个浏览器实例分配了两个生成的指纹。每个浏览器实例生成更多指纹没有用,因为我们仅将未知指纹与每个浏览器实例的最后2个指纹进行比较。然后,主节点创建n个从属进程,并将生成的指纹发送给它们。指纹均匀分布在整个过程中。

一旦指纹存储在从属进程内存中,我们就开始进行基准测试。我们获得100个真实指纹,并尝试将其与我们生成的指纹关联。对于每个指纹,我们测量链接过程的执行时间。在此度量中,我们度量:

​ 1)指纹和浏览器实例的数量

​ 2)产生的进程数

我们在具有16个虚拟处理器和64 Gb RAM的Standard D16 v3 Azure实例上执行基准测试,每月的相关费用为576美元。图14显示了混合方法相对于进程数的执行时间加速。我们看到随着进程数量的增加,我们获得了执行时间的加速。 从1到8进程可以使速度提高80%以上。图15显示了使用FP-STALKER的混合和基于规则的变体将指纹与浏览器指纹数量相关联的执行时间,该过程使用16个进程。以执行速度为代价,可以从混合变量(请参阅V-D)获得更好的跟踪持续时间。实际上,对于任何给定数量的进程和浏览器实例,基于规则的变体链接指纹的速度大约快5倍。也就是说,结果表明混合变体相对快速地链接了指纹。

image-20200107160008907

图14 FP-STALKER混合版本的平均执行时间相对于进程数的加快
![image-20200107160120039](./image-20200107160120039.png)
图15 FP-STALKER混合和基于规则的指纹执行时间,使用16个进程进行链接。时间取决于测试集的大小。混合型变体提高了效率,但是执行时间变慢了。
但是,原始执行时间不应直接使用。该算法使用Python实现,其主要重点不是性能。此外,尽管我们通过添加进程来进行缩放,但是可以通过拆分链接过程来进一步进行缩放(例如,根据操作系统和浏览器的组合,将指纹发送到更专门的节点)。在我们当前的实现中,如果试图匹配来自Linux上的Chrome浏览器的未知指纹,它将与Windows上的Firefox的指纹进行比较,即使它们没有被链接的机会,该算法也会消耗时间。通过采用分层结构,其中节点或进程根据其OS和浏览器进行划分,可以提高我们方法的吞吐量。

此外,原始执行速度的重要性在很大程度上取决于用例。在使用指纹作为重新生成Cookie的方式的情况下(例如,用于广告),只有在Cookie丢失或已被擦除时才需要链接指纹,这种情况的发生频率要低得多。另一个用例是使用浏览器指纹作为增强身份验证的一种方法[3]。在这种情况下,只需要将尝试登录的浏览器的指纹与同一用户的先前指纹进行匹配,就可以大大减少比较次数。

F. Threats to Validity

首先,我们在这项工作中报告的结果取决于我们的浏览器指纹数据集的代表性。我们开发了两种最流行的Web浏览器Chrome和Firefox的扩展程序,并通过标准渠道进行了分发。如果我们自己选择了一个用户群,这确实提供了长期数据,并减轻了可能的偏差,但是,对我们的扩展感兴趣的人们可能无法很好地代表一般的网民。

其次,由于难以复制实验,因此存在可靠性威胁。不幸的是,这是隐私领域的科学努力所固有的:这些作品必须分析个人数据(在我们的情况下是浏览器指纹),并且这些数据不能公开共享。但是,用于拆分数据,生成输入数据,训练算法以及对其进行评估的代码已在GitHub上在线公开提供。

最后,可能的内部威胁在于我们的实验框架。我们对机器学习算法进行了广泛的测试,并尽可能彻底地检查了分类结果。我们关注于拆分数据并生成与Web应用程序中发生的情况相近的场景。但是,对于任何大规模的实验基础设施,此软件肯定存在错误。我们希望他们只改变边际定量的东西,而不改变我们发现的定性本质。

G. Discussion

本文研究了孤立的浏览器指纹链接,这是其最坏的情况。实际上,浏览器指纹识别通常与状态跟踪技术(例如cookie,Etags)结合使用,以重新产生状态标识符[1]。在这种情况下,指纹链接的执行频率要低得多,因为在大多数情况下cookie足以跟踪用户,而且成本低廉。我们的工作表明,浏览器指纹识别可以提供一种有效的解决方案,以延长cookie的使用寿命,而这些cookie逐渐被具有隐私意识的用户删除。

浏览器供应商和用户会做得很好,以最大程度地减少指纹识别程序容易利用的差异。我们的结果表明,某些浏览器实例具有高度可跟踪的指纹,以至于很少使用指纹是非常有效的。相反,使用我们收集的属性,其他浏览器实例似乎无法跟踪。供应商应努力使指纹攻击者所利用的攻击面最小化,用户应避免以使浏览器公开唯一且可链接的指纹的方式自定义其浏览器。

根据目标,可以将浏览器指纹链接调整为更加保守,避免误报(例如出于第二级安全目的)或更宽松(例如广告跟踪)。其他跟踪技术的有效程度也可能影响调优。 例如,可以对它进行非常保守的调整,并且仅在扩展了隐私跟踪功能的情况下扩展了cookie跟踪,在我们看来,隐私意识较高的用户更可能具有自定义(即,唯一且可链接)的浏览器配置,从而删除了他们的cookie。

6. CONCLUSION

在本文中,我们调查了浏览器指纹的演变,并提出了FP-STALKER作为链接指纹随时间变化的方法。我们使用FP-STALKER的两个变体解决了这个问题。第一个基于从对基础程序员知识的分析中识别出的规则集。第二种变体通过利用机器学习来梳理最微妙的规则,从而结合了最具区分性的规则。

我们通过一组指纹指纹训练了FP-STALKER混合变体,该指纹是通过1905个志愿者安装的浏览器扩展套件收集的,为期两年。通过随机森林的特征重要性,我们确定了更改数量,语言以及用户代理,这是三个最重要的特征。

我们在测试仪上运行FP-STALKER,以评估其链接指纹的能力以及检测新浏览器实例的能力。我们的实验表明,混合变体平均可以连续连续54.48天正确地链接来自给定浏览器实例的指纹演变,而基于规则的变体平均可以连续42、3天。对于最大跟踪持续时间,使用混合识别算法的时候,可以跟踪超过26%的浏览器100天以上。

关于FP-STALKER的可用性,当已知指纹的数量不断增加时,我们测量链接未知指纹的平均执行时间。 我们证明了基于规则的和混合的变体都是水平扩展的。

ACKNOWLEDGMENT

我们要感谢AmIUnique扩展的用户,他们的贡献对这项研究至关重要。 我们还要感谢我们的指引者Davide Balzarotti和匿名审阅者的宝贵意见和反馈。 最后,如果没有我们与Benoit Baudry的长期合作,这项工作将是不可能的。

REFERENCES

待补充。