Hacker News 中文摘要

RSS订阅

浏览器指纹正取代 Cookie,成为新一代追踪手段 -- Fingerprints are the new cookies

刷新页面、清除 Cookie、连接 VPN,你仍是那个被算出的昵称;换设备会得到另一个同样稳定的标识,无痕模式(Incognito)里可能不同,但在同一设备上始终不变。你访问的多数网站靠广告获利,并间接运行我的脚本,让我认出你、决定你看到的广告;若你在站内注册,我还能按隐私政策买走你的姓名、活动和与 AI 的对话。很快,我了解你会胜过你的朋友,甚至胜过你自己。

正文

从现在起,我会这样称呼你:

…

正在计算…

试着刷新页面。清除 Cookie。连接 VPN。

你依然是那个 …。

现在在手机或其他设备上打开,你的昵称会不同,但同样稳定一致。

在无痕模式下会不一样吗?很好。但始终都一样?坏消息。

想象一下:

你访问的大多数网站靠展示广告赚钱,并间接运行我的脚本,这让我知道你是那个 …。我可以用它来决定你看到什么广告。但更重要的是,如果你在那个网站注册了账户,我就能提出购买你的数据——凡是他们隐私政策允许分享的:你的姓名、活动、与 AI 的对话……

很快,我比你朋友更了解你——也许比你自己还了解你。

“那又怎样?”你会说。

“我没什么可隐瞒的。而且我更喜欢广告相关一点……有时它们正好给我看我需要的东西!反正数据都是匿名的……”

看,问题的关键根本不在你。也不再真的和广告有关了。没人在乎你。如果警察或你的政府刚好在乎,我也很乐意赚他们的钱。

我看着所有这些数据,看到的不是人。我看到的是模式。模式中涌现出的模式。一幅经济、社会和人类心理的鲜活的 digital fractal(数字分形)状态。21 世纪的水晶球,而它是硅做的!这才是产品。

而出价最高者得!

那把你当什么了?齿轮?牛?志愿者?

还记得关于第三方 Cookie 的那场大风波吗?它闹得很大,以至于欧盟都已经推出了它最伟大的发明之一——同意横幅(consent banners)。

如果欧盟出手比科技公司还快,那只能说明科技公司在消极怠工。而其中一家科技公司恰好占据着三分之二的浏览器市场。

他们打的什么算盘?

让我们为 Google 鼓掌——地球上最大的广告公司!

ACT I. 压力 - “隐私对我们至关重要,我们做的一切都以此为准。”

那是 2019 年,Cookie 还正热。它成了负面公关,而 Safari 和 Firefox 已经屏蔽了它们。

一年后,Google 承诺:我们将消灭 Cookie!!并建立一个新的、隐私优先的王朝。

ACT II. 转移注意力 - “我们不会弃用第三方 Cookie,而是会推出一种新体验”

5 年后:人们 now 关注的烦恼远比 Cookie 大得多,而 Google 开发的解决方案(Privacy Sandbox)有点烂,还引发了反垄断担忧,所以没人用它们。

“你知道吗,我们还是保留 Cookie 吧。不过我们会隐藏你的 IP 地址!”( 但仅在隐身模式且登录状态下)(** 最后他们连这个都没做到)

ACT III. 加速 - 你现在可以在我们的广告产品中使用设备指纹识别了

现在有更好的方法来知道谁是谁了!

指纹识别是如何工作的?

很好,让我们好好技术宅(nerd out)一下。

你访问一个网站。浏览器向服务器发送请求,服务器返回代码让浏览器运行。

请求本身已经暴露了你的信息;你用什么浏览器、它的语言、运行它的操作系统,以及你的 IP 地址(服务器需要它来给你返回响应)。这通常暴露了你的位置。

然后代码运行。

看,我们在让浏览变得安全方面取得了很多文明进步。以前仅仅访问网站就会中毒的日子早已一去不返。问题是,安全的定义因人而异。广泛的共识止于隔离:一个网站的代码不能看到其他网站存储的数据,未经许可也不能看到你的文件或其他应用程序。Chrome 和 Edge 到此为止。然后是 Safari(尤其是 iOS/macOS 26+)和 Firefox 将这一定义扩展到了隐私,但它们仍然不能完全保护你免受指纹识别。Brave 和 Tor 是领先的隐私优先浏览器,后起之秀还有 Mullvad Browser(在我看来,Mullvad 是最好的 VPN 提供商之一)。

代码在你的硬件上运行,而硬件可以通过测量产生一致且独特的读数。对此真的没什么办法,所以只有两种成熟的解决方案:

  1. 在这里那里注入一点噪音。这叫 farbling(混淆),Brave 就是这么做的,让你的指纹不一致。
  2. 让一切看起来永远都一样,这样就无法区分浏览器用户。Tor 和 Mullvad 采用这种方法。

