Morfiade
简体中文
试用

Canvas 指纹

Canvas fingerprinting 是一种通过电脑绘图方式来识别它的方法。网站要求浏览器绘制一张带有文字和图形的隐形图片,取得结果,并从中计算出一个校验和。

图片是同一张,但不同机器算出的校验和却不同:绘图工作由显卡完成,而显卡本身、驱动程序、字体集合以及抗锯齿处理中的细微差异,会在输出端产生不同的像素。人眼看不出差别——但数字能看出来。

同样的手法也适用于 WebGL(三维图形,外加以纯文本形式给出的显卡名称)和 AudioContext(用音频处理代替图片)。

为什么这是一个强有力的线索

Canvas 校验和不存储在任何文件里——无法像 Cookie 那样被清除。它每次访问都会重新计算,并且在你更换电脑、显卡或驱动程序之前始终保持不变。

这就是为什么从同一台机器打开的两个账号,在 canvas 上看起来像同一个人,哪怕其他一切都不同。

粗糙的伪装为什么危险

伪装通常靠噪声来实现:在结果中加入几乎察觉不到的偏差,使校验和发生变化。这里很容易把事情弄得比原来更糟,有三种典型方式:

规则与整个指纹体系一样:一致性比独特性更重要。 一个稳定、普通的指纹,好过一个独一无二的指纹。

如何检查

指纹检测会显示你的 canvas 校验和,并连续读取两次——这样就能看出这个值是保持不变还是发生跳变。