Web 追踪技术综述

2023-04-19 18:33王晓茜刘奇旭刘潮歌张方娇刘心宇
计算机研究与发展 2023年4期
关键词:浏览器指纹特征

王晓茜 刘奇旭 刘潮歌 张方娇 刘心宇 崔 翔

1 (中国科学院信息工程研究所 北京 100093)

2 (中国科学院大学网络空间安全学院 北京 100049)

3 (广州大学网络空间先进技术研究院 广州 510006)

(wangxiaoxi@iie.ac.cn)

Web 新技术不断地更新迭代,以及信息化时代下用户信息的爆炸式增长,直接促进了Web 追踪技术的高速发展. Web 追踪技术通过为用户生成唯一的身份标识,实现对用户以及行为活动的追踪. 其最初目的是服务不同的网站应用追踪用户,分析挖掘用户行为特点,实现个性化推荐. 但追踪技术本身存在一定的安全问题,且易被恶意利用获取用户敏感信息. 随着用户隐私敏感度的提升和信息保护意识的增强,以保护用户隐私为目标的追踪防御技术也在不断地升级和快速发展.

自2010 年浏览器指纹[1]技术的提出,Web 追踪技术的研究趋势从Cookie 等类型的在用户客户端(即浏览器)存储身份标识的有状态的追踪,进入了基于浏览器获取特征信息的无状态[2]的指纹追踪时代. 与传统的Cookie 类追踪技术相比,指纹追踪技术摒弃了在客户端存储信息的形式,而是获取了较多具有用户个人特点的、多元化的特征信息,利用一种或多种不同类型的特征信息,生成唯一的指纹,在用户无感知的情况下进行隐蔽追踪. 现阶段Web 追踪领域的学术研究较多专注于某项特定的追踪或防御技术,因此,本综述针对Web 追踪领域的技术发展和研究进行了总结和分析,并讨论了现有技术发展的优劣势,对该领域的下一步研究方向进行了展望.

本文研究了2010—2021 年期间Web 追踪领域的技术发展,按照实现机制将Web 追踪技术分为了存储型追踪技术和指纹型追踪技术,从追踪技术的起源、技术实现、发展现状等多个角度进行介绍分析.着重分析Web 追踪及防御技术的研究及实现方案,将Web 追踪技术按照追踪范围划分为3 个层次,描述了不同追踪范围所使用特征的特点和获取方式.从防御技术的不同形态进行分类介绍,对防御的技术实现进行深入分类讨论. 着眼于Web 追踪和防御技术2 个角度,分析其技术上的优劣性以及当前面临的挑战和问题,指出未来可能的研究方向.

本文的主要贡献有4 个方面:

1)介绍了Web 追踪的起源和分类,从存储型追踪和指纹型追踪2 方面介绍Web 追踪技术的发展和特点. 简要描述了现阶段Web 追踪技术的实现和发展历程.

2)针对近些年Web 追踪技术的发展进行深入调研,按照追踪范围将Web 技术追踪分为了单浏览器、跨浏览器、跨设备3 个不同层次. 基于追踪范围分别介绍指纹中的特征获取技术,描述指纹关联算法并对现有的指纹追踪进行讨论.

3)深入研究Web 追踪防御技术,按照形态可将防御技术分为扩展防御,浏览器内嵌防御,防御框架、工具或机制、构建防御对策或环境. 分别介绍不同形态在防御技术上的实现方式,通过对比防御能力以及抵御追踪的手段,分析了Web 追踪防御的现状.

4)基于Web 追踪技术和防御技术2 个角度分析了技术发展的优劣势,以及面临的挑战和发展方向.在追踪技术方面进行了唯一性和持久性讨论;在防御技术方面针对防御形态和技术进行对比,分析防御技术的优缺点,并指出现有技术无法完全防止指纹追踪.

1 Web 追踪概述

早期Web 追踪技术的出现是为了保持用户与服务器之间的会话状态,在用户浏览器客户端中存储一定的用户隐私信息,在交互式Web 中对用户进行识别和区分. 例如Cookie,FlashCookie,EverCookie,HTML5 中新型的存储型API 等均使用在客户端存储身份标识的方式进行追踪,我们将这种技术统称为存储型追踪技术. 2010 年电子前沿基金会(electronic frontier foundation,EFF)的专家Eckersley[1]提出的一项划时代的Web 追踪技术——浏览器指纹,其基于用户浏览器获取设备的软硬件特征,并结合现有的存储型追踪机制,在服务器端对用户进行唯一性识别和追踪. 随后,Web 追踪领域掀起了使用各种不同类型特征信息作为指纹来追踪用户的研究热潮,我们将这类追踪技术统称为指纹型追踪技术. 依据Web 追踪的发展历史以及追踪技术手段的不同,本节将Web 追踪技术分为2 类进行概述:存储型追踪技术和指纹型追踪技术[3].

1.1 存储型追踪技术

Cookie 诞生自1993 年,是使用较为广泛且最具代表性的存储型追踪技术,其最有效的功能是在网站中保持用户状态,提供用户个性化服务. 但直至2000 年网络隐私权的提出,Cookie 才开始引起社会的关注,之后诞生了一系列以存储关键信息为手段的追踪技术,包括FlashCookie,EverCookie,随后HTML5 新技术也开放了更多的权限给开发者[4],例如增添了可直接在浏览器中进行内容存储和数据库存储的API,如表1 所示. 这些存储机制也为追踪提供了更加便利的条件.

Table 1 Analysis of Storage Tracking Technology Capabilities表1 存储型追踪技术能力分析

1.1.1 Cookie 类存储技术

HTTP Cookie 通常存储在Web 客户端特定目录下,通过在与Web 服务器的交互请求中携带Cookie值来辨别身份. 在设置并存储 Cookie 后,当用户再次登录网站时,浏览器都会检查本地的Cookie 值,在Web 请求中携带Cookie 值发送给Web 服务器. 服务器返回用户对应的个性化信息和其他权限内资源.

Flash Cookie[5]同样是记录用户浏览网页时保留的信息,是由FlashPlayer 控制的客户端共享存储技术Share Object,它永久驻留在用户计算机上,使不同的浏览器共用同一个Flash Cookie,实现实时数据共享. Flash Cookie 使用多个存储位置,较为隐蔽且难以清除. Flash Player 在2020 年已经被正式淘汰.

UserData 是微软为IE 浏览器专门在系统中开辟的一块存储空间,可用于对数据进行持久化存储,除非手动删除,否则即使IE 浏览器被关闭或者刷新,数据也能够重新被载入而不会丢失,并且永远不会失效. 微软已经放弃了对IE 浏览器的支持,将内置浏览器切换为Chromium 内核的Microsoft Edge 浏览器.

EverCookie[6]又称为“僵尸Cookie”,是一种更甚于FlashCookie 的浏览器持久化追踪机制,它使用多达10 种以上的存储机制将Cookie 持久化存储在不同的位置,当在某个位置的Cookie 被清除后,还可以通过其他不同位置的Cookie 进行恢复. EverCookie 所使用的技术不仅包含HTTP Cookie,UserData,Flash Cookie,还囊括了HTTP 头中的ETags 和 HTML5 中的SessionStorage,LocalStorage,IndexDB,Java 硬盘写入漏洞等多个存储机制. Acar 等人[7]早在2014 年针对EverCookie 的研究中,就发现了EverCookie 启用IndexDB 技术进行存储,但EverCookie 的野心不止于此,未来可能还会加入超文本传输协议(Hypertext Transfer Protocol,HTTP)身份验证缓存、TLS 会话恢复(TLS session resumption)标识符、HTTP 公钥固 定(Http public key pinning,HPKP)认证等存储形式.

