什么是指纹识别?
最后更新: August 27, 2024
数字指纹识别是指远程站点或服务收集有关用户机器的少量信息,然后将它们组合在一起,形成该用户设备的唯一图片,即“指纹”。其两种主要形式分别是浏览器指纹识别和设备指纹识别,前者在用户访问远程站点时通过浏览器传递此类信息,后者通过用户在其设备上安装的应用程序传递此类信息。
大多数情况下,指纹识别是第三方开展的,而不是由当时访问的网站或当时使用的应用程序直接完成。在人们使用自己的设备时,第三方跟踪程序可能会被加载到设备上安装的多个应用程序或者访问的多个网站上。这样,该公司就能跟踪人们使用多个网站或应用程序的情况。这些跟踪程序能深入了解用户的日常活动,一些信息具体到足以得知用户在任意时刻正在做什么,甚至能知道用户在哪里使用设备。
指纹识别和重定向
跟踪公司进行大量指纹识别,他们使用这些信息有针对性地向用户投放广告或将这些信息出售给数据经纪人。数字广告是一项价值数千亿美元的业务。重定向,即识别出回访者并根据其之前的浏览推销广告内容,营销者利用这种方法可以有效地提高点击率并创造收益。指纹识别还能用于诈骗和机器人检测,其中使用的技术和跟踪程序一样,但是用于合法目的。
网页上最常见的广告重定向方法是通过浏览器 Cookie,而应用程序可以使用广告商 ID(iOS 和安卓设备都有提供)。但用户可以清除 Cookie 和广告商 ID,即可删除关联到其特定浏览器或移动设备的持久标识符。将您的浏览习惯想象成一根线,连接着一块板子上的好几个钉子。每个钉子代表您访问过的一个网站,跟踪程序循着这根线就能看到您曾经访问过什么。清除 Cookie 就像是将这根线剪成几段,剪得越多,每一段就越短。跟踪程序就不能再看到您曾经访问过什么了。
指纹识别创建了一个新的持久标识符,从而形成了一条无法剪断的线。这种技术利用您的浏览器或设备特征来对付您,因为标识符汇总了您的浏览器或设备的所有特征。指纹识别可以使用关于您的设备或浏览器的所有看似不起眼的细节,例如屏幕分辨率、您所在的时区、操作系统版本、剩余电量等等。指纹识别之所以存在,是为了限制用户对自己的浏览器的正常控制。为了夺回我们对自己的浏览器和设备的控制权,我们不得不使用一些特殊工具来抵御指纹识别。
指纹识别作为一种跟踪技术的有效性
对跟踪程序有效的指纹识别要满足两个条件。
首先,必须是持久的。如果用户的指纹快速变化,跟踪程序就无法区分用户的前后两次访问。要确定是同一个用户在不同时间访问网站或使用应用程序,必须具备这种关联访问的能力。这种持久标识符的作用是代替用户轻易就能删除的 Cookie。指纹无法删除,因为它没有在用户机器上储存任何内容。
其次,必须是唯一的。如果两个或更多用户拥有相同的指纹,跟踪程序就失去了使用指纹识别来识别个人的能力。没有这个能力,跟踪程序就无法跟踪用户个人并将其归入具体的营销类别中,例如“烘焙爱好者”或者“飞机迷”。我们曾于 2010 年发布过一篇题为“ Cover Your Tracks”(隐藏踪迹)的用户浏览器研究,在其中我们发现绝大多数浏览器都满足这两个条件。
在移动应用程序内,指纹识别也能抓取有关您设备的各种数据,从手机上次重启的时间到安装了哪些其他应用程序。虽然难以实施,但这种做法有时是不被允许的。例如,苹果公司要求开发者解释为什么其应用程序可能需要使用通常用于指纹识别的设备详细信息,但这些详细信息很多都有合法用途,因此并不是总能分辨出开发者是将收集的数据用于功能目的还是跟踪目的。在安卓设备上,很多用于指纹识别的特征要求应用程序申请获得具体权限,但人们浏览这些权限时常常不知所云,于是就直接点击“允许”了。在 iOS 和安卓设备中,最好限制下载应用程序的数量,并对应用程序是否确实需要其要求的权限保持质疑。
反指纹识别策略
对抗指纹识别的工具要想生效,有两个策略可供选择。第一,可以尝试破坏上文所述的指纹识别生效的两个条件,一个或两个均可。第二,可以编制一份跟踪程序列表,然后在浏览器或移动设备上阻止加载这些跟踪程序。
用于破坏浏览器指纹持久性的工具有很多。有些工具的原理是将某些特征的结果随机化,例如 Canvas 指纹和 AudioContext 指纹。这可以是破坏持久性的有效方法,但务必要注意,跟踪程序也许能发现正在使用随机化工具——这本身就是一个指纹识别特征。必须仔细考虑随机化指纹识别特征在对抗跟踪程序方面为什么有或没有效果。
浏览器也能对抗指纹识别,方法是使浏览器的所有实例都看似相同。将所有浏览器实例的指纹识别特征变成一样的,就无法唯一地精确定位某个特定的浏览器实例了。这正是匿名工具 Tor 浏览器所采用的方法。

