C2PA 相机签名挡不住已 Root 设备,签名是真的也不代表照片是真的
安全研究者 David Buchanan 展示了一条针对 Android C2PA 相机的攻击链:取得设备 Root 权限后,不必导出 StrongBox 中的私钥,也能调用受保护密钥给任意内容签名,从而制造看起来像由可信相机直接拍摄的内容凭证。
作者:韩启明|OC 政策与安全编辑
安全研究者 David Buchanan 展示了一条针对 Android C2PA 相机的攻击链:取得设备 Root 权限后,不必导出 StrongBox 中的私钥,也能调用受保护密钥给任意内容签名,从而制造看起来像由可信相机直接拍摄的内容凭证。
一句话结论:C2PA 能证明某个密钥签过一份媒体文件,但如果获准使用密钥的软件环境已经被控制,密码学签名只会忠实地证明一次错误的声明。
C2PA 的核心不是“识别 AI 图片”,而是给媒体文件附加可验证的来源记录。相机应用生成包含设备、处理过程和内容哈希的 Manifest,再用受信任证书对应的密钥签名。验证工具检查签名链和内容是否被修改,由此判断文件是不是来自某个可信生成器。
问题在于,这套信任最后落到“谁能调用签名密钥”。Pixel 相机使用 Android Key Attestation 与 StrongBox:正常解锁 Bootloader、刷入修改系统会改变设备状态,服务端就不应继续发放相机签名资格。但研究者指出,通过尚未修补的本地提权漏洞取得 Root 时,Bootloader 仍然锁定、系统镜像签名没有变化、补丁日期看起来也正常,远程证明未必能知道运行中的内核已经失守。
StrongBox 仍然能防止攻击者把私钥原文偷出来,问题却不在“偷钥匙”。Root 进程可以冒充获授权应用,请硬件模块替它完成签名。Buchanan 为此制作了 keystork 工具,并公布了让 Pixel Camera 为任意图片签名的概念验证。他还称,完全更新的 Pixel 设备当时存在可用的一键 Root 路径,并展示了低成本硬件故障注入的替代方案。

这里要避免两个过度结论。其一,这不是说所有 C2PA 文件都毫无价值。来源凭证仍能帮助媒体机构记录编辑流程、发现文件在签名后是否被改动,也能提供比裸图片更多的核查线索。其二,研究主要针对 Android 上依赖 Key Attestation 或 Play Integrity 的相机实现,不等于所有专用相机、安全飞地或服务端签名方案都以同样方式失效。
但它确实击中了“拍摄即真相”这类宣传。C2PA 规范本身也把签名者身份和其他信号交给使用者综合判断,并没有承诺签名内容必然真实。要让手机相机提供更强保证,拍摄传感器、图像处理、AI 增强与签名调用之间需要一条更完整的隔离链;只把最后一把钥匙放进安全硬件,无法保护钥匙之前的输入。
研究者称 Google 将其报告以“修复不可行”结案,但仍支付了 7500 美元奖励。这个表态来自研究者披露,不能替代 Google 的完整技术回应。更现实的缓解措施包括快速撤销泄露或滥用证书、检查设备证明、缩小可调用签名的代码面,并明确把 C2PA 显示为来源线索而非真实性印章。
关键事实
- 攻击条件:先取得 Android 设备的 Root 权限,或利用硬件故障注入破坏内核隔离。
- 攻击方式:不导出私钥,而是冒充授权应用调用 StrongBox 签名。
- 影响边界:研究者重点验证 Pixel Camera,也认为其他依赖同类 Android 证明机制的实现需要检查。
- 证据性质:攻击演示与 Google 处置状态来自研究者披露。
OC 判断
C2PA 最大的风险不是技术毫无作用,而是产品界面把“签名有效”翻译成“内容真实”。真正的安全边界覆盖传感器、系统、应用、密钥、证书撤销和验证界面,缺一层都不能把来源凭证升级为事实证明。
为什么重要
- 对开发者:实现内容凭证时必须建立威胁模型,不能只完成签名 API 接入。
- 对媒体与平台:验证结果应展示签名者、设备状态和限制,而不是单一绿色勾号。
- 对用户:带有“相机拍摄”标签的图片仍需结合来源、上下文和独立证据判断。
评论
围绕这篇文章补充信息、提出问题或分享观察。