1.1.2 HTML5 新型存储型API

Web Storage[8]是HTML5 提出的存储型API,包括会话存储SessionStorage 和本地存储LocalStorage,可在用户客户端保存大量的数据,数据仅存储在客户端且不与服务器产生交互,每个域都有独立的存储空间. 其中SessionStorage 仅在当前会话下有效,关闭了浏览器窗口就会被销毁;而LocalStorage 的生命周期是永久的,关闭页面或浏览器之后,数据也不会被清除,除非主动删除数据,否则数据永远不会消失,且2 种存储机制均遵循同源机制.

Web 数据库存储包括Web SQL 和IndexedDB[9]2种类型,提供了在客户端直接进行数据存储的能力,理论上没有存储大小限制. Web SQL 是前端的独立的功能模块,具有与实际数据库基本一致的增删改查等操作. IndexedDB 是为了弥补LocalStorage 存储缺陷诞生的,是浏览器提供的非关系型本地数据库.可储存大量数据,提供查找接口和建立索引,但不支持关系型查询语句. IndexedDB 使用键值对存储数据,可进行异步操作,支持事务操作,受同源限制,存储空间大,支持二进制存储.

1.2 指纹型追踪技术

指纹型追踪技术,是一种通过浏览器获取用户设备暴露给网站的可见特征信息,生成唯一标识用户的指纹,来跟踪用户的方法. 当用户访问并加载Web 网页时,网站利用浏览器的能力获取设备、软件相关配置、用户个性化信息以及Cookie 等存储型追踪标识等,将这些特征Hash 为一个唯一值传递到服务器作为用户的唯一标识. 其依托于用户浏览器对Web 网站页面的渲染和执行能力,以及设备对浏览器权限和能力的支持.

1.2.1 特征获取与指纹生成

JavaScript 和HTML5[10]的API 为追踪者提供了无需经过用户同意可直接获取用户设备和软件信息的能力. 例如可通过Navigator 对象获取浏览器的用户代理、首选语言、是否设置不追踪(do not track,DNT)等,Screen 对象和Date 对象描述了浏览器所处设备的信息,包括屏幕、时区等,如表2 所示.

Table 2 API of JavaScript Object and the Corresponding Obtained Information表2 JavaScript 对象的API 及对应获取的信息

Eckersley 依托于前端语言的能力,构建了获取8项用户特征信息的指纹脚本,计算得出特征信息值至少包含18.1b 的信息熵,使用Murmurhash 算法[11]将8 种不同特征的信息Hash 作为唯一的值,指纹出现重复的概率只有1/286777. 在指纹生成后使用difflib库对指纹进行简单的关联. 通过大规模的数据收集和实验论证,结果显示指纹识别率可达到83.6%,在开启Java 和Flash 的情况下,指纹识别率可高达94.2%.

1.2.2 技术发展趋势

唯一性和稳定性是衡量追踪技术优劣的2 大指标,指纹型追踪技术虽然弥补了一部分存储类追踪技术的缺点,减少了用户信息被窃取和欺骗的可能,但其本身存在较多不稳定因素:使用过程中的常规软件升级安装、添加插件扩展、更改分辨率、网络配置等均会影响指纹的唯一性和稳定性.

业界内也面向指纹追踪技术本身的问题展开了研究,技术的发展趋向于在指纹中使用不太稳定但含有较高信息量和较多用户特点的信息,如历史记录、字体、浏览器扩展等,以及较为稳定但唯一性较低的特征,如操作系统特征、硬件特征. 指纹型追踪技术结合现有的Cookie 追踪、HTML5 的存储类API等存储型技术特性,来提高指纹特征包含的信息量以及指纹所具备的独特性和稳定性. 如表3 所示,按照特征属性将研究中获取的特征分为了5 大类:浏览器特征、操作系统特征、网络特征、硬件特征、存储型追踪标识.

浏览器指纹技术的发展同样也带来了新的用户隐私问题,因此Web 追踪防御技术迎来了技术的发展热潮. 研究学者们从使用安装扩展、防御框架、工具,以及浏览器内嵌防御等不同的形态和方式着手,针对性缓解一种或多种的指纹特征获取技术,减少被持续追踪的可能性,防止用户隐私被泄露. Web 追踪技术和防御技术在不断对抗中快速发展,但技术的成熟还面临着诸多的问题和挑战.

2 Web 追踪技术

指纹型追踪技术已经将存储型追踪技术以及常用于溯源的IP 地址、网络等信息纳入了指纹的特征范畴,且指纹型的特征信息获取技术已经从单纯的API 调用,延伸到了使用枚举、测量、漏洞利用等手段获取用户设备上的各种硬件和软件信息[12],以及使用指纹关联算法延长追踪持久性. 本节着眼于Web追踪技术的追踪范围,首先将Web 追踪技术分为单浏览器追踪、跨浏览器追踪,跨设备追踪3 个不同层次,针对较为复杂的特征及获取方式(不可通过API调用获取的特征)进行介绍. 同时介绍了可有效弥补了指纹中追踪唯一性的不足的指纹的关联技术,以及特征与追踪范围之间的关系.

Table 3 Classification and Introduction of Fingerprint Tracking Technology Features表3 指纹型追踪技术特征分类及介绍

2.1 单浏览器追踪

浏览器作为Web 的入口,也是信息被暴露的直接出口. 基于Web 浏览器所包含的用户特点、浏览器引擎及其所依赖的硬件条件,实现对用户浏览器的唯一标识,即浏览器范围内的用户追踪.

2.1.1 含有较为丰富信息的特征

近些年的Web 浏览器追踪的研究热点集中在利用含有较多用户个人特点,且具有高信息熵的特征来产生较为稳定和持续的指纹,例如扩展、字体、历史记录、浏览器缓存等. 这些特征可在一个浏览器内实现对用户的追踪.

1) 历史记录

Felten 等人[13]介绍了一种可以损害用户浏览器历史记录隐私的攻击,使得恶意网站可以嗅探用户对其他站点的访问[14],测量用户浏览器执行某些操作所需的时间来确定用户的浏览历史记录,进而对用户身份去匿名化,例如利用社交网站上可用的组成员身份信息唯一地标识此人,或者显著减少候选人集[15].

利用层叠样式表(cascading style sheets, CSS)中:visited 样式表对页面中嵌入的“已访问”和“未访问”的地址链接(uniform resource locator, URL)颜色进行差异表示的漏洞[16],能够对一定数量的URL 地址进行枚举,获取用户的访问列表. Janc 等人[17]基于链接样式显示区别,使用了3 种方式对历史记录进行嗅探,包括直接利用链接访问样式差异、间接为已访问链接和未访问链接设置不同渲染图片、时序攻击.Olejnik 等人[18]通过大规模数据研究论证了69%用户的浏览历史是唯一的,且奇异值大于18b,具有较强的稳定性. 随后Yan[19]在圣地亚哥的安全会议Toorcon上示范了利用HTTP 严格传输安全协议(Http strict transport security, HSTS)和内容安全策略(contentsecurity-policy, CSP)2 种安全策略探测历史记录的漏洞工具,并将其命名为Sniffly. Smith 等人[20]提出了4种新的历史记录嗅探攻 击:CSS Paint API、CSS 3D transforms、fill-coloring of SVGs 构造链接点击攻击、字节码缓存攻击,并针对主要浏览器和具有安全防护性的浏览器进行了攻击测试,发现依然可以取得很高的信息泄露率. Huang 等人[21]在Smith 的方法技术上引入了多个辅助环节的自适应方法,并采用动态参数搜索算法对Smith 方法进行了改进,实验结果表明,在最流行的操作系统和平台上的5 种主要浏览器上,该自适应方法能够达到近100%的精度.