好的,我们来创建一个指纹

所以构成你指纹的数据有两个来源;网络请求和代码环境。

当你看网络时,数据通常是脆弱或通用的:

  • IP 地址;在“理想情况”下,一个人总是使用同一个 IP 地址,这可能是你唯一需要的数据。但通常人们在移动网络上大量浏览,和别人共享 WiFi,使用 VPN,或者家庭网络的 IP 地址被 ISP 轮换。因此它很脆弱。
  • 像 User-Agent 或 Accept-Language 这样的请求头;暴露你的浏览器、操作系统、版本和设置的语言。

当你可以在设备上执行代码时,你有办法测量它的硬件特性(无需任何权限提示!),而且这些特性出奇地稳定:

  • GPU;行为、供应商、驱动
  • CPU;行为、供应商、线程数
  • 内存大小
  • 显示数据;分辨率、像素比、刷新率
  • 音频处理
  • 设备型号

而在软件层面;已安装的字体、扩展、系统信息……

数百万设备使用最新的 Chrome,有数百万台搭载 M4 芯片的 Mac,还有数百万法语浏览器。

但当你看运行着法语最新 Chrome 的 M4 设备时,这个数字就大幅下降。再加上硬件测量,它就低到实际上独一无二了。

指纹不需要真正全局唯一——它只需要在你的样本量中足够独特,能把人区分出来。

一个邮政编码(从 IP 推断)、一个出生日期(你在某个平台上泄露的)和性别(你到处都填)加起来,足以唯一识别超过 60% 的美国人。

你总是可以再添加一个变量来减少潜在候选者的范围。

信息熵

你玩过 Akinator 吗?你想一个角色,精灵问你大约二十个问题,然后它就知道了。这就是指纹识别的缩影,只不过是你的浏览器替你回答了这些问题。一旦你理解了信息熵,Akinator 的魔法就变成了一个简单的把戏。

让我们用那个游戏来简化:你通过问“我的角色是男人吗?”这样的问题来猜板子上的角色。如果我说“是”,而你板子上一半的角色是男人,你现在只考虑总候选者的一半。那么我们可以说我的回答给了你 log₂(100 / 50) = log₂(2) = 1 比特的信息,因为它把候选池砍半了。

你从一个回答中得到的比特数称为它的意外程度(surprisal):回答越罕见,它告诉你的越多。

  • 1/2 的人共有的特征值 1 比特(是男人),
  • 1/8 值 3 比特(有胡子),
  • 1/128 值 7 比特(有一只眼睛)。

意外程度量化回答的价值,而熵量化问题的价值。如果 128 人中有 1 人是独眼,那么问这个问题会有 127/128 的概率得到“否”。

| 回答 | 概率 | 意外程度 | 熵贡献 | | --- | --- | --- | --- | | 是 | 1/128 | log₂(128 / 1) = 7 比特 | 1/128 x 7 = ~0.055 | | 否 | 127/128 | log₂(128 / 127) = ~0.0113 比特 | 127/128 x 0.0113 = ~0.011 |

把每个可能回答的贡献加起来,这个问题本身的熵约为 0.066 比特——那是你从一个回答中平均获得的比特数。

当我们组合独立的特征时,我们只需把它们的比特数相加或把比率相乘,所以一个留有胡子且独眼的男人意味着 11 比特,即 1/2048。唉,正如 Thomas Bayes 会让你知道的那样,实践中从来没这么简单。胡子已经强烈暗示是男人,而男人可能更有可能独眼。这些特征并不独立,所以比特数并不能真正相加。

这种推理的一些有趣应用:

  • 在医学诊断中:一种已知影响 0.01% 人口的疾病,其 99% 准确度的检测呈阳性,结果出错的可能性是你真患病的 100 倍。你需要更多证据!
  • 在密码学中:由四个随机单词组成的密码和八个随机键盘字符一样强(但更容易记住!)

    xkcd 936

  • 在法医学中:在百万人口的城市中锁定一个人大约需要 20 比特。匹配 1/1000 人的目击者描述只提供 10 比特,仍然留下一千名可能的嫌疑人。

那我能做些什么呢?

测试你的浏览器:

如果你用 Chrome,你基本上就是额头上贴着身份证在走。

Safari 和 Firefox 提供某种程度的保护,但高级追踪者仍能识别你。

Brave、Tor 和 Mullvad Browser 是目前仅有的实现了高级反指纹保护的主流浏览器。

如果你不想换浏览器,我懂。我自己就是 Arc 的超级粉丝,不幸的是它已停止开发,永远不会有任何隐私功能。有些扩展比如 JShelter——它们通过拦截浏览器 API 调用来干扰指纹脚本。但它们也会搞坏一些网站。同样的问题也适用于 Firefox 的 Resist Fingerprinting 功能。

