浏览器指纹识别基础
访问网站时,浏览器会使用各种信息来显示页面。
浏览器类型。 操作系统。 屏幕大小。 语言。 时区。 支持的字体。 扩展功能。 Canvas 和 WebGL 的绘制结果。
这些信息逐一来看都很小。 但是组合起来,就会成为该浏览器环境的特征。
使用这些特征来区分用户的思路,就是浏览器指纹识别(browser fingerprinting)。
本文整理浏览器指纹识别与匿名性有什么关系。
什么是指纹识别
浏览器指纹识别,是把浏览器和设备的特征组合起来,推测访问是否来自同一环境的方法。
它与网站把识别符保存到浏览器中的 等方法稍有不同。
Cookie 是通过重新发送已保存的值来用于识别。 另一方面,指纹识别把浏览器本身的可见方式作为材料。
| 项目 | Cookie | 指纹 |
|---|---|---|
| 主要材料 | 保存在浏览器中的值 | 浏览器和设备的特征 |
| 用户侧的可见方式 | 容易意识到删除或拦截 | 难以知道哪些东西被当作材料 |
| 易变性 | 删除 Cookie 后会改变 | 设置和环境相同则容易残留 |
| 对匿名性的影响 | 关联同一浏览器的再次访问 | 即使没有 Cookie,也显示同一环境的相似性 |
也就是说,只删除 Cookie 并不充分。 如果持续使用同一个浏览器环境,其他线索仍会留下。
哪些信息会成为材料
指纹识别的材料,是浏览器为了显示页面或运行功能而使用的信息。
| 信息 | 表示什么 | 匿名性上的注意点 |
|---|---|---|
| User-Agent | 浏览器、操作系统、版本等 | 成为使用环境的大致特征 |
| 屏幕大小 | 显示区域或设备类型 | 成为同一设备相似性的材料 |
| 语言设置 | 首选语言 | 成为地区或使用环境的线索 |
| 时区 | 设备的时间设置 | 与日常活动范围和活动时间关联 |
| 字体 | 可用字体 | 成为操作系统或安装环境的特征 |
| Canvas | 浏览器的绘制结果 | 成为设备、GPU、浏览器差异的材料 |
| WebGL | 3D 绘制相关信息 | 会出现 GPU 和驱动程序特征 |
| 扩展功能 | 添加的功能 | 少见的组合会显眼 |
并不是所有网站都会以同样方式收集这些信息。 但是,在启用 JavaScript 的页面上,可以获取许多浏览器侧的信息。
思考匿名性时,不仅要看“自己输入的信息”,也需要看“浏览器自动展示的信息”。
为什么与匿名性有关
在匿名性中,问题在于同一个人的行为会被关联起来。
例如,假设你先用家中网络浏览某个网站,然后使用 访问同一网站。 IP 地址变了。 也假设 Cookie 已经删除。
即便如此,如果浏览器特征几乎相同,仍会残留来自同一环境的相似性。
并不是只靠指纹识别就一定能识别个人。 但是,当它与 IP 地址、Cookie、登录状态、访问时间、发布内容组合起来时,就会成为关联的材料。
匿名性中可怕的并不是某一条信息。 而是小信息的累积。
自定义设置有时会显眼
为了提高匿名性,人们有时会想细致地自定义浏览器。
广告拦截。 防跟踪设置。 特殊字体设置。 大量扩展功能。 细致的 JavaScript 控制。
这些有时会有用。 但是,当设置组合变得少见时,反而会显眼。
在匿名性中,“增加看起来很强的设置”并不总是正确答案。 在某些场景下,让可见方式与许多其他用户相似会变得重要。
Browser 采用的就是这种思路。 它不是为每个用户增加显眼设置,而是尽量创建看起来相同的环境,使其不容易被指纹识别。
也就是说,在匿名性中,比起“增加很多防御”,“进入不显眼的群体”在某些场景下更重要。
少见的扩展功能组合、特殊字体、自定义屏幕大小、过于细致的拦截设置,都会成为只有本人具备的特征。 原本为了避免跟踪的设置,反而可能成为识别材料。
Tor Browser 与普通浏览器的区别
普通浏览器重视便利性和兼容性。 因此,从网站侧看,用户之间的差异容易显现。
Tor Browser 是重视匿名性的浏览器。 它不只是使用 Tor 网络,也具有统一浏览器可见方式的设计。
| 项目 | 普通浏览器 | Tor Browser |
|---|---|---|
| 主要目的 | 便利性、兼容性、速度 | 匿名性、抗跟踪、规避审查 |
| 通信路径 | 使用普通线路 | 使用 Tor 网络 |
| 浏览器的可见方式 | 用户之间容易出现差异 | 采用减少差异的设计 |
| 扩展功能 | 容易自由添加 | 添加后会成为显眼的原因 |
| 匿名性上的注意 | 容易与实名使用混在一起 | 破坏使用方式会削弱效果 |
如果把平时使用的扩展功能装进 Tor Browser,或者以自定义方式固定屏幕大小,或者登录实名账号,匿名性就会变弱。
浏览器环境中应该查看哪些点
思考浏览器指纹识别时,要确认以下几点。
- 匿名用和实名用是否没有重复使用同一个浏览器
- 是否没有安装同样的扩展功能
- 是否没有过度自定义浏览器设置
- 屏幕大小或语言设置是否没有与实名使用重叠
- 是否没有与 Cookie 或登录状态一起残留
- 使用 Tor Browser 时,是否没有破坏标准设置
这里重要的是,不要只看指纹。 浏览器特征会与 Cookie、IP、时间、账号、发布内容一起被关联。
指纹对策无法单独完成。
使用 Tor Browser 这类经过设计的环境时,基本原则是不要大幅破坏标准设置。 使用普通浏览器时,起点是不要混合实名使用和匿名使用,不要增加不必要的扩展功能,并确认登录状态。
可以确认可见方式的网站
如果只通过文字理解,浏览器指纹识别会显得抽象。 实际查看检测网站后,会更容易把握网站侧能看到浏览器环境中的哪些信息。
EFF Cover Your Tracks 是 EFF 的检测网站。它会访问外部网站,确认浏览器面对跟踪器和指纹时有多容易被识别。 确认时,浏览器信息会发送到 EFF 侧,因此在高风险环境或匿名用途的正式环境中,要谨慎考虑使用时机。结果并不是判断“是否完全安全”,但可以成为理解浏览器信息会变成识别材料的入口。
URL : https://coveryourtracks.eff.org/
BrowserLeaks Canvas 是一个以 Canvas 为中心,确认网站侧可见的部分浏览器环境的检测页面。 因为可以看到各个值,所以有助于学习扩展功能和设置变更会怎样改变浏览器的可见方式。
URL : https://browserleaks.com/canvas
这些网站是学习用的确认对象。 使用它们不是为了看一次结果就安心,而是为了理解“自己的浏览器展示的信息比想象中更多”。
总结
浏览器指纹识别,是把浏览器和设备的特征组合起来,推测访问是否来自同一环境的思路。
User-Agent、屏幕大小、语言、时区、字体、Canvas、WebGL、扩展功能等都会成为材料。
即使删除 Cookie,如果浏览器环境相同,也会残留像是同一用户的线索。 即使改变 IP 地址,如果浏览器特征没有改变,也会成为关联的材料。
在匿名性中,增加自定义设置并不总是正确答案。 在某些场景下,让可见方式与许多其他用户相似会变得重要。
浏览器指纹识别本身并不会单独决定匿名性的全部。 但是,当它与 IP、Cookie、登录状态、时间、发布内容组合起来时,会成为很强的线索。
相关工具
WhatIsMyIP
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
DNSLeakTest
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
BrowserLeaks WebRTC
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
BrowserLeaks Fingerprint
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
EFF Cover Your Tracks
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。