2)字体

Eckersley 使用Adobe Flash 和Java 虚拟机(Java virtual machine, JVM)来探测系统中安装的字体的完整列表,并且在可检测字体的浏览器中,排序后字体的熵值为16.0. Boda 等人[22]从将字体作为指纹的一个输入项的角度,分析了JavaScript 的字体检测,发现字体列表可以为识别提供坚实的基础,并且论证了IP 地址、特定字体集、屏幕分辨率、时区足够唯一的识别5 种流行的浏览器. Fifield 等人[23]指出浏览器中的字体渲染受到浏览器版本、安装字体以及抗锯齿设置等多方面的因素影响而导致,作者提出了一种基于测量字体字形的屏幕尺寸来对字体进行枚举,证实即使是相对较粗糙的测量字形边界框的工具也可以产生很强的指纹,且设备上的字体信息可用于识别已安装的应用程序以及操作系统的类型和版本[24].

3)扩展

用户安装浏览器扩展本意是为了更便捷地服务,或更好地防止用户隐私泄露,但扩展的可枚举性在无形之中为用户带来更多被泄露的隐私. 相比其他含有丰富信息量的特征,扩展能够为研究学者提供较为确定的结果,且便于进行大规模的数据研究.

依据对扩展检测方式的不同,可以将枚举探测分为2 类:静态探测和动态探测. 静态探测通过枚举扩展ID、Web 可 访问资源(Web accessible resources,WAR)或通过URL 泄露来探测扩展. 通过在用户浏览器中对扩展ID 的既定路径进行探测[25],可枚举浏览器中的扩展. 在Firefox 使用随机化ID 的方式来避免扩展被探测的情况下,依然可以通过检测扩展的WAR 路径判定扩展是否存在[26],识别90%的扩展[27].Sanchez-Rola 等人[28]讨论了统一资源标志符(uniformresource identifier,URI)泄露技术,颠覆Safari 中实现的URI 随机化机制,影响了多达到40%的Safari 扩展. 动态探测方式主要通过监控扩展在页面上做出的改变,判断扩展是否存在. XHOUND[29]通过量化监测扩展在页面文档对象模型(document object model,DOM)做出的修改进行探测和识别,这是第1 个对浏览器扩展进行指纹识别的全自动系统. Karami 等人[30]基于已有检测WAR 路径和页面DOM 独特修改2 种技术,结合传出HTTP 请求和浏览器内部信息交换这2 种新颖的扩展检测方式,构建了一个基于行为扩展的全自动创建和检测指纹的工具Carnus,并且使用Carnus 创建了迄今为止最大的扩展指纹集. Laperdrix等人[31]利用扩展在Web 页面注入CSS 规则的操作,提前在Web 界面中注入CSS 规则,通过检测碰撞对扩展进行枚举,这种方式可以识别之前技术中未检测出的1 074 个扩展. 浏览器扩展枚举技术研究进展汇总如表4 所示.

Table 4 Researches on Technologies of Enumerating Browser Extension表4 浏览器扩展枚举技术研究

4)API 属性枚举和检测

Nikiforakis 等人[32]证实了在不同浏览器家族、版本中,甚至在不同操作系统中相同的浏览器版本中,特殊对象的属性枚举顺序始终是不一致的,这种不一致性可以作为识别用户的依据来对用户进行追踪,基于此提出了一种基于浏览器JavaScript 对象属性枚举的指纹追踪方法. Mulazzani 等人[33]通过分析浏览器是否符合JavaScript 标准,检测其支持的功能,从150 多种浏览器和操作系统组合收集的数据集中,计算出了需要运行的最小测试集,以唯一地标识每个组合.

即便JavaScript 被禁用依然能够对用户进行指纹追踪[34],利用CSS 不同的API 属性在不同渲染引擎中的展现形式的差异,使用字符串请求、媒体查询、字体规则检测等技术,收集浏览器的类型、版本、设备屏幕分辨率、字体等信息来生成指纹. Schwarz 等人[35]提出了2 种新的侧信道攻击来检测指令集体系和使用的内存分配器,使用一种完全自动化的手段发现由环境引起的浏览器引擎的细微差别. JavaScript引擎的固有性能签名也能够在传统形式的系统标识(例如用户代理标头)被修改或隐藏的情况下,检测浏览器版本、操作系统、微体系架构等信息[36].

5)浏览器缓存信息利用

Solomos 等人[37]将网站头像(favorites icon, favicons)作为强大的跟踪向量,向量中的每一位对应用户在1 个特定子域上的图标请求,将该信息生成32b 跟踪标识符,唯一标识和追踪用户. Bansal 等人[38]使用了细粒度的超时和HTML5 Web Workers 来对网站进行并行化缓存探测,并在缓存请求中使用超时以防止缓存污染提高攻击效率,证实了缓存定时攻击的适用性和有效性.

6)交互式特征

文献[39−41]监控和跟踪鼠标的移动和点击,捕获用户与Web 应用程序交互时的鼠标操作,推断用户输入的URL,评估Web 应用程序的有用性和易用性[42],推断用户注意力变化,对定量数据进行预测.Lipp 等人[43]介绍了通用按键定时攻击,能够使攻击在后台选项卡或最小化的浏览器窗口中运行,以此观察到用户个人识别码(personal identification number,PIN)或密码的确切击键时间,推断用户输入的URL,区分分时共享计算机的不同用户.

2.1.2 较为稳定的高级追踪特征

近些年陆续出现的Canvas 指纹、WebGL(Web graphics library)指纹、Audio 指纹是当前被广泛使用的且较为稳定的指纹追踪方式. 这些追踪技术依赖于设备的硬件性能,但会受浏览器的影响.

1)Canvas 指纹

2012 年Mowery 等人[44]提出了Canvas 指纹,揭露了不同硬件设备对字体和文本的图片场景渲染的差异性. Canvas 图片处理依赖于浏览器图像处理引擎、压缩等级和导出选项,因此在不同设备上的绘制的图案会有细微的差别,可以被用来为不同的用户分配特定的编号. 使用Canvas 技术在用户浏览器上进行隐秘的绘画,调用toDataURL()方法将图片转化为base64 编码的字符串,其中编码后字符串的最后一块是可作为用户唯一表示的32b 的循环冗余校验码(cyclic redundancy check,CRC). 截至2014 年,Acar等人[7]调研发现在Alexa 前10 万的网站中已经有5%在使用Canvas 指纹,且Canvas 指纹追踪在网站的二级页面中比在网站的首页中可能更多[45]. Laperdrix 等人[46]也进行了大规模的Canvas 指纹测试,论证了Canvas是最有区别性的指纹. 但Canvas 指纹含有一定的碰撞率,Daud 等人[47]通过网站测试研究,论证了不同操作系统和相同机器规格下,Canvas 指纹识别值并不唯一. Canvas 指纹的生成不会引起用户的注意,因此其已较多应用于网络安全领域[48].

