当前位置: 首页 > 科技观察

浅谈反浏览器指纹识别

时间:2023-03-21 00:49:07 科技观察

浏览器指纹识别是近五年兴起的一种互联网用户追踪手段。为了对抗浏览器指纹识别,反浏览器跟踪技术也在发展。一、反浏览器指纹跟踪技术概述浏览器指纹识别的原理是根据不同浏览平台所使用的硬件类型、操作系统、浏览器类型、浏览器配置,构造出唯一的浏览器指纹。这种指纹具有三个特点,可以用来追踪用户:1、指纹的确定性,碰撞率极低,至少可以从数千台设备中识别出某台设备;2、指纹获取容易,用户在浏览Web服务器时访问网页时很容易获取指纹。随着浏览器中更新和更强大的API的引入,指纹跟踪将变得更加容易;3、指纹的稳定性,用户第一次和第N次浏览网页生成的指纹是一样的。本文简要介绍反浏览器指纹识别技术。反浏览器指纹追踪只需要破解指纹追踪的以上三个特点:指纹的确定性。要使两个浏览平台生成完全相同的指纹,目前还没有找到有效的方法;易于获取指纹。可以使用浏览器的各种设置或插件来减慢跟踪[1],但这种方法可能会影响用户体验,例如无法使用cookies和JavaScript;指纹的稳定性。来自法国INRIA雷恩大学的研究员PierreLaprix博士提出了一种解决方案[2],它可以构建一个动态浏览平台,使用户每次浏览网页时都会产生不同的指纹。而Pierre通过两种方式打破了指纹的稳定性:a)利用虚拟化和模块化架构,在多层次自动组合和重新配置软件组件,随机生成浏览环境,生成随机指纹,从而混淆实际设备的指纹。作者开发了一个名为Blink[3]的原型系统;b)第二个是通过在指纹识别过程中引入足够多的噪音来破坏非常具体的指纹识别技术(Canvas、Audio、JavaScript引擎)的稳定性,使跟踪无法将新指纹绑定到旧指纹,从而无法跨多个会话进行跟踪。作者基于Firefox开发了FPRandom[4]。下面的文章将重点介绍Blink。2.Blink的工作原理每两个浏览平台都有或多或少的区别。跟踪器可以根据这种差异来定位和跟踪用户。因此,浏览平台的多样性是浏览器指纹追踪问题的根源,但同时也是解决浏览器指纹问题的一个途径。平台之间的许多差异为动态浏览平台提供了基础。Blink利用虚拟化和模块化架构自动组合和重新配置浏览平台的组件,从而使每次运行产生不同的指纹,追踪器无法轻易找到彼此之间的联系[5]。图1显示了影响浏览平台指纹的元素:配置参数,如语言、屏幕分辨率;软件组件,例如浏览器、操作系统;硬件组件,如显卡、麦克风;跨层的动态属性只能在运行时收集,比如canvas、AudioContext。一旦用户开始浏览网页,这些数据将用于创建指纹。这通常称为浏览器指纹识别。研究人员发现,影响指纹的最重要因素是字体、插件和用户代理。因此,选择着重重新配置以下因素可以达到更改指纹的目的:字体、插件、浏览器和操作系统。Blink通过在运行时自动重新配置浏览平台的各个组件来实现动态目标防御的能力。动态目标防御要求浏览平台采用模块化架构,实现各个组件的自动随机组装和配置,而不是提前构建。Blink属于动态平台,其特点是:拼装的平台始终显示与真实浏览器相同的指纹,不是假的,因为平台是真实的;自动选择正确的配置,即由兼容的组件组成并在正确的平台上运行;每次重新配置都会导致指纹发生变化。3.Blink实现Blink将多个不同层次的组件组装起来形成如图2所示的浏览平台。Blink之所以使用Docker作为其背后的底层技术,是因为Docker能够在运行时快速组装组件,同时将宿主系统与平台隔离开来。Blink组装的组件有:操作系统:得益于DockerHub的官方镜像,许多操作系统可以开箱即用。浏览器:直接从网络或官方软件包存储库下载,许多浏览器用于生成多个指纹。字体和插件:Pierre创建了一个多样化的字体和插件库,Blink在创建浏览平台时可以从中进行选择。当前版本的Blink包含2700多种字体和30多个插件。只需几秒钟,Blink就会生成一个全新的指纹,用户可以像使用原生浏览器一样使用它。为了避免生成明显不同于普通网页客户端的指纹,Pierre从https://amiunique.org收集指纹数据,并对Blink的配置文件进行优化,使Blink生成的指纹更接近于普通浏览器生成的指纹。结果表明,Blink生成的指纹足以区分真假。Pierre运行了Blink数千次,他们都有不同的指纹,商业指纹解决方案无法知道这些指纹实际上来自单个用户[6]。4.总结Blink生成随机浏览环境,每次会话生成不同的指纹,破坏了指纹的稳定性,减缓了指纹追踪。Blink还实现了其他反跟踪方法,例如:为了防止cookie跟踪,当用户完成浏览时,所有生成的临时数据将被删除。为了防止IP跟踪,Blink与Tor网络完全兼容。只需单击一个简单的按钮,所有使用Blink的互联网流量都可以通过Tor网络重定向。这些新方法允许用户在使用Blink时有效地逃避跟踪。