什么是CPU指纹识别?
浏览器与设备

什么是CPU指纹识别?

CPU指纹通过navigator.hardwareConcurrency读取逻辑核心数,结合其他硬件信号将你的浏览器定位到极小的设备群体中。

7 分钟阅读·

CPU指纹是一种浏览器追踪技术,读取 navigator.hardwareConcurrency——一个能揭示你设备向浏览器暴露多少逻辑处理器核心的单一JavaScript属性。结合其他硬件信号,你的CPU核心数帮助追踪者构建一个在Cookie删除、隐私浏览和VPN切换后依然持久存在的设备标识符。你现在就可以在 whatsmy.fyi 上查看你的浏览器当前暴露了什么。

简短总结

navigator.hardwareConcurrency 是一个标准Web API,返回浏览器允许使用的逻辑CPU核心数。指纹脚本收集这个值——连同Canvas输出、WebGL渲染器数据、屏幕分辨率和时区——构建无需Cookie的稳定设备指纹。单独来看,CPU核心数贡献低到中等的熵;与其他信号结合后,它增加了有意义的唯一性。最有效的防御是Brave Browser(随机化该值)和开启 privacy.resistFingerprinting 的Firefox(将其限制为2)。

什么是CPU指纹?

CPU指纹是利用浏览器API暴露的处理器相关数据为唯一设备标识符做贡献的技术。主要信号是 navigator.hardwareConcurrency,这是HTML生活标准中定义的只读属性,返回浏览器可用的逻辑处理器数量。它最初设计用于帮助Web开发者确定为计算密集型任务并行生成多少个 Web Workers。指纹脚本将其重新用作硬件描述符。

CPU指纹是更广泛的 浏览器指纹 技术的一层,它将数十个浏览器和硬件信号组装成单一标识符。与Cookie不同,CPU指纹不在你的设备上存储任何内容——它每次你访问网站时都从可观察到的硬件特征重建你的标识符。

CPU指纹是如何工作的?

基本攻击是单一的JavaScript属性读取——一行代码在不到一毫秒内执行。更复杂的攻击更进一步,使用时序侧信道估计你的实际CPU微架构,即使浏览器欺骗了该值。

第一步——读取hardwareConcurrency

最简单的CPU指纹形式直接从Navigator对象读取逻辑核心数。这个值不需要任何权限提示,不需要用户交互,在普通和无痕浏览会话中完全相同。

// 读取浏览器暴露的逻辑CPU核心数
const logicalCores = navigator.hardwareConcurrency;
// → 8 在MacBook Pro M3 Pro上
// → 4 在中端Android手机上
// → 2 在开启resistFingerprinting的Firefox上
// → Brave浏览器上2到8之间的随机值

第二步——与其他硬件信号结合

原始核心数(如8)本身并不唯一——数百万台设备共享相同的数量。指纹脚本将其与互补信号结合:来自WebGL的GPU供应商和渲染器、Canvas像素哈希、屏幕分辨率和像素密度、时区、语言以及音频栈特征。这些信号共同创建的指纹的熵远高于任何单一值。

第三步——基于时序的CPU识别(高级)

CISPA亥姆霍兹信息安全中心的学术研究表明,JavaScript可以使用时序侧信道对CPU微架构进行指纹识别——不仅仅是核心数。通过运行专门设计的并行计算并测量执行延迟,脚本可以估计你的处理器是Intel Core、AMD Ryzen、Apple M系列还是高通骁龙芯片。这种技术完全绕过了对 hardwareConcurrency 的简单欺骗,因为它观察的是实际硬件行为,而非报告的API值。

// 最小CPU指纹收集器
function getCpuFingerprint() {
  return {
    logicalCores: navigator.hardwareConcurrency,  // 如8
    deviceMemory: navigator.deviceMemory ?? 'unknown', // 如8(GB,取整)
    platform: navigator.platform,                 // 如"MacIntel"
    maxTouchPoints: navigator.maxTouchPoints,     // 0=桌面,>0=触摸屏
    // 结合Canvas、WebGL和屏幕信号
    // 这变成一个高熵设备标识符
  };
}

hardwareConcurrency对指纹唯一性的贡献有多大?