2)WebGL 指纹

WebGL 指纹和Canvas 指纹原理基本相同. 通过HTMLCanvasElement 元素可以获取到WebGL 对象canvas.getContext("webgl"),基 于WebGL 的API 接 口(例如:WEBGL_debug_renderer_info)获取用户的硬件信息,比如显卡名称、显卡型号、显卡制造商等. 只不过3D 图像会和WebGL 的某些属性值绑定在一起(比如显卡提供商、显卡型号、压缩等级等)拼接成很长的字符串,Hash 后获得一个缩减过的信息量,保留具有信息差的字符串作为WebGL 指纹.

3)Audio 指纹

Englehardt 等人[49]发现了一种通过音频为设备生成指纹的方法,即音频(audio)指纹. 操作系统提供了专门处理音频的接口AudioContext API,该API 可以调用振荡器接口OscillatorNode 来产生周期波形,然后调用信号处理模块将信号压缩,再通过实时频域和时域分析(time domain analysis)转换为频率域,最后生成指纹. 音频指纹与Canvas 指纹类似,因浏览器和以及处理音频信号硬件的细微差别,产生不同的音频结果. 2016 年,Englehardt 等人[50]使用Open-WPM 在Alexa 前100 万的网站中进行了测试,发现当前只有少数网站使用了音频指纹.

2.2 跨浏览器追踪

浏览器在接入网络时,都需要调用系统中的硬件、网络等信息获取网站内容资源并进行渲染. 获取系统和硬件层面特征的能力是所有浏览器的共性,可为攻击者提供更多获取设备信息的渠道,因此跨浏览器追踪也可称为设备追踪. 通过测量硬件特征、枚举缓存和网络信息,能够实现对用户的跨浏览器的标识和追踪[51],也为指纹追踪提供了更多的稳定性.

2.2.1 基于硬件信息的设备追踪

设备硬件信息具有较强稳定性,尤其是硬件属性信息几乎不会发生改变. 不同设备的硬件在提供特定功能时,往往会输出特定的属性信息,以及不同的功性能表现. 通过获取或测量设备硬件的运行差异性,提取其较为稳定的特征项,作为设备唯一标识的特征信息.

1) GPU 特征信息

利用WebGL 的API 接口能够获取用户的硬件属性信息,比如显卡名称、显卡型号、显卡制造商等.文献[52]基于设备的GPU 时钟频率、GPU 时钟偏差来对设备进行GPU 指纹识别实验,论证了GPU 的硬件特征不仅能够区分不同硬件配置的设备,甚至能够区分具有完全相同硬件配置的设备.

2017 年,Cao 等人[53]提出了一种依赖于设备操作系统和硬件功能的指纹识别技术,使用WebGL API 呈现31 个不同的计算机图形任务(包括纹理、反锯齿、线条、光线、音频、视频、旋转、语言库等不同类型和角度),然后从测试任务中提取信息Hash 成指纹. 该指纹不仅支持单浏览器追踪,还支持跨浏览器对用户进行追踪. 即使用户切换浏览器,也能够唯一标识设备.

2) CPU 特征信息

利用对浏览器进行基准测试可以推断用户设备的CPU 中是否存在AES 指令集(aes-ni)和英特尔睿频加速技术(turbo boost)2 种扩展[54]的理念,Saito 等人[55]使用侧信道技术识别了CPU 的内核数、超线程技 术(hyper threading technology)可用性、SSE2 指 令集(streaming SIMD extensions2)可用性、ASE-NI 可用性以及CPU 系列类型等信息. Schwarz 等人[35]利用由环境引起的浏览器引擎的细微差别,自动化识别浏览器属性推断主机系统信息.

3)音频特征

频域在不同的浏览器中是不同的[53],因此Audio指纹会受浏览器的影响,不能完全反映出声卡的特征. 但是频率和峰值的比在浏览器之间是相对稳定的,在频率和值的坐标系上创建一个间距很小的列表,并将峰值频率和峰值映射到对应的表格项. 这种情形下的列表可用于跨浏览器的特征.

4)电池损耗度

Diaz 等人[56]发现可利用火狐浏览器在Linux 上提供的高精度读数发现用户的电池容量,实现短时间内跟踪网络用户,且旧电池容量或用过的电池的风险更高.

5)引擎性能监测

使用计时API 函数获取指令序列的执行时间来计算硬件指纹,能够在同类场景以及异构场景中区分完全相同硬件和软件的计算机集[57].

2.2.2 基于网络信息的设备追踪

IP 地址作为用户接入网络的“地址编号”,是在对用户进行Web 追踪时非常重要的信息. 设备接入Web 所使用的公网出口IP、内网IP 和内网拓扑信息都有可能被用作用户追踪和分析的有效手段.

1) IP 地址及内网拓扑

Mishra 等人[58]论证了公网IP 地址仍然是在线跟踪的主要载体,87%的参与者至少保留1 个IP 地址1 个月以上. 文献[59−60]基于网页即时通信(web realtime communication,WebRTC)可获取内网IP 地址的漏洞[61],提出了基于浏览器网络扫描器BrowserScaner,依据网络响应信息判断内网拓扑和内网主机存活情况,甚至能够探测活动节点的开放端口.

2)TLS 会话

Sy 等人[62]提出了一种可以将跟踪周期延长到会话恢复机制的生命周期之外的“延长攻击”,证实了通过TLS 会话恢复能够跟踪用户平均长达8 天的时间. 而TLS1.3 草案使得至少65%的用户可由至少一个网站永久跟踪.

2.2.3 基于缓存信息的设备追踪

对缓存中的敏感地理位置实行推断攻击[63],可跟踪用户所处的国家和城市. Klein 等人[64]利用可控的域名解析服务器(domain name system,DNS),为每个用户分配唯一的DNS 解析记录,基于用户主机的DNS 缓存机制,实现对用户的追踪,克服浏览器的“隐私模式”. 作为Internet 的重要组成部分,许多网络应用提供商使用内容分发网络(content delivery network, CDN)部署的大量缓存代理,因此能够使攻击者获得缓存数据的未授权访问的Web 缓存欺骗[65],使大量网络用户处于危险之中.

2.3 跨设备追踪

跨设备追踪(cross device tracking, CDT)[66]分 为确定性追踪和概率性追踪,确定性跨设备追踪主要通过邮箱、手机号等登录账户实现跨设备追踪;概率性跨设备追踪则借鉴和分析了用户历史记录、行为等信息,实现统计学上的关联. 本文只讨论概率性的跨设备追踪.

2.3.1 跨设备特征分析

当前的追踪手段往往使用多种技术相结合进行综合性的用户追踪,且移动端对HTML5 的支持相较于桌面客户端更为迅速且全面,因此用于指纹追踪的特征绝大部分可同样在移动端获取.

文献[46,67]对桌面设备和移动端设备进行了指纹研究,虽然移动端缺失了字体和插件2 个较为有区别性的特征,但依然具备81%的指纹独特性,并且HTTP 标头和 HTML5 的Canvas 指纹[59,67]在识别这些设备的浏览器方面起着至关重要的作用. 文献[68]证实了大部分网站与第三方网站定期收集的Cookie、IP、位置、行为数据等信息相同,而这些信息可允许第三方将多个设备与持续性的标识符关联起来.Kane 等人[69]研究了用户在不同设备之间的信息共享方式和访问网页活动的重叠度,论证了信息共享的便捷性可提高移动网络的可用性.

