最近,我读了一篇关于设备指纹追踪的文章,文中认为我们已经进入了后追踪 Cookie 时代。Cookie 已不再需要,因为每台浏览器都能以 100% 的准确率被提取指纹。文章还对此做了实测:
从现在起,我就叫你“温柔虎鲸(Gentle Orca)”。试着刷新页面。清除 Cookie。连上 VPN。你依然是那个Gentle Orca。现在用手机或其他设备打开,你的昵称会不同,但同样稳定。无痕模式下会不同吗?那还好。但它始终不变?那就是坏消息了。
从现在起,我就叫你 Gentle Orca。
试着刷新页面。清除 Cookie。连上 VPN。
你依然是那个Gentle Orca。
现在用手机或其他设备打开,你的昵称会不同,但同样稳定。
无痕模式下会不同吗?那还好。但它始终不变?那就是坏消息了。
而事实的确如此。
EFF 有一个页面,可以测试你的设备指纹。我在 Macbook Pro 上试了 Chrome、Firefox 和 Safari,三者都测出18.47 bits 的识别信息。根据测试,“你的浏览器指纹在过往 45 天测试的 362,288 个样本中显得独一无二”。
这在全球范围内真的独一无二吗?我有些惊讶。首先,以下是构成该分数的因素:
就我而言,我用的是在所有型号上都高度一致的常见硬件。例如,每台 Macbook Pro 的系统字体都相同。我核对过,Chrome、Firefox 和 Safari 的分数完全一致。
信息论的核心思想是:虽然有数百万人拥有相同的时区、时区偏移、字体等,但正是所有这些因素的组合才使得识别成为可能。
EFF 对此有一篇相关页面做了说明。在确立了识别需要 33 bits 熵之后:
举例来说,如果我们知道某人的生日,且知道其邮编是 40203,我们就有 8.51 + 23.81 = 32.32 bits;这几乎——但或许还不完全——足以确定此人是谁:可能有一两个人与这些特征重合。再加上性别,就是 33.32 bits,我们大概就能准确说出这个人是谁了。
讽刺的是,我恰好是这一观点的完美反例。我上大学时,住在一个朋友隔壁,她与我同年同月同日生。我们相差不过几小时,尽管相隔 2000 英里。不过她是女性,所以性别会让我们越过 33 bits 的门槛。所以这一结论被证实了……除了……我后来发现,大学里一位同事也与我同一天生日。他是男性。于是我们就出现了一个相同邮编 + 相同生日 + 相同性别的碰撞。
事实上,可能还有更多。在 10 万人的群体中(美国有 20 个邮编区人口 ≥ 10 万),生日与性别应当均匀分布。所以 100,000 / (365 × 2) = 每个邮编区 137 对。
但我们假设 EFF 页面在术语上稍有马虎,“生日”(对大多数人而言是“1 月 15 日”)也应包含出生年份(“1980 年 1 月 15 日”)。那样的话,邮编 + 完整生日 + 性别确实唯一标识了我和那位朋友。
然而……我不知道那位男同事的出生年份。但很可能和我相同。想想看,我们说的是一座大学城,学生和刚毕业的学生人口众多。在大型公立大学里,出现许多重叠的生日并不稀奇,因为出生年份会相同,而生日和性别是随机的。在一万名学生的班级里,预计会有 13.7 对这样的相同生日/性别组合(而且他们都共享同一个邮编)。
看起来要么 33 bits 稍微偏低,要么邮编 + 生日 + 性别的熵估计有误。
但对于浏览器,还有更多因素。多得多。如上所见,有 21 个因素参与了我的浏览器指纹,而这还只是用了某个 EFF 测试脚本,并非谷歌那支由众多博士打造的舰队。从概念上你能看出潜在人群是如何被层层缩小的。哦,你用的是 Mac——这就排除了地球上所有 Windows、Linux、iOS 和 Android 浏览器。哦,你跑的是 Chrome……又切掉了所有 Firefox 和 Safari 用户。你的语言是 en-us,你在这个时区,你的设备有这么多内存,而且……很快,在还没触及 WebGL 指纹哈希那些细枝末节之前,符合所有这些特征的设备数量就已经相当少了。
还有一个未列出的元因素:IP 地址。今天从我的 IP 地址访问该网站的设备只有我这一台。所以追踪我在该网站上的行为很容易,而那些拥有大量热门网站和庞大广告网络的公司在(比如 Google)可以轻松关联所有这些数据。
遗憾的是,目前能做的不多。浏览器本可以多做一点来模糊化——HTTP accept 头中各字段的顺序可以随机化,字体列表也可以——但很多数据确实是网站真正需要的(或至少 plausibly 需要的)。
原文链接:https://lowendbox.com/blog/browser-fingerprinting-is-frighteningly-accurate/