大部分浏览器看起来是独一无二的,跟踪程序可以在网上跟踪它们。

而 Tor 浏览器看起来都一样,因此跟踪程序无法对它们进行指纹识别!
如果操作得当,用它对抗指纹识别非常有效。Tor 浏览器已经确定了数十个需要采取的措施,以使所有浏览器在所有特征上看起来都一样。这很重要,因为用户为了摆脱跟踪程序而更改个别设置,反而会使他们的浏览器更容易被跟踪程序识别。
最后,可以利用工具编制一份跟踪程序列表,然后直接屏蔽它们。很多浏览器附加组件或插件(例如 EFF 自己的 Privacy Badger)采用的都是这种方法。通过屏蔽跟踪程序,这些工具能够删除在浏览器上加载的大部分指纹识别跟踪程序。第三方跟踪程序(使用指纹识别来识别用户的跟踪程序大部分属于这种)就无法识别用户浏览器了。
虽然这个方法对屏蔽指纹识别程序非常有效,但不能彻底屏蔽进行指纹识别的能力。有些更加狡猾的跟踪程序暂时还识别不出来,或者用户访问的网站直接(而不是第三方)进行指纹识别,这些情况通常会被放过。屏蔽已知的指纹识别程序对大部分用例而言已经足够了,但不能保证很强的匿名性。
不要用自定义设置来对付指纹识别
以自定义设置来对付指纹识别很少能达到预期效果。
例如,您可能想将识别您正在使用的浏览器及其版本的用户代理字符串改成网上最常见的浏览器用户代理字符串。乍听之下似乎有些道理:使用常见的用户代理字符串,指纹会变得更加普通、更难以跟踪,对吧?但在某些情况下,使用最常见的用户代理字符串反而使指纹识别更容易了。这有些违反常识:选择更常见的指标怎么会变得更显眼呢?
这其实取决于您的用户代理字符串相对于浏览器中其他可指纹识别指标的独立性。例如,基于不同设备上硬件、软件以及驱动程序的相对相似性,iOS 设备上的 Safari 实际上是一款几乎无法指纹识别的浏览器。iOS 设备 Safari 浏览器的大部分用户看起来较为相似。
但 iOS 设备 Safari 浏览器绝对不是网上最常见的用户代理字符串。现在暂时假设 Windows 设备 Chrome 浏览器的最新版本是最常见的用户代理字符串。如果用户要把 iOS 设备 Safari 浏览器的用户代理字符串改成 Windows 设备 Chrome 浏览器的,但没做其他更改,那将显得异常与众不同。他们将成为唯一既有 Canvas 指纹识别的 iOS 设备 Safari 浏览器结果,又有 Windows 设备 Chrome 浏览器的用户代理字符串的。
这就是为什么想要避免指纹识别的人必须加倍小心,不要给自己的隐私画蛇添足了。想要不引人注目,您需要加入在所有指标上的指纹都和您完全相同的其他用户的“隐私池”。那么,最安全的做法不是从个人层面更改设置,而是选择 Tor 浏览器、Brave 或 Firefox 等,它们通过技术令其浏览器的所有实例变得相对常见。