Karakaya 等人[70]总结了用于概率跨设备定位的常见物理和行为特征,分析了16 个跨设备追踪的学术研究,其认为对行为模式的探索是实现概率跨设备跟踪的关键. 例如常用的属性是 URL 地址,以及通过该 URL 访问的内容或访问的网站和应用程序的上下文信息. 从站点内容或上下文分类中提取的自然语言处理(natural language processing,NLP)特征对跨设备匹配非常有用.

2.3.2 跨设备追踪方案

我们对常见标识符进行了大规模探索,并量化了它们揭示的主机识别信息的数量.

使用 来自 Hotmail 和 Bing 的长达1 个 月的数 据集,Yen 等人[71]验证了通用标识符(包括用户代理、IP、Cookie、登录ID 等)可以帮助以高精度和高召回率跟踪主机. 通过跨主机聚合信息,发现了超过 75 000个将 Cookie 转发到分布式位置的机器人账户相关的隐蔽恶意攻击. Zimmeck 等人[72]展示了一种检测跨设备跟踪发生的方法,基于从126 位互联网用户收集的跨设备跟踪数据集,探索并论证了用户设备的IP地址和互联网历史记录的相似性能够将移动设备连接到桌面设备的数据集中,其匹配率为0.91. Díaz-Morales[73]提出了一种基于半监督机器学习方法来处理用户跨设备识别的解决方案,以识别哪些Cookie属于使用设备的个人.

2.4 指纹关联研究

指纹动态变化原因可分为3 大类:浏览器或操作系统更新、用户操作更新和环境更新[74]. 指纹的不稳定性能够通过选取较为稳定的特征来进行缓解和弥补,但依然不能实现对用户长期追踪. 因此研究学者设计了指纹关联算法作为另一个使追踪更加持久化的手段.

当前的指纹关联研究均使用相似度分析对指纹进行关联度判定,也用以证明持续追踪的可能性[75].其中文献[76]引入了指纹的辅助属性判定,使用专家打分法和编辑距离计算相似度,文献[77]在此基础上提出了一种高性能的指纹识别模型,将存储型追踪标识符作为指纹关联的重要依据. 文献[78]通过实验证明了计算机在运行特定程序时产生的不同的CPU 图形,可在指纹关联时辅助解决其他属性易被伪装的问题. 文献[79]提出了使用规则和算法进行关联的FP-STALKER,其可追踪浏览器54.48 天,并且26%的浏览器能被追踪超过100 天. 文献[80]针对安卓(Android)设备中的指纹进行了研究,提出了基于双向循环神经网络(recurrent neural network,RNN)的指纹识别模型.

但是关于指纹中特征组合和识别精度之间的相关性研究较少,文献[81]使用了在网站上收集的9 457个指纹样例,来计算不同特征组合的识别精度. 与电子前沿基金会的结果相比,在Windows,Mac,iOS,Android 系统上的测试,分别实现了1.006%, 3.894%,7.456%,3.840%的识别精度提升.

2.5 追踪分析讨论

存储型追踪技术可以服务于所有范围的追踪,关联算法需要定向依据追踪技术的不同进行算法的改进和升级. 按照追踪的范围,发现跨设备追踪和跨浏览器追踪所使用的特征均可应用于单浏览器追踪.跨浏览器追踪层面较多使用设备硬件等稳定且不易变化的特征,跨设备追踪本身的特殊性无法使用稳定的设备特征进行关联,但具有较多用户个人特色的历史记录、交互性特征可作为对同一用户不同设备进行分析和关联的重要特征.

一些研究学者对现有的指纹追踪进行检测[82-84],进行了大规模分析[85],评估其在全球范围内的使用情况,当前某些指纹追踪技术应用较为广泛,但是在实际生活中,较多的网站厂商使用一种或多种指纹追踪技术,隐秘地进行大数据杀熟、价格歧视[86]等操作. 且指纹可能被攻击者恶意利用,基于指纹的某些特征获取技术实施攻击和漏洞利用,窃取用户敏感信息. 这在一定程度上为用户造成了极大的隐私安全风险.

3 Web 追踪防御技术

Web 追踪防御技术是用户隐私保护大趋势下的必然发展方向. 传统的用户自我保护措施主要是禁用Cookie,设置DNT 选项,使用虚拟专用网络(virtual private network,VPN)或HTTP 代理、隐身浏览模式、隐私保护类扩展等方式来阻止广告追踪. 但这些方式依然无法阻挡指纹中多种多样的特征获取和追踪.近些年的Web 追踪防御技术大多集中在与指纹型追踪的对抗方面,本文按照防御技术的形态对当前研究进行了分类,并对使用的抵抗手段进行对比.

3.1 扩展防御

基于浏览器的扩展中,广告拦截器和内容拦截器比跟踪器拦截器的使用更广泛[87]. 且使用安装扩展形式的防御技术,能够在不影响用户整体使用习惯和环境的前提下,增加对Web 追踪的防御能力.

早期的追踪防御技术大多着眼于隐藏和修改敏感信息,即通过干扰真实信息的方式来避免追踪. 例如TrackMeOrNot[88]扩展提供了与供应商共享足迹的选择权,依据用户指定的隐私要求有选择地向供应商披露自身活动. Torres 等人[89]开发了一个原型工具FP-Block,在允许常规追踪的前提下,对抗基于跨域指纹的跟踪,确保任何追踪者在每个站点上都会看到用户不同且不相关的指纹,使指纹追踪无法再在网络上对用户进行持续性跟踪. Al-Fannah 等人[90]发现大约有69%的网站可能涉及第一方或第三方浏览器指纹识别,且第三方浏览器指纹识别占据了很大比例,因此设计了FingerprintAlert 来检测(可选)并阻止所访问网站的指纹尝试.

针对扩展信息泄露问题上,Latex Gloves[26]基于Web 代理在网页和扩展之间进行控制,使用白名单的方式精细化地设置允许将哪些扩展程序加载到页面中,以应对使用WAR 探测和ID 枚举进行扩展识别. 但白名单的获取目前没有官方渠道,需通过用户自行判断设置. Starov 等人[91]设计并开发了浏览器扩展程序BrowsingFog,通过不断评估用户的浏览习惯并模拟对随机类别网站网页的访问,从而将用户的真正兴趣隐藏在不相关信息的“雾化”中. 这是一种假设用户存在1 个或多个浏览数据泄露扩展的情况下保护用户隐私的方法.

Canvas Blocker[92]是防止Canvas 指纹的Firefox扩展,通过更改使用Canvas 2d, WebGL, Audio, Screen等API 获取信息的值,欺骗追踪者对真实信息的获取. 除此之外,还使用了黑白名单机制对网站追踪进行允许和拦截. Canvas Deceiver[93]也是抵抗Canvas 指纹的浏览器扩展,在网站发出请求调用画布指纹识别JavaScript 文件时,拦截请求并提供脚本的修改版本,修改版本的脚本行为方式与原始版本相同,但使用了一个持久的、预先确定的字符串欺骗使用Canvas指纹的追踪者.

Leiva 等人[94]提出了一种对抗性噪声方法,减轻利用鼠标光标大规模捕获用户行为数据,来跟踪预测人口统计变量的用户分析技术,并发布了数据和实现对抗性方法的Web 浏览器扩展.

3.2 浏览器内嵌防御