单独来看,navigator.hardwareConcurrency 贡献的熵适中,因为核心数分布高度倾斜——大多数设备集中在4或8个逻辑核心。其真正价值在于与其他信号的结合。下表总结了已发表研究和浏览器文档中的关键统计数据。

发现数值来源
hardwareConcurrency的全球浏览器支持率95.51%Can I Use
通过JS时序的CPU供应商识别准确率97.5%CISPA研究,2022年
通过JS时序的CPU型号/微架构识别率>60%CISPA研究,2022年
Firefox resistFingerprinting报告的核心数始终为2Firefox源码
Brave随机化hardwareConcurrency的范围2 – min(实际值, 8)Fingerprint.com
CISPA CPU指纹研究参与者834人(297种CPU型号)CISPA研究,2022年

CISPA的发现尤其值得关注:即使浏览器将 hardwareConcurrency 欺骗为固定值2,高级指纹脚本仍然可以通过测量处理器完成特定并行工作负载所需的时间,以97.5%的准确率识别你的CPU供应商。单独欺骗API值不足以防御基于时序的攻击。

现实中谁在使用CPU指纹?

商业指纹平台

Fingerprint.com、ThreatMetrix和Sift等服务将 navigator.hardwareConcurrency 作为组装成设备指纹的30个或更多信号之一收集。这些平台同时服务于欺诈检测和广告用途。核心数作为稳定性信号特别有用——它在会话之间不变,不受Cookie删除影响,在VPN和IP变更中保持一致。

欺诈检测和机器人防范

反欺诈系统使用CPU信号区分人类用户和机器人,并标记不一致之处。声称是移动设备但报告16个逻辑核心的浏览器,或在无头Chromium环境中运行且暴露不寻常核心数的浏览器,可能被标记为可疑。CPU指纹是保护登录页面、结账流程和API端点免受自动化滥用的设备完整性检查的一个组成部分。

广告归因

随着第三方Cookie在主要浏览器中被弃用,广告网络越来越依赖指纹识别进行跨站归因。CPU核心数是一个稳定的硬件信号,当用户清除Cookie、切换网络或启用隐私浏览时不会改变——使其在不稳定的指纹中成为有用的持久性锚点。 EFF的Cover Your Tracks 工具明确将hardwareConcurrency列为其分析中测试的指纹向量之一。

设备完整性验证

注重安全的应用程序——银行应用、政府门户和企业SSO系统——使用硬件信号验证返回会话来自同一物理设备。在这种情况下,CPU指纹是一种防御工具:它通过将当前设备指纹与登录时注册的指纹进行比较来检测会话劫持和账户劫持尝试。

CPU指纹合法吗?

根据GDPR,当读取硬件特征构建的持久设备标识符可以与个人关联时,构成个人数据处理。法国监管机构(CNIL)裁定,用于广告目的的浏览器指纹识别需要知情同意。根据美国CCPA和CPRA,设备指纹作为需要退出权的个人信息。合法利益豁免可能适用于狭义的欺诈检测用途,但以追踪为重点的部署在所有主要司法管辖区面临越来越严格的监管审查。

如何保护自己免受CPU指纹追踪

对CPU指纹的防御从对用户透明的浏览器级保护,到可能破坏网站功能的更具破坏性的措施不等。按最强保护到最适合日常使用的顺序排列如下。

  • Tor Browser(最强保护):Tor Browser在所有用户中标准化 navigator.hardwareConcurrency,返回统一值,使通过CPU核心数进行个人识别不可能。结合Tor的IP匿名化,它提供了最强的可用指纹保护。代价是Tor网络延迟导致浏览速度较慢。
  • Brave Browser(推荐日常使用):Brave按网站和会话随机化 hardwareConcurrency,返回2到 Math.min(actualCores, 8) 之间的值。这使通过CPU核心数进行跨站追踪不可靠,同时不破坏合法使用该API优化Worker线程数的网站。Brave还对Canvas和WebGL应用类似随机化——查看 Canvas指纹指南 了解详情。
  • Firefox配合 privacy.resistFingerprinting在Firefox的 about:config 中将此标志设为 true,浏览器在所有设备上将 hardwareConcurrency 报告为2,无论实际核心数如何。这将该值限制为最低公分母,减少其唯一性贡献。注意此标志同时影响数十个其他指纹识别面,提供广泛保护。
  • Mullvad Browser:基于Tor Browser的指纹保护但设计为不使用Tor网络,Mullvad完全删除或标准化包括 hardwareConcurrency 在内的硬件API,为所有浏览器用户返回一致的基准值。
  • 反指纹扩展:Canvas Fingerprint Defender、Trace和Chameleon等扩展可以拦截对 navigator.hardwareConcurrency 的API调用并返回欺骗值。效果因情况而异——简单的值欺骗无法防御基于时序的CPU识别攻击,但它确实提高了被动指纹收集者的门槛。
  • 了解VPN的限制:VPN改变你可见的IP地址,但对浏览器JavaScript环境报告的内容没有影响。navigator.hardwareConcurrency 直接从浏览器读取,完全不受通过VPN服务器路由流量的影响。在 whatsmy.fyi 上检查你的VPN是否正常工作。

