WebGL指纹的独特性

问题描述 投票:0回答:2

最近,我正在为浏览器研究一些唯一的ID,然后发现https://panopticlick.eff.org/意识到有一个“ WebGL指纹哈希”,但我不知道什么钥匙会影响价值我已经测试过使用2个差异分辨率屏幕(同一台PC)来运行和更新我的浏览器次要版本,它为我返回的键值相同。

有人可以帮助我了解WebGL指纹的哈希值是如何生成的吗?

browser webgl fingerprint
2个回答
0
投票

WebGL的哈希通常特定于GPU,因此NVidia 2080 GTX将具有与Nvidia GeForce GT 750M或Intel Iris Pro等不同的指纹。更改屏幕分辨率不会影响WebGL指纹,但会在panopticlick的其他部分影响您的指纹]

panpoticlick会夸大其词。例如,我有一部iPhone11。Panopticlick的指纹声称我的手机只有20万。手机唯一的独特之处在于时区和语言设置,否则所有iPhone 11s都具有完全相同的指纹。

我在太平洋标准时区。太平洋标准时区至少有5500万人。要使20万分之一独一无二,就意味着在加利福尼亚,俄勒冈和华盛顿州的所有组合中总共有275部iPhone 11s设置为英语。我们知道那是错误的。在这三个州中,有成千上万的iPhone 11s,也许有成千上万。

重点是,panopticlick并没有真正获得足够的流量来知道指纹是否意味着任何东西,并且由于没有人去探访,所以每个指纹看起来都是唯一的。

关于如何生成它,您可以look at the code,但是通常您查询WebGL的所有功能(like these)。 GPU会有所不同。

然后,您会渲染一些东西,例如小纹理,彩色四边形,甚至可能是一条跨越几个像素的线。不同的GPU在如何对颜色进行插值方面具有略有不同的算法或数学运算,因此根据结果,您可以获得更多的数据位以将其添加到指纹中。


0
投票

有人可以帮助我了解WebGL指纹的哈希值是如何生成的吗?

WebGl指纹哈希是通过渲染图案(或低熵图像(压缩效果不佳的图像),然后从生成的渲染像素中创建哈希来生成的。

该图像将以固定大小渲染到帧缓冲区,因此更改屏幕分辨率将不会影响生成的哈希。

顶点和(尤其是)片段着色器将被编写,以夸大已知的GPU处理差异。这些是什么取决于指纹打印机的代码。

由于WebGL不允许预编译的着色器,因此,您可以通过逐步执行代码直到找到webGL上下文shaderSource调用来获得对着色器源代码的访问。哈希是由JavaScript生成的,并且再次取决于指纹打印机的首选方法。

© www.soinside.com 2019 - 2024. All rights reserved.