现有防御技术存在修改现有浏览器,通过在浏览器中内嵌防御机制提升浏览器本身的防护能力的方式,提供更深层且更加全面的防护效果,我们称之为“浏览器内嵌防御”. 内嵌防御着眼于缓解或拦截特征信息的获取渠道,或防止指纹被关联,破坏持续追踪.

TrackingFree[95]是第1 个反跟踪缓解唯一标识符的浏览器. 其没有禁用唯一标识符,而是将它们隔离到不同的浏览器主体中,使得标识符在不同网站之间不是唯一的,从根本上切断第三方Web 跟踪的跟踪链. Laperdrix 等人[96]开发了一个名为Blink 的应用程序原型,探索了软件组件本身的多样性,利用虚拟化和模块化体系结构在多个级别自动组装和重新配置软件组件,修改平台指纹中展示的指纹,实现针对浏览器的移动目标防御指纹追踪. 经过在数千个平台中的测试和验证,Blink 可使用户展示不同的指纹,甚至欺骗商业性的指纹脚本. Baumann 等人[97]演示的防指纹策略可在不停用Flash 指纹的情况下对其进行保护,并提供稳健且不易检测的反画布指纹(anti-canvas fingerprinting),在不使浏览器失去可用性的前提下,使用大量的真实信息来隐藏系统和浏览器属性. Yu 等人[98]提出了一种基于k匿名(k-anonymity)方法的新技术,识别有可能唯一地标识单个用户的数据元素,并将其从请求中删除. 通过使用Cliqz 浏览器和Cliqz 扩展程序进行大规模在线跟踪研究,发现其中所访问页面的95%包含对潜在跟踪者的第三方请求,而78%试图传输不安全的数据,单个追踪最多可以达到德国所有页面访问的42%. 随后研究团队发布了对跟踪请求中用户标识符的算法检测[99],使用了2 周内来自20 万德国用户,涵盖了超过350 000个不同站点的2 100 万次页面访问,结果彰显出了不同地区之间的追踪差异性,以及追踪厂商在不同地区市场上的差异. 同时也证明了谷歌和Facebook 无处不在.

Starov 等人[100]将完全不需要扩展功能的页面修改称为扩展膨胀. 经过分析来自Google Chrome 商店的58 034 个扩展,发现有5.7%的扩展膨胀是不必要的,且这些扩展中的61%是唯一的,可以被滥用进行指纹识别. 为了保护用户免受由于膨胀引起的不必要的扩展指纹侵害,Starov 直接修改Chromium,设计和实现了一个浏览器内的机制,为所有网站中的扩展提供粗粒度的访问控制. 该机制使用Chrome 内置的企业策略特性,不仅可以保护用户不被指纹识别,还可以防止恶意扩展程序从敏感网站窃取用户数据.

FPGuard[101]是一种运行时指纹检测和预防方法,包含检测和预防2 个阶段. 首先通过9 种度量标准来检测网站中与指纹相关的活动,计算可疑分数,如果该分数超过特定阈值,将网页标记为指纹识别器,并将网站URL 以及对应的度量标准存储到黑名单数据库中. 然后使用包含4 个核心引擎(objectRand,plugin-Rand,CanvasRand,fontRand)的随机化技术,对属性值进行随机化修改. 例如objectRand 引擎在运行时生成随机对象实现对象属性随机化,pluginRand 引擎将不存在的虚拟Plugin 和MimeType 对象添加到浏览器的当前插件和mimeTypes 列表中,以更改列表的顺序. FPGuard 结合了随机化和过滤技术,在用户每次访问网页时更改指纹,这种方法可以有效地识别和缓解与指纹相关的活动,并将正常网页与异常的含有指纹追踪的网页区分开.

破坏指纹的可链接性可以防止指纹的关联,即阻止多次访问的指纹链接同一指纹的能力,破坏指纹的稳定性后,追踪器也难以跨浏览会话关联指纹.基于此Nikiforakis 等人[102]提出了利用随机化破坏可链接性来消除无状态跟踪的PriVaricator. 通过评估几个系列的随机函数来寻找可以在指纹预防和破坏现有站点之间达到最佳平衡的函数,进而集中对字体和插件相关的属性进行随机化. 在没有明显开销的情况下,可有效防止指纹的追踪,且对Alexa 前1 000个站点的内容造成的损害也最小.

Laperdrix 等人[103]提出了基于Firefox 的修改版FPRandom,通过“破坏”随时间推移的指纹稳定性减轻指纹追踪的风险. FPRandom 在Firefox 浏览器功能的计算中增加了随机性,为每个浏览会话提供略有不同的结果,其主要针对Canvas 指纹、Audio 指纹、通过JavaScript 属性顺序对浏览器进行追踪的指纹.主要缓解方法有:1)在CanvasRendering Context2D 类的ParseColor 函数内部引入随机性,在SetFont 函数中将脚本设置的字体更改为操作系统中的字体;2)在AudioContext 模块的AudioNodeEngine 的AudioBuffers的核心中引入微小的噪声,使指纹脚本产生不同的Hash 值;3)修改Firefox 的jsiter 类,激活浏览器中的特殊标志“JS MORE DETERMINISTIC”,通过在每次启动浏览器时生成唯一的枚举顺序来缓解指纹追踪.

3.3 防御框架、工具或机制

立足于用户的设备和浏览器的差异性,除重写指纹值外[104],一些研究学者设计了一些更高层次、更重型的防御技术,例如构建防御框架、进行属性重组和选择的工具或者一些深层的防御机制,来有效地防御指纹追踪.

基于WebGL 指纹识别中的渲染差异是由浮点操作引起的,因此Wu 等人[105]提出了一种称为UNIGL的新型系统. UNIGL 重新定义了所有浮点操作,显式 地用OpenGL 着色语言(OpenGL shading language,GLSL)程序编写或由WebGL 隐式调用这些浮点操作,实现了重写GLSL 程序并在现有WebGL 功能的支持下制作统一的WebGL 渲染过程,来减轻指纹识别因素的影响. 经过众包测试评估表明,UNIGL 可以通过合理的帧率(frames per second,FPS)防止基于WebGL 的最新指纹.

Jueckstock 等人[106]编写1 个少于600 行的补丁,完成了一个托管在Chrome 浏览器的JavaScript 引擎(V8)内部的动态分析框架VisibleV8. VisibleV8 保存了网站使用JavaScript 的所有数据,并为网站创建“行为配置文件”,研究人员可使用该配置文件以及所有支持数据来识别网站中使用JavaScript 破坏Web 浏览器和用户信息的行为. VisibleV8 隐藏在JavaScript本身的引擎中,其性能优于同等内嵌式的安装模式,并且拦截了内嵌安装无法阻止的访问. 这种全面的覆盖模式可以隔离和识别使用JavaScript 代码检测46 个JavaScript 命名空间和浏览器平台. 在补丁中只有67 行修改了V8 的现有行为,因此VisibleV8 是非常轻量且易于维护的.

FPSelect[107]是一个属性选择框架,允许验证者调整指纹探针以进行Web 身份验证,这种方法使用指纹的成本较低,并且达到了针对字典攻击的最低安全级别. 其根本是将问题转化为搜索满足安全要求并最小化可用性成本的属性集. 通过对其安全性和可用性进行比较,FPSelect 生成的指纹属性集大小减小了97 倍,收集指纹的速度提高了将近3 361 倍,而2 次观测之间的属性变化平均减少达7.2 倍.