常见问题

navigator.hardwareConcurrency实际返回什么?

它返回浏览器可用的逻辑处理器核心数——不是物理核心数。有4个物理核心并启用超线程的CPU报告8个逻辑核心。浏览器也可能将报告值限制在低于实际数量,以改善Worker调度精度或出于隐私原因。该属性是只读的,无需任何用户权限即可访问。

隐私或无痕模式能隐藏我的CPU核心数吗?

不能。隐私浏览防止浏览器将历史记录、Cookie和表单数据写入磁盘——但它不改变浏览器向JavaScript暴露的硬件值。navigator.hardwareConcurrency 在无痕窗口和普通窗口中返回相同的值。只有具有主动指纹随机化的浏览器(如Brave或Tor Browser)才会有不同表现。

欺骗hardwareConcurrency能完全保护我吗?

不能。虽然欺骗API值提高了被动指纹收集的门槛,但它无法防御基于时序的CPU识别。学术研究表明,JavaScript可以通过测量精心设计的并行计算的延迟,以97.5%的准确率估计你的CPU供应商——无论浏览器报告 hardwareConcurrency 是什么。有效保护需要浏览器同时限制高分辨率时序API(如 performance.now())并限制调度测量的精度。

hardwareConcurrency与deviceMemory有何不同?

navigator.hardwareConcurrency 报告逻辑CPU核心数;它是HTML生活标准的一部分,受所有主流浏览器支持。navigator.deviceMemory 报告大约的设备RAM(以GB为单位),四舍五入到最近的2的幂(0.25、0.5、1、2、4、8)——且仅在Chrome和Edge中受支持。两者都在指纹脚本中作为互补的硬件信号使用。它们共同帮助区分低端设备(2核,2 GB RAM)和高端工作站(16核,64 GB RAM)。

CPU指纹在移动端还是桌面端更有效?

由于强烈的集群效应,原始核心数在移动端的唯一性较低——大量Android设备报告8个逻辑核心(八核SoC在中高端市场占主导地位)。桌面指纹更多样化,因为工作站CPU从4到128+逻辑核心不等。然而,移动指纹随时间推移往往更稳定,因为移动硬件更新频率低于桌面配置。

网站可以检测到我在欺骗CPU核心数吗?

复杂的指纹脚本可以通过交叉参考报告的核心数和时序基准来检测简单欺骗。如果你的浏览器报告2个核心,但并行JavaScript任务以8核处理器的速度完成,这种不一致本身就是一个指纹信号——可能比两个值中的任何一个都更强。这就是为什么浏览器级保护(Brave、Firefox)在值欺骗的同时应用时序限制,而不是简单地替换数字。

CPU指纹会影响我在whatsmy.fyi上的隐私评分吗?

会。whatsmy.fyi的隐私评分评估你的浏览器暴露的指纹风险信号组合,包括硬件并发性、WebRTC泄漏状态、TLS版本和连接协议。报告常见核心数(4或8)且没有额外唯一性信号的浏览器对指纹熵的贡献少于具有不寻常值的浏览器。使用Brave或开启resistFingerprinting的Firefox将对你的评分产生积极影响。

相关文章

即时查询您的 IP 地址、位置与隐私评分。

零日志。零追踪。零外部 API。

立即检测 →

相关文章

什么是CPU指纹识别? | whatsmy.fyi