讽刺的真相是,隐私扩展让你更独特,因为用的人更少。所以聪明的追踪者可以检测到这一点,忽略被扩展干扰的信号,专注于那些没被干扰的。

没有任何扩展能像内置于浏览器的引擎级保护那样有效。所以如果你不想被追踪,就得彻底投入。

本页面使用的方法

我只是把你设备的一些测量结果做一个哈希。其中任何一个发生变化,哈希值就会不同。专业应用比这复杂得多,并且能在单个变量变化时保持识别链。

  1. OfflineAudioContext:通过压缩器渲染一段短音但不播放;结果中的微小浮点差异取决于浏览器的音频引擎和 CPU。
  2. WebGL:读取 GPU 的供应商和型号(不含版本号)、GPU 及其驱动支持的功能,以及渲染的一个小三角形的像素。
  3. canvas:用几种字体、emoji 和渐变绘制文本,然后读回像素;抗锯齿和字体渲染取决于你的操作系统、GPU 和字体。
  4. Intl:你的时区以及日期和数字设置;VPN 改变了你的 IP 位置,但改不了你的时区。
  5. navigator:你的 CPU 核心数、内存大小(仅 Chrome)和浏览器语言。
  6. crypto.subtle:用 SHA-256 哈希所有值,哈希值会为你的昵称挑选一个特征和一个动物。

评论

多数评论把浏览器指纹视为对隐私的可怕侵犯,并认为普通用户几乎找不到既好用又能真正防追踪的浏览器;分歧主要集中在:该谴责 Cookie 和追踪技术本身,还是广告商业模式与数据滥用,以及这种对“去标识化模式”的恐慌是否被夸大。

认为浏览器指纹是严重的隐私侵犯且防御不足

  • 评论者普遍觉得指纹把设备、浏览器和 TLS 等特征拼成稳定标识,技术虽酷但细思极恐;Tor Browser 能击败指纹,却缺少既好用又能防追踪的常规浏览器,常被推荐的 Brave 也因传言中的广告分成而被质疑是否值得信任(较多人)。 > 「指纹追踪对隐私真的很糟,而防御手段根本没跟上。」(@Cider9986)

认为 Cookie 本身无辜,问题在追踪与滥用

  • Cookie 只是给无状态的 HTTP 维持登录等状态的正常工具,真正惹祸的是用它做跨站追踪、滥用数据牟利的人;同意横幅和欧盟规则针对的一直是追踪本身,而不是 Cookie 技术,单纯登录 Cookie 不该被一刀切(较多人)。 > 「同意横幅从来不是关于 Cookie,而一直是关于追踪本身。」(@crote)

对去标识化“模式”的隐私焦虑不以为然

  • 有评论者承认能理解对专制政府的担忧,也能理解赌博成瘾者为何受广告困扰,但想不通为什么有人会害怕“去标识化的行为模式”——在他看来那既不直接指向个人,也不构成具体伤害(少数人)。 > 「我能理解对专制政府的担忧,也能理解赌博成瘾者为何受广告困扰,但这种关于去标识化模式的元层级隐私恐惧我完全不理解。」(@howunfortunate)

认为唯一有效办法是直接禁止第三方广告

  • 在猫鼠游戏里修修补补都被视为妥协,真正彻底的方案只有禁掉第三方广告;否则无论 Cookie、指纹还是 Privacy Sandbox,都只是换一种方式继续追踪(少数人)。 > 「只有一个办法:禁止第三方广告。其它一切都是行不通的妥协。」(@MiroslavPokorny)

有价值的补充

  • 指纹的唯一性取决于熵,不是设备天然唯一:在 iPhone 这类高度同质化的环境里,可被指纹识别的特征大多相同,很多人可能拿到同一个代号(@oofbey)。
  • 反指纹结果并不稳定:有人开 VPN、隐私窗口且不最大化窗口后,指纹代号从“温和猫头鹰”变成“好事巨嘴鸟”;也有人用 Firefox 配合 uBlock、CanvasBlocker 和 PiHole,做到每次刷新都不同(@MathMonkeyMan、@davidjade)。
  • 简单屏蔽可能适得其反:越把自己伪装成“不可指纹”或关掉常见特征,反而越显眼;更合理的方向也许是让浏览器对每次页面或资源请求都随机伪造指纹字段(@helterskelter2)。
  • 工程上有人避开 fingerprint.com,转而在 CDN 层用 JA3/JA4 做客户端识别(@1a527dd5)。
  • Privacy Sandbox 的因果被纠正:不是它因反垄断而没人用,而是移除第三方 Cookie 引发反垄断担忧,才促使 Google 去做替代方案(@charcircuit)。
  • 社区对猫鼠游戏已显疲惫,有人调侃下一步只能靠“把浏览器伪装得很慢”来躲指纹,或者干脆宣布所有广告非法(@iugtmkbdfil834)。