随后Andriamilanto 等人[108]开发了一种属性选择工具BrFAST. 它搭载了FPSelect 算法,从数百个可用属性中选择要实施的属性,根据安全性和可用性之间的权衡来严格选择浏览器指纹属性. BrFAST 还可以扩展为使用其他参数、其他属性选择方法,其他安全性和可用性度量或其他指纹数据集,有助于在搜索要使用的最佳属性时可视化对可能性的探索,比较属性集的属性以及比较几种属性选择方法.

当前研究针对跨设备的防御较少,2018 年,Solomos 等人[109]设计了一种通过模拟最终用户的真实浏览活动来触发CDT 的方法,然后利用先进的机器学习工具对其进行检测和测量. 随后Solomos 等人[110]设计构建了一个CDT 测量框架——TALON,基于模拟用户在不同设备上的真实浏览活动来触发和检测跨设备定向广告,检测CDT 并测量影响其性能的因素. 多项关键实验证明,该框架能够检测和测量平均 ROC(receiver operating characteristic)曲线下的面积(area under curve,AUC)得分为0.78~0.96 的CDT,还能够提供有关 CDT 实体行为和对用户隐私影响的重要见解. TALON 能够成为隐私研究人员、政策制定者、用户的重要工具,来提高广告生态系统使用的跟踪实践的意识和透明度.

3.4 防御对策或环境

指纹型追踪在用户正常网站会话中以静默方式获取属性的组合来识别浏览器,从而确定该浏览器的用户. 与之前的在指纹信息获取后进行阻止或欺骗的防御方式不同,构建一种防御机制或者用户使用环境,能够在浏览器特征被获取的层面进行信息的统一化或者随机化,即从信息产生的源头进行防御.

CloakX[111]是一个基于客户端的防指纹对策. 通过在客户端重写扩展名且以与扩展名无关的方式运行,使客户端信息多样化. 可以防止使用锚定标记(由任何网页均可直接访问的工件组成的指纹)进行扩展检测,并降低使用结构指纹(根据扩展程序行为构建的指纹)进行扩展检测的准确性. 经过大规模自动化分析和深入的手动测试,评估CloakX 在18 937个扩展名上的功效以及启用CloakX 的扩展的性能,证明了CloakX 原型可以成功处理大多数浏览器扩展.

Gómez-Boix 等人[112]提出一种缓解指纹追踪对浏览器配置及其运行环境进行信息收集的方法. 先使用算法识别易于共享相同或相似指纹的设备,并为其提供新的非唯一指纹. 然后在虚拟化的docker容器中,使用该指纹组装和运行Web 浏览器,最终使得同一个集群的所有设备均运行使用同一个指纹的Web 浏览器. 通过为用户提供一个通用的共享指纹的配置,最大程度地减少设备的可识别性和Web 浏览器配置中的更改次数.

Web 追踪防御技术的飞速发展是在信息爆炸式发展、用户隐私意识增强的社会条件下的必然发展趋势. 如表5 所示,不同类型的防御方式也各自存在其自身的局限性. 例如用户对不同防御形态的接受度、防御实现技术对Web 生态造成的影响、可能存在的对用户体验度的影响等. Web 追踪和防御是相辅相成的技术,如何实现一个平衡,也是需要面对和解决的问题.

4 面临的挑战与展望

Web 追踪中指纹追踪技术的多样化在一定程度上满足了Web 应用厂商的需求,但用户对于安全隐私的诉求也极大推动着浏览器指纹防御技术的快速发展. 本文从Web 追踪和防御技术2 方面分别进行剖析,分析当前Web 追踪的现状,以及面临的挑战与未来可能的发展方向.

4.1 追踪技术分析

针对使用浏览器特征的指纹追踪研究(见第2 节)中,包含具有较强用户特点的历史记录、扩展等类型的特征,以及依赖硬件属性和硬件功性能的较为稳定的设备特征. 但多数的指纹追踪结合使用多种不同维度的特征来提高指纹的唯一性[115].

1) 追踪唯一性讨论

Eckersley 等人[1]在2 周内收集了含有8 个特征的470 161 个指纹,其中83.6%的指纹是唯一的,且在开启了Flash 和Java 的情况下,唯一性能够达到94.2%. Laperdrix 等人[46]使用AmIUnique 网站在一年中收集了包含17 个特征的118 934 条指纹,得出89.4%的指纹是唯一的,并论证了Canvas 指纹的稳定性. Gómez-Boix 等人[67]在法国排名前15 的一个商业网站中收集了1 816 776 个普通用户的电脑端的浏览器指纹,经过评估得出,数据集中只有35.7%的唯一指纹,远低于过去报告的百分比.

Eckersley[1]和AmIUnique 这2 项大规模的数据统计,均是在通知用户了解使用指纹追踪的前提下进行收集的,其指纹的用户来源对在线隐私了解较多,相较于普通用户的操作更为谨慎,而文献[67]的指纹来源为网站中的普通用户. 通过数据对比分析,用于追踪的网站、使用的特征、地区等差异可能对数据的影响较小,但指纹收集的目标人群的差异可能会导致指纹唯一识别的有效性发生较大变化. 虽然指纹特征的信息熵能够识别足够多的用户,但在实际应用场景中,普通用户群体中指纹的唯一性远比对隐私敏感的用户低.

2) 追踪持久性讨论

虽然指纹经常变化,但依然可以在一段时间内跟踪相当一部分浏览器[116],指纹自身的稳定性是能够实现持久追踪的基本要素,而关联算法是能够实现持久追踪的关键因素. 不易变化的硬件特征信息能够有效地为指纹添加稳定性,并且可以在关联算法中作为相似性评估的重要依据. 当前的指纹追踪技术中,仅有少量的研究对追踪持久性[117]进行讨论,在指纹关联分析方面的研究较为欠缺.

部分研究学者着重于从跨浏览器和跨设备的角度实现指纹追踪,增强用户追踪的持久性. 确定性的跨设备追踪,较多依赖于用户的登录信息,因此能够具备较强的稳定性和关联性;而现有的概率性跨设备追踪的分析较多依赖于用户历史记录等不稳定的特征,用于关联分析的普适性较低,因此概率性的跨设备追踪在结合Cookie 类存储标识的前提下会更加有效和稳定.

Table 5 The Forms and Used Resistance Means of Defense Technology表5 防御技术的形态与其使用的抵抗手段

Web 追踪防御技术可能会使浏览器更容易被识别[118]. 发现指纹中可能被修改的特征,将其还原成真实的特征值,加强有效的定位和追踪也是未来可能的研究方向. 例如测试套件FP-Scanner[119],能够探索浏览器中指纹的不一致性,检测潜在的更改,揭示改变的指纹属性的原始值. 如果这一结果可以被指纹识别技术利用,就能够更准确地定位使用防御技术的浏览器.

3) 挑战与展望

通过大规模的数据研究分析,可以得出指纹追踪技术的唯一性与其数据源有极强的关联关系,Web追踪领域需要一个或多个较大的指纹数据集,用于分析指纹追踪的有效性,以及关联分析研究. 在指纹追踪过程中,需要在保证指纹唯一性的同时对特征进行评估和择优选取,避免收集过多特征对数据传输和存储造成的压力.

