基于GPU信息的用户系统识别方法

来自本古里安大学(以色列)、里尔大学(法国)和阿德莱德大学(澳大利亚)的研究人员开发了一种新技术,通过检测网络浏览器中的 GPU 运行参数来识别用户设备。 该方法称为“Drawn Apart”,基于使用 WebGL 来获取 GPU 性能配置文件,这可以显着提高被动跟踪方法的准确性,该方法无需使用 Cookie,也无需在用户系统上存储标识符。

以前使用的方法在识别时考虑了渲染、GPU、图形堆栈和驱动程序的特征,但仅限于只能在不同型号的显卡和GPU的层面上区分设备,即只能作为附加因素来增加识别的可能性。 新的“Drawn Apart”方法的主要特点是,它并不局限于分离不同的GPU型号,而是试图识别由于大规模并行芯片制造工艺的异构性而导致的同一型号的相同GPU之间的差异。计算。 值得注意的是,生产过程中出现的变化使得可以为相同的设备模型形成非重复的铸件。

基于GPU信息的用户系统识别方法

事实证明,可以通过计算执行单元的数量并分析它们在 GPU 中的性能来识别这些差异。 基于一组三角函数、逻辑运算和浮点计算的检查被用作识别不同 GPU 模型的原语。 为了识别相同 GPU 中的差异,我们评估了执行顶点着色器时并发执行的线程数。 假设检测到的影响是由不同芯片实例的温度条件和功耗差异引起的(之前,CPU 也证明了类似的影响 - 相同的处理器在执行相同的代码时表现出不同的功耗)。

由于通过 WebGL 的操作是异步执行的,因此无法直接使用 JavaScript API Performance.now() 来测量其执行时间,因此提出了三种技巧来测量时间:

  • onscreen — 在 HTML 画布中渲染场景,测量回调函数的响应时间,通过 Window.requestAnimationFrame API 设置并在渲染完成后调用。
  • Offscreen - 使用工作程序并将场景渲染到 OffscreenCanvas 对象中,测量 ConvertToBlob 命令的执行时间。
  • GPU - 绘制到 OffscreenCanvas 对象,但使用 WebGL 提供的计时器来测量时间,该计时器考虑了 GPU 端一组命令的持续时间。

在 ID 创建过程中,每个设备都会执行 50 次测试,每次测试涵盖 176 种不同特征的 16 项测量。 一项收集具有 2500 个不同 GPU 的 1605 台设备信息的实验表明,添加 Drawn Apart 支持后,组合识别方法的效率提高了 67%。 特别是,组合的FP-STALKER方法平均在17.5天内提供了识别时间,而与Drawn Apart组合时,识别时间增加到28天。

基于GPU信息的用户系统识别方法

  • 采用Intel i10-5芯片(GEN 3470 Ivy Bridge)和Intel HD Graphics 3 GPU的2500个系统在屏内测试中的分离精度为93%,在离屏测试中分离精度为36.3%。
  • 对于配备 NVIDIA GTX10 显卡的 5 个 Intel i10500-10 系统(GEN 1650 Comet Lake),准确率分别为 70% 和 95.8%。
  • 对于 15 个配备英特尔 UHD Graphics 5 GPU 的英特尔 i8500-8 系统(第 630 代 Coffee Lake) - 42% 和 55%。
  • 对于 23 个配备 Intel HD Graphics 5 GPU 的 Intel i4590-4 (GEN 4600 Haswell) 系统 – 32.7% 和 63.7%。
  • 对于六款配备 Mali-G20 MP20 GPU 的三星 Galaxy S77/S11 Ultra 智能手机,屏幕测试中的识别准确率为 92.7%,对于配备 Mali-G9 MP9 的三星 Galaxy S72/S18+ 智能手机,识别准确率为 54.3%。

基于GPU信息的用户系统识别方法

值得注意的是,准确性受到GPU温度的影响,对于某些设备,重新启动系统会导致标识符失真。 当该方法与其他间接识别方法结合使用时,可以显着提高准确性。 他们还计划在新的 WebGPU API 稳定后通过使用计算着色器来提高准确性。

英特尔、ARM、谷歌、Khronos、Mozilla 和 Brave 早在 2020 年就已收到有关该问题的通知,但该方法的细节现在才被披露。 研究人员还发布了用 JavaScript 和 GLSL 编写的工作示例,这些示例可以在屏幕上显示或不显示信息。 此外,对于基于 GPU Intel GEN 3/4/8/10 的系统,已经发布了用于对机器学习系统中提取的信息进行分类的数据集。

来源: opennet.ru

添加评论