针对指纹追踪的特征进行研究,尤其是含有较多用户习惯和交互式的特征,可为不同的用户构建稳定且全面的用户画像,或辅助Web 安全领域针对恶意数据进行分析,以及对恶意行为的检测和追踪溯源等. 比如双重身份认证[120-121]和账户安全检测[122-123]、检测爬虫或者Web bot[124-125]、党派分析[126]等. 或者辅助安全研究,从访问记录中提取危险路径分析恶意URL 的Web 访问路径[127],将指纹应用到对攻击者的诱捕和欺骗中,实现主动的追踪溯源[128],协助网络攻击取证[129-130].

4.2 防御技术分析

尽管当前已经出现各种安装形态的、各种不同功能的指纹防御技术,但依然存在各自的劣势. 洋葱浏览器(Tor)[131]当前在匿名网络中被广泛使用,用以从多个方面防御各种不同类型的追踪技术,保护用户的隐私. 如表6 所示,本文针对不同指纹防御所适用的技术进行了归类分析和概括,并结合Tor 浏览器进行对比分析,指出了当前防御技术的挑战和方向.

Table 6 The Defensive Coverage that Defensive Technology Possessed to Tracking Technology表6 防御技术对追踪技术的防御覆盖度

1) 防御形态分析

扩展形态的防御较为轻量级,安装和使用较为便捷,多数扩展的功能集中于抵御某项单一的指纹追踪方式,例如防御当前应用较为广泛的Canvas 指纹、历史记录等. 但这种类型的防御机制无法抵御使用多种特征追踪的指纹模式,即便某个特征值不一致或者缺失,网站追踪者仍可通过多重追踪技术,并使用相关算法将属于同一用户的指纹关联起来.

浏览器内嵌防御利用随机化、添加噪音、函数重写等方式修改内嵌的函数实现机制,防止追踪脚本获取到真正的属性特征值. 尽管为特定的单个属性或属性集提供人为或随机值可以至少部分成功地干扰指纹识别的操作,但这种方法也可能产生不利影响[132]. 这种形式需要用户以更换浏览器为代价,达到对单个或多个特征的追踪技术的防御,虽然在防御性能和效果上优于外在的扩展和工具框架等策略,但防御型浏览器如未经商业化加持的情况下,在推广和应用上面临着巨大的困难:一方面是Tor 浏览器防御能力较强,并占据着绝大部分的市场;另一方面,用户对“被改装”过的浏览器接受度可能不够高.

工具和框架形态的防御,从独立于浏览器之外的角度出发,搜索配置选择进行展示的最佳属性,混淆追踪者获取的信息. 利用属性重组选择特征值的防御技术,一定会以消耗时间和减弱性能为代价,且随着指纹特征的增多,会导致浏览器中出现较多的异常组合[133].

构建防御对策或环境是从技术源头缓解指纹追踪的方式. 例如通过使用同质化环境可以从指纹产生的源头消除其唯一性,重写扩展名和更改扩展运行方式可以有效抵抗使用扩展ID 和WAR 对扩展的枚举. 但构建同质化环境和对扩展进行处理和运行的方式偏向于理想的防御方式,无法广泛地应用于实践.

2) 防御技术的对比分析

随机化和引入噪音是最常见且易于实现的防御技术,能够通过欺骗或者扰乱信息的方式,削弱实际设备和浏览器的独特性和唯一性,降低被追踪的可能. 属性重组、重写指纹值等技术的本质也是通过虚假或冗余的信息降低用户的可识别性. 这些技术形式都在追踪系统中生产了大量的虚假无效信息,消耗和占用服务资源. 这类数据可能会影响未来的Web追踪生态,对未来的技术发展造成不利的影响.

通过监控指纹追踪的属性获取情况,了解和控制可能被泄露或用来追踪的信息的输出和运行方式具有较好的实践性. 例如控制既定对象的枚举顺序、浏览器扩展在不同网站中的运行方式、可能被泄露的指纹信息等. 但无法做到全面和综合性的防御,对新追踪方式的自适应性不强.

通过一定的手段,对不同的访问网站实现信息隔离,使多个不同的追踪网站获取到的指纹信息各不相同. 这一方案能够较好地组织不同网站之间的追踪信息共享,但对同一网站的持续性追踪具有较低的防御力.

用户介入和参与的防御形式,虽然将选择权交到了用户手中,但绝大部分的网络用户没有较多的技术理解和专业知识,无法做出较为有利的判断. 且从长期来看,用户参与过多会降低良好的体验度.

3) 挑战与展望

当前有诸如欧盟相关法律为加强隐私做出了努力,例如第三方跨设备跟踪的公司将被要求在其隐私政策中明确数据会被跨设备使用,但违反行为还是很普遍且公然的[134],因此依然需要更有效的工具和框架来进行合规性监视和执行. Luangmaneerote 等人[133]通过将所有的指纹防御技术应用到浏览器中,访问开发的混合指纹网站,了解指纹抵抗效率以及指纹防御对用户或网站造成的影响,结果表明,如今所有的防御对策,都无法阻止各种指纹追踪[135],Tor依然是当下最有效的指纹防御技术[107].

本文依据当前防御技术的能力,对能够抵御的追踪技术进行了整理和总结,如表6 所示. 现有的防御技术大多能够实现对浏览器基本特征信息获取和主流指纹追踪技术的防御. 但是在缓解系统层面的缓存追踪、TSL 会话追踪,以及硬件追踪方面表现较差. 最后我们从表6 中可以得出与文献[135]同样的结果:当前的追踪策略均无法完整且有效地对指纹信息进行防御.

基于以上分析可以得出,对追踪防御的构建和实施,必须了解指纹追踪的技术原理,通过阻断其获取信息的渠道和可能存在的操作,或者使用信息干扰和隔离的方式扰乱攻击者对信息源的唯一确认.防御技术的形态和最终形式也可能为指纹追踪提供新的特征识别线索. 当前而言,实现指纹防御的最佳状态,就像在 “严格”的Tor 浏览器模式和正常的浏览器功能之间取一个中和的方法,在不影响用户浏览体验的前提下,尽可能地将指纹信息一致化,且在每次启动浏览器或会话的时候,将IP 等特殊的特征随机化.

5 总结

在Web 应用厂商对大规模用户群体的追踪定位需求,以及用户对隐私敏感度提升的双向作用下,Web 的追踪防御技术也得到了迅猛发展. 本文首先对Web 追踪中不同的追踪技术和发展形势进行了概述,其次着重针对2010—2021 年间Web 追踪技术和防御技术进行了研究和概述. 以追踪的范围划分追踪层次,介绍了特征的特点和获取方式,与此同时描述了指纹关联技术,并论述了特征与追踪范围的关系. 随后我们列出了指纹防御技术的研究热点,指出了当前防御技术的4 种不同形态. 针对Web 追踪技术,本文从唯一性和持续性2 方面对追踪技术进行讨论,从实现形态和技术特点对追踪防御技术进行分析,基于对浏览器指纹追踪对抗技术的了解,我们针对指纹追踪和防御2 个方面提出了面临的挑战与未来的展望.

作者贡献声明:王晓茜负责论文的撰写;刘奇旭梳理论文框架和指导论文的撰写;刘潮歌、张方娇和刘心宇收集和整理论文文献;崔翔负责论文的整体规划。

猜你喜欢
浏览器指纹特征
像侦探一样提取指纹
为什么每个人的指纹都不一样
如何表达“特征”
反浏览器指纹追踪
不忠诚的四个特征
抓住特征巧观察
基于自适应稀疏变换的指纹图像压缩
环球浏览器
可疑的指纹
线性